dsymutil - manipulate archived DWARF debug symbol files
=======================================================

.. program:: dsymutil

SYNOPSIS
--------

| :program:`dsymutil` [*options*] *executable*

DESCRIPTION
-----------

:program:`dsymutil` links the DWARF debug information found in the object files
for an executable *executable* by using debug symbols information contained in
its symbol table. By default, the linked debug information is placed in a
``.dSYM`` bundle with the same name as the executable.

OPTIONS
-------
.. option:: --accelerator=<accelerator type>

 Specify the desired type of accelerator table. Valid options are 'Apple',
 'Dwarf', 'Default' and 'None'.

.. option:: --arch <arch>

 Link DWARF debug information only for specified CPU architecture types.
 Architectures may be specified by name. When using this option, an error will
 be returned if any architectures can not be properly linked.  This option can
 be specified multiple times, once for each desired architecture. All CPU
 architectures will be linked by default and any architectures that can't be
 properly linked will cause :program:`dsymutil` to return an error.

.. option:: --dump-debug-map

 Dump the *executable*'s debug-map (the list of the object files containing the
 debug information) in YAML format and exit. No DWARF link will take place.

.. option:: --flat, -f

 Produce a flat dSYM file. A ``.dwarf`` extension will be appended to the
 executable name unless the output file is specified using the ``-o`` option.

.. option:: --gen-reproducer

 Generate a reproducer consisting of the input object files. Alias for
 --reproducer=GenerateOnExit.

.. option:: --help, -h

 Print this help output.

.. option:: --keep-function-for-static

 Make a static variable keep the enclosing function even if it would have been
 omitted otherwise.

.. option:: --minimize, -z

 When used when creating a dSYM file, this option will suppress the emission of
 the .debug_inlines, .debug_pubnames, and .debug_pubtypes sections since
 dsymutil currently has better equivalents: .apple_names and .apple_types. When
 used in conjunction with ``--update`` option, this option will cause redundant
 accelerator tables to be removed.

.. option:: --no-odr

 Do not use ODR (One Definition Rule) for uniquing C++ types.

.. option:: --no-output

 Do the link in memory, but do not emit the result file.

.. option:: --no-swiftmodule-timestamp

 Don't check the timestamp for swiftmodule files.

.. option:: --num-threads <threads>, -j <threads>

 Specifies the maximum number (``n``) of simultaneous threads to use when
 linking multiple architectures.

.. option:: --object-prefix-map <prefix=remapped>

 Remap object file paths (but no source paths) before processing.  Use
 this for Clang objects where the module cache location was remapped using
 ``-fdebug-prefix-map``; to help dsymutil find the Clang module cache.

.. option:: --oso-prepend-path <path>

 Specifies a ``path`` to prepend to all debug symbol object file paths.

.. option:: --out <filename>, -o <filename>

 Specifies an alternate ``path`` to place the dSYM bundle. The default dSYM
 bundle path is created by appending ``.dSYM`` to the executable name.

.. option:: --papertrail

 When running dsymutil as part of your build system, it can be desirable for
 warnings to be part of the end product, rather than just being emitted to the
 output stream. When enabled warnings are embedded in the linked DWARF debug
 information.

.. option:: --remarks-output-format <format>

 Specify the format to be used when serializing the linked remarks.

.. option:: --remarks-prepend-path <path>

 Specify a directory to prepend the paths of the external remark files.

.. option:: --reproducer <mode>

 Specify the reproducer generation mode. Valid options are 'GenerateOnExit',
 'GenerateOnCrash', 'Use', 'Off'.

.. option:: --statistics

 Print statistics about the contribution of each object file to the linked
 debug info. This prints a table after linking with the object file name, the
 size of the debug info in the object file (in bytes) and the size contributed
 (in bytes) to the linked dSYM. The table is sorted by the output size listing
 the object files with the largest contribution first.

.. option:: --symbol-map <bcsymbolmap>

 Update the existing dSYMs inplace using symbol map specified.

.. option:: -s, --symtab

 Dumps the symbol table found in *executable* or object file(s) and exits.

.. option:: -S

 Output textual assembly instead of a binary dSYM companion file.

.. option:: --toolchain <toolchain>

 Embed the toolchain in the dSYM bundle's property list.

.. option:: -u, --update

 Update an existing dSYM file to contain the latest accelerator tables and
 other DWARF optimizations. This option will rebuild the '.apple_names' and
 '.apple_types' hashed accelerator tables.

.. option:: --use-reproducer <path>

 Use the object files from the given reproducer path. Alias for
 --reproducer=Use.

.. option:: --verbose

 Display verbose information when linking.

.. option:: --verify

 Run the DWARF verifier on the linked DWARF debug info.

.. option:: -v, --version

 Display the version of the tool.

.. option:: -y

 Treat *executable* as a YAML debug-map rather than an executable.

EXIT STATUS
-----------

:program:`dsymutil` returns 0 if the DWARF debug information was linked
successfully. Otherwise, it returns 1.

SEE ALSO
--------

:manpage:`llvm-dwarfdump(1)`
