<div dir="ltr">LGTM</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 30, 2015 at 9:27 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">pcc created this revision.<br>
pcc added a reviewer: ruiu.<br>
pcc added a subscriber: llvm-commits.<br>
<br>
This fixes the cases where the symbol is defined in a comdat or by bitcode.<br>
<br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org_D11673&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=R6pUpokZPdh9_sIJjfsSui1UcetrKqG-mo2FZAzm8LE&s=4EWWpNEgCaggupP55gQVYTitMIj8DR0ChjcB-cUq1eo&e=" rel="noreferrer" target="_blank">http://reviews.llvm.org/D11673</a><br>
<br>
Files:<br>
  COFF/Driver.cpp<br>
  test/COFF/loadcfg.ll<br>
  test/COFF/loadcfg.test<br>
<br>
Index: test/COFF/loadcfg.test<br>
===================================================================<br>
--- test/COFF/loadcfg.test<br>
+++ test/COFF/loadcfg.test<br>
@@ -2,7 +2,7 @@<br>
 # RUN: lld -flavor link2 /out:%t.exe %t.obj /entry:main /subsystem:console<br>
 # RUN: llvm-readobj -file-headers %t.exe | FileCheck %s<br>
<br>
-# CHECK: LoadConfigTableRVA: 0x1000<br>
+# CHECK: LoadConfigTableRVA: 0x1008<br>
 # CHECK: LoadConfigTableSize: 0x70<br>
<br>
 ---<br>
@@ -14,6 +14,10 @@<br>
     Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]<br>
     Alignment:       4<br>
     SectionData:     B82A000000C3<br>
+  - Name:            .text<br>
+    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]<br>
+    Alignment:       4<br>
+    SectionData:     B82A000000C3<br>
 symbols:<br>
   - Name:            .text<br>
     Value:           0<br>
@@ -27,15 +31,28 @@<br>
       NumberOfLinenumbers: 0<br>
       CheckSum:        0<br>
       Number:          0<br>
+  - Name:            .text<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:          6<br>
+      NumberOfRelocations: 0<br>
+      NumberOfLinenumbers: 0<br>
+      CheckSum:        0<br>
+      Number:          0<br>
+      Selection:       IMAGE_COMDAT_SELECT_ANY<br>
   - Name:            main<br>
     Value:           0<br>
     SectionNumber:   1<br>
     SimpleType:      IMAGE_SYM_TYPE_NULL<br>
     ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
     StorageClass:    IMAGE_SYM_CLASS_EXTERNAL<br>
   - Name:            _load_config_used<br>
     Value:           0<br>
-    SectionNumber:   1<br>
+    SectionNumber:   2<br>
     SimpleType:      IMAGE_SYM_TYPE_NULL<br>
     ComplexType:     IMAGE_SYM_DTYPE_NULL<br>
     StorageClass:    IMAGE_SYM_CLASS_EXTERNAL<br>
Index: test/COFF/loadcfg.ll<br>
===================================================================<br>
--- /dev/null<br>
+++ test/COFF/loadcfg.ll<br>
@@ -0,0 +1,15 @@<br>
+; RUN: llvm-as -o %t.obj %s<br>
+; RUN: lld -flavor link2 /out:%t.exe %t.obj /entry:main /subsystem:console<br>
+; RUN: llvm-readobj -file-headers %t.exe | FileCheck %s<br>
+<br>
+; CHECK: LoadConfigTableRVA: 0x1000<br>
+; CHECK: LoadConfigTableSize: 0x70<br>
+<br>
+target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"<br>
+target triple = "x86_64-pc-windows-msvc"<br>
+<br>
+@_load_config_used = constant i32 1<br>
+<br>
+define void @main() {<br>
+  ret void<br>
+}<br>
Index: COFF/Driver.cpp<br>
===================================================================<br>
--- COFF/Driver.cpp<br>
+++ COFF/Driver.cpp<br>
@@ -662,9 +662,8 @@<br>
     }<br>
<br>
     // Windows specific -- if __load_config_used can be resolved, resolve it.<br>
-    if (Symbol *Sym = Symtab.find(Config->LoadConfigUsed))<br>
-      if (isa<Lazy>(Sym->Body))<br>
-        Symtab.addUndefined(Config->LoadConfigUsed);<br>
+    if (Symtab.find(Config->LoadConfigUsed))<br>
+      addUndefined(Config->LoadConfigUsed);<br>
<br>
     if (Symtab.queueEmpty())<br>
       break;<br>
<br>
<br>
</blockquote></div><br></div>