[PATCH] D132361: [LLD] [COFF] Fix export directives in object files from -includeoptional
Martin Storsjö via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 25 01:58:17 PDT 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rGaf39e6f6fc90: [LLD] [COFF] Fix export directives in object files from -includeoptional (authored by mstorsjo).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D132361/new/
https://reviews.llvm.org/D132361
Files:
lld/COFF/Driver.cpp
lld/test/COFF/includeoptional-export.s
Index: lld/test/COFF/includeoptional-export.s
===================================================================
--- /dev/null
+++ lld/test/COFF/includeoptional-export.s
@@ -0,0 +1,51 @@
+// REQUIRES: x86
+// RUN: split-file %s %t.dir
+
+// RUN: llvm-mc -filetype=obj -triple=x86_64-win32-gnu %t.dir/main.s -o %t.main.o
+// RUN: llvm-mc -filetype=obj -triple=x86_64-win32-gnu %t.dir/lib1.s -o %t.lib1.o
+// RUN: llvm-mc -filetype=obj -triple=x86_64-win32-gnu %t.dir/lib2.s -o %t.lib2.o
+
+// RUN: rm -f %t.lib.a
+// RUN: llvm-ar cru %t.lib.a %t.lib1.o %t.lib2.o
+// RUN: lld-link -dll -out:%t-1.dll -entry:entry %t.main.o %t.lib.a
+// RUN: lld-link -dll -out:%t-2.dll -entry:entry %t.main.o %t.lib.a -includeoptional:libfunc
+
+// RUN: llvm-readobj --coff-exports %t-1.dll | FileCheck --implicit-check-not=Name: %s --check-prefix=CHECK-DEFAULT
+// RUN: llvm-readobj --coff-exports %t-2.dll | FileCheck --implicit-check-not=Name: %s --check-prefix=CHECK-INCLUDEOPTIONAL
+
+// CHECK-DEFAULT: Name:
+// CHECK-DEFAULT: Name: myfunc
+
+// CHECK-INCLUDEOPTIONAL: Name:
+// CHECK-INCLUDEOPTIONAL: Name: libfunc
+// CHECK-INCLUDEOPTIONAL: Name: myfunc
+// CHECK-INCLUDEOPTIONAL: Name: otherlibfunc
+
+#--- main.s
+.global entry
+entry:
+ ret
+
+.global myfunc
+myfunc:
+ ret
+
+.section .drectve
+.ascii "-export:myfunc "
+
+#--- lib1.s
+.global libfunc
+libfunc:
+ call otherlibfunc
+ ret
+
+.section .drectve
+.ascii "-export:libfunc "
+
+#--- lib2.s
+.global otherlibfunc
+otherlibfunc:
+ ret
+
+.section .drectve
+.ascii "-export:otherlibfunc "
Index: lld/COFF/Driver.cpp
===================================================================
--- lld/COFF/Driver.cpp
+++ lld/COFF/Driver.cpp
@@ -2231,15 +2231,14 @@
// Windows specific -- if __load_config_used can be resolved, resolve it.
if (ctx.symtab.findUnderscore("_load_config_used"))
addUndefined(mangle("_load_config_used"));
- } while (run());
- if (args.hasArg(OPT_include_optional)) {
- // Handle /includeoptional
- for (auto *arg : args.filtered(OPT_include_optional))
- if (isa_and_nonnull<LazyArchive>(ctx.symtab.find(arg->getValue())))
- addUndefined(arg->getValue());
- while (run());
- }
+ if (args.hasArg(OPT_include_optional)) {
+ // Handle /includeoptional
+ for (auto *arg : args.filtered(OPT_include_optional))
+ if (isa_and_nonnull<LazyArchive>(ctx.symtab.find(arg->getValue())))
+ addUndefined(arg->getValue());
+ }
+ } while (run());
// Create wrapped symbols for -wrap option.
std::vector<WrappedSymbol> wrapped = addWrappedSymbols(ctx, args);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D132361.455509.patch
Type: text/x-patch
Size: 2603 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220825/d30f838f/attachment.bin>
More information about the llvm-commits
mailing list