[lld] r305495 - [llvm-pdbutil] rewrite the "raw" output style.

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 15 12:34:42 PDT 2017


Author: zturner
Date: Thu Jun 15 14:34:41 2017
New Revision: 305495

URL: http://llvm.org/viewvc/llvm-project?rev=305495&view=rev
Log:
[llvm-pdbutil] rewrite the "raw" output style.

After some internal discussions, we agreed that the raw output style had
outlived its usefulness. It was originally created before we had even
thought of dumping to YAML, and it was intended to give us some insight
into the internals of a PDB file. Now we have YAML mode which does
almost exactly this but is more powerful in that it can round-trip back
to a PDB, which the raw mode could not do. So the raw mode had become
purely a maintenance burden.

One option was to just delete it. However, its original goal was to be
as readable as possible while staying close to the "metal" - i.e.
presenting the output in a way that maps directly to the underlying file
format. We don't actually need that last requirement anymore since it's
covered by the yaml mode, so we could repurpose "raw" mode to actually
just be as readable as possible.

This patch implements about 80% of the functionality previously in raw
mode, but in a completely different style that is more akin to what
cvdump outputs. Records are very compressed, often times appearing on
just one line. One nice thing about this is that it makes full record
matching easier, because you can grep for indices, names, and leaf types
on a single line often.

See the tests for some examples of what the new output looks like.

Note that this patch actually regresses the functionality of raw mode in
a few areas, but only because the patch was already unreasonably large
and going 100% would have been even worse. Specifically, this patch is
missing:

The ability to dump module debug subsections (checksums, lines, etc)
The ability to dump section headers
Aside from that everything is here. While goign through the tests fixing
them all up, I found many duplicate tests. They've been deleted. In
subsequent patches I will go through and re-add the missing
functionality.

Differential Revision: https://reviews.llvm.org/D34191

Modified:
    lld/trunk/test/COFF/pdb-lib.s
    lld/trunk/test/COFF/pdb.test

Modified: lld/trunk/test/COFF/pdb-lib.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/pdb-lib.s?rev=305495&r1=305494&r2=305495&view=diff
==============================================================================
--- lld/trunk/test/COFF/pdb-lib.s (original)
+++ lld/trunk/test/COFF/pdb-lib.s Thu Jun 15 14:34:41 2017
@@ -8,48 +8,17 @@
 # Make sure that the PDB has module descriptors. foo.obj and bar.lib should be
 # absolute paths, and bar.obj should be the relative path passed to llvm-lib.
 
-# CHECK-LABEL: Modules [
-# CHECK-NEXT:   {
-# CHECK-NEXT:     Name: {{.*pdb-lib.s.tmp[/\\]foo.obj}}
-# CHECK-NEXT:     Debug Stream Index:
-# CHECK-NEXT:     Object File Name: {{.*pdb-lib.s.tmp[/\\]foo.obj}}
-# CHECK-NEXT:     Num Files: 0
-# CHECK-NEXT:     Source File Name Idx: 0
-# CHECK-NEXT:     Pdb File Name Idx: 0
-# CHECK-NEXT:     Line Info Byte Size: 0
-# CHECK-NEXT:     C13 Line Info Byte Size: 0
-# CHECK-NEXT:     Symbol Byte Size: 4
-# CHECK-NEXT:     Type Server Index: 0
-# CHECK-NEXT:     Has EC Info: No
-# CHECK-NEXT:   }
-# CHECK-NEXT:   {
-# CHECK-NEXT:     Name: bar.obj
-# CHECK-NEXT:     Debug Stream Index:
-# CHECK-NEXT:     Object File Name: {{.*pdb-lib.s.tmp[/\\]bar.lib}}
-# CHECK-NEXT:     Num Files: 0
-# CHECK-NEXT:     Source File Name Idx: 0
-# CHECK-NEXT:     Pdb File Name Idx: 0
-# CHECK-NEXT:     Line Info Byte Size: 0
-# CHECK-NEXT:     C13 Line Info Byte Size: 0
-# CHECK-NEXT:     Symbol Byte Size: 4
-# CHECK-NEXT:     Type Server Index: 0
-# CHECK-NEXT:     Has EC Info: No
-# CHECK-NEXT:   }
-# CHECK-NEXT:   {
-# CHECK-NEXT:     Name: * Linker *
-# CHECK-NEXT:     Debug Stream Index:
-# CHECK-NEXT:     Object File Name:
-# CHECK-NEXT:     Num Files: 0
-# CHECK-NEXT:     Source File Name Idx: 0
-# CHECK-NEXT:     Pdb File Name Idx: 0
-# CHECK-NEXT:     Line Info Byte Size: 0
-# CHECK-NEXT:     C13 Line Info Byte Size: 0
-# CHECK-NEXT:     Symbol Byte Size: 4
-# CHECK-NEXT:     Type Server Index: 0
-# CHECK-NEXT:     Has EC Info: No
-# CHECK-NEXT:   }
-# CHECK-NEXT: ]
-
+# CHECK:                               Modules
+# CHECK-NEXT: ============================================================
+# CHECK-NEXT:   Mod 0000 | Name: `{{.*pdb-lib.s.tmp[/\\]foo.obj}}`:
+# CHECK-NEXT:              Obj: `{{.*pdb-lib.s.tmp[/\\]foo.obj}}`:
+# CHECK-NEXT:              debug stream: 9, # files: 0, has ec info: false
+# CHECK-NEXT:   Mod 0001 | Name: `bar.obj`:
+# CHECK-NEXT:              Obj: `{{.*pdb-lib.s.tmp[/\\]bar.lib}}`:
+# CHECK-NEXT:              debug stream: 10, # files: 0, has ec info: false
+# CHECK-NEXT:   Mod 0002 | Name: `* Linker *`:
+# CHECK-NEXT:              Obj: ``:
+# CHECK-NEXT:              debug stream: 11, # files: 0, has ec info: false
 
         .def     _main;
         .scl    2;

Modified: lld/trunk/test/COFF/pdb.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/pdb.test?rev=305495&r1=305494&r2=305495&view=diff
==============================================================================
--- lld/trunk/test/COFF/pdb.test (original)
+++ lld/trunk/test/COFF/pdb.test Thu Jun 15 14:34:41 2017
@@ -6,8 +6,8 @@
 # RUN: llvm-pdbutil pdb2yaml -stream-metadata -stream-directory -pdb-stream \
 # RUN:   -dbi-stream -ipi-stream -tpi-stream %t.pdb | FileCheck %s
 
-# RUN: llvm-pdbutil raw -modules -section-map -section-headers -section-contribs \
-# RUN:   -tpi-records %t.pdb | FileCheck -check-prefix RAW %s
+# RUN: llvm-pdbutil raw -modules -section-map -section-contribs \
+# RUN:   -types -ids %t.pdb | FileCheck -check-prefix RAW %s
 
 # CHECK:      MSF:
 # CHECK-NEXT:   SuperBlock:
@@ -19,9 +19,9 @@
 # CHECK-NEXT:     BlockMapAddr:
 # CHECK-NEXT:   NumDirectoryBlocks:
 # CHECK-NEXT:   DirectoryBlocks:
-# CHECK-NEXT:   NumStreams:      
-# CHECK-NEXT:   FileSize:        
-# CHECK-NEXT: StreamSizes:     
+# CHECK-NEXT:   NumStreams:
+# CHECK-NEXT:   FileSize:
+# CHECK-NEXT: StreamSizes:
 # CHECK-NEXT: StreamMap:
 # CHECK:      PdbStream:
 # CHECK-NEXT:   Age:             1
@@ -115,322 +115,85 @@
 # CHECK-NEXT:       BuildInfo:
 # CHECK-NEXT:         ArgIndices:      [ 4098, 4099, 4106, 4104, 4102 ]
 
-# RAW:      Type Info Stream (TPI) {
-# RAW-NEXT:   TPI Version: 20040203
-# RAW-NEXT:   Record count: 5
-# RAW-NEXT:   Records [
-# RAW-NEXT:     {
-# RAW-NEXT:       ArgList (0x1000) {
-# RAW-NEXT:         TypeLeafKind: LF_ARGLIST (0x1201)
-# RAW-NEXT:         NumArgs: 0
-# RAW-NEXT:         Arguments [
-# RAW-NEXT:         ]
-# RAW-NEXT:       }
-# RAW-NEXT:     }
-# RAW-NEXT:     {
-# RAW-NEXT:       Procedure (0x1001) {
-# RAW-NEXT:         TypeLeafKind: LF_PROCEDURE (0x1008)
-# RAW-NEXT:         ReturnType: int (0x74)
-# RAW-NEXT:         CallingConvention: NearC (0x0)
-# RAW-NEXT:         FunctionOptions [ (0x0)
-# RAW-NEXT:         ]
-# RAW-NEXT:         NumParameters: 0
-# RAW-NEXT:         ArgListType: () (0x1000)
-# RAW-NEXT:       }
-# RAW-NEXT:     }
-# RAW-NEXT:     {
-# RAW-NEXT:       Pointer (0x1002) {
-# RAW-NEXT:         TypeLeafKind: LF_POINTER (0x1002)
-# RAW-NEXT:         PointeeType: int () (0x1001)
-# RAW-NEXT:         PointerAttributes: 0x1000C
-# RAW-NEXT:         PtrType: Near64 (0xC)
-# RAW-NEXT:         PtrMode: Pointer (0x0)
-# RAW-NEXT:         IsFlat: 0
-# RAW-NEXT:         IsConst: 0
-# RAW-NEXT:         IsVolatile: 0
-# RAW-NEXT:         IsUnaligned: 0
-# RAW-NEXT:         SizeOf: 8
-# RAW-NEXT:       }
-# RAW-NEXT:     }
-# RAW-NEXT:     {
-# RAW-NEXT:       ArgList (0x1003) {
-# RAW-NEXT:         TypeLeafKind: LF_ARGLIST (0x1201)
-# RAW-NEXT:         NumArgs: 1
-# RAW-NEXT:         Arguments [
-# RAW-NEXT:           ArgType: 0x0
-# RAW-NEXT:         ]
-# RAW-NEXT:       }
-# RAW-NEXT:     }
-# RAW-NEXT:     {
-# RAW-NEXT:       Procedure (0x1004) {
-# RAW-NEXT:         TypeLeafKind: LF_PROCEDURE (0x1008)
-# RAW-NEXT:         ReturnType: int (0x74)
-# RAW-NEXT:         CallingConvention: NearC (0x0)
-# RAW-NEXT:         FunctionOptions [ (0x0)
-# RAW-NEXT:         ]
-# RAW-NEXT:         NumParameters: 0
-# RAW-NEXT:         ArgListType: (<no type>) (0x1003)
-# RAW-NEXT:       }
-# RAW-NEXT:     }
-# RAW-NEXT:     TypeIndexOffsets [
-# RAW-NEXT:       Index: 0x1000, Offset: 0
-# RAW-NEXT:     ]
-# RAW-NEXT:   ]
-# RAW-NEXT: }
-# RAW-NEXT: DBI Stream {
-# RAW-NEXT:   Dbi Version: 20091201
-# RAW-NEXT:   Age: 1
-# RAW-NEXT:   Incremental Linking: No
-# RAW-NEXT:   Has CTypes: No
-# RAW-NEXT:   Is Stripped: No
-# RAW-NEXT:   Machine Type: x86
-# RAW-NEXT:   Symbol Record Stream Index: 65535
-# RAW-NEXT:   Public Symbol Stream Index: 65535
-# RAW-NEXT:   Global Symbol Stream Index: 65535
-# RAW-NEXT:   Toolchain Version: 0.0
-# RAW-NEXT:   mspdb00.dll version: 0.0.0
-# RAW-NEXT:   Modules [
-# RAW-NEXT:     {
-# RAW-NEXT:       Name: {{.*}}tmp1.obj
-# RAW-NEXT:       Debug Stream Index: 9
-# RAW-NEXT:       Object File Name: {{.*}}tmp1.obj
-# RAW-NEXT:       Num Files: 0
-# RAW-NEXT:       Source File Name Idx: 0
-# RAW-NEXT:       Pdb File Name Idx: 0
-# RAW-NEXT:       Line Info Byte Size: 0
-# RAW-NEXT:       C13 Line Info Byte Size: 0
-# RAW-NEXT:       Symbol Byte Size: 4
-# RAW-NEXT:       Type Server Index: 0
-# RAW-NEXT:       Has EC Info: No
-# RAW-NEXT:     }
-# RAW-NEXT:     {
-# RAW-NEXT:       Name: {{.*}}tmp2.obj
-# RAW-NEXT:       Debug Stream Index: 10
-# RAW-NEXT:       Object File Name: {{.*}}tmp2.obj
-# RAW-NEXT:       Num Files: 0
-# RAW-NEXT:       Source File Name Idx: 0
-# RAW-NEXT:       Pdb File Name Idx: 0
-# RAW-NEXT:       Line Info Byte Size: 0
-# RAW-NEXT:       C13 Line Info Byte Size: 0
-# RAW-NEXT:       Symbol Byte Size: 4
-# RAW-NEXT:       Type Server Index: 0
-# RAW-NEXT:       Has EC Info: No
-# RAW-NEXT:     }
-# RAW-NEXT:     {
-# RAW-NEXT:       Name: * Linker *
-# RAW-NEXT:       Debug Stream Index: 11
-# RAW-NEXT:       Object File Name:
-# RAW-NEXT:       Num Files: 0
-# RAW-NEXT:       Source File Name Idx: 0
-# RAW-NEXT:       Pdb File Name Idx: 0
-# RAW-NEXT:       Line Info Byte Size: 0
-# RAW-NEXT:       C13 Line Info Byte Size: 0
-# RAW-NEXT:       Symbol Byte Size: 4
-# RAW-NEXT:       Type Server Index: 0
-# RAW-NEXT:       Has EC Info: No
-# RAW-NEXT:     }
-# RAW-NEXT:   ]
-# RAW-NEXT: }
-# RAW-NEXT: Section Contributions [
-# RAW-NEXT:   Contribution {
-# RAW-NEXT:     ISect: 65535
-# RAW-NEXT:     Off: 1288
-# RAW-NEXT:     Size: 14
-# RAW-NEXT:     Characteristics [ (0x60500020)
-# RAW-NEXT:       IMAGE_SCN_ALIGN_16BYTES (0x500000)
-# RAW-NEXT:       IMAGE_SCN_CNT_CODE (0x20)
-# RAW-NEXT:       IMAGE_SCN_MEM_EXECUTE (0x20000000)
-# RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)
-# RAW-NEXT:     ]
-# RAW-NEXT:     Module {
-# RAW-NEXT:       Index: 0
-# RAW-NEXT:       Name: {{.*}}tmp1.obj
-# RAW-NEXT:     }
-# RAW-NEXT:     Data CRC: 0
-# RAW-NEXT:     Reloc CRC: 0
-# RAW-NEXT:   }
-# RAW-NEXT:   Contribution {
-# RAW-NEXT:     ISect: 65535
-# RAW-NEXT:     Off: 1312
-# RAW-NEXT:     Size: 8
-# RAW-NEXT:     Characteristics [ (0x40300040)
-# RAW-NEXT:       IMAGE_SCN_ALIGN_4BYTES (0x300000)
-# RAW-NEXT:       IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
-# RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)
-# RAW-NEXT:     ]
-# RAW-NEXT:     Module {
-# RAW-NEXT:       Index: 0
-# RAW-NEXT:       Name: {{.*}}tmp1.obj
-# RAW-NEXT:     }
-# RAW-NEXT:     Data CRC: 0
-# RAW-NEXT:     Reloc CRC: 0
-# RAW-NEXT:   }
-# RAW-NEXT:   Contribution {
-# RAW-NEXT:     ISect: 65535
-# RAW-NEXT:     Off: 1320
-# RAW-NEXT:     Size: 12
-# RAW-NEXT:     Characteristics [ (0x40300040)
-# RAW-NEXT:       IMAGE_SCN_ALIGN_4BYTES (0x300000)
-# RAW-NEXT:       IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
-# RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)
-# RAW-NEXT:     ]
-# RAW-NEXT:     Module {
-# RAW-NEXT:       Index: 0
-# RAW-NEXT:       Name: {{.*}}tmp1.obj
-# RAW-NEXT:     }
-# RAW-NEXT:     Data CRC: 0
-# RAW-NEXT:     Reloc CRC: 0
-# RAW-NEXT:   }
-# RAW-NEXT:   Contribution {
-# RAW-NEXT:     ISect: 65535
-# RAW-NEXT:     Off: 1144
-# RAW-NEXT:     Size: 6
-# RAW-NEXT:     Characteristics [ (0x60500020)
-# RAW-NEXT:       IMAGE_SCN_ALIGN_16BYTES (0x500000)
-# RAW-NEXT:       IMAGE_SCN_CNT_CODE (0x20)
-# RAW-NEXT:       IMAGE_SCN_MEM_EXECUTE (0x20000000)
-# RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)
-# RAW-NEXT:     ]
-# RAW-NEXT:     Module {
-# RAW-NEXT:       Index: 1
-# RAW-NEXT:       Name: {{.*}}tmp2.obj
-# RAW-NEXT:     }
-# RAW-NEXT:     Data CRC: 0
-# RAW-NEXT:     Reloc CRC: 0
-# RAW-NEXT:   }
-# RAW-NEXT: ]
-# RAW-NEXT: Section Map [
-# RAW-NEXT:   Entry {
-# RAW-NEXT:     Flags [ (0x109)
-# RAW-NEXT:       AddressIs32Bit (0x8)
-# RAW-NEXT:       IsSelector (0x100)
-# RAW-NEXT:       Read (0x1)
-# RAW-NEXT:     ]
-# RAW-NEXT:     Ovl: 0
-# RAW-NEXT:     Group: 0
-# RAW-NEXT:     Frame: 1
-# RAW-NEXT:     SecName: 65535
-# RAW-NEXT:     ClassName: 65535
-# RAW-NEXT:     Offset: 0
-# RAW-NEXT:     SecByteLength: 12
-# RAW-NEXT:   }
-# RAW-NEXT:   Entry {
-# RAW-NEXT:     Flags [ (0x10D)
-# RAW-NEXT:       AddressIs32Bit (0x8)
-# RAW-NEXT:       Execute (0x4)
-# RAW-NEXT:       IsSelector (0x100)
-# RAW-NEXT:       Read (0x1)
-# RAW-NEXT:     ]
-# RAW-NEXT:     Ovl: 0
-# RAW-NEXT:     Group: 0
-# RAW-NEXT:     Frame: 2
-# RAW-NEXT:     SecName: 65535
-# RAW-NEXT:     ClassName: 65535
-# RAW-NEXT:     Offset: 0
-# RAW-NEXT:     SecByteLength: 22
-# RAW-NEXT:   }
-# RAW-NEXT:   Entry {
-# RAW-NEXT:     Flags [ (0x109)
-# RAW-NEXT:       AddressIs32Bit (0x8)
-# RAW-NEXT:       IsSelector (0x100)
-# RAW-NEXT:       Read (0x1)
-# RAW-NEXT:     ]
-# RAW-NEXT:     Ovl: 0
-# RAW-NEXT:     Group: 0
-# RAW-NEXT:     Frame: 3
-# RAW-NEXT:     SecName: 65535
-# RAW-NEXT:     ClassName: 65535
-# RAW-NEXT:     Offset: 0
-# RAW-NEXT:     SecByteLength: 8
-# RAW-NEXT:   }
-# RAW-NEXT:   Entry {
-# RAW-NEXT:     Flags [ (0x109)
-# RAW-NEXT:       AddressIs32Bit (0x8)
-# RAW-NEXT:       IsSelector (0x100)
-# RAW-NEXT:       Read (0x1)
-# RAW-NEXT:     ]
-# RAW-NEXT:     Ovl: 0
-# RAW-NEXT:     Group: 0
-# RAW-NEXT:     Frame: 4
-# RAW-NEXT:     SecName: 65535
-# RAW-NEXT:     ClassName: 65535
-# RAW-NEXT:     Offset: 0
-# RAW-NEXT:     SecByteLength:
-# RAW-NEXT:   }
-# RAW-NEXT:   Entry {
-# RAW-NEXT:     Flags [ (0x208)
-# RAW-NEXT:       AddressIs32Bit (0x8)
-# RAW-NEXT:       IsAbsoluteAddress (0x200)
-# RAW-NEXT:     ]
-# RAW-NEXT:     Ovl: 0
-# RAW-NEXT:     Group: 0
-# RAW-NEXT:     Frame: 5
-# RAW-NEXT:     SecName: 65535
-# RAW-NEXT:     ClassName: 65535
-# RAW-NEXT:     Offset: 0
-# RAW-NEXT:     SecByteLength: 4294967295
-# RAW-NEXT:   }
-# RAW-NEXT: ]
-# RAW-NEXT: Section Headers [
-# RAW-NEXT:   {
-# RAW-NEXT:     Name: .pdata
-# RAW-NEXT:     Virtual Size: 12
-# RAW-NEXT:     Virtual Address: 4096
-# RAW-NEXT:     Size of Raw Data: 512
-# RAW-NEXT:     File Pointer to Raw Data: 1024
-# RAW-NEXT:     File Pointer to Relocations: 0
-# RAW-NEXT:     File Pointer to Linenumbers: 0
-# RAW-NEXT:     Number of Relocations: 0
-# RAW-NEXT:     Number of Linenumbers: 0
-# RAW-NEXT:     Characteristics [ (0x40000040)
-# RAW-NEXT:       IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
-# RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)
-# RAW-NEXT:     ]
-# RAW-NEXT:   }
-# RAW-NEXT:   {
-# RAW-NEXT:     Name: .text
-# RAW-NEXT:     Virtual Size: 22
-# RAW-NEXT:     Virtual Address: 8192
-# RAW-NEXT:     Size of Raw Data: 512
-# RAW-NEXT:     File Pointer to Raw Data: 1536
-# RAW-NEXT:     File Pointer to Relocations: 0
-# RAW-NEXT:     File Pointer to Linenumbers: 0
-# RAW-NEXT:     Number of Relocations: 0
-# RAW-NEXT:     Number of Linenumbers: 0
-# RAW-NEXT:     Characteristics [ (0x60000020)
-# RAW-NEXT:       IMAGE_SCN_CNT_CODE (0x20)
-# RAW-NEXT:       IMAGE_SCN_MEM_EXECUTE (0x20000000)
-# RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)
-# RAW-NEXT:     ]
-# RAW-NEXT:   }
-# RAW-NEXT:   {
-# RAW-NEXT:     Name: .xdata
-# RAW-NEXT:     Virtual Size: 8
-# RAW-NEXT:     Virtual Address: 12288
-# RAW-NEXT:     Size of Raw Data: 512
-# RAW-NEXT:     File Pointer to Raw Data: 2048
-# RAW-NEXT:     File Pointer to Relocations: 0
-# RAW-NEXT:     File Pointer to Linenumbers: 0
-# RAW-NEXT:     Number of Relocations: 0
-# RAW-NEXT:     Number of Linenumbers: 0
-# RAW-NEXT:     Characteristics [ (0x40000040)
-# RAW-NEXT:       IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
-# RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)
-# RAW-NEXT:     ]
-# RAW-NEXT:   }
-# RAW-NEXT:   {
-# RAW-NEXT:     Name: .rdata
-# RAW-NEXT:     Virtual Size:
-# RAW-NEXT:     Virtual Address: 16384
-# RAW-NEXT:     Size of Raw Data: 512
-# RAW-NEXT:     File Pointer to Raw Data: 2560
-# RAW-NEXT:     File Pointer to Relocations: 0
-# RAW-NEXT:     File Pointer to Linenumbers: 0
-# RAW-NEXT:     Number of Relocations: 0
-# RAW-NEXT:     Number of Linenumbers: 0
-# RAW-NEXT:     Characteristics [ (0x40000040)
-# RAW-NEXT:       IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
-# RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)
-# RAW-NEXT:     ]
-# RAW-NEXT:   }
-# RAW-NEXT: ]
+RAW:                               Modules
+RAW-NEXT: ============================================================
+RAW-NEXT:   Mod 0000 | Name: `E:\src\llvmbuild\ninja\tools\lld\test\coff\Output\pdb.test.tmp1.obj`:
+RAW-NEXT:              Obj: `E:\src\llvmbuild\ninja\tools\lld\test\coff\Output\pdb.test.tmp1.obj`:
+RAW-NEXT:              debug stream: 9, # files: 0, has ec info: false
+RAW-NEXT:   Mod 0001 | Name: `E:\src\llvmbuild\ninja\tools\lld\test\coff\Output\pdb.test.tmp2.obj`:
+RAW-NEXT:              Obj: `E:\src\llvmbuild\ninja\tools\lld\test\coff\Output\pdb.test.tmp2.obj`:
+RAW-NEXT:              debug stream: 10, # files: 0, has ec info: false
+RAW-NEXT:   Mod 0002 | Name: `* Linker *`:
+RAW-NEXT:              Obj: ``:
+RAW-NEXT:              debug stream: 11, # files: 0, has ec info: false
+RAW:                          Types (TPI Stream)
+RAW-NEXT: ============================================================
+RAW-NEXT:   Showing 5 records
+RAW-NEXT:   0x1000 | LF_ARGLIST [size = 8]
+RAW-NEXT:   0x1001 | LF_PROCEDURE [size = 16]
+RAW-NEXT:            return type = 0x0074 (int), # args = 0, param list = 0x1000
+RAW-NEXT:            calling conv = cdecl, options = None
+RAW-NEXT:   0x1002 | LF_POINTER [size = 12]
+RAW-NEXT:            referent = 0x1001, mode = pointer, opts = None, kind = ptr64
+RAW-NEXT:   0x1003 | LF_ARGLIST [size = 12]
+RAW-NEXT:            <no type>: ``
+RAW-NEXT:   0x1004 | LF_PROCEDURE [size = 16]
+RAW-NEXT:            return type = 0x0074 (int), # args = 0, param list = 0x1003
+RAW-NEXT:            calling conv = cdecl, options = None
+RAW:                          Types (IPI Stream)
+RAW-NEXT: ============================================================
+RAW-NEXT:   Showing 12 records
+RAW-NEXT:   0x1000 | LF_FUNC_ID [size = 20]
+RAW-NEXT:            name = main, type = 0x1004, parent scope = <no type>
+RAW-NEXT:   0x1001 | LF_FUNC_ID [size = 16]
+RAW-NEXT:            name = foo, type = 0x1001, parent scope = <no type>
+RAW-NEXT:   0x1002 | LF_STRING_ID [size = 16] ID: <no type>, String: D:\b
+RAW-NEXT:   0x1003 | LF_STRING_ID [size = 36] ID: <no type>, String: C:\vs14\VC\BIN\amd64\cl.exe
+RAW-NEXT:   0x1004 | LF_STRING_ID [size = 260] ID: <no type>, String: -Z7 -c -MT -IC:\vs14\VC\INCLUDE -IC:\vs14\VC\ATLMFC\INCLUDE -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\shared"
+RAW-NEXT:   0x1005 | LF_SUBSTR_LIST [size = 12]
+RAW-NEXT:            0x1004: `-Z7 -c -MT -IC:\vs14\VC\INCLUDE -IC:\vs14\VC\ATLMFC\INCLUDE -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\shared"`
+RAW-NEXT:   0x1006 | LF_STRING_ID [size = 132] ID: 0x1005, String:  -I"C:\Program Files (x86)\Windows Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\winrt" -TC -X
+RAW-NEXT:   0x1007 | LF_STRING_ID [size = 24] ID: <no type>, String: ret42-main.c
+RAW-NEXT:   0x1008 | LF_STRING_ID [size = 24] ID: <no type>, String: D:\b\vc140.pdb
+RAW-NEXT:   0x1009 | LF_BUILDINFO [size = 28]
+RAW-NEXT:            0x1002: `D:\b`
+RAW-NEXT:            0x1003: `C:\vs14\VC\BIN\amd64\cl.exe`
+RAW-NEXT:            0x1007: `ret42-main.c`
+RAW-NEXT:            0x1008: `D:\b\vc140.pdb`
+RAW-NEXT:            0x1006: ` -I"C:\Program Files (x86)\Windows Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\winrt" -TC -X`
+RAW-NEXT:   0x100A | LF_STRING_ID [size = 20] ID: <no type>, String: ret42-sub.c
+RAW-NEXT:   0x100B | LF_BUILDINFO [size = 28]
+RAW-NEXT:            0x1002: `D:\b`
+RAW-NEXT:            0x1003: `C:\vs14\VC\BIN\amd64\cl.exe`
+RAW-NEXT:            0x100A: `ret42-sub.c`
+RAW-NEXT:            0x1008: `D:\b\vc140.pdb`
+RAW-NEXT:            0x1006: ` -I"C:\Program Files (x86)\Windows Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\winrt" -TC -X`
+RAW:                        Section Contributions
+RAW-NEXT: ============================================================
+RAW-NEXT:   SC  | mod = 0, 65535:1288, size = 14, data crc = 0, reloc crc = 0
+RAW-NEXT:         IMAGE_SCN_CNT_CODE | IMAGE_SCN_ALIGN_16BYTES | IMAGE_SCN_MEM_EXECUTE |
+RAW-NEXT:         IMAGE_SCN_MEM_READ
+RAW-NEXT:   SC  | mod = 0, 65535:1312, size = 8, data crc = 0, reloc crc = 0
+RAW-NEXT:         IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_ALIGN_4BYTES | IMAGE_SCN_MEM_READ
+RAW-NEXT:   SC  | mod = 0, 65535:1320, size = 12, data crc = 0, reloc crc = 0
+RAW-NEXT:         IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_ALIGN_4BYTES | IMAGE_SCN_MEM_READ
+RAW-NEXT:   SC  | mod = 1, 65535:1144, size = 6, data crc = 0, reloc crc = 0
+RAW-NEXT:         IMAGE_SCN_CNT_CODE | IMAGE_SCN_ALIGN_16BYTES | IMAGE_SCN_MEM_EXECUTE |
+RAW-NEXT:         IMAGE_SCN_MEM_READ
+RAW:                             Section Map
+RAW-NEXT: ============================================================
+RAW-NEXT:   Section 0000 | ovl = 0, group = 0, frame = 0, name = 1
+RAW-NEXT:                  class = 65535, offset = 0, size = 12
+RAW-NEXT:                  flags = read | 32 bit addr | selector
+RAW-NEXT:   Section 0001 | ovl = 1, group = 0, frame = 0, name = 2
+RAW-NEXT:                  class = 65535, offset = 0, size = 22
+RAW-NEXT:                  flags = read | execute | 32 bit addr | selector
+RAW-NEXT:   Section 0002 | ovl = 2, group = 0, frame = 0, name = 3
+RAW-NEXT:                  class = 65535, offset = 0, size = 8
+RAW-NEXT:                  flags = read | 32 bit addr | selector
+RAW-NEXT:   Section 0003 | ovl = 3, group = 0, frame = 0, name = 4
+RAW-NEXT:                  class = 65535, offset = 0, size = 119
+RAW-NEXT:                  flags = read | 32 bit addr | selector
+RAW-NEXT:   Section 0004 | ovl = 4, group = 0, frame = 0, name = 5
+RAW-NEXT:                  class = 65535, offset = 0, size = 4294967295
+RAW-NEXT:                  flags = 32 bit addr | absolute addr




More information about the llvm-commits mailing list