Dwarf2-related Internal error
Michal Ludvig
mludvig@suse.cz
Thu Aug 14 13:17:00 GMT 2003
Elena Zannoni told me that:
> Michal Ludvig writes:
> > Hi Daniel, Elena and others,
> > this problem is still present in recent HEAD - could anyone who knows
> > the internals of symbols handling and .debug_info please help me with
> > fixing it, please? I tried to debug it myself but got quickly lost in
> > all those symbols<->types<->other_types references and couldn't find
> > where the problem originates.
> >
> > Also pointing out the right direction where to look for the bug would
> > help me a lot :-)
> >
> > BTW I also filled a PR with a very nice number 1333 for this issue.
> >
> > Thanks in advance!
> >
> > Michal Ludvig
>
> I don't have much time to devote to this, but usually that kind of
> error is generated by some infinite loop that gdb got itself into.
Unlikely. The immediate problem is that the size of function's parameter
'xx' is too big:
(top-gdb) f
#0 read_var_value (var=0x8b35c0, frame=0x85ad98)
at ../../gdb-head/gdb/findvar.c:397
397 struct type *type = SYMBOL_TYPE (var);
(top-gdb) p *var->type
$2 = {pointer_type = 0x0, reference_type = 0x0, chain = 0x89fc00,
instance_flags = 0, length = 4294967292, main_type = 0x89fc28}
(top-gdb) p (int)4294967292
$3 = -4
(top-gdb)
Very likely it was ment to be -4 because something somewhere in the
debug info was wrongly interpreted.
From what is this length computed and where? Somewhere in dwarf2read.c?
> Does the same happen for 386? Maybe comparing the two would help.
Unfortunately i386 generates completely different code and debug info
(it apparently doesn't use dwarf2 - maybe dwarf1? Sections .debug,
.lines, ...) that couldn't be reasonably compared. I wasn't able to
convince it to produce dwarf2 :-(
Thanks for the reply anyway :-)
Michal Ludvig
--
* SuSE CR, s.r.o * mludvig@suse.cz
* (+420) 296.545.373 * http://www.suse.cz
More information about the Gdb
mailing list