LLVM-OTOOL(1)

πŸ’… LLVM-OTOOL(1) β€” the Mach-O dumping tool, bestie edition

okay so welcome to llvm-otool(1) from the LLVM fam β€” this is the manual page, and I'm gonna walk you through it like we're texting at 2am πŸ¦‹


✨ NAME ✨

llvm-otool β€” Mach-O dumping tool. that's it, that's the whole vibe. it dumps Mach-O files. πŸ‘‘


🌸 SYNOPSIS 🌸

llvm-otool [option...] [file...]

options first, files after, everyone gets along. simple. πŸ’œ


πŸŽ€ DESCRIPTION πŸŽ€

so llvm-otool is a tool for dumping Mach-O files. literally its whole personality, and honestly? it ate.

it attempts to be command-line-compatible and output-compatible with macOS's otool. so like, if you already know otool, you already know this. no cap. 🫢


πŸ”₯ OPTIONS πŸ”₯

okay this is the long section, stay with me babe, every single one is here:

  • -arch <value> β€” picks which slice of a universal Mach-O file you want. universal file = many slices, you pick one. ✨
  • -chained_fixups β€” prints chained fixup information.
  • -C β€” prints linker optimization hints. cute little hints.
  • -dyld_info β€” prints bind and rebase information.
  • -D β€” prints the shared library id.
  • -d β€” prints the data section.
  • -f β€” prints the universal headers.
  • -G β€” prints the data-in-code table.
  • --help-hidden β€” prints help for the hidden flags πŸ‘€ the secret menu.
  • --help β€” prints help. the normal menu.
  • -h β€” prints the mach header.
  • -I β€” prints the indirect symbol table.
  • -j β€” prints opcode bytes. raw bytes, no thoughts, head empty πŸ’€
  • -L β€” prints the used shared libraries.
  • -l β€” prints load commands. that's a lowercase L btw, not a one. lowercase L is the busy one here. πŸ™ˆ
  • -mcpu=<value> β€” selects the cpu for disassembly.
  • -o β€” prints the Objective-C segment.
  • -P β€” prints the __TEXT,__info_plist section as strings.
  • -p <function name> β€” starts disassembly at <function name>. so you can jump straight to your fave function, main character energy fr fr.
  • -r β€” prints relocation entries.
  • -s <segname> <sectname> β€” prints the contents of a section. two arguments, not one β€” don't get caught lacking on that.
  • -t β€” prints the text section.
  • --version β€” prints the version.
  • -V β€” symbolizes disassembled operands, and yes it implies -v. you get verbose whether you asked or not, bestie. 😭
  • -v β€” verbose output, and also disassembles when printing text sections.
  • -X β€” omits leading addresses or headers. the ✨minimalist✨ option.
  • -x β€” prints all text sections. all of them. every last one.
  • @<FILE> β€” reads command-line options and commands from the response file <FILE>. like a playlist but for flags 🎧

⭐ EXIT STATUS ⭐

llvm-otool exits with a non-zero exit code if there's an error. otherwise it exits with code 0. so like, zero = she's fine, not-zero = something's up. vibe check passed or failed, no in-between. πŸ’…


πŸ’€ BUGS πŸ’€

found a bug? don't suffer in silence, bestie β€” go report it here:

https://github.com/llvm/llvm-project/labels/tools:llvm-objdump/

(that link got a lil line-broken in the original, but it's one URL, i promise 🫢)


🌈 SEE ALSO 🌈

go read those too, they're literally cousins of this one. iykyk. 🧚


πŸ‘‘ AUTHOR πŸ‘‘

maintained by the LLVM Team (https://llvm.org/). iconic behavior honestly.


2003-2025, LLVM Project


and that's the whole page, bestie β€” every flag, every path, every section, nothing skipped. you're basically an otool expert now. πŸ“

kisses, and remember: this was page 19 of the LLVM manual set, dated 2025-01-17, from the LLVM source β€” see you in the next manpage, mwah πŸ’‹πŸŒΈ

πŸ“¦ where this page comes from