Skip to content

Commit 21a6dbd

Browse files
authored
[LLD][COFF] Report undefined EC symbols on ARM64X (llvm#120311)
1 parent fecf139 commit 21a6dbd

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

lld/COFF/Driver.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -2727,8 +2727,10 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
27272727
createECExportThunks();
27282728

27292729
// Resolve remaining undefined symbols and warn about imported locals.
2730-
while (ctx.symtab.resolveRemainingUndefines())
2731-
run();
2730+
ctx.forEachSymtab([&](SymbolTable &symtab) {
2731+
while (symtab.resolveRemainingUndefines())
2732+
run();
2733+
});
27322734

27332735
if (errorCount())
27342736
return;

lld/test/COFF/arm64x-symtab.s

+13
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
// RUN: llvm-mc -filetype=obj -triple=x86_64-windows sym.s -o sym-x86_64.obj
77
// RUN: llvm-mc -filetype=obj -triple=aarch64-windows symref.s -o symref-aarch64.obj
88
// RUN: llvm-mc -filetype=obj -triple=arm64ec-windows symref.s -o symref-arm64ec.obj
9+
// RUN: llvm-mc -filetype=obj -triple=x86_64-windows symref.s -o symref-x86_64.obj
910
// RUN: llvm-lib -machine:arm64x -out:sym.lib sym-aarch64.obj sym-arm64ec.obj
1011

1112
// Check that native object files can't reference EC symbols.
@@ -15,6 +16,18 @@
1516
// UNDEF: lld-link: error: undefined symbol: sym
1617
// UNDEF-NEXT: >>> referenced by symref-aarch64.obj:(.data)
1718

19+
// Check that EC object files can't reference native symbols.
20+
21+
// RUN: not lld-link -machine:arm64x -dll -noentry -out:out.dll symref-arm64ec.obj sym-aarch64.obj \
22+
// RUN: 2>&1 | FileCheck --check-prefix=UNDEFEC %s
23+
// UNDEFEC: lld-link: error: undefined symbol: sym
24+
// UNDEFEC-NEXT: >>> referenced by symref-arm64ec.obj:(.data)
25+
26+
// RUN: not lld-link -machine:arm64x -dll -noentry -out:out.dll symref-x86_64.obj sym-aarch64.obj \
27+
// RUN: 2>&1 | FileCheck --check-prefix=UNDEFX86 %s
28+
// UNDEFX86: lld-link: error: undefined symbol: sym
29+
// UNDEFX86-NEXT: >>> referenced by symref-x86_64.obj:(.data)
30+
1831
// RUN: not lld-link -machine:arm64x -dll -noentry -out:err2.dll symref-aarch64.obj sym-x86_64.obj \
1932
// RUN: 2>&1 | FileCheck --check-prefix=UNDEF %s
2033

0 commit comments

Comments
 (0)