2010-06-17 4 views

Répondre

3

Vous pouvez:

man readelf 

ou regarder ces tutoriels:

+0

Je suis également intéressé par une réponse à cette question. En particulier, qu'est-ce que Ndx (from readelf -s)? Probablement, c'est évident pour quelqu'un qui comprend elf. J'ai regardé à la fois la page de manuel et les documents que vous avez listés et je n'ai pas trouvé l'information là-bas. Peut-être que je l'ai juste raté? Ce ne serait pas la première fois. – ejgottl

+0

Surtout: lisez les normes pointées par le LSB: http://www.sco.com/developers/gabi/2003-12-17/contents.html étant le plus intéressant. –

30

Considérez ce qui suit:

Table Symbole .symtab contient 1203 entrées:

Num: Value Size Type Bind Vis  Ndx Name 
310: a0008120  0 NOTYPE GLOBAL DEFAULT ABS _gp 
734: a0000010 32 OBJECT GLOBAL DEFAULT 77 v 
818: 9d000018 496 FUNC GLOBAL DEFAULT 71 main 
849: a0000124  4 OBJECT GLOBAL DEFAULT 78 phrase 
955: a0000000  9 OBJECT GLOBAL DEFAULT 77 peppers 
1020: a000023c 192 OBJECT GLOBAL DEFAULT 80 bins 
  • Num: = Le nombre de symboles
  • Value = L'adresse du symbole
  • Size = La taille du symbole
  • Type = type de symbole: Func = Fonction, Object, File (nom du fichier source), Section = section de mémoire, Notype = symbole absolu non typé ou non défini
  • Bind = GLOBAL de liaison désigne le symbole est visible à l'extérieur du dossier. LOCAL La liaison est visible uniquement dans le fichier. WEAK est comme global, le symbole peut être outrepassé.
  • Vis = Les symboles peuvent être par défaut, protégés, cachés ou internes.
  • Ndx = La section numéro le symbole est en ABS signifie absolue:. Pas adapté à une relocalisation de l'adresse de la section
  • Name = nom symbole
+0

que signifie "UNIQUE" en tant que valeur pour bind? –

+0

@Caladain Que signifie 'La taille du symbole'? Dites, si le symbole est un nom de fonction, la dose «Taille» signifie la taille de la fonction (par exemple, combien d'instructions cette fonction a-t-elle)? –

-1

Ok cette question est vieux, mais bon vieux Google donne si vous cherchez une table de symboles et NDX;

Voici ce que j'ai découvert:

Le code C compilé avec avr-gcc:

int XYZ = 123; 
int ABC; 

lorsque le fichier Elf généré est analysé à l'aide

readelf --symbols KoreOS.elf 

vous obtenez en sortie :

Num: Value Size Type Bind Vis  Ndx Name 
... 
148: 0080200b  2 OBJECT GLOBAL DEFAULT 2 XYZ 
... 
258: 00803878  2 OBJECT GLOBAL DEFAULT 3 ABC 
... 

J'utilise la colonne NDX comme indice si la variable est initialisée ou non. Mais je n'ai trouvé aucune documentation nulle part, je ne fais que deviner.

salutations, Dominik

0

Je pense que le terrain Ndx indique le numéro de section où ce symbole est défini.

Effectuez un readelf -a <file> et recherchez la section correspondant à l'adresse pour un symbole donné. Je parie que le numéro de section de cette section apparaîtra dans le champ Ndx.

Questions connexes