xref: /llvm-project/llvm/docs/CommandGuide/llvm-size.rst (revision bbce75e352be0637305a1b59ac5eca7175bceece)
1a28b8d78SJordan Rupprechtllvm-size - print size information
2a28b8d78SJordan Rupprecht==================================
3a28b8d78SJordan Rupprecht
4a28b8d78SJordan Rupprecht.. program:: llvm-size
5a28b8d78SJordan Rupprecht
6a28b8d78SJordan RupprechtSYNOPSIS
7a28b8d78SJordan Rupprecht--------
8a28b8d78SJordan Rupprecht
9e8ed9326SJames Henderson:program:`llvm-size` [*options*] [*input...*]
10a28b8d78SJordan Rupprecht
11a28b8d78SJordan RupprechtDESCRIPTION
12a28b8d78SJordan Rupprecht-----------
13a28b8d78SJordan Rupprecht
14e8ed9326SJames Henderson:program:`llvm-size` is a tool that prints size information for binary files.
15e8ed9326SJames HendersonIt is intended to be a drop-in replacement for GNU's :program:`size`.
16e8ed9326SJames Henderson
17e8ed9326SJames HendersonThe tool prints size information for each ``input`` specified. If no input is
18e8ed9326SJames Hendersonspecified, the program prints size information for ``a.out``. If "``-``" is
19e8ed9326SJames Hendersonspecified as an input file, :program:`llvm-size` reads a file from the standard
20e8ed9326SJames Hendersoninput stream. If an input is an archive, size information will be displayed for
21e8ed9326SJames Hendersonall its members.
22e8ed9326SJames Henderson
23e8ed9326SJames HendersonOPTIONS
24e8ed9326SJames Henderson-------
25e8ed9326SJames Henderson
26e8ed9326SJames Henderson.. option:: -A
27e8ed9326SJames Henderson
28e8ed9326SJames Henderson Equivalent to :option:`--format` with a value of ``sysv``.
29e8ed9326SJames Henderson
30e8ed9326SJames Henderson.. option:: --arch=<arch>
31e8ed9326SJames Henderson
32e8ed9326SJames Henderson Architecture(s) from Mach-O universal binaries to display information for.
33e8ed9326SJames Henderson
34e8ed9326SJames Henderson.. option:: -B
35e8ed9326SJames Henderson
36e8ed9326SJames Henderson Equivalent to :option:`--format` with a value of ``berkeley``.
37e8ed9326SJames Henderson
38e8ed9326SJames Henderson.. option:: --common
39e8ed9326SJames Henderson
40e8ed9326SJames Henderson Include ELF common symbol sizes in bss size for ``berkeley`` output format, or
41e8ed9326SJames Henderson as a separate section entry for ``sysv`` output. If not specified, these
42eefbc358SJames Henderson symbols are ignored.
43e8ed9326SJames Henderson
44e8ed9326SJames Henderson.. option:: -d
45e8ed9326SJames Henderson
46e8ed9326SJames Henderson Equivalent to :option:`--radix` with a value of ``10``.
47e8ed9326SJames Henderson
48e8ed9326SJames Henderson.. option:: -l
49e8ed9326SJames Henderson
50e8ed9326SJames Henderson Display verbose address and offset information for segments and sections in
51e8ed9326SJames Henderson Mach-O files in ``darwin`` format.
52e8ed9326SJames Henderson
53e8ed9326SJames Henderson.. option:: --format=<format>
54e8ed9326SJames Henderson
55e8ed9326SJames Henderson Set the output format to the ``<format>`` specified. Available ``<format>``
56e8ed9326SJames Henderson options are ``berkeley`` (the default), ``sysv`` and ``darwin``.
57e8ed9326SJames Henderson
58e8ed9326SJames Henderson Berkeley output summarises text, data and bss sizes in each file, as shown
59e8ed9326SJames Henderson below for a typical pair of ELF files:
60e8ed9326SJames Henderson
61e8ed9326SJames Henderson .. code-block:: console
62e8ed9326SJames Henderson
63e8ed9326SJames Henderson  $ llvm-size --format=berkeley test.o test2.o
64e8ed9326SJames Henderson     text    data     bss     dec     hex filename
65e8ed9326SJames Henderson      182      16       5     203      cb test.elf
66e8ed9326SJames Henderson       82       8       1      91      5b test2.o
67e8ed9326SJames Henderson
68e8ed9326SJames Henderson For Mach-O files, the output format is slightly different:
69e8ed9326SJames Henderson
70e8ed9326SJames Henderson .. code-block:: console
71e8ed9326SJames Henderson
72e8ed9326SJames Henderson  $ llvm-size --format=berkeley macho.obj macho2.obj
73e8ed9326SJames Henderson  __TEXT  __DATA  __OBJC  others  dec     hex
74e8ed9326SJames Henderson  4       8       0       0       12      c       macho.obj
75e8ed9326SJames Henderson  16      32      0       0       48      30      macho2.obj
76e8ed9326SJames Henderson
77e8ed9326SJames Henderson Sysv output displays size and address information for most sections, with each
78e8ed9326SJames Henderson file being listed separately:
79e8ed9326SJames Henderson
80e8ed9326SJames Henderson .. code-block:: console
81e8ed9326SJames Henderson
82e8ed9326SJames Henderson  $ llvm-size --format=sysv test.elf test2.o
83e8ed9326SJames Henderson     test.elf  :
84e8ed9326SJames Henderson     section       size      addr
85e8ed9326SJames Henderson     .eh_frame       92   2097496
86e8ed9326SJames Henderson     .text           90   2101248
87e8ed9326SJames Henderson     .data           16   2105344
88e8ed9326SJames Henderson     .bss             5   2105360
89e8ed9326SJames Henderson     .comment       209         0
90e8ed9326SJames Henderson     Total          412
91e8ed9326SJames Henderson
92e8ed9326SJames Henderson     test2.o  :
93e8ed9326SJames Henderson     section             size   addr
94e8ed9326SJames Henderson     .text                 26      0
95e8ed9326SJames Henderson     .data                  8      0
96e8ed9326SJames Henderson     .bss                   1      0
97e8ed9326SJames Henderson     .comment             106      0
98e8ed9326SJames Henderson     .note.GNU-stack        0      0
99e8ed9326SJames Henderson     .eh_frame             56      0
100e8ed9326SJames Henderson     .llvm_addrsig          2      0
101e8ed9326SJames Henderson     Total                199
102e8ed9326SJames Henderson
103e8ed9326SJames Henderson ``darwin`` format only affects Mach-O input files. If an input of a different
104e8ed9326SJames Henderson file format is specified, :program:`llvm-size` falls back to ``berkeley``
105e8ed9326SJames Henderson format. When producing ``darwin`` format, the tool displays information about
106e8ed9326SJames Henderson segments and sections:
107e8ed9326SJames Henderson
108e8ed9326SJames Henderson .. code-block:: console
109e8ed9326SJames Henderson
110e8ed9326SJames Henderson  $ llvm-size --format=darwin macho.obj macho2.obj
111e8ed9326SJames Henderson     macho.obj:
112e8ed9326SJames Henderson     Segment : 12
113e8ed9326SJames Henderson             Section (__TEXT, __text): 4
114e8ed9326SJames Henderson             Section (__DATA, __data): 8
115e8ed9326SJames Henderson             total 12
116e8ed9326SJames Henderson     total 12
117e8ed9326SJames Henderson     macho2.obj:
118e8ed9326SJames Henderson     Segment : 48
119e8ed9326SJames Henderson             Section (__TEXT, __text): 16
120e8ed9326SJames Henderson             Section (__DATA, __data): 32
121e8ed9326SJames Henderson             total 48
122e8ed9326SJames Henderson     total 48
123e8ed9326SJames Henderson
124e8ed9326SJames Henderson.. option:: --help, -h
125e8ed9326SJames Henderson
126e8ed9326SJames Henderson Display a summary of command line options.
127e8ed9326SJames Henderson
128e8ed9326SJames Henderson.. option:: -m
129e8ed9326SJames Henderson
130e8ed9326SJames Henderson Equivalent to :option:`--format` with a value of ``darwin``.
131e8ed9326SJames Henderson
132e8ed9326SJames Henderson.. option:: -o
133e8ed9326SJames Henderson
134e8ed9326SJames Henderson Equivalent to :option:`--radix` with a value of ``8``.
135e8ed9326SJames Henderson
136e8ed9326SJames Henderson.. option:: --radix=<value>
137e8ed9326SJames Henderson
138e8ed9326SJames Henderson Display size information in the specified radix. Permitted values are ``8``,
139e8ed9326SJames Henderson ``10`` (the default) and ``16`` for octal, decimal and hexadecimal output
140e8ed9326SJames Henderson respectively.
141e8ed9326SJames Henderson
142e8ed9326SJames Henderson Example:
143e8ed9326SJames Henderson
144e8ed9326SJames Henderson .. code-block:: console
145e8ed9326SJames Henderson
146e8ed9326SJames Henderson  $ llvm-size --radix=8 test.o
147e8ed9326SJames Henderson     text    data     bss     oct     hex filename
148e8ed9326SJames Henderson     0152      04      04     162      72 test.o
149e8ed9326SJames Henderson
150e8ed9326SJames Henderson  $ llvm-size --radix=10 test.o
151e8ed9326SJames Henderson     text    data     bss     dec     hex filename
152e8ed9326SJames Henderson      106       4       4     114      72 test.o
153e8ed9326SJames Henderson
154e8ed9326SJames Henderson  $ llvm-size --radix=16 test.o
155e8ed9326SJames Henderson     text    data     bss     dec     hex filename
156e8ed9326SJames Henderson     0x6a     0x4     0x4     114      72 test.o
157e8ed9326SJames Henderson
158e8ed9326SJames Henderson.. option:: --totals, -t
159e8ed9326SJames Henderson
160e8ed9326SJames Henderson Applies only to ``berkeley`` output format. Display the totals for all listed
161e8ed9326SJames Henderson fields, in addition to the individual file listings.
162e8ed9326SJames Henderson
163e8ed9326SJames Henderson Example:
164e8ed9326SJames Henderson
165e8ed9326SJames Henderson .. code-block:: console
166e8ed9326SJames Henderson
167e8ed9326SJames Henderson  $ llvm-size --totals test.elf test2.o
168e8ed9326SJames Henderson     text    data     bss     dec     hex filename
169e8ed9326SJames Henderson      182      16       5     203      cb test.elf
170e8ed9326SJames Henderson       82       8       1      91      5b test2.o
171e8ed9326SJames Henderson      264      24       6     294     126 (TOTALS)
172e8ed9326SJames Henderson
173e8ed9326SJames Henderson.. option:: --version
174e8ed9326SJames Henderson
175e8ed9326SJames Henderson Display the version of the :program:`llvm-size` executable.
176e8ed9326SJames Henderson
177e8ed9326SJames Henderson.. option:: -x
178e8ed9326SJames Henderson
179e8ed9326SJames Henderson Equivalent to :option:`--radix` with a value of ``16``.
180e8ed9326SJames Henderson
181e8ed9326SJames Henderson.. option:: @<FILE>
182e8ed9326SJames Henderson
183e8ed9326SJames Henderson Read command-line options from response file ``<FILE>``.
184e8ed9326SJames Henderson
185e8ed9326SJames HendersonEXIT STATUS
186e8ed9326SJames Henderson-----------
187e8ed9326SJames Henderson
188e8ed9326SJames Henderson:program:`llvm-size` exits with a non-zero exit code if there is an error.
189e8ed9326SJames HendersonOtherwise, it exits with code 0.
190e8ed9326SJames Henderson
191e8ed9326SJames HendersonBUGS
192e8ed9326SJames Henderson----
193e8ed9326SJames Henderson
194*bbce75e3SChuanqi XuTo report bugs, please visit <https://github.com/llvm/llvm-project/labels/tools:llvm-size/>.
195