aboutsummaryrefslogtreecommitdiff
path: root/gdb/mdebugread.c
diff options
context:
space:
mode:
authorPeter Schauer <Peter.Schauer@mytum.de>1997-09-13 15:34:44 +0000
committerPeter Schauer <Peter.Schauer@mytum.de>1997-09-13 15:34:44 +0000
commitf9292f5ef3e70401a07590fd8ed99ee9cc389510 (patch)
tree167c4331d591e7a21917ea8903e7289454519553 /gdb/mdebugread.c
parentf8c35bc3b0c7c8ec3ec3042cba9065857deb0e84 (diff)
downloadgdb-f9292f5ef3e70401a07590fd8ed99ee9cc389510.zip
gdb-f9292f5ef3e70401a07590fd8ed99ee9cc389510.tar.gz
gdb-f9292f5ef3e70401a07590fd8ed99ee9cc389510.tar.bz2
* mdebugread.c (parse_symbol, handle_psymbol_enumerators): Handle
yet another variant of enumerator debugging info, used by DU 4.0 native cc.
Diffstat (limited to 'gdb/mdebugread.c')
-rw-r--r--gdb/mdebugread.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c
index 0e3f3e8..94d44f4 100644
--- a/gdb/mdebugread.c
+++ b/gdb/mdebugread.c
@@ -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;