2010-06-17 10 views

risposta

3

È possibile:

man readelf 

o guardare a questi tutorial:

+0

Sono anche interessato a una risposta a questa domanda. In particolare, cos'è Ndx (da readelf -s)? Probabilmente è ovvio per qualcuno che capisce l'elfo. Ho guardato sia la pagina man sia i documenti che hai elencato e non sono riuscito a trovare le informazioni lì. Forse l'ho appena perso? Non sarebbe la prima volta. – ejgottl

+0

Soprattutto: leggi gli standard indicati da LSB: http://www.sco.com/developers/gabi/2003-12-17/contents.html è il più interessante. –

30

Si consideri il seguente: tavolo

Simbolo .symtab contiene 1203 voci:

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: = Il numero simbolo
  • Value = L'indirizzo del Simbolo
  • Size = La dimensione del simbolo
  • tipo Type = simbolo: Func = Funzione, Object, File (nome del file sorgente), Section = sezione di memoria, Notype = non tipizzata simbolo assoluto o non definito
  • Bind = GLOBAL legame significa che il simbolo è visibile all'esterno del file. Il binding LOCAL è visibile solo nel file. WEAK è come globale, il simbolo può essere ignorato.
  • Vis = I simboli possono essere predefiniti, protetti, nascosti o interni.
  • Ndx = Il numero della sezione il simbolo è in ABS significa assoluta:. Non regolato per il trasferimento di qualsiasi indirizzo sezione
  • Name = simbolo nome
+0

cosa significa "UNICO" come valore per legare ?? –

+0

@Caladain Che cosa significa "La dimensione del simbolo"? Dite, se il simbolo è un nome di funzione, dose "Dimensione" significa la dimensione della funzione (ad esempio quante istruzioni ha questa funzione)? –

-1

Ok questa domanda è vecchia, ma il buon vecchio Google cede se stai cercando symboltable e NDX;

Ecco cosa ho scoperto:

Il codice C compilato con avr-gcc:

int XYZ = 123; 
int ABC; 

quando il file elfo generato viene analizzato utilizzando

readelf --symbols KoreOS.elf 

si ottiene come output :

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

Io uso la colonna NDX come suggerimento se la variabile è inizializzata o meno. Ma non ho trovato documentazione ovunque, quindi sto solo supponendo.

saluti, Dominik

0

penso campo Ndx dimostra il numero della sezione in cui si definisce quel simbolo.

Fare un readelf -a <file> e scoprire a quale sezione corrisponde l'indirizzo per un dato simbolo.

Scommetto che il numero di sezione di quella sezione verrà visualizzato nel campo Ndx.

Problemi correlati