1llvm-symbolizer - convert addresses into source code locations
2==============================================================
3
4SYNOPSIS
5--------
6
7:program:`llvm-symbolizer` [options]
8
9DESCRIPTION
10-----------
11
12:program:`llvm-symbolizer` reads object file names and addresses from standard
13input and prints corresponding source code locations to standard output.
14If object file is specified in command line, :program:`llvm-symbolizer`
15processes only addresses from standard input, the rest is output verbatim.
16This program uses debug info sections and symbol table in the object files.
17
18EXAMPLE
19--------
20
21.. code-block:: console
22
23  $ cat addr.txt
24  a.out 0x4004f4
25  /tmp/b.out 0x400528
26  /tmp/c.so 0x710
27  /tmp/mach_universal_binary:i386 0x1f84
28  /tmp/mach_universal_binary:x86_64 0x100000f24
29  $ llvm-symbolizer < addr.txt
30  main
31  /tmp/a.cc:4
32
33  f(int, int)
34  /tmp/b.cc:11
35
36  h_inlined_into_g
37  /tmp/header.h:2
38  g_inlined_into_f
39  /tmp/header.h:7
40  f_inlined_into_main
41  /tmp/source.cc:3
42  main
43  /tmp/source.cc:8
44
45  _main
46  /tmp/source_i386.cc:8
47
48  _main
49  /tmp/source_x86_64.cc:8
50  $ cat addr2.txt
51  0x4004f4
52  0x401000
53  $ llvm-symbolizer -obj=a.out < addr2.txt
54  main
55  /tmp/a.cc:4
56
57  foo(int)
58  /tmp/a.cc:12
59  $cat addr.txt
60  0x40054d
61  $llvm-symbolizer -inlining -print-address -pretty-print -obj=addr.exe < addr.txt
62  0x40054d: inc at /tmp/x.c:3:3
63   (inlined by) main at /tmp/x.c:9:0
64  $llvm-symbolizer -inlining -pretty-print -obj=addr.exe < addr.txt
65  inc at /tmp/x.c:3:3
66   (inlined by) main at /tmp/x.c:9:0
67
68OPTIONS
69-------
70
71.. option:: -obj, -exe, -e
72
73  Path to object file to be symbolized.
74
75.. _llvm-symbolizer-opt-f:
76
77.. option:: -functions [<none|short|linkage>], -f
78
79  Specify the way function names are printed (omit function name,
80  print short function name, or print full linkage name, respectively).
81  Defaults to ``linkage``.
82
83.. _llvm-symbolizer-opt-use-symbol-table:
84
85.. option:: -use-symbol-table
86
87 Prefer function names stored in symbol table to function names
88 in debug info sections. Defaults to true.
89
90.. _llvm-symbolizer-opt-C:
91
92.. option:: -demangle, -C
93
94 Print demangled function names. Defaults to true.
95
96.. option:: -no-demangle
97
98 Don't print demangled function names.
99
100.. _llvm-symbolizer-opt-i:
101
102.. option:: -inlining, -inlines, -i
103
104 If a source code location is in an inlined function, prints all the
105 inlined frames. Defaults to true.
106
107.. option:: -default-arch
108
109 If a binary contains object files for multiple architectures (e.g. it is a
110 Mach-O universal binary), symbolize the object file for a given architecture.
111 You can also specify architecture by writing ``binary_name:arch_name`` in the
112 input (see example above). If architecture is not specified in either way,
113 address will not be symbolized. Defaults to empty string.
114
115.. option:: -dsym-hint <path/to/file.dSYM>
116
117 (Darwin-only flag). If the debug info for a binary isn't present in the default
118 location, look for the debug info at the .dSYM path provided via the
119 ``-dsym-hint`` flag. This flag can be used multiple times.
120
121.. option:: -print-address, -addresses, -a
122
123 Print address before the source code location. Defaults to false.
124
125.. option:: -pretty-print, -p
126
127 Print human readable output. If ``-inlining`` is specified, enclosing scope is
128 prefixed by (inlined by). Refer to listed examples.
129
130.. option:: -basenames, -s
131
132 Strip directories when printing the file path.
133
134.. option:: -adjust-vma <offset>
135
136 Add the specified offset to object file addresses when performing lookups. This
137 can be used to perform lookups as if the object were relocated by the offset.
138
139.. _llvm-symbolizer-opt-output-style:
140
141.. option:: -output-style <LLVM|GNU>
142
143  Specify the preferred output style. Defaults to ``LLVM``. When the output
144  style is set to ``GNU``, the tool follows the style of GNU's **addr2line**.
145  The differences from the ``LLVM`` style are:
146
147  * Does not print column of a source code location.
148
149  * Does not add an empty line after the report for an address.
150
151  * Does not replace the name of an inlined function with the name of the
152    topmost caller when inlined frames are not shown and ``-use-symbol-table``
153    is on.
154
155  .. code-block:: console
156
157    $ llvm-symbolizer -p -e=addr.exe 0x40054d 0x400568
158    inc at /tmp/x.c:3:3
159     (inlined by) main at /tmp/x.c:14:0
160
161    main at /tmp/x.c:14:3
162
163    $ llvm-symbolizer --output-style=LLVM -p -i=0 -e=addr.exe 0x40054d 0x400568
164    main at /tmp/x.c:3:3
165
166    main at /tmp/x.c:14:3
167
168    $ llvm-symbolizer --output-style=GNU -p -i=0 -e=addr.exe 0x40054d 0x400568
169    inc at /tmp/x.c:3
170    main at /tmp/x.c:14
171
172.. option:: @<FILE>
173
174 Read command-line options from response file `<FILE>`.
175
176EXIT STATUS
177-----------
178
179:program:`llvm-symbolizer` returns 0. Other exit codes imply an internal program
180error.
181