Est-ce que quelqu'un pourrait expliquer les colonnes montrées de la table de symbole en utilisant readelf
?Quelles sont les significations des colonnes de la table de symboles affichées par readelf?
Répondre
Vous pouvez:
man readelf
ou regarder ces tutoriels:
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 symbolesValue
= L'adresse du symboleSize
= La taille du symboleType
= type de symbole:Func
= Fonction,Object
,File
(nom du fichier source),Section
= section de mémoire,Notype
= symbole absolu non typé ou non définiBind
=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 sectionName
= nom symbole
que signifie "UNIQUE" en tant que valeur pour bind? –
@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)? –
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
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.
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
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. –