diff options
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/MC/WebAssembly/reloc-code.ll | 59 | ||||
-rw-r--r-- | llvm/test/MC/WebAssembly/sections.ll | 57 | ||||
-rw-r--r-- | llvm/test/tools/llvm-readobj/relocations.test | 5 |
3 files changed, 118 insertions, 3 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: ] diff --git a/llvm/test/MC/WebAssembly/sections.ll b/llvm/test/MC/WebAssembly/sections.ll new file mode 100644 index 00000000000..e7ae2b3beea --- /dev/null +++ b/llvm/test/MC/WebAssembly/sections.ll @@ -0,0 +1,57 @@ +; RUN: llc -mtriple wasm32-unknown-unknown-wasm -filetype=obj %s -o - | llvm-readobj -s | FileCheck %s + +; external function +declare i32 @a() + +; global data +@b = global i32 3, align 4 + +; local function +define i32 @f1() { +entry: + %tmp1 = call i32 @a() + ret i32 %tmp1 +} + + +; CHECK: Format: WASM +; CHECK: Arch: wasm32 +; CHECK: AddressSize: 32bit +; CHECK: Sections [ +; CHECK: Section { +; CHECK: Type: TYPE (0x1) +; CHECK: } +; CHECK: Section { +; CHECK: Type: IMPORT (0x2) +; CHECK: } +; CHECK: Section { +; CHECK: Type: FUNCTION (0x3) +; CHECK: } +; CHECK: Section { +; CHECK: Type: TABLE (0x4) +; CHECK: } +; CHECK: Section { +; CHECK: Type: MEMORY (0x5) +; CHECK: } +; CHECK: Section { +; CHECK: Type: GLOBAL (0x6) +; CHECK: } +; CHECK: Section { +; CHECK: Type: EXPORT (0x7) +; CHECK: } +; CHECK: Section { +; CHECK: Type: CODE (0xA) +; CHECK: } +; CHECK: Section { +; CHECK: Type: DATA (0xB) +; CHECK: } +; CHECK: Section { +; CHECK: Type: CUSTOM (0x0) +; CHECK: Name: name +; CHECK: } +; CHECK: Section { +; CHECK: Type: CUSTOM (0x0) +; CHECK: Name: reloc.CODE +; CHECK: } +; CHECK:] + diff --git a/llvm/test/tools/llvm-readobj/relocations.test b/llvm/test/tools/llvm-readobj/relocations.test index 475ac1d7e29..9c7dcf1d659 100644 --- a/llvm/test/tools/llvm-readobj/relocations.test +++ b/llvm/test/tools/llvm-readobj/relocations.test @@ -292,19 +292,18 @@ WASM-NEXT: Relocation { WASM-NEXT: Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB (1) WASM-NEXT: Offset: 0x6 WASM-NEXT: Index: 0x0 -WASM-NEXT: Addend: 0x0 WASM-NEXT: } WASM-NEXT: Relocation { WASM-NEXT: Type: R_WEBASSEMBLY_GLOBAL_ADDR_LEB (3) WASM-NEXT: Offset: 0x15 WASM-NEXT: Index: 0x0 -WASM-NEXT: Addend: 0x0 +WASM-NEXT: Addend: 0 WASM-NEXT: } WASM-NEXT: Relocation { WASM-NEXT: Type: R_WEBASSEMBLY_GLOBAL_ADDR_LEB (3) WASM-NEXT: Offset: 0x24 WASM-NEXT: Index: 0x1 -WASM-NEXT: Addend: 0x0 +WASM-NEXT: Addend: 0 WASM-NEXT: } WASM-NEXT: } WASM-NEXT: ] |