[lld] 6536579 - [LLD][COFF] Add support for -includeoptional on ARM64X (#126300)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 10 13:01:58 PST 2025
Author: Jacek Caban
Date: 2025-02-10T22:01:53+01:00
New Revision: 6536579d805c07ab43dc1ff23999ae85677ed9e2
URL: https://github.com/llvm/llvm-project/commit/6536579d805c07ab43dc1ff23999ae85677ed9e2
DIFF: https://github.com/llvm/llvm-project/commit/6536579d805c07ab43dc1ff23999ae85677ed9e2.diff
LOG: [LLD][COFF] Add support for -includeoptional on ARM64X (#126300)
Include symbols from both symbol tables.
Added:
lld/test/COFF/arm64x-includeoptional.s
Modified:
lld/COFF/Driver.cpp
Removed:
################################################################################
diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp
index 281510b7ac6ea6d..7ffd3f2219757c0 100644
--- a/lld/COFF/Driver.cpp
+++ b/lld/COFF/Driver.cpp
@@ -2557,14 +2557,14 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
// it.
if (symtab.findUnderscore("_load_config_used"))
symtab.addGCRoot(symtab.mangle("_load_config_used"));
- });
- 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())))
- ctx.symtab.addGCRoot(arg->getValue());
- }
+ if (args.hasArg(OPT_include_optional)) {
+ // Handle /includeoptional
+ for (auto *arg : args.filtered(OPT_include_optional))
+ if (isa_and_nonnull<LazyArchive>(symtab.find(arg->getValue())))
+ symtab.addGCRoot(arg->getValue());
+ }
+ });
} while (run());
}
diff --git a/lld/test/COFF/arm64x-includeoptional.s b/lld/test/COFF/arm64x-includeoptional.s
new file mode 100644
index 000000000000000..40e885bd1c45367
--- /dev/null
+++ b/lld/test/COFF/arm64x-includeoptional.s
@@ -0,0 +1,17 @@
+// REQUIRE: aarch64
+
+// RUN: llvm-mc -filetype=obj -triple=aarch64-windows %s -o %t.arm64.obj
+// RUN: llvm-mc -filetype=obj -triple=arm64ec-windows %s -o %t.arm64ec.obj
+// RUN: llvm-mc -filetype=obj -triple=arm64ec-windows %S/Inputs/loadconfig-arm64ec.s -o %t-loadconfig-arm64ec.obj
+// RUN: llvm-mc -filetype=obj -triple=aarch64-windows %S/Inputs/loadconfig-arm64.s -o %t-loadconfig-arm64.obj
+
+// RUN: llvm-lib -machine:arm64x -out:%t-test.lib %t.arm64.obj %t.arm64ec.obj %t-loadconfig-arm64ec.obj %t-loadconfig-arm64.obj
+// RUN: lld-link -machine:arm64x -dll -noentry -out:%t.dll %t-test.lib -includeoptional:sym
+
+// RUN: llvm-readobj --hex-dump=.test %t.dll | FileCheck %s
+// CHECK: 0x180004000 01000000 01000000
+
+ .globl sym
+ .section .test,"dr"
+sym:
+ .word 1
More information about the llvm-commits
mailing list