summaryrefslogtreecommitdiffstats
path: root/llvm/test/MC/WebAssembly/reloc-code.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/MC/WebAssembly/reloc-code.ll')
-rw-r--r--llvm/test/MC/WebAssembly/reloc-code.ll59
1 files changed, 59 insertions, 0 deletions
diff --git a/llvm/test/MC/WebAssembly/reloc-code.ll b/llvm/test/MC/WebAssembly/reloc-code.ll
new file mode 100644
index 00000000000..5c794400fa0
--- /dev/null
+++ b/llvm/test/MC/WebAssembly/reloc-code.ll
@@ -0,0 +1,59 @@
+; RUN: llc -mtriple wasm32-unknown-unknown-wasm -filetype=obj %s -o - | llvm-readobj -r -expand-relocs | FileCheck %s
+
+; Pointers to functions of two different types
+@a = global i64 ()* inttoptr (i64 5 to i64 ()*), align 8
+@b = global i32 ()* inttoptr (i32 7 to i32 ()*), align 8
+
+; External functions
+declare i32 @c()
+declare i32 @d()
+
+define i32 @f1() {
+entry:
+ %aa = load i64 ()*, i64 ()** @a, align 8
+ %bb = load i32 ()*, i32 ()** @b, align 8
+ %tmp1 = call i64 %aa()
+ %tmp2 = call i32 %bb()
+ %tmp3 = call i32 @c()
+ %tmp4 = call i32 @d()
+ ret i32 %tmp2
+}
+
+
+; CHECK: Format: WASM
+; CHECK: Relocations [
+; CHECK-NEXT: Section (8) CODE {
+; CHECK-NEXT: Relocation {
+; CHECK-NEXT: Type: R_WEBASSEMBLY_GLOBAL_ADDR_LEB (3)
+; CHECK-NEXT: Offset: 0x9
+; CHECK-NEXT: Index: 0x0
+; CHECK-NEXT: Addend: 0
+; CHECK-NEXT: }
+; CHECK-NEXT: Relocation {
+; CHECK-NEXT: Type: R_WEBASSEMBLY_GLOBAL_ADDR_LEB (3)
+; CHECK-NEXT: Offset: 0x14
+; CHECK-NEXT: Index: 0x1
+; CHECK-NEXT: Addend: 0
+; CHECK-NEXT: }
+; CHECK-NEXT: Relocation {
+; CHECK-NEXT: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
+; CHECK-NEXT: Offset: 0x2D
+; CHECK-NEXT: Index: 0x0
+; CHECK-NEXT: }
+; CHECK-NEXT: Relocation {
+; CHECK-NEXT: Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
+; CHECK-NEXT: Offset: 0x34
+; CHECK-NEXT: Index: 0x1
+; CHECK-NEXT: }
+; CHECK-NEXT: Relocation {
+; CHECK-NEXT: Type: R_WEBASSEMBLY_TYPE_INDEX_LEB (6)
+; CHECK-NEXT: Offset: 0x1A
+; CHECK-NEXT: Index: 0x1
+; CHECK-NEXT: }
+; CHECK-NEXT: Relocation {
+; CHECK-NEXT: Type: R_WEBASSEMBLY_TYPE_INDEX_LEB (6)
+; CHECK-NEXT: Offset: 0x24
+; CHECK-NEXT: Index: 0x0
+; CHECK-NEXT: }
+; CHECK-NEXT: }
+; CHECK-NEXT: ]
OpenPOWER on IntegriCloud