mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
9526edaf68
This `R_WASM_MEMORY_ADDR_SELFREL_I32` relocation represents an offset between its relocating address and the symbol address. It's very similar to `R_X86_64_PC32` but restricted to be used for only data segments. ``` S + A - P ``` A: Represents the addend used to compute the value of the relocatable field. P: Represents the place of the storage unit being relocated. S: Represents the value of the symbol whose index resides in the relocation entry. Proposal: https://github.com/WebAssembly/tool-conventions/issues/162 Differential Revision: https://reviews.llvm.org/D96659
49 lines
1.3 KiB
ArmAsm
49 lines
1.3 KiB
ArmAsm
// RUN: not llvm-mc -filetype=obj -triple wasm32 %s -o /dev/null 2>&1 | FileCheck %s
|
|
|
|
.section .data.foo,"",@
|
|
foo:
|
|
.int8 1
|
|
.size foo, 1
|
|
foo_other:
|
|
.int8 1
|
|
.size foo_other, 1
|
|
|
|
.section .data.bar,"",@
|
|
bar:
|
|
.int8 1
|
|
.size bar, 1
|
|
|
|
.section .data.fizz,"",@
|
|
fizz:
|
|
.int8 1
|
|
.size fizz, 1
|
|
|
|
.section .data.segment1,"",@
|
|
segment1:
|
|
// CHECK: 'bar' can not be placed in a different section
|
|
.int32 fizz-bar
|
|
// CHECK: 'undef_baz' can not be undefined in a subtraction expression
|
|
.int32 fizz-undef_baz
|
|
// CHECK: 'fizz' can not be placed in a different section
|
|
.int32 undef_baz-fizz
|
|
.size segment1, 12
|
|
|
|
|
|
.text
|
|
.section .text.main,"",@
|
|
main:
|
|
.functype main () -> (i32)
|
|
// Expressions involving symbols within the same sections can be evaluated
|
|
// prior to writing the object file.
|
|
// CHECK-NOT: foo
|
|
i32.const foo-foo_other+2
|
|
i32.const foo_other-foo-10
|
|
|
|
// CHECK: 'bar' unsupported subtraction expression used in relocation in code section.
|
|
i32.const foo-bar
|
|
// CHECK: 'undef_baz' unsupported subtraction expression used in relocation in code section.
|
|
i32.const foo-undef_baz
|
|
// CHECK: 'foo' unsupported subtraction expression used in relocation in code section.
|
|
i32.const undef_baz-foo
|
|
end_function
|