手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

elfdump(1)

名称

elfdump - 转储目标文件的所选部分

用法概要

elfdump [-cCdegGhHiklmnPrsSuvy] [
-p | -w file]
     [-F fmtopt1,fmtopt2
,...] [-I index-expr]
     [-N name] [-O 
osabi] [-T type] 
filename...

描述

elfdump 实用程序以符号方式转储指定目标文件的所选部分。相应选项允许显示文件的特定部分。

elfdump 实用程序在功能方面与 dump(1) 实用程序类似。与 elfdump 相比,dump 实用程序提供的界面较旧且用户友好性较差,尽管 dump 可能更适合于特定用途(例如用于 shell 脚本中)。

还可以使用 elfdump 检查 ar(1) 生成的归档文件。在这种情况下,使用提供的选项处理归档文件中的每个目标文件。

elfdump 可以显示任何 ELF 目标文件的 ELF 头、程序头数组和节头数组。它还能够显示以下类型的节中找到的数据:


Category                     Option     ELF Section Type
Dynamic                      -d         SHT_DYNAMIC
Global Offset Table (GOT)    -G         Special. See below.
Group                        -g         SHT_GROUP
Capabilities                 -H         SHT_SUNW_cap
Hash Table                   -h         SHT_HASH
Interpreter                  -i         Special, see below.
Move                         -m         SHT_SUNW_move
Note                         -n         SHT_NOTE
Relocation                   -r         SHT_RELA
                                        SHT_REL
Stack Unwind/Exceptions      -u         Special. See below.
Syminfo                      -y         SHT_SUNW_syminfo
Symbol Sort                  -S         SHT_SUNW_symsort
                                        SHT_SUNW_tlssort
Symbol Table                 -s         SHT_SYMTAB
                                        SHT_DYNSYM
                                        SHT_SUNW_LDYNSYM
                                        SHT_SUNW_versym
Versioning                   -v         SHT_SUNW_verdef
                                        SHT_SUNW_verneed

解释器和全局偏移表节不具有特殊的 ELF 节类型,而是使用众所周知的名称(分别为 .interp.got)实现为 SHT_PROGBITS 节。elfdump 能够识别和显示这些特殊节。

用于堆栈展开和异常处理的节可能具有 ELF 节类型 SHT_PROGBITSSHT_AMD64_UNWIND,具体取决于所涉及的编译器和平台。可按名称 .eh_frame.eh_frame_hdr.exception_ranges 识别这些节。

在不带用于缩小所显示信息范围的选项的情况下运行时,elfdump 会显示每个目标文件的所有可用信息。

有关所显示信息的完整说明,请参阅Oracle Solaris 11.2 链接程序和库指南

选项

支持以下选项:

–c

转储节头信息。

–C

等效于 –F demangle。请参见 –F

–d

转储 .dynamic 节的内容。

–e

转储 ELF 头。

–F fmtopt1, fmtopt2,...

可使用一个或多个下列项的逗号分隔列表指定备用输出格式选项。

demangle

取消改编C++ 符号名。

fileprefix

使用对象的名称作为每个输出行的前缀。

fixhextab

在表格输出中显示十六进制值作为计算机字大小的零填充值。缺省情况下,elfdump 以自然格式显示此类值,该格式不包括前导零。

notrunc

显示未截断的长节名。

shndx

包括具有节名称的节索引,使用格式 [index]name。缺省情况下, elfdump 仅显示节名称。

shndxonly

按节索引显示节,使用格式 [ index]。缺省情况下, elfdump 仅显示节名称。

–g

转储 .group 节的内容。

–G

转储 .got 节的内容。

–h

转储 .hash 节的内容。

–H

转储 .SUNW_cap 功能节的内容。

–i

转储 .interp 节的内容。

–I index-expr

通过特定的索引或索引范围来限定要检查的节或程序头。例如,可使用以下命令显示某个文件中的第三个节头:

example% elfdump -c -I 3 filename

