aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/mdebugread.c13
2 files changed, 21 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3974196..420efb0 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 bbeb66d..c23dac0 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 */