* mdebugread.c (parse_symbol, handle_psymbol_enumerators): Handle

yet another variant of enumerator debugging info, used by DU 4.0
	native cc.
This commit is contained in:
Peter Schauer 1997-09-13 15:34:44 +00:00
parent f8c35bc3b0
commit f9292f5ef3
2 changed files with 19 additions and 5 deletions

View 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> Tue Sep 9 20:47:23 1997 Felix Lee <flee@cygnus.com>
* config/i386/windows.mh (XDEPFILES): reduce to libwingdb.a. * config/i386/windows.mh (XDEPFILES): reduce to libwingdb.a.

View File

@ -1,5 +1,5 @@
/* Read a symbol table in ECOFF format (Third-Eye). /* 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. Free Software Foundation, Inc.
Original version contributed by Alessandro Forin (af@cs.cmu.edu) at Original version contributed by Alessandro Forin (af@cs.cmu.edu) at
CMU. Major work by Per Bothner, John Gilmore and Ian Lance Taylor 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 without qualifiers, assume the tag is an
enumeration. enumeration.
Alpha cc -migrate enums are recognized by a zero 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 if (tsym.index == indexNil
|| (tsym.index == 0 && sh->value == 0)) || (tsym.index == 0 && sh->value == 0))
type_code = TYPE_CODE_ENUM; type_code = TYPE_CODE_ENUM;
@ -978,7 +980,8 @@ parse_symbol (sh, ax, ext_sh, bigend, section_offsets)
(*debug_swap->swap_tir_in) (bigend, (*debug_swap->swap_tir_in) (bigend,
&ax[tsym.index].a_ti, &ax[tsym.index].a_ti,
&tir); &tir);
if ((tir.bt == btNil || tir.bt == btVoid) if ((tir.bt == btNil || tir.bt == btVoid
|| (tir.bt == btEnum && sh->value == 0))
&& tir.tq0 == tqNil) && tir.tq0 == tqNil)
type_code = TYPE_CODE_ENUM; 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 and its auxiliary index is indexNil or its auxiliary entry
is a plain btNil or btVoid. is a plain btNil or btVoid.
Alpha cc -migrate enums are recognized by a zero index and 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); (*swap_sym_in) (cur_bfd, ext_sym, &sh);
if (sh.st != stMember) if (sh.st != stMember)
return; return;
@ -3121,7 +3126,10 @@ handle_psymbol_enumerators (objfile, fh, stype, svalue)
&(debug_info->external_aux &(debug_info->external_aux
+ fh->iauxBase + sh.index)->a_ti, + fh->iauxBase + sh.index)->a_ti,
&tir); &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; return;
break; break;