llvm-readobj - LLVM 对象读取器

摘要

llvm-readobj [选项] [输入…]

描述

llvm-readobj 工具显示有关一个或多个目标文件的信息,这些信息是特定于底层格式的。

如果 input 为 “-”,则 llvm-readobj 从标准输入读取。否则,它将从指定的 filenames 读取。

与 LLVM-READELF 的区别

llvm-readelfllvm-readobj 工具的别名,它具有略微不同的命令行界面和与 GNU 兼容的输出。以下是 llvm-readelfllvm-readobj 之间差异的列表

  • llvm-readelf 默认使用 GNU 作为 --elf-output-style 选项。 llvm-readobj 使用 LLVM

  • llvm-readelf 允许使用单字母分组标志(例如,llvm-readelf -SWllvm-readelf -S -W 相同)。llvm-readobj 不允许分组。

  • llvm-readelf 提供 -s 作为 --symbols 的别名,以实现与 GNU readelf 的兼容性,而在 llvm-readobj 中,它是 --section-headers 的别名。

  • llvm-readobj 提供 -t 作为 --symbols 的别名。 llvm-readelf 没有。

  • llvm-readobj 提供 --sr--sd--st--dt 作为 --section-relocations--section-data--section-symbols--dyn-symbols 的别名。 llvm-readelf 没有提供这些别名,以避免与分组标志冲突。

通用和多格式选项

这些选项适用于多种文件格式,或者与文件格式无关。

--all

等效于指定与文件格式相关的所有主要显示选项。

--addrsig

显示地址有效性表。

--decompress, -z

-x-p 一起使用时,转储解压缩的节内容。如果节未压缩,则按原样显示。

--demangle, -C

在输出中显示反解的符号名称。此选项仅适用于 ELF 和 XCOFF 文件格式。

--expand-relocs

--relocs 一起使用时,以扩展的多行格式显示每个重定位。

--file-header, -h

显示文件头。

--headers, -e

等效于设置:--file-header--program-headers--sections

--help

显示命令行选项的摘要。

--hex-dump=<section[,section,...]>, -x

以十六进制字节的形式显示指定的节。 section 可以是节索引或节名称。

--memtag

显示有关二进制文件中存在的内存标记的信息。这包括各种特定于 memtag 的动态条目、解码的全局描述符节和解码的特定于 Android 的 ELF 注记。

--needed-libs

显示所需的库。

--no-demangle

不在输出中反解符号名称。此选项仅适用于 ELF 和 XCOFF 文件格式。默认情况下启用此选项。

--relocations, --relocs, -r

显示文件中的重定位条目。

--sections, --section-headers, -S

显示所有节。

--section-data, --sd

--sections 一起使用时,显示每个显示节的节数据。此选项对 GNU 样式输出无效。

--section-relocations, --sr

--sections 一起使用时,显示每个显示节的重定位。此选项对 GNU 样式输出无效。

--section-symbols, --st

--sections 一起使用时,显示每个显示节的符号。此选项对 GNU 样式输出无效。

--sort-symbols=<sort_key[,sort_key]>

指定在显示 symtab 之前对符号进行排序的键。 sort_key 的有效值为 nametype

--stackmap

显示 stackmap 节的内容。

--string-dump=<section[,section,...]>, -p

将指定的节显示为字符串列表。 section 可以是节索引或节名称。

--string-table

显示字符串表的内容。

--symbols, --syms, -s

显示符号表。

--unwind, -u

显示展开信息。

--version

显示llvm-readobj可执行文件的版本。

@<FILE>

从响应文件<FILE>读取命令行选项。

ELF 特定选项

以下选项仅在ELF文件格式中实现。

--arch-specific, -A

显示特定于体系结构的信息,例如ARM上的ARM属性部分。

--bb-addr-map

显示基本块地址映射部分的内容,这些部分包含每个函数的地址以及每个基本块的相对偏移量。

当存在pgo分析映射时,所有分析都将以其原始值打印。

--pretty-pgo-analysis-map

当基本块地址映射部分中存在pgo分析映射时,具有特殊格式(即BlockFrequency、BranchProbability等)的分析将使用与其相应的分析传递相同的格式打印。

需要--bb-addr-map才能生效。

--dependent-libraries

显示依赖库部分。

--dyn-relocations

显示动态重定位条目。

--dyn-symbols, --dyn-syms, --dt

显示动态符号表。

--dynamic-table, --dynamic, -d

显示动态表。

--cg-profile

显示调用图配置文件部分。

--histogram, -I

显示动态符号哈希表的桶列表直方图。

--elf-linker-options

显示链接器选项部分。

--elf-output-style=<value>

以指定的样式格式化ELF信息。有效选项为LLVMGNUJSONLLVM输出(默认值)是扩展的结构化格式。GNU输出模仿等效的GNU readelf输出。JSON是旨在供机器使用的JSON格式输出。

--section-groups, -g

显示节组。

--gnu-hash-table

显示动态符号的GNU哈希表。

--hash-symbols

显示包含动态符号数据的扩展哈希表。

--hash-table

显示动态符号的哈希表。

--memtag

显示有关二进制文件中存在的内存标记的信息。这包括各种动态条目、解码的全局描述符部分和解码的Android特定ELF注释。

--notes, -n

显示所有注释。

--pretty-print

--elf-output-style一起使用时,JSON输出将以更易读的格式进行格式化。

--program-headers, --segments, -l

显示程序头。

--section-mapping

显示节到段的映射。

--stack-sizes

显示堆栈大小部分的内容,即函数名称与其堆栈帧大小的配对。目前仅在GNU样式输出中实现。

--version-info, -V

显示版本节。

MACH-O 特定选项

以下选项仅在Mach-O文件格式中实现。

--macho-data-in-code

显示代码中的数据命令。

--macho-dsymtab

显示Dsymtab命令。

--macho-indirect-symbols

显示间接符号。

--macho-linker-options

显示Mach-O特定的链接器选项。

--macho-segment

显示段命令。

--macho-version-min

显示版本最小命令。

PE/COFF 特定选项

以下选项仅在PE/COFF文件格式中实现。

--codeview

显示CodeView调试信息。

--codeview-ghash

启用CodeView类型流重复数据删除的全局哈希。

--codeview-merged-types

显示合并的CodeView类型流。

--codeview-subsection-bytes

转储CodeView调试节和记录的原始内容。

--coff-basereloc

显示.reloc节。

--coff-debug-directory

显示调试目录。

--coff-tls-directory

显示 TLS 目录。

--coff-directives

显示 .drectve 段。

--coff-exports

显示导出表。

--coff-imports

显示导入表。

--coff-load-config

显示加载配置。

--coff-resources

显示 .rsrc 段。

XCOFF 特定选项

以下选项仅在 XCOFF 文件格式中实现。

--auxiliary-header

显示 XCOFF 辅助头。

--exception-section

显示 XCOFF 异常段条目。

--loader-section-header

显示 XCOFF 加载器段头。

--loader-section-symbols

显示加载器段的符号表。

--loader-section-relocations

显示加载器段的重定位条目。

退出状态

llvm-readobj 在正常操作下返回 0。如果发生任何错误,则返回非零退出代码。

参见

llvm-nm(1), llvm-objdump(1), llvm-readelf(1)