[lld] r289183 - Add type records to TPI stream.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Sat Dec 10 09:34:46 PST 2016


I hid the code behind a new debug command line flag in r289330 so it won't
take time in a regular build. But we need to make it faster sooner or later.

On Fri, Dec 9, 2016 at 5:55 PM, Peter Collingbourne <peter at pcc.me.uk> wrote:

> Hi Rui, it looks like this change was responsible for a significant perf
> regression linking chrome_child.dll. It now takes at least 5 minutes to
> link.
>
> Peter
>
> On Thu, Dec 8, 2016 at 8:46 PM, Rui Ueyama via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: ruiu
>> Date: Thu Dec  8 22:46:54 2016
>> New Revision: 289183
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=289183&view=rev
>> Log:
>> Add type records to TPI stream.
>>
>> I don't think the data I add to a TPI stream in this patch is correct,
>> but at least it can be displayed using llvm-pdbdump. Until I add more
>> streams to a PDB file, I'm not able to know whether the data will be
>> accepted by MSVC tools or not.
>>
>> 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=289183&r1=289182&r2=289183&view=diff
>> ============================================================
>> ==================
>> --- lld/trunk/COFF/PDB.cpp (original)
>> +++ lld/trunk/COFF/PDB.cpp Thu Dec  8 22:46:54 2016
>> @@ -60,10 +60,10 @@ static SectionChunk *findByName(std::vec
>>    return nullptr;
>>  }
>>
>> -static void dumpDebugT(ScopedPrinter &W, ObjectFile *File) {
>> +static ArrayRef<uint8_t> getDebugT(ObjectFile *File) {
>>    SectionChunk *Sec = findByName(File->getDebugChunks(), ".debug$T");
>>    if (!Sec)
>> -    return;
>> +    return {};
>>
>>    // First 4 bytes are section magic.
>>    ArrayRef<uint8_t> Data = Sec->getContents();
>> @@ -71,9 +71,17 @@ static void dumpDebugT(ScopedPrinter &W,
>>      fatal(".debug$T too short");
>>    if (read32le(Data.data()) != COFF::DEBUG_SECTION_MAGIC)
>>      fatal(".debug$T has an invalid magic");
>> +  return Data.slice(4);
>> +}
>> +
>> +static void dumpDebugT(ScopedPrinter &W, ObjectFile *File) {
>> +  ArrayRef<uint8_t> Data = getDebugT(File);
>> +  if (Data.empty())
>> +    return;
>>
>> +  msf::ByteStream Stream(Data);
>>    CVTypeDumper TypeDumper(&W, false);
>> -  if (auto EC = TypeDumper.dump(Data.slice(4)))
>> +  if (auto EC = TypeDumper.dump(Data))
>>      fatal(EC, "CVTypeDumper::dump failed");
>>  }
>>
>> @@ -104,6 +112,23 @@ 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);
>> +  }
>> +}
>> +
>>  // Creates a PDB file.
>>  void coff::createPDB(StringRef Path, SymbolTable *Symtab,
>>                       ArrayRef<uint8_t> SectionTable) {
>> @@ -137,6 +162,7 @@ void coff::createPDB(StringRef Path, Sym
>>    // Add an empty TPI stream.
>>    auto &TpiBuilder = Builder.getTpiBuilder();
>>    TpiBuilder.setVersionHeader(pdb::PdbTpiV80);
>> +  addTypeInfo(Symtab, TpiBuilder);
>>
>>    // Add an empty IPI stream.
>>    auto &IpiBuilder = Builder.getIpiBuilder();
>>
>> Modified: lld/trunk/test/COFF/pdb.test
>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/pdb.
>> test?rev=289183&r1=289182&r2=289183&view=diff
>> ============================================================
>> ==================
>> --- lld/trunk/test/COFF/pdb.test (original)
>> +++ lld/trunk/test/COFF/pdb.test Thu Dec  8 22:46:54 2016
>> @@ -1,10 +1,10 @@
>>  # RUN: yaml2obj %s > %t.obj
>> -# RUN: lld-link /debug /pdb:%t.pdb /dll /out:%t.dll /entry:DllMain
>> /nodefaultlib %t.obj
>> +# RUN: lld-link /debug /pdb:%t.pdb /dll /out:%t.dll /entry:main
>> /nodefaultlib %t.obj
>>  # RUN: llvm-pdbdump pdb2yaml -stream-metadata -stream-directory
>> -pdb-stream \
>> -# RUN:   -dbi-stream -ipi-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 %t.pdb \
>> -# RUN:   | FileCheck -check-prefix RAW %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:
>> @@ -14,37 +14,184 @@
>>  # CHECK-NEXT:     NumDirectoryBytes: 48
>>  # CHECK-NEXT:     Unknown1:        0
>>  # CHECK-NEXT:     BlockMapAddr:    3
>> -# CHECK-NEXT:     NumDirectoryBlocks: 1
>> -# CHECK-NEXT:     DirectoryBlocks: [ 9 ]
>> -# CHECK-NEXT:     NumStreams:      6
>> -# CHECK-NEXT:     FileSize:        40960
>> -# CHECK-NEXT:   StreamSizes:     [ 0, 48, 56, 322, 56, 80 ]
>> -# CHECK-NEXT:   StreamMap:
>> -# CHECK-NEXT:     - Stream:          [  ]
>> -# CHECK-NEXT:     - Stream:          [ 5 ]
>> -# CHECK-NEXT:     - Stream:          [ 7 ]
>> -# CHECK-NEXT:     - Stream:          [ 6 ]
>> -# CHECK-NEXT:     - Stream:          [ 8 ]
>> -# CHECK-NEXT:     - Stream:          [ 4 ]
>> -# CHECK-NEXT:   PdbStream:
>> -# CHECK-NEXT:     Age:             1
>> -# CHECK-NEXT:     Guid:            '{00000000-0000-0000-0000-0000
>> 00000000}'
>> -# CHECK-NEXT:     Signature:       0
>> -# CHECK-NEXT:     Version:         VC70
>> -# CHECK-NEXT:     NamedStreams:
>> -# CHECK-NEXT:   DbiStream:
>> -# CHECK-NEXT:     VerHeader:       V110
>> -# CHECK-NEXT:     Age:             1
>> -# CHECK-NEXT:     BuildNumber:     0
>> -# CHECK-NEXT:     PdbDllVersion:   0
>> -# CHECK-NEXT:     PdbDllRbld:      0
>> -# CHECK-NEXT:     Flags:           0
>> -# CHECK-NEXT:     MachineType:     x86
>> -# CHECK-NEXT:   IpiStream:
>> -# CHECK-NEXT:     Version:         VC80
>> -# CHECK-NEXT:     Records:
>> +# CHECK-NEXT:   NumDirectoryBlocks: 1
>> +# CHECK-NEXT:   DirectoryBlocks: [ 9 ]
>> +# CHECK-NEXT:   NumStreams:      6
>> +# CHECK-NEXT:   FileSize:        40960
>> +# CHECK-NEXT: StreamSizes:     [ 0, 48, 628, 266, 56, 80 ]
>> +# CHECK-NEXT: StreamMap:
>> +# CHECK-NEXT:   - Stream:          [  ]
>> +# CHECK-NEXT:   - Stream:          [ 5 ]
>> +# CHECK-NEXT:   - Stream:          [ 7 ]
>> +# CHECK-NEXT:   - Stream:          [ 6 ]
>> +# CHECK-NEXT:   - Stream:          [ 8 ]
>> +# CHECK-NEXT:   - Stream:          [ 4 ]
>> +# CHECK-NEXT: PdbStream:
>> +# CHECK-NEXT:   Age:             1
>> +# CHECK-NEXT:   Guid:            '{00000000-0000-0000-0000-0000
>> 00000000}'
>> +# CHECK-NEXT:   Signature:       0
>> +# CHECK-NEXT:   Version:         VC70
>> +# CHECK-NEXT:   NamedStreams:
>> +# CHECK-NEXT: DbiStream:
>> +# CHECK-NEXT:   VerHeader:       V110
>> +# CHECK-NEXT:   Age:             1
>> +# CHECK-NEXT:   BuildNumber:     0
>> +# CHECK-NEXT:   PdbDllVersion:   0
>> +# CHECK-NEXT:   PdbDllRbld:      0
>> +# CHECK-NEXT:   Flags:           0
>> +# CHECK-NEXT:   MachineType:     x86
>> +# CHECK-NEXT: TpiStream:
>> +# CHECK-NEXT:   Version:         VC80
>> +# CHECK-NEXT:   Records:
>> +# 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:    4096
>> +# CHECK-NEXT:     - Kind:            LF_FUNC_ID
>> +# CHECK-NEXT:       FuncId:
>> +# CHECK-NEXT:         ParentScope:     0
>> +# CHECK-NEXT:         FunctionType:    4097
>> +# CHECK-NEXT:         Name:            main
>> +# CHECK-NEXT:     - Kind:            LF_STRING_ID
>> +# CHECK-NEXT:       StringId:
>> +# CHECK-NEXT:         Id:              0
>> +# CHECK-NEXT:         String:          'D:\b'
>> +# CHECK-NEXT:     - Kind:            LF_STRING_ID
>> +# CHECK-NEXT:       StringId:
>> +# CHECK-NEXT:         Id:              0
>> +# CHECK-NEXT:         String:          'C:\vs14\VC\BIN\amd64\cl.exe'
>> +# CHECK-NEXT:     - Kind:            LF_STRING_ID
>> +# CHECK-NEXT:       StringId:
>> +# CHECK-NEXT:         Id:              0
>> +# 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:     - Kind:            LF_STRING_ID
>> +# CHECK-NEXT:       StringId:
>> +# CHECK-NEXT:         Id:              4102
>> +# 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:     - 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: IpiStream:
>> +# CHECK-NEXT:   Version:         VC80
>> +# CHECK-NEXT:   Records:
>> +# CHECK-NEXT: ...
>>
>> -# RAW:      DBI Stream {
>> +# RAW:      Type Info Stream (TPI) {
>> +# RAW-NEXT:   TPI Version: 20040203
>> +# RAW-NEXT:   Record count: 11
>> +# RAW-NEXT:   Records [
>> +# RAW-NEXT:     {
>> +# RAW-NEXT:       ArgList (0x1000) {
>> +# 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 (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: (<no type>) (0x1000)
>> +# RAW-NEXT:       }
>> +# RAW-NEXT:     }
>> +# RAW-NEXT:     {
>> +# RAW-NEXT:       FuncId (0x1002) {
>> +# RAW-NEXT:         TypeLeafKind: LF_FUNC_ID (0x1601)
>> +# RAW-NEXT:         ParentScope: 0x0
>> +# RAW-NEXT:         FunctionType: int (<no type>) (0x1001)
>> +# RAW-NEXT:         Name: main
>> +# RAW-NEXT:       }
>> +# RAW-NEXT:     }
>> +# RAW-NEXT:     {
>> +# RAW-NEXT:       StringId (0x1003) {
>> +# 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:         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:         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:         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:         ]
>> +# RAW-NEXT:       }
>> +# RAW-NEXT:     }
>> +# RAW-NEXT:     {
>> +# RAW-NEXT:       StringId (0x1007) {
>> +# 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:         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:         TypeLeafKind: LF_STRING_ID (0x1605)
>> +# RAW-NEXT:         Id: 0x0
>> +# RAW-NEXT:         StringData: ret42.c
>> +# RAW-NEXT:       }
>> +# RAW-NEXT:     }
>> +# RAW-NEXT:     {
>> +# RAW-NEXT:       StringId (0x1009) {
>> +# 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:         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:         ]
>> +# RAW-NEXT:       }
>> +# RAW-NEXT:     }
>> +# RAW-NEXT:   ]
>> +# RAW-NEXT: }
>> +# RAW-NEXT: DBI Stream {
>>  # RAW-NEXT:   Dbi Version: 20091201
>>  # RAW-NEXT:   Age: 1
>>  # RAW-NEXT:   Incremental Linking: No
>> @@ -75,10 +222,10 @@
>>  # RAW-NEXT: Section Contributions [
>>  # RAW-NEXT:   Contribution {
>>  # RAW-NEXT:     ISect: 0
>> -# RAW-NEXT:     Off: 140
>> -# RAW-NEXT:     Size: 3
>> -# RAW-NEXT:     Characteristics [ (0x60300020)
>> -# RAW-NEXT:       IMAGE_SCN_ALIGN_4BYTES (0x300000)
>> +# RAW-NEXT:     Off: 1140
>> +# RAW-NEXT:     Size: 6
>> +# RAW-NEXT:     Characteristics [ (0x60500020)
>> +# RAW-NEXT:       IMAGE_SCN_ALIGN_16BYTES (0x500000)
>>  # RAW-NEXT:       IMAGE_SCN_CNT_CODE (0x20)
>>  # RAW-NEXT:       IMAGE_SCN_MEM_EXECUTE (0x20000000)
>>  # RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)
>> @@ -90,40 +237,6 @@
>>  # RAW-NEXT:     Data CRC: 0
>>  # RAW-NEXT:     Reloc CRC: 0
>>  # RAW-NEXT:   }
>> -# RAW-NEXT:   Contribution {
>> -# RAW-NEXT:     ISect: 0
>> -# RAW-NEXT:     Off: 0
>> -# RAW-NEXT:     Size: 0
>> -# RAW-NEXT:     Characteristics [ (0xC0300040)
>> -# RAW-NEXT:       IMAGE_SCN_ALIGN_4BYTES (0x300000)
>> -# RAW-NEXT:       IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
>> -# RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)
>> -# RAW-NEXT:       IMAGE_SCN_MEM_WRITE (0x80000000)
>> -# 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: 0
>> -# RAW-NEXT:     Size: 0
>> -# RAW-NEXT:     Characteristics [ (0xC0300080)
>> -# RAW-NEXT:       IMAGE_SCN_ALIGN_4BYTES (0x300000)
>> -# RAW-NEXT:       IMAGE_SCN_CNT_UNINITIALIZED_DATA (0x80)
>> -# RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)
>> -# RAW-NEXT:       IMAGE_SCN_MEM_WRITE (0x80000000)
>> -# 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: ]
>>  # RAW-NEXT: Section Map [
>>  # RAW-NEXT:   Entry {
>> @@ -139,7 +252,7 @@
>>  # RAW-NEXT:     SecName: 65535
>>  # RAW-NEXT:     ClassName: 65535
>>  # RAW-NEXT:     Offset: 0
>> -# RAW-NEXT:     SecByteLength:
>> +# RAW-NEXT:     SecByteLength: 6
>>  # RAW-NEXT:   }
>>  # RAW-NEXT:   Entry {
>>  # RAW-NEXT:     Flags [ (0x109)
>> @@ -172,10 +285,10 @@
>>  # RAW-NEXT: Section Headers [
>>  # RAW-NEXT:   {
>>  # RAW-NEXT:     Name: .text
>> -# RAW-NEXT:     Virtual Size:
>> -# RAW-NEXT:     Virtual Address:
>> -# RAW-NEXT:     Size of Raw Data:
>> -# RAW-NEXT:     File Pointer to Raw Data:
>> +# RAW-NEXT:     Virtual Size: 6
>> +# 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 Relocations: 0
>>  # RAW-NEXT:     File Pointer to Linenumbers: 0
>>  # RAW-NEXT:     Number of Relocations: 0
>> @@ -189,9 +302,9 @@
>>  # RAW-NEXT:   {
>>  # RAW-NEXT:     Name: .rdata
>>  # RAW-NEXT:     Virtual Size:
>> -# RAW-NEXT:     Virtual Address:
>> -# RAW-NEXT:     Size of Raw Data:
>> -# RAW-NEXT:     File Pointer to Raw Data:
>> +# 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 Relocations: 0
>>  # RAW-NEXT:     File Pointer to Linenumbers: 0
>>  # RAW-NEXT:     Number of Relocations: 0
>> @@ -205,67 +318,102 @@
>>
>>  --- !COFF
>>  header:
>> -  Machine:         IMAGE_FILE_MACHINE_I386
>> +  Machine:         IMAGE_FILE_MACHINE_AMD64
>>    Characteristics: [  ]
>>  sections:
>> -  - Name:            .text
>> +  - Name:            .drectve
>> +    Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
>> +    Alignment:       1
>> +    SectionData:     2020202F44454641554C544C49423A
>> 224C4942434D5422202F44454641554C544C49423A224F4C444E414D45532220
>> +  - Name:            '.debug$S'
>> +    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
>> IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]
>> +    Alignment:       1
>> +    SectionData:     04000000F100000053000000150001
>> 1100000000443A5C625C72657434322E6F626A003A003C1100600000D000
>> 13000000F259000013000000F25900004D6963726F736F66742028522920
>> 4F7074696D697A696E6720436F6D70696C65720000F10000004E0000002A
>> 004711000000000000000000000000060000000000000005000000021000
>> 00000000000000006D61696E001C00121000000000000000000000000000
>> 0000000000000000000042110002004F110000F200000020000000000000
>> 0000000000060000000000000001000000140000000000000001000080F4
>> 000000180000000100000010010BFC79AA614B536E3D64B110330D1E5800
>> 00F30000000E00000000643A5C625C72657434322E63000000F100000008
>> 00000006004C110A100000
>> +    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:     040000000A00011201000000000000
>> 000E0008107400000000000000001000001200011600000000011000006D
>> 61696E00F3F2F10E00051600000000443A5C6200F3F2F122000516000000
>> 00433A5C767331345C56435C42494E5C616D6436345C636C2E6578650002
>> 010516000000002D5A37202D63202D4D54202D49433A5C767331345C5643
>> 5C494E434C554445202D49433A5C767331345C56435C41544C4D46435C49
>> 4E434C554445202D4922433A5C50726F6772616D2046696C657320287838
>> 36295C57696E646F7773204B6974735C31305C696E636C7564655C31302E
>> 302E31303135302E305C7563727422202D4922433A5C50726F6772616D20
>> 46696C65732028783836295C57696E646F7773204B6974735C4E45544658
>> 53444B5C342E365C696E636C7564655C756D22202D4922433A5C50726F67
>> 72616D2046696C65732028783836295C57696E646F7773204B6974735C38
>> 2E315C696E636C7564655C73686172656422000A00041601000000051000
>> 008200051606100000202D4922433A5C50726F6772616D2046696C657320
>> 28783836295C57696E646F7773204B6974735C382E315C696E636C756465
>> 5C756D22202D4922433A5C50726F6772616D2046696C6573202878383629
>> 5C57696E646F7773204B6974735C382E315C696E636C75
>>  64655C77696E727422202D5443202D5800F3F2F10E000516000000007265
>> 7434322E63001600051600000000443A5C625C76633134302E70646200F1
>> 1A00031605000310000004100000081000000910000007100000F2F1
>> +  - Name:            '.text$mn'
>>      Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE,
>> IMAGE_SCN_MEM_READ ]
>> -    Alignment:       4
>> -    SectionData:     31C0C3
>> -  - Name:            .data
>> -    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA,
>> IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
>> -    Alignment:       4
>> -    SectionData:     ''
>> -  - Name:            .bss
>> -    Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA,
>> IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
>> -    Alignment:       4
>> -    SectionData:     ''
>> +    Alignment:       16
>> +    SectionData:     B82A000000C3
>>  symbols:
>> -  - Name:            .text
>> +  - 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:          3
>> +      Length:          47
>>        NumberOfRelocations: 0
>>        NumberOfLinenumbers: 0
>> -      CheckSum:        3963538403
>> -      Number:          1
>> -  - Name:            .data
>> +      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:          0
>> -      NumberOfRelocations: 0
>> +      Length:          296
>> +      NumberOfRelocations: 4
>>        NumberOfLinenumbers: 0
>>        CheckSum:        0
>> -      Number:          2
>> -  - Name:            .bss
>> +      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:          0
>> +      Length:          576
>>        NumberOfRelocations: 0
>>        NumberOfLinenumbers: 0
>>        CheckSum:        0
>> -      Number:          3
>> -  - Name:            '@feat.00'
>> -    Value:           1
>> -    SectionNumber:   -1
>> +      Number:          0
>> +  - Name:            '.text$mn'
>> +    Value:           0
>> +    SectionNumber:   4
>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>      ComplexType:     IMAGE_SYM_DTYPE_NULL
>>      StorageClass:    IMAGE_SYM_CLASS_STATIC
>> -  - Name:            _DllMain
>> +    SectionDefinition:
>> +      Length:          6
>> +      NumberOfRelocations: 0
>> +      NumberOfLinenumbers: 0
>> +      CheckSum:        2139436471 <(213)%20943-6471>
>> +      Number:          0
>> +  - Name:            main
>>      Value:           0
>> -    SectionNumber:   1
>> +    SectionNumber:   4
>>      SimpleType:      IMAGE_SYM_TYPE_NULL
>>      ComplexType:     IMAGE_SYM_DTYPE_FUNCTION
>>      StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
>
> --
> --
> Peter
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161210/a1511df5/attachment-0001.html>


More information about the llvm-commits mailing list