This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: <incomplete type>


Craig Jeffree <craig.jeffree@preston.net> writes:
> On Mon, 2005-08-29 at 11:31 -0700, Jim Blandy wrote:
>> The leftmost number in <angle brackets> is the nesting level of that
>> die; so if the entry for the die after the first one you listed starts
>> with <2>, then it's a child of the <1> die.  There should be
>> DW_TAG_member(?) dies.
>
> Ah, now I can see some sense in these dies.  Looking in the actual
> executable I can see this...
>
>  <1><c74a688>: Abbrev Number: 114 (DW_TAG_structure_type)
>      DW_AT_sibling     : <c74aadf>
>      DW_AT_name        : (indirect string, offset: 0x4ff824): Waypoint
>      DW_AT_byte_size   : 92
>      DW_AT_decl_file   : 60
>      DW_AT_decl_line   : 28
>      DW_AT_containing_type: <c74b7e1>
>  <2><c74a698>: Abbrev Number: 54 (DW_TAG_inheritance)
>      DW_AT_type        : <c74abb4>
>      DW_AT_data_member_location: 2 byte block: 23 0
> (DW_OP_plus_uconst: 0)
>      DW_AT_accessibility: 1     (public)
>  <2><c74a6a1>: Abbrev Number: 56 (DW_TAG_variable)
>      DW_AT_name        : (indirect string, offset: 0x837e8): typeName_
>      DW_AT_decl_file   : 1
>      DW_AT_decl_line   : 17
>      DW_AT_MIPS_linkage_name: (indirect string, offset: 0x8e402b):
> _ZN3Soi8Waypoint9typeName_E
>      DW_AT_type        : <c74b7af>
>      DW_AT_external    : 1
>      DW_AT_declaration : 1
>  <2><c74a6b2>: Abbrev Number: 47 (DW_TAG_member)
>      DW_AT_name        : (indirect string, offset: 0x7724ea): wpname_
>      DW_AT_decl_file   : 60
>      DW_AT_decl_line   : 84
>      DW_AT_type        : <c74b7b4>
>      DW_AT_data_member_location: 2 byte block: 23 4
> (DW_OP_plus_uconst: 4)
>      DW_AT_accessibility: 3     (private)
>  <2><c74a6c1>: Abbrev Number: 47 (DW_TAG_member)
>      DW_AT_name        : (indirect string, offset: 0x8e4084): wpll_
>      DW_AT_decl_file   : 60
>      DW_AT_decl_line   : 85
>      DW_AT_type        : <c748414>
>      DW_AT_data_member_location: 2 byte block: 23 4c
> (DW_OP_plus_uconst: 76)
>      DW_AT_accessibility: 3     (private)
>  <2><c74a6d0>: Abbrev Number: 48 (DW_TAG_subprogram)
> [It then trails off into a long list of methods and their arguments]
>
>
> So, it appears to list the members of Waypoint.  Is this enough info for
> gdb to not say incomplete type?  How can I figure out why gdb is missing
> this?  When I explicitly try to reference these members of a Waypoint
> object gdb says "There is no member named wpll_".

Well, we've at least established that 'wpll_' is mentioned in the
debug info.

If you run GDB on the executable alone, without starting it, what does
'ptype struct Soi::Waypoint' say?  (Running the program will load
shared libraries and possibly confuse the issue, but GDB should be
able to understand the info in the executable without running
anything.)

>> (I'm apparently wrong about the DW_AT_name being mangled.  Does the
>> DW_AT_containing_type attribute of the first die point at something
>> named "Soi"?)
>
> The containing type for 'Waypoint' points to a die that appears to
> describe Waypoint's base class.

That's odd.  The Dwarf 3 spec only mentions DW_AT_containing_type in
the context of dies describing pointer-to-member types.  So the
attribute wasn't what I guessed it was, but it also doesn't belong
there.

> I couldn't find any dies relating to the namespace 'Soi'.

I have trouble keeping track of how namespaces are supposed to work in
the GNU toolchain; it's changed over time.

As I understand it now, if the namespace information were present, it
would be a DW_TAG_namespace die, and the DW_TAG_structure_type die
would be one of its children.  Or, if the type were declared inside
the namespace but defined outside it, the definition die might not be
a child of a namespace die itself, but it would have a
DW_AT_specification attribute that pointed to another die that was.

But you're saying there's no "Soi" die at all, so that's all moot.

What does 'ptype struct Waypoint' say?  (Again, without running the
program.)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]