llvm-size - 打印大小信息

概要

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

描述

llvm-size 是一个用于打印二进制文件大小信息的工具。它旨在作为 GNU 的 size 的替代品。

该工具会打印每个指定的 input 的大小信息。如果未指定输入,则程序会打印 a.out 的大小信息。“-” 如果指定为输入文件,则 llvm-size 会从标准输入流读取文件。如果输入是归档文件,则会显示其所有成员的大小信息。

选项

-A

等效于 --format,值为 sysv

--arch=<arch>

来自 Mach-O 通用二进制文件的体系结构,用于显示其信息。

-B

等效于 --format,值为 berkeley

--common

berkeley 输出格式中包含 ELF 通用符号大小到 bss 大小,或在 sysv 输出中作为单独的节条目。如果未指定,则忽略这些符号。

-d

等效于 --radix,值为 10

-l

darwin 格式中显示 Mach-O 文件中段和节的详细地址和偏移信息。

--format=<format>

将输出格式设置为指定的 <format>。可用的 <format> 选项为 berkeley(默认值)、sysvdarwin

Berkeley 输出总结每个文件中的文本、数据和 bss 大小,如下所示,这是一个典型的 ELF 文件对

$ llvm-size --format=berkeley test.o test2.o
   text    data     bss     dec     hex filename
    182      16       5     203      cb test.elf
     82       8       1      91      5b test2.o

对于 Mach-O 文件,输出格式略有不同

$ llvm-size --format=berkeley macho.obj macho2.obj
__TEXT  __DATA  __OBJC  others  dec     hex
4       8       0       0       12      c       macho.obj
16      32      0       0       48      30      macho2.obj

Sysv 输出显示大多数节的大小和地址信息,每个文件分别列出

$ llvm-size --format=sysv test.elf test2.o
   test.elf  :
   section       size      addr
   .eh_frame       92   2097496
   .text           90   2101248
   .data           16   2105344
   .bss             5   2105360
   .comment       209         0
   Total          412

   test2.o  :
   section             size   addr
   .text                 26      0
   .data                  8      0
   .bss                   1      0
   .comment             106      0
   .note.GNU-stack        0      0
   .eh_frame             56      0
   .llvm_addrsig          2      0
   Total                199

darwin 格式仅影响 Mach-O 输入文件。如果指定了不同文件格式的输入,则 llvm-size 会回退到 berkeley 格式。在生成 darwin 格式时,该工具会显示有关段和节的信息

$ llvm-size --format=darwin macho.obj macho2.obj
   macho.obj:
   Segment : 12
           Section (__TEXT, __text): 4
           Section (__DATA, __data): 8
           total 12
   total 12
   macho2.obj:
   Segment : 48
           Section (__TEXT, __text): 16
           Section (__DATA, __data): 32
           total 48
   total 48
--help, -h

显示命令行选项的摘要。

-m

等效于 --format,值为 darwin

-o

等效于 --radix,值为 8

--radix=<value>

以指定的基数显示大小信息。允许的值为 810(默认值)和 16,分别表示八进制、十进制和十六进制输出。

示例

$ llvm-size --radix=8 test.o
   text    data     bss     oct     hex filename
   0152      04      04     162      72 test.o

$ llvm-size --radix=10 test.o
   text    data     bss     dec     hex filename
    106       4       4     114      72 test.o

$ llvm-size --radix=16 test.o
   text    data     bss     dec     hex filename
   0x6a     0x4     0x4     114      72 test.o
--totals, -t

仅适用于 berkeley 输出格式。除了各个文件列表外,还显示所有列出字段的总计。

示例

$ llvm-size --totals test.elf test2.o
   text    data     bss     dec     hex filename
    182      16       5     203      cb test.elf
     82       8       1      91      5b test2.o
    264      24       6     294     126 (TOTALS)
--version

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

-x

等效于 --radix,值为 16

@<FILE>

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

退出状态

llvm-size 如果发生错误,则退出时返回非零退出代码。否则,它退出时返回代码 0。

错误

要报告错误,请访问 <https://github.com/llvm/llvm-project/labels/tools:llvm-size/>。