From: Peter Schauer Date: Fri, 7 Jan 1994 20:59:35 +0000 (+0000) Subject: * config/i386/tm-i386v.h, config/m68k/tm-m68k.h, config/mips/tm-mips.h, X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9d51b3c5f4cffb73634deb26d68c741e8e800f93;p=binutils-gdb.git * config/i386/tm-i386v.h, config/m68k/tm-m68k.h, config/mips/tm-mips.h, config/vax/tm-vax.h (CALL_DUMMY_BREAKPOINT_OFFSET): Define. * mdebugread.c (parse_symbol): Handle enum sh.type produced by DEC c89. * mdebugread.c (add_line): Handle zero linenos produced by DEC c89. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 39741967ac0..420efb0c9ec 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +Fri Jan 7 12:42:45 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) + + * config/i386/tm-i386v.h, config/m68k/tm-m68k.h, config/mips/tm-mips.h, + config/vax/tm-vax.h (CALL_DUMMY_BREAKPOINT_OFFSET): Define. + * mdebugread.c (parse_symbol): Handle enum sh.type produced by + DEC c89. + * mdebugread.c (add_line): Handle zero linenos produced by DEC c89. + Fri Jan 7 12:55:25 1994 Jim Kingdon (kingdon@lioth.cygnus.com) * utils.c (print_sys_errmsg): Call gdb_flush (gdb_stdout) before diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c index bbeb66dcc63..c23dac03f1d 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -1010,6 +1010,15 @@ parse_symbol (sh, ax, ext_sh, bigend) if (type_code == TYPE_CODE_ENUM) { /* This is a non-empty enum. */ + + /* c89 has the number of enumerators in the sh.value field, + not the type length, so we have to compensate for that + incompatibility quirk. + This might do the wrong thing for an enum with one or two + enumerators and gcc -gcoff -fshort-enums, but these cases + are hopefully rare enough. */ + if (TYPE_LENGTH (t) == TYPE_NFIELDS (t)) + TYPE_LENGTH (t) = TARGET_INT_BIT / HOST_CHAR_BIT; for (ext_tsym = ext_sh + external_sym_size; ; ext_tsym += external_sym_size) @@ -3222,6 +3231,10 @@ add_line (lt, lineno, adr, last) CORE_ADDR adr; int last; { + /* DEC c89 sometimes produces zero linenos which confuse gdb. + Change them to something sensible. */ + if (lineno == 0) + lineno = 1; if (last == 0) last = -2; /* make sure we record first line */