* config/i386/tm-i386v.h, config/m68k/tm-m68k.h, config/mips/tm-mips.h,
authorPeter Schauer <Peter.Schauer@mytum.de>
Fri, 7 Jan 1994 20:59:35 +0000 (20:59 +0000)
committerPeter Schauer <Peter.Schauer@mytum.de>
Fri, 7 Jan 1994 20:59:35 +0000 (20:59 +0000)
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.

gdb/ChangeLog
gdb/mdebugread.c

index 39741967ac0c770960a8bd1ea2c30caf54446230..420efb0c9eccba65437b9569da6e843b8aeb52fb 100644 (file)
@@ -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
index bbeb66dcc634d7f8ae60bb21040ad4e40ebce90f..c23dac03f1dcad538099c27efca3d6bbde37f835 100644 (file)
@@ -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 */