Could someo开发者_如何学编程ne explain the columns shown of the symbol table using readelf?
Consider the following:
Symbol table .symtab contains 1203 entries:
 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:= The symbol number
- Value= The address of the Symbol
- Size= The size of the symbol
- Type= symbol type:- Func= Function,- Object,- File(source file name),- Section= memory section,- Notype= untyped absolute symbol or undefined
- Bind=- GLOBALbinding means the symbol is visible outside the file.- LOCALbinding is visible only in the file.- WEAKis like global, the symbol can be overridden.
- Vis= Symbols can be default, protected, hidden or internal.
- Ndx= The section number the symbol is in. ABS means absolute: not adjusted to any section address's relocation
- Name= symbol name
I think Ndx field shows the section number where that symbol is defined.
Do a readelf -a <file>, and find out which section the address corresponds to for a given symbol.
I bet the section number of that section will appear in Ndx field.
You can either:
man readelf
or look at these tutorials:
- The ELF Object File Format by Dissection
- Understanding ELF using readelf and objdump.(Edit: link removed; linuxforums.org has been hacked)
Ok this question is old, but good old Google yields it if you are looking for readelf symboltable and NDX;
Here is what I found out:
The C code compiled with avr-gcc:
int XYZ = 123;
int ABC;
when the generated elf file is analyzed using
readelf --symbols KoreOS.elf
you get as 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
...
I use the NDX column as hint if the variable is initialized or not. But I found no documentation anywhere so I'm just guessing.
greetings, Dominik
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论