[PATCH] D70166: [LLD] [COFF] Fix automatically importing data symbols from DLLs with LTO

Martin Storsjö via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 13 12:50:07 PST 2019


This revision was automatically updated to reflect the committed changes.
Closed by commit rG38bc9559bacf: [LLD] [COFF] Fix automatically importing data symbols from DLLs with LTO (authored by mstorsjo).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D70166/new/

https://reviews.llvm.org/D70166

Files:
  lld/COFF/SymbolTable.cpp
  lld/test/COFF/autoimport-lto.ll


Index: lld/test/COFF/autoimport-lto.ll
===================================================================
--- /dev/null
+++ lld/test/COFF/autoimport-lto.ll
@@ -0,0 +1,28 @@
+; REQUIRES: x86
+
+; RUN: echo -e ".global variable\n.global DllMainCRTStartup\n.text\nDllMainCRTStartup:\nret\n.data\nvariable:\n.long 42" > %t-lib.s
+; RUN: llvm-mc -triple=x86_64-windows-gnu %t-lib.s -filetype=obj -o %t-lib.obj
+; RUN: lld-link -out:%t-lib.dll -dll -entry:DllMainCRTStartup %t-lib.obj -lldmingw -implib:%t-lib.lib
+
+; RUN: llvm-as -o %t.obj %s
+; RUN: lld-link -lldmingw -out:%t.exe -entry:entry %t.obj %t-lib.lib
+
+; RUN: llvm-readobj --coff-imports %t.exe | FileCheck -check-prefix=IMPORTS %s
+
+; IMPORTS: Import {
+; IMPORTS-NEXT: Name: autoimport-lto.ll.tmp-lib.dll
+; IMPORTS-NEXT: ImportLookupTableRVA:
+; IMPORTS-NEXT: ImportAddressTableRVA:
+; IMPORTS-NEXT: Symbol: variable (0)
+; IMPORTS-NEXT: }
+
+target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-w64-windows-gnu"
+
+ at variable = external global i32
+
+define i32 @entry() {
+entry:
+  %0 = load i32, i32* @variable
+  ret i32 %0
+}
Index: lld/COFF/SymbolTable.cpp
===================================================================
--- lld/COFF/SymbolTable.cpp
+++ lld/COFF/SymbolTable.cpp
@@ -227,8 +227,6 @@
     auto *undef = dyn_cast<Undefined>(sym);
     if (!undef)
       continue;
-    if (!sym->isUsedInRegularObj)
-      continue;
     if (undef->getWeakAlias())
       continue;
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70166.229163.patch
Type: text/x-patch
Size: 1520 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191113/a5c8e3ec/attachment.bin>


More information about the llvm-commits mailing list