【问题标题】:What does each column of objdump's Symbol table mean?objdump 的 Symbol 表的每一列是什么意思?
【发布时间】:2011-10-03 18:05:13
【问题描述】:
SYMBOL TABLE:
0000000000000000  w      *UND*  0000000000000000              __gmon_start__

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

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

【问题讨论】:

    标签: objdump


    【解决方案1】:

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

    另一种常见的输出格式,通常用于基于 ELF 的文件,如下所示:

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

    您可以访问以上网站了解更详细的说明。

    【讨论】:

      【解决方案2】:

      第一列:符号的值

      第二列:一组字符和空格,指示在符号上设置的标志位。下面列出了七组:

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

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

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

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

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

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

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

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

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

      第五栏:符号名称。

      如果您想了解更多信息,请尝试使用手册页 ;-) 或以下链接:http://manpages.ubuntu.com/manpages/intrepid/man1/objdump.1.htmlhttp://sourceware.org/binutils/docs/binutils/objdump.html

      【讨论】:

      • 只是想知道,对于第 4 栏,尺寸通常表示为多少?我们看的是字节还是位?
      • @Zhouster,为了加快符号表的加载速度,我认为是32位系统的4字节对齐。
      • @Zhouster。字节,总是字节。
      【解决方案3】:

      由于之前的答案似乎都不正确,这就是您真正要寻找的:

      这是来自 link 的一个可能有帮助的 sn-p:

      “另一种常见的输出格式,通常用于基于 ELF 的文件,如下所示:

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

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

      在节名之后是另一个字段,一个数字,对于常用符号来说是对齐方式,对于其他符号来说是大小。最后显示符号的名称。”

      【讨论】:

        【解决方案4】:

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

        输出中有 7 列

        • 价值
        • 类型
        • 尺寸
        • 部分
        • 符号名称

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

        objdump 打印 最左列 中的 symbol-name
        nm 打印 最右侧列中的strong>符号名称。

        【讨论】:

        • “(某些条目的某些列可能是空的)”这太难了。如果一个人甚至不能确定某一列是否有值,并且也没有分隔符,他们怎么能想象一个人可以轻松地解析符号表? :-((
        • 找到了一种方法,使用这个 reqex: ^((?xi)[a-f0-9]+)\s+([lgu\!])([w ])([C ]) ([W ])([Ii ])([dD ])([FfO ])\s+(\S+)\s+((?xi)[a-f0-9]+)\s+(\S+)$
        【解决方案5】:

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

        $ nm --format sysv simple #system V 格式比默认的 bsd 格式更容易阅读 名称 值 类别 类型 尺寸 线段 ... 富 |080484e6| T |功能|0000000c| |.text

        【讨论】:

        • nmobjdump 有什么关系?
        • @Shadow Wizard,w 类代表什么?
        • @Je 对不起,我不知道,刚刚编辑了答案,所以它有更好的格式。
        • 我在这里找到了我正在寻找的东西,然后有用的答案:)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-15
        • 2014-03-10
        • 1970-01-01
        相关资源
        最近更新 更多