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:: --allow <path>

 Only process debug map objects listed in the YAML file at <path>. Only filters
 N_OSO entries. If `--oso-prepend-path` is specified, the path prefix applies,
 i.e. paths in the file should exact match that of N_OSO entries.

.. 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:: --build-variant-suffix <suffix=buildvariant>

 Specify the build variant suffix used to build the executable file.
 There can be multiple variants for the binary of a product, each built
 slightly differently. The most common build variants are 'debug' and
 'profile'. Setting the DYLD_IMAGE_SUFFIX environment variable will
 cause dyld to load the specified variant at runtime.

.. option:: --disallow <path>

 Exclude debug map objects listed in the YAML file at <path>. Only filters
 N_OSO entries. If `--oso-prepend-path` is specified, the path prefix applies,
 i.e. paths in the file should exact match that of N_OSO entries.

.. 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:: -D <path>

 Specify a directory that contain dSYM files to search for.
 This is used for mergeable libraries, so dsymutil knows where to look
 for dSYM files with  debug information about symbols present in those
 libraries.

.. option:: --fat64

 Use a 64-bit header when emitting universal binaries.

.. 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:: --include-swiftmodules-from-interface

 Whether or not to copy binary swiftmodules built from textual .swiftinterface
 files into the dSYM bundle. These typically come only from the SDK (since
 textual interfaces require library evolution) and thus are a waste of space to
 copy into the bundle. Turn this on if the swiftmodules are different from
 those in the SDK.

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

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

.. option:: --no-object-timestamp

 Don't check timestamp for object files.

.. 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:: -q, --quiet

 Enable quiet mode and limit output.

.. option:: --remarks-drop-without-debug

 Drop remarks without valid debug locations. Without this flags, all remarks are kept.

.. 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:: -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)`