index-expr 可以是指定一个特定项的单个非负整数值,如上一示例中所示。另外,index-expr 还可以包含两个这样的值,以冒号 (:) 分隔,指示相应项的范围。以下示例显示文件中的第三、第四和第五个程序头:

example% elfdump -p -I 3:5 filename

在指定索引范围时,可以省略第二个值以指示文件中的最后一项。例如,以下语句列出从第十个到最后的所有节头:

example% elfdump -c -I 10: filename

有关匹配选项 (–I, –N, –T) 的更多信息,请参见“匹配选项”。

–k

计算 ELF 校验和。请参见 gelf_checksum (3ELF) 。

–l

等效于 –F notrunc。请参见 –F

–m

转储 .SUNW_move 节的内容。

–n

转储 .note 节的内容。缺省情况下,elfdump 以十六进制形式显示此数据(没有解释)。核心文件属于例外情况。core(4) 中描述的核心文件附注的子集由 elfdump 进行解释并以较高级别的格式进行显示:NT_PRSTATUS、NT_PRPSINFO、NT_PLATFORM、NT_AUXV、NT_ASRS、NT_PSTATUS、NT_PSINFO、NT_PRCRED、NT_UTSNAME、NT_LWPSTATUS、NT_LWPSINFO、NT_PRPRIV、NT_PRPRIVINFO、NT_CONTENT 和 NT_ZONENAME。

–N name

通过特定的名称来限定要检查的节或程序头。例如,在包含多个符号表的文件中,可使用以下命令自行显示 .dynsym 符号表:

example% elfdump -N .dynsym filename

ELF 程序头没有名称。如果指定 –p 选项,则 name 引用程序头类型,–N 选项的行为与 –T 选项的行为相同。例如,可使用以下命令显示标识解释器的程序头:

example% elfdump -p -N PT_INTERP filename

有关匹配选项 (–I, –N, –T) 的更多信息,请参见“匹配选项”。

–O osabi

指定解释目标文件时要应用的操作系统 ABI。osabi 可以是 /usr/include/sys/elf.h 中找到的任何 ELFOSABI_ 常量的名称或值。为了方便起见,可以从这些名称中省略 ELFOSABI_ 前缀。完全支持两个 osabi 值:solaris 是 Solaris 操作系统的本机 ABI。none 是通用 ELF ABI。对其他操作系统 ABI 的支持可能不完整或缺失。以数字形式显示字符串不可用的项。

如果不使用 –O,且目标文件 ELF 头指定非通用 ABI,则使用目标文件指定的 ABI。如果目标文件指定通用 ELF ABI,则 elfdump 会搜索 .note.ABI-tag 节,如果找到,会将该目标文件标识为具有 linux ABI。另一方面,指定通用 ELF ABI 的目标文件假定为符合 solaris ABI。

–p

转储程序头。可以使用匹配选项 (–I, –N, –T) 指定各个程序头。有关其他信息,请参见“匹配选项”。

–p–w 选项互斥。在给定的 elfdump 调用中只能使用其中一个选项。

–P

根据程序头中的信息生成并使用替代节头信息,忽略文件中包含的任何节头信息。如果文件没有节头,将显示一条警告消息,并且将自动选择此选项。节头未被系统用来执行程序。因此,恶意程序可能会剥离或更改其节头以提供误导性信息。相比之下,程序头必须准确,程序才可运行。使用源自程序头的合成节头信息,允许检查包含更改后节头的文件。

–r

转储 .rel[a] 重定位节的内容。

–s

转储 .SUNW_ldynsym.dynsym.symtab 符号表节的内容。对于归档文件,还将转储归档符号表。可以使用匹配选项 (–I, –N, –T) 指定各个节。可以使用特殊节名称 –N ARSYM 指定归档符号表。

对于核心文件,shndx 字段具有值 "unknown",因为该字段不包含有效值。

除了标准符号表信息外,还会在 ver 标题下提供符号的版本定义索引。

有关匹配选项 (–I, –N, –T) 的更多信息,请参见“匹配选项”。

–S

转储 .SUNW_ldynsym.dynsym 符号表节(按 .SUNW_dynsymsort.SUNW_dyntlssort 符号排序节给定的顺序排序)的内容。线程本地存储 (Thread Local Storage, TLS) 符号按偏移进行排序。常规符号按地址进行排序。不显示未按排序节引用的符号。

–T type

通过特定的类型来限定要检查的节或程序头。例如,在包含多个符号表的文件中,可使用以下命令自行显示 .dynsym 符号表:

example% elfdump -T SHT_DYNSYM filename

type 的值可以是数值,或 /usr/include/sys/elf.h 中定义的任何 SHT_ 符号名称。SHT_ 前缀是可选的,type 不区分大小写。因此,以上示例也可以写为:

example% elfdump -T dynsym filename

如果指定 –p 选项,则 type 引用程序头类型,这将允许显示特定的程序头。例如,可使用以下命令显示标识解释器的程序头:

example% elfdump -p -T PT_INTERP filename

type 的值可以是数值,或 /usr/include/sys/elf.h 中定义的任何 PT_ 符号名称。PT_ 前缀是可选的,type 不区分大小写。因此,以上示例也可以写为:

example% elfdump -p -T interp filename

有关匹配选项 (–I, –N, –T) 的更多信息,请参见“匹配选项”。

–u

转储用于栈帧展开和异常处理的节的内容。

–v

转储 .SUNW_version 版本节的内容。

–w file

将使用匹配选项 (–I, –N, –T) 指定的节内容写入到指定的文件。例如,可以使用以下命令执行对文件的 .text 节的提取:

example% elfdump -w text.out -N .text filename

有关匹配选项 (–I, –N, –T) 的更多信息,请参见“匹配选项”。

–p–w 选项互斥。在给定的 elfdump 调用中只能使用其中一个选项。

–y

转储 .SUNW_syminfo 节的内容。通过字符标记传递符号属性。

A

符号定义可用作辅助过滤器。

B

D 一起指定,符号引用应当直接绑定到关联的依赖项定义。

C

符号定义通过副本重定位生成。

D

符号引用与包含定义的依赖项直接关联。

F

符号定义可用作标准过滤器。

I

符号定义可用作插入项。

L

符号引用指向应延迟装入的依赖项。

N

外部引用不能直接绑定到此符号定义。

P

符号与延迟(推迟)依赖项关联。

S

符号与功能相关联。

操作数

支持下列操作数:

filename

指定的目标文件的名称。

用法

匹配选项

–I–N–T 选项统称为匹配选项。这些选项用于通过索引、名称或类型来缩小要检查的程序头或节的范围。

匹配选项的确切解释取决于所用的其他选项:

  • –p 选项一起使用时,匹配选项引用程序头。–I 引用程序头索引。–T 引用程序头类型。因为程序头没有名称,所以,对于程序头,–N 选项的行为方式与 –T 相同。

  • 与以下任何选项一起使用时,匹配选项用于通过索引、名称或类型选择节:–c–g–m–n–r–s–S–u–w

  • 如果单独使用匹配选项而不使用以下任何选项:–c–g–m–n–p–r–s–S–u–w,则 elfdump 会检查每个目标文件,并显示所匹配的任何节的内容。

在一个给定的 elfdump 调用中,可以混合使用任意数量和类型的匹配选项。在这种情况下,elfdump 显示与所使用的任何匹配选项匹配的所有项的超集。使用此功能,可以通过用于指定每个项目的最简便形式来选择复杂的项目分组。

文件

liblddbg.so

链接程序调试库

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/linker
接口稳定性
Committed(已确定)

另请参见

ar(1)dump(1)elffile(1)file(1)nm(1)pvs(1)elf(3ELF)core(4)attributes(5)

Oracle Solaris 11.2 链接程序和库指南