Gcj 3.0 on Itanium, again

Jeff Sturm jsturm@one-point.com
Thu May 17 00:22:00 GMT 2001


On 2001年5月16日, Alexandre Petit-Bianco wrote:
> Here's what I see when compiling `class X {}'. -g1 gets passed by
> default to jc1. With -g1, member functions get registered in
> decl_die_table (it doesn't seem to happen for g0 and g>=2.) Latter on
> in gen_member_die, when considering member functions, lookup_decl_die
> will return a non null child and therefore call splice_child_die which
> aborts here:
>> if (child->die_parent != parent
> && child->die_parent != get_AT_ref (parent, DW_AT_specification))
> abort ();
>> I don't know what's really wrong here. child->die_parent != parent or
> the fact that the `parent' doesn't feature the DW_AT_specification
> (returning NULL which doesn't compare against a non null child->die_parent.)

I looked at this too. jc1 fails while compiling <init>.
splice_child_die is complaining that parent/child are siblings. Both are
children of the compilation unit.
That makes sense given that <init> is compiled as a toplevel function.
However it is also a member of the class type. When dwarf2out.c tries to
emit debug info for the class, it finds (in lookup_decl_die) that <emit>
has already been generated but under a different context.
I suspect the class type info shouldn't be generated at all at -g1.
However with my limited debug experience I can't really say how it should
be fixed. I could try to figure out why it works on x86, I guess...
Jeff


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /