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