forked from OSchip/llvm-project
[lld][WebAssembly] Allow `atomics` feature with unshared memory
https://github.com/WebAssembly/threads/issues/144 updated the WebAssembly threads proposal to make atomic operations on unshared memories valid. This change updates the feature checking in the linker accordingly. Production WebAssembly engines have recently been updated to allow this behvaior, but after this change users who accidentally use atomics with unshared memories on older versions of the engines will get validation errors at runtime rather than link errors. Differential Revision: https://reviews.llvm.org/D79530
This commit is contained in:
parent
64b8a633a8
commit
15a5e86fb3
|
@ -8,8 +8,6 @@
|
|||
|
||||
# RUN: not wasm-ld --no-entry --shared-memory --max-memory=131072 --features=atomics %t1.o -o - 2>&1 | FileCheck %s --check-prefix SHARED-NO-BULK-MEM
|
||||
|
||||
# RUN: not wasm-ld --no-entry --features=atomics %t1.o -o - 2>&1 | FileCheck %s --check-prefix ATOMICS-NO-SHARED
|
||||
|
||||
# RUN: wasm-ld --relocatable --features=atomics %t1.o -o - | obj2yaml | FileCheck %s --check-prefix ATOMICS-RELOCATABLE
|
||||
|
||||
# RUN: wasm-ld --no-entry --shared-memory --max-memory=131072 --features=atomics,bulk-memory %t1.o -o - | obj2yaml | FileCheck %s --check-prefix SHARED
|
||||
|
@ -65,8 +63,6 @@ Sections:
|
|||
|
||||
# SHARED-NO-BULK-MEM: 'bulk-memory' feature must be used in order to use shared memory
|
||||
|
||||
# ATOMICS-NO-SHARED: 'atomics' feature is used, so --shared-memory must be used{{$}}
|
||||
|
||||
# ATOMICS-RELOCATABLE: - Type: MEMORY
|
||||
# ATOMICS-RELOCATABLE-NEXT: Memories:
|
||||
# ATOMICS-RELOCATABLE-NEXT: Initial: 0x00000001
|
||||
|
|
|
@ -450,15 +450,6 @@ void Writer::populateTargetFeatures() {
|
|||
for (const auto &key : used.keys())
|
||||
allowed.insert(std::string(key));
|
||||
|
||||
if (!config->relocatable && allowed.count("atomics") &&
|
||||
!config->sharedMemory) {
|
||||
if (inferFeatures)
|
||||
error(Twine("'atomics' feature is used by ") + used["atomics"] +
|
||||
", so --shared-memory must be used");
|
||||
else
|
||||
error("'atomics' feature is used, so --shared-memory must be used");
|
||||
}
|
||||
|
||||
if (!config->checkFeatures)
|
||||
return;
|
||||
|
||||
|
|
Loading…
Reference in New Issue