<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>