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 输出总结了每个文件中的 text、data 和 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/>。