LLVM-SIZE(1)
π LLVM-SIZE(1) β the manual, but make it make sense
okay so welcome to llvm-size, bestie. this is the llvm-size(1) page from the LLVM crew, and yes i'm gonna walk you through the whole thing like we're on facetime. it prints size information for binary files. that's it, that's the vibe. it's intended to be a drop-in replacement for GNU's size, so if you're coming from there: hi, welcome, nothing's gonna break. π«Ά
β¨ SYNOPSIS β¨
llvm-size [options] [input...]
like, options, then as many inputs as you want. we love a flexible icon. π
πΈ DESCRIPTION πΈ
llvm-size is a tool that prints size information for binary files. it is intended to be a drop-in replacement for GNU's size. no cap.
the tool prints size information for each input specified. and listen β the defaults matter here:
- if no input is specified, the program prints size information for
a.out. yes,a.out. it's giving vintage, but that's the deal. π - if
-is specified as an input file,llvm-sizereads a file from the standard input stream. cute. stdin stays booked and busy. - if an input is an archive, size information will be displayed for all its members. every single one. the whole group chat gets a mention. π
π OPTIONS π
okay this is the main character section, let's go.
-Aβ equivalent to--formatwith a value ofsysv. that's it. that's the whole flag.--arch=<arch>β architecture(s) from Mach-O universal binaries to display information for. (universal binaries are the ones carrying multiple architectures, and you're picking which ones get to speak.) π¦-Bβ equivalent to--formatwith a value ofberkeley.--commonβ include ELF common symbol sizes in the bss size forberkeleyoutput format, or as a separate section entry forsysvoutput. if you don't specify this, these symbols are ignored. lowkey important: leave it off and your bss might look smaller than reality.--exclude-pagezeroβ do not include the__PAGEZEROsegment when calculating size information for Mach-O files. why would you want that? because the__PAGEZEROsegment is a virtual memory region used for memory protection that does not contribute to actual size, and excluding it can provide a better representation of actual size. so it's the "real numbers only" toggle. β¨-dβ equivalent to--radixwith a value of10.-lβ display verbose address and offset information for segments and sections in Mach-O files indarwinformat. the verbose one. the lore-dropper. π--format=<format>β set the output format to the<format>specified. available<format>options areberkeley(the default),sysvanddarwin. three formats, three personalities, one flag. let me break it down:
berkeley output summarises text, data and bss sizes in each file, as shown below 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 being 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 an input of a different file format is specified, 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. your little emergency exit when you forget everything. π-mβ equivalent to--formatwith a value ofdarwin.-oβ equivalent to--radixwith a value of8.--radix=<value>β display size information in the specified radix. permitted values are8,10(the default) and16for octal, decimal and hexadecimal output respectively. pick your numeral aesthetic:
$ 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 toberkeleyoutput format. display the totals for all listed fields, in addition to the individual file listings. the sum at the bottom, the grand finale:
$ 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 thellvm-sizeexecutable. flex the build, bestie.-xβ equivalent to--radixwith a value of16.@<FILE>β read command-line options from response file<FILE>. so you can stash your flags in a file and just point at it. very "i pre-wrote my text, i'm not typing it live." π
friendly reminder:--formattakesberkeley,sysvordarwin, and--radixtakes8,10or16. don't get cute with other values, that's not the assignment.
π₯ EXIT STATUS π₯
llvm-size exits with a non-zero exit code if there is an error. otherwise, it exits with code 0. clean exit = slay. error = not slay, but at least your scripts can tell the difference. β¨
π BUGS π
to report bugs, please visit <https://github.com/llvm/llvm-project/labels/tools:llvm-size/>.
like, actually visit it. don't just complain in the group chat. π
π§ AUTHOR π§
maintained by the LLVM Team (https://llvm.org/). the whole squad. π«Ά
π COPYRIGHT π
2003-2026, LLVM Project
okay that's the whole page, no details skipped, we ate and left no crumbs. π
sign-off tea: this page is source LLVM, page LLVM-SIZE(1), dated 2026-10-06, and it's page number 23 of that set. go print some sizes, bestie. π¦ππ
π¦ where this page comes from
- centos-stream 9: llvm 23.1.3-1.el9 Β· Apache-2.0 WITH LLVM-exception OR NCSA
- centos-stream 9: llvm 23.1.3-1.el9 Β· Apache-2.0 WITH LLVM-exception OR NCSA
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms