1*09467b48Spatrickllvm-pdbutil - PDB File forensics and diagnostics
2*09467b48Spatrick=================================================
3*09467b48Spatrick
4*09467b48Spatrick.. program:: llvm-pdbutil
5*09467b48Spatrick
6*09467b48Spatrick.. contents::
7*09467b48Spatrick   :local:
8*09467b48Spatrick
9*09467b48SpatrickSynopsis
10*09467b48Spatrick--------
11*09467b48Spatrick
12*09467b48Spatrick:program:`llvm-pdbutil` [*subcommand*] [*options*]
13*09467b48Spatrick
14*09467b48SpatrickDescription
15*09467b48Spatrick-----------
16*09467b48Spatrick
17*09467b48SpatrickDisplay types, symbols, CodeView records, and other information from a
18*09467b48SpatrickPDB file, as well as manipulate and create PDB files.  :program:`llvm-pdbutil`
19*09467b48Spatrickis normally used by FileCheck-based tests to test LLVM's PDB reading and
20*09467b48Spatrickwriting functionality, but can also be used for general PDB file investigation
21*09467b48Spatrickand forensics, or as a replacement for cvdump.
22*09467b48Spatrick
23*09467b48SpatrickSubcommands
24*09467b48Spatrick-----------
25*09467b48Spatrick
26*09467b48Spatrick:program:`llvm-pdbutil` is separated into several subcommands each tailored to
27*09467b48Spatricka different purpose.  A brief summary of each command follows, with more detail
28*09467b48Spatrickin the sections that follow.
29*09467b48Spatrick
30*09467b48Spatrick  * :ref:`pretty_subcommand` - Dump symbol and type information in a format that
31*09467b48Spatrick    tries to look as much like the original source code as possible.
32*09467b48Spatrick  * :ref:`dump_subcommand` - Dump low level types and structures from the PDB
33*09467b48Spatrick    file, including CodeView records, hash tables, PDB streams, etc.
34*09467b48Spatrick  * :ref:`bytes_subcommand` - Dump data from the PDB file's streams, records,
35*09467b48Spatrick    types, symbols, etc as raw bytes.
36*09467b48Spatrick  * :ref:`yaml2pdb_subcommand` - Given a yaml description of a PDB file, produce
37*09467b48Spatrick    a valid PDB file that matches that description.
38*09467b48Spatrick  * :ref:`pdb2yaml_subcommand` - For a given PDB file, produce a YAML
39*09467b48Spatrick    description of some or all of the file in a way that the PDB can be
40*09467b48Spatrick    reconstructed.
41*09467b48Spatrick  * :ref:`merge_subcommand` - Given two PDBs, produce a third PDB that is the
42*09467b48Spatrick    result of merging the two input PDBs.
43*09467b48Spatrick
44*09467b48Spatrick.. _pretty_subcommand:
45*09467b48Spatrick
46*09467b48Spatrickpretty
47*09467b48Spatrick~~~~~~
48*09467b48Spatrick
49*09467b48Spatrick.. program:: llvm-pdbutil pretty
50*09467b48Spatrick
51*09467b48Spatrick.. important::
52*09467b48Spatrick   The **pretty** subcommand is built on the Windows DIA SDK, and as such is not
53*09467b48Spatrick   supported on non-Windows platforms.
54*09467b48Spatrick
55*09467b48SpatrickUSAGE: :program:`llvm-pdbutil` pretty [*options*] <input PDB file>
56*09467b48Spatrick
57*09467b48SpatrickSummary
58*09467b48Spatrick^^^^^^^^^^^
59*09467b48Spatrick
60*09467b48SpatrickThe *pretty* subcommand displays a very high level representation of your
61*09467b48Spatrickprogram's debug info.  Since it is built on the Windows DIA SDK which is the
62*09467b48Spatrickstandard API that Windows tools and debuggers query debug information, it
63*09467b48Spatrickpresents a more authoritative view of how a debugger is going to interpret your
64*09467b48Spatrickdebug information than a mode which displays low-level CodeView records.
65*09467b48Spatrick
66*09467b48SpatrickOptions
67*09467b48Spatrick^^^^^^^
68*09467b48Spatrick
69*09467b48SpatrickFiltering and Sorting Options
70*09467b48Spatrick+++++++++++++++++++++++++++++
71*09467b48Spatrick
72*09467b48Spatrick.. note::
73*09467b48Spatrick   *exclude* filters take priority over *include* filters.  So if a filter
74*09467b48Spatrick   matches both an include and an exclude rule, then it is excluded.
75*09467b48Spatrick
76*09467b48Spatrick.. option:: -exclude-compilands=<string>
77*09467b48Spatrick
78*09467b48Spatrick When dumping compilands, compiland source-file contributions, or per-compiland
79*09467b48Spatrick symbols, this option instructs **llvm-pdbutil** to omit any compilands that
80*09467b48Spatrick match the specified regular expression.
81*09467b48Spatrick
82*09467b48Spatrick.. option:: -exclude-symbols=<string>
83*09467b48Spatrick
84*09467b48Spatrick When dumping global, public, or per-compiland symbols, this option instructs
85*09467b48Spatrick **llvm-pdbutil** to omit any symbols that match the specified regular
86*09467b48Spatrick expression.
87*09467b48Spatrick
88*09467b48Spatrick.. option:: -exclude-types=<string>
89*09467b48Spatrick
90*09467b48Spatrick When dumping types, this option instructs **llvm-pdbutil** to omit any types
91*09467b48Spatrick that match the specified regular expression.
92*09467b48Spatrick
93*09467b48Spatrick.. option:: -include-compilands=<string>
94*09467b48Spatrick
95*09467b48Spatrick When dumping compilands, compiland source-file contributions, or per-compiland
96*09467b48Spatrick symbols, limit the initial search to only those compilands that match the
97*09467b48Spatrick specified regular expression.
98*09467b48Spatrick
99*09467b48Spatrick.. option:: -include-symbols=<string>
100*09467b48Spatrick
101*09467b48Spatrick When dumping global, public, or per-compiland symbols, limit the initial
102*09467b48Spatrick search to only those symbols that match the specified regular expression.
103*09467b48Spatrick
104*09467b48Spatrick.. option:: -include-types=<string>
105*09467b48Spatrick
106*09467b48Spatrick When dumping types, limit the initial search to only those types that match
107*09467b48Spatrick the specified regular expression.
108*09467b48Spatrick
109*09467b48Spatrick.. option:: -min-class-padding=<uint>
110*09467b48Spatrick
111*09467b48Spatrick Only display types that have at least the specified amount of alignment
112*09467b48Spatrick padding, accounting for padding in base classes and aggregate field members.
113*09467b48Spatrick
114*09467b48Spatrick.. option:: -min-class-padding-imm=<uint>
115*09467b48Spatrick
116*09467b48Spatrick Only display types that have at least the specified amount of alignment
117*09467b48Spatrick padding, ignoring padding in base classes and aggregate field members.
118*09467b48Spatrick
119*09467b48Spatrick.. option:: -min-type-size=<uint>
120*09467b48Spatrick
121*09467b48Spatrick Only display types T where sizeof(T) is greater than or equal to the specified
122*09467b48Spatrick amount.
123*09467b48Spatrick
124*09467b48Spatrick.. option:: -no-compiler-generated
125*09467b48Spatrick
126*09467b48Spatrick Don't show compiler generated types and symbols
127*09467b48Spatrick
128*09467b48Spatrick.. option:: -no-enum-definitions
129*09467b48Spatrick
130*09467b48Spatrick When dumping an enum, don't show the full enum (e.g. the individual enumerator
131*09467b48Spatrick values).
132*09467b48Spatrick
133*09467b48Spatrick.. option:: -no-system-libs
134*09467b48Spatrick
135*09467b48Spatrick Don't show symbols from system libraries
136*09467b48Spatrick
137*09467b48SpatrickSymbol Type Options
138*09467b48Spatrick+++++++++++++++++++
139*09467b48Spatrick.. option:: -all
140*09467b48Spatrick
141*09467b48Spatrick Implies all other options in this category.
142*09467b48Spatrick
143*09467b48Spatrick.. option:: -class-definitions=<format>
144*09467b48Spatrick
145*09467b48Spatrick Displays class definitions in the specified format.
146*09467b48Spatrick
147*09467b48Spatrick .. code-block:: text
148*09467b48Spatrick
149*09467b48Spatrick    =all      - Display all class members including data, constants, typedefs, functions, etc (default)
150*09467b48Spatrick    =layout   - Only display members that contribute to class size.
151*09467b48Spatrick    =none     - Don't display class definitions (e.g. only display the name and base list)
152*09467b48Spatrick
153*09467b48Spatrick.. option:: -class-order
154*09467b48Spatrick
155*09467b48Spatrick Displays classes in the specified order.
156*09467b48Spatrick
157*09467b48Spatrick .. code-block:: text
158*09467b48Spatrick
159*09467b48Spatrick    =none            - Undefined / no particular sort order (default)
160*09467b48Spatrick    =name            - Sort classes by name
161*09467b48Spatrick    =size            - Sort classes by size
162*09467b48Spatrick    =padding         - Sort classes by amount of padding
163*09467b48Spatrick    =padding-pct     - Sort classes by percentage of space consumed by padding
164*09467b48Spatrick    =padding-imm     - Sort classes by amount of immediate padding
165*09467b48Spatrick    =padding-pct-imm - Sort classes by percentage of space consumed by immediate padding
166*09467b48Spatrick
167*09467b48Spatrick.. option::  -class-recurse-depth=<uint>
168*09467b48Spatrick
169*09467b48Spatrick When dumping class definitions, stop after recursing the specified number of times.  The
170*09467b48Spatrick default is 0, which is no limit.
171*09467b48Spatrick
172*09467b48Spatrick.. option::  -classes
173*09467b48Spatrick
174*09467b48Spatrick Display classes
175*09467b48Spatrick
176*09467b48Spatrick.. option::  -compilands
177*09467b48Spatrick
178*09467b48Spatrick Display compilands (e.g. object files)
179*09467b48Spatrick
180*09467b48Spatrick.. option::  -enums
181*09467b48Spatrick
182*09467b48Spatrick Display enums
183*09467b48Spatrick
184*09467b48Spatrick.. option::  -externals
185*09467b48Spatrick
186*09467b48Spatrick Dump external (e.g. exported) symbols
187*09467b48Spatrick
188*09467b48Spatrick.. option::  -globals
189*09467b48Spatrick
190*09467b48Spatrick Dump global symbols
191*09467b48Spatrick
192*09467b48Spatrick.. option::  -lines
193*09467b48Spatrick
194*09467b48Spatrick Dump the mappings between source lines and code addresses.
195*09467b48Spatrick
196*09467b48Spatrick.. option::  -module-syms
197*09467b48Spatrick
198*09467b48Spatrick Display symbols (variables, functions, etc) for each compiland
199*09467b48Spatrick
200*09467b48Spatrick.. option::  -sym-types=<types>
201*09467b48Spatrick
202*09467b48Spatrick Type of symbols to dump when -globals, -externals, or -module-syms is
203*09467b48Spatrick specified. (default all)
204*09467b48Spatrick
205*09467b48Spatrick .. code-block:: text
206*09467b48Spatrick
207*09467b48Spatrick    =thunks - Display thunk symbols
208*09467b48Spatrick    =data   - Display data symbols
209*09467b48Spatrick    =funcs  - Display function symbols
210*09467b48Spatrick    =all    - Display all symbols (default)
211*09467b48Spatrick
212*09467b48Spatrick.. option::  -symbol-order=<order>
213*09467b48Spatrick
214*09467b48Spatrick For symbols dumped via the -module-syms, -globals, or -externals options, sort
215*09467b48Spatrick the results in specified order.
216*09467b48Spatrick
217*09467b48Spatrick .. code-block:: text
218*09467b48Spatrick
219*09467b48Spatrick    =none - Undefined / no particular sort order
220*09467b48Spatrick    =name - Sort symbols by name
221*09467b48Spatrick    =size - Sort symbols by size
222*09467b48Spatrick
223*09467b48Spatrick.. option::  -typedefs
224*09467b48Spatrick
225*09467b48Spatrick Display typedef types
226*09467b48Spatrick
227*09467b48Spatrick.. option::  -types
228*09467b48Spatrick
229*09467b48Spatrick Display all types (implies -classes, -enums, -typedefs)
230*09467b48Spatrick
231*09467b48SpatrickOther Options
232*09467b48Spatrick+++++++++++++
233*09467b48Spatrick
234*09467b48Spatrick.. option:: -color-output
235*09467b48Spatrick
236*09467b48Spatrick Force color output on or off.  By default, color if used if outputting to a
237*09467b48Spatrick terminal.
238*09467b48Spatrick
239*09467b48Spatrick.. option:: -load-address=<uint>
240*09467b48Spatrick
241*09467b48Spatrick When displaying relative virtual addresses, assume the process is loaded at the
242*09467b48Spatrick given address and display what would be the absolute address.
243*09467b48Spatrick
244*09467b48Spatrick.. _dump_subcommand:
245*09467b48Spatrick
246*09467b48Spatrickdump
247*09467b48Spatrick~~~~
248*09467b48Spatrick
249*09467b48SpatrickUSAGE: :program:`llvm-pdbutil` dump [*options*] <input PDB file>
250*09467b48Spatrick
251*09467b48Spatrick.. program:: llvm-pdbutil dump
252*09467b48Spatrick
253*09467b48SpatrickSummary
254*09467b48Spatrick^^^^^^^^^^^
255*09467b48Spatrick
256*09467b48SpatrickThe **dump** subcommand displays low level information about the structure of a
257*09467b48SpatrickPDB file.  It is used heavily by LLVM's testing infrastructure, but can also be
258*09467b48Spatrickused for PDB forensics.  It serves a role similar to that of Microsoft's
259*09467b48Spatrick`cvdump` tool.
260*09467b48Spatrick
261*09467b48Spatrick.. note::
262*09467b48Spatrick   The **dump** subcommand exposes internal details of the file format.  As
263*09467b48Spatrick   such, the reader should be familiar with :doc:`/PDB/index` before using this
264*09467b48Spatrick   command.
265*09467b48Spatrick
266*09467b48SpatrickOptions
267*09467b48Spatrick^^^^^^^
268*09467b48Spatrick
269*09467b48SpatrickMSF Container Options
270*09467b48Spatrick+++++++++++++++++++++
271*09467b48Spatrick
272*09467b48Spatrick.. option:: -streams
273*09467b48Spatrick
274*09467b48Spatrick dump a summary of all of the streams in the PDB file.
275*09467b48Spatrick
276*09467b48Spatrick.. option:: -stream-blocks
277*09467b48Spatrick
278*09467b48Spatrick In conjunction with :option:`-streams`, add information to the output about
279*09467b48Spatrick what blocks the specified stream occupies.
280*09467b48Spatrick
281*09467b48Spatrick.. option:: -summary
282*09467b48Spatrick
283*09467b48Spatrick Dump MSF and PDB header information.
284*09467b48Spatrick
285*09467b48SpatrickModule & File Options
286*09467b48Spatrick+++++++++++++++++++++
287*09467b48Spatrick
288*09467b48Spatrick.. option:: -modi=<uint>
289*09467b48Spatrick
290*09467b48Spatrick For all options that dump information from each module/compiland, limit to
291*09467b48Spatrick the specified module.
292*09467b48Spatrick
293*09467b48Spatrick.. option:: -files
294*09467b48Spatrick
295*09467b48Spatrick Dump the source files that contribute to each displayed module.
296*09467b48Spatrick
297*09467b48Spatrick.. option:: -il
298*09467b48Spatrick
299*09467b48Spatrick Dump inlinee line information (DEBUG_S_INLINEELINES CodeView subsection)
300*09467b48Spatrick
301*09467b48Spatrick.. option:: -l
302*09467b48Spatrick
303*09467b48Spatrick Dump line information (DEBUG_S_LINES CodeView subsection)
304*09467b48Spatrick
305*09467b48Spatrick.. option:: -modules
306*09467b48Spatrick
307*09467b48Spatrick Dump compiland information
308*09467b48Spatrick
309*09467b48Spatrick.. option:: -xme
310*09467b48Spatrick
311*09467b48Spatrick Dump cross module exports (DEBUG_S_CROSSSCOPEEXPORTS CodeView subsection)
312*09467b48Spatrick
313*09467b48Spatrick.. option:: -xmi
314*09467b48Spatrick
315*09467b48Spatrick Dump cross module imports (DEBUG_S_CROSSSCOPEIMPORTS CodeView subsection)
316*09467b48Spatrick
317*09467b48SpatrickSymbol Options
318*09467b48Spatrick++++++++++++++
319*09467b48Spatrick
320*09467b48Spatrick.. option:: -globals
321*09467b48Spatrick
322*09467b48Spatrick dump global symbol records
323*09467b48Spatrick
324*09467b48Spatrick.. option:: -global-extras
325*09467b48Spatrick
326*09467b48Spatrick dump additional information about the globals, such as hash buckets and hash
327*09467b48Spatrick values.
328*09467b48Spatrick
329*09467b48Spatrick.. option:: -publics
330*09467b48Spatrick
331*09467b48Spatrick dump public symbol records
332*09467b48Spatrick
333*09467b48Spatrick.. option:: -public-extras
334*09467b48Spatrick
335*09467b48Spatrick dump additional information about the publics, such as hash buckets and hash
336*09467b48Spatrick values.
337*09467b48Spatrick
338*09467b48Spatrick.. option:: -symbols
339*09467b48Spatrick
340*09467b48Spatrick dump symbols (functions, variables, etc) for each module dumped.
341*09467b48Spatrick
342*09467b48Spatrick.. option:: -sym-data
343*09467b48Spatrick
344*09467b48Spatrick For each symbol record dumped as a result of the :option:`-symbols` option,
345*09467b48Spatrick display the full bytes of the record in binary as well.
346*09467b48Spatrick
347*09467b48SpatrickType Record Options
348*09467b48Spatrick+++++++++++++++++++
349*09467b48Spatrick
350*09467b48Spatrick.. option:: -types
351*09467b48Spatrick
352*09467b48Spatrick Dump CodeView type records from TPI stream
353*09467b48Spatrick
354*09467b48Spatrick.. option:: -type-extras
355*09467b48Spatrick
356*09467b48Spatrick Dump additional information from the TPI stream, such as hashes and the type
357*09467b48Spatrick index offsets array.
358*09467b48Spatrick
359*09467b48Spatrick.. option:: -type-data
360*09467b48Spatrick
361*09467b48Spatrick For each type record dumped, display the full bytes of the record in binary as
362*09467b48Spatrick well.
363*09467b48Spatrick
364*09467b48Spatrick.. option:: -type-index=<uint>
365*09467b48Spatrick
366*09467b48Spatrick Only dump types with the specified type index.
367*09467b48Spatrick
368*09467b48Spatrick.. option:: -ids
369*09467b48Spatrick
370*09467b48Spatrick Dump CodeView type records from IPI stream.
371*09467b48Spatrick
372*09467b48Spatrick.. option:: -id-extras
373*09467b48Spatrick
374*09467b48Spatrick Dump additional information from the IPI stream, such as hashes and the type
375*09467b48Spatrick index offsets array.
376*09467b48Spatrick
377*09467b48Spatrick.. option:: -id-data
378*09467b48Spatrick
379*09467b48Spatrick For each ID record dumped, display the full bytes of the record in binary as
380*09467b48Spatrick well.
381*09467b48Spatrick
382*09467b48Spatrick.. option:: -id-index=<uint>
383*09467b48Spatrick
384*09467b48Spatrick only dump ID records with the specified hexadecimal type index.
385*09467b48Spatrick
386*09467b48Spatrick.. option:: -dependents
387*09467b48Spatrick
388*09467b48Spatrick When used in conjunction with :option:`-type-index` or :option:`-id-index`,
389*09467b48Spatrick dumps the entire dependency graph for the specified index instead of just the
390*09467b48Spatrick single record with the specified index.  For example, if type index 0x4000 is
391*09467b48Spatrick a function whose return type has index 0x3000, and you specify
392*09467b48Spatrick `-dependents=0x4000`, then this would dump both records (as well as any other
393*09467b48Spatrick dependents in the tree).
394*09467b48Spatrick
395*09467b48SpatrickMiscellaneous Options
396*09467b48Spatrick+++++++++++++++++++++
397*09467b48Spatrick
398*09467b48Spatrick.. option:: -all
399*09467b48Spatrick
400*09467b48Spatrick Implies most other options.
401*09467b48Spatrick
402*09467b48Spatrick.. option:: -section-contribs
403*09467b48Spatrick
404*09467b48Spatrick Dump section contributions.
405*09467b48Spatrick
406*09467b48Spatrick.. option:: -section-headers
407*09467b48Spatrick
408*09467b48Spatrick Dump image section headers.
409*09467b48Spatrick
410*09467b48Spatrick.. option:: -section-map
411*09467b48Spatrick
412*09467b48Spatrick Dump section map.
413*09467b48Spatrick
414*09467b48Spatrick.. option:: -string-table
415*09467b48Spatrick
416*09467b48Spatrick Dump PDB string table.
417*09467b48Spatrick
418*09467b48Spatrick.. _bytes_subcommand:
419*09467b48Spatrick
420*09467b48Spatrickbytes
421*09467b48Spatrick~~~~~
422*09467b48Spatrick
423*09467b48SpatrickUSAGE: :program:`llvm-pdbutil` bytes [*options*] <input PDB file>
424*09467b48Spatrick
425*09467b48Spatrick.. program:: llvm-pdbutil bytes
426*09467b48Spatrick
427*09467b48SpatrickSummary
428*09467b48Spatrick^^^^^^^
429*09467b48Spatrick
430*09467b48SpatrickLike the **dump** subcommand, the **bytes** subcommand displays low level
431*09467b48Spatrickinformation about the structure of a PDB file, but it is used for even deeper
432*09467b48Spatrickforensics.  The **bytes** subcommand finds various structures in a PDB file
433*09467b48Spatrickbased on the command line options specified, and dumps them in hex.  Someone
434*09467b48Spatrickworking on support for emitting PDBs would use this heavily, for example, to
435*09467b48Spatrickcompare one PDB against another PDB to ensure byte-for-byte compatibility.  It
436*09467b48Spatrickis not enough to simply compare the bytes of an entire file, or an entire stream
437*09467b48Spatrickbecause it's perfectly fine for the same structure to exist at different
438*09467b48Spatricklocations in two different PDBs, and "finding" the structure is half the battle.
439*09467b48Spatrick
440*09467b48SpatrickOptions
441*09467b48Spatrick^^^^^^^
442*09467b48Spatrick
443*09467b48SpatrickMSF File Options
444*09467b48Spatrick++++++++++++++++
445*09467b48Spatrick
446*09467b48Spatrick.. option:: -block-range=<start[-end]>
447*09467b48Spatrick
448*09467b48Spatrick Dump binary data from specified range of MSF file blocks.
449*09467b48Spatrick
450*09467b48Spatrick.. option:: -byte-range=<start[-end]>
451*09467b48Spatrick
452*09467b48Spatrick Dump binary data from specified range of bytes in the file.
453*09467b48Spatrick
454*09467b48Spatrick.. option:: -fpm
455*09467b48Spatrick
456*09467b48Spatrick Dump the MSF free page map.
457*09467b48Spatrick
458*09467b48Spatrick.. option:: -stream-data=<string>
459*09467b48Spatrick
460*09467b48Spatrick Dump binary data from the specified streams.  Format is SN[:Start][@Size].
461*09467b48Spatrick For example, `-stream-data=7:3@12` dumps 12 bytes from stream 7, starting
462*09467b48Spatrick at offset 3 in the stream.
463*09467b48Spatrick
464*09467b48SpatrickPDB Stream Options
465*09467b48Spatrick++++++++++++++++++
466*09467b48Spatrick
467*09467b48Spatrick.. option:: -name-map
468*09467b48Spatrick
469*09467b48Spatrick Dump bytes of PDB Name Map
470*09467b48Spatrick
471*09467b48SpatrickDBI Stream Options
472*09467b48Spatrick++++++++++++++++++
473*09467b48Spatrick
474*09467b48Spatrick.. option:: -ec
475*09467b48Spatrick
476*09467b48Spatrick Dump the edit and continue map substream of the DBI stream.
477*09467b48Spatrick
478*09467b48Spatrick.. option:: -files
479*09467b48Spatrick
480*09467b48Spatrick Dump the file info substream of the DBI stream.
481*09467b48Spatrick
482*09467b48Spatrick.. option:: -modi
483*09467b48Spatrick
484*09467b48Spatrick Dump the modi substream of the DBI stream.
485*09467b48Spatrick
486*09467b48Spatrick.. option:: -sc
487*09467b48Spatrick
488*09467b48Spatrick Dump section contributions substream of the DBI stream.
489*09467b48Spatrick
490*09467b48Spatrick.. option:: -sm
491*09467b48Spatrick
492*09467b48Spatrick Dump the section map from the DBI stream.
493*09467b48Spatrick
494*09467b48Spatrick.. option:: -type-server
495*09467b48Spatrick
496*09467b48Spatrick Dump the type server map from the DBI stream.
497*09467b48Spatrick
498*09467b48SpatrickModule Options
499*09467b48Spatrick++++++++++++++
500*09467b48Spatrick
501*09467b48Spatrick.. option:: -mod=<uint>
502*09467b48Spatrick
503*09467b48Spatrick Limit all options in this category to the specified module index.  By default,
504*09467b48Spatrick options in this category will dump bytes from all modules.
505*09467b48Spatrick
506*09467b48Spatrick.. option:: -chunks
507*09467b48Spatrick
508*09467b48Spatrick Dump the bytes of each module's C13 debug subsection.
509*09467b48Spatrick
510*09467b48Spatrick.. option:: -split-chunks
511*09467b48Spatrick
512*09467b48Spatrick When specified with :option:`-chunks`, split the C13 debug subsection into a
513*09467b48Spatrick separate chunk for each subsection type, and dump them separately.
514*09467b48Spatrick
515*09467b48Spatrick.. option:: -syms
516*09467b48Spatrick
517*09467b48Spatrick Dump the symbol record substream from each module.
518*09467b48Spatrick
519*09467b48SpatrickType Record Options
520*09467b48Spatrick+++++++++++++++++++
521*09467b48Spatrick
522*09467b48Spatrick.. option:: -id=<uint>
523*09467b48Spatrick
524*09467b48Spatrick Dump the record from the IPI stream with the given type index.
525*09467b48Spatrick
526*09467b48Spatrick.. option:: -type=<uint>
527*09467b48Spatrick
528*09467b48Spatrick Dump the record from the TPI stream with the given type index.
529*09467b48Spatrick
530*09467b48Spatrick.. _pdb2yaml_subcommand:
531*09467b48Spatrick
532*09467b48Spatrickpdb2yaml
533*09467b48Spatrick~~~~~~~~
534*09467b48Spatrick
535*09467b48SpatrickUSAGE: :program:`llvm-pdbutil` pdb2yaml [*options*] <input PDB file>
536*09467b48Spatrick
537*09467b48Spatrick.. program:: llvm-pdbutil pdb2yaml
538*09467b48Spatrick
539*09467b48SpatrickSummary
540*09467b48Spatrick^^^^^^^
541*09467b48Spatrick
542*09467b48SpatrickOptions
543*09467b48Spatrick^^^^^^^
544*09467b48Spatrick
545*09467b48Spatrick.. _yaml2pdb_subcommand:
546*09467b48Spatrick
547*09467b48Spatrickyaml2pdb
548*09467b48Spatrick~~~~~~~~
549*09467b48Spatrick
550*09467b48SpatrickUSAGE: :program:`llvm-pdbutil` yaml2pdb [*options*] <input YAML file>
551*09467b48Spatrick
552*09467b48Spatrick.. program:: llvm-pdbutil yaml2pdb
553*09467b48Spatrick
554*09467b48SpatrickSummary
555*09467b48Spatrick^^^^^^^
556*09467b48Spatrick
557*09467b48SpatrickGenerate a PDB file from a YAML description.  The YAML syntax is not described
558*09467b48Spatrickhere.  Instead, use :ref:`llvm-pdbutil pdb2yaml <pdb2yaml_subcommand>` and
559*09467b48Spatrickexamine the output for an example starting point.
560*09467b48Spatrick
561*09467b48SpatrickOptions
562*09467b48Spatrick^^^^^^^
563*09467b48Spatrick
564*09467b48Spatrick.. option:: -pdb=<file-name>
565*09467b48Spatrick
566*09467b48SpatrickWrite the resulting PDB to the specified file.
567*09467b48Spatrick
568*09467b48Spatrick.. _merge_subcommand:
569*09467b48Spatrick
570*09467b48Spatrickmerge
571*09467b48Spatrick~~~~~
572*09467b48Spatrick
573*09467b48SpatrickUSAGE: :program:`llvm-pdbutil` merge [*options*] <input PDB file 1> <input PDB file 2>
574*09467b48Spatrick
575*09467b48Spatrick.. program:: llvm-pdbutil merge
576*09467b48Spatrick
577*09467b48SpatrickSummary
578*09467b48Spatrick^^^^^^^
579*09467b48Spatrick
580*09467b48SpatrickMerge two PDB files into a single file.
581*09467b48Spatrick
582*09467b48SpatrickOptions
583*09467b48Spatrick^^^^^^^
584*09467b48Spatrick
585*09467b48Spatrick.. option:: -pdb=<file-name>
586*09467b48Spatrick
587*09467b48SpatrickWrite the resulting PDB to the specified file.
588