Gcj 3.0 on Itanium, again

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

On Wed, 16 May 2001, 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...


More information about the Java mailing list