227 lines · plain
1# RUN: llvm-mc -triple=wasm64-unknown-unknown -filetype=obj < %s | obj2yaml | FileCheck %s2# RUN: llvm-mc -triple=wasm64-unknown-unknown -mattr=+reference-types -filetype=obj < %s | obj2yaml | FileCheck --check-prefix=REF %s3 4# Verify that @GOT relocation entries result in R_WASM_GLOBAL_INDEX_LEB against5# against the corrsponding function or data symbol and that the corresponding6# data symbols are imported as a wasm globals.7 8.functype default_func () -> (i32)9 10.globaltype __memory_base, i6411.globaltype __table_base, i6412 13load_default_data:14 .functype load_default_data () -> (i32)15 global.get default_data@GOT16 i32.load 017 end_function18 19load_default_func:20 .functype load_default_func () -> (i32)21 global.get default_func@GOT22 i32.load 023 end_function24 25load_hidden_data:26 .functype load_hidden_data () -> (i64)27 global.get __memory_base28 i64.const .L.hidden_data@MBREL29 i64.add30 end_function31 32load_hidden_func:33 .functype load_hidden_func () -> (i64)34 global.get __table_base35 i64.const hidden_func@TBREL36 i64.add37 end_function38 39hidden_func:40 .functype hidden_func () -> (i32)41 i32.const 042 end_function43 44.section .rodata.hidden_data,"",@45.L.hidden_data:46 .int8 10047 .size .L.hidden_data, 148 49#.hidden hidden_func50#.hidden hidden_data51.size default_data, 452 53# CHECK: --- !WASM54# CHECK-NEXT: FileHeader:55# CHECK-NEXT: Version: 0x156# CHECK-NEXT: Sections:57# CHECK-NEXT: - Type: TYPE58# CHECK-NEXT: Signatures:59# CHECK-NEXT: - Index: 060# CHECK-NEXT: ParamTypes: []61# CHECK-NEXT: ReturnTypes:62# CHECK-NEXT: - I3263# CHECK-NEXT: - Index: 164# CHECK-NEXT: ParamTypes: []65# CHECK-NEXT: ReturnTypes:66# CHECK-NEXT: - I6467# CHECK-NEXT: - Type: IMPORT68# CHECK-NEXT: Imports:69# CHECK-NEXT: - Module: env70# CHECK-NEXT: Field: __linear_memory71# CHECK-NEXT: Kind: MEMORY72# CHECK-NEXT: Memory:73# CHECK-NEXT: Flags: [ IS_64 ]74# CHECK-NEXT: Minimum: 0x175# CHECK-NEXT: - Module: env76# CHECK-NEXT: Field: default_func77# CHECK-NEXT: Kind: FUNCTION78# CHECK-NEXT: SigIndex: 079# CHECK-NEXT: - Module: env80# CHECK-NEXT: Field: __memory_base81# CHECK-NEXT: Kind: GLOBAL82# CHECK-NEXT: GlobalType: I6483# CHECK-NEXT: GlobalMutable: true84# CHECK-NEXT: - Module: env85# CHECK-NEXT: Field: __table_base86# CHECK-NEXT: Kind: GLOBAL87# CHECK-NEXT: GlobalType: I6488# CHECK-NEXT: GlobalMutable: true89# CHECK-NEXT: - Module: env90# CHECK-NEXT: Field: __indirect_function_table91# CHECK-NEXT: Kind: TABLE92# CHECK-NEXT: Table:93# CHECK-NEXT: Index: 094# CHECK-NEXT: ElemType: FUNCREF95# CHECK-NEXT: Limits:96# CHECK-NEXT: Flags: [ IS_64 ]97# CHECK-NEXT: Minimum: 0x198# CHECK-NEXT: - Module: GOT.mem99# CHECK-NEXT: Field: default_data100# CHECK-NEXT: Kind: GLOBAL101# CHECK-NEXT: GlobalType: I32102# CHECK-NEXT: GlobalMutable: true103# CHECK-NEXT: - Module: GOT.func104# CHECK-NEXT: Field: default_func105# CHECK-NEXT: Kind: GLOBAL106# CHECK-NEXT: GlobalType: I32107# CHECK-NEXT: GlobalMutable: true108# CHECK-NEXT: - Type: FUNCTION109# CHECK-NEXT: FunctionTypes: [ 0, 0, 1, 1, 0 ]110# CHECK-NEXT: - Type: ELEM111# CHECK-NEXT: Segments:112# CHECK-NEXT: Offset:113# CHECK-NEXT: Opcode: I64_CONST114# CHECK-NEXT: Value: 1115# CHECK-NEXT: Functions: [ 5 ]116# CHECK-NEXT: - Type: DATACOUNT117# CHECK-NEXT: Count: 1118# CHECK-NEXT: - Type: CODE119# CHECK-NEXT: Relocations:120# CHECK-NEXT: - Type: R_WASM_GLOBAL_INDEX_LEB121# CHECK-NEXT: Index: 1122# CHECK-NEXT: Offset: 0x4123# CHECK-NEXT: - Type: R_WASM_GLOBAL_INDEX_LEB124# CHECK-NEXT: Index: 3125# CHECK-NEXT: Offset: 0x10126# CHECK-NEXT: - Type: R_WASM_GLOBAL_INDEX_LEB127# CHECK-NEXT: Index: 5128# CHECK-NEXT: Offset: 0x1C129# CHECK-NEXT: - Type: R_WASM_MEMORY_ADDR_REL_SLEB64130# CHECK-NEXT: Index: 6131# CHECK-NEXT: Offset: 0x22132# CHECK-NEXT: - Type: R_WASM_GLOBAL_INDEX_LEB133# CHECK-NEXT: Index: 8134# CHECK-NEXT: Offset: 0x31135# CHECK-NEXT: - Type: R_WASM_TABLE_INDEX_REL_SLEB64136# CHECK-NEXT: Index: 9137# CHECK-NEXT: Offset: 0x37138# CHECK-NEXT: Functions:139# CHECK-NEXT: - Index: 1140# CHECK-NEXT: Locals: []141# CHECK-NEXT: Body: 2382808080002802000B142# CHECK-NEXT: - Index: 2143# CHECK-NEXT: Locals: []144# CHECK-NEXT: Body: 2383808080002802000B145# CHECK-NEXT: - Index: 3146# CHECK-NEXT: Locals: []147# CHECK-NEXT: Body: 23808080800042808080808080808080007C0B148# CHECK-NEXT: - Index: 4149# CHECK-NEXT: Locals: []150# CHECK-NEXT: Body: 23818080800042808080808080808080007C0B151# CHECK-NEXT: - Index: 5152# CHECK-NEXT: Locals: []153# CHECK-NEXT: Body: 41000B154# CHECK-NEXT: - Type: DATA155# CHECK-NEXT: Segments:156# CHECK-NEXT: - SectionOffset: 6157# CHECK-NEXT: InitFlags: 0158# CHECK-NEXT: Offset:159# CHECK-NEXT: Opcode: I64_CONST160# CHECK-NEXT: Value: 0161# CHECK-NEXT: Content: '64'162# CHECK-NEXT: - Type: CUSTOM163# CHECK-NEXT: Name: linking164# CHECK-NEXT: Version: 2165# CHECK-NEXT: SymbolTable:166# CHECK-NEXT: - Index: 0167# CHECK-NEXT: Kind: FUNCTION168# CHECK-NEXT: Name: load_default_data169# CHECK-NEXT: Flags: [ BINDING_LOCAL ]170# CHECK-NEXT: Function: 1171# CHECK-NEXT: - Index: 1172# CHECK-NEXT: Kind: DATA173# CHECK-NEXT: Name: default_data174# CHECK-NEXT: Flags: [ UNDEFINED ]175# CHECK-NEXT: - Index: 2176# CHECK-NEXT: Kind: FUNCTION177# CHECK-NEXT: Name: load_default_func178# CHECK-NEXT: Flags: [ BINDING_LOCAL ]179# CHECK-NEXT: Function: 2180# CHECK-NEXT: - Index: 3181# CHECK-NEXT: Kind: FUNCTION182# CHECK-NEXT: Name: default_func183# CHECK-NEXT: Flags: [ UNDEFINED ]184# CHECK-NEXT: Function: 0185# CHECK-NEXT: - Index: 4186# CHECK-NEXT: Kind: FUNCTION187# CHECK-NEXT: Name: load_hidden_data188# CHECK-NEXT: Flags: [ BINDING_LOCAL ]189# CHECK-NEXT: Function: 3190# CHECK-NEXT: - Index: 5191# CHECK-NEXT: Kind: GLOBAL192# CHECK-NEXT: Name: __memory_base193# CHECK-NEXT: Flags: [ UNDEFINED ]194# CHECK-NEXT: Global: 0195# CHECK-NEXT: - Index: 6196# CHECK-NEXT: Kind: DATA197# CHECK-NEXT: Name: .L.hidden_data198# CHECK-NEXT: Flags: [ BINDING_LOCAL ]199# CHECK-NEXT: Segment: 0200# CHECK-NEXT: Size: 1201# CHECK-NEXT: - Index: 7202# CHECK-NEXT: Kind: FUNCTION203# CHECK-NEXT: Name: load_hidden_func204# CHECK-NEXT: Flags: [ BINDING_LOCAL ]205# CHECK-NEXT: Function: 4206# CHECK-NEXT: - Index: 8207# CHECK-NEXT: Kind: GLOBAL208# CHECK-NEXT: Name: __table_base209# CHECK-NEXT: Flags: [ UNDEFINED ]210# CHECK-NEXT: Global: 1211# CHECK-NEXT: - Index: 9212# CHECK-NEXT: Kind: FUNCTION213# CHECK-NEXT: Name: hidden_func214# CHECK-NEXT: Flags: [ BINDING_LOCAL ]215# CHECK-NEXT: Function: 5216# REF: - Index: 10217# REF-NEXT: Kind: TABLE218# REF-NEXT: Name: __indirect_function_table219# REF-NEXT: Flags: [ UNDEFINED, NO_STRIP ]220# REF-NEXT: Table: 0221# CHECK-NEXT: SegmentInfo:222# CHECK-NEXT: - Index: 0223# CHECK-NEXT: Name: .rodata.hidden_data224# CHECK-NEXT: Alignment: 0225# CHECK-NEXT: Flags: [ ]226# CHECK-NEXT: ...227