Home | History | Annotate | Download | only in WebAssembly
      1 ; RUN: llc -filetype=obj %s -o - | llvm-readobj -r -expand-relocs | FileCheck %s
      2 
      3 target triple = "wasm32-unknown-unknown"
      4 
      5 ; Pointers to functions of two different types
      6 @a = global i64 ()* inttoptr (i64 5 to i64 ()*), align 8
      7 @b = global i32 ()* inttoptr (i32 7 to i32 ()*), align 8
      8 
      9 ; External functions
     10 declare i32 @c()
     11 declare i32 @d()
     12 
     13 define i32 @f1() {
     14 entry:
     15     %aa = load i64 ()*, i64 ()** @a, align 8
     16     %bb = load i32 ()*, i32 ()** @b, align 8
     17     %tmp1 = call i64 %aa()
     18     %tmp2 = call i32 %bb()
     19     %tmp3 = call i32 @c()
     20     %tmp4 = call i32 @d()
     21     ret i32 %tmp2
     22 }
     23 
     24 
     25 ; CHECK: Format: WASM
     26 ; CHECK: Relocations [
     27 ; CHECK-NEXT:   Section (4) CODE {
     28 ; CHECK-NEXT:     Relocation {
     29 ; CHECK-NEXT:       Type: R_WEBASSEMBLY_MEMORY_ADDR_LEB (3)
     30 ; CHECK-NEXT:       Offset: 0x9
     31 ; CHECK-NEXT:       Symbol: b
     32 ; CHECK-NEXT:       Addend: 0
     33 ; CHECK-NEXT:     }
     34 ; CHECK-NEXT:     Relocation {
     35 ; CHECK-NEXT:       Type: R_WEBASSEMBLY_MEMORY_ADDR_LEB (3)
     36 ; CHECK-NEXT:       Offset: 0x14
     37 ; CHECK-NEXT:       Symbol: a
     38 ; CHECK-NEXT:       Addend: 0
     39 ; CHECK-NEXT:     }
     40 ; CHECK-NEXT:     Relocation {
     41 ; CHECK-NEXT:       Type: R_WEBASSEMBLY_TYPE_INDEX_LEB (6)
     42 ; CHECK-NEXT:       Offset: 0x1A
     43 ; CHECK-NEXT:       Index: 0x1
     44 ; CHECK-NEXT:     }
     45 ; CHECK-NEXT:     Relocation {
     46 ; CHECK-NEXT:       Type: R_WEBASSEMBLY_TYPE_INDEX_LEB (6)
     47 ; CHECK-NEXT:       Offset: 0x24
     48 ; CHECK-NEXT:       Index: 0x0
     49 ; CHECK-NEXT:     }
     50 ; CHECK-NEXT:     Relocation {
     51 ; CHECK-NEXT:       Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
     52 ; CHECK-NEXT:       Offset: 0x2D
     53 ; CHECK-NEXT:       Symbol: c
     54 ; CHECK-NEXT:     }
     55 ; CHECK-NEXT:     Relocation {
     56 ; CHECK-NEXT:       Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB (0)
     57 ; CHECK-NEXT:       Offset: 0x34
     58 ; CHECK-NEXT:       Symbol: d
     59 ; CHECK-NEXT:     }
     60 ; CHECK-NEXT:   }
     61 ; CHECK-NEXT: ]
     62