[lld] 312f737 - [lld][WebAssembly] Don't report relocation error when linking with -r/--relocatable (#109822)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 24 11:14:12 PDT 2024
Author: Sam Clegg
Date: 2024-09-24T11:14:07-07:00
New Revision: 312f73765b29db468cd282130d1b519ed3eeae96
URL: https://github.com/llvm/llvm-project/commit/312f73765b29db468cd282130d1b519ed3eeae96
DIFF: https://github.com/llvm/llvm-project/commit/312f73765b29db468cd282130d1b519ed3eeae96.diff
LOG: [lld][WebAssembly] Don't report relocation error when linking with -r/--relocatable (#109822)
Followup to #104926.
We ran into issues on the emscripten waterfall where relocation against
`__dso_handle` were being reported as errors even though
`-r/--relocatable` was being used to generate object file output rather
than executable output.
Added:
Modified:
lld/test/wasm/unsupported-pic-relocations.s
lld/test/wasm/unsupported-pic-relocations64.s
lld/wasm/Relocations.cpp
Removed:
################################################################################
diff --git a/lld/test/wasm/unsupported-pic-relocations.s b/lld/test/wasm/unsupported-pic-relocations.s
index ea32e8468cdb4d..2f85afa02c88b1 100644
--- a/lld/test/wasm/unsupported-pic-relocations.s
+++ b/lld/test/wasm/unsupported-pic-relocations.s
@@ -15,6 +15,10 @@
# RUN: not wasm-ld --experimental-pic -shared %t.o -o /dev/null --unresolved-symbols=import-dynamic 2>&1 | \
# RUN: FileCheck %s
+## These errors should not be reported under -r/--relocation (i.e. when
+## generating an object file)
+# RUN: wasm-ld --experimental-pic -r %t.o -o /dev/null
+
.functype external_func () -> ()
use_undefined_function:
@@ -23,7 +27,7 @@ use_undefined_function:
# CHECK: error: {{.*}}.o: relocation R_WASM_TABLE_INDEX_REL_SLEB is not supported against an undefined symbol `external_func`
drop
end_function
-
+
use_undefined_data:
.functype use_undefined_data () -> ()
i32.const external_data at MBREL
diff --git a/lld/test/wasm/unsupported-pic-relocations64.s b/lld/test/wasm/unsupported-pic-relocations64.s
index db9707b7fbac5e..df885b8d75fbe8 100644
--- a/lld/test/wasm/unsupported-pic-relocations64.s
+++ b/lld/test/wasm/unsupported-pic-relocations64.s
@@ -15,6 +15,10 @@
# RUN: not wasm-ld -mwasm64 --experimental-pic -shared %t.o -o /dev/null --unresolved-symbols=import-dynamic 2>&1 | \
# RUN: FileCheck %s
+## These errors should not be reported under -r/--relocation (i.e. when
+## generating an object file)
+# RUN: wasm-ld -mwasm64 --experimental-pic -r %t.o -o /dev/null
+
.functype external_func () -> ()
use_undefined_function:
@@ -23,7 +27,7 @@ use_undefined_function:
# CHECK: error: {{.*}}.o: relocation R_WASM_TABLE_INDEX_REL_SLEB64 is not supported against an undefined symbol `external_func`
drop
end_function
-
+
use_undefined_data:
.functype use_undefined_data () -> ()
i64.const external_data at MBREL
diff --git a/lld/wasm/Relocations.cpp b/lld/wasm/Relocations.cpp
index 2dbfe335494711..45ad32701616a1 100644
--- a/lld/wasm/Relocations.cpp
+++ b/lld/wasm/Relocations.cpp
@@ -173,7 +173,7 @@ void scanRelocations(InputChunk *chunk) {
}
}
- if (sym->isUndefined()) {
+ if (!config->relocatable && sym->isUndefined()) {
switch (reloc.Type) {
case R_WASM_TABLE_INDEX_REL_SLEB:
case R_WASM_TABLE_INDEX_REL_SLEB64:
@@ -187,11 +187,11 @@ void scanRelocations(InputChunk *chunk) {
toString(*sym) + "`");
break;
}
- }
- if (sym->isUndefined() && !config->relocatable && !sym->isWeak()) {
- // Report undefined symbols
- reportUndefined(file, sym);
+ if (!sym->isWeak()) {
+ // Report undefined symbols
+ reportUndefined(file, sym);
+ }
}
}
}
More information about the llvm-commits
mailing list