mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-16 21:21:06 +00:00
[WebAssembly] Fix signature mismatches in test code
Pass --check-signatures to test executions of lld and fix resulting errors. Differential Revision: https://reviews.llvm.org/D42661 llvm-svn: 324042
This commit is contained in:
parent
d0de239f70
commit
279c850cf2
@ -1,15 +1,15 @@
|
||||
; RUN: llc -filetype=obj -o %t.o %s
|
||||
; RUN: lld -flavor wasm %t.o -o %t.wasm
|
||||
; RUN: lld -flavor wasm --check-signatures %t.o -o %t.wasm
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
|
||||
@start_alias = alias i32 (), i32 ()* @_start
|
||||
@start_alias = alias void (), void ()* @_start
|
||||
|
||||
; Function Attrs: nounwind uwtable
|
||||
define i32 @_start() local_unnamed_addr #1 {
|
||||
define void @_start() local_unnamed_addr #1 {
|
||||
entry:
|
||||
ret i32 0
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: --- !WASM
|
||||
@ -19,13 +19,10 @@ entry:
|
||||
; CHECK-NEXT: - Type: TYPE
|
||||
; CHECK-NEXT: Signatures:
|
||||
; CHECK-NEXT: - Index: 0
|
||||
; CHECK-NEXT: ReturnType: I32
|
||||
; CHECK-NEXT: ReturnType: NORESULT
|
||||
; CHECK-NEXT: ParamTypes:
|
||||
; CHECK-NEXT: - Index: 1
|
||||
; CHECK-NEXT: ReturnType: NORESULT
|
||||
; CHECK-NEXT: ParamTypes:
|
||||
; CHECK-NEXT: - Type: FUNCTION
|
||||
; CHECK-NEXT: FunctionTypes: [ 0, 1 ]
|
||||
; CHECK-NEXT: FunctionTypes: [ 0, 0 ]
|
||||
; CHECK-NEXT: - Type: TABLE
|
||||
; CHECK-NEXT: Tables:
|
||||
; CHECK-NEXT: - ElemType: ANYFUNC
|
||||
@ -68,7 +65,7 @@ entry:
|
||||
; CHECK-NEXT: Functions:
|
||||
; CHECK-NEXT: - Index: 0
|
||||
; CHECK-NEXT: Locals:
|
||||
; CHECK-NEXT: Body: 41000B
|
||||
; CHECK-NEXT: Body: 0B
|
||||
; CHECK-NEXT: - Index: 1
|
||||
; CHECK-NEXT: Locals:
|
||||
; CHECK-NEXT: Body: 0B
|
||||
|
@ -4,12 +4,12 @@
|
||||
; RUN: llc -filetype=obj %S/Inputs/hello.ll -o %t.a3.o
|
||||
; RUN: llvm-ar rcs %t.a %t.a1.o %t.a2.o %t.a3.o
|
||||
; RUN: rm -f %t.imports
|
||||
; RUN: not lld -flavor wasm %t.a %t.o -o %t.wasm 2>&1 | FileCheck -check-prefix=CHECK-UNDEFINED %s
|
||||
; RUN: not lld -flavor wasm --check-signatures %t.a %t.o -o %t.wasm 2>&1 | FileCheck -check-prefix=CHECK-UNDEFINED %s
|
||||
|
||||
; CHECK-UNDEFINED: undefined symbol: missing_func
|
||||
|
||||
; RUN: echo 'missing_func' > %t.imports
|
||||
; RUN: lld -flavor wasm %t.a %t.o -o %t.wasm
|
||||
; RUN: lld -flavor wasm --check-signatures %t.a %t.o -o %t.wasm
|
||||
|
||||
; RUN: llvm-nm -a %t.wasm | FileCheck %s
|
||||
|
||||
@ -18,11 +18,11 @@ target triple = "wasm32-unknown-unknown-wasm"
|
||||
declare i32 @foo() local_unnamed_addr #1
|
||||
declare i32 @missing_func() local_unnamed_addr #1
|
||||
|
||||
define i32 @_start() local_unnamed_addr #0 {
|
||||
define void @_start() local_unnamed_addr #0 {
|
||||
entry:
|
||||
%call1 = call i32 @foo() #2
|
||||
%call2 = call i32 @missing_func() #2
|
||||
ret i32 %call2
|
||||
ret void
|
||||
}
|
||||
|
||||
; Verify that multually dependant object files in an archive is handled
|
||||
@ -36,4 +36,4 @@ entry:
|
||||
; CHECK-NOT: hello
|
||||
|
||||
; Specifying the same archive twice is allowed.
|
||||
; RUN: lld -flavor wasm %t.a %t.a %t.o -o %t.wasm
|
||||
; RUN: lld -flavor wasm --check-signatures %t.a %t.a %t.o -o %t.wasm
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc -filetype=obj %p/Inputs/call-indirect.ll -o %t2.o
|
||||
; RUN: llc -filetype=obj %s -o %t.o
|
||||
; RUN: lld -flavor wasm -no-gc-sections -o %t.wasm %t2.o %t.o
|
||||
; RUN: lld -flavor wasm -no-gc-sections --check-signatures -o %t.wasm %t2.o %t.o
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
; bitcode generated from the following C code:
|
||||
@ -19,11 +19,11 @@ entry:
|
||||
}
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define i32 @_start() local_unnamed_addr #1 {
|
||||
define void @_start() local_unnamed_addr #1 {
|
||||
entry:
|
||||
%0 = load i32 ()*, i32 ()** @indirect_func, align 4
|
||||
%call = call i32 %0() #2
|
||||
ret i32 0
|
||||
ret void
|
||||
}
|
||||
|
||||
; Indirect function call where no function actually has this type.
|
||||
@ -57,7 +57,7 @@ define void @call_ptr(i64 (i64)* %arg) {
|
||||
; CHECK-NEXT: ParamTypes:
|
||||
; CHECK-NEXT: - I32
|
||||
; CHECK-NEXT: - Type: FUNCTION
|
||||
; CHECK-NEXT: FunctionTypes: [ 0, 3, 1, 1, 4, 3 ]
|
||||
; CHECK-NEXT: FunctionTypes: [ 0, 3, 1, 3, 4, 3 ]
|
||||
; CHECK-NEXT: - Type: TABLE
|
||||
; CHECK-NEXT: Tables:
|
||||
; CHECK-NEXT: - ElemType: ANYFUNC
|
||||
@ -126,7 +126,7 @@ define void @call_ptr(i64 (i64)* %arg) {
|
||||
; CHECK-NEXT: Body: 41020B
|
||||
; CHECK-NEXT: - Index: 3
|
||||
; CHECK-NEXT: Locals:
|
||||
; CHECK-NEXT: Body: 410028028888808000118180808000001A41000B
|
||||
; CHECK-NEXT: Body: 410028028888808000118180808000001A0B
|
||||
; CHECK-NEXT: - Index: 4
|
||||
; CHECK-NEXT: Locals:
|
||||
; CHECK-NEXT: Body: 42012000118280808000001A0B
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: llc -filetype=obj -mtriple=wasm32-unknown-uknown-wasm %p/Inputs/comdat1.ll -o %t1.o
|
||||
; RUN: llc -filetype=obj -mtriple=wasm32-unknown-uknown-wasm %p/Inputs/comdat2.ll -o %t2.o
|
||||
; RUN: llc -filetype=obj -mtriple=wasm32-unknown-uknown-wasm %s -o %t.o
|
||||
; RUN: lld -flavor wasm -no-gc-sections -o %t.wasm %t.o %t1.o %t2.o
|
||||
; RUN: lld -flavor wasm -no-gc-sections --check-signatures -o %t.wasm %t.o %t1.o %t2.o
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
|
@ -1,5 +1,5 @@
|
||||
# RUN: llc -filetype=obj %p/Inputs/ret32.ll -o %t.ret32.o
|
||||
# RUN: not lld -flavor wasm -o %t.wasm %t.ret32.o %t.ret32.o 2>&1 | FileCheck %s
|
||||
# RUN: not lld -flavor wasm --check-signatures -o %t.wasm %t.ret32.o %t.ret32.o 2>&1 | FileCheck %s
|
||||
|
||||
# CHECK: duplicate symbol: ret32
|
||||
# CHECK-NEXT: >>> defined in {{.*}}conflict.test.tmp.ret32.o
|
||||
|
@ -9,7 +9,7 @@ target triple = "wasm32-unknown-unknown-wasm"
|
||||
@hello_str = external global i8*
|
||||
@external_ref = global i8** @hello_str, align 8
|
||||
|
||||
; RUN: lld -flavor wasm -no-gc-sections --allow-undefined -o %t.wasm %t.o %t.hello.o
|
||||
; RUN: lld -flavor wasm -no-gc-sections --check-signatures --allow-undefined -o %t.wasm %t.o %t.hello.o
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
; CHECK: - Type: GLOBAL
|
||||
@ -43,7 +43,7 @@ target triple = "wasm32-unknown-unknown-wasm"
|
||||
; CHECK-NEXT: Content: 68656C6C6F0A00
|
||||
|
||||
|
||||
; RUN: lld -flavor wasm --relocatable -o %t_reloc.wasm %t.o %t.hello.o
|
||||
; RUN: lld -flavor wasm --check-signatures --relocatable -o %t_reloc.wasm %t.o %t.hello.o
|
||||
; RUN: obj2yaml %t_reloc.wasm | FileCheck %s -check-prefix=RELOC
|
||||
|
||||
; RELOC: - Type: GLOBAL
|
||||
|
@ -7,9 +7,9 @@ entry:
|
||||
ret void
|
||||
}
|
||||
|
||||
; RUN: lld -flavor wasm -e entry -o %t1.wasm %t.o
|
||||
; RUN: lld -flavor wasm --check-signatures -e entry -o %t1.wasm %t.o
|
||||
; RUN: obj2yaml %t1.wasm | FileCheck %s
|
||||
; RUN: lld -flavor wasm --entry=entry -o %t2.wasm %t.o
|
||||
; RUN: lld -flavor wasm --check-signatures --entry=entry -o %t2.wasm %t.o
|
||||
; RUN: obj2yaml %t2.wasm | FileCheck %s
|
||||
|
||||
; CHECK: - Type: EXPORT
|
||||
@ -23,7 +23,7 @@ entry:
|
||||
|
||||
; The __wasm_call_ctors is somewhat special. Make sure we can use it
|
||||
; as the entry point if we choose
|
||||
; RUN: lld -flavor wasm --entry=__wasm_call_ctors -o %t3.wasm %t.o
|
||||
; RUN: lld -flavor wasm --check-signatures --entry=__wasm_call_ctors -o %t3.wasm %t.o
|
||||
; RUN: obj2yaml %t3.wasm | FileCheck %s -check-prefix=CHECK-CTOR
|
||||
|
||||
; CHECK-CTOR: - Type: EXPORT
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc -filetype=obj %s -o %t.o
|
||||
; RUN: not lld -flavor wasm --export=missing -o %t.wasm %t.o 2>&1 | FileCheck -check-prefix=CHECK-ERROR %s
|
||||
; RUN: lld -flavor wasm --export=hidden_function -o %t.wasm %t.o
|
||||
; RUN: not lld -flavor wasm --check-signatures --export=missing -o %t.wasm %t.o 2>&1 | FileCheck -check-prefix=CHECK-ERROR %s
|
||||
; RUN: lld -flavor wasm --check-signatures --export=hidden_function -o %t.wasm %t.o
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
@ -10,9 +10,9 @@ entry:
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
define i32 @_start() local_unnamed_addr {
|
||||
define void @_start() local_unnamed_addr {
|
||||
entry:
|
||||
ret i32 0
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK-ERROR: error: symbol exported via --export not found: missing
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc -filetype=obj %p/Inputs/ret32.ll -o %t.ret32.o
|
||||
; RUN: llc -filetype=obj %s -o %t.o
|
||||
; RUN: lld -flavor wasm -o %t.wasm %t.o %t.ret32.o
|
||||
; RUN: lld -flavor wasm --check-signatures -o %t.wasm %t.o %t.ret32.o
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc -filetype=obj %p/Inputs/ret32.ll -o %t.ret32.o
|
||||
; RUN: llc -filetype=obj %s -o %t.o
|
||||
; RUN: lld -flavor wasm -o %t.wasm %t.ret32.o %t.o
|
||||
; RUN: lld -flavor wasm --check-signatures -o %t.wasm %t.ret32.o %t.o
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
|
@ -1,6 +1,6 @@
|
||||
# RUN: llc -filetype=obj %p/Inputs/ret32.ll -o %t.ret32.o
|
||||
# RUN: llc -filetype=obj %p/Inputs/ret64.ll -o %t.ret64.o
|
||||
# RUN: lld -flavor wasm -r -o %t.wasm %t.ret32.o %t.ret64.o
|
||||
# RUN: lld -flavor wasm --check-signatures -r -o %t.wasm %t.ret32.o %t.ret64.o
|
||||
# RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
CHECK: Sections:
|
||||
|
@ -1,5 +1,5 @@
|
||||
# RUN: llc -filetype=obj %p/Inputs/start.ll -o %t.start.o
|
||||
# RUN: lld -flavor wasm --import-memory -o %t.wasm %t.start.o
|
||||
# RUN: lld -flavor wasm --check-signatures --import-memory -o %t.wasm %t.start.o
|
||||
# RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
# Verify the --import-memory flag creates a memory import
|
||||
|
@ -44,7 +44,7 @@ entry:
|
||||
{ i32, void ()*, i8* } { i32 101, void ()* @func4, i8* null }
|
||||
]
|
||||
|
||||
; RUN: lld -flavor wasm %t.o %t.global-ctor-dtor.o -o %t.wasm
|
||||
; RUN: lld -flavor wasm --check-signatures %t.o %t.global-ctor-dtor.o -o %t.wasm
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
; CHECK: - Type: ELEM
|
||||
@ -104,7 +104,7 @@ entry:
|
||||
; CHECK-NEXT: ...
|
||||
|
||||
|
||||
; RUN: lld -flavor wasm -r %t.o %t.global-ctor-dtor.o -o %t.reloc.wasm
|
||||
; RUN: lld -flavor wasm --check-signatures -r %t.o %t.global-ctor-dtor.o -o %t.reloc.wasm
|
||||
; RUN: obj2yaml %t.reloc.wasm | FileCheck -check-prefix=RELOC %s
|
||||
|
||||
; RELOC: Name: linking
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: llc -filetype=obj %p/Inputs/start.ll -o %t.o
|
||||
; RUN: not lld -flavor wasm -o %t.wasm -z stack-size=1 %t.o 2>&1 | FileCheck %s
|
||||
; RUN: not lld -flavor wasm --check-signatures -o %t.wasm -z stack-size=1 %t.o 2>&1 | FileCheck %s
|
||||
|
||||
; CHECK: error: stack size must be 16-byte aligned
|
||||
|
@ -5,7 +5,7 @@
|
||||
; RUN: llc -filetype=obj %S/Inputs/ret32.ll -o %t2.o
|
||||
; RUN: llc -filetype=obj %S/Inputs/start.ll -o %t.start.o
|
||||
; RUN: llvm-ar rcs %t2.a %t2.o
|
||||
; RUN: lld -flavor wasm %t.start.o %t2.a %t.o -o %t.wasm -u ret32 --undefined ret64
|
||||
; RUN: lld -flavor wasm --check-signatures %t.start.o %t2.a %t.o -o %t.wasm -u ret32 --undefined ret64
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
; CHECK: - Type: EXPORT
|
||||
@ -29,8 +29,8 @@
|
||||
|
||||
|
||||
; Verify that referencing a symbol that doesn't exist won't work
|
||||
; RUN: not lld -flavor wasm %t.start.o -o %t.wasm -u symboldoesnotexist 2>&1 | FileCheck -check-prefix=CHECK-UNDEFINED1 %s
|
||||
; RUN: not lld -flavor wasm --check-signatures %t.start.o -o %t.wasm -u symboldoesnotexist 2>&1 | FileCheck -check-prefix=CHECK-UNDEFINED1 %s
|
||||
; CHECK-UNDEFINED1: error: undefined symbol: symboldoesnotexist
|
||||
|
||||
; RUN: not lld -flavor wasm %t.start.o -o %t.wasm --undefined symboldoesnotexist --allow-undefined 2>&1 | FileCheck -check-prefix=CHECK-UNDEFINED2 %s
|
||||
; RUN: not lld -flavor wasm --check-signatures %t.start.o -o %t.wasm --undefined symboldoesnotexist --allow-undefined 2>&1 | FileCheck -check-prefix=CHECK-UNDEFINED2 %s
|
||||
; CHECK-UNDEFINED2: function forced with --undefined not found: symboldoesnotexist
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc -filetype=obj %s -o %t.o
|
||||
; RUN: lld -flavor wasm -o %t.wasm %t.o
|
||||
; RUN: lld -flavor wasm --check-signatures -o %t.wasm %t.o
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
@ -13,10 +13,10 @@ entry:
|
||||
ret i32 %0
|
||||
}
|
||||
|
||||
define i32 @_start() local_unnamed_addr {
|
||||
define void @_start() local_unnamed_addr {
|
||||
entry:
|
||||
call i32 @baz()
|
||||
ret i32 1
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: --- !WASM
|
||||
@ -32,7 +32,7 @@ entry:
|
||||
; CHECK-NEXT: ReturnType: NORESULT
|
||||
; CHECK-NEXT: ParamTypes:
|
||||
; CHECK-NEXT: - Type: FUNCTION
|
||||
; CHECK-NEXT: FunctionTypes: [ 0, 0, 1 ]
|
||||
; CHECK-NEXT: FunctionTypes: [ 0, 1, 1 ]
|
||||
; CHECK-NEXT: - Type: TABLE
|
||||
; CHECK-NEXT: Tables:
|
||||
; CHECK-NEXT: - ElemType: ANYFUNC
|
||||
@ -75,7 +75,7 @@ entry:
|
||||
; CHECK-NEXT: Body: 4100280284888080000B
|
||||
; CHECK-NEXT: - Index: 1
|
||||
; CHECK-NEXT: Locals:
|
||||
; CHECK-NEXT: Body: 1080808080001A41010B
|
||||
; CHECK-NEXT: Body: 1080808080001A0B
|
||||
; CHECK-NEXT: - Index: 2
|
||||
; CHECK-NEXT: Locals:
|
||||
; CHECK-NEXT: Body: 0B
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc -filetype=obj %p/Inputs/locals-duplicate1.ll -o %t1.o
|
||||
; RUN: llc -filetype=obj %p/Inputs/locals-duplicate2.ll -o %t2.o
|
||||
; RUN: lld -flavor wasm --no-entry -o %t.wasm %t1.o %t2.o
|
||||
; RUN: lld -flavor wasm --check-signatures --no-entry -o %t.wasm %t1.o %t2.o
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
; CHECK: --- !WASM
|
||||
@ -212,7 +212,7 @@
|
||||
; CHECK-NEXT: ...
|
||||
|
||||
|
||||
; RUN: lld -flavor wasm -r --no-entry -o %t.reloc.wasm %t1.o %t2.o
|
||||
; RUN: lld -flavor wasm --check-signatures -r --no-entry -o %t.reloc.wasm %t1.o %t2.o
|
||||
; RUN: obj2yaml %t.reloc.wasm | FileCheck -check-prefix=RELOC %s
|
||||
|
||||
; RELOC: --- !WASM
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc -filetype=obj %p/Inputs/many-funcs.ll -o %t.many.o
|
||||
; RUN: llc -filetype=obj %s -o %t.o
|
||||
; RUN: lld -flavor wasm -r -o %t.wasm %t.many.o %t.o
|
||||
; RUN: lld -flavor wasm --check-signatures -r -o %t.wasm %t.many.o %t.o
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
; Test that relocations within the CODE section correctly handle
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc -filetype=obj %p/Inputs/hello.ll -o %t.hello.o
|
||||
; RUN: llc -filetype=obj %s -o %t.o
|
||||
; RUN: lld -flavor wasm -r -o %t.wasm %t.hello.o %t.o
|
||||
; RUN: lld -flavor wasm --check-signatures -r -o %t.wasm %t.hello.o %t.o
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc -filetype=obj %p/Inputs/ret32.ll -o %t.ret32.o
|
||||
; RUN: llc -filetype=obj %s -o %t.main.o
|
||||
; RUN: not lld -flavor wasm --check-signatures -o %t.wasm %t.main.o %t.ret32.o 2>&1 | FileCheck %s
|
||||
; RUN: not lld -flavor wasm --check-signatures --check-signatures -o %t.wasm %t.main.o %t.ret32.o 2>&1 | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc -filetype=obj %s -o %t.o
|
||||
; RUN: lld -flavor wasm --relocatable -o %t.wasm %t.o
|
||||
; RUN: lld -flavor wasm --check-signatures --relocatable -o %t.wasm %t.o
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
|
@ -1,5 +1,5 @@
|
||||
RUN: llc -filetype=obj %p/Inputs/start.ll -o %t.start.o
|
||||
RUN: lld -flavor wasm --strip-debug -o %t.wasm %t.start.o
|
||||
RUN: lld -flavor wasm --check-signatures --strip-debug -o %t.wasm %t.start.o
|
||||
RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
# Check that there is no name section
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc -filetype=obj %s -o %t.o
|
||||
; RUN: llc -filetype=obj %p/Inputs/ret32.ll -o %t.ret32.o
|
||||
; RUN: not lld -flavor wasm -o %t.wasm %t.o %t.ret32.o 2>&1 | FileCheck %s
|
||||
; RUN: not lld -flavor wasm --check-signatures -o %t.wasm %t.o %t.ret32.o 2>&1 | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
RUN: llc -filetype=obj %p/Inputs/ret32.ll -o %t.ret32.o
|
||||
RUN: not lld -flavor wasm -o %t.wasm %t.ret32.o 2>&1 | FileCheck %s
|
||||
RUN: not lld -flavor wasm --check-signatures -o %t.wasm %t.ret32.o 2>&1 | FileCheck %s
|
||||
|
||||
CHECK: error: undefined symbol: _start
|
||||
|
||||
RUN: not lld -flavor wasm -entry=foo -o %t.wasm %t.ret32.o 2>&1 | FileCheck %s -check-prefix=CHECK-CUSTOM
|
||||
RUN: not lld -flavor wasm --check-signatures -entry=foo -o %t.wasm %t.ret32.o 2>&1 | FileCheck %s -check-prefix=CHECK-CUSTOM
|
||||
|
||||
CHECK-CUSTOM: error: undefined symbol: foo
|
||||
|
||||
RUN: lld -flavor wasm -entry=foo --allow-undefined -o %t.wasm %t.ret32.o
|
||||
RUN: lld -flavor wasm --check-signatures -entry=foo --allow-undefined -o %t.wasm %t.ret32.o
|
||||
|
@ -1,13 +1,13 @@
|
||||
; RUN: llc -filetype=obj %s -o %t.o
|
||||
; RUN: lld -flavor wasm --allow-undefined -o %t.wasm %t.o
|
||||
; RUN: lld -flavor wasm --check-signatures --allow-undefined -o %t.wasm %t.o
|
||||
|
||||
; Fails due to undefined 'foo'
|
||||
; RUN: not lld -flavor wasm -o %t.wasm %t.o 2>&1 | FileCheck %s
|
||||
; RUN: not lld -flavor wasm --check-signatures -o %t.wasm %t.o 2>&1 | FileCheck %s
|
||||
; CHECK: error: {{.*}}.o: undefined symbol: foo
|
||||
|
||||
; But succeeds if we pass a file containing 'foo' as --allow-undefined-file.
|
||||
; RUN: echo 'foo' > %t.txt
|
||||
; RUN: lld -flavor wasm --allow-undefined-file=%t.txt -o %t.wasm %t.o
|
||||
; RUN: lld -flavor wasm --check-signatures --allow-undefined-file=%t.txt -o %t.wasm %t.o
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc -filetype=obj %s -o %t.o
|
||||
; RUN: lld -flavor wasm -o %t.wasm %t.o
|
||||
; RUN: lld -flavor wasm --check-signatures -o %t.wasm %t.o
|
||||
; RUN: llvm-readobj -file-headers %t.wasm | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: llc -filetype=obj -o %t.o %s
|
||||
; RUN: llc -filetype=obj %S/Inputs/hidden.ll -o %t2.o
|
||||
; RUN: llvm-ar rcs %t2.a %t2.o
|
||||
; RUN: lld -flavor wasm %t.o %t2.a -o %t.wasm
|
||||
; RUN: lld -flavor wasm --check-signatures %t.o %t2.a -o %t.wasm
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
; Test that hidden symbols are not exported, whether pulled in from an archive
|
||||
@ -22,13 +22,13 @@ entry:
|
||||
declare i32 @archiveHidden()
|
||||
declare i32 @archiveDefault()
|
||||
|
||||
define i32 @_start() {
|
||||
define void @_start() {
|
||||
entry:
|
||||
%call1 = call i32 @objectHidden()
|
||||
%call2 = call i32 @objectDefault()
|
||||
%call3 = call i32 @archiveHidden()
|
||||
%call4 = call i32 @archiveDefault()
|
||||
ret i32 0
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: - Type: EXPORT
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc -filetype=obj -o %t.o %s
|
||||
; RUN: llc -filetype=obj %S/Inputs/weak-alias.ll -o %t2.o
|
||||
; RUN: lld -flavor wasm %t.o %t2.o -o %t.wasm
|
||||
; RUN: lld -flavor wasm --check-signatures %t.o %t2.o -o %t.wasm
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
; Test that the strongly defined alias_fn from this file is used both here
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: llc -filetype=obj -o %t.o %s
|
||||
; RUN: llc -filetype=obj %S/Inputs/weak-alias.ll -o %t2.o
|
||||
; RUN: lld -flavor wasm %t.o %t2.o -o %t.wasm
|
||||
; RUN: lld -flavor wasm --check-signatures %t.o %t2.o -o %t.wasm
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
; Test that weak aliases (alias_fn is a weak alias of direct_fn) are linked correctly
|
||||
@ -10,10 +10,10 @@ target triple = "wasm32-unknown-unknown-wasm"
|
||||
declare i32 @alias_fn() local_unnamed_addr #1
|
||||
|
||||
; Function Attrs: nounwind uwtable
|
||||
define i32 @_start() local_unnamed_addr #1 {
|
||||
define void @_start() local_unnamed_addr #1 {
|
||||
entry:
|
||||
%call = tail call i32 @alias_fn() #2
|
||||
ret i32 %call
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: --- !WASM
|
||||
@ -23,13 +23,13 @@ entry:
|
||||
; CHECK-NEXT: - Type: TYPE
|
||||
; CHECK-NEXT: Signatures:
|
||||
; CHECK-NEXT: - Index: 0
|
||||
; CHECK-NEXT: ReturnType: I32
|
||||
; CHECK-NEXT: ParamTypes:
|
||||
; CHECK-NEXT: - Index: 1
|
||||
; CHECK-NEXT: ReturnType: NORESULT
|
||||
; CHECK-NEXT: ParamTypes:
|
||||
; CHECK-NEXT: - Index: 1
|
||||
; CHECK-NEXT: ReturnType: I32
|
||||
; CHECK-NEXT: ParamTypes:
|
||||
; CHECK-NEXT: - Type: FUNCTION
|
||||
; CHECK-NEXT: FunctionTypes: [ 0, 0, 0, 0, 0, 0, 1 ]
|
||||
; CHECK-NEXT: FunctionTypes: [ 0, 1, 1, 1, 1, 1, 0 ]
|
||||
; CHECK-NEXT: - Type: TABLE
|
||||
; CHECK-NEXT: Tables:
|
||||
; CHECK-NEXT: - ElemType: ANYFUNC
|
||||
@ -93,7 +93,7 @@ entry:
|
||||
; CHECK-NEXT: Functions:
|
||||
; CHECK-NEXT: - Index: 0
|
||||
; CHECK-NEXT: Locals:
|
||||
; CHECK-NEXT: Body: 1081808080000B
|
||||
; CHECK-NEXT: Body: 1081808080001A0B
|
||||
; CHECK-NEXT: - Index: 1
|
||||
; CHECK-NEXT: Locals:
|
||||
; CHECK-NEXT: Body: 41000B
|
||||
@ -138,7 +138,7 @@ entry:
|
||||
; CHECK-NEXT: Name: __wasm_call_ctors
|
||||
; CHECK-NEXT: ...
|
||||
|
||||
; RUN: lld -flavor wasm --relocatable %t.o %t2.o -o %t.reloc.o
|
||||
; RUN: lld -flavor wasm --check-signatures --relocatable %t.o %t2.o -o %t.reloc.o
|
||||
; RUN: obj2yaml %t.reloc.o | FileCheck %s -check-prefix=RELOC
|
||||
|
||||
; RELOC: --- !WASM
|
||||
@ -148,6 +148,9 @@ entry:
|
||||
; RELOC-NEXT: - Type: TYPE
|
||||
; RELOC-NEXT: Signatures:
|
||||
; RELOC-NEXT: - Index: 0
|
||||
; RELOC-NEXT: ReturnType: NORESULT
|
||||
; RELOC-NEXT: ParamTypes:
|
||||
; RELOC-NEXT: - Index: 1
|
||||
; RELOC-NEXT: ReturnType: I32
|
||||
; RELOC-NEXT: ParamTypes:
|
||||
; RELOC-NEXT: - Type: IMPORT
|
||||
@ -158,7 +161,7 @@ entry:
|
||||
; RELOC-NEXT: GlobalType: I32
|
||||
; RELOC-NEXT: GlobalMutable: false
|
||||
; RELOC-NEXT: - Type: FUNCTION
|
||||
; RELOC-NEXT: FunctionTypes: [ 0, 0, 0, 0, 0, 0 ]
|
||||
; RELOC-NEXT: FunctionTypes: [ 0, 1, 1, 1, 1, 1 ]
|
||||
; RELOC-NEXT: - Type: TABLE
|
||||
; RELOC-NEXT: Tables:
|
||||
; RELOC-NEXT: - ElemType: ANYFUNC
|
||||
@ -205,44 +208,44 @@ entry:
|
||||
; RELOC-NEXT: Offset: 0x00000004
|
||||
; RELOC-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
|
||||
; RELOC-NEXT: Index: 1
|
||||
; RELOC-NEXT: Offset: 0x00000012
|
||||
; RELOC-NEXT: Offset: 0x00000013
|
||||
; RELOC-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
|
||||
; RELOC-NEXT: Index: 1
|
||||
; RELOC-NEXT: Offset: 0x0000001B
|
||||
; RELOC-NEXT: Offset: 0x0000001C
|
||||
; RELOC-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB
|
||||
; RELOC-NEXT: Index: 0
|
||||
; RELOC-NEXT: Offset: 0x00000026
|
||||
; RELOC-NEXT: Offset: 0x00000027
|
||||
; RELOC-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB
|
||||
; RELOC-NEXT: Index: 0
|
||||
; RELOC-NEXT: Offset: 0x00000031
|
||||
; RELOC-NEXT: Offset: 0x00000032
|
||||
; RELOC-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB
|
||||
; RELOC-NEXT: Index: 1
|
||||
; RELOC-NEXT: Offset: 0x00000039
|
||||
; RELOC-NEXT: Offset: 0x0000003A
|
||||
; RELOC-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
|
||||
; RELOC-NEXT: Index: 1
|
||||
; RELOC-NEXT: Offset: 0x00000042
|
||||
; RELOC-NEXT: Offset: 0x00000043
|
||||
; RELOC-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB
|
||||
; RELOC-NEXT: Index: 0
|
||||
; RELOC-NEXT: Offset: 0x0000004F
|
||||
; RELOC-NEXT: Offset: 0x00000050
|
||||
; RELOC-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB
|
||||
; RELOC-NEXT: Index: 0
|
||||
; RELOC-NEXT: Offset: 0x0000005C
|
||||
; RELOC-NEXT: Offset: 0x0000005D
|
||||
; RELOC-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB
|
||||
; RELOC-NEXT: Index: 0
|
||||
; RELOC-NEXT: Offset: 0x00000067
|
||||
; RELOC-NEXT: Offset: 0x00000068
|
||||
; RELOC-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_SLEB
|
||||
; RELOC-NEXT: Index: 1
|
||||
; RELOC-NEXT: Offset: 0x0000006F
|
||||
; RELOC-NEXT: Offset: 0x00000070
|
||||
; RELOC-NEXT: - Type: R_WEBASSEMBLY_FUNCTION_INDEX_LEB
|
||||
; RELOC-NEXT: Index: 1
|
||||
; RELOC-NEXT: Offset: 0x00000078
|
||||
; RELOC-NEXT: Offset: 0x00000079
|
||||
; RELOC-NEXT: - Type: R_WEBASSEMBLY_GLOBAL_INDEX_LEB
|
||||
; RELOC-NEXT: Index: 0
|
||||
; RELOC-NEXT: Offset: 0x00000085
|
||||
; RELOC-NEXT: Offset: 0x00000086
|
||||
; RELOC-NEXT: Functions:
|
||||
; RELOC-NEXT: - Index: 0
|
||||
; RELOC-NEXT: Locals:
|
||||
; RELOC-NEXT: Body: 1081808080000B
|
||||
; RELOC-NEXT: Body: 1081808080001A0B
|
||||
; RELOC-NEXT: - Index: 1
|
||||
; RELOC-NEXT: Locals:
|
||||
; RELOC-NEXT: Body: 41000B
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: llc -filetype=obj %p/Inputs/weak-symbol1.ll -o %t1.o
|
||||
; RUN: llc -filetype=obj %p/Inputs/weak-symbol2.ll -o %t2.o
|
||||
; RUN: llc -filetype=obj %s -o %t.o
|
||||
; RUN: lld -flavor wasm -no-gc-sections -o %t.wasm %t.o %t1.o %t2.o
|
||||
; RUN: lld -flavor wasm -no-gc-sections --check-signatures -o %t.wasm %t.o %t1.o %t2.o
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
target triple = "wasm32-unknown-unknown-wasm"
|
||||
@ -9,11 +9,11 @@ target triple = "wasm32-unknown-unknown-wasm"
|
||||
declare i32 @weakFn() local_unnamed_addr
|
||||
@weakGlobal = external global i32
|
||||
|
||||
define i32 @_start() local_unnamed_addr {
|
||||
define void @_start() local_unnamed_addr {
|
||||
entry:
|
||||
%call = call i32 @weakFn()
|
||||
%val = load i32, i32* @weakGlobal, align 4
|
||||
ret i32 %val
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: --- !WASM
|
||||
@ -23,13 +23,13 @@ entry:
|
||||
; CHECK-NEXT: - Type: TYPE
|
||||
; CHECK-NEXT: Signatures:
|
||||
; CHECK-NEXT: - Index: 0
|
||||
; CHECK-NEXT: ReturnType: I32
|
||||
; CHECK-NEXT: ParamTypes:
|
||||
; CHECK-NEXT: - Index: 1
|
||||
; CHECK-NEXT: ReturnType: NORESULT
|
||||
; CHECK-NEXT: ParamTypes:
|
||||
; CHECK-NEXT: - Index: 1
|
||||
; CHECK-NEXT: ReturnType: I32
|
||||
; CHECK-NEXT: ParamTypes:
|
||||
; CHECK-NEXT: - Type: FUNCTION
|
||||
; CHECK-NEXT: FunctionTypes: [ 0, 0, 0, 0, 0, 1 ]
|
||||
; CHECK-NEXT: FunctionTypes: [ 0, 1, 1, 1, 1, 0 ]
|
||||
; CHECK-NEXT: - Type: TABLE
|
||||
; CHECK-NEXT: Tables:
|
||||
; CHECK-NEXT: - ElemType: ANYFUNC
|
||||
@ -84,7 +84,7 @@ entry:
|
||||
; CHECK-NEXT: Functions:
|
||||
; CHECK-NEXT: - Index: 0
|
||||
; CHECK-NEXT: Locals:
|
||||
; CHECK-NEXT: Body: 1081808080001A4100280280888080000B
|
||||
; CHECK-NEXT: Body: 1081808080001A0B
|
||||
; CHECK-NEXT: - Index: 1
|
||||
; CHECK-NEXT: Locals:
|
||||
; CHECK-NEXT: Body: 41010B
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc -filetype=obj -o %t.o %s
|
||||
; RUN: lld -flavor wasm -strip-debug %t.o -o %t.wasm
|
||||
; RUN: lld -flavor wasm --check-signatures -strip-debug %t.o -o %t.wasm
|
||||
; RUN: obj2yaml %t.wasm | FileCheck %s
|
||||
|
||||
; Test that undefined weak externals (global_var) and (foo) don't cause
|
||||
@ -20,10 +20,10 @@ define i32* @get_address_of_global_var() #0 {
|
||||
ret i32* @global_var
|
||||
}
|
||||
|
||||
define i32 @_start() #0 {
|
||||
define void @_start() #0 {
|
||||
entry:
|
||||
%0 = load i32, i32* @global_var, align 4
|
||||
ret i32 %0
|
||||
%call = call i32* @get_address_of_global_var()
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: --- !WASM
|
||||
@ -39,7 +39,7 @@ entry:
|
||||
; CHECK-NEXT: ReturnType: NORESULT
|
||||
; CHECK-NEXT: ParamTypes:
|
||||
; CHECK-NEXT: - Type: FUNCTION
|
||||
; CHECK-NEXT: FunctionTypes: [ 0, 0, 0, 1 ]
|
||||
; CHECK-NEXT: FunctionTypes: [ 0, 0, 1, 1 ]
|
||||
; CHECK-NEXT: - Type: TABLE
|
||||
; CHECK-NEXT: Tables:
|
||||
; CHECK-NEXT: - ElemType: ANYFUNC
|
||||
@ -91,7 +91,7 @@ entry:
|
||||
; CHECK-NEXT: Body: 4180808080000B
|
||||
; CHECK-NEXT: - Index: 2
|
||||
; CHECK-NEXT: Locals:
|
||||
; CHECK-NEXT: Body: 4100280280808080000B
|
||||
; CHECK-NEXT: Body: 1081808080001A0B
|
||||
; CHECK-NEXT: - Index: 3
|
||||
; CHECK-NEXT: Locals:
|
||||
; CHECK-NEXT: Body: 0B
|
||||
|
Loading…
x
Reference in New Issue
Block a user