153 lines · plain
1# RUN: not llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -o %t.a1.o %s 2>&1 | FileCheck %s --check-prefix=MVP2# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -mattr=+reference-types -o %t.a1.rt.o %s3# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown %p/Inputs/call-indirect.s -o %t.a2.o4# RUN: llvm-mc -filetype=obj -triple=wasm32-unknown-unknown -mattr=+reference-types %p/Inputs/call-indirect.s -o %t.a2.rt.o5# RUN: not wasm-ld --allow-undefined --export-dynamic --no-entry -o %t.wasm %t.a1.rt.o %t.a2.o 2>&1 | FileCheck %s --check-prefix=RT-MVP6# RUN: wasm-ld --allow-undefined --export-dynamic --no-entry -o- %t.a1.rt.o %t.a2.rt.o | obj2yaml | FileCheck %s7 8 .globl table_a9 .tabletype table_a, funcref10 11 .globl table_b12table_b:13 .tabletype table_b, funcref14 15 .globl table_c16table_c:17 .tabletype table_c, externref18 19 .globl call_indirect_explicit_tables20call_indirect_explicit_tables:21 .functype call_indirect_explicit_tables () -> ()22 i32.const 023 call_indirect table_a, () -> ()24# MVP: error: Expected (, instead got: table_a25 i32.const 026 call_indirect table_b, () -> ()27 end_function28 29# RT-MVP: wasm-ld: error: object file not built with 'reference-types' or 'call-indirect-overlong' feature conflicts with import of table table_a by file30 31# CHECK: --- !WASM32# CHECK-NEXT: FileHeader:33# CHECK-NEXT: Version: 0x134# CHECK-NEXT: Sections:35# CHECK-NEXT: - Type: TYPE36# CHECK-NEXT: Signatures:37# CHECK-NEXT: - Index: 038# CHECK-NEXT: ParamTypes: []39# CHECK-NEXT: ReturnTypes: []40# CHECK-NEXT: - Index: 141# CHECK-NEXT: ParamTypes: []42# CHECK-NEXT: ReturnTypes:43# CHECK-NEXT: - I6444# CHECK-NEXT: - Index: 245# CHECK-NEXT: ParamTypes: []46# CHECK-NEXT: ReturnTypes:47# CHECK-NEXT: - I3248# CHECK-NEXT: - Type: IMPORT49# CHECK-NEXT: Imports:50# CHECK-NEXT: - Module: env51# CHECK-NEXT: Field: table_a52# CHECK-NEXT: Kind: TABLE53# CHECK-NEXT: Table:54# CHECK-NEXT: Index: 055# CHECK-NEXT: ElemType: FUNCREF56# CHECK-NEXT: Limits:57# CHECK-NEXT: Minimum: 0x058# CHECK-NEXT: - Module: env59# CHECK-NEXT: Field: foo60# CHECK-NEXT: Kind: FUNCTION61# CHECK-NEXT: SigIndex: 262# CHECK-NEXT: - Type: FUNCTION63# CHECK-NEXT: FunctionTypes: [ 0, 1, 0 ]64# CHECK-NEXT: - Type: TABLE65# CHECK-NEXT: Tables:66# CHECK-NEXT: - Index: 167# CHECK-NEXT: ElemType: FUNCREF68# CHECK-NEXT: Limits:69# CHECK-NEXT: Minimum: 0x070# CHECK-NEXT: - Index: 271# CHECK-NEXT: ElemType: EXTERNREF72# CHECK-NEXT: Limits:73# CHECK-NEXT: Minimum: 0x074# CHECK-NEXT: - Index: 375# CHECK-NEXT: ElemType: FUNCREF76# CHECK-NEXT: Limits:77# CHECK-NEXT: Flags: [ HAS_MAX ]78# CHECK-NEXT: Minimum: 0x379# CHECK-NEXT: Maximum: 0x380# CHECK-NEXT: - Type: MEMORY81# CHECK-NEXT: Memories:82# CHECK-NEXT: - Minimum: 0x283# CHECK-NEXT: - Type: GLOBAL84# CHECK-NEXT: Globals:85# CHECK-NEXT: - Index: 086# CHECK-NEXT: Type: I3287# CHECK-NEXT: Mutable: true88# CHECK-NEXT: InitExpr:89# CHECK-NEXT: Opcode: I32_CONST90# CHECK-NEXT: Value: 6553691# CHECK-NEXT: - Type: EXPORT92# CHECK-NEXT: Exports:93# CHECK-NEXT: - Name: memory94# CHECK-NEXT: Kind: MEMORY95# CHECK-NEXT: Index: 096# CHECK-NEXT: - Name: table_b97# CHECK-NEXT: Kind: TABLE98# CHECK-NEXT: Index: 199# CHECK-NEXT: - Name: table_c100# CHECK-NEXT: Kind: TABLE101# CHECK-NEXT: Index: 2102# CHECK-NEXT: - Name: call_indirect_explicit_tables103# CHECK-NEXT: Kind: FUNCTION104# CHECK-NEXT: Index: 1105# CHECK-NEXT: - Name: bar106# CHECK-NEXT: Kind: FUNCTION107# CHECK-NEXT: Index: 2108# CHECK-NEXT: - Name: call_bar_indirect109# CHECK-NEXT: Kind: FUNCTION110# CHECK-NEXT: Index: 3111# CHECK-NEXT: - Type: ELEM112# CHECK-NEXT: Segments:113# CHECK-NEXT: - Flags: 2114# CHECK-NEXT: TableNumber: 3115# CHECK-NEXT: ElemKind: FUNCREF116# CHECK-NEXT: Offset:117# CHECK-NEXT: Opcode: I32_CONST118# CHECK-NEXT: Value: 1119# CHECK-NEXT: Functions: [ 2, 0 ]120# CHECK-NEXT: - Type: CODE121# CHECK-NEXT: Functions:122# CHECK-NEXT: - Index: 1123# CHECK-NEXT: Locals: []124# CHECK-NEXT: Body: 41001180808080008080808000410011808080800081808080000B125# CHECK-NEXT: - Index: 2126# CHECK-NEXT: Locals: []127# CHECK-NEXT: Body: 42010B128# CHECK-NEXT: - Index: 3129# CHECK-NEXT: Locals: []130# CHECK-NEXT: Body: 41002802808084800011818080800083808080001A41002802848084800011828080800083808080001A0B131# CHECK-NEXT: - Type: DATA132# CHECK-NEXT: Segments:133# CHECK-NEXT: - SectionOffset: 8134# CHECK-NEXT: InitFlags: 0135# CHECK-NEXT: Offset:136# CHECK-NEXT: Opcode: I32_CONST137# CHECK-NEXT: Value: 65536138# CHECK-NEXT: Content: '0100000002000000'139# CHECK-NEXT: - Type: CUSTOM140# CHECK-NEXT: Name: name141# CHECK-NEXT: FunctionNames:142# CHECK-NEXT: - Index: 0143# CHECK-NEXT: Name: foo144# CHECK-NEXT: - Index: 1145# CHECK-NEXT: Name: call_indirect_explicit_tables146# CHECK-NEXT: - Index: 2147# CHECK-NEXT: Name: bar148# CHECK-NEXT: - Index: 3149# CHECK-NEXT: Name: call_bar_indirect150# CHECK-NEXT: GlobalNames:151# CHECK-NEXT: - Index: 0152# CHECK-NEXT: Name: __stack_pointer153