Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Roul Oldenburger <oldenburger.roul@rheinmetall-de.com>
To: gdb@sources.redhat.com
Subject: gdb-internal: determining the type of a variable
Date: Thu, 02 Oct 2003 12:48:00 -0000	[thread overview]
Message-ID: <3F7C1F5F.5030102@rheinmetall-de.com> (raw)

Hello everybody,

I hope to find advice here although this might be a gcc or 'stabs 
debuginformation format' related question.

gdb can show lots of information for a variable or instance of a 
structure type but I need to know where and how it gets it from.

Our executables are compiled with at least stabs debuginformation and I 
use 'objdump --stabs my_exe' to make use of it.
The aim is to reconstruct arbitrarily nested structure type descriptions 
down to their final components. I try doing this by parsing objdump's 
output.

Given the full name of a structure type inlcuding the name of the 
package where it is defined I will get the description of it.
If the components are from other structure types I can determine them 
quit easily through the given typenumber/-identifier, but if the 
components are from a traditional basic type or a self-defined basic 
type I am not able to determine its type clearly.

As an example I have the description of a structure 'sonar_description' 
given in the package 'awu_siso_shared_memory':

73884  LSYM   0      0      00000000 1565985 
awu_siso_shared_memory__sonar_description:T(0,426)=s2500status:(0,123),0,8;\
73885  LSYM   0      0      00000000 1566062 
ref_count:(0,5),32,32;id:(0,7),64,32;transmit_method:(0,139),96,8;\
73886  LSYM   0      0      00000000 1566130 
transmit_power_level:(0,397),128,32;measuring_range:(0,382),160,384;\
73887  LSYM   0      0      00000000 1566200 
search_sector:(0,400),544,32;search_rotation:(0,148),576,8;\
73888  LSYM   0      0      00000000 1566261 
cw_pulse:(0,425),608,32;multi_number_of:(0,7),640,32;\
73889  LSYM   0      0      00000000 1566316 
multi_duration_of:(0,33),672,64;;

The given information decribes the structure, but if I want to determine 
of what type the component 'multi_duration_of' is (grep 
':t(0,33)=[r|@]'), I will get multiple possibilities - here are some:

210    LSYM   0      71     00000000 8722 
awu_common__debug_mode_range___XDLU_1__1:t(0,33)=@s8;r(0,27);1;1;
371    LSYM   0      84     00000000 12939 
awu_common__types__nlink_t:t(0,33)=r(0,29);0;-1;
441    LSYM   0      44     00000000 15165 
awu_common__stdio__TTstringS2bP1___XDLU_1__71:t(0,33)=r(0,1);1;71;
6592   LSYM   0      120    00000000 184371 
system__address:t(0,33)=r(0,33);0;-1;
19690  LSYM   0      109    00000000 425771 
duration___XF_1_1000000000:t(0,33)=@s64;r(0,33);01000000000000000000000;0777777777777777777777;
180473 LSYM   0      120    00000000 184371
122185 LSYM   0      100    00000000 2948958 
system__secondary_stack__Tmark_idB:t(0,33)=r(0,33);0;-1;
6835   LSYM   0      81     00000000 75724 
awu_common__ipc__Tipc_permissionB:t(0,33)=r(0,33);-2147483648;2147483647;


In fact the type is duration, but my problem is to distinguish between 
the different possibilities ... so looking for the typenumber alone is 
not enough.

How does gdb does it??

What am I doing wrong?

Probably looking at stabs does not give the right information to do 
this; or do i misinterpret stabs format?

Thanks for any comments and help!

Roul Oldenburger


             reply	other threads:[~2003-10-02 12:48 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-02 12:48 Roul Oldenburger [this message]
2003-10-02 15:35 ` Elena Zannoni
2003-10-02 15:40 ` Jim Blandy
2003-10-06 14:42   ` Roul Oldenburger
2003-10-06 14:54     ` Daniel Jacobowitz
2003-10-06 21:09     ` Jim Blandy
2003-10-07  7:16       ` Roul Oldenburger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3F7C1F5F.5030102@rheinmetall-de.com \
    --to=oldenburger.roul@rheinmetall-de.com \
    --cc=gdb@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox