[Dwarf-Discuss] Mangled Type Def info in GNU 4.x DWARF data?

John DelSignore jdelsign@totalviewtech.com
Thu Jan 21 16:00:29 GMT 2010

Ron Louzon wrote:
> We have just migrated from the GNU 3.x compiler to GNU 4.x and this has
> introduced problems with type defs in the DWARF data.

A small source code fragment along with a DWARF symbol table dump (readelf, dwarfdump, etc) of the object file (the .o) would be really helpful.

Also, the precise version of GCC 4.x would be helpful too. A lot has change in the debug information produced by GCC 4.4 vs GCC 4.3 on Red Hat (and maybe elsewhere).

> I have a static variable ?MyVariable? which is of type ?MyType_T? and
> that type is a type def.

What is the target type of MyType_T? Is it a typedef to a nameless structure? For example:

typedef struct {
  int member;
} MyType_t;

Or something else?

> When I look at the DWARF data, the DIE for ?MyVariable? contains the
> DW_AT_type attribute which points to the type information.
> The DIE for the type information contains the DW_AT_name attribute with
> a value of ?$_271? but all of the type information under this DIE is
> correct.

I've seen compilers elide the typedef information, though without the source code and DWARF symbol table dump I can't say for sure that this is what your GCC 4.x is doing.

Cheers, John D.

> I did a search on the DWARF dump and the ?MyType_T? type def does not
> appear anywhere in the output except for one place which is very
> strange.  ?MyType_T? appears as the name attribute value in a
> ?DW_TAG_subprogram? DIE as
> <2><605AFA> Abbrev Number: 75  (DW_TAG_subprogram)
> DW_AT_external: 1
> DW_AT_name: (indirect string, offset:0x7701F ): MyType_T
> DW_AT_artificial: 1
> DW_AT_declaration: 1
> <3><605B02> Abbrev Number: 19 (DW_TAG_formal_parameter)
> DW_AT_type: <607792>
> DW_AT_artificial: 1
> The source code does not contain any subprograms, functions or methods
> which are named ?MyType_T? and yet ?MyType_T? appears in the DWARF data
> as a subprogram definition.  Why is the type mangled into ?$_271??  This
> presents a problem for me when I need to retrieve information for the
> type ?MyType_T?.  Has anyone encountered this problem and if so, how did
> you retrieve the type information.
> ------------------------------------------------------------------------
> _______________________________________________
> Dwarf-Discuss mailing list
> Dwarf-Discuss at lists.dwarfstd.org
> http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org

More information about the Dwarf-discuss mailing list