AIX命令参考大全,卷 5,s - u - stripnm 命令

[ 页的底部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]

AIX命令参考大全,卷 5,s - u

stripnm 命令

用途

显示指定对象文件的符号信息。

语法

stripnm [ -x | -d ] [ -s ] [ -z ] File

描述

stripnm 命令(当不带 -s 标志运行时)将指定对象文件的符号表打印到标准输出中。 由 File 参数指定的文件可以是单独的对象文件或对象文件的归档库。如果由 File 参数指定的文件是归档文件,将生成归档中每个对象文件的列表。 如果符号表已从对象文件中除去,则 stripnm 命令从回溯表抽取符号名(即使未指定 -s 标志),并从对象文件的装入程序段抽取符号名。如果回溯表不存在,则显示错误消息。

每个符号名称前都有它的地址和代表符号类型的一个字符(类似于 nm 输出)。 当和 -z 一起使用时, 输出格式与 AIX 5.2 之前的输出格式相同,即每个符号名后跟着它的地址(如果地址未定义,则是一串空格)、类的类型和段类型。地址字段可以用十进制显示(使用 -z-d 时的缺省值),或用十六进制显示(不使用 -z 或如果已使用 -x 标志时的缺省值)。

stripnm 命令也收集和报告源文件的名称。所有跟在源文件名行之后的符号都属于该源文件,直到遇到下一个源文件名行。对于已除去的文件,源文件名将作为对象文件名报告。

当使用 -s 标志运行时,stripnm 命令将忽略符号表(如果存在),并且始终从对象文件的回溯表和装入程序段中抽取例程名称。

如果符号表不存在,或使用 -s 标志,则 stripnm 命令也将搜索 glue 代码和指针 glue 信息。两者都是该对象文件的文本区域中的指示信息序列。

对于 32 位应用程序,glue 代码由以下指示信息序列组成:

8182xxxx #   lwz r12,xxxx(r12)(xxxx 是 TOC 条目索引)
90410014 #   stw r2,14(r1)
800c0000 #   lwz r0,0(r12)
804c0004 #   lwz r2,4(r12)
7c0903a6 # mtctr r0
7c0903a6 # mtctr r0
4e800420 # bctr

装入程序段条目(其地址与 xxxx 指向的 TOC 条目相匹配)给出了此 glue 代码序列的函数名称。

对于 64 位可执行程序,glue 代码序列如下:

982xxxx #    ld r12,xxxx(r2) (xxxx 是 TOC 条目索引)
8410028 #   std r2,28(r1)
80c0000 #    ld r0,0(r12)
84c0008 #    ld r2,8(r12
c0903a6 # mtctr r0
c0903a6 # mtctr r0
e800420 #  bctr

对于 32 位应用程序,指针 glue 代码由以下序列组成:

800b0000 #   lwz r0,0(r11)
90410014 #   stw r2,20(r1)
7c0903a6 # mtctr r0
804b0004 #   lwz r2,4(r11)
816b0008 #   lwz r11,8(r11)
4e80xx20 #  bctr

对于 64 位可执行程序,指针 glue 代码序列如下:

e80b0000 #    ld r0,0(r11)
f8410028 #   std r2,20(r1)
7c0903a6 # mtctr r0
e84b0008 #    ld r2,8(r11)
e96b0010 #    ld r11,16(r11)
4e80xx20 #  bctr

指针 glue 只存在于一个副本中,并且始终以 ._prtgl 符号报告。

stripnm 命令在文本区域从头到尾搜索这些序列。如果命令发现一个匹配的指示信息序列,它将被报告为 glue 代码或指针 glue。

stripnm 为 glue 代码和指针 glue 人工生成源文件符号。对于 32 位可执行程序,所有 glue 代码条目的源文件是 glink.s,而指针 glue 的源文件是 ptrgl.s。对于 64 位可执行程序,源文件分别是 glink64.sptrgl_64.s

stripnm 命令也可用来在 /unix 文件中搜索符号信息。如果 /unix 文件不符合目前运行的内核,将显示警告消息。

标志

-d 以十进制格式打印符号地址值。

这是使用 -z 时的缺省值。

-s 强制忽略符号表。
-x 以十六进制格式打印符号地址值。

这是没有使用 -z 时的缺省值。

-z 使用旧格式。

示例

  1. 要列出 a.out 对象文件的符号,请输入:

    stripnm a.out
  2. 要以十进制列出 a.out 对象文件的符号地址值,请输入:
    stripnm -d a.out
  3. 要以旧的格式列出 libc.a 中对象文件中的符号,但使用十六进制地址,请输入:
    stripnm -xz libc.a

相关信息

strip 命令。

[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]