对象转储的符号表的每一列意味着什么?

SYMBOL TABLE:
0000000000000000  w      *UND*  0000000000000000              __gmon_start__

我有 man objdump,但没有这样的信息。

有人知道 5列是什么意思吗?

58738 次浏览

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

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

输出中有 < em > 7栏 :

  • 价值
  • 同学们
  • 类型
  • 尺寸
  • 台词
  • 部分
  • 符号-名称

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

Objecdump 打印 最左边的柱子中的 符号-名称
Nm 打印 最右边的柱子中的 符号-名称

由于之前的答案似乎都不正确,以下是你实际上在寻找的答案:

这里有一段来自 链接的片段可能会有所帮助:

”另一种常见的输出格式,通常在基于 ELF 的文件中可以看到,如下所示:

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

这里的第一个数字是符号的值(有时称为其地址)。下一个字段实际上是一组字符和空格,指示在符号上设置的标志位。下面对这些字符进行了描述。接下来是与符号相关联的部分,如果该部分是绝对的(即不与任何部分连接) ,则为 ABS,如果该部分在被转储的文件中被引用,但没有在该文件中定义,则为 而且

在节名之后是另一个字段,一个数字,对于普通符号是对齐,对于其他符号是大小。最后显示标志的名称。”

第一栏: 符号的价值

第二列: 一组字符和空格,指示在符号上设置的标志位。以下是七个分组:

第一组: (l,g,,!)本地的,全球的,都不是,都不是。

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

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

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

第五组: (I)间接引用另一个符号或正常符号。

组六: (d,D,)调试符号,动态符号或标准符号。

组七: (F,f,O,)符号是函数、文件、对象或正常符号的名称。

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

第四列: 符号的大小或对齐方式。

第五列: 符号的名称。

如果你想要更多的信息,请尝试您的手册页; ——或以下链接: https://manpages.ubuntu.com/manpages/kinetic/en/man1/objdump.1.htmlhttps://sourceware.org/binutils/docs/binutils/objdump.html

根据 来自 man7.org 的 objecdump 的手册页中对选项 T的说明,格式如下:

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

              00000000 l    d  .bss   00000000 .bss
00000000 g       .text  00000000 fred
  • 这里的第一个数字是符号的值(有时称为其地址)。
  • 下一个字段实际上是一组字符和空格,指示在符号上设置的标志位。下面对这些字符进行了描述。
  • 接下来是与符号相关联的节,或者如果该节是绝对的(即不与任何节连接) ,则为 * ABS * ,或者如果在转储的文件中引用了该节,但没有在该文件中定义该节,则为 * UND* 。
  • 在节名之后是另一个字段,一个数字,对于普通符号是对齐,对于其他符号是大小。最后显示符号的名称。

您可以访问上述网站获得更详细的描述。