xref: /llvm-project/llvm/docs/CommandGuide/llvm-objdump.rst (revision 7b7747dc1d3da1a829503ea9505b4cecce4f5bda)
1llvm-objdump - LLVM's object file dumper
2========================================
3
4.. program:: llvm-objdump
5
6SYNOPSIS
7--------
8
9:program:`llvm-objdump` [*commands*] [*options*] [*filenames...*]
10
11DESCRIPTION
12-----------
13The :program:`llvm-objdump` utility prints the contents of object files and
14final linked images named on the command line. If no file name is specified,
15:program:`llvm-objdump` will attempt to read from *a.out*. If *-* is used as a
16file name, :program:`llvm-objdump` will process a file on its standard input
17stream.
18
19COMMANDS
20--------
21At least one of the following commands are required, and some commands can be
22combined with other commands:
23
24.. option:: -a, --archive-headers
25
26  Display the information contained within an archive's headers.
27
28.. option:: -d, --disassemble
29
30  Disassemble all executable sections found in the input files. On some
31  architectures (AArch64, PowerPC, x86), all known instructions are disassembled by
32  default. On the others, :option:`--mcpu` or :option:`--mattr` is needed to
33  enable some instruction sets. Disabled instructions are displayed as
34  ``<unknown>``.
35
36.. option:: -D, --disassemble-all
37
38  Disassemble all sections found in the input files.
39
40.. option:: --disassemble-symbols=<symbol1[,symbol2,...]>
41
42  Disassemble only the specified symbols. Takes demangled symbol names when
43  :option:`--demangle` is specified, otherwise takes mangled symbol names.
44  Implies :option:`--disassemble`.
45
46.. option:: --dwarf=<value>
47
48  Dump the specified DWARF debug sections. The supported values are:
49
50  `frames` - .debug_frame
51
52.. option:: -f, --file-headers
53
54  Display the contents of the overall file header.
55
56.. option:: --fault-map-section
57
58  Display the content of the fault map section.
59
60.. option:: -h, --headers, --section-headers
61
62  Display summaries of the headers for each section.
63
64.. option:: --help
65
66  Display usage information and exit. Does not stack with other commands.
67
68.. option:: -p, --private-headers
69
70  Display format-specific file headers.
71
72.. option:: -r, --reloc
73
74  Display the relocation entries in the file.
75
76.. option:: -R, --dynamic-reloc
77
78  Display the dynamic relocation entries in the file.
79
80.. option:: --raw-clang-ast
81
82  Dump the raw binary contents of the clang AST section.
83
84.. option:: -s, --full-contents
85
86  Display the contents of each section.
87
88.. option:: -t, --syms
89
90  Display the symbol table.
91
92.. option:: -T, --dynamic-syms
93
94  Display the contents of the dynamic symbol table.
95
96.. option:: -u, --unwind-info
97
98  Display the unwind info of the input(s).
99
100  This operation is only currently supported for COFF and Mach-O object files.
101
102.. option:: -v, --version
103
104  Display the version of the :program:`llvm-objdump` executable. Does not stack
105  with other commands.
106
107.. option:: -x, --all-headers
108
109  Display all available header information. Equivalent to specifying
110  :option:`--archive-headers`, :option:`--file-headers`,
111  :option:`--private-headers`, :option:`--reloc`, :option:`--section-headers`,
112  and :option:`--syms`.
113
114OPTIONS
115-------
116:program:`llvm-objdump` supports the following options:
117
118.. option:: --adjust-vma=<offset>
119
120  Increase the displayed address in disassembly or section header printing by
121  the specified offset.
122
123.. option:: --arch-name=<string>
124
125  Specify the target architecture when disassembling. Use :option:`--version`
126  for a list of available targets.
127
128.. option:: --build-id=<string>
129
130  Look up the object using the given build ID, specified as a hexadecimal
131  string. The found object is handled as if it were an input filename.
132
133.. option:: -C, --demangle
134
135  Demangle symbol names in the output.
136
137.. option:: --debug-file-directory <path>
138
139  Provide a path to a directory with a `.build-id` subdirectory to search for
140  debug information for stripped binaries. Multiple instances of this argument
141  are searched in the order given.
142
143.. option:: --debuginfod, --no-debuginfod
144
145  Whether or not to try debuginfod lookups for debug binaries. Unless specified,
146  debuginfod is only enabled if libcurl was compiled in (``LLVM_ENABLE_CURL``)
147  and at least one server URL was provided by the environment variable
148  ``DEBUGINFOD_URLS``.
149
150.. option:: --debug-vars=<format>
151
152  Print the locations (in registers or memory) of source-level variables
153  alongside disassembly. ``format`` may be ``unicode`` or ``ascii``, defaulting
154  to ``unicode`` if omitted.
155
156.. option:: --debug-vars-indent=<width>
157
158  Distance to indent the source-level variable display, relative to the start
159  of the disassembly. Defaults to 52 characters.
160
161.. option:: -j, --section=<section1[,section2,...]>
162
163  Perform commands on the specified sections only. For Mach-O use
164  `segment,section` to specify the section name.
165
166.. option:: -l, --line-numbers
167
168  When disassembling, display source line numbers. Implies
169  :option:`--disassemble`.
170
171.. option:: -M, --disassembler-options=<opt1[,opt2,...]>
172
173  Pass target-specific disassembler options. Available options:
174
175  * ``reg-names-std``: ARM only (default). Print in ARM 's instruction set documentation, with r13/r14/r15 replaced by sp/lr/pc.
176  * ``reg-names-raw``: ARM only. Use r followed by the register number.
177  * ``no-aliases``: AArch64 and RISC-V only. Print raw instruction mnemonic instead of pseudo instruction mnemonic.
178  * ``numeric``: RISC-V only. Print raw register names instead of ABI mnemonic. (e.g. print x1 instead of ra)
179  * ``att``: x86 only (default). Print in the AT&T syntax.
180  * ``intel``: x86 only. Print in the intel syntax.
181
182
183.. option::  --disassembler-color=<mode>
184
185  Enable or disable disassembler color output.
186
187  * ``off``: Disable disassembler color output.
188  * ``on``: Enable disassembler color output.
189  * ``terminal``: Enable disassembler color output if the terminal supports it (default).
190
191.. option:: --mcpu=<cpu-name>
192
193  Target a specific CPU type for disassembly. Specify ``--mcpu=help`` to display
194  available CPUs.
195
196.. option:: --mattr=<a1,+a2,-a3,...>
197
198  Enable/disable target-specific attributes. Specify ``--mattr=help`` to display
199  the available attributes.
200
201.. option:: -mllvm <arg>
202
203   Specify an argument to forward to LLVM's CommandLine library.
204
205.. option:: --no-leading-addr, --no-addresses
206
207  When disassembling, do not print leading addresses for instructions or inline
208  relocations.
209
210.. option:: --no-print-imm-hex
211
212  Do not use hex format for immediate values in disassembly output.
213
214.. option:: --no-show-raw-insn
215
216  When disassembling, do not print the raw bytes of each instruction.
217
218.. option:: --offloading
219
220  Display the content of the LLVM offloading section.
221
222.. option:: --prefix=<prefix>
223
224  When disassembling with the :option:`--source` option, prepend ``prefix`` to
225  absolute paths.
226
227.. option:: --prefix-strip=<level>
228
229  When disassembling with the :option:`--source` option, strip out ``level``
230  initial directories from absolute paths. This option has no effect without
231  :option:`--prefix`.
232
233.. option:: --print-imm-hex
234
235  Use hex format when printing immediate values in disassembly output (default).
236
237.. option:: -S, --source
238
239  When disassembling, display source interleaved with the disassembly. Implies
240  :option:`--disassemble`.
241
242.. option:: --show-all-symbols
243
244  Show all symbols during disassembly, even if multiple symbols are defined at
245  the same location.
246
247.. option:: --show-lma
248
249  Display the LMA column when dumping ELF section headers. Defaults to off
250  unless any section has different VMA and LMAs.
251
252.. option:: --start-address=<address>
253
254  When disassembling, only disassemble from the specified address.
255
256  When printing relocations, only print the relocations patching offsets from at least ``address``.
257
258  When printing symbols, only print symbols with a value of at least ``address``.
259
260.. option:: --stop-address=<address>
261
262  When disassembling, only disassemble up to, but not including the specified address.
263
264  When printing relocations, only print the relocations patching offsets up to ``address``.
265
266  When printing symbols, only print symbols with a value up to ``address``.
267
268.. option:: --symbolize-operands
269
270  When disassembling, symbolize a branch target operand to print a label instead of a real address.
271
272  When printing a PC-relative global symbol reference, print it as an offset from the leading symbol.
273
274  When a bb-address-map section is present (i.e., the object file is built with
275  ``-fbasic-block-address-map``), labels are retrieved from that section
276  instead. If a pgo-analysis-map is present alongside the bb-address-map, any
277  available analyses are printed after the relevant block label. By default,
278  any analysis with a special representation (i.e. BlockFrequency,
279  BranchProbability, etc) are printed as raw hex values.
280
281  Only works with PowerPC objects or X86 linked images.
282
283  Example:
284    A non-symbolized branch instruction with a local target and pc-relative memory access like
285
286  .. code-block:: none
287
288      cmp eax, dword ptr [rip + 4112]
289      jge 0x20117e <_start+0x25>
290
291  might become
292
293  .. code-block:: none
294
295     <L0>:
296       cmp eax, dword ptr <g>
297       jge	<L0>
298
299.. option:: --pretty-pgo-analysis-map
300
301  When using :option:`--symbolize-operands` with bb-address-map and
302  pgo-analysis-map, print analyses using the same format as their analysis
303  passes would. An example of pretty format would be printing block frequencies
304  relative to the entry block, the same as BFI.
305
306  Only works when :option:`--symbolize-operands` is enabled.
307
308.. option:: --triple=<string>
309
310  Target triple to disassemble for, see ``--version`` for available targets.
311
312.. option:: -w, --wide
313
314  Ignored for compatibility with GNU objdump.
315
316.. option:: --x86-asm-syntax=<style>
317
318  Deprecated.
319  When used with :option:`--disassemble`, choose style of code to emit from
320  X86 backend. Supported values are:
321
322   .. option:: att
323
324    AT&T-style assembly
325
326   .. option:: intel
327
328    Intel-style assembly
329
330
331  The default disassembly style is **att**.
332
333.. option:: -z, --disassemble-zeroes
334
335  Do not skip blocks of zeroes when disassembling.
336
337.. option:: @<FILE>
338
339  Read command-line options and commands from response file `<FILE>`.
340
341MACH-O ONLY OPTIONS AND COMMANDS
342--------------------------------
343
344.. option:: --arch=<architecture>
345
346  Specify the architecture to disassemble. see ``--version`` for available
347  architectures.
348
349.. option:: --archive-member-offsets
350
351  Print the offset to each archive member for Mach-O archives (requires
352  :option:`--archive-headers`).
353
354.. option:: --bind
355
356  Display binding info
357
358.. option:: --data-in-code
359
360  Display the data in code table.
361
362.. option:: --dis-symname=<name>
363
364  Disassemble just the specified symbol's instructions.
365
366.. option:: --chained-fixups
367
368  Print chained fixup information.
369
370.. option:: --dyld-info
371
372  Print bind and rebase information used by dyld to resolve external
373  references in a final linked binary.
374
375.. option:: --dylibs-used
376
377  Display the shared libraries used for linked files.
378
379.. option:: --dsym=<string>
380
381  Use .dSYM file for debug info.
382
383.. option:: --dylib-id
384
385  Display the shared library's ID for dylib files.
386
387.. option:: --exports-trie
388
389  Display exported symbols.
390
391.. option:: --function-starts [=<addrs|names|both>]
392
393  Print the function starts table for Mach-O objects. Either ``addrs``
394  (default) to print only the addresses of functions, ``names`` to print only
395  the names of the functions (when available), or ``both`` to print the
396  names beside the addresses.
397
398.. option:: -g
399
400  Print line information from debug info if available.
401
402.. option:: --full-leading-addr
403
404  Print the full leading address when disassembling.
405
406.. option:: --indirect-symbols
407
408  Display the indirect symbol table.
409
410.. option:: --info-plist
411
412  Display the info plist section as strings.
413
414.. option:: --lazy-bind
415
416  Display lazy binding info.
417
418.. option:: --link-opt-hints
419
420  Display the linker optimization hints.
421
422.. option:: -m, --macho
423
424  Use Mach-O specific object file parser. Commands and other options may behave
425  differently when used with ``--macho``.
426
427.. option:: --no-leading-headers
428
429  Do not print any leading headers.
430
431.. option:: --no-symbolic-operands
432
433  Do not print symbolic operands when disassembling.
434
435.. option:: --non-verbose
436
437  Display the information for Mach-O objects in non-verbose or numeric form.
438
439.. option:: --objc-meta-data
440
441  Display the Objective-C runtime meta data.
442
443.. option:: --private-header
444
445  Display only the first format specific file header.
446
447.. option:: --rebase
448
449  Display rebasing information.
450
451.. option:: --rpaths
452
453  Display runtime search paths for the binary.
454
455.. option:: --universal-headers
456
457  Display universal headers.
458
459.. option:: --weak-bind
460
461  Display weak binding information.
462
463XCOFF ONLY OPTIONS AND COMMANDS
464---------------------------------
465
466.. option:: --symbol-description
467
468  Add symbol description to disassembly output.
469
470.. option:: --traceback-table
471
472  Decode traceback table in disassembly output. Implies :option:`--disassemble`.
473
474BUGS
475----
476
477To report bugs, please visit <https://github.com/llvm/llvm-project/labels/tools:llvm-objdump/>.
478
479SEE ALSO
480--------
481
482:manpage:`llvm-nm(1)`, :manpage:`llvm-otool(1)`, :manpage:`llvm-readelf(1)`,
483:manpage:`llvm-readobj(1)`
484