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

David Carlton
2003-07-31T20:13:43Z

On Thu, 31 Jul 2003 12:56:40 -0700, "H. J. Lu" <hjl@lucon.org> said:

> I don't know for sure how DW_TAG_entry_point works. It seems to me
> that DW_TAG_entry_point should inherit DW_AT_accessibility and
> DW_AT_high_pc from its parent.

I'm a little confused both from reading the DWARF 3 standard and from
reading your code below; the standard doesn't really talk about why a
DW_TAG_entry_point would or wouldn't be contained in a
DW_TAG_subroutine, and I don't know any Fortran to help me figure this
out.

So: what does it mean for a subroutine to have another entry point? I
see that that entry point has a name; is that name visible to other
compilation units, or only to the compilation unit in question? If
it's only visible to the compilation unit in question, then the
partial symtab probably doesn't have to know about it at all. If it's
visible outside the compilation unit (and if the compiler really is
correct in putting DW_TAG_entry_points as children of
DW_TAG_subroutines), then the partial symtab probably does have to
know about it. In that case, you might want to look at what
<http://sources.redhat.com/ml/gdb-patches/2003-06/msg00838.html> does
to scan_partial_symbols; you could add an add_partial_subroutine
function to it that looks for entry point tags within subroutines.

David Carlton
carlton@kealia.com