LLVM-OBJDUMP(1)
π LLVM-OBJDUMP π
okay bestie, so this is llvm-objdump, from the LLVM manual set (section 1, so it's a user command, iykyk). She's LLVM's object file dumper and she's literally the main character of your binary-inspection era. Let's get into it π
β¨ NAME β¨
llvm-objdump β LLVM's object file dumper. That's it, that's the whole name. Iconic behavior, minimal introduction. π
πΈ SYNOPSIS πΈ
llvm-objdump [commands] [options] [filenames...]
π¦ DESCRIPTION π¦
So llvm-objdump prints out the contents of object files and final linked images, and you literally just name them on the command line. Obsessed.
If you don't give her a file name at all? She'll lowkey try to read from a.out. Yeah, just a.out, no thoughts. π
And if you use - as a file name? She'll process a file straight from her standard input stream. Slay, stdin representation. β¨
π COMMANDS π
Okay so at least one of these commands is required β like, you can't just vibe in there with nothing. And some of them can be combined with other commands, which is honestly so generous of her. π
-a,--archive-headersβ Displays all the info living inside an archive's headers. Peek inside the box, bestie.-d,--disassembleβ Disassembles every executable section found in the input files. On some architectures (AArch64,PowerPC,x86), literally all known instructions get disassembled by default. On the others, you'll need--mcpuor--mattrto unlock some instruction sets β and the disabled instructions show up as<unknown>(the saddest little placeholder, no cap). π-D,--disassemble-allβ Disassembles all sections found in the input files. All of them. She's not picking favorites.--disassemble-symbols=<symbol1[,symbol2,...]>β Disassembles only the symbols you name. Heads up: it takes demangled symbol names when you specify--demangle, otherwise it takes mangled symbol names. Implies--disassemble. Selective queen. π--dwarf=<value>β Dumps the DWARF debug sections you name. The supported values are:framesβ.debug_frame
-f,--file-headersβ Displays the contents of the overall file header. The big picture, fr fr.--fault-map-sectionβ Displays the content of the fault map section. π«Ά-h,--headers,--section-headersβ Displays summaries of the headers for each section. Little header summaries for each section, cute.--helpβ Displays usage information and exits. Does not stack with other commands β she needs her alone time for this one. π-p,--private-headersβ Displays format-specific file headers. Spicy, format-specific details.-r,--relocβ Displays the relocation entries in the file.-R,--dynamic-relocβ Displays the dynamic relocation entries in the file. Different reloc energy entirely.--raw-clang-astβ Dumps the raw binary contents of the clang AST section. Raw. Unfiltered. π«£-s,--full-contentsβ Displays the contents of each section. Everything, out in the open.-t,--symsβ Displays the symbol table.-T,--dynamic-symsβ Displays the contents of the dynamic symbol table. β¨dynamicβ¨-u,--unwind-infoβ Displays the unwind info of the input(s).
Heads up bestie: this operation is only currently supported forCOFFandMach-Oobject files. So if your file's in another format, she can't help you here π
-v,--versionβ Displays the version of thellvm-objdumpexecutable. Does not stack with other commands β she's not multitasking during a version check.-x,--all-headersβ Displays all available header information. It's equivalent to specifying--archive-headers,--file-headers,--private-headers,--reloc,--section-headers, and--symsall at once. Combo move. π₯
β¨ OPTIONS β¨
llvm-objdump supports the following options, and honestly, there are so many of them. Let's go π
--adjust-vma=<offset>β Increases the displayed address in disassembly or section header printing by the offset you specify. Shift it, bestie.--arch-name=<string>β Specifies the target architecture when disassembling. Use--versionfor a list of available targets. Pick your fighter. π--build-id=<string>β Looks up the object using the given build ID, specified as a hexadecimal string. The found object is handled as if it were an input filename. Sneaky but valid.-C,--demangleβ Demangles symbol names in the output. Names that actually make sense? Groundbreaking. β¨--debug-file-directory <path>β Provides a path to a directory with a.build-idsubdirectory, to search for debug information for stripped binaries. Multiple instances of this argument are searched in the order given β so order matters, fr fr.--debuginfod,--no-debuginfodβ Whether or not to try debuginfod lookups for debug binaries. Unless it's specified, debuginfod is only enabled if libcurl was compiled in (LLVM_ENABLE_CURL) and at least one server URL was provided by the environment variableDEBUGINFOD_URLS. Two conditions, no shortcuts. π«Ά--debug-vars=<format>β Prints the locations (in registers or memory) of source-level variables alongside disassembly. format may beunicodeorascii, and it defaults tounicodeif omitted. Fancy by default, obviously. π--debug-vars-indent=<width>β The distance to indent the source-level variable display, relative to the start of the disassembly. Defaults to52characters. Very specific, very deliberate.-j,--section=<section1[,section2,...]>β Performs commands on the specified sections only. ForMach-O, usesegment,sectionto specify the section name. Precision vibes. π―-l,--line-numbersβ When disassembling, displays source line numbers. Implies--disassemble. Now you know exactly where you are.-M,--disassembler-options=<opt1[,opt2,...]>β Passes target-specific disassembler options. The available options are:reg-names-stdβARMonly (default). Prints in ARM's instruction set documentation format, withr13/r14/r15replaced bysp/lr/pc.reg-names-rawβARMonly. Usesrfollowed by the register number.no-aliasesβAArch64andRISC-Vonly. Prints the raw instruction mnemonic instead of the pseudo instruction mnemonic.numericβRISC-Vonly. Prints raw register names instead of ABI mnemonic (e.g. printsx1instead ofra).attβx86only (default). Prints in the AT&T syntax.intelβx86only. Prints in the intel syntax.
--disassembler-color=<mode>β Enables or disables disassembler color output. The modes are:offβ Disable disassembler color output.onβ Enable disassembler color output.terminalβ Enable disassembler color output if the terminal supports it (default). She checks first, she's polite. πΈ
--mcpu=<cpu-name>β Targets a specific CPU type for disassembly. Specify--mcpu=helpto display available CPUs. Window shopping but for CPUs.--mattr=<a1,+a2,-a3,...>β Enables/disables target-specific attributes. Specify--mattr=helpto display the available attributes. The+/-signs are literally doing the enabling/disabling, love that for them.-mllvm <arg>β Specifies an argument to forward to LLVM's CommandLine library. Hand it off, she'll handle it.--no-leading-addr,--no-addressesβ When disassembling, don't print leading addresses for instructions or inline relocations. Clean, minimal, unbothered.--no-print-imm-hexβ Doesn't use hex format for immediate values in disassembly output. (The--print-imm-hexgirlies are in shambles.)--no-show-raw-insnβ When disassembling, doesn't print the raw bytes of each instruction. Just the mnemonic, no exposed bytes. π--offloadingβ Displays the content of the LLVM offloading sections and HIP offload bundles. Niche but she delivers.--prefix=<prefix>β When disassembling with the--sourceoption, prepends prefix to absolute paths. Path glow-up.--prefix-strip=<level>β When disassembling with the--sourceoption, strips out level initial directories from absolute paths. This option has no effect without--prefixβ so don't come crying to her if you skipped that one. π--print-imm-hexβ Uses hex format when printing immediate values in disassembly output (default). Hex era, we're in it. π₯-S,--sourceβ When disassembling, displays source interleaved with the disassembly. Implies--disassemble. Source and machine code holding hands π«Ά--show-all-symbolsβ Shows all symbols during disassembly, even if multiple symbols are defined at the same location. No hiding, no merging.--show-lmaβ Displays the LMA column when dumping ELF section headers. Defaults to off unless any section has different VMA and LMAs β in which case, she turns it on for you. Considerate.--start-address=<address>β Multi-talented, listen:- When disassembling, only disassembles from the specified address.
- When printing relocations, only prints the relocations patching offsets from at least address.
- When printing symbols, only prints symbols with a value of at least address.
--stop-address=<address>β Same energy, other end of the range:- When disassembling, only disassembles up to, but not including, the specified address.
- When printing relocations, only prints the relocations patching offsets up to address.
- When printing symbols, only prints symbols with a value up to address.
--symbolize-operandsβ When disassembling, symbolizes a branch target operand to print a label instead of a real address. And when printing a PC-relative global symbol reference, prints it as an offset from the leading symbol. π
When a bb-address-map section is present (i.e., the object file is built with -fbasic-block-address-map), labels are retrieved from that section instead. If a pgo-analysis-map is present alongside the bb-address-map, any available analyses are printed after the relevant block label. By default, any analysis with a special representation (i.e. BlockFrequency, BranchProbability, etc) are printed as raw hex values.
Only supported for AArch64, BPF, PowerPC, and X86. Know your limits, bestie.
Example β a non-symbolized branch instruction with a local target and pc-relative memory access like
cmp eax, dword ptr [rip + 4112]
jge 0x20117e <_start+0x25>
might become
<L0>:
cmp eax, dword ptr <g>
jge <L0>
Literally a glow-up. β¨
--pretty-pgo-analysis-mapβ When using--symbolize-operandswithbb-address-mapandpgo-analysis-map, prints analyses using the same format as their analysis passes would. An example of the pretty format would be printing block frequencies relative to the entry block, the same asBFI. π
Only works when --symbolize-operands is enabled. Like, that's the whole prerequisite. Don't skip it.
--triple=<string>β The target triple to disassemble for; see--versionfor available targets.-w,--wideβ Ignored, purely for compatibility with GNU objdump. She's just being nice about it. π--x86-asm-syntax=<style>β Deprecated. When used with--disassemble, chooses the style of code to emit from the X86 backend. The supported values are:attβ AT&T-style assemblyintelβ Intel-style assembly
The default disassembly style is att. (Deprecated, so, like, use it knowing that. π)
-z,--disassemble-zeroesβ Do not skip blocks of zeroes when disassembling. Zeroes deserve screen time too.@<FILE>β Reads command-line options and commands from response file <FILE>. Batching, but make it command line. π¦
π MACH-O ONLY OPTIONS AND COMMANDS π
Mach-O besties, this whole little universe is yours β these commands and options are Mach-O specific, so keep that in mind and letβs go β¨
--arch=<architecture>β says which architecture to disassemble. Peep--versionfor the available architectures, no cap.--archive-member-offsetsβ prints the offset to each archive member for Mach-O archives. It requires--archive-headers, so donβt forget that bestie.--bindβ displays binding info π--data-in-codeβ displays the data in code table.--dis-symname=<name>β disassembles just the specified symbolβs instructions.--chained-fixupsβ prints chained fixup information.--dyld-infoβ prints bind and rebase information used by dyld to resolve external references in a final linked binary.--dylibs-usedβ displays the shared libraries used for linked files.--dsym=<string>β uses a.dSYMfile for debug info.--dylib-idβ displays the shared libraryβs ID for dylib files.--exports-trieβ displays exported symbols.--function-starts [=<addrs|names|both>]β prints the function starts table for Mach-O objects. Useaddrs(the default) to print only the addresses of functions,namesto print only the names of the functions (when available), orbothto print the names beside the addresses.-gβ prints line information from debug info if available.--full-leading-addrβ prints the full leading address when disassembling.--indirect-symbolsβ displays the indirect symbol table.--info-plistβ displays the info plist section as strings.--lazy-bindβ displays lazy binding info.--link-opt-hintsβ displays the linker optimization hints.-m,--machoβ uses the Mach-O specific object file parser. Commands and other options may behave differently when used with--macho.--no-leading-headersβ does not print any leading headers.--no-symbolic-operandsβ does not print symbolic operands when disassembling.--non-verboseβ displays the information for Mach-O objects in non-verbose or numeric form.--objc-meta-dataβ displays the Objective-C runtime meta data.--private-headerβ displays only the first format specific file header.--rebaseβ displays rebasing information.--rpathsβ displays runtime search paths for the binary.--universal-headersβ displays universal headers.--weak-bindβ displays weak binding information.
πΈ XCOFF ONLY OPTIONS AND COMMANDS πΈ
XCOFF crew, these two are for you β short and iconic π
--symbol-descriptionβ adds symbol description to disassembly output.--traceback-tableβ decodes traceback table in disassembly output. Implies--disassemble.
π BUGS π
To report bugs, please visit https://github.com/llvm/llvm-project/labels/tools:llvm-objdump/ π«Ά
π SEE ALSO π
llvm-nm(1) <llvm-nm.html>llvm-otool(1) <llvm-otool.html>llvm-readelf(1) <llvm-readelf.html>llvm-readobj(1) <llvm-readobj.html>
π Author π
Maintained by the LLVM Team (https://llvm.org/) π§
π Copyright π
2003-2026, LLVM Project π
okay thatβs a wrap on page 21 of LLVM-OBJDUMP(1), dated 2026-05-15 β mwah πβ¨
π¦ where this page comes from
- fedora 44: llvm21 21.1.8-5.fc44 Β· Apache-2.0 WITH LLVM-exception OR NCSA
- fedora 44: llvm21 21.1.8-5.fc44 Β· 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