[lld] r289183 - Add type records to TPI stream.
Peter Collingbourne via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 9 17:55:43 PST 2016
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-
> 000000000000}'
> -# 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-000000000000}'
> +# 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
> + 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/20161209/50334bf6/attachment-0001.html>
More information about the llvm-commits
mailing list