Skip to content

Commit 094d1ce

Browse files
committed
[LLD][COFF] Pull _load_config_used symbol from both symbol tables on ARM64X
1 parent 34d5072 commit 094d1ce

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

lld/COFF/Driver.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2571,9 +2571,12 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
25712571
ctx.symtab.addLibcall(s);
25722572
}
25732573

2574-
// Windows specific -- if __load_config_used can be resolved, resolve it.
2575-
if (ctx.symtab.findUnderscore("_load_config_used"))
2576-
ctx.symtab.addGCRoot(ctx.symtab.mangle("_load_config_used"));
2574+
ctx.forEachSymtab([&](SymbolTable &symtab) {
2575+
// Windows specific -- if __load_config_used can be resolved, resolve
2576+
// it.
2577+
if (symtab.findUnderscore("_load_config_used"))
2578+
symtab.addGCRoot(symtab.mangle("_load_config_used"));
2579+
});
25772580

25782581
if (args.hasArg(OPT_include_optional)) {
25792582
// Handle /includeoptional

lld/test/COFF/arm64x-loadconfig.s

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
// RUN: llvm-mc -filetype=obj -triple=arm64ec-windows loadconfig-ec.s -o loadconfig-ec.obj
88
// RUN: llvm-mc -filetype=obj -triple=aarch64-windows loadconfig-short.s -o loadconfig-short.obj
99
// RUN: llvm-mc -filetype=obj -triple=arm64ec-windows loadconfig-short.s -o loadconfig-short-arm64ec.obj
10+
// RUN: llvm-lib -machine:arm64x -out:loadconfig.lib loadconfig.obj loadconfig-ec.obj
1011

1112
// RUN: lld-link -machine:arm64x -out:out-warn.dll -dll -noentry test.obj \
1213
// RUN: 2>&1 | FileCheck --check-prefixes=WARN-LOADCFG,WARN-EC-LOADCFG %s
@@ -158,6 +159,10 @@
158159
// BASERELOC-NEXT: Address: 0x2074
159160
// BASERELOC-NEXT: }
160161

162+
// RUN: lld-link -machine:arm64x -out:out-hyb-lib.dll -dll -noentry loadconfig.lib chpe.obj test.obj
163+
// RUN: llvm-readobj --coff-load-config out-hyb-lib.dll | FileCheck --check-prefix=LOADCFG %s
164+
// RUN: llvm-readobj --coff-basereloc out-hyb-lib.dll | FileCheck --check-prefix=BASERELOC %s
165+
161166
#--- test.s
162167
.data
163168
sym:

0 commit comments

Comments
 (0)