229 lines · plain
1# RUN: sed -e '/^REF-/d' %s | llvm-mc -triple=wasm32-unknown-unknown -filetype=obj | obj2yaml | FileCheck %s2# RUN: sed -e 's/^REF-//g' %s | llvm-mc -triple=wasm32-unknown-unknown -mattr=+reference-types -filetype=obj | obj2yaml | FileCheck --check-prefix=REF %s3 4# Verify that @GOT relocation entryes 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, i3211.globaltype __table_base, i3212 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 () -> (i32)27 global.get __memory_base28 i32.const .L.hidden_data@MBREL29 i32.add30 end_function31 32load_hidden_func:33 .functype load_hidden_func () -> (i32)34 global.get __table_base35 i32.const hidden_func@TBREL36 i32.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 53REF-mytable:54REF-.tabletype mytable, externref55 56# CHECK: --- !WASM57# CHECK-NEXT: FileHeader:58# CHECK-NEXT: Version: 0x159# CHECK-NEXT: Sections:60# CHECK-NEXT: - Type: TYPE61# CHECK-NEXT: Signatures:62# CHECK-NEXT: - Index: 063# CHECK-NEXT: ParamTypes: []64# CHECK-NEXT: ReturnTypes:65# CHECK-NEXT: - I3266# CHECK-NEXT: - Type: IMPORT67# CHECK-NEXT: Imports:68# CHECK-NEXT: - Module: env69# CHECK-NEXT: Field: __linear_memory70# CHECK-NEXT: Kind: MEMORY71# CHECK-NEXT: Memory:72# CHECK-NEXT: Minimum: 0x173# CHECK-NEXT: - Module: env74# CHECK-NEXT: Field: default_func75# CHECK-NEXT: Kind: FUNCTION76# CHECK-NEXT: SigIndex: 077# CHECK-NEXT: - Module: env78# CHECK-NEXT: Field: __memory_base79# CHECK-NEXT: Kind: GLOBAL80# CHECK-NEXT: GlobalType: I3281# CHECK-NEXT: GlobalMutable: true82# CHECK-NEXT: - Module: env83# CHECK-NEXT: Field: __table_base84# CHECK-NEXT: Kind: GLOBAL85# CHECK-NEXT: GlobalType: I3286# CHECK-NEXT: GlobalMutable: true87# CHECK-NEXT: - Module: env88# CHECK-NEXT: Field: __indirect_function_table89# CHECK-NEXT: Kind: TABLE90# CHECK-NEXT: Table:91# CHECK-NEXT: Index: 092# CHECK-NEXT: ElemType: FUNCREF93# CHECK-NEXT: Limits:94# CHECK-NEXT: Minimum: 0x195# CHECK-NEXT: - Module: GOT.mem96# CHECK-NEXT: Field: default_data97# CHECK-NEXT: Kind: GLOBAL98# CHECK-NEXT: GlobalType: I3299# CHECK-NEXT: GlobalMutable: true100# CHECK-NEXT: - Module: GOT.func101# CHECK-NEXT: Field: default_func102# CHECK-NEXT: Kind: GLOBAL103# CHECK-NEXT: GlobalType: I32104# CHECK-NEXT: GlobalMutable: true105# CHECK-NEXT: - Type: FUNCTION106# CHECK-NEXT: FunctionTypes: [ 0, 0, 0, 0, 0 ]107# CHECK-NEXT: - Type: ELEM108# CHECK-NEXT: Segments:109# CHECK-NEXT: Offset:110# CHECK-NEXT: Opcode: I32_CONST111# CHECK-NEXT: Value: 1112# CHECK-NEXT: Functions: [ 5 ]113# CHECK-NEXT: - Type: DATACOUNT114# CHECK-NEXT: Count: 1115# CHECK-NEXT: - Type: CODE116# CHECK-NEXT: Relocations:117# CHECK-NEXT: - Type: R_WASM_GLOBAL_INDEX_LEB118# CHECK-NEXT: Index: 1119# CHECK-NEXT: Offset: 0x4120# CHECK-NEXT: - Type: R_WASM_GLOBAL_INDEX_LEB121# CHECK-NEXT: Index: 3122# CHECK-NEXT: Offset: 0x10123# CHECK-NEXT: - Type: R_WASM_GLOBAL_INDEX_LEB124# CHECK-NEXT: Index: 5125# CHECK-NEXT: Offset: 0x1C126# CHECK-NEXT: - Type: R_WASM_MEMORY_ADDR_REL_SLEB127# CHECK-NEXT: Index: 6128# CHECK-NEXT: Offset: 0x22129# CHECK-NEXT: - Type: R_WASM_GLOBAL_INDEX_LEB130# CHECK-NEXT: Index: 8131# CHECK-NEXT: Offset: 0x2C132# CHECK-NEXT: - Type: R_WASM_TABLE_INDEX_REL_SLEB133# CHECK-NEXT: Index: 9134# CHECK-NEXT: Offset: 0x32135# CHECK-NEXT: Functions:136# CHECK-NEXT: - Index: 1137# CHECK-NEXT: Locals: []138# CHECK-NEXT: Body: 2382808080002802000B139# CHECK-NEXT: - Index: 2140# CHECK-NEXT: Locals: []141# CHECK-NEXT: Body: 2383808080002802000B142# CHECK-NEXT: - Index: 3143# CHECK-NEXT: Locals: []144# CHECK-NEXT: Body: 2380808080004180808080006A0B145# CHECK-NEXT: - Index: 4146# CHECK-NEXT: Locals: []147# CHECK-NEXT: Body: 2381808080004180808080006A0B148# CHECK-NEXT: - Index: 5149# CHECK-NEXT: Locals: []150# CHECK-NEXT: Body: 41000B151# CHECK-NEXT: - Type: DATA152# CHECK-NEXT: Segments:153# CHECK-NEXT: - SectionOffset: 6154# CHECK-NEXT: InitFlags: 0155# CHECK-NEXT: Offset:156# CHECK-NEXT: Opcode: I32_CONST157# CHECK-NEXT: Value: 0158# CHECK-NEXT: Content: '64'159# CHECK-NEXT: - Type: CUSTOM160# CHECK-NEXT: Name: linking161# CHECK-NEXT: Version: 2162# CHECK-NEXT: SymbolTable:163# CHECK-NEXT: - Index: 0164# CHECK-NEXT: Kind: FUNCTION165# CHECK-NEXT: Name: load_default_data166# CHECK-NEXT: Flags: [ BINDING_LOCAL ]167# CHECK-NEXT: Function: 1168# CHECK-NEXT: - Index: 1169# CHECK-NEXT: Kind: DATA170# CHECK-NEXT: Name: default_data171# CHECK-NEXT: Flags: [ UNDEFINED ]172# CHECK-NEXT: - Index: 2173# CHECK-NEXT: Kind: FUNCTION174# CHECK-NEXT: Name: load_default_func175# CHECK-NEXT: Flags: [ BINDING_LOCAL ]176# CHECK-NEXT: Function: 2177# CHECK-NEXT: - Index: 3178# CHECK-NEXT: Kind: FUNCTION179# CHECK-NEXT: Name: default_func180# CHECK-NEXT: Flags: [ UNDEFINED ]181# CHECK-NEXT: Function: 0182# CHECK-NEXT: - Index: 4183# CHECK-NEXT: Kind: FUNCTION184# CHECK-NEXT: Name: load_hidden_data185# CHECK-NEXT: Flags: [ BINDING_LOCAL ]186# CHECK-NEXT: Function: 3187# CHECK-NEXT: - Index: 5188# CHECK-NEXT: Kind: GLOBAL189# CHECK-NEXT: Name: __memory_base190# CHECK-NEXT: Flags: [ UNDEFINED ]191# CHECK-NEXT: Global: 0192# CHECK-NEXT: - Index: 6193# CHECK-NEXT: Kind: DATA194# CHECK-NEXT: Name: .L.hidden_data195# CHECK-NEXT: Flags: [ BINDING_LOCAL ]196# CHECK-NEXT: Segment: 0197# CHECK-NEXT: Size: 1198# CHECK-NEXT: - Index: 7199# CHECK-NEXT: Kind: FUNCTION200# CHECK-NEXT: Name: load_hidden_func201# CHECK-NEXT: Flags: [ BINDING_LOCAL ]202# CHECK-NEXT: Function: 4203# CHECK-NEXT: - Index: 8204# CHECK-NEXT: Kind: GLOBAL205# CHECK-NEXT: Name: __table_base206# CHECK-NEXT: Flags: [ UNDEFINED ]207# CHECK-NEXT: Global: 1208# CHECK-NEXT: - Index: 9209# CHECK-NEXT: Kind: FUNCTION210# CHECK-NEXT: Name: hidden_func211# CHECK-NEXT: Flags: [ BINDING_LOCAL ]212# CHECK-NEXT: Function: 5213# REF: - Index: 10214# REF-NEXT: Kind: TABLE215# REF-NEXT: Name: mytable216# REF-NEXT: Flags: [ BINDING_LOCAL ]217# REF-NEXT: Table: 1218# REF-NEXT: - Index: 11219# REF-NEXT: Kind: TABLE220# REF-NEXT: Name: __indirect_function_table221# REF-NEXT: Flags: [ UNDEFINED, NO_STRIP ]222# REF-NEXT: Table: 0223# CHECK-NEXT: SegmentInfo:224# CHECK-NEXT: - Index: 0225# CHECK-NEXT: Name: .rodata.hidden_data226# CHECK-NEXT: Alignment: 0227# CHECK-NEXT: Flags: [ ]228# CHECK-NEXT: ...229