llvm-size - print size information
==================================

.. program:: llvm-size

SYNOPSIS
--------

:program:`llvm-size` [*options*] [*input...*]

DESCRIPTION
-----------

:program:`llvm-size` is a tool that prints size information for binary files.
It is intended to be a drop-in replacement for GNU's :program:`size`.

The tool prints size information for each ``input`` specified. If no input is
specified, the program prints size information for ``a.out``. If "``-``" is
specified as an input file, :program:`llvm-size` reads a file from the standard
input stream. If an input is an archive, size information will be displayed for
all its members.

OPTIONS
-------

.. option:: -A

 Equivalent to :option:`--format` with a value of ``sysv``.

.. option:: --arch=<arch>

 Architecture(s) from Mach-O universal binaries to display information for.

.. option:: -B

 Equivalent to :option:`--format` with a value of ``berkeley``.

.. option:: --common

 Include ELF common symbol sizes in bss size for ``berkeley`` output format, or
 as a separate section entry for ``sysv`` output. If not specified, these
 symbols are ignored.

.. option:: --exclude-pagezero

 Do not include the ``__PAGEZERO`` segment when calculating size information
 for Mach-O files. The ``__PAGEZERO`` segment is a virtual memory region used
 for memory protection that does not contribute to actual size, and excluding
 can provide a better representation of actual size.

.. option:: -d

 Equivalent to :option:`--radix` with a value of ``10``.

.. option:: -l

 Display verbose address and offset information for segments and sections in
 Mach-O files in ``darwin`` format.

.. option:: --format=<format>

 Set the output format to the ``<format>`` specified. Available ``<format>``
 options are ``berkeley`` (the default), ``sysv`` and ``darwin``.

 Berkeley output summarises text, data and bss sizes in each file, as shown
 below for a typical pair of ELF files:

 .. code-block:: console

  $ 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

 For Mach-O files, the output format is slightly different:

 .. code-block:: console

  $ 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 output displays size and address information for most sections, with each
 file being listed separately:

 .. code-block:: console

  $ 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`` format only affects Mach-O input files. If an input of a different
 file format is specified, :program:`llvm-size` falls back to ``berkeley``
 format. When producing ``darwin`` format, the tool displays information about
 segments and sections:

 .. code-block:: console

  $ 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

.. option:: --help, -h

 Display a summary of command line options.

.. option:: -m

 Equivalent to :option:`--format` with a value of ``darwin``.

.. option:: -o

 Equivalent to :option:`--radix` with a value of ``8``.

.. option:: --radix=<value>

 Display size information in the specified radix. Permitted values are ``8``,
 ``10`` (the default) and ``16`` for octal, decimal and hexadecimal output
 respectively.

 Example:

 .. code-block:: console

  $ 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

.. option:: --totals, -t

 Applies only to ``berkeley`` output format. Display the totals for all listed
 fields, in addition to the individual file listings.

 Example:

 .. code-block:: console

  $ 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)

.. option:: --version

 Display the version of the :program:`llvm-size` executable.

.. option:: -x

 Equivalent to :option:`--radix` with a value of ``16``.

.. option:: @<FILE>

 Read command-line options from response file ``<FILE>``.

EXIT STATUS
-----------

:program:`llvm-size` exits with a non-zero exit code if there is an error.
Otherwise, it exits with code 0.

BUGS
----

To report bugs, please visit <https://github.com/llvm/llvm-project/labels/tools:llvm-size/>.
