<div dir="ltr">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.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 9, 2016 at 5:55 PM, Peter Collingbourne <span dir="ltr"><<a href="mailto:peter@pcc.me.uk" target="_blank">peter@pcc.me.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">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.<div><br></div><div>Peter</div></div><div class="gmail_extra"><div><div class="h5"><br><div class="gmail_quote">On Thu, Dec 8, 2016 at 8:46 PM, Rui Ueyama via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: ruiu<br>
Date: Thu Dec  8 22:46:54 2016<br>
New Revision: 289183<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=289183&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=289183&view=rev</a><br>
Log:<br>
Add type records to TPI stream.<br>
<br>
I don't think the data I add to a TPI stream in this patch is correct,<br>
but at least it can be displayed using llvm-pdbdump. Until I add more<br>
streams to a PDB file, I'm not able to know whether the data will be<br>
accepted by MSVC tools or not.<br>
<br>
Modified:<br>
    lld/trunk/COFF/PDB.cpp<br>
    lld/trunk/test/COFF/pdb.test<br>
<br>
Modified: lld/trunk/COFF/PDB.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/PDB.cpp?rev=289183&r1=289182&r2=289183&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/lld/trunk/COFF/PDB.cpp?<wbr>rev=289183&r1=289182&r2=289183<wbr>&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lld/trunk/COFF/PDB.cpp (original)<br>
+++ lld/trunk/COFF/PDB.cpp Thu Dec  8 22:46:54 2016<br>
@@ -60,10 +60,10 @@ static SectionChunk *findByName(std::vec<br>
   return nullptr;<br>
 }<br>
<br>
-static void dumpDebugT(ScopedPrinter &W, ObjectFile *File) {<br>
+static ArrayRef<uint8_t> getDebugT(ObjectFile *File) {<br>
   SectionChunk *Sec = findByName(File->getDebugChunk<wbr>s(), ".debug$T");<br>
   if (!Sec)<br>
-    return;<br>
+    return {};<br>
<br>
   // First 4 bytes are section magic.<br>
   ArrayRef<uint8_t> Data = Sec->getContents();<br>
@@ -71,9 +71,17 @@ static void dumpDebugT(ScopedPrinter &W,<br>
     fatal(".debug$T too short");<br>
   if (read32le(Data.data()) != COFF::DEBUG_SECTION_MAGIC)<br>
     fatal(".debug$T has an invalid magic");<br>
+  return Data.slice(4);<br>
+}<br>
+<br>
+static void dumpDebugT(ScopedPrinter &W, ObjectFile *File) {<br>
+  ArrayRef<uint8_t> Data = getDebugT(File);<br>
+  if (Data.empty())<br>
+    return;<br>
<br>
+  msf::ByteStream Stream(Data);<br>
   CVTypeDumper TypeDumper(&W, false);<br>
-  if (auto EC = TypeDumper.dump(Data.slice(4))<wbr>)<br>
+  if (auto EC = TypeDumper.dump(Data))<br>
     fatal(EC, "CVTypeDumper::dump failed");<br>
 }<br>
<br>
@@ -104,6 +112,23 @@ static void dumpCodeView(SymbolTable *Sy<br>
   }<br>
 }<br>
<br>
+static void addTypeInfo(SymbolTable *Symtab,<br>
+                        pdb::TpiStreamBuilder &TpiBuilder) {<br>
+  for (ObjectFile *File : Symtab->ObjectFiles) {<br>
+    ArrayRef<uint8_t> Data = getDebugT(File);<br>
+    if (Data.empty())<br>
+      continue;<br>
+<br>
+    msf::ByteStream Stream(Data);<br>
+    codeview::CVTypeArray Records;<br>
+    msf::StreamReader Reader(Stream);<br>
+    if (auto EC = Reader.readArray(Records, Reader.getLength()))<br>
+      fatal(EC, "Reader.readArray failed");<br>
+    for (const codeview::CVType &Rec : Records)<br>
+      TpiBuilder.addTypeRecord(Rec);<br>
+  }<br>
+}<br>
+<br>
 // Creates a PDB file.<br>
 void coff::createPDB(StringRef Path, SymbolTable *Symtab,<br>
                      ArrayRef<uint8_t> SectionTable) {<br>
@@ -137,6 +162,7 @@ void coff::createPDB(StringRef Path, Sym<br>
   // Add an empty TPI stream.<br>
   auto &TpiBuilder = Builder.getTpiBuilder();<br>
   TpiBuilder.setVersionHeader(p<wbr>db::PdbTpiV80);<br>
+  addTypeInfo(Symtab, TpiBuilder);<br>
<br>
   // Add an empty IPI stream.<br>
   auto &IpiBuilder = Builder.getIpiBuilder();<br>
<br>
Modified: lld/trunk/test/COFF/pdb.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/pdb.test?rev=289183&r1=289182&r2=289183&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/lld/trunk/test/COFF/pdb.<wbr>test?rev=289183&r1=289182&r2=<wbr>289183&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- lld/trunk/test/COFF/pdb.test (original)<br>
+++ lld/trunk/test/COFF/pdb.test Thu Dec  8 22:46:54 2016<br>
@@ -1,10 +1,10 @@<br>
 # RUN: yaml2obj %s > %t.obj<br>
-# RUN: lld-link /debug /pdb:%t.pdb /dll /out:%t.dll /entry:DllMain /nodefaultlib %t.obj<br>
+# RUN: lld-link /debug /pdb:%t.pdb /dll /out:%t.dll /entry:main /nodefaultlib %t.obj<br>
 # RUN: llvm-pdbdump pdb2yaml -stream-metadata -stream-directory -pdb-stream \<br>
-# RUN:   -dbi-stream -ipi-stream %t.pdb | FileCheck %s<br>
+# RUN:   -dbi-stream -ipi-stream -tpi-stream %t.pdb | FileCheck %s<br>
<br>
-# RUN: llvm-pdbdump raw -modules -section-map -section-headers -section-contribs %t.pdb \<br>
-# RUN:   | FileCheck -check-prefix RAW %s<br>
+# RUN: llvm-pdbdump raw -modules -section-map -section-headers -section-contribs \<br>
+# RUN:   -tpi-records %t.pdb | FileCheck -check-prefix RAW %s<br>
<br>
 # CHECK:      MSF:<br>
 # CHECK-NEXT:   SuperBlock:<br>
@@ -14,37 +14,184 @@<br>
 # CHECK-NEXT:     NumDirectoryBytes: 48<br>
 # CHECK-NEXT:     Unknown1:        0<br>
 # CHECK-NEXT:     BlockMapAddr:    3<br>
-# CHECK-NEXT:     NumDirectoryBlocks: 1<br>
-# CHECK-NEXT:     DirectoryBlocks: [ 9 ]<br>
-# CHECK-NEXT:     NumStreams:      6<br>
-# CHECK-NEXT:     FileSize:        40960<br>
-# CHECK-NEXT:   StreamSizes:     [ 0, 48, 56, 322, 56, 80 ]<br>
-# CHECK-NEXT:   StreamMap:<br>
-# CHECK-NEXT:     - Stream:          [  ]<br>
-# CHECK-NEXT:     - Stream:          [ 5 ]<br>
-# CHECK-NEXT:     - Stream:          [ 7 ]<br>
-# CHECK-NEXT:     - Stream:          [ 6 ]<br>
-# CHECK-NEXT:     - Stream:          [ 8 ]<br>
-# CHECK-NEXT:     - Stream:          [ 4 ]<br>
-# CHECK-NEXT:   PdbStream:<br>
-# CHECK-NEXT:     Age:             1<br>
-# CHECK-NEXT:     Guid:            '{00000000-0000-0000-0000-0000<wbr>00000000}'<br>
-# CHECK-NEXT:     Signature:       0<br>
-# CHECK-NEXT:     Version:         VC70<br>
-# CHECK-NEXT:     NamedStreams:<br>
-# CHECK-NEXT:   DbiStream:<br>
-# CHECK-NEXT:     VerHeader:       V110<br>
-# CHECK-NEXT:     Age:             1<br>
-# CHECK-NEXT:     BuildNumber:     0<br>
-# CHECK-NEXT:     PdbDllVersion:   0<br>
-# CHECK-NEXT:     PdbDllRbld:      0<br>
-# CHECK-NEXT:     Flags:           0<br>
-# CHECK-NEXT:     MachineType:     x86<br>
-# CHECK-NEXT:   IpiStream:<br>
-# CHECK-NEXT:     Version:         VC80<br>
-# CHECK-NEXT:     Records:<br>
+# CHECK-NEXT:   NumDirectoryBlocks: 1<br>
+# CHECK-NEXT:   DirectoryBlocks: [ 9 ]<br>
+# CHECK-NEXT:   NumStreams:      6<br>
+# CHECK-NEXT:   FileSize:        40960<br>
+# CHECK-NEXT: StreamSizes:     [ 0, 48, 628, 266, 56, 80 ]<br>
+# CHECK-NEXT: StreamMap:<br>
+# CHECK-NEXT:   - Stream:          [  ]<br>
+# CHECK-NEXT:   - Stream:          [ 5 ]<br>
+# CHECK-NEXT:   - Stream:          [ 7 ]<br>
+# CHECK-NEXT:   - Stream:          [ 6 ]<br>
+# CHECK-NEXT:   - Stream:          [ 8 ]<br>
+# CHECK-NEXT:   - Stream:          [ 4 ]<br>
+# CHECK-NEXT: PdbStream:<br>
+# CHECK-NEXT:   Age:             1<br>
+# CHECK-NEXT:   Guid:            '{00000000-0000-0000-0000-0000<wbr>00000000}'<br>
+# CHECK-NEXT:   Signature:       0<br>
+# CHECK-NEXT:   Version:         VC70<br>
+# CHECK-NEXT:   NamedStreams:<br>
+# CHECK-NEXT: DbiStream:<br>
+# CHECK-NEXT:   VerHeader:       V110<br>
+# CHECK-NEXT:   Age:             1<br>
+# CHECK-NEXT:   BuildNumber:     0<br>
+# CHECK-NEXT:   PdbDllVersion:   0<br>
+# CHECK-NEXT:   PdbDllRbld:      0<br>
+# CHECK-NEXT:   Flags:           0<br>
+# CHECK-NEXT:   MachineType:     x86<br>
+# CHECK-NEXT: TpiStream:<br>
+# CHECK-NEXT:   Version:         VC80<br>
+# CHECK-NEXT:   Records:<br>
+# CHECK-NEXT:     - Kind:            LF_ARGLIST<br>
+# CHECK-NEXT:       ArgList:<br>
+# CHECK-NEXT:         ArgIndices:      [ 0 ]<br>
+# CHECK-NEXT:     - Kind:            LF_PROCEDURE<br>
+# CHECK-NEXT:       Procedure:<br>
+# CHECK-NEXT:         ReturnType:      116<br>
+# CHECK-NEXT:         CallConv:        NearC<br>
+# CHECK-NEXT:         Options:         [ None ]<br>
+# CHECK-NEXT:         ParameterCount:  0<br>
+# CHECK-NEXT:         ArgumentList:    4096<br>
+# CHECK-NEXT:     - Kind:            LF_FUNC_ID<br>
+# CHECK-NEXT:       FuncId:<br>
+# CHECK-NEXT:         ParentScope:     0<br>
+# CHECK-NEXT:         FunctionType:    4097<br>
+# CHECK-NEXT:         Name:            main<br>
+# CHECK-NEXT:     - Kind:            LF_STRING_ID<br>
+# CHECK-NEXT:       StringId:<br>
+# CHECK-NEXT:         Id:              0<br>
+# CHECK-NEXT:         String:          'D:\b'<br>
+# CHECK-NEXT:     - Kind:            LF_STRING_ID<br>
+# CHECK-NEXT:       StringId:<br>
+# CHECK-NEXT:         Id:              0<br>
+# CHECK-NEXT:         String:          'C:\vs14\VC\BIN\amd64\cl.exe'<br>
+# CHECK-NEXT:     - Kind:            LF_STRING_ID<br>
+# CHECK-NEXT:       StringId:<br>
+# CHECK-NEXT:         Id:              0<br>
+# 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\u<wbr>crt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\shared"'<br>
+# CHECK-NEXT:     - Kind:            LF_SUBSTR_LIST<br>
+# CHECK-NEXT:       ArgList:<br>
+# CHECK-NEXT:         ArgIndices:      [ 4101 ]<br>
+# CHECK-NEXT:     - Kind:            LF_STRING_ID<br>
+# CHECK-NEXT:       StringId:<br>
+# CHECK-NEXT:         Id:              4102<br>
+# 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'<br>
+# CHECK-NEXT:     - Kind:            LF_STRING_ID<br>
+# CHECK-NEXT:       StringId:<br>
+# CHECK-NEXT:         Id:              0<br>
+# CHECK-NEXT:         String:          ret42.c<br>
+# CHECK-NEXT:     - Kind:            LF_STRING_ID<br>
+# CHECK-NEXT:       StringId:<br>
+# CHECK-NEXT:         Id:              0<br>
+# CHECK-NEXT:         String:          'D:\b\vc140.pdb'<br>
+# CHECK-NEXT:     - Kind:            LF_BUILDINFO<br>
+# CHECK-NEXT:       BuildInfo:<br>
+# CHECK-NEXT:         ArgIndices:      [ 4099, 4100, 4104, 4105, 4103 ]<br>
+# CHECK-NEXT: IpiStream:<br>
+# CHECK-NEXT:   Version:         VC80<br>
+# CHECK-NEXT:   Records:<br>
+# CHECK-NEXT: ...<br>
<br>
-# RAW:      DBI Stream {<br>
+# RAW:      Type Info Stream (TPI) {<br>
+# RAW-NEXT:   TPI Version: 20040203<br>
+# RAW-NEXT:   Record count: 11<br>
+# RAW-NEXT:   Records [<br>
+# RAW-NEXT:     {<br>
+# RAW-NEXT:       ArgList (0x1000) {<br>
+# RAW-NEXT:         TypeLeafKind: LF_ARGLIST (0x1201)<br>
+# RAW-NEXT:         NumArgs: 1<br>
+# RAW-NEXT:         Arguments [<br>
+# RAW-NEXT:           ArgType: 0x0<br>
+# RAW-NEXT:         ]<br>
+# RAW-NEXT:       }<br>
+# RAW-NEXT:     }<br>
+# RAW-NEXT:     {<br>
+# RAW-NEXT:       Procedure (0x1001) {<br>
+# RAW-NEXT:         TypeLeafKind: LF_PROCEDURE (0x1008)<br>
+# RAW-NEXT:         ReturnType: int (0x74)<br>
+# RAW-NEXT:         CallingConvention: NearC (0x0)<br>
+# RAW-NEXT:         FunctionOptions [ (0x0)<br>
+# RAW-NEXT:         ]<br>
+# RAW-NEXT:         NumParameters: 0<br>
+# RAW-NEXT:         ArgListType: (<no type>) (0x1000)<br>
+# RAW-NEXT:       }<br>
+# RAW-NEXT:     }<br>
+# RAW-NEXT:     {<br>
+# RAW-NEXT:       FuncId (0x1002) {<br>
+# RAW-NEXT:         TypeLeafKind: LF_FUNC_ID (0x1601)<br>
+# RAW-NEXT:         ParentScope: 0x0<br>
+# RAW-NEXT:         FunctionType: int (<no type>) (0x1001)<br>
+# RAW-NEXT:         Name: main<br>
+# RAW-NEXT:       }<br>
+# RAW-NEXT:     }<br>
+# RAW-NEXT:     {<br>
+# RAW-NEXT:       StringId (0x1003) {<br>
+# RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)<br>
+# RAW-NEXT:         Id: 0x0<br>
+# RAW-NEXT:         StringData: D:\b<br>
+# RAW-NEXT:       }<br>
+# RAW-NEXT:     }<br>
+# RAW-NEXT:     {<br>
+# RAW-NEXT:       StringId (0x1004) {<br>
+# RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)<br>
+# RAW-NEXT:         Id: 0x0<br>
+# RAW-NEXT:         StringData: C:\vs14\VC\BIN\amd64\cl.exe<br>
+# RAW-NEXT:       }<br>
+# RAW-NEXT:     }<br>
+# RAW-NEXT:     {<br>
+# RAW-NEXT:       StringId (0x1005) {<br>
+# RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)<br>
+# RAW-NEXT:         Id: 0x0<br>
+# 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\u<wbr>crt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\shared"<br>
+# RAW-NEXT:       }<br>
+# RAW-NEXT:     }<br>
+# RAW-NEXT:     {<br>
+# RAW-NEXT:       StringList (0x1006) {<br>
+# RAW-NEXT:         TypeLeafKind: LF_SUBSTR_LIST (0x1604)<br>
+# RAW-NEXT:         NumArgs: 1<br>
+# RAW-NEXT:         Arguments [<br>
+# 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\u<wbr>crt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\shared" (0x1005)<br>
+# RAW-NEXT:         ]<br>
+# RAW-NEXT:       }<br>
+# RAW-NEXT:     }<br>
+# RAW-NEXT:     {<br>
+# RAW-NEXT:       StringId (0x1007) {<br>
+# RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)<br>
+# 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\u<wbr>crt" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um" -I"C:\Program Files (x86)\Windows Kits\8.1\include\shared") (0x1006)<br>
+# 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<br>
+# RAW-NEXT:       }<br>
+# RAW-NEXT:     }<br>
+# RAW-NEXT:     {<br>
+# RAW-NEXT:       StringId (0x1008) {<br>
+# RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)<br>
+# RAW-NEXT:         Id: 0x0<br>
+# RAW-NEXT:         StringData: ret42.c<br>
+# RAW-NEXT:       }<br>
+# RAW-NEXT:     }<br>
+# RAW-NEXT:     {<br>
+# RAW-NEXT:       StringId (0x1009) {<br>
+# RAW-NEXT:         TypeLeafKind: LF_STRING_ID (0x1605)<br>
+# RAW-NEXT:         Id: 0x0<br>
+# RAW-NEXT:         StringData: D:\b\vc140.pdb<br>
+# RAW-NEXT:       }<br>
+# RAW-NEXT:     }<br>
+# RAW-NEXT:     {<br>
+# RAW-NEXT:       BuildInfo (0x100A) {<br>
+# RAW-NEXT:         TypeLeafKind: LF_BUILDINFO (0x1603)<br>
+# RAW-NEXT:         NumArgs: 5<br>
+# RAW-NEXT:         Arguments [<br>
+# RAW-NEXT:           ArgType: D:\b (0x1003)<br>
+# RAW-NEXT:           ArgType: C:\vs14\VC\BIN\amd64\cl.exe (0x1004)<br>
+# RAW-NEXT:           ArgType: ret42.c (0x1008)<br>
+# RAW-NEXT:           ArgType: D:\b\vc140.pdb (0x1009)<br>
+# 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)<br>
+# RAW-NEXT:         ]<br>
+# RAW-NEXT:       }<br>
+# RAW-NEXT:     }<br>
+# RAW-NEXT:   ]<br>
+# RAW-NEXT: }<br>
+# RAW-NEXT: DBI Stream {<br>
 # RAW-NEXT:   Dbi Version: 20091201<br>
 # RAW-NEXT:   Age: 1<br>
 # RAW-NEXT:   Incremental Linking: No<br>
@@ -75,10 +222,10 @@<br>
 # RAW-NEXT: Section Contributions [<br>
 # RAW-NEXT:   Contribution {<br>
 # RAW-NEXT:     ISect: 0<br>
-# RAW-NEXT:     Off: 140<br>
-# RAW-NEXT:     Size: 3<br>
-# RAW-NEXT:     Characteristics [ (0x60300020)<br>
-# RAW-NEXT:       IMAGE_SCN_ALIGN_4BYTES (0x300000)<br>
+# RAW-NEXT:     Off: 1140<br>
+# RAW-NEXT:     Size: 6<br>
+# RAW-NEXT:     Characteristics [ (0x60500020)<br>
+# RAW-NEXT:       IMAGE_SCN_ALIGN_16BYTES (0x500000)<br>
 # RAW-NEXT:       IMAGE_SCN_CNT_CODE (0x20)<br>
 # RAW-NEXT:       IMAGE_SCN_MEM_EXECUTE (0x20000000)<br>
 # RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)<br>
@@ -90,40 +237,6 @@<br>
 # RAW-NEXT:     Data CRC: 0<br>
 # RAW-NEXT:     Reloc CRC: 0<br>
 # RAW-NEXT:   }<br>
-# RAW-NEXT:   Contribution {<br>
-# RAW-NEXT:     ISect: 0<br>
-# RAW-NEXT:     Off: 0<br>
-# RAW-NEXT:     Size: 0<br>
-# RAW-NEXT:     Characteristics [ (0xC0300040)<br>
-# RAW-NEXT:       IMAGE_SCN_ALIGN_4BYTES (0x300000)<br>
-# RAW-NEXT:       IMAGE_SCN_CNT_INITIALIZED_<wbr>DATA (0x40)<br>
-# RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)<br>
-# RAW-NEXT:       IMAGE_SCN_MEM_WRITE (0x80000000)<br>
-# RAW-NEXT:     ]<br>
-# RAW-NEXT:     Module {<br>
-# RAW-NEXT:       Index: 0<br>
-# RAW-NEXT:       Name: * Linker *<br>
-# RAW-NEXT:     }<br>
-# RAW-NEXT:     Data CRC: 0<br>
-# RAW-NEXT:     Reloc CRC: 0<br>
-# RAW-NEXT:   }<br>
-# RAW-NEXT:   Contribution {<br>
-# RAW-NEXT:     ISect: 0<br>
-# RAW-NEXT:     Off: 0<br>
-# RAW-NEXT:     Size: 0<br>
-# RAW-NEXT:     Characteristics [ (0xC0300080)<br>
-# RAW-NEXT:       IMAGE_SCN_ALIGN_4BYTES (0x300000)<br>
-# RAW-NEXT:       IMAGE_SCN_CNT_UNINITIALIZED_D<wbr>ATA (0x80)<br>
-# RAW-NEXT:       IMAGE_SCN_MEM_READ (0x40000000)<br>
-# RAW-NEXT:       IMAGE_SCN_MEM_WRITE (0x80000000)<br>
-# RAW-NEXT:     ]<br>
-# RAW-NEXT:     Module {<br>
-# RAW-NEXT:       Index: 0<br>
-# RAW-NEXT:       Name: * Linker *<br>
-# RAW-NEXT:     }<br>
-# RAW-NEXT:     Data CRC: 0<br>
-# RAW-NEXT:     Reloc CRC: 0<br>
-# RAW-NEXT:   }<br>
 # RAW-NEXT: ]<br>
 # RAW-NEXT: Section Map [<br>
 # RAW-NEXT:   Entry {<br>
@@ -139,7 +252,7 @@<br>
 # RAW-NEXT:     SecName: 65535<br>
 # RAW-NEXT:     ClassName: 65535<br>
 # RAW-NEXT:     Offset: 0<br>
-# RAW-NEXT:     SecByteLength:<br>
+# RAW-NEXT:     SecByteLength: 6<br>
 # RAW-NEXT:   }<br>
 # RAW-NEXT:   Entry {<br>
 # RAW-NEXT:     Flags [ (0x109)<br>
@@ -172,10 +285,10 @@<br>
 # RAW-NEXT: Section Headers [<br>
 # RAW-NEXT:   {<br>
 # RAW-NEXT:     Name: .text<br>
-# RAW-NEXT:     Virtual Size:<br>
-# RAW-NEXT:     Virtual Address:<br>
-# RAW-NEXT:     Size of Raw Data:<br>
-# RAW-NEXT:     File Pointer to Raw Data:<br>
+# RAW-NEXT:     Virtual Size: 6<br>
+# RAW-NEXT:     Virtual Address: 4096<br>
+# RAW-NEXT:     Size of Raw Data: 512<br>
+# RAW-NEXT:     File Pointer to Raw Data: 512<br>
 # RAW-NEXT:     File Pointer to Relocations: 0<br>
 # RAW-NEXT:     File Pointer to Linenumbers: 0<br>
 # RAW-NEXT:     Number of Relocations: 0<br>
@@ -189,9 +302,9 @@<br>
 # RAW-NEXT:   {<br>
 # RAW-NEXT:     Name: .rdata<br>
 # RAW-NEXT:     Virtual Size:<br>
-# RAW-NEXT:     Virtual Address:<br>
-# RAW-NEXT:     Size of Raw Data:<br>
-# RAW-NEXT:     File Pointer to Raw Data:<br>
+# RAW-NEXT:     Virtual Address: 8192<br>
+# RAW-NEXT:     Size of Raw Data: 512<br>
+# RAW-NEXT:     File Pointer to Raw Data: 1024<br>
 # RAW-NEXT:     File Pointer to Relocations: 0<br>
 # RAW-NEXT:     File Pointer to Linenumbers: 0<br>
 # RAW-NEXT:     Number of Relocations: 0<br>
@@ -205,67 +318,102 @@<br>
<br>
 --- !COFF<br>
 header:<br>
-  Machine:         IMAGE_FILE_MACHINE_I386<br>
+  Machine:         IMAGE_FILE_MACHINE_AMD64<br>
   Characteristics: [  ]<br>
 sections:<br>
-  - Name:            .text<br>
+  - Name:            .drectve<br>
+    Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]<br>
+    Alignment:       1<br>
+    SectionData:     <wbr>2020202F44454641554C544C49423A<wbr>224C4942434D5422202F4445464155<wbr>4C544C49423A224F4C444E414D4553<wbr>2220<br>
+  - Name:            '.debug$S'<br>
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA<wbr>, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]<br>
+    Alignment:       1<br>
+    SectionData:     <wbr>04000000F100000053000000150001<wbr>1100000000443A5C625C7265743432<wbr>2E6F626A003A003C1100600000D000<wbr>13000000F259000013000000F25900<wbr>004D6963726F736F66742028522920<wbr>4F7074696D697A696E6720436F6D70<wbr>696C65720000F10000004E0000002A<wbr>004711000000000000000000000000<wbr>060000000000000005000000021000<wbr>00000000000000006D61696E001C00<wbr>121000000000000000000000000000<wbr>000000000000000000004211000200<wbr>4F110000F200000020000000000000<wbr>000000000006000000000000000100<wbr>0000140000000000000001000080F4<wbr>000000180000000100000010010BFC<wbr>79AA614B536E3D64B110330D1E5800<wbr>00F30000000E00000000643A5C625C<wbr>72657434322E63000000F100000008<wbr>00000006004C110A100000<br>
+    Relocations:<br>
+      - VirtualAddress:  136<br>
+        SymbolName:      main<br>
+        Type:            IMAGE_REL_AMD64_SECREL<br>
+      - VirtualAddress:  140<br>
+        SymbolName:      main<br>
+        Type:            IMAGE_REL_AMD64_SECTION<br>
+      - VirtualAddress:  192<br>
+        SymbolName:      main<br>
+        Type:            IMAGE_REL_AMD64_SECREL<br>
+      - VirtualAddress:  196<br>
+        SymbolName:      main<br>
+        Type:            IMAGE_REL_AMD64_SECTION<br>
+  - Name:            '.debug$T'<br>
+    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA<wbr>, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_READ ]<br>
+    Alignment:       1<br>
+    SectionData:     <wbr>040000000A00011201000000000000<wbr>000E00081074000000000000000010<wbr>00001200011600000000011000006D<wbr>61696E00F3F2F10E00051600000000<wbr>443A5C6200F3F2F122000516000000<wbr>00433A5C767331345C56435C42494E<wbr>5C616D6436345C636C2E6578650002<wbr>010516000000002D5A37202D63202D<wbr>4D54202D49433A5C767331345C5643<wbr>5C494E434C554445202D49433A5C76<wbr>7331345C56435C41544C4D46435C49<wbr>4E434C554445202D4922433A5C5072<wbr>6F6772616D2046696C657320287838<wbr>36295C57696E646F7773204B697473<wbr>5C31305C696E636C7564655C31302E<wbr>302E31303135302E305C7563727422<wbr>202D4922433A5C50726F6772616D20<wbr>46696C65732028783836295C57696E<wbr>646F7773204B6974735C4E45544658<wbr>53444B5C342E365C696E636C756465<wbr>5C756D22202D4922433A5C50726F67<wbr>72616D2046696C6573202878383629<wbr>5C57696E646F7773204B6974735C38<wbr>2E315C696E636C7564655C73686172<wbr>656422000A00041601000000051000<wbr>008200051606100000202D4922433A<wbr>5C50726F6772616D2046696C657320<wbr>28783836295C57696E646F7773204B<wbr>6974735C382E315C696E636C756465<wbr>5C756D22202D4922433A5C50726F67<wbr>72616D2046696C6573202878383629<wbr>5C57696E646F7773204B6974735C38<wbr>2E315C696E636C75<br>
 <wbr>64655C77696E727422202D5443202D<wbr>5800F3F2F10E000516000000007265<wbr>7434322E6300160005160000000044<wbr>3A5C625C76633134302E70646200F1<wbr>1A0003160500031000000410000008<wbr>1000000910000007100000F2F1<br>
+  - Name:            '.text$mn'<br>
     Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]<br>
-    Alignment:       4<br>
-    SectionData:     31C0C3<br>
-  - Name:            .data<br>
-    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA<wbr>, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]<br>
-    Alignment:       4<br>
-    SectionData:     ''<br>
-  - Name:            .bss<br>
-    Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DA<wbr>TA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]<br>
-    Alignment:       4<br>
-    SectionData:     ''<br>
+    Alignment:       16<br>
+    SectionData:     B82A000000C3<br>
 symbols:<br>
-  - Name:            .text<br>
+  - Name:            '@<a href="http://comp.id" rel="noreferrer" target="_blank">comp.id</a>'<br>
+    Value:           17062386<br>
+    SectionNumber:   -1<br>
+    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
+    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
+    StorageClass:    IMAGE_SYM_CLASS_STATIC<br>
+  - Name:            '@feat.00'<br>
+    Value:           <a href="tel:2147484048" value="+12147484048" target="_blank">2147484048</a><br>
+    SectionNumber:   -1<br>
+    SimpleType:      IMAGE_SYM_TYPE_NULL<br>
+    ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
+    StorageClass:    IMAGE_SYM_CLASS_STATIC<br>
+  - Name:            .drectve<br>
     Value:           0<br>
     SectionNumber:   1<br>
     SimpleType:      IMAGE_SYM_TYPE_NULL<br>
     ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
     StorageClass:    IMAGE_SYM_CLASS_STATIC<br>
     SectionDefinition:<br>
-      Length:          3<br>
+      Length:          47<br>
       NumberOfRelocations: 0<br>
       NumberOfLinenumbers: 0<br>
-      CheckSum:        3963538403<br>
-      Number:          1<br>
-  - Name:            .data<br>
+      CheckSum:        0<br>
+      Number:          0<br>
+  - Name:            '.debug$S'<br>
     Value:           0<br>
     SectionNumber:   2<br>
     SimpleType:      IMAGE_SYM_TYPE_NULL<br>
     ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
     StorageClass:    IMAGE_SYM_CLASS_STATIC<br>
     SectionDefinition:<br>
-      Length:          0<br>
-      NumberOfRelocations: 0<br>
+      Length:          296<br>
+      NumberOfRelocations: 4<br>
       NumberOfLinenumbers: 0<br>
       CheckSum:        0<br>
-      Number:          2<br>
-  - Name:            .bss<br>
+      Number:          0<br>
+  - Name:            '.debug$T'<br>
     Value:           0<br>
     SectionNumber:   3<br>
     SimpleType:      IMAGE_SYM_TYPE_NULL<br>
     ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
     StorageClass:    IMAGE_SYM_CLASS_STATIC<br>
     SectionDefinition:<br>
-      Length:          0<br>
+      Length:          576<br>
       NumberOfRelocations: 0<br>
       NumberOfLinenumbers: 0<br>
       CheckSum:        0<br>
-      Number:          3<br>
-  - Name:            '@feat.00'<br>
-    Value:           1<br>
-    SectionNumber:   -1<br>
+      Number:          0<br>
+  - Name:            '.text$mn'<br>
+    Value:           0<br>
+    SectionNumber:   4<br>
     SimpleType:      IMAGE_SYM_TYPE_NULL<br>
     ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
     StorageClass:    IMAGE_SYM_CLASS_STATIC<br>
-  - Name:            _DllMain<br>
+    SectionDefinition:<br>
+      Length:          6<br>
+      NumberOfRelocations: 0<br>
+      NumberOfLinenumbers: 0<br>
+      CheckSum:        <a href="tel:(213)%20943-6471" value="+12139436471" target="_blank">2139436471</a><br>
+      Number:          0<br>
+  - Name:            main<br>
     Value:           0<br>
-    SectionNumber:   1<br>
+    SectionNumber:   4<br>
     SimpleType:      IMAGE_SYM_TYPE_NULL<br>
     ComplexType:     IMAGE_SYM_DTYPE_FUNCTION<br>
     StorageClass:    IMAGE_SYM_CLASS_EXTERNAL<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span class="HOEnZb"><font color="#888888">-- <br><div class="m_6289462243113597985gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">-- <div>Peter</div></div></div>
</font></span></div>
</blockquote></div><br></div>