Re: gdb can't handle a DIE with both sibling and children

David Carlton
2003-07-31T19:36:16Z

On Thu, 31 Jul 2003 14:20:49 -0400, Daniel Jacobowitz <drow@mvista.com> said:

> It seems quite clear that the code above is deliberately only
> visiting children of DW_TAG_enumeration_type and DW_TAG_namespace,
> since those are the only things whose children it needs to visit. I
> don't know why it was written that way, which does seem strange; I
> imagine it does a lot of useless recursing.

It's not written in the clearest fashion. I have this cleaned up on
my branch to some extent, in a matter which, I hope, makes it clearer
that, normally, we always want to skip children (whether or not the
DIE happens to have a DW_AT_sibling attached to it): after all, most
of the information contained in children is information that we don't
need until a full symtab has been loaded. My rewrite then forks off
the special cases for which we actually do want to look at children
into their own special functions; maybe H.J. could add one for
subprograms that looks for entry point tags. (Assuming, of course,
that it really is important for the partial symbol table to know about
entry point tags, not just the full symbol table.)

I think, actually, that some or all of that cleanup is in my current
patch waiting for approval. I really should get back to merging my
branch in; I've been too busy with other work to be really active
in that effort.

David Carlton
carlton@kealia.com