OTOOL-CLASSIC(1)
π OTOOL-CLASSIC(1) π
okay bestie, meet otool-classic, straight out of the General Commands Manual. it's the object file displaying tool and it's about to make your object files and libraries make sense. iykyk. π«Ά
β¨ NAME β¨
otool-classic β object file displaying tool. periodt.
πΈ SYNOPSIS πΈ
otool-classic [ option ... ] [ file ... ]
π¦ DESCRIPTION π¦
otool-classic displays the specified parts of object files or libraries. It is literally the preferred tool for inspecting Mach-O binaries, especially when those binaries are bad, corrupted, or fuzzed. π It's also useful in situations when inspecting files with new or "bleeding-edge" Mach-O file format changes.
For historical reasons, the LLVM-based llvm-objdump(1) tool does support displaying Mach-O information in an "otool-compatibility" mode. For more information on using llvm-objdump(1) in this way, see the llvm-otool(1) command-line shim.
heads up: llvm-objdump(1) is incapable of displaying information in all Mach-O files. not every file gets the full main-character treatment, okay? π
If the -m option is not used, the file arguments may be of the form libx.a(foo.o), to request information about only that object file and not the entire library. (Typically this argument must be quoted, libx.a(foo.o), to get it past the shell.) otool-classic understands both Mach-O (Mach object) files and universal file formats. otool-classic can display the specified information in either its raw (numeric) form (without the -v flag), or in a symbolic form using macro names of constants, etc. (with the -v or -V flag).
At least one of the following options must be specified:
-aβ display the archive header, if the file is an archive.-Sβ display the contents of the__.SYMDEFfile, if the file is an archive.-fβ display the universal headers.-hβ display the Mach header.-lβ display the load commands.-Lβ display the names and version numbers of the shared libraries that the object file uses, as well as the shared library ID if the file is a shared library.-Dβ display just the install name of a shared library. Seeinstall_name_tool(1)for more info.-s segname sectnameβ display the contents of the section (segname,sectname). If the-vflag is specified, the section is displayed as its type, unless the type is zero (the section header flags). Also the sections (__OBJC,__protocol), (__OBJC,__string_object) and (__OBJC,__runtime_setup) are displayed symbolically if the-vflag is specified. For unknown section types, if the-Vflag is specified, the contents of the section are displayed in a canonical hex+ASCII display, where a column of hexadecimal values print alongside a column of ASCII characters.-tβ display the contents of the (__TEXT,__text) section. With the-vflag, this disassembles the text. With the-Vflag, it also symbolically disassembles the operands.-xβ display the contents of every__textsection found in the file. This is useful when looking at the Mach kernel and other files with__textsections in more than one segment, or where the__textsection is somewhere other than__TEXT. When used with the-vflag, this disassembles the text. When used with the-Vflag, it also symbolically disassembles the operands.-dβ display the contents of the (__DATA,__data) section.-oβ display the contents of the__OBJCsegment used by the Objective-C run-time system.-rβ display the relocation entries.-cβ display the argument strings (argv[]andenvp[]) from a core file.-Iβ display the indirect symbol table.-Tβ display the table of contents for a dynamically linked shared library.-Rβ display the reference table of a dynamically linked shared library.-Mβ display the module table of a dynamically linked shared library.-Hβ display the two-level namespace hints table.-Gβ display the data in code table.-Cβ display the linker optimization hints (-vfor verbose mode can also be added).-Pβ print the info plist section, (__TEXT,__info_plist), as strings.-dyld_infoβ print bind and rebase information used by dyld to resolve external references in a final linked binary.-dyld_opcodesβ print raw dyld bind and rebase opcodes present in a final linked binary. These opcodes are stored in a region pointed to byLC_DYLD_INFO*load commands.-show-latencyβ when doing disassembly, print latency annotations for instructions.-chained_fixupsβ print raw chained fixup data present in a final linked binary built with chained fixups. The chained fixup data are stored either in a region pointed to by theLC_DYLD_CHAINED_FIXUPSload command or in a (__TEXT,__chain_starts) section. This data includes the fixup chain's starting location on each page by segment and symbol information for each bind. Use the-dyld_infooption to see the individual links in each chain.
The following options may also be given:
-jβ when doing disassembly, print the opcode bytes of the instructions.-mβ the object file names are not assumed to be in thearchive(member)syntax, which allows file names containing parenthesis.-p nameβ used with the-tand-vor-Voptions to start the disassembly from symbol name and continue to the end of the (__TEXT,__text) section. This option can also be used with the-xoption to begin disassembly from symbol name in any segment where a__textsection is found.-qβ use the llvm disassembler when doing disassembly; this is available for the x86 and arm architectures. This is the default.-Qβ useotool-classic(1)'s disassembler when doing disassembly.-vβ display verbosely (symbolically) when possible.-Vβ display the disassembled operands symbolically (this implies the-voption). This is useful with the-s,-t, and-xoptions.-Xβ don't print leading addresses or headers with disassembly of sections.-addr_slide=argβ when disassembling a binary using the-s,-t, or-ooptions, add an arbitrary slide to each pointer value when it is displayed. This is useful for matchingotooloutput with that from a running process.-arch arch_typeβ specifies the architecture, arch_type, of the file forotool-classic(1)to operate on when the file is a universal file (aka a file with multiple architectures). (Seearch(3)for the currently known arch_types.) The arch_type can be"all"to operate on all architectures in the file. The default is to display only the host architecture, if the file contains it; otherwise, all architectures in the file are shown.-function_offsetsβ when doing disassembly, print the decimal offset from the last label printed.-mcpu=argβ when doing disassembly using the llvm disassembler, use the cpu arg.--versionβ print theotool-classic(1)version information.
π SEE ALSO π
dyld(1), install_name_tool(1), libtool(1), lipo(1), llvm-otool(1), and vtool(1) β go read those too, bestie. π
this iconic page is brought to you by Apple Inc., dated July 31, 2020, with the manual/version tag OTOOL-CLASSIC(1). mwah πβ¨
π¦ where this page comes from
- nixpkgs unstable: cctools 1010.6
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms