This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
We started spotting many of these failed assertion a few days ago: gdbtypes.c:640: internal-error: replace_type: Assertion `TYPE_INSTANCE_FLAGS (ntype) == TYPE_INSTANCE_FLAGS (type)' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. It's related to forward references to types that are defined as a constant or volatile variation of another type. For instance: .stabx "uw_exception:p265",120,130,0 .stabx "ada__exceptions__exception_propagation__T216bXn:t265=k264",0,140,0 The compiler actually generated these stabs in the right order, so the variable was defined after the type. But the AIX linker seems to have played with the stabs and moved them around, causing this misordering. However, the misordering shouldn't be a problem for the debugger who's been taught how to deal with them: We have a vector of undefined types that we then go through after having read all stabs from the unit, and replace all undefined types by their actual definition. The problem in this case is that the instance flags of the undefined type was still unset, and so we tripped an assertion inside replace_type that expects the instance flags of both the source and target types to be identical. The fix was to set this flag manually before calling replace_type. 2008-04-08 Joel Brobecker <brobecker@adacore.com> * stabsread.c (cleanup_undefined_types_noname): Manually set the instance flags of the undefined type before calling replace_type. Tested on ppc-aix and x86-linux (using -gstabs+). Checked in. -- Joel
Attachment:
undef.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |