LLVM-OBJDUMP(1)

πŸ’… LLVM-OBJDUMP(1) β€” the manual page for llvm-objdump, bestie edition πŸŽ€

okay so. welcome to the llvm-objdump manual page, which is genuinely one of the most useful little gremlins in the LLVM toolbox and I'm obsessed. it's a user command, it lives in section 1, and it's about to tell you literally everything about the inside of an object file. grab a snack. πŸ“


✨ NAME ✨

llvm-objdump β€” manual page for llvm-objdump 14, the iconic little dumper that peers inside your object files and tells you what's up. πŸ‘‘


🌸 DESCRIPTION 🌸

OVERVIEW: llvm object file dumper β€” that's the whole vibe. it dumps object files. that's the job. πŸ’–

USAGE:

llvm-objdump [options] <input object files>

yeah so you hand it some input object files and some options and it goes to work. no cap.


πŸ¦‹ OPTIONS: πŸ¦‹

here's every single flag, bestie, no skipping, no summarising, we are thorough in this household. πŸ’…

  • --adjust-vma=offset β€” bumps up the displayed address by the offset you give it. like a little address glow-up. ✨
  • --all-headers β€” shows you everything: all available header info, the relocation entries, and the symbol table. the full package. 🎁
  • --arch-name=<value> β€” the target arch you wanna disassemble for. not sure what's available? check --version for the list of targets. πŸ”
  • --archive-headers β€” displays archive header information. archives get headers too, and they deserve to be seen. πŸ“š
  • -a β€” alias for --archive-headers.
  • -C β€” alias for --demangle.
  • --debug-vars-indent=<value> β€” how far to indent the source-level variable display, measured relative to the start of the disassembly. aesthetic spacing, basically. πŸ“
  • --debug-vars=<value> β€” prints the locations (in registers or memory, iykyk) of source-level variables right alongside the disassembly. supported formats: ascii, unicode (that one's the default). 🌈
  • --demangle β€” demangles symbol names so they stop looking like alphabet soup. 😭
  • --disassemble-all β€” disassembles all sections found in the input files. all of them. every single one. go off. πŸ”₯
  • --disassemble-symbols=<value> β€” a list of symbols to disassemble. if --demangle is specified, it accepts demangled names; otherwise it accepts mangled names. read the room (and the flag). 🫢
  • --disassemble-zeroes β€” don't skip blocks of zeroes when disassembling. zeroes are content too. βœ‹
  • --disassembler-options=options β€” pass through target specific disassembler options. target specific, so it's giving "you had to be there." πŸ’«
  • --disassemble β€” disassembles all executable sections found in the input files. (note: executable ones only, unlike its chaotic sibling above.) ⚑
  • --dwarf=<value> β€” dumps the specified DWARF debug sections. the only supported value is 'frames'. just the one, bestie, don't get creative. 🧚
  • --dynamic-reloc β€” displays the dynamic relocation entries in the file.
  • --dynamic-syms β€” displays the contents of the dynamic symbol table.
  • -D β€” alias for --disassemble-all.
  • -d β€” alias for --disassemble.
  • --fault-map-section β€” displays the content of the fault map section.
  • --file-headers β€” displays the contents of the overall file header. the big one. the main character. πŸ‘‘
  • --full-contents β€” displays the content of each section. all the bytes, laid bare. 🫣
  • -f β€” alias for --file-headers.
  • --headers β€” alias for --section-headers.
  • --help β€” display available options (and --help-hidden if you want more, you absolute completionist). πŸ™ˆ
  • -h β€” alias for --section-headers.
  • -j <value> β€” alias for --section.
  • --line-numbers β€” when disassembling, displays source line numbers. implies --disassemble. πŸ”’
  • -l β€” alias for --line-numbers.
  • --macho β€” use the MachO specific object file parser. 🍎
  • --mattr=a1,+a2,-a3,... β€” target specific attributes. need details? --mattr=help has your back. πŸ’œ
  • --mcpu=cpu-name β€” target a specific cpu type. again, --mcpu=help for the details.
  • -M <value> β€” alias for --disassembler-options=.
  • -m β€” alias for --macho.
  • --no-leading-addr β€” when disassembling, do not print leading addresses. sleek and minimal, lowkey.
  • --no-print-imm-hex β€” do not use hex format for immediate values. this is the default. 🧊
  • --no-show-raw-insn β€” when disassembling instructions, do not print the instruction bytes. (yes, there's a period at the end of that one in the original. I'm keeping it. respect the punctuation.) πŸ’€
  • --prefix-strip=prefix β€” strips out initial directories from absolute paths. no effect without --prefix, so don't be shocked when nothing happens.
  • --prefix=prefix β€” adds a prefix to absolute paths.
  • --print-imm-hex β€” use hex format for immediate values.
  • --private-headers β€” displays format specific file headers. πŸ”’
  • -p β€” alias for --private-headers.
  • --raw-clang-ast β€” dumps the raw binary contents of the clang AST section. raw. unfiltered. feral. 🐾
  • --reloc β€” displays the relocation entries in the file.
  • -R β€” alias for --dynamic-reloc.
  • -r β€” alias for --reloc.
  • --section-headers β€” displays summaries of the headers for each section. (period included, it's part of the fit.) ✨
  • --section=<value> β€” operate on the specified sections only. with --macho, dump segment,section. 🎯
  • --show-lma β€” displays the LMA column when dumping ELF section headers.
  • --source β€” when disassembling, displays source interleaved with the disassembly. implies --disassemble. the crossover episode we all wanted. πŸ“Ί
  • --start-address=address β€” sets the start address for disassembling, printing relocations and printing symbols.
  • --stop-address=address β€” sets the stop address for disassembling, printing relocations and printing symbols. πŸ›‘
  • --symbol-description β€” adds symbol description for disassembly. this option is for XCOFF files only, so if you're not in XCOFF land, it's not for you.
  • --symbolize-operands β€” symbolizes instruction operands when disassembling. πŸ’«
  • --syms β€” displays the symbol table.
  • -S β€” alias for --source.
  • -s β€” alias for --full-contents.
  • --triple=<value> β€” target triple to disassemble for. peep --version for the available targets. 🌍
  • -T β€” alias for --dynamic-syms.
  • -t β€” alias for --syms.
  • --unwind-info β€” displays unwind information. πŸŒ€
  • -u β€” alias for --unwind-info.
  • --version β€” displays the version of this program.
  • -v β€” alias for --version.
  • --wide β€” ignored, for compatibility with GNU objdump. it's just here to be polite. πŸ™
  • --x86-asm-syntax=att β€” emit AT&T-style disassembly.
  • --x86-asm-syntax=intel β€” emit Intel-style disassembly. pick your fighter. πŸ₯Š
  • -x β€” alias for --all-headers.
  • -z β€” alias for --disassemble-zeroes.

🍎 llvm-objdump MachO Specific Options: 🍎

this whole subsection is the Mach-O cinematic universe, bestie. several of these require --macho, and I'm flagging every single one. 🚩

  • --arch=<value> β€” architecture(s) from a Mach-O file to dump. yes, plural, you can be greedy.
  • --archive-member-offsets β€” prints the offset to each archive member for Mach-O archives. requires --macho and --archive-headers. two prerequisites, one flag, commitment. πŸ’ͺ
  • --bind β€” display mach-o binding info.
  • --data-in-code β€” prints the data in code table for Mach-O objects. requires --macho.
  • --dis-symname <value> β€” disassemble just this symbol's instructions. requires --macho.
  • --dsym=<value> β€” use a .dSYM file for debug info. πŸ”
  • --dylib-id β€” prints the shared library's id for the dylib Mach-O file. requires --macho.
  • --dylibs-used β€” prints the shared libraries used for linked Mach-O files. requires --macho.
  • --exports-trie β€” display mach-o exported symbols.
  • --full-leading-addr β€” print full leading address. no truncation here. πŸ‘‘
  • --function-starts β€” prints the function starts table for Mach-O objects. requires --macho.
  • -g β€” print line information from debug info if available.
  • --indirect-symbols β€” prints the indirect symbol table for Mach-O objects. requires --macho.
  • --info-plist β€” prints the info plist section as strings for Mach-O objects. requires --macho.
  • --lazy-bind β€” display mach-o lazy binding info. 😴
  • --link-opt-hints β€” prints the linker optimization hints for Mach-O objects. requires --macho.
  • --no-leading-headers β€” print no leading headers.
  • --no-symbolic-operands β€” do not symbolic operands when disassembling. requires --macho. (yes, the wording is a little cursed, I'm reproducing it faithfully, don't @ me. πŸ’€)
  • --non-verbose β€” prints the info for Mach-O objects in non-verbose or numeric form. requires --macho.
  • --objc-meta-data β€” prints the Objective-C runtime meta data for Mach-O files. requires --macho.
  • --private-header β€” displays only the first format specific file header. just the one. singular. βœ‹
  • --rebase β€” display mach-o rebasing info.
  • --rpaths β€” prints the runtime search paths for the Mach-O file. requires --macho.
  • --universal-headers β€” prints Mach-O universal headers. requires --macho.
  • --weak-bind β€” display mach-o weak binding info.
πŸ’– also: pass @FILE as an argument to read options from FILE. cute little indirection, isn't it.

and that's the whole page, bestie!! llvm-objdump 14, dated May 2025 β€” go forth and dump some object files, you absolute icon. mwah. πŸ’…βœ¨πŸŽ€πŸ¦‹πŸ’–

πŸ“¦ where this page comes from