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.

llvm-svn: 291739
This commit is contained in:
Rui Ueyama 2017-01-12 03:09:25 +00:00
parent 2245293541
commit 5289662e4a
5 changed files with 646 additions and 377 deletions

View File

@ -18,6 +18,8 @@
#include "llvm/DebugInfo/CodeView/SymbolDumper.h" #include "llvm/DebugInfo/CodeView/SymbolDumper.h"
#include "llvm/DebugInfo/CodeView/TypeDatabase.h" #include "llvm/DebugInfo/CodeView/TypeDatabase.h"
#include "llvm/DebugInfo/CodeView/TypeDumpVisitor.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/ByteStream.h"
#include "llvm/DebugInfo/MSF/MSFBuilder.h" #include "llvm/DebugInfo/MSF/MSFBuilder.h"
#include "llvm/DebugInfo/MSF/MSFCommon.h" #include "llvm/DebugInfo/MSF/MSFCommon.h"
@ -63,22 +65,51 @@ static SectionChunk *findByName(std::vector<SectionChunk *> &Sections,
return nullptr; return nullptr;
} }
static ArrayRef<uint8_t> getDebugT(ObjectFile *File) { static ArrayRef<uint8_t> getDebugSection(ObjectFile *File, StringRef SecName) {
SectionChunk *Sec = findByName(File->getDebugChunks(), ".debug$T"); SectionChunk *Sec = findByName(File->getDebugChunks(), SecName);
if (!Sec) if (!Sec)
return {}; return {};
// First 4 bytes are section magic. // First 4 bytes are section magic.
ArrayRef<uint8_t> Data = Sec->getContents(); ArrayRef<uint8_t> Data = Sec->getContents();
if (Data.size() < 4) if (Data.size() < 4)
fatal(".debug$T too short"); fatal(SecName + " too short");
if (read32le(Data.data()) != COFF::DEBUG_SECTION_MAGIC) 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); 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) { 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()) if (Data.empty())
return; return;
@ -90,11 +121,12 @@ static void dumpDebugT(ScopedPrinter &W, ObjectFile *File) {
} }
static void dumpDebugS(ScopedPrinter &W, ObjectFile *File) { static void dumpDebugS(ScopedPrinter &W, ObjectFile *File) {
SectionChunk *Sec = findByName(File->getDebugChunks(), ".debug$S"); ListScope LS(W, "DebugS");
if (!Sec) ArrayRef<uint8_t> Data = getDebugSection(File, ".debug$S");
if (Data.empty())
return; return;
msf::ByteStream Stream(Sec->getContents()); msf::ByteStream Stream(Data);
CVSymbolArray Symbols; CVSymbolArray Symbols;
msf::StreamReader Reader(Stream); msf::StreamReader Reader(Stream);
if (auto EC = Reader.readArray(Symbols, Reader.getLength())) if (auto EC = Reader.readArray(Symbols, Reader.getLength()))
@ -116,21 +148,15 @@ static void dumpCodeView(SymbolTable *Symtab) {
} }
} }
static void addTypeInfo(SymbolTable *Symtab, static void addTypeInfo(pdb::TpiStreamBuilder &TpiBuilder,
pdb::TpiStreamBuilder &TpiBuilder) { ArrayRef<uint8_t> Data) {
for (ObjectFile *File : Symtab->ObjectFiles) { msf::ByteStream Stream(Data);
ArrayRef<uint8_t> Data = getDebugT(File); codeview::CVTypeArray Records;
if (Data.empty()) msf::StreamReader Reader(Stream);
continue; if (auto EC = Reader.readArray(Records, Reader.getLength()))
fatal(EC, "Reader.readArray failed");
msf::ByteStream Stream(Data); for (const codeview::CVType &Rec : Records)
codeview::CVTypeArray Records; TpiBuilder.addTypeRecord(Rec);
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. // Creates a PDB file.
@ -165,8 +191,11 @@ void coff::createPDB(StringRef Path, SymbolTable *Symtab,
// Add an empty TPI stream. // Add an empty TPI stream.
auto &TpiBuilder = Builder.getTpiBuilder(); auto &TpiBuilder = Builder.getTpiBuilder();
TpiBuilder.setVersionHeader(pdb::PdbTpiV80); TpiBuilder.setVersionHeader(pdb::PdbTpiV80);
if (Config->DebugPdb) std::vector<uint8_t> TpiData;
addTypeInfo(Symtab, TpiBuilder); if (Config->DebugPdb) {
TpiData = mergeDebugT(Symtab);
addTypeInfo(TpiBuilder, TpiData);
}
// Add an empty IPI stream. // Add an empty IPI stream.
auto &IpiBuilder = Builder.getIpiBuilder(); auto &IpiBuilder = Builder.getIpiBuilder();

View File

@ -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: 0400000006000112000000000E0008107400000000000000001000000A000210011000000C0001000A00011201000000000000000E0008107400000000000000031000001200011600000000041000006D61696E00F3F2F10E0001160000000001100000666F6F000E00051600000000443A5C6200F3F2F12200051600000000433A5C767331345C56435C42494E5C616D6436345C636C2E6578650002010516000000002D5A37202D63202D4D54202D49433A5C767331345C56435C494E434C554445202D49433A5C767331345C56435C41544C4D46435C494E434C554445202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31303135302E305C7563727422202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C4E4554465853444B5C342E365C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C73686172656422000A0004160100000009100000820005160A100000202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C77696E727422202D5443202D5800F3F2F1160005160000000072657434322D6D61696E2E6300F3F2F11600051600000000443A5C625C76633134302E70646200F11A000316050007100000081000000C1000000D1000000B100000F2F1
- 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
...

View File

@ -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: 0400000006000112000000000E0008107400000000000000001000000E0001160000000001100000666F6F000E00051600000000443A5C6200F3F2F12200051600000000433A5C767331345C56435C42494E5C616D6436345C636C2E6578650002010516000000002D5A37202D63202D4D54202D49433A5C767331345C56435C494E434C554445202D49433A5C767331345C56435C41544C4D46435C494E434C554445202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31303135302E305C7563727422202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C4E4554465853444B5C342E365C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C73686172656422000A00041601000000051000008200051606100000202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C77696E727422202D5443202D5800F3F2F1120005160000000072657434322D7375622E63001600051600000000443A5C625C76633134302E70646200F11A00031605000310000004100000081000000910000007100000F2F1
- 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
...

View File

@ -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: 040000000A00011201000000000000000E0008107400000000000000001000001200011600000000011000006D61696E00F3F2F10E00051600000000443A5C6200F3F2F12200051600000000433A5C767331345C56435C42494E5C616D6436345C636C2E6578650002010516000000002D5A37202D63202D4D54202D49433A5C767331345C56435C494E434C554445202D49433A5C767331345C56435C41544C4D46435C494E434C554445202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31303135302E305C7563727422202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C4E4554465853444B5C342E365C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C73686172656422000A00041601000000051000008200051606100000202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C77696E727422202D5443202D5800F3F2F10E0005160000000072657434322E63001600051600000000443A5C625C76633134302E70646200F11A00031605000310000004100000081000000910000007100000F2F1
- 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
...

View File

@ -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: 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: llvm-pdbdump pdb2yaml -stream-metadata -stream-directory -pdb-stream \
# RUN: -dbi-stream -ipi-stream -tpi-stream %t.pdb | FileCheck %s # 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: MSF:
# CHECK-NEXT: SuperBlock: # CHECK-NEXT: SuperBlock:
# CHECK-NEXT: BlockSize: 4096 # CHECK-NEXT: BlockSize: 4096
# CHECK-NEXT: FreeBlockMap: # CHECK-NEXT: FreeBlockMap: 1
# CHECK-NEXT: NumBlocks: 10 # CHECK-NEXT: NumBlocks: 10
# CHECK-NEXT: NumDirectoryBytes: 48 # CHECK-NEXT: NumDirectoryBytes: 48
# CHECK-NEXT: Unknown1: 0 # CHECK-NEXT: Unknown1: 0
@ -19,7 +18,7 @@
# CHECK-NEXT: DirectoryBlocks: [ 9 ] # CHECK-NEXT: DirectoryBlocks: [ 9 ]
# CHECK-NEXT: NumStreams: 6 # CHECK-NEXT: NumStreams: 6
# CHECK-NEXT: FileSize: 40960 # 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: StreamMap:
# CHECK-NEXT: - Stream: [ ] # CHECK-NEXT: - Stream: [ ]
# CHECK-NEXT: - Stream: [ 5 ] # CHECK-NEXT: - Stream: [ 5 ]
@ -28,13 +27,8 @@
# CHECK-NEXT: - Stream: [ 8 ] # CHECK-NEXT: - Stream: [ 8 ]
# CHECK-NEXT: - Stream: [ 4 ] # CHECK-NEXT: - Stream: [ 4 ]
# CHECK-NEXT: PdbStream: # 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 # CHECK-NEXT: Age: 1
# Guid: '{389ACCF2-14A4-7FA2-6CF0-080447CF5C48}' # CHECK-NEXT: Guid:
# CHECK-NEXT: Guid: '{{.*}}'
# CHECK-NEXT: Signature: 0 # CHECK-NEXT: Signature: 0
# CHECK-NEXT: Version: VC70 # CHECK-NEXT: Version: VC70
# CHECK-NEXT: NamedStreams: # CHECK-NEXT: NamedStreams:
@ -51,7 +45,7 @@
# CHECK-NEXT: Records: # CHECK-NEXT: Records:
# CHECK-NEXT: - Kind: LF_ARGLIST # CHECK-NEXT: - Kind: LF_ARGLIST
# CHECK-NEXT: ArgList: # CHECK-NEXT: ArgList:
# CHECK-NEXT: ArgIndices: [ 0 ] # CHECK-NEXT: ArgIndices: [ ]
# CHECK-NEXT: - Kind: LF_PROCEDURE # CHECK-NEXT: - Kind: LF_PROCEDURE
# CHECK-NEXT: Procedure: # CHECK-NEXT: Procedure:
# CHECK-NEXT: ReturnType: 116 # CHECK-NEXT: ReturnType: 116
@ -59,11 +53,30 @@
# CHECK-NEXT: Options: [ None ] # CHECK-NEXT: Options: [ None ]
# CHECK-NEXT: ParameterCount: 0 # CHECK-NEXT: ParameterCount: 0
# CHECK-NEXT: ArgumentList: 4096 # 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: 4100
# CHECK-NEXT: Name: main
# CHECK-NEXT: - Kind: LF_FUNC_ID # CHECK-NEXT: - Kind: LF_FUNC_ID
# CHECK-NEXT: FuncId: # CHECK-NEXT: FuncId:
# CHECK-NEXT: ParentScope: 0 # CHECK-NEXT: ParentScope: 0
# CHECK-NEXT: FunctionType: 4097 # CHECK-NEXT: FunctionType: 4097
# CHECK-NEXT: Name: main # CHECK-NEXT: Name: foo
# CHECK-NEXT: - Kind: LF_STRING_ID # CHECK-NEXT: - Kind: LF_STRING_ID
# CHECK-NEXT: StringId: # CHECK-NEXT: StringId:
# CHECK-NEXT: Id: 0 # CHECK-NEXT: Id: 0
@ -78,37 +91,79 @@
# 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: 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: - Kind: LF_SUBSTR_LIST
# CHECK-NEXT: ArgList: # CHECK-NEXT: ArgList:
# CHECK-NEXT: ArgIndices: [ 4101 ] # CHECK-NEXT: ArgIndices: [ 4105 ]
# CHECK-NEXT: - Kind: LF_STRING_ID # CHECK-NEXT: - Kind: LF_STRING_ID
# CHECK-NEXT: StringId: # 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: 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: - Kind: LF_STRING_ID
# CHECK-NEXT: StringId: # CHECK-NEXT: StringId:
# CHECK-NEXT: Id: 0 # CHECK-NEXT: Id: 0
# CHECK-NEXT: String: ret42.c # CHECK-NEXT: String: ret42-main.c
# CHECK-NEXT: - Kind: LF_STRING_ID # CHECK-NEXT: - Kind: LF_STRING_ID
# CHECK-NEXT: StringId: # CHECK-NEXT: StringId:
# CHECK-NEXT: Id: 0 # CHECK-NEXT: Id: 0
# CHECK-NEXT: String: 'D:\b\vc140.pdb' # CHECK-NEXT: String: 'D:\b\vc140.pdb'
# CHECK-NEXT: - Kind: LF_BUILDINFO # CHECK-NEXT: - Kind: LF_BUILDINFO
# CHECK-NEXT: 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: IpiStream:
# CHECK-NEXT: Version: VC80 # CHECK-NEXT: Version: VC80
# CHECK-NEXT: Records: # 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: TPI Version: 20040203
# RAW-NEXT: Record count: 11 # RAW-NEXT: Record count: 17
# RAW-NEXT: Records [ # RAW-NEXT: Records [
# RAW-NEXT: { # RAW-NEXT: {
# RAW-NEXT: ArgList (0x1000) { # RAW-NEXT: ArgList (0x1000) {
# RAW-NEXT: TypeLeafKind: LF_ARGLIST (0x1201) # RAW-NEXT: TypeLeafKind: LF_ARGLIST (0x1201)
# RAW-NEXT: NumArgs: 1 # RAW-NEXT: NumArgs: 0
# RAW-NEXT: Arguments [ # RAW-NEXT: Arguments [
# RAW-NEXT: ArgType: 0x0
# RAW-NEXT: ] # RAW-NEXT: ]
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: } # RAW-NEXT: }
@ -120,81 +175,163 @@
# RAW-NEXT: FunctionOptions [ (0x0) # RAW-NEXT: FunctionOptions [ (0x0)
# RAW-NEXT: ] # RAW-NEXT: ]
# RAW-NEXT: NumParameters: 0 # RAW-NEXT: NumParameters: 0
# RAW-NEXT: ArgListType: (<no type>) (0x1000) # RAW-NEXT: ArgListType: () (0x1000)
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: { # RAW-NEXT: {
# RAW-NEXT: FuncId (0x1002) { # RAW-NEXT: Pointer (0x1002) {
# RAW-NEXT: TypeLeafKind: LF_POINTER (0x1002)
# RAW-NEXT: PointeeType: int () (0x1001)
# RAW-NEXT: PointerAttributes: 0x1000C
# RAW-NEXT: PtrType: Near64 (0xC)
# RAW-NEXT: PtrMode: Pointer (0x0)
# RAW-NEXT: IsFlat: 0
# RAW-NEXT: IsConst: 0
# RAW-NEXT: IsVolatile: 0
# RAW-NEXT: IsUnaligned: 0
# RAW-NEXT: SizeOf: 8
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: ArgList (0x1003) {
# RAW-NEXT: TypeLeafKind: LF_ARGLIST (0x1201)
# RAW-NEXT: NumArgs: 1
# RAW-NEXT: Arguments [
# RAW-NEXT: ArgType: 0x0
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: Procedure (0x1004) {
# RAW-NEXT: TypeLeafKind: LF_PROCEDURE (0x1008)
# RAW-NEXT: ReturnType: int (0x74)
# RAW-NEXT: CallingConvention: NearC (0x0)
# RAW-NEXT: FunctionOptions [ (0x0)
# RAW-NEXT: ]
# RAW-NEXT: NumParameters: 0
# RAW-NEXT: ArgListType: (<no type>) (0x1003)
# RAW-NEXT: }
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: FuncId (0x1005) {
# RAW-NEXT: TypeLeafKind: LF_FUNC_ID (0x1601) # RAW-NEXT: TypeLeafKind: LF_FUNC_ID (0x1601)
# RAW-NEXT: ParentScope: 0x0 # RAW-NEXT: ParentScope: 0x0
# RAW-NEXT: FunctionType: int (<no type>) (0x1001) # RAW-NEXT: FunctionType: int (<no type>) (0x1004)
# RAW-NEXT: Name: main # RAW-NEXT: Name: main
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: } # 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: TypeLeafKind: LF_STRING_ID (0x1605)
# RAW-NEXT: Id: 0x0 # RAW-NEXT: Id: 0x0
# RAW-NEXT: StringData: D:\b # RAW-NEXT: StringData: D:\b
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: { # RAW-NEXT: {
# RAW-NEXT: StringId (0x1004) { # RAW-NEXT: StringId (0x1008) {
# RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605) # RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605)
# RAW-NEXT: Id: 0x0 # RAW-NEXT: Id: 0x0
# RAW-NEXT: StringData: C:\vs14\VC\BIN\amd64\cl.exe # RAW-NEXT: StringData: C:\vs14\VC\BIN\amd64\cl.exe
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: { # RAW-NEXT: {
# RAW-NEXT: StringId (0x1005) { # RAW-NEXT: StringId (0x1009) {
# RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605) # RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605)
# RAW-NEXT: Id: 0x0 # 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: 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: }
# RAW-NEXT: { # RAW-NEXT: {
# RAW-NEXT: StringList (0x1006) { # RAW-NEXT: StringList (0x100A) {
# RAW-NEXT: TypeLeafKind: LF_SUBSTR_LIST (0x1604) # RAW-NEXT: TypeLeafKind: LF_SUBSTR_LIST (0x1604)
# RAW-NEXT: NumArgs: 1 # RAW-NEXT: NumArgs: 1
# RAW-NEXT: Arguments [ # 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: } # RAW-NEXT: }
# RAW-NEXT: { # RAW-NEXT: {
# RAW-NEXT: StringId (0x1007) { # RAW-NEXT: StringId (0x100B) {
# RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605) # 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: 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: }
# RAW-NEXT: { # RAW-NEXT: {
# RAW-NEXT: StringId (0x1008) { # RAW-NEXT: StringId (0x100C) {
# RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605) # RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605)
# RAW-NEXT: Id: 0x0 # RAW-NEXT: Id: 0x0
# RAW-NEXT: StringData: ret42.c # RAW-NEXT: StringData: ret42-main.c
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: { # RAW-NEXT: {
# RAW-NEXT: StringId (0x1009) { # RAW-NEXT: StringId (0x100D) {
# RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605) # RAW-NEXT: TypeLeafKind: LF_STRING_ID (0x1605)
# RAW-NEXT: Id: 0x0 # RAW-NEXT: Id: 0x0
# RAW-NEXT: StringData: D:\b\vc140.pdb # RAW-NEXT: StringData: D:\b\vc140.pdb
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: { # RAW-NEXT: {
# RAW-NEXT: BuildInfo (0x100A) { # RAW-NEXT: BuildInfo (0x100E) {
# RAW-NEXT: TypeLeafKind: LF_BUILDINFO (0x1603) # RAW-NEXT: TypeLeafKind: LF_BUILDINFO (0x1603)
# RAW-NEXT: NumArgs: 5 # RAW-NEXT: NumArgs: 5
# RAW-NEXT: Arguments [ # RAW-NEXT: Arguments [
# RAW-NEXT: ArgType: D:\b (0x1003) # RAW-NEXT: ArgType: D:\b (0x1007)
# RAW-NEXT: ArgType: C:\vs14\VC\BIN\amd64\cl.exe (0x1004) # RAW-NEXT: ArgType: C:\vs14\VC\BIN\amd64\cl.exe (0x1008)
# RAW-NEXT: ArgType: ret42.c (0x1008) # RAW-NEXT: ArgType: ret42-main.c (0x100C)
# RAW-NEXT: ArgType: D:\b\vc140.pdb (0x1009) # 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 (0x1007) # 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: } # 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: } # RAW-NEXT: }
# RAW-NEXT: DBI Stream { # RAW-NEXT: DBI Stream {
@ -222,13 +359,64 @@
# RAW-NEXT: Symbol Byte Size: 0 # RAW-NEXT: Symbol Byte Size: 0
# RAW-NEXT: Type Server Index: 0 # RAW-NEXT: Type Server Index: 0
# RAW-NEXT: Has EC Info: No # RAW-NEXT: Has EC Info: No
# RAW-NEXT: 0 Contributing Source Files [
# RAW-NEXT: ]
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: ] # RAW-NEXT: ]
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: Section Contributions [ # RAW-NEXT: Section Contributions [
# RAW-NEXT: Contribution { # RAW-NEXT: Contribution {
# RAW-NEXT: ISect: 0 # 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: Size: 6
# RAW-NEXT: Characteristics [ (0x60500020) # RAW-NEXT: Characteristics [ (0x60500020)
# RAW-NEXT: IMAGE_SCN_ALIGN_16BYTES (0x500000) # RAW-NEXT: IMAGE_SCN_ALIGN_16BYTES (0x500000)
@ -246,9 +434,8 @@
# RAW-NEXT: ] # RAW-NEXT: ]
# RAW-NEXT: Section Map [ # RAW-NEXT: Section Map [
# RAW-NEXT: Entry { # RAW-NEXT: Entry {
# RAW-NEXT: Flags [ (0x10D) # RAW-NEXT: Flags [ (0x109)
# RAW-NEXT: AddressIs32Bit (0x8) # RAW-NEXT: AddressIs32Bit (0x8)
# RAW-NEXT: Execute (0x4)
# RAW-NEXT: IsSelector (0x100) # RAW-NEXT: IsSelector (0x100)
# RAW-NEXT: Read (0x1) # RAW-NEXT: Read (0x1)
# RAW-NEXT: ] # RAW-NEXT: ]
@ -258,11 +445,12 @@
# RAW-NEXT: SecName: 65535 # RAW-NEXT: SecName: 65535
# RAW-NEXT: ClassName: 65535 # RAW-NEXT: ClassName: 65535
# RAW-NEXT: Offset: 0 # RAW-NEXT: Offset: 0
# RAW-NEXT: SecByteLength: 6 # RAW-NEXT: SecByteLength: 12
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: Entry { # RAW-NEXT: Entry {
# RAW-NEXT: Flags [ (0x109) # RAW-NEXT: Flags [ (0x10D)
# RAW-NEXT: AddressIs32Bit (0x8) # RAW-NEXT: AddressIs32Bit (0x8)
# RAW-NEXT: Execute (0x4)
# RAW-NEXT: IsSelector (0x100) # RAW-NEXT: IsSelector (0x100)
# RAW-NEXT: Read (0x1) # RAW-NEXT: Read (0x1)
# RAW-NEXT: ] # RAW-NEXT: ]
@ -272,7 +460,35 @@
# RAW-NEXT: SecName: 65535 # RAW-NEXT: SecName: 65535
# RAW-NEXT: ClassName: 65535 # RAW-NEXT: ClassName: 65535
# RAW-NEXT: Offset: 0 # RAW-NEXT: Offset: 0
# RAW-NEXT: SecByteLength: # RAW-NEXT: SecByteLength: 22
# RAW-NEXT: }
# RAW-NEXT: Entry {
# RAW-NEXT: Flags [ (0x109)
# RAW-NEXT: AddressIs32Bit (0x8)
# RAW-NEXT: IsSelector (0x100)
# RAW-NEXT: Read (0x1)
# RAW-NEXT: ]
# RAW-NEXT: Ovl: 0
# RAW-NEXT: Group: 0
# RAW-NEXT: Frame: 3
# RAW-NEXT: SecName: 65535
# RAW-NEXT: ClassName: 65535
# RAW-NEXT: Offset: 0
# RAW-NEXT: SecByteLength: 8
# RAW-NEXT: }
# RAW-NEXT: Entry {
# RAW-NEXT: Flags [ (0x109)
# RAW-NEXT: AddressIs32Bit (0x8)
# RAW-NEXT: IsSelector (0x100)
# RAW-NEXT: Read (0x1)
# RAW-NEXT: ]
# RAW-NEXT: Ovl: 0
# RAW-NEXT: Group: 0
# RAW-NEXT: Frame: 4
# RAW-NEXT: SecName: 65535
# RAW-NEXT: ClassName: 65535
# RAW-NEXT: Offset: 0
# RAW-NEXT: SecByteLength: 101
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: Entry { # RAW-NEXT: Entry {
# RAW-NEXT: Flags [ (0x208) # RAW-NEXT: Flags [ (0x208)
@ -281,35 +497,21 @@
# RAW-NEXT: ] # RAW-NEXT: ]
# RAW-NEXT: Ovl: 0 # RAW-NEXT: Ovl: 0
# RAW-NEXT: Group: 0 # RAW-NEXT: Group: 0
# RAW-NEXT: Frame: 3 # RAW-NEXT: Frame: 5
# RAW-NEXT: SecName: 65535 # RAW-NEXT: SecName: 65535
# RAW-NEXT: ClassName: 65535 # RAW-NEXT: ClassName: 65535
# RAW-NEXT: Offset: 0 # RAW-NEXT: Offset: 0
# RAW-NEXT: SecByteLength: 4294967295 # RAW-NEXT: SecByteLength: 4294967295
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: ] # RAW-NEXT: ]
# RAW-NEXT: Globals Stream not present
# RAW-NEXT: Publics Stream not present
# RAW-NEXT: Section Headers [ # RAW-NEXT: Section Headers [
# RAW-NEXT: { # RAW-NEXT: {
# RAW-NEXT: Name: .text # RAW-NEXT: Name: .pdata
# RAW-NEXT: Virtual Size: 6 # RAW-NEXT: Virtual Size: 12
# RAW-NEXT: Virtual Address: 4096 # RAW-NEXT: Virtual Address: 4096
# RAW-NEXT: Size of Raw Data: 512 # RAW-NEXT: Size of Raw Data: 512
# RAW-NEXT: File Pointer to Raw Data: 512
# RAW-NEXT: File Pointer to Relocations: 0
# RAW-NEXT: File Pointer to Linenumbers: 0
# RAW-NEXT: Number of Relocations: 0
# RAW-NEXT: Number of Linenumbers: 0
# RAW-NEXT: Characteristics [ (0x60000020)
# RAW-NEXT: IMAGE_SCN_CNT_CODE (0x20)
# RAW-NEXT: IMAGE_SCN_MEM_EXECUTE (0x20000000)
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: Name: .rdata
# RAW-NEXT: Virtual Size:
# RAW-NEXT: Virtual Address: 8192
# RAW-NEXT: Size of Raw Data: 512
# RAW-NEXT: File Pointer to Raw Data: 1024 # RAW-NEXT: File Pointer to Raw Data: 1024
# RAW-NEXT: File Pointer to Relocations: 0 # RAW-NEXT: File Pointer to Relocations: 0
# RAW-NEXT: File Pointer to Linenumbers: 0 # RAW-NEXT: File Pointer to Linenumbers: 0
@ -320,107 +522,52 @@
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000) # RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ] # RAW-NEXT: ]
# RAW-NEXT: } # RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: Name: .text
# RAW-NEXT: Virtual Size: 22
# RAW-NEXT: Virtual Address: 8192
# RAW-NEXT: Size of Raw Data: 512
# RAW-NEXT: File Pointer to Raw Data: 1536
# RAW-NEXT: File Pointer to Relocations: 0
# RAW-NEXT: File Pointer to Linenumbers: 0
# RAW-NEXT: Number of Relocations: 0
# RAW-NEXT: Number of Linenumbers: 0
# RAW-NEXT: Characteristics [ (0x60000020)
# RAW-NEXT: IMAGE_SCN_CNT_CODE (0x20)
# RAW-NEXT: IMAGE_SCN_MEM_EXECUTE (0x20000000)
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: Name: .xdata
# RAW-NEXT: Virtual Size: 8
# RAW-NEXT: Virtual Address: 12288
# RAW-NEXT: Size of Raw Data: 512
# RAW-NEXT: File Pointer to Raw Data: 2048
# RAW-NEXT: File Pointer to Relocations: 0
# RAW-NEXT: File Pointer to Linenumbers: 0
# RAW-NEXT: Number of Relocations: 0
# RAW-NEXT: Number of Linenumbers: 0
# RAW-NEXT: Characteristics [ (0x40000040)
# RAW-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: {
# RAW-NEXT: Name: .rdata
# RAW-NEXT: Virtual Size: 101
# RAW-NEXT: Virtual Address: 16384
# RAW-NEXT: Size of Raw Data: 512
# RAW-NEXT: File Pointer to Raw Data: 2560
# RAW-NEXT: File Pointer to Relocations: 0
# RAW-NEXT: File Pointer to Linenumbers: 0
# RAW-NEXT: Number of Relocations: 0
# RAW-NEXT: Number of Linenumbers: 0
# RAW-NEXT: Characteristics [ (0x40000040)
# RAW-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
# RAW-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
# RAW-NEXT: ]
# RAW-NEXT: }
# RAW-NEXT: ]
# RAW-NEXT: New FPO [
# 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: 040000000A00011201000000000000000E0008107400000000000000001000001200011600000000011000006D61696E00F3F2F10E00051600000000443A5C6200F3F2F12200051600000000433A5C767331345C56435C42494E5C616D6436345C636C2E6578650002010516000000002D5A37202D63202D4D54202D49433A5C767331345C56435C494E434C554445202D49433A5C767331345C56435C41544C4D46435C494E434C554445202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C31305C696E636C7564655C31302E302E31303135302E305C7563727422202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C4E4554465853444B5C342E365C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C73686172656422000A00041601000000051000008200051606100000202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C756D22202D4922433A5C50726F6772616D2046696C65732028783836295C57696E646F7773204B6974735C382E315C696E636C7564655C77696E727422202D5443202D5800F3F2F10E0005160000000072657434322E63001600051600000000443A5C625C76633134302E70646200F11A00031605000310000004100000081000000910000007100000F2F1
- 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
...