summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/docs/CommandGuide/llvm-pdbutil.rst
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/llvm/docs/CommandGuide/llvm-pdbutil.rst')
-rw-r--r--gnu/llvm/docs/CommandGuide/llvm-pdbutil.rst585
1 files changed, 0 insertions, 585 deletions
diff --git a/gnu/llvm/docs/CommandGuide/llvm-pdbutil.rst b/gnu/llvm/docs/CommandGuide/llvm-pdbutil.rst
deleted file mode 100644
index 29d487e0e74..00000000000
--- a/gnu/llvm/docs/CommandGuide/llvm-pdbutil.rst
+++ /dev/null
@@ -1,585 +0,0 @@
-llvm-pdbutil - PDB File forensics and diagnostics
-=================================================
-
-.. contents::
- :local:
-
-Synopsis
---------
-
-:program:`llvm-pdbutil` [*subcommand*] [*options*]
-
-Description
------------
-
-Display types, symbols, CodeView records, and other information from a
-PDB file, as well as manipulate and create PDB files. :program:`llvm-pdbutil`
-is normally used by FileCheck-based tests to test LLVM's PDB reading and
-writing functionality, but can also be used for general PDB file investigation
-and forensics, or as a replacement for cvdump.
-
-Subcommands
------------
-
-:program:`llvm-pdbutil` is separated into several subcommands each tailored to
-a different purpose. A brief summary of each command follows, with more detail
-in the sections that follow.
-
- * :ref:`pretty_subcommand` - Dump symbol and type information in a format that
- tries to look as much like the original source code as possible.
- * :ref:`dump_subcommand` - Dump low level types and structures from the PDB
- file, including CodeView records, hash tables, PDB streams, etc.
- * :ref:`bytes_subcommand` - Dump data from the PDB file's streams, records,
- types, symbols, etc as raw bytes.
- * :ref:`yaml2pdb_subcommand` - Given a yaml description of a PDB file, produce
- a valid PDB file that matches that description.
- * :ref:`pdb2yaml_subcommand` - For a given PDB file, produce a YAML
- description of some or all of the file in a way that the PDB can be
- reconstructed.
- * :ref:`merge_subcommand` - Given two PDBs, produce a third PDB that is the
- result of merging the two input PDBs.
-
-.. _pretty_subcommand:
-
-pretty
-~~~~~~
-
-.. program:: llvm-pdbutil pretty
-
-.. important::
- The **pretty** subcommand is built on the Windows DIA SDK, and as such is not
- supported on non-Windows platforms.
-
-USAGE: :program:`llvm-pdbutil` pretty [*options*] <input PDB file>
-
-Summary
-^^^^^^^^^^^
-
-The *pretty* subcommand displays a very high level representation of your
-program's debug info. Since it is built on the Windows DIA SDK which is the
-standard API that Windows tools and debuggers query debug information, it
-presents a more authoritative view of how a debugger is going to interpret your
-debug information than a mode which displays low-level CodeView records.
-
-Options
-^^^^^^^
-
-Filtering and Sorting Options
-+++++++++++++++++++++++++++++
-
-.. note::
- *exclude* filters take priority over *include* filters. So if a filter
- matches both an include and an exclude rule, then it is excluded.
-
-.. option:: -exclude-compilands=<string>
-
- When dumping compilands, compiland source-file contributions, or per-compiland
- symbols, this option instructs **llvm-pdbutil** to omit any compilands that
- match the specified regular expression.
-
-.. option:: -exclude-symbols=<string>
-
- When dumping global, public, or per-compiland symbols, this option instructs
- **llvm-pdbutil** to omit any symbols that match the specified regular
- expression.
-
-.. option:: -exclude-types=<string>
-
- When dumping types, this option instructs **llvm-pdbutil** to omit any types
- that match the specified regular expression.
-
-.. option:: -include-compilands=<string>
-
- When dumping compilands, compiland source-file contributions, or per-compiland
- symbols, limit the initial search to only those compilands that match the
- specified regular expression.
-
-.. option:: -include-symbols=<string>
-
- When dumping global, public, or per-compiland symbols, limit the initial
- search to only those symbols that match the specified regular expression.
-
-.. option:: -include-types=<string>
-
- When dumping types, limit the initial search to only those types that match
- the specified regular expression.
-
-.. option:: -min-class-padding=<uint>
-
- Only display types that have at least the specified amount of alignment
- padding, accounting for padding in base classes and aggregate field members.
-
-.. option:: -min-class-padding-imm=<uint>
-
- Only display types that have at least the specified amount of alignment
- padding, ignoring padding in base classes and aggregate field members.
-
-.. option:: -min-type-size=<uint>
-
- Only display types T where sizeof(T) is greater than or equal to the specified
- amount.
-
-.. option:: -no-compiler-generated
-
- Don't show compiler generated types and symbols
-
-.. option:: -no-enum-definitions
-
- When dumping an enum, don't show the full enum (e.g. the individual enumerator
- values).
-
-.. option:: -no-system-libs
-
- Don't show symbols from system libraries
-
-Symbol Type Options
-+++++++++++++++++++
-.. option:: -all
-
- Implies all other options in this category.
-
-.. option:: -class-definitions=<format>
-
- Displays class definitions in the specified format.
-
- .. code-block:: text
-
- =all - Display all class members including data, constants, typedefs, functions, etc (default)
- =layout - Only display members that contribute to class size.
- =none - Don't display class definitions (e.g. only display the name and base list)
-
-.. option:: -class-order
-
- Displays classes in the specified order.
-
- .. code-block:: text
-
- =none - Undefined / no particular sort order (default)
- =name - Sort classes by name
- =size - Sort classes by size
- =padding - Sort classes by amount of padding
- =padding-pct - Sort classes by percentage of space consumed by padding
- =padding-imm - Sort classes by amount of immediate padding
- =padding-pct-imm - Sort classes by percentage of space consumed by immediate padding
-
-.. option:: -class-recurse-depth=<uint>
-
- When dumping class definitions, stop after recursing the specified number of times. The
- default is 0, which is no limit.
-
-.. option:: -classes
-
- Display classes
-
-.. option:: -compilands
-
- Display compilands (e.g. object files)
-
-.. option:: -enums
-
- Display enums
-
-.. option:: -externals
-
- Dump external (e.g. exported) symbols
-
-.. option:: -globals
-
- Dump global symbols
-
-.. option:: -lines
-
- Dump the mappings between source lines and code addresses.
-
-.. option:: -module-syms
-
- Display symbols (variables, functions, etc) for each compiland
-
-.. option:: -sym-types=<types>
-
- Type of symbols to dump when -globals, -externals, or -module-syms is
- specified. (default all)
-
- .. code-block:: text
-
- =thunks - Display thunk symbols
- =data - Display data symbols
- =funcs - Display function symbols
- =all - Display all symbols (default)
-
-.. option:: -symbol-order=<order>
-
- For symbols dumped via the -module-syms, -globals, or -externals options, sort
- the results in specified order.
-
- .. code-block:: text
-
- =none - Undefined / no particular sort order
- =name - Sort symbols by name
- =size - Sort symbols by size
-
-.. option:: -typedefs
-
- Display typedef types
-
-.. option:: -types
-
- Display all types (implies -classes, -enums, -typedefs)
-
-Other Options
-+++++++++++++
-
-.. option:: -color-output
-
- Force color output on or off. By default, color if used if outputting to a
- terminal.
-
-.. option:: -load-address=<uint>
-
- When displaying relative virtual addresses, assume the process is loaded at the
- given address and display what would be the absolute address.
-
-.. _dump_subcommand:
-
-dump
-~~~~
-
-USAGE: :program:`llvm-pdbutil` dump [*options*] <input PDB file>
-
-.. program:: llvm-pdbutil dump
-
-Summary
-^^^^^^^^^^^
-
-The **dump** subcommand displays low level information about the structure of a
-PDB file. It is used heavily by LLVM's testing infrastructure, but can also be
-used for PDB forensics. It serves a role similar to that of Microsoft's
-`cvdump` tool.
-
-.. note::
- The **dump** subcommand exposes internal details of the file format. As
- such, the reader should be familiar with :doc:`/PDB/index` before using this
- command.
-
-Options
-^^^^^^^
-
-MSF Container Options
-+++++++++++++++++++++
-
-.. option:: -streams
-
- dump a summary of all of the streams in the PDB file.
-
-.. option:: -stream-blocks
-
- In conjunction with :option:`-streams`, add information to the output about
- what blocks the specified stream occupies.
-
-.. option:: -summary
-
- Dump MSF and PDB header information.
-
-Module & File Options
-+++++++++++++++++++++
-
-.. option:: -modi=<uint>
-
- For all options that dump information from each module/compiland, limit to
- the specified module.
-
-.. option:: -files
-
- Dump the source files that contribute to each displayed module.
-
-.. option:: -il
-
- Dump inlinee line information (DEBUG_S_INLINEELINES CodeView subsection)
-
-.. option:: -l
-
- Dump line information (DEBUG_S_LINES CodeView subsection)
-
-.. option:: -modules
-
- Dump compiland information
-
-.. option:: -xme
-
- Dump cross module exports (DEBUG_S_CROSSSCOPEEXPORTS CodeView subsection)
-
-.. option:: -xmi
-
- Dump cross module imports (DEBUG_S_CROSSSCOPEIMPORTS CodeView subsection)
-
-Symbol Options
-++++++++++++++
-
-.. option:: -globals
-
- dump global symbol records
-
-.. option:: -global-extras
-
- dump additional information about the globals, such as hash buckets and hash
- values.
-
-.. option:: -publics
-
- dump public symbol records
-
-.. option:: -public-extras
-
- dump additional information about the publics, such as hash buckets and hash
- values.
-
-.. option:: -symbols
-
- dump symbols (functions, variables, etc) for each module dumped.
-
-.. option:: -sym-data
-
- For each symbol record dumped as a result of the :option:`-symbols` option,
- display the full bytes of the record in binary as well.
-
-Type Record Options
-+++++++++++++++++++
-
-.. option:: -types
-
- Dump CodeView type records from TPI stream
-
-.. option:: -type-extras
-
- Dump additional information from the TPI stream, such as hashes and the type
- index offsets array.
-
-.. option:: -type-data
-
- For each type record dumped, display the full bytes of the record in binary as
- well.
-
-.. option:: -type-index=<uint>
-
- Only dump types with the specified type index.
-
-.. option:: -ids
-
- Dump CodeView type records from IPI stream.
-
-.. option:: -id-extras
-
- Dump additional information from the IPI stream, such as hashes and the type
- index offsets array.
-
-.. option:: -id-data
-
- For each ID record dumped, display the full bytes of the record in binary as
- well.
-
-.. option:: -id-index=<uint>
-
- only dump ID records with the specified hexadecimal type index.
-
-.. option:: -dependents
-
- When used in conjunction with :option:`-type-index` or :option:`-id-index`,
- dumps the entire dependency graph for the specified index instead of just the
- single record with the specified index. For example, if type index 0x4000 is
- a function whose return type has index 0x3000, and you specify
- `-dependents=0x4000`, then this would dump both records (as well as any other
- dependents in the tree).
-
-Miscellaneous Options
-+++++++++++++++++++++
-
-.. option:: -all
-
- Implies most other options.
-
-.. option:: -section-contribs
-
- Dump section contributions.
-
-.. option:: -section-headers
-
- Dump image section headers.
-
-.. option:: -section-map
-
- Dump section map.
-
-.. option:: -string-table
-
- Dump PDB string table.
-
-.. _bytes_subcommand:
-
-bytes
-~~~~~
-
-USAGE: :program:`llvm-pdbutil` bytes [*options*] <input PDB file>
-
-.. program:: llvm-pdbutil bytes
-
-Summary
-^^^^^^^
-
-Like the **dump** subcommand, the **bytes** subcommand displays low level
-information about the structure of a PDB file, but it is used for even deeper
-forensics. The **bytes** subcommand finds various structures in a PDB file
-based on the command line options specified, and dumps them in hex. Someone
-working on support for emitting PDBs would use this heavily, for example, to
-compare one PDB against another PDB to ensure byte-for-byte compatibility. It
-is not enough to simply compare the bytes of an entire file, or an entire stream
-because it's perfectly fine for the same structure to exist at different
-locations in two different PDBs, and "finding" the structure is half the battle.
-
-Options
-^^^^^^^
-
-MSF File Options
-++++++++++++++++
-
-.. option:: -block-range=<start[-end]>
-
- Dump binary data from specified range of MSF file blocks.
-
-.. option:: -byte-range=<start[-end]>
-
- Dump binary data from specified range of bytes in the file.
-
-.. option:: -fpm
-
- Dump the MSF free page map.
-
-.. option:: -stream-data=<string>
-
- Dump binary data from the specified streams. Format is SN[:Start][@Size].
- For example, `-stream-data=7:3@12` dumps 12 bytes from stream 7, starting
- at offset 3 in the stream.
-
-PDB Stream Options
-++++++++++++++++++
-
-.. option:: -name-map
-
- Dump bytes of PDB Name Map
-
-DBI Stream Options
-++++++++++++++++++
-
-.. option:: -ec
-
- Dump the edit and continue map substream of the DBI stream.
-
-.. option:: -files
-
- Dump the file info substream of the DBI stream.
-
-.. option:: -modi
-
- Dump the modi substream of the DBI stream.
-
-.. option:: -sc
-
- Dump section contributions substream of the DBI stream.
-
-.. option:: -sm
-
- Dump the section map from the DBI stream.
-
-.. option:: -type-server
-
- Dump the type server map from the DBI stream.
-
-Module Options
-++++++++++++++
-
-.. option:: -mod=<uint>
-
- Limit all options in this category to the specified module index. By default,
- options in this category will dump bytes from all modules.
-
-.. option:: -chunks
-
- Dump the bytes of each module's C13 debug subsection.
-
-.. option:: -split-chunks
-
- When specified with :option:`-chunks`, split the C13 debug subsection into a
- separate chunk for each subsection type, and dump them separately.
-
-.. option:: -syms
-
- Dump the symbol record substream from each module.
-
-Type Record Options
-+++++++++++++++++++
-
-.. option:: -id=<uint>
-
- Dump the record from the IPI stream with the given type index.
-
-.. option:: -type=<uint>
-
- Dump the record from the TPI stream with the given type index.
-
-.. _pdb2yaml_subcommand:
-
-pdb2yaml
-~~~~~~~~
-
-USAGE: :program:`llvm-pdbutil` pdb2yaml [*options*] <input PDB file>
-
-.. program:: llvm-pdbutil pdb2yaml
-
-Summary
-^^^^^^^
-
-Options
-^^^^^^^
-
-.. _yaml2pdb_subcommand:
-
-yaml2pdb
-~~~~~~~~
-
-USAGE: :program:`llvm-pdbutil` yaml2pdb [*options*] <input YAML file>
-
-.. program:: llvm-pdbutil yaml2pdb
-
-Summary
-^^^^^^^
-
-Generate a PDB file from a YAML description. The YAML syntax is not described
-here. Instead, use :ref:`llvm-pdbutil pdb2yaml <pdb2yaml_subcommand>` and
-examine the output for an example starting point.
-
-Options
-^^^^^^^
-
-.. option:: -pdb=<file-name>
-
-Write the resulting PDB to the specified file.
-
-.. _merge_subcommand:
-
-merge
-~~~~~
-
-USAGE: :program:`llvm-pdbutil` merge [*options*] <input PDB file 1> <input PDB file 2>
-
-.. program:: llvm-pdbutil merge
-
-Summary
-^^^^^^^
-
-Merge two PDB files into a single file.
-
-Options
-^^^^^^^
-
-.. option:: -pdb=<file-name>
-
-Write the resulting PDB to the specified file.