[lld] r291739 - PDB: Merge type info.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 11 19:09:26 PST 2017


Author: ruiu
Date: Wed Jan 11 21:09:25 2017
New Revision: 291739

URL: http://llvm.org/viewvc/llvm-project?rev=291739&view=rev
Log:
PDB: Merge type info.

This patch is to merge type info in multiple .debug$T sections.

One mystery that needs to be solved is that it is not clear how
the MSVC linker uses TPI and IPI streams. Both streams contain
type info, and it is not obvious what kind of record should go
which.

dumppdb command in microsoft-pdb repository prints out IPI stream
contents as "IDs" and TPI stream as "TYPES", but looks like the tool
don't really care about which stream type recrods were read from.

For now, in this patch, I emit all type records to TPI stream.
It might just work with other tools. If not, we need to investigate
it more.

Added:
    lld/trunk/test/COFF/Inputs/pdb1.yaml
    lld/trunk/test/COFF/Inputs/pdb2.yaml
Removed:
    lld/trunk/test/COFF/dumppdb.test
Modified:
    lld/trunk/COFF/PDB.cpp
    lld/trunk/test/COFF/pdb.test

Modified: lld/trunk/COFF/PDB.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/PDB.cpp?rev=291739&r1=291738&r2=291739&view=diff
==============================================================================
--- lld/trunk/COFF/PDB.cpp (original)
+++ lld/trunk/COFF/PDB.cpp Wed Jan 11 21:09:25 2017
@@ -18,6 +18,8 @@
 #include "llvm/DebugInfo/CodeView/SymbolDumper.h"
 #include "llvm/DebugInfo/CodeView/TypeDatabase.h"
 #include "llvm/DebugInfo/CodeView/TypeDumpVisitor.h"
+#include "llvm/DebugInfo/CodeView/TypeStreamMerger.h"
+#include "llvm/DebugInfo/CodeView/TypeTableBuilder.h"
 #include "llvm/DebugInfo/MSF/ByteStream.h"
 #include "llvm/DebugInfo/MSF/MSFBuilder.h"
 #include "llvm/DebugInfo/MSF/MSFCommon.h"
@@ -63,22 +65,51 @@ static SectionChunk *findByName(std::vec
   return nullptr;
 }
 
-static ArrayRef<uint8_t> getDebugT(ObjectFile *File) {
-  SectionChunk *Sec = findByName(File->getDebugChunks(), ".debug$T");
+static ArrayRef<uint8_t> getDebugSection(ObjectFile *File, StringRef SecName) {
+  SectionChunk *Sec = findByName(File->getDebugChunks(), SecName);
   if (!Sec)
     return {};
 
   // First 4 bytes are section magic.
   ArrayRef<uint8_t> Data = Sec->getContents();
   if (Data.size() < 4)
-    fatal(".debug$T too short");
+    fatal(SecName + " too short");
   if (read32le(Data.data()) != COFF::DEBUG_SECTION_MAGIC)
-    fatal(".debug$T has an invalid magic");
+    fatal(SecName + " has an invalid magic");
   return Data.slice(4);
 }
 
+// Merge .debug$T sections and returns it.
+static std::vector<uint8_t> mergeDebugT(SymbolTable *Symtab) {
+  ScopedPrinter W(outs());
+
+  // Visit all .debug$T sections to add them to Builder.
+  codeview::TypeTableBuilder Builder(BAlloc);
+  for (ObjectFile *File : Symtab->ObjectFiles) {
+    ArrayRef<uint8_t> Data = getDebugSection(File, ".debug$T");
+    if (Data.empty())
+      continue;
+
+    msf::ByteStream Stream(Data);
+    codeview::CVTypeArray Types;
+    msf::StreamReader Reader(Stream);
+    if (auto EC = Reader.readArray(Types, Reader.getLength()))
+      fatal(EC, "Reader::readArray failed");
+    if (!codeview::mergeTypeStreams(Builder, Types))
+      fatal("codeview::mergeTypeStreams failed");
+  }
+
+  // Construct section contents.
+  std::vector<uint8_t> V;
+  Builder.ForEachRecord([&](TypeIndex TI, ArrayRef<uint8_t> Rec) {
+    V.insert(V.end(), Rec.begin(), Rec.end());
+  });
+  return V;
+}
+
 static void dumpDebugT(ScopedPrinter &W, ObjectFile *File) {
-  ArrayRef<uint8_t> Data = getDebugT(File);
+  ListScope LS(W, "DebugT");
+  ArrayRef<uint8_t> Data = getDebugSection(File, ".debug$T");
   if (Data.empty())
     return;
 
@@ -90,11 +121,12 @@ static void dumpDebugT(ScopedPrinter &W,
 }
 
 static void dumpDebugS(ScopedPrinter &W, ObjectFile *File) {
-  SectionChunk *Sec = findByName(File->getDebugChunks(), ".debug$S");
-  if (!Sec)
+  ListScope LS(W, "DebugS");
+  ArrayRef<uint8_t> Data = getDebugSection(File, ".debug$S");
+  if (Data.empty())
     return;
 
-  msf::ByteStream Stream(Sec->getContents());
+  msf::ByteStream Stream(Data);
   CVSymbolArray Symbols;
   msf::StreamReader Reader(Stream);
   if (auto EC = Reader.readArray(Symbols, Reader.getLength()))
@@ -116,21 +148,15 @@ static void dumpCodeView(SymbolTable *Sy
   }
 }
 
-static void addTypeInfo(SymbolTable *Symtab,
-                        pdb::TpiStreamBuilder &TpiBuilder) {
-  for (ObjectFile *File : Symtab->ObjectFiles) {
-    ArrayRef<uint8_t> Data = getDebugT(File);
-    if (Data.empty())
-      continue;
-
-    msf::ByteStream Stream(Data);
-    codeview::CVTypeArray Records;
-    msf::StreamReader Reader(Stream);
-    if (auto EC = Reader.readArray(Records, Reader.getLength()))
-      fatal(EC, "Reader.readArray failed");
-    for (const codeview::CVType &Rec : Records)
-      TpiBuilder.addTypeRecord(Rec);
-  }
+static void addTypeInfo(pdb::TpiStreamBuilder &TpiBuilder,
+                        ArrayRef<uint8_t> Data) {
+  msf::ByteStream Stream(Data);
+  codeview::CVTypeArray Records;
+  msf::StreamReader Reader(Stream);
+  if (auto EC = Reader.readArray(Records, Reader.getLength()))
+    fatal(EC, "Reader.readArray failed");
+  for (const codeview::CVType &Rec : Records)
+    TpiBuilder.addTypeRecord(Rec);
 }
 
 // Creates a PDB file.
@@ -165,8 +191,11 @@ void coff::createPDB(StringRef Path, Sym
   // Add an empty TPI stream.
   auto &TpiBuilder = Builder.getTpiBuilder();
   TpiBuilder.setVersionHeader(pdb::PdbTpiV80);
-  if (Config->DebugPdb)
-    addTypeInfo(Symtab, TpiBuilder);
+  std::vector<uint8_t> TpiData;
+  if (Config->DebugPdb) {
+    TpiData = mergeDebugT(Symtab);
+    addTypeInfo(TpiBuilder, TpiData);
+  }
 
   // Add an empty IPI stream.
   auto &IpiBuilder = Builder.getIpiBuilder();

Added: lld/trunk/test/COFF/Inputs/pdb1.yaml
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/pdb1.yaml?rev=291739&view=auto
==============================================================================
--- lld/trunk/test/COFF/Inputs/pdb1.yaml (added)
+++ lld/trunk/test/COFF/Inputs/pdb1.yaml Wed Jan 11 21:09:25 2017
@@ -0,0 +1,172 @@
+--- !COFF
+header:
+  Machine:         IMAGE_FILE_MACHINE_AMD64
+  Characteristics: [  ]
+sections:
+  - Name:            .drectve
+    Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
+    Alignment:       1
+    SectionData:     2020202F44454641554C544C49423A224C4942434D5422202F44454641554C544C49423A224F4C444E414D45532220
+  - Name:            '.debug$S'
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
+    Alignment:       1
+    SectionData:     04000000F1000000580000001A00011100000000443A5C625C72657434322D6D61696E2E6F626A003A003C1100600000D00013000000F259000013000000F25900004D6963726F736F667420285229204F7074696D697A696E6720436F6D70696C657200F10000004E0000002A0047110000000000000000000000000E000000040000000900000005100000000000000000006D61696E001C001210280000000000000000000000000000000000000000000042110002004F110000F20000002000000000000000000000000E0000000000000001000000140000000000000002000080F400000018000000010000001001C538722F63570DF6705DDE06FE96E5D10000F30000001300000000643A5C625C72657434322D6D61696E2E630000F10000000800000006004C110E100000
+    Relocations:
+      - VirtualAddress:  140
+        SymbolName:      main
+        Type:            IMAGE_REL_AMD64_SECREL
+      - VirtualAddress:  144
+        SymbolName:      main
+        Type:            IMAGE_REL_AMD64_SECTION
+      - VirtualAddress:  196
+        SymbolName:      main
+        Type:            IMAGE_REL_AMD64_SECREL
+      - VirtualAddress:  200
+        SymbolName:      main
+        Type:            IMAGE_REL_AMD64_SECTION
+  - Name:            '.debug$T'
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
+    Alignment:       1
+    SectionData:     0400000006000112000000000E0008107400000000000000001000000A000210011000000C0001000A00011201000000000000000E0008107400000000000000031000001200011600000000041000006D61696E00F3F2F10E0001160000000001100000666F6F000E00051600000000443A5C6200F3F2F12200051600000000433A5C767331345C56435C42494E5C616D6436345C636C2E6578650002010516000000002D5A37202D63202D4D54202D49433A5C767331345C56435C494E434C554445202D49433A5C767331345C56435C41544C4D46435C494E434C554445202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31303135302E305C7563727422202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C4E4554465853444B5C342E365C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C73686172656422000A0004160100000009100000820005160A100000202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C
 756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C77696E727422202D5443202D5800F3F2F1160005160000000072657434322D6D61696E2E6300F3F2F11600051600000000443A5C625C76633134302E70646200F11A000316050007100000081000000C1000000D1000000B100000F2F1
+  - Name:            '.text$mn'
+    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
+    Alignment:       16
+    SectionData:     4883EC28E8000000004883C428C3
+    Relocations:
+      - VirtualAddress:  5
+        SymbolName:      foo
+        Type:            IMAGE_REL_AMD64_REL32
+  - Name:            .xdata
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    Alignment:       4
+    SectionData:     '0104010004420000'
+  - Name:            .pdata
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+    Alignment:       4
+    SectionData:     '000000000E00000000000000'
+    Relocations:
+      - VirtualAddress:  0
+        SymbolName:      '$LN3'
+        Type:            IMAGE_REL_AMD64_ADDR32NB
+      - VirtualAddress:  4
+        SymbolName:      '$LN3'
+        Type:            IMAGE_REL_AMD64_ADDR32NB
+      - VirtualAddress:  8
+        SymbolName:      '$unwind$main'
+        Type:            IMAGE_REL_AMD64_ADDR32NB
+symbols:
+  - Name:            '@comp.id'
+    Value:           17062386
+    SectionNumber:   -1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+  - Name:            '@feat.00'
+    Value:           2147484048
+    SectionNumber:   -1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+  - Name:            .drectve
+    Value:           0
+    SectionNumber:   1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition:
+      Length:          47
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        0
+      Number:          0
+  - Name:            '.debug$S'
+    Value:           0
+    SectionNumber:   2
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition:
+      Length:          304
+      NumberOfRelocations: 4
+      NumberOfLinenumbers: 0
+      CheckSum:        0
+      Number:          0
+  - Name:            '.debug$T'
+    Value:           0
+    SectionNumber:   3
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition:
+      Length:          636
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        0
+      Number:          0
+  - Name:            '.text$mn'
+    Value:           0
+    SectionNumber:   4
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition:
+      Length:          14
+      NumberOfRelocations: 1
+      NumberOfLinenumbers: 0
+      CheckSum:        1682752513
+      Number:          0
+  - Name:            foo
+    Value:           0
+    SectionNumber:   0
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
+    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
+  - Name:            main
+    Value:           0
+    SectionNumber:   4
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
+    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
+  - Name:            '$LN3'
+    Value:           0
+    SectionNumber:   4
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_LABEL
+  - Name:            .xdata
+    Value:           0
+    SectionNumber:   5
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition:
+      Length:          8
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        264583633
+      Number:          0
+  - Name:            '$unwind$main'
+    Value:           0
+    SectionNumber:   5
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+  - Name:            .pdata
+    Value:           0
+    SectionNumber:   6
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition:
+      Length:          12
+      NumberOfRelocations: 3
+      NumberOfLinenumbers: 0
+      CheckSum:        361370162
+      Number:          0
+  - Name:            '$pdata$main'
+    Value:           0
+    SectionNumber:   6
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+...

Added: lld/trunk/test/COFF/Inputs/pdb2.yaml
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/pdb2.yaml?rev=291739&view=auto
==============================================================================
--- lld/trunk/test/COFF/Inputs/pdb2.yaml (added)
+++ lld/trunk/test/COFF/Inputs/pdb2.yaml Wed Jan 11 21:09:25 2017
@@ -0,0 +1,102 @@
+--- !COFF
+header:
+  Machine:         IMAGE_FILE_MACHINE_AMD64
+  Characteristics: [  ]
+sections:
+  - Name:            .drectve
+    Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
+    Alignment:       1
+    SectionData:     2020202F44454641554C544C49423A224C4942434D5422202F44454641554C544C49423A224F4C444E414D45532220
+  - Name:            '.debug$S'
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
+    Alignment:       1
+    SectionData:     04000000F1000000570000001900011100000000443A5C625C72657434322D7375622E6F626A003A003C1100600000D00013000000F259000013000000F25900004D6963726F736F667420285229204F7074696D697A696E6720436F6D70696C65720000F10000004D000000290047110000000000000000000000000600000000000000050000000210000000000000000000666F6F001C001210000000000000000000000000000000000000000000000042110002004F11000000F2000000200000000000000000000000060000000000000001000000140000000000000001000080F400000018000000010000001001EC2D89EFF5A1FEB6B74EE4D79074072F0000F30000001200000000643A5C625C72657434322D7375622E63000000F10000000800000006004C110A100000
+    Relocations:
+      - VirtualAddress:  140
+        SymbolName:      foo
+        Type:            IMAGE_REL_AMD64_SECREL
+      - VirtualAddress:  144
+        SymbolName:      foo
+        Type:            IMAGE_REL_AMD64_SECTION
+      - VirtualAddress:  196
+        SymbolName:      foo
+        Type:            IMAGE_REL_AMD64_SECREL
+      - VirtualAddress:  200
+        SymbolName:      foo
+        Type:            IMAGE_REL_AMD64_SECTION
+  - Name:            '.debug$T'
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
+    Alignment:       1
+    SectionData:     0400000006000112000000000E0008107400000000000000001000000E0001160000000001100000666F6F000E00051600000000443A5C6200F3F2F12200051600000000433A5C767331345C56435C42494E5C616D6436345C636C2E6578650002010516000000002D5A37202D63202D4D54202D49433A5C767331345C56435C494E434C554445202D49433A5C767331345C56435C41544C4D46435C494E434C554445202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31303135302E305C7563727422202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C4E4554465853444B5C342E365C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C73686172656422000A00041601000000051000008200051606100000202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C77696E7274
 22202D5443202D5800F3F2F1120005160000000072657434322D7375622E63001600051600000000443A5C625C76633134302E70646200F11A00031605000310000004100000081000000910000007100000F2F1
+  - Name:            '.text$mn'
+    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
+    Alignment:       16
+    SectionData:     B82A000000C3
+symbols:
+  - Name:            '@comp.id'
+    Value:           17062386
+    SectionNumber:   -1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+  - Name:            '@feat.00'
+    Value:           2147484048
+    SectionNumber:   -1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+  - Name:            .drectve
+    Value:           0
+    SectionNumber:   1
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition:
+      Length:          47
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        0
+      Number:          0
+  - Name:            '.debug$S'
+    Value:           0
+    SectionNumber:   2
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition:
+      Length:          304
+      NumberOfRelocations: 4
+      NumberOfLinenumbers: 0
+      CheckSum:        0
+      Number:          0
+  - Name:            '.debug$T'
+    Value:           0
+    SectionNumber:   3
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition:
+      Length:          572
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        0
+      Number:          0
+  - Name:            '.text$mn'
+    Value:           0
+    SectionNumber:   4
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_NULL
+    StorageClass:    IMAGE_SYM_CLASS_STATIC
+    SectionDefinition:
+      Length:          6
+      NumberOfRelocations: 0
+      NumberOfLinenumbers: 0
+      CheckSum:        2139436471
+      Number:          0
+  - Name:            foo
+    Value:           0
+    SectionNumber:   4
+    SimpleType:      IMAGE_SYM_TYPE_NULL
+    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
+    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
+...

Removed: lld/trunk/test/COFF/dumppdb.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/dumppdb.test?rev=291738&view=auto
==============================================================================
--- lld/trunk/test/COFF/dumppdb.test (original)
+++ lld/trunk/test/COFF/dumppdb.test (removed)
@@ -1,181 +0,0 @@
-# RUN: yaml2obj %s > %t.obj
-# RUN: lld-link /debug /pdb:%t.pdb /dumppdb /dll /out:%t.dll /entry:main \
-# RUN:   /nodefaultlib %t.obj | FileCheck %s
-
-# CHECK:      ArgList (0x1000) {
-# CHECK-NEXT:   TypeLeafKind: LF_ARGLIST (0x1201)
-# CHECK-NEXT:   NumArgs: 1
-# CHECK-NEXT:   Arguments [
-# CHECK-NEXT:     ArgType: 0x0
-# CHECK-NEXT:   ]
-# CHECK-NEXT: }
-# CHECK-NEXT: Procedure (0x1001) {
-# CHECK-NEXT:   TypeLeafKind: LF_PROCEDURE (0x1008)
-# CHECK-NEXT:   ReturnType: int (0x74)
-# CHECK-NEXT:   CallingConvention: NearC (0x0)
-# CHECK-NEXT:   FunctionOptions [ (0x0)
-# CHECK-NEXT:   ]
-# CHECK-NEXT:   NumParameters: 0
-# CHECK-NEXT:   ArgListType: (<no type>) (0x1000)
-# CHECK-NEXT: }
-# CHECK-NEXT: FuncId (0x1002) {
-# CHECK-NEXT:   TypeLeafKind: LF_FUNC_ID (0x1601)
-# CHECK-NEXT:   ParentScope: 0x0
-# CHECK-NEXT:   FunctionType: int (<no type>) (0x1001)
-# CHECK-NEXT:   Name: main
-# CHECK-NEXT: }
-# CHECK-NEXT: StringId (0x1003) {
-# CHECK-NEXT:   TypeLeafKind: LF_STRING_ID (0x1605)
-# CHECK-NEXT:   Id: 0x0
-# CHECK-NEXT:   StringData: D:\b
-# CHECK-NEXT: }
-# CHECK-NEXT: StringId (0x1004) {
-# CHECK-NEXT:   TypeLeafKind: LF_STRING_ID (0x1605)
-# CHECK-NEXT:   Id: 0x0
-# CHECK-NEXT:   StringData: C:\vs14\VC\BIN\amd64\cl.exe
-# CHECK-NEXT: }
-# CHECK-NEXT: StringId (0x1005) {
-# CHECK-NEXT:   TypeLeafKind: LF_STRING_ID (0x1605)
-# CHECK-NEXT:   Id: 0x0
-# CHECK-NEXT:   StringData: -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"
-# CHECK-NEXT: }
-# CHECK-NEXT: StringList (0x1006) {
-# CHECK-NEXT:   TypeLeafKind: LF_SUBSTR_LIST (0x1604)
-# CHECK-NEXT:   NumArgs: 1
-# CHECK-NEXT:   Arguments [
-# CHECK-NEXT:     ArgType: -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" (0x1005)
-# CHECK-NEXT:   ]
-# CHECK-NEXT: }
-# CHECK-NEXT: StringId (0x1007) {
-# CHECK-NEXT:   TypeLeafKind: LF_STRING_ID (0x1605)
-# CHECK-NEXT:   Id: (-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") (0x1006)
-# CHECK-NEXT:   StringData:  -I"C:\Program Files (x86)\Windows Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\winrt" -TC -X
-# CHECK-NEXT: }
-# CHECK-NEXT: StringId (0x1008) {
-# CHECK-NEXT:   TypeLeafKind: LF_STRING_ID (0x1605)
-# CHECK-NEXT:   Id: 0x0
-# CHECK-NEXT:   StringData: ret42.c
-# CHECK-NEXT: }
-# CHECK-NEXT: StringId (0x1009) {
-# CHECK-NEXT:   TypeLeafKind: LF_STRING_ID (0x1605)
-# CHECK-NEXT:   Id: 0x0
-# CHECK-NEXT:   StringData: D:\b\vc140.pdb
-# CHECK-NEXT: }
-# CHECK-NEXT: BuildInfo (0x100A) {
-# CHECK-NEXT:   TypeLeafKind: LF_BUILDINFO (0x1603)
-# CHECK-NEXT:   NumArgs: 5
-# CHECK-NEXT:   Arguments [
-# CHECK-NEXT:     ArgType: D:\b (0x1003)
-# CHECK-NEXT:     ArgType: C:\vs14\VC\BIN\amd64\cl.exe (0x1004)
-# CHECK-NEXT:     ArgType: ret42.c (0x1008)
-# CHECK-NEXT:     ArgType: D:\b\vc140.pdb (0x1009)
-# CHECK-NEXT:     ArgType:  -I"C:\Program Files (x86)\Windows Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\winrt" -TC -X (0x1007)
-# CHECK-NEXT:   ]
-# CHECK-NEXT: }
-# CHECK-NEXT: UnknownSym {
-# CHECK-NEXT:   Kind: 0x0
-# CHECK-NEXT:   Length: 6
-# CHECK-NEXT: }
-
---- !COFF
-header:
-  Machine:         IMAGE_FILE_MACHINE_AMD64
-  Characteristics: [  ]
-sections:
-  - Name:            .drectve
-    Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
-    Alignment:       1
-    SectionData:     2020202F44454641554C544C49423A224C4942434D5422202F44454641554C544C49423A224F4C444E414D45532220
-  - Name:            '.debug$S'
-    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
-    Alignment:       1
-    SectionData:     04000000F1000000530000001500011100000000443A5C625C72657434322E6F626A003A003C1100600000D00013000000F259000013000000F25900004D6963726F736F667420285229204F7074696D697A696E6720436F6D70696C65720000F10000004E0000002A00471100000000000000000000000006000000000000000500000002100000000000000000006D61696E001C001210000000000000000000000000000000000000000000000042110002004F110000F2000000200000000000000000000000060000000000000001000000140000000000000001000080F4000000180000000100000010010BFC79AA614B536E3D64B110330D1E580000F30000000E00000000643A5C625C72657434322E63000000F10000000800000006004C110A100000
-    Relocations:
-      - VirtualAddress:  136
-        SymbolName:      main
-        Type:            IMAGE_REL_AMD64_SECREL
-      - VirtualAddress:  140
-        SymbolName:      main
-        Type:            IMAGE_REL_AMD64_SECTION
-      - VirtualAddress:  192
-        SymbolName:      main
-        Type:            IMAGE_REL_AMD64_SECREL
-      - VirtualAddress:  196
-        SymbolName:      main
-        Type:            IMAGE_REL_AMD64_SECTION
-  - Name:            '.debug$T'
-    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
-    Alignment:       1
-    SectionData:     040000000A00011201000000000000000E0008107400000000000000001000001200011600000000011000006D61696E00F3F2F10E00051600000000443A5C6200F3F2F12200051600000000433A5C767331345C56435C42494E5C616D6436345C636C2E6578650002010516000000002D5A37202D63202D4D54202D49433A5C767331345C56435C494E434C554445202D49433A5C767331345C56435C41544C4D46435C494E434C554445202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31303135302E305C7563727422202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C4E4554465853444B5C342E365C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C73686172656422000A00041601000000051000008200051606100000202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C75
 64655C77696E727422202D5443202D5800F3F2F10E0005160000000072657434322E63001600051600000000443A5C625C76633134302E70646200F11A00031605000310000004100000081000000910000007100000F2F1
-  - Name:            '.text$mn'
-    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
-    Alignment:       16
-    SectionData:     B82A000000C3
-symbols:
-  - Name:            '@comp.id'
-    Value:           17062386
-    SectionNumber:   -1
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_STATIC
-  - Name:            '@feat.00'
-    Value:           2147484048
-    SectionNumber:   -1
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_STATIC
-  - Name:            .drectve
-    Value:           0
-    SectionNumber:   1
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_STATIC
-    SectionDefinition:
-      Length:          47
-      NumberOfRelocations: 0
-      NumberOfLinenumbers: 0
-      CheckSum:        0
-      Number:          0
-  - Name:            '.debug$S'
-    Value:           0
-    SectionNumber:   2
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_STATIC
-    SectionDefinition:
-      Length:          296
-      NumberOfRelocations: 4
-      NumberOfLinenumbers: 0
-      CheckSum:        0
-      Number:          0
-  - Name:            '.debug$T'
-    Value:           0
-    SectionNumber:   3
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_STATIC
-    SectionDefinition:
-      Length:          576
-      NumberOfRelocations: 0
-      NumberOfLinenumbers: 0
-      CheckSum:        0
-      Number:          0
-  - Name:            '.text$mn'
-    Value:           0
-    SectionNumber:   4
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_STATIC
-    SectionDefinition:
-      Length:          6
-      NumberOfRelocations: 0
-      NumberOfLinenumbers: 0
-      CheckSum:        2139436471
-      Number:          0
-  - Name:            main
-    Value:           0
-    SectionNumber:   4
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
-    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
-...

Modified: lld/trunk/test/COFF/pdb.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/pdb.test?rev=291739&r1=291738&r2=291739&view=diff
==============================================================================
--- lld/trunk/test/COFF/pdb.test (original)
+++ lld/trunk/test/COFF/pdb.test Wed Jan 11 21:09:25 2017
@@ -1,16 +1,15 @@
-# RUN: yaml2obj %s > %t.obj
+# RUN: yaml2obj < %p/Inputs/pdb1.yaml > %t1.obj
+# RUN: yaml2obj < %p/Inputs/pdb2.yaml > %t2.obj
 # RUN: lld-link /debug /pdb:%t.pdb /dll /out:%t.dll /entry:main /nodefaultlib \
-# RUN:   /debugpdb %t.obj
+# RUN:   /debugpdb %t1.obj %t2.obj
+
 # RUN: llvm-pdbdump pdb2yaml -stream-metadata -stream-directory -pdb-stream \
 # RUN:   -dbi-stream -ipi-stream -tpi-stream %t.pdb | FileCheck %s
 
-# RUN: llvm-pdbdump raw -modules -section-map -section-headers -section-contribs \
-# RUN:   -tpi-records %t.pdb | FileCheck -check-prefix RAW %s
-
 # CHECK:      MSF:
 # CHECK-NEXT:   SuperBlock:
 # CHECK-NEXT:     BlockSize:       4096
-# CHECK-NEXT:     FreeBlockMap:
+# CHECK-NEXT:     FreeBlockMap:    1
 # CHECK-NEXT:     NumBlocks:       10
 # CHECK-NEXT:     NumDirectoryBytes: 48
 # CHECK-NEXT:     Unknown1:        0
@@ -19,7 +18,7 @@
 # CHECK-NEXT:   DirectoryBlocks: [ 9 ]
 # CHECK-NEXT:   NumStreams:      6
 # CHECK-NEXT:   FileSize:        40960
-# CHECK-NEXT: StreamSizes:     [ 0, 48, 628, 266, 56, 80 ]
+# CHECK-NEXT: StreamSizes:     [ 0, 48, 736, 390, 56, 160 ]
 # CHECK-NEXT: StreamMap:
 # CHECK-NEXT:   - Stream:          [  ]
 # CHECK-NEXT:   - Stream:          [ 5 ]
@@ -28,13 +27,8 @@
 # CHECK-NEXT:   - Stream:          [ 8 ]
 # CHECK-NEXT:   - Stream:          [ 4 ]
 # CHECK-NEXT: PdbStream:
-# Ensure that the Guid matches the RSDS record:
-#   PDBSignature: 0x53445352
-#   PDBGUID (38 9A CC F2 14 A4 7F A2 6C F0 08 04 47 CF 5C 48)
-#   PDBAge: 1
 # CHECK-NEXT:   Age:             1
-# Guid:            '{389ACCF2-14A4-7FA2-6CF0-080447CF5C48}'
-# CHECK-NEXT:   Guid:            '{{.*}}'
+# CHECK-NEXT:   Guid:
 # CHECK-NEXT:   Signature:       0
 # CHECK-NEXT:   Version:         VC70
 # CHECK-NEXT:   NamedStreams:
@@ -51,7 +45,7 @@
 # CHECK-NEXT:   Records:
 # CHECK-NEXT:     - Kind:            LF_ARGLIST
 # CHECK-NEXT:       ArgList:
-# CHECK-NEXT:         ArgIndices:      [ 0 ]
+# CHECK-NEXT:         ArgIndices:      [  ]
 # CHECK-NEXT:     - Kind:            LF_PROCEDURE
 # CHECK-NEXT:       Procedure:
 # CHECK-NEXT:         ReturnType:      116
@@ -59,11 +53,30 @@
 # CHECK-NEXT:         Options:         [ None ]
 # CHECK-NEXT:         ParameterCount:  0
 # CHECK-NEXT:         ArgumentList:    4096
+# CHECK-NEXT:     - Kind:            LF_POINTER
+# CHECK-NEXT:       Pointer:
+# CHECK-NEXT:         ReferentType:    4097
+# CHECK-NEXT:         Attrs:           65548
+# CHECK-NEXT:     - Kind:            LF_ARGLIST
+# CHECK-NEXT:       ArgList:
+# CHECK-NEXT:         ArgIndices:      [ 0 ]
+# CHECK-NEXT:     - Kind:            LF_PROCEDURE
+# CHECK-NEXT:       Procedure:
+# CHECK-NEXT:         ReturnType:      116
+# CHECK-NEXT:         CallConv:        NearC
+# CHECK-NEXT:         Options:         [ None ]
+# CHECK-NEXT:         ParameterCount:  0
+# CHECK-NEXT:         ArgumentList:    4099
 # CHECK-NEXT:     - Kind:            LF_FUNC_ID
 # CHECK-NEXT:       FuncId:
 # CHECK-NEXT:         ParentScope:     0
-# CHECK-NEXT:         FunctionType:    4097
+# CHECK-NEXT:         FunctionType:    4100
 # CHECK-NEXT:         Name:            main
+# CHECK-NEXT:     - Kind:            LF_FUNC_ID
+# CHECK-NEXT:       FuncId:
+# CHECK-NEXT:         ParentScope:     0
+# CHECK-NEXT:         FunctionType:    4097
+# CHECK-NEXT:         Name:            foo
 # CHECK-NEXT:     - Kind:            LF_STRING_ID
 # CHECK-NEXT:       StringId:
 # CHECK-NEXT:         Id:              0
@@ -78,34 +91,110 @@
 # CHECK-NEXT:         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"'
 # CHECK-NEXT:     - Kind:            LF_SUBSTR_LIST
 # CHECK-NEXT:       ArgList:
-# CHECK-NEXT:         ArgIndices:      [ 4101 ]
+# CHECK-NEXT:         ArgIndices:      [ 4105 ]
 # CHECK-NEXT:     - Kind:            LF_STRING_ID
 # CHECK-NEXT:       StringId:
-# CHECK-NEXT:         Id:              4102
+# CHECK-NEXT:         Id:              4106
 # CHECK-NEXT:         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'
 # CHECK-NEXT:     - Kind:            LF_STRING_ID
 # CHECK-NEXT:       StringId:
 # CHECK-NEXT:         Id:              0
-# CHECK-NEXT:         String:          ret42.c
+# CHECK-NEXT:         String:          ret42-main.c
 # CHECK-NEXT:     - Kind:            LF_STRING_ID
 # CHECK-NEXT:       StringId:
 # CHECK-NEXT:         Id:              0
 # CHECK-NEXT:         String:          'D:\b\vc140.pdb'
 # CHECK-NEXT:     - Kind:            LF_BUILDINFO
 # CHECK-NEXT:       BuildInfo:
-# CHECK-NEXT:         ArgIndices:      [ 4099, 4100, 4104, 4105, 4103 ]
+# CHECK-NEXT:         ArgIndices:      [ 4103, 4104, 4108, 4109, 4107 ]
+# CHECK-NEXT:     - Kind:            LF_STRING_ID
+# CHECK-NEXT:       StringId:
+# CHECK-NEXT:         Id:              0
+# CHECK-NEXT:         String:          ret42-sub.c
+# CHECK-NEXT:     - Kind:            LF_BUILDINFO
+# CHECK-NEXT:       BuildInfo:
+# CHECK-NEXT:         ArgIndices:      [ 4103, 4104, 4111, 4109, 4107 ]
 # CHECK-NEXT: IpiStream:
 # CHECK-NEXT:   Version:         VC80
 # CHECK-NEXT:   Records:
-# CHECK-NEXT: ...
 
-# RAW:      Type Info Stream (TPI) {
+# RAW:      FileHeaders {
+# RAW-NEXT:   BlockSize: 4096
+# RAW-NEXT:   FreeBlockMap: 1
+# RAW-NEXT:   NumBlocks: 10
+# RAW-NEXT:   NumDirectoryBytes: 48
+# RAW-NEXT:   Unknown1: 0
+# RAW-NEXT:   BlockMapAddr: 3
+# RAW-NEXT:   NumDirectoryBlocks: 1
+# RAW-NEXT:   DirectoryBlocks: [9]
+# RAW-NEXT:   NumStreams: 6
+# RAW-NEXT: }
+# RAW-NEXT: Streams [
+# RAW-NEXT:   Stream 0: [Old MSF Directory] (0 bytes)
+# RAW-NEXT:   Stream 1: [PDB Stream] (48 bytes)
+# RAW-NEXT:   Stream 2: [TPI Stream] (736 bytes)
+# RAW-NEXT:   Stream 3: [DBI Stream] (390 bytes)
+# RAW-NEXT:   Stream 4: [IPI Stream] (56 bytes)
+# RAW-NEXT:   Stream 5: [Section Header Data] (160 bytes)
+# RAW-NEXT: ]
+# RAW-NEXT: Msf Free Pages: []
+# RAW-NEXT: Orphaned Pages: []
+# RAW-NEXT: Multiply Used Pages: []
+# RAW-NEXT: Use After Free Pages: []
+# RAW-NEXT: StreamBlocks [
+# RAW-NEXT:   Stream 0: []
+# RAW-NEXT:   Stream 1: [5]
+# RAW-NEXT:   Stream 2: [7]
+# RAW-NEXT:   Stream 3: [6]
+# RAW-NEXT:   Stream 4: [8]
+# RAW-NEXT:   Stream 5: [4]
+# RAW-NEXT: ]
+# RAW-NEXT: PDB Stream {
+# RAW-NEXT:   Version: 20000404
+# RAW-NEXT:   Signature: 0x0
+# RAW-NEXT:   Age: 1
+# RAW-NEXT:   Guid: {7EBCCC79-C488-0267-C898-06D7E94A8A10}
+# RAW-NEXT: }
+# RAW-NEXT: Type Info Stream (TPI) {
 # RAW-NEXT:   TPI Version: 20040203
-# RAW-NEXT:   Record count: 11
+# RAW-NEXT:   Record count: 17
 # 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
@@ -113,88 +202,136 @@
 # RAW-NEXT:       }
 # RAW-NEXT:     }
 # RAW-NEXT:     {
-# RAW-NEXT:       Procedure (0x1001) {
+# 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>) (0x1000)
+# RAW-NEXT:         ArgListType: (<no type>) (0x1003)
 # RAW-NEXT:       }
 # RAW-NEXT:     }
 # RAW-NEXT:     {
-# RAW-NEXT:       FuncId (0x1002) {
+# RAW-NEXT:       FuncId (0x1005) {
 # RAW-NEXT:         TypeLeafKind: LF_FUNC_ID (0x1601)
 # RAW-NEXT:         ParentScope: 0x0
-# RAW-NEXT:         FunctionType: int (<no type>) (0x1001)
+# RAW-NEXT:         FunctionType: int (<no type>) (0x1004)
 # RAW-NEXT:         Name: main
 # RAW-NEXT:       }
 # RAW-NEXT:     }
 # RAW-NEXT:     {
-# RAW-NEXT:       StringId (0x1003) {
+# RAW-NEXT:       FuncId (0x1006) {
+# RAW-NEXT:         TypeLeafKind: LF_FUNC_ID (0x1601)
+# RAW-NEXT:         ParentScope: 0x0
+# RAW-NEXT:         FunctionType: int () (0x1001)
+# RAW-NEXT:         Name: foo
+# RAW-NEXT:       }
+# RAW-NEXT:     }
+# RAW-NEXT:     {
+# RAW-NEXT:       StringId (0x1007) {
 # RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)
 # RAW-NEXT:         Id: 0x0
 # RAW-NEXT:         StringData: D:\b
 # RAW-NEXT:       }
 # RAW-NEXT:     }
 # RAW-NEXT:     {
-# RAW-NEXT:       StringId (0x1004) {
+# RAW-NEXT:       StringId (0x1008) {
 # RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)
 # RAW-NEXT:         Id: 0x0
 # RAW-NEXT:         StringData: C:\vs14\VC\BIN\amd64\cl.exe
 # RAW-NEXT:       }
 # RAW-NEXT:     }
 # RAW-NEXT:     {
-# RAW-NEXT:       StringId (0x1005) {
+# RAW-NEXT:       StringId (0x1009) {
 # RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)
 # RAW-NEXT:         Id: 0x0
 # RAW-NEXT:         StringData: -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:       }
 # RAW-NEXT:     }
 # RAW-NEXT:     {
-# RAW-NEXT:       StringList (0x1006) {
+# RAW-NEXT:       StringList (0x100A) {
 # RAW-NEXT:         TypeLeafKind: LF_SUBSTR_LIST (0x1604)
 # RAW-NEXT:         NumArgs: 1
 # RAW-NEXT:         Arguments [
-# RAW-NEXT:           ArgType: -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" (0x1005)
+# RAW-NEXT:           ArgType: -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" (0x1009)
 # RAW-NEXT:         ]
 # RAW-NEXT:       }
 # RAW-NEXT:     }
 # RAW-NEXT:     {
-# RAW-NEXT:       StringId (0x1007) {
+# RAW-NEXT:       StringId (0x100B) {
 # RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)
-# RAW-NEXT:         Id: (-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") (0x1006)
+# RAW-NEXT:         Id: (-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") (0x100A)
 # RAW-NEXT:         StringData:  -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:       }
 # RAW-NEXT:     }
 # RAW-NEXT:     {
-# RAW-NEXT:       StringId (0x1008) {
+# RAW-NEXT:       StringId (0x100C) {
 # RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)
 # RAW-NEXT:         Id: 0x0
-# RAW-NEXT:         StringData: ret42.c
+# RAW-NEXT:         StringData: ret42-main.c
 # RAW-NEXT:       }
 # RAW-NEXT:     }
 # RAW-NEXT:     {
-# RAW-NEXT:       StringId (0x1009) {
+# RAW-NEXT:       StringId (0x100D) {
 # RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)
 # RAW-NEXT:         Id: 0x0
 # RAW-NEXT:         StringData: D:\b\vc140.pdb
 # RAW-NEXT:       }
 # RAW-NEXT:     }
 # RAW-NEXT:     {
-# RAW-NEXT:       BuildInfo (0x100A) {
+# RAW-NEXT:       BuildInfo (0x100E) {
 # RAW-NEXT:         TypeLeafKind: LF_BUILDINFO (0x1603)
 # RAW-NEXT:         NumArgs: 5
 # RAW-NEXT:         Arguments [
-# RAW-NEXT:           ArgType: D:\b (0x1003)
-# RAW-NEXT:           ArgType: C:\vs14\VC\BIN\amd64\cl.exe (0x1004)
-# RAW-NEXT:           ArgType: ret42.c (0x1008)
-# RAW-NEXT:           ArgType: D:\b\vc140.pdb (0x1009)
-# RAW-NEXT:           ArgType:  -I"C:\Program Files (x86)\Windows Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\winrt" -TC -X (0x1007)
+# RAW-NEXT:           ArgType: D:\b (0x1007)
+# RAW-NEXT:           ArgType: C:\vs14\VC\BIN\amd64\cl.exe (0x1008)
+# RAW-NEXT:           ArgType: ret42-main.c (0x100C)
+# RAW-NEXT:           ArgType: D:\b\vc140.pdb (0x100D)
+# RAW-NEXT:           ArgType:  -I"C:\Program Files (x86)\Windows Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\winrt" -TC -X (0x100B)
 # RAW-NEXT:         ]
 # RAW-NEXT:       }
 # RAW-NEXT:     }
+# RAW-NEXT:     {
+# RAW-NEXT:       StringId (0x100F) {
+# RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)
+# RAW-NEXT:         Id: 0x0
+# RAW-NEXT:         StringData: ret42-sub.c
+# RAW-NEXT:       }
+# RAW-NEXT:     }
+# RAW-NEXT:     {
+# RAW-NEXT:       BuildInfo (0x1010) {
+# RAW-NEXT:         TypeLeafKind: LF_BUILDINFO (0x1603)
+# RAW-NEXT:         NumArgs: 5
+# RAW-NEXT:         Arguments [
+# RAW-NEXT:           ArgType: D:\b (0x1007)
+# RAW-NEXT:           ArgType: C:\vs14\VC\BIN\amd64\cl.exe (0x1008)
+# RAW-NEXT:           ArgType: ret42-sub.c (0x100F)
+# RAW-NEXT:           ArgType: D:\b\vc140.pdb (0x100D)
+# RAW-NEXT:           ArgType:  -I"C:\Program Files (x86)\Windows Kits\8.1\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\winrt" -TC -X (0x100B)
+# RAW-NEXT:         ]
+# RAW-NEXT:       }
+# RAW-NEXT:     }
+# RAW-NEXT:     Hash {
+# RAW-NEXT:       Number of Hash Buckets: 4096
+# RAW-NEXT:       Hash Key Size: 4
+# RAW-NEXT:       Values: []
+# RAW-NEXT:       Type Index Offsets: []
+# RAW-NEXT:       Hash Adjustments: []
+# RAW-NEXT:     }
+# RAW-NEXT:   ]
+# RAW-NEXT: }
+# RAW-NEXT: Type Info Stream (IPI) {
+# RAW-NEXT:   IPI Version: 20040203
+# RAW-NEXT:   Record count: 0
+# RAW-NEXT:   Records [
+# RAW-NEXT:     Hash {
+# RAW-NEXT:       Number of Hash Buckets: 4096
+# RAW-NEXT:       Hash Key Size: 4
+# RAW-NEXT:       Values: []
+# RAW-NEXT:       Type Index Offsets: []
+# RAW-NEXT:       Hash Adjustments: []
+# RAW-NEXT:     }
 # RAW-NEXT:   ]
 # RAW-NEXT: }
 # RAW-NEXT: DBI Stream {
@@ -222,13 +359,64 @@
 # RAW-NEXT:       Symbol Byte Size: 0
 # RAW-NEXT:       Type Server Index: 0
 # RAW-NEXT:       Has EC Info: No
+# RAW-NEXT:       0 Contributing Source Files [
+# RAW-NEXT:       ]
 # RAW-NEXT:     }
 # RAW-NEXT:   ]
 # RAW-NEXT: }
 # RAW-NEXT: Section Contributions [
 # RAW-NEXT:   Contribution {
 # RAW-NEXT:     ISect: 0
-# RAW-NEXT:     Off: 1140
+# 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: * Linker *
+# RAW-NEXT:     }
+# RAW-NEXT:     Data CRC: 0
+# RAW-NEXT:     Reloc CRC: 0
+# RAW-NEXT:   }
+# RAW-NEXT:   Contribution {
+# RAW-NEXT:     ISect: 0
+# 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: * Linker *
+# RAW-NEXT:     }
+# RAW-NEXT:     Data CRC: 0
+# RAW-NEXT:     Reloc CRC: 0
+# RAW-NEXT:   }
+# RAW-NEXT:   Contribution {
+# RAW-NEXT:     ISect: 0
+# 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: * Linker *
+# RAW-NEXT:     }
+# RAW-NEXT:     Data CRC: 0
+# RAW-NEXT:     Reloc CRC: 0
+# RAW-NEXT:   }
+# RAW-NEXT:   Contribution {
+# RAW-NEXT:     ISect: 0
+# RAW-NEXT:     Off: 1144
 # RAW-NEXT:     Size: 6
 # RAW-NEXT:     Characteristics [ (0x60500020)
 # RAW-NEXT:       IMAGE_SCN_ALIGN_16BYTES (0x500000)
@@ -246,6 +434,20 @@
 # 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)
@@ -254,11 +456,11 @@
 # RAW-NEXT:     ]
 # RAW-NEXT:     Ovl: 0
 # RAW-NEXT:     Group: 0
-# RAW-NEXT:     Frame: 1
+# RAW-NEXT:     Frame: 2
 # RAW-NEXT:     SecName: 65535
 # RAW-NEXT:     ClassName: 65535
 # RAW-NEXT:     Offset: 0
-# RAW-NEXT:     SecByteLength: 6
+# RAW-NEXT:     SecByteLength: 22
 # RAW-NEXT:   }
 # RAW-NEXT:   Entry {
 # RAW-NEXT:     Flags [ (0x109)
@@ -268,11 +470,25 @@
 # RAW-NEXT:     ]
 # RAW-NEXT:     Ovl: 0
 # RAW-NEXT:     Group: 0
-# RAW-NEXT:     Frame: 2
+# RAW-NEXT:     Frame: 3
 # RAW-NEXT:     SecName: 65535
 # RAW-NEXT:     ClassName: 65535
 # RAW-NEXT:     Offset: 0
-# RAW-NEXT:     SecByteLength:
+# 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: 101
 # RAW-NEXT:   }
 # RAW-NEXT:   Entry {
 # RAW-NEXT:     Flags [ (0x208)
@@ -281,20 +497,37 @@
 # RAW-NEXT:     ]
 # RAW-NEXT:     Ovl: 0
 # RAW-NEXT:     Group: 0
-# RAW-NEXT:     Frame: 3
+# 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: Globals Stream not present
+# RAW-NEXT: Publics Stream not present
 # RAW-NEXT: Section Headers [
 # RAW-NEXT:   {
-# RAW-NEXT:     Name: .text
-# RAW-NEXT:     Virtual Size: 6
+# 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: 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
@@ -306,11 +539,26 @@
 # 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: 8192
+# RAW-NEXT:     Virtual Size: 101
+# RAW-NEXT:     Virtual Address: 16384
 # RAW-NEXT:     Size of Raw Data: 512
-# RAW-NEXT:     File Pointer to Raw Data: 1024
+# 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
@@ -321,106 +569,5 @@
 # RAW-NEXT:     ]
 # RAW-NEXT:   }
 # RAW-NEXT: ]
-
---- !COFF
-header:
-  Machine:         IMAGE_FILE_MACHINE_AMD64
-  Characteristics: [  ]
-sections:
-  - Name:            .drectve
-    Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
-    Alignment:       1
-    SectionData:     2020202F44454641554C544C49423A224C4942434D5422202F44454641554C544C49423A224F4C444E414D45532220
-  - Name:            '.debug$S'
-    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
-    Alignment:       1
-    SectionData:     04000000F1000000530000001500011100000000443A5C625C72657434322E6F626A003A003C1100600000D00013000000F259000013000000F25900004D6963726F736F667420285229204F7074696D697A696E6720436F6D70696C65720000F10000004E0000002A00471100000000000000000000000006000000000000000500000002100000000000000000006D61696E001C001210000000000000000000000000000000000000000000000042110002004F110000F2000000200000000000000000000000060000000000000001000000140000000000000001000080F4000000180000000100000010010BFC79AA614B536E3D64B110330D1E580000F30000000E00000000643A5C625C72657434322E63000000F10000000800000006004C110A100000
-    Relocations:
-      - VirtualAddress:  136
-        SymbolName:      main
-        Type:            IMAGE_REL_AMD64_SECREL
-      - VirtualAddress:  140
-        SymbolName:      main
-        Type:            IMAGE_REL_AMD64_SECTION
-      - VirtualAddress:  192
-        SymbolName:      main
-        Type:            IMAGE_REL_AMD64_SECREL
-      - VirtualAddress:  196
-        SymbolName:      main
-        Type:            IMAGE_REL_AMD64_SECTION
-  - Name:            '.debug$T'
-    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
-    Alignment:       1
-    SectionData:     040000000A00011201000000000000000E0008107400000000000000001000001200011600000000011000006D61696E00F3F2F10E00051600000000443A5C6200F3F2F12200051600000000433A5C767331345C56435C42494E5C616D6436345C636C2E6578650002010516000000002D5A37202D63202D4D54202D49433A5C767331345C56435C494E434C554445202D49433A5C767331345C56435C41544C4D46435C494E434C554445202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31303135302E305C7563727422202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C4E4554465853444B5C342E365C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C73686172656422000A00041601000000051000008200051606100000202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C75
 64655C77696E727422202D5443202D5800F3F2F10E0005160000000072657434322E63001600051600000000443A5C625C76633134302E70646200F11A00031605000310000004100000081000000910000007100000F2F1
-  - Name:            '.text$mn'
-    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
-    Alignment:       16
-    SectionData:     B82A000000C3
-symbols:
-  - Name:            '@comp.id'
-    Value:           17062386
-    SectionNumber:   -1
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_STATIC
-  - Name:            '@feat.00'
-    Value:           2147484048
-    SectionNumber:   -1
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_STATIC
-  - Name:            .drectve
-    Value:           0
-    SectionNumber:   1
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_STATIC
-    SectionDefinition:
-      Length:          47
-      NumberOfRelocations: 0
-      NumberOfLinenumbers: 0
-      CheckSum:        0
-      Number:          0
-  - Name:            '.debug$S'
-    Value:           0
-    SectionNumber:   2
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_STATIC
-    SectionDefinition:
-      Length:          296
-      NumberOfRelocations: 4
-      NumberOfLinenumbers: 0
-      CheckSum:        0
-      Number:          0
-  - Name:            '.debug$T'
-    Value:           0
-    SectionNumber:   3
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_STATIC
-    SectionDefinition:
-      Length:          576
-      NumberOfRelocations: 0
-      NumberOfLinenumbers: 0
-      CheckSum:        0
-      Number:          0
-  - Name:            '.text$mn'
-    Value:           0
-    SectionNumber:   4
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_NULL
-    StorageClass:    IMAGE_SYM_CLASS_STATIC
-    SectionDefinition:
-      Length:          6
-      NumberOfRelocations: 0
-      NumberOfLinenumbers: 0
-      CheckSum:        2139436471
-      Number:          0
-  - Name:            main
-    Value:           0
-    SectionNumber:   4
-    SimpleType:      IMAGE_SYM_TYPE_NULL
-    ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
-    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
-...
+# RAW-NEXT: New FPO [
+# RAW-NEXT: ]




More information about the llvm-commits mailing list