mirror of
https://github.com/RPCS3/llvm.git
synced 2026-08-27 02:51:23 -04:00
53a472fd29
The change cleans up and unifies the handling of relocation entries in WasmObjectWriter. Type index relocation no longer need to be handled separately. The only externally visible change should be that type index relocations are no longer grouped at the end. Differential Revision: https://reviews.llvm.org/D33918 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304816 91177308-0d34-0410-b5e6-96231b3b80d8
60 lines
1.8 KiB
LLVM
60 lines
1.8 KiB
LLVM
; 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_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: 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: }
|
|
; CHECK-NEXT: ]
|