diff options
Diffstat (limited to 'gnu/llvm/docs/CommandGuide/llvm-pdbutil.rst')
| -rw-r--r-- | gnu/llvm/docs/CommandGuide/llvm-pdbutil.rst | 585 |
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. |
