[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