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=<段[,段,...]>, -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=<排序键[,排序键]>

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

--stackmap

显示 stackmap 段的内容。

--string-dump=<段[,段,...]>, -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 等)的分析将使用与其各自的分析 pass 相同的格式打印。

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

--dependent-libraries

显示依赖库段。

--dyn-relocations

显示动态重定位条目。

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

显示动态符号表。

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

显示动态表。

--cg-profile

显示调用图 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)