This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils 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]

<undefined> type in objdump output // how to make binutils right


Hello again,

Ian already helped me with this topic but this time I guess its a problem of configuring binutils the right way and not an objdump question.

What happened... I am parsing 'objdump --debugging' output from executables compiled with GNAT from Ada sources to reconstruct trees of structure types. It worked fine with the given debuginfos until I came across empty type descriptions which have an 'id 0' entry. I found the expected type description with a special suffix added to its name '___XVE' with components in it having suffixes like '___XVA4' and '___XVL' ...
as Ian guessed they are Ada specific and Joel from gdb said these things are explained in GNAT in exp_dbug.ads (found in gcc/ada).
It says the given types having the XVE suffix are variable entities having one or more components with a variable length, which explains why bitpositions are all 0.
So I expanded the parser and now came to the point where I found components with 'undefined' type designators ... which aren't very helpful.


An example:
struct awu_siso_shared_memory__shared_memory_description___XVE { /* size 4 id 3576 */
struct awu_siso_shared_memory__shared_memory_basic_description /* id 3065 */ _parent; /* bitsize 256, bitpos 0 */
struct awu_siso_shared_memory__version_description /* id 3068 */ version; /* bitsize 128, bitpos 0 */
<undefined> *static___XVL; /* bitsize 32, bitpos 0 */
struct awu_siso_shared_memory__dynamic_shared_memory_table /* id 3570 */ dynamic___XVA4; /* bitsize 207264, bitpos 0 */
struct awu_siso_shared_memory__future_description /* id 3573 */ future; /* bitsize 43904, bitpos 0 */
struct awu_siso_shared_memory__data_field_description /* id 3496 */ data_field; /* bitsize 8647040, bitpos 0 */
struct awu_siso_shared_memory__environment_description /* id 3558 */ environment; /* bitsize 28061216, bitpos 0 */
};


The component with variable length is missing the type ...

What I found is that running objdump on a different machine using the same executable gives a reasonable description without <undefined> types.

I have installed binutils 2.13.1 on my machine ... on the development system I cannot install a recent version of binutils (2.11 is there), so I unpacked and built (but not installed) binutils 2.14 in my development path.

Am I right if I guess the local objdump still uses the libbfd from the installed 2.11 ?
How can I configure / install binutils separate without disturbing the current system?


Or am I totally wrong .... any other ideas?

Thanks a lot
Roul


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