objdump符号表的每一列是什么意思?

时间:2011-07-12 15:30:44

标签: objdump

SYMBOL TABLE:
0000000000000000  w      *UND*  0000000000000000              __gmon_start__

man objdump但是没有这样的信息。

任何人都知道 5 列是什么意思?

5 个答案:

答案 0 :(得分:53)

COLUMN ONE:符号的值

COLUMN TWO:一组字符和空格,表示在符号上设置的标志位。下面列出了七个分组:

第一组:(l,g ,,!)local,global,both,both。

第二组:(w,)弱或强的符号。

第三组:(C,)符号表示构造函数或普通符号。

第四组:(W,)符号是警告或正常符号。

第五组:(I,)间接引用另一个符号或普通符号。

第六组:(d,D,)调试符号,动态符号或普通符号。

第七组:(F,f,O,)符号是函数,文件,对象或普通符号的名称。

第三栏:符号所在的部分, ABS 表示与某个部分无关

COLUMN FOUR:符号的大小或对齐方式。

COLUMN FIVE:符号的名称。

如果您需要其他信息,请尝试使用手册页;-)或​​以下链接:http://manpages.ubuntu.com/manpages/intrepid/man1/objdump.1.htmlhttp://sourceware.org/binutils/docs/binutils/objdump.html

答案 1 :(得分:5)

由于之前的答案似乎都不正确,这就是您实际需要的内容:

以下是link中可能有用的代码段:

“通常在基于ELF的文件中看到的其他常见输出格式如下所示:

      00000000 l    d  .bss   00000000 .bss
      00000000 g       .text  00000000 fred

这里的第一个数字是符号的值(有时称为其地址)。下一个字段实际上是一组字符和空格,表示在符号上设置的标志位。这些字符如下所述。接下来是与符号关联的部分或 ABS 如果该部分是绝对的(即未与任何部分连接),或 UND 如果该部分在文件中被引用被倾倒,但没有在那里定义。

在节名称之后是另一个字段,一个数字,对于公共符号是对齐,而对于其他符号是大小。最后显示符号的名称。“

答案 2 :(得分:3)

objdump -t 打印文件的符号表条目 输出类似于 nm 程序提供的信息。

输出中有 7列

  • 尺寸
  • 线
  • 部分
  • symbol-name

(某些条目的某些列可能为空)

objdump 最左侧列中打印符号名称
nm 最右侧列中打印符号名称

答案 3 :(得分:0)

http://www.cs.swarthmore.edu/~newhall/unixhelp/compilecycle.html#runtime

$ nm --format sysv simple   # system V format is easier to read than bsd format which is the default

Name                  Value   Class        Type         Size     Line  Section

...
foo                 |080484e6|   T  |              FUNC|0000000c|     |.text

答案 4 :(得分:0)

根据man pages of objdump from man7.org中选项 -t 的描述,格式说明如下:

  

通常在基于ELF的文件中看到的另一种常见输出格式如下:

              00000000 l    d  .bss   00000000 .bss
              00000000 g       .text  00000000 fred
  
      
  • 第一个数字是符号的值(有时称为符号地址)。
  •   
  • 下一个字段实际上是一组字符和空格,指示在符号上设置的标志位。这些字符如下所述。
  •   
  • 下一个是与符号关联的部分,如果该部分是绝对的(即未与任何部分连接),则为* ABS *;如果要转储的文件中引用了该部分但未定义该部分,则为* UND * 。
  •   
  • 节名称到另一个字段之后,是一个数字,对于常见符号,它是对齐方式,对于其他符号,它是大小。最后,显示符号的名称。
  •   

您可以访问上面的网站以获取更多详细说明。