]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
* mdebugread.c (parse_symbol, handle_psymbol_enumerators): Handle
authorPeter Schauer <Peter.Schauer@mytum.de>
Sat, 13 Sep 1997 15:34:44 +0000 (15:34 +0000)
committerPeter Schauer <Peter.Schauer@mytum.de>
Sat, 13 Sep 1997 15:34:44 +0000 (15:34 +0000)
yet another variant of enumerator debugging info, used by DU 4.0
native cc.

gdb/ChangeLog
gdb/mdebugread.c

index 39991f4a5b837b9687cc713c04ca0a5053a89324..16a1174cf3f52b2e9b09a712c39d50a6fa139182 100644 (file)
@@ -1,3 +1,9 @@
+Sat Sep 13 08:32:13 1997  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)
+
+       * mdebugread.c (parse_symbol, handle_psymbol_enumerators):  Handle
+       yet another variant of enumerator debugging info, used by DU 4.0
+       native cc.
+
 Tue Sep  9 20:47:23 1997  Felix Lee  <flee@cygnus.com>
 
        * config/i386/windows.mh (XDEPFILES): reduce to libwingdb.a.
index 0e3f3e8fddb06210f59afb70d6356823b74fc473..94d44f40b55cc55471da6ad42b13009b8643e0a5 100644 (file)
@@ -1,5 +1,5 @@
 /* Read a symbol table in ECOFF format (Third-Eye).
-   Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996
+   Copyright 1986, 87, 89, 90, 91, 92, 93, 94, 95, 96, 1997
    Free Software Foundation, Inc.
    Original version contributed by Alessandro Forin (af@cs.cmu.edu) at
    CMU.  Major work by Per Bothner, John Gilmore and Ian Lance Taylor
@@ -969,7 +969,9 @@ parse_symbol (sh, ax, ext_sh, bigend, section_offsets)
                     without qualifiers, assume the tag is an
                     enumeration.
                     Alpha cc -migrate enums are recognized by a zero
-                    index and a zero symbol value.  */
+                    index and a zero symbol value.
+                    DU 4.0 cc enums are recognized by a member type of
+                    btEnum without qualifiers and a zero symbol value.  */
                  if (tsym.index == indexNil
                      || (tsym.index == 0 && sh->value == 0))
                    type_code = TYPE_CODE_ENUM;
@@ -978,7 +980,8 @@ parse_symbol (sh, ax, ext_sh, bigend, section_offsets)
                      (*debug_swap->swap_tir_in) (bigend,
                                                  &ax[tsym.index].a_ti,
                                                  &tir);
-                     if ((tir.bt == btNil || tir.bt == btVoid)
+                     if ((tir.bt == btNil || tir.bt == btVoid
+                          || (tir.bt == btEnum && sh->value == 0))
                          && tir.tq0 == tqNil)
                        type_code = TYPE_CODE_ENUM;
                    }
@@ -3109,7 +3112,9 @@ handle_psymbol_enumerators (objfile, fh, stype, svalue)
         and its auxiliary index is indexNil or its auxiliary entry
         is a plain btNil or btVoid.
         Alpha cc -migrate enums are recognized by a zero index and
-        a zero symbol value.  */
+        a zero symbol value.
+        DU 4.0 cc enums are recognized by a member type of btEnum without
+        qualifiers and a zero symbol value.  */
       (*swap_sym_in) (cur_bfd, ext_sym, &sh);
       if (sh.st != stMember)
        return;
@@ -3121,7 +3126,10 @@ handle_psymbol_enumerators (objfile, fh, stype, svalue)
                                  &(debug_info->external_aux
                                    + fh->iauxBase + sh.index)->a_ti,
                                  &tir);
-      if ((tir.bt != btNil && tir.bt != btVoid) || tir.tq0 != tqNil)
+      if ((tir.bt != btNil
+          && tir.bt != btVoid
+          && (tir.bt != btEnum || svalue != 0))
+         || tir.tq0 != tqNil)
        return;
       break;