LLVM-SIZE(1)

πŸ’– llvm-size β€” bestie's guide to size info πŸ’–

okay so this is the manual page for llvm-size, part of the LLVM toolchain, and it's literally just here to tell you how big stuff is. welcome to the group chat, pull up a chair 🫢


✨ NAME ✨

llvm-size β€” print size information πŸ‘‘


🌸 SYNOPSIS 🌸

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

πŸ¦‹ DESCRIPTION πŸ¦‹

so llvm-size is that girl β€” she prints size information for binary files. she's designed to be a drop-in replacement for GNU's size, so if you're switching over, no cap, she'll slot right in πŸ’…

she prints size info for every input you hand her. if you hand her nothing, she'll just go ahead and print info for a.out (iconic default behaviour, honestly).

if you pass - as an input file, she reads a file straight from the standard input stream. and if one of your inputs is an archive, she'll show size info for all its members β€” every single one, we're not leaving anyone out πŸŽ€


πŸ’… OPTIONS πŸ’…

  • -A β€” same thing as --format with a value of sysv. that's it, that's the whole vibe.
  • --arch=<arch> β€” which architecture(s) from Mach-O universal binaries you want info for.
  • -B β€” equivalent to --format with a value of berkeley.
  • --common β€” include ELF common symbol sizes in the bss size for berkeley output, or as its own separate section entry for sysv output. if you don't say it, those symbols get ignored entirely πŸ™ˆ
  • -d β€” equivalent to --radix with a value of 10.
  • -l β€” display verbose address and offset info for segments and sections in Mach-O files, in darwin format. she's chatty like that πŸ’¬
  • --format=<format> β€” set the output format to whatever <format> you want. available 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 info 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 give it an input of a different file format, llvm-size falls back to berkeley format. when producing darwin format, the tool displays info 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 the command line options. bestie needs a cheat sheet sometimes 😌
  • -m β€” equivalent to --format with a value of darwin.
  • -o β€” equivalent to --radix with a value of 8.
  • --radix=<value> β€” display size info in the radix you specify. 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 β€” only applies to berkeley output format. displays the totals for all listed fields, on top of the individual file listings. group project energy, but the good kind πŸ«‚

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. slay, what version are we πŸ’œ
  • -x β€” equivalent to --radix with a value of 16.
  • @<FILE> β€” read command line options from the response file <FILE>.

🌈 EXIT STATUS 🌈

llvm-size exits with a non-zero exit code if there's an error. otherwise she exits with code 0 β€” clean, no drama, periodt ✨


πŸ’€ BUGS πŸ’€

to report bugs, please visit https://github.com/llvm/llvm-project/labels/tools:llvm-size/. (yes we do want to hear about it, no we're not mad πŸ₯Ί)


πŸ‘‘ AUTHOR πŸ‘‘

maintained by the LLVM Team (https://llvm.org/). absolute icons, fr fr.


2003-2025, LLVM Project


and that's the whole page, bestie!! this was LLVM's llvm-size manual, version 20, dated 2025-09-03 🌸 go forth and measure things, you've got this πŸ’–πŸ¦‹βœ¨

πŸ“¦ where this page comes from