blob: 77140abdc2f8e746ff4ecc5132f9c7cd49835a59 [file] [view] [edit]
# llvm-gsymutil - GSYM dumping, searching and creating utility
```{program} llvm-gsymutil
```
## SYNOPSIS
{program}`llvm-gsymutil` \[*options*\] \[*gsym-files...*\]
## DESCRIPTION
{program}`llvm-gsymutil` is a tool for dumping, searching, and creating GSYM
files.
GSYM is a compact file format for debug information, optimized for fast
lookups. It can represent address ranges, line tables, and inline info.
The tool has three main modes of operation:
1. **Dump Mode**: If one or more GSYM files are specified as arguments without
any lookup options, the tool dumps all the information contained in the
specified files.
2. **Lookup Mode**: If a single GSYM file is specified along with one or more
{option}`--address` options (or {option}`--addresses-from-stdin`), the tool
performs lookups for the specified addresses in the GSYM file.
3. **Convert Mode**: If the {option}`--convert` option is specified, the tool
converts the specified ELF or Mach-O file into GSYM format.
## OPTIONS
:::{option} --help, -h
Display information on the various flags.
:::
:::{option} --version, -v
Display the version of the tool.
:::
:::{option} --verbose
Enable verbose logging and encoding details.
:::
:::{option} --convert=<file>
Convert the specified file to the GSYM format. Supported files include ELF and
Mach-O files. The tool will convert their debug info (DWARF) and symbol table.
:::
:::{option} --symtab-file=<file>
Specify a separate file to read the symbol table from during GSYM conversion.
Use when the symbol table and debug info are in separate files. Matching
architectures are selected automatically for universal binaries.
:::
:::{option} --merged-functions
- When used with {option}`--convert`, encodes merged function information for
functions in debug info that have matching address ranges. Without this
option, one function per unique address range will be emitted.
- When used with {option}`--address` or {option}`--addresses-from-stdin`, all
merged functions for a particular address will be displayed. Without this
option, only one function will be displayed.
:::
:::{option} --dwarf-callsites
Load call site info from DWARF, if available. This flag only has an impact
when converting to gsym. When using llvm-gsymutil to lookup addresses,
any callsite information will automatically be displayed without this flag.
:::
:::{option} --arch=<arch>
Process debug information for the specified CPU architecture only.
Architectures may be specified by name or by number. This option can be
specified multiple times, once for each desired architecture.
:::
:::{option} --out-file=<file>, -o <file>
Specify the path where the converted GSYM file will be saved. When not
specified, a '.gsym' extension will be appended to the file name specified in
the {option}`--convert` option.
:::
:::{option} --verify
Verify the generated GSYM file against the information in the file that was
converted.
:::
:::{option} --num-threads=<n>
Specify the maximum number (n) of simultaneous threads to use when converting
files to GSYM. Defaults to the number of cores on the current machine.
:::
:::{option} --segment-size=<size>
Specify the size in bytes of the size the final GSYM file should be segmented
into. This allows GSYM files to be split across multiple files.
:::
:::{option} --quiet
Do not output warnings about the debug information.
:::
:::{option} --address=<addr>
Lookup an address in a GSYM file. Can be specified multiple times.
:::
:::{option} --addresses-from-stdin
Lookup addresses in a GSYM file that are read from stdin. Each input line is
expected to be of the following format: `<addr> <gsym-path>`.
:::
:::{option} --json-summary-file=<file>
Output a categorized summary of errors into the JSON file specified.
:::
:::{option} --merged-functions-filter=<regex>
When used with {option}`--address` or {option}`--addresses-from-stdin` and
{option}`--merged-functions`, filters the merged functions output to only
show functions matching any of the specified regex patterns. Can be
specified multiple times.
:::
:::{option} --output-version=<version>
Set the GSYM output version (1 or 2). Default: 1.
:::
:::{option} --statistics[=<format>]
Print the size of each section in the input GSYM file(s). Format can be
`text` (default), `json`, or `pretty-json`. Calling this option without
arguments is equivalent to `--statistics=text`.
:::
## EXAMPLES
Convert an ELF file with debug info to GSYM format:
```console
$ llvm-gsymutil --convert=input.elf -o input.gsym
```
Lookup addresses in a GSYM file:
```console
$ llvm-gsymutil --address=0x400391 --address=0x4004cd input.gsym
```
Lookup addresses from standard input:
```console
$ cat addrs.txt
0x400391 input.gsym
0x4004cd input.gsym
$ cat addrs.txt | llvm-gsymutil --addresses-from-stdin
```
Dump the contents of a GSYM file:
```console
$ llvm-gsymutil input.gsym
```