LLVM-SIZE(1)

πŸ’– llvm-size β€” print size information πŸ’–

okay bestie, pull up a chair, we're doing llvm-size from the LLVM fam and it's literally the glow-up of GNU's size. 🫢

✨ SYNOPSIS ✨

llvm-size [options] [input...]

🌸 DESCRIPTION 🌸

So llvm-size is that tool that prints size information for binary files, and no cap it's built to be a drop-in replacement for GNU's size. Same energy, better vibes. πŸ’…

It prints size info for every input you hand it. And if you hand it nothing? Chill, it just prints size info for a.out. If you pass - as an input file, it reads a file straight from the standard input stream. And if one of your inputs is an archive? Obsessed β€” it displays size information for all of its members. every single one. periodt.


πŸ‘‘ OPTIONS πŸ‘‘

  • -A β€” Equivalent to --format with a value of sysv.
  • --arch=<arch> β€” Architecture(s) from Mach-O universal binaries to display information for.
  • -B β€” Equivalent to --format with a value of berkeley.
  • --common β€” Include ELF common symbol sizes in bss size for berkeley output format, or as a separate section entry for sysv output. If you don't specify it, those symbols just get ignored, bestie. πŸ™ˆ
  • --exclude-pagezero β€” Do not include the __PAGEZERO segment when calculating size information for Mach-O files. __PAGEZERO is a virtual memory region used for memory protection that does not contribute to actual size, so excluding it can give you a better representation of actual size. ✨
  • -d β€” Equivalent to --radix with a value of 10.
  • -l β€” Display verbose address and offset information for segments and sections in Mach-O files in darwin format.
  • --format=<format> β€” Set the output format to the <format> you specify. Available <format> options are berkeley (the default), sysv and darwin.

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

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

   $ 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 listed separately:

   $ 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 you feed it an input of a different file format, llvm-size falls back to berkeley format. When producing darwin format, the tool displays information about segments and sections:

   $ 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 β€” Display a summary of command line options.
  • -m β€” Equivalent to --format with a value of darwin.
  • -o β€” Equivalent to --radix with a value of 8.
  • --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:

   $ 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 β€” Applies only to berkeley output format. Display the totals for all listed fields, in addition to the individual file listings. slay.

Example:

   $ 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 β€” Display the version of the llvm-size executable.
  • -x β€” Equivalent to --radix with a value of 16.
  • @<FILE> β€” Read command-line options from response file <FILE>.

πŸ¦‹ EXIT STATUS πŸ¦‹

llvm-size exits with a non-zero exit code if there's an error. Otherwise? It exits with code 0. clean. ✨

πŸ’€ BUGS πŸ’€

To report bugs, please visit <https://github.com/llvm/llvm-project/labels/tools:llvm-size/>. (yes bestie, go tell them, they wanna know πŸ‘‘)

πŸŽ€ Author πŸŽ€

Maintained by the LLVM Team (https://llvm.org/).

2003-2026, LLVM Project


and that's the whole page, no notes 🫢 this came out of the LLVM fam, dated 2026-07-16, and it's giving iconic. go print some sizes, you got this πŸ’…βœ¨πŸŒΈ

πŸ“¦ where this page comes from