.\" Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
.\" See https://llvm.org/LICENSE.txt for license information.
.\" SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
.\"
.Dd December 19, 2018
.Dt LLVM-OBJDUMP 1
.Os
.Sh NAME
.Nm llvm-objdump
.Nd LLVM object file dumper
.Sh SYNOPSIS
.Nm llvm-objdump
.Op Ar options
.Ar objfile ...
.Sh DESCRIPTION
.Nm
prints the contents of object files and final linked images named on the
command line.
If no file name is specified,
.Nm
will attempt to read from
.Pa a.out .
If
.Pa -
is used as a file name,
.Nm
will process a file on its standard input stream.
.Nm
accepts many of the same command line arguments as GNU objdump.
.Sh OPTIONS
.Ss General Options
.Bl -tag -width indent
.It Fl -aarch64-neon-syntax Ns = Ns Ar value
Choose style of NEON code to emit from AArch64 backend.
.Ar value
may be one of:
.Bl -tag -width indent
.It generic
Generic NEON assembly
.It apple
Apple-style NEON assembly
.El
.It Fl -arch Ns = Ns Ar value
Choose architecture(s) from a Mach-O file to dump
.It Fl -arch-name Ns = Ns ar arch
Target arch to disassemble for.
See
.Fl -version
for available targets.
.It Fl -bind
Display mach-o binding info.
.It Fl -color
Use colored syntax highlighting.
Default autodetect.
.It Fl -disassemble
Display assembler mnemonics for machine instructions.
.It Fl -disassemble-all
Display assembler mnemonics for the machine instruction in all sections.
.It Fl -dsym Ns = Ns Ar file
Use
.Ar file
for debug info.
.It Fl -dwarf Ns = Ns Ar sections
Dump of dwarf debug sections.
.Bl -tag -width indent
.It frames
.Dv .debug_frame
.El
.It Fl -exports-trie
Display mach-o exported symbols.
.It Fl -fault-map-section
Display contents of faultmap section.
.It Fl -filter-print-funcs Ns = Ns Ar functions
Only print IR for functions whose name match
.Ar functions
for all print-[before|after][-all] options.
.It Fl -full-leading-addr
Print full leading address.
.It Fl g
Print line information from debug info if available.
.It Fl h , -headers , -section-headers
Display summaries of the headers for each section.
.It Fl -help
Display available options.
Use
.Fl -help-hidden
for more.
.It Fl -lazy-bind
Display mach-o lazy binding info.
.It Fl -line-numbers
Display source line numbers with disassembly.
Implies disassemble object.
.It Fl -macho
Use MachO specific object file parser.
.It Fl -mattr Ns = Ns Ar attribute ...
Target specific attributes.
.It Fl -mcpu Ns = Ns Ar CPU
Target a specific cpu type.
Use
.Fl mcpu Ns = Ns help
for details.
.It Fl -no-leading-addr
Print no leading address.
.It Fl -no-leading-headers
Print no leading headers.
.It Fl -no-show-raw-insn
When disassembling instructions, do not print the instruction bytes.
.It Fl -prefix Ns = Ns Ar PREFIX
When disassembling, add
.Ar PREFIX
to absolute paths.
.It Fl -prefix-strip Ns = Ns Ar LEVEL
When disassembling, strip out
.Ar LEVEL
initial directories from absolute paths. This option has no effect without
.Fl -prefix Ns = Ns PREFIX .
.It Fl -print-imm-hex
Use hex format for immediate values.
.It Fl -private-header
Display only the first format specific file header.
.It Fl -private-headers
Display format specific file headers.
.It Fl r
Display the relocation entries in the file.
.It Fl -raw-clang-ast
Dump the raw binary contents of the clang AST section.
.It Fl -rebase
Display mach-o rebasing info.
.It Fl -reverse-iterate
Reverse iterate.
.It Fl s
Display the content of each section.
.It Fl -section Ns = Ns Ar section
Operate on the specified sections only.
With
.Fl -macho
dump segment,section.
.It Fl -source
Display source inline with disassembly.
Implies disassmble object.
.It Fl -start-address Ns = Ns Ar address
Disassemble beginning at
.Ar address .
.It Fl -stop-address Ns = Ns Ar address
Stop disassembly at
.Ar address .
.It Fl t
Display the symbol table.
.It Fl -triple Ns = Ns Ar triple
Target triple to disassemble for.
See
.Fl -version
for available targets.
.It Fl -unwind-info
Display unwind information.
.It Fl -version
Display the version of this program.
.It Fl -weak-bind
Display mach-o weak binding info.
.It Fl -x86-asm-syntax Ns = Ns Ar syntax
Choose style of code to emit from X86 backend.
.Bl -tag -width indent
.It att
Emit AT&T-style assembly.
.It intel
Emit Intel-style assembly.
.El
.El
.Ss Mach-O Options
There are a number of options specific to the Mach-O format.
These are used in combination with the
.Fl -macho
option.
.Bl -tag -width indent
.It Fl -archive-headers
Print archive headers for Mach-O archives.
.It Fl -archive-member-offsets
Print the offset to each archive member for Mach-O archives.
Requires
.Fl -macho
and
.Fl -archive-headers .
.It Fl -data-in-code
Print the data in code table for Mach-O objects.
.It Fl -dis-symname Ns = Ns Ar symbol
Disassemble just
.Ar symbol 's
instructions.
.It Fl -dylib-id
Print the shared library's id for the dylib Mach-O file.
.It Fl -dylibs-used
Print the shared libraries used for linked Mach-O files.
.It Fl -indirect-symbols
Print indirect symbol table for Mach-O objects.
.It Fl -info-plist
Print the info plist section as strings for Mach-O objects.
.It Fl -link-opt-hints
Print the linker optimization hints for Mach-O objects.
.It Fl -no-symbolic-operands
do not symbolic operands when disassembling.
.It Fl -non-verbose
Print the info for Mach-O objects in non-verbose or numeric form.
.It Fl -objc-meta-data
Print the Objective-C runtime meta data for Mach-O files.
.It Fl -universal-headers
Print Mach-O universal headers.
.El
