diff --git a/lld/test/wasm/reloc-addend.ll b/lld/test/wasm/reloc-addend.ll deleted file mode 100644 --- a/lld/test/wasm/reloc-addend.ll +++ /dev/null @@ -1,19 +0,0 @@ -; RUN: llc -filetype=obj %s -o %t.o -; RUN: wasm-ld -r -o %t.wasm %t.o -; RUN: obj2yaml %t.wasm | FileCheck %s - -target triple = "wasm32-unknown-unknown" - -@foo = hidden global [76 x i32] zeroinitializer, align 16 - -; bar points to the 16th element, which happens to be 64 bytes -; This generates an addend of 64 which, is the value at which -; signed and unsigned LEB encodes will differ. -@bar = hidden local_unnamed_addr global i32* getelementptr inbounds ([76 x i32], [76 x i32]* @foo, i32 0, i32 16), align 4 - -; CHECK: - Type: DATA -; CHECK-NEXT: Relocations: -; CHECK-NEXT: - Type: R_WASM_MEMORY_ADDR_I32 -; CHECK-NEXT: Index: 0 -; CHECK-NEXT: Offset: 0x6 -; CHECK-NEXT: Addend: 64 diff --git a/lld/test/wasm/reloc-addend.s b/lld/test/wasm/reloc-addend.s new file mode 100644 --- /dev/null +++ b/lld/test/wasm/reloc-addend.s @@ -0,0 +1,31 @@ +# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -o %t.o %s +# RUN: wasm-ld -r -o %t.wasm %t.o +# RUN: obj2yaml %t.wasm | FileCheck %s + +.hidden foo +.hidden bar +.globl foo +.globl bar + +# Similar to what would be generated from: `int foo[76]` + .section .bss.foo,"",@ + .p2align 4 +foo: + .skip 304 + .size foo, 304 + +# bar contains a pointer to the 16th element of foo, which happens to be 64 +# bytes in. This generates an addend of 64 which is the value at which signed +# and unsigned LEB encodes will differ. + .section .data.bar,"",@ + .p2align 2 +bar: + .int32 foo+64 + .size bar, 4 + +# CHECK: - Type: DATA +# CHECK-NEXT: Relocations: +# CHECK-NEXT: - Type: R_WASM_MEMORY_ADDR_I32 +# CHECK-NEXT: Index: 0 +# CHECK-NEXT: Offset: 0x6 +# CHECK-NEXT: Addend: 64