This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
<undefined> type in objdump output // how to make binutils right
- From: Roul Oldenburger <oldenburger dot roul at rheinmetall-de dot com>
- To: binutils at sources dot redhat dot com
- Date: Fri, 07 Nov 2003 11:09:50 +0100
- Subject: <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