brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.0 KiB · 2b2b4ae Raw
436 lines · plain
1# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj < %s | obj2yaml | FileCheck --check-prefix=CHECK %s2# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+reference-types -filetype=obj < %s | obj2yaml | FileCheck --check-prefix=REF %s3 4# 'foo_alias()' is weak alias of function 'foo()'5# 'bar_alias' is weak alias of global variable 'bar'6# Generates two exports of the same function, one of them weak7 8.functype foo_alias () -> (i32)9 10foo:11  .hidden foo12  .globl  foo13  .functype foo () -> (i32)14  i32.const 015  end_function16 17call_direct:18  .hidden call_direct19  .globl call_direct20  .functype call_direct () -> (i32)21  call foo22  end_function23 24call_alias:25  .hidden call_alias26  .globl call_alias27  .functype call_alias () -> (i32)28  call foo_alias29  end_function30 31call_direct_ptr:32  .hidden call_direct_ptr33  .globl call_direct_ptr34  .functype call_direct_ptr () -> (i32)35  i32.const 036  i32.load direct_address37  call_indirect () -> (i32)38  end_function39 40call_alias_ptr:41  .hidden call_alias_ptr42  .globl call_alias_ptr43  .functype call_alias_ptr () -> (i32)44  i32.const 045  i32.load alias_address46  call_indirect () -> (i32)47  end_function48 49.section .data.bar,"",@50bar:51  .int32   752  .size    bar, 453  .globl   bar54  .p2align 355 56.section .data.direct_address,"",@57direct_address:58  .int32 foo59  .size  direct_address, 460  .globl direct_address61  .p2align 362 63.section .data.alias_address,"",@64alias_address:65  .int32 foo_alias66  .size  alias_address, 467  .globl alias_address68  .p2align 369 70# Define Aliases71.set foo_alias, foo72  .weak   foo_alias73  .type   foo_alias,@function74  .hidden foo_alias75 76.set bar_alias, bar77  .weak   bar_alias78  .hidden bar_alias79 80# CHECK:        - Type:            TYPE81# CHECK-NEXT:     Signatures:82# CHECK-NEXT:       - Index:           083# CHECK-NEXT:         ParamTypes:      []84# CHECK-NEXT:         ReturnTypes:85# CHECK-NEXT:           - I3286# CHECK-NEXT:   - Type:            IMPORT87# CHECK-NEXT:     Imports:88# CHECK-NEXT:       - Module:          env89# CHECK-NEXT:         Field:           __linear_memory90# CHECK-NEXT:         Kind:            MEMORY91# CHECK-NEXT:         Memory:92# CHECK-NEXT:           Minimum:         0x193# CHECK-NEXT:       - Module:          env94# CHECK-NEXT:         Field:           __indirect_function_table95# CHECK-NEXT:         Kind:            TABLE96# CHECK-NEXT:         Table:97# CHECK-NEXT:           Index:           098# CHECK-NEXT:           ElemType:        FUNCREF99# CHECK-NEXT:           Limits:100# CHECK-NEXT:             Minimum:         0x1101# CHECK-NEXT:   - Type:            FUNCTION102# CHECK-NEXT:     FunctionTypes:   [ 0, 0, 0, 0, 0 ]103# CHECK-NEXT:   - Type:            ELEM104# CHECK-NEXT:     Segments:105# CHECK-NEXT:       - Offset:106# CHECK-NEXT:           Opcode:          I32_CONST107# CHECK-NEXT:           Value:           1108# CHECK-NEXT:         Functions:       [ 0 ]109# CHECK-NEXT:   - Type:            DATACOUNT110# CHECK-NEXT:     Count:           3111# CHECK-NEXT:   - Type:            CODE112# CHECK-NEXT:     Relocations:113# CHECK-NEXT:       - Type:            R_WASM_FUNCTION_INDEX_LEB114# CHECK-NEXT:         Index:           0115# CHECK-NEXT:         Offset:          0x9116# CHECK-NEXT:       - Type:            R_WASM_FUNCTION_INDEX_LEB117# CHECK-NEXT:         Index:           3118# CHECK-NEXT:         Offset:          0x12119# CHECK-NEXT:       - Type:            R_WASM_MEMORY_ADDR_LEB120# CHECK-NEXT:         Index:           5121# CHECK-NEXT:         Offset:          0x1E122# CHECK-NEXT:       - Type:            R_WASM_TYPE_INDEX_LEB123# CHECK-NEXT:         Index:           0124# CHECK-NEXT:         Offset:          0x24125# CHECK-NEXT:       - Type:            R_WASM_MEMORY_ADDR_LEB126# CHECK-NEXT:         Index:           7127# CHECK-NEXT:         Offset:          0x31128# CHECK-NEXT:       - Type:            R_WASM_TYPE_INDEX_LEB129# CHECK-NEXT:         Index:           0130# CHECK-NEXT:         Offset:          0x37131# CHECK-NEXT:     Functions:132# CHECK-NEXT:       - Index:           0133# CHECK-NEXT:         Locals:          []134# CHECK-NEXT:         Body:            41000B135# CHECK-NEXT:       - Index:           1136# CHECK-NEXT:         Locals:          []137# CHECK-NEXT:         Body:            1080808080000B138# CHECK-NEXT:       - Index:           2139# CHECK-NEXT:         Locals:          []140# CHECK-NEXT:         Body:            1080808080000B141# CHECK-NEXT:       - Index:           3142# CHECK-NEXT:         Locals:          []143# CHECK-NEXT:         Body:            410028028880808000118080808000000B144# CHECK-NEXT:       - Index:           4145# CHECK-NEXT:         Locals:          []146# CHECK-NEXT:         Body:            410028029080808000118080808000000B147# CHECK-NEXT:   - Type:            DATA148# CHECK-NEXT:     Relocations:149# CHECK-NEXT:       - Type:            R_WASM_TABLE_INDEX_I32150# CHECK-NEXT:         Index:           0151# CHECK-NEXT:         Offset:          0x13152# CHECK-NEXT:       - Type:            R_WASM_TABLE_INDEX_I32153# CHECK-NEXT:         Index:           3154# CHECK-NEXT:         Offset:          0x20155# CHECK-NEXT:     Segments:156# CHECK-NEXT:       - SectionOffset:   6157# CHECK-NEXT:         InitFlags:       0158# CHECK-NEXT:         Offset:159# CHECK-NEXT:           Opcode:          I32_CONST160# CHECK-NEXT:           Value:           0161# CHECK-NEXT:         Content:         '0700000000000000'162# CHECK-NEXT:       - SectionOffset:   19163# CHECK-NEXT:         InitFlags:       0164# CHECK-NEXT:         Offset:165# CHECK-NEXT:           Opcode:          I32_CONST166# CHECK-NEXT:           Value:           8167# CHECK-NEXT:         Content:         '0100000000000000'168# CHECK-NEXT:       - SectionOffset:   32169# CHECK-NEXT:         InitFlags:       0170# CHECK-NEXT:         Offset:171# CHECK-NEXT:           Opcode:          I32_CONST172# CHECK-NEXT:           Value:           16173# CHECK-NEXT:         Content:         '0100000000000000'174# CHECK-NEXT:   - Type:            CUSTOM175# CHECK-NEXT:     Name:            linking176# CHECK-NEXT:     Version:         2177# CHECK-NEXT:     SymbolTable:178# CHECK-NEXT:       - Index:           0179# CHECK-NEXT:         Kind:            FUNCTION180# CHECK-NEXT:         Name:            foo181# CHECK-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]182# CHECK-NEXT:         Function:        0183# CHECK-NEXT:       - Index:           1184# CHECK-NEXT:         Kind:            FUNCTION185# CHECK-NEXT:         Name:            call_direct186# CHECK-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]187# CHECK-NEXT:         Function:        1188# CHECK-NEXT:       - Index:           2189# CHECK-NEXT:         Kind:            FUNCTION190# CHECK-NEXT:         Name:            call_alias191# CHECK-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]192# CHECK-NEXT:         Function:        2193# CHECK-NEXT:       - Index:           3194# CHECK-NEXT:         Kind:            FUNCTION195# CHECK-NEXT:         Name:            foo_alias196# CHECK-NEXT:         Flags:           [ BINDING_WEAK, VISIBILITY_HIDDEN, NO_STRIP ]197# CHECK-NEXT:         Function:        0198# CHECK-NEXT:       - Index:           4199# CHECK-NEXT:         Kind:            FUNCTION200# CHECK-NEXT:         Name:            call_direct_ptr201# CHECK-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]202# CHECK-NEXT:         Function:        3203# CHECK-NEXT:       - Index:           5204# CHECK-NEXT:         Kind:            DATA205# CHECK-NEXT:         Name:            direct_address206# CHECK-NEXT:         Flags:           [  ]207# CHECK-NEXT:         Segment:         1208# CHECK-NEXT:         Size:            4209# CHECK-NEXT:       - Index:           6210# CHECK-NEXT:         Kind:            FUNCTION211# CHECK-NEXT:         Name:            call_alias_ptr212# CHECK-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]213# CHECK-NEXT:         Function:        4214# CHECK-NEXT:       - Index:           7215# CHECK-NEXT:         Kind:            DATA216# CHECK-NEXT:         Name:            alias_address217# CHECK-NEXT:         Flags:           [  ]218# CHECK-NEXT:         Segment:         2219# CHECK-NEXT:         Size:            4220# CHECK-NEXT:       - Index:           8221# CHECK-NEXT:         Kind:            DATA222# CHECK-NEXT:         Name:            bar223# CHECK-NEXT:         Flags:           [  ]224# CHECK-NEXT:         Segment:         0225# CHECK-NEXT:         Size:            4226# CHECK-NEXT:       - Index:           9227# CHECK-NEXT:         Kind:            DATA228# CHECK-NEXT:         Name:            bar_alias229# CHECK-NEXT:         Flags:           [ BINDING_WEAK, VISIBILITY_HIDDEN, NO_STRIP ]230# CHECK-NEXT:         Segment:         0231# CHECK-NEXT:         Size:            4232# CHECK-NEXT:     SegmentInfo:233# CHECK-NEXT:       - Index:           0234# CHECK-NEXT:         Name:            .data.bar235# CHECK-NEXT:         Alignment:       3236# CHECK-NEXT:         Flags:           [  ]237# CHECK-NEXT:       - Index:           1238# CHECK-NEXT:         Name:            .data.direct_address239# CHECK-NEXT:         Alignment:       3240# CHECK-NEXT:         Flags:           [  ]241# CHECK-NEXT:       - Index:           2242# CHECK-NEXT:         Name:            .data.alias_address243# CHECK-NEXT:         Alignment:       3244# CHECK-NEXT:         Flags:           [  ]245# CHECK-NEXT: ...246 247# REF:        - Type:            TYPE248# REF-NEXT:     Signatures:249# REF-NEXT:       - Index:           0250# REF-NEXT:         ParamTypes:      []251# REF-NEXT:         ReturnTypes:252# REF-NEXT:           - I32253# REF-NEXT:   - Type:            IMPORT254# REF-NEXT:     Imports:255# REF-NEXT:       - Module:          env256# REF-NEXT:         Field:           __linear_memory257# REF-NEXT:         Kind:            MEMORY258# REF-NEXT:         Memory:259# REF-NEXT:           Minimum:         0x1260# REF-NEXT:       - Module:          env261# REF-NEXT:         Field:           __indirect_function_table262# REF-NEXT:         Kind:            TABLE263# REF-NEXT:         Table:264# REF-NEXT:           Index:           0265# REF-NEXT:           ElemType:        FUNCREF266# REF-NEXT:           Limits:267# REF-NEXT:             Minimum:         0x1268# REF-NEXT:   - Type:            FUNCTION269# REF-NEXT:     FunctionTypes:   [ 0, 0, 0, 0, 0 ]270# REF-NEXT:   - Type:            ELEM271# REF-NEXT:     Segments:272# REF-NEXT:       - Offset:273# REF-NEXT:           Opcode:          I32_CONST274# REF-NEXT:           Value:           1275# REF-NEXT:         Functions:       [ 0 ]276# REF-NEXT:   - Type:            DATACOUNT277# REF-NEXT:     Count:           3278# REF-NEXT:   - Type:            CODE279# REF-NEXT:     Relocations:280# REF-NEXT:       - Type:            R_WASM_FUNCTION_INDEX_LEB281# REF-NEXT:         Index:           0282# REF-NEXT:         Offset:          0x9283# REF-NEXT:       - Type:            R_WASM_FUNCTION_INDEX_LEB284# REF-NEXT:         Index:           3285# REF-NEXT:         Offset:          0x12286# REF-NEXT:       - Type:            R_WASM_MEMORY_ADDR_LEB287# REF-NEXT:         Index:           5288# REF-NEXT:         Offset:          0x1E289# REF-NEXT:       - Type:            R_WASM_TYPE_INDEX_LEB290# REF-NEXT:         Index:           0291# REF-NEXT:         Offset:          0x24292# REF-NEXT:       - Type:            R_WASM_TABLE_NUMBER_LEB293# REF-NEXT:         Index:           6294# REF-NEXT:         Offset:          0x29295# REF-NEXT:       - Type:            R_WASM_MEMORY_ADDR_LEB296# REF-NEXT:         Index:           8297# REF-NEXT:         Offset:          0x35298# REF-NEXT:       - Type:            R_WASM_TYPE_INDEX_LEB299# REF-NEXT:         Index:           0300# REF-NEXT:         Offset:          0x3B301# REF-NEXT:       - Type:            R_WASM_TABLE_NUMBER_LEB302# REF-NEXT:         Index:           6303# REF-NEXT:         Offset:          0x40304# REF-NEXT:     Functions:305# REF-NEXT:       - Index:           0306# REF-NEXT:         Locals:          []307# REF-NEXT:         Body:            41000B308# REF-NEXT:       - Index:           1309# REF-NEXT:         Locals:          []310# REF-NEXT:         Body:            1080808080000B311# REF-NEXT:       - Index:           2312# REF-NEXT:         Locals:          []313# REF-NEXT:         Body:            1080808080000B314# REF-NEXT:       - Index:           3315# REF-NEXT:         Locals:          []316# REF-NEXT:         Body:            41002802888080800011808080800080808080000B317# REF-NEXT:       - Index:           4318# REF-NEXT:         Locals:          []319# REF-NEXT:         Body:            41002802908080800011808080800080808080000B320# REF-NEXT:   - Type:            DATA321# REF-NEXT:     Relocations:322# REF-NEXT:       - Type:            R_WASM_TABLE_INDEX_I32323# REF-NEXT:         Index:           0324# REF-NEXT:         Offset:          0x13325# REF-NEXT:       - Type:            R_WASM_TABLE_INDEX_I32326# REF-NEXT:         Index:           3327# REF-NEXT:         Offset:          0x20328# REF-NEXT:     Segments:329# REF-NEXT:       - SectionOffset:   6330# REF-NEXT:         InitFlags:       0331# REF-NEXT:         Offset:332# REF-NEXT:           Opcode:          I32_CONST333# REF-NEXT:           Value:           0334# REF-NEXT:         Content:         '0700000000000000'335# REF-NEXT:       - SectionOffset:   19336# REF-NEXT:         InitFlags:       0337# REF-NEXT:         Offset:338# REF-NEXT:           Opcode:          I32_CONST339# REF-NEXT:           Value:           8340# REF-NEXT:         Content:         '0100000000000000'341# REF-NEXT:       - SectionOffset:   32342# REF-NEXT:         InitFlags:       0343# REF-NEXT:         Offset:344# REF-NEXT:           Opcode:          I32_CONST345# REF-NEXT:           Value:           16346# REF-NEXT:         Content:         '0100000000000000'347# REF-NEXT:   - Type:            CUSTOM348# REF-NEXT:     Name:            linking349# REF-NEXT:     Version:         2350# REF-NEXT:     SymbolTable:351# REF-NEXT:       - Index:           0352# REF-NEXT:         Kind:            FUNCTION353# REF-NEXT:         Name:            foo354# REF-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]355# REF-NEXT:         Function:        0356# REF-NEXT:       - Index:           1357# REF-NEXT:         Kind:            FUNCTION358# REF-NEXT:         Name:            call_direct359# REF-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]360# REF-NEXT:         Function:        1361# REF-NEXT:       - Index:           2362# REF-NEXT:         Kind:            FUNCTION363# REF-NEXT:         Name:            call_alias364# REF-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]365# REF-NEXT:         Function:        2366# REF-NEXT:       - Index:           3367# REF-NEXT:         Kind:            FUNCTION368# REF-NEXT:         Name:            foo_alias369# REF-NEXT:         Flags:           [ BINDING_WEAK, VISIBILITY_HIDDEN, NO_STRIP ]370# REF-NEXT:         Function:        0371# REF-NEXT:       - Index:           4372# REF-NEXT:         Kind:            FUNCTION373# REF-NEXT:         Name:            call_direct_ptr374# REF-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]375# REF-NEXT:         Function:        3376# REF-NEXT:       - Index:           5377# REF-NEXT:         Kind:            DATA378# REF-NEXT:         Name:            direct_address379# REF-NEXT:         Flags:           [  ]380# REF-NEXT:         Segment:         1381# REF-NEXT:         Size:            4382# REF-NEXT:       - Index:           6383# REF-NEXT:         Kind:            TABLE384# REF-NEXT:         Name:            __indirect_function_table385# REF-NEXT:         Flags:           [ UNDEFINED, NO_STRIP ]386# REF-NEXT:         Table:           0387# REF-NEXT:       - Index:           7388# REF-NEXT:         Kind:            FUNCTION389# REF-NEXT:         Name:            call_alias_ptr390# REF-NEXT:         Flags:           [ VISIBILITY_HIDDEN ]391# REF-NEXT:         Function:        4392# REF-NEXT:       - Index:           8393# REF-NEXT:         Kind:            DATA394# REF-NEXT:         Name:            alias_address395# REF-NEXT:         Flags:           [  ]396# REF-NEXT:         Segment:         2397# REF-NEXT:         Size:            4398# REF-NEXT:       - Index:           9399# REF-NEXT:         Kind:            DATA400# REF-NEXT:         Name:            bar401# REF-NEXT:         Flags:           [  ]402# REF-NEXT:         Segment:         0403# REF-NEXT:         Size:            4404# REF-NEXT:       - Index:           10405# REF-NEXT:         Kind:            DATA406# REF-NEXT:         Name:            bar_alias407# REF-NEXT:         Flags:           [ BINDING_WEAK, VISIBILITY_HIDDEN, NO_STRIP ]408# REF-NEXT:         Segment:         0409# REF-NEXT:         Size:            4410# REF-NEXT:     SegmentInfo:411# REF-NEXT:       - Index:           0412# REF-NEXT:         Name:            .data.bar413# REF-NEXT:         Alignment:       3414# REF-NEXT:         Flags:           [  ]415# REF-NEXT:       - Index:           1416# REF-NEXT:         Name:            .data.direct_address417# REF-NEXT:         Alignment:       3418# REF-NEXT:         Flags:           [  ]419# REF-NEXT:       - Index:           2420# REF-NEXT:         Name:            .data.alias_address421# REF-NEXT:         Alignment:       3422# REF-NEXT:         Flags:           [  ]423# REF-NEXT: ...424 425# CHECK-SYMS: SYMBOL TABLE:426# CHECK-SYMS-NEXT: 00000001 g     F CODE	.hidden foo427# CHECK-SYMS-NEXT: 00000006 g     F CODE	.hidden call_direct428# CHECK-SYMS-NEXT: 0000000f g     F CODE	.hidden call_alias429# CHECK-SYMS-NEXT: 00000001 gw    F CODE	.hidden foo_alias430# CHECK-SYMS-NEXT: 00000018 g     F CODE	.hidden call_direct_ptr431# CHECK-SYMS-NEXT: 00000008 g     O DATA	direct_address432# CHECK-SYMS-NEXT: 0000002b g     F CODE	.hidden call_alias_ptr433# CHECK-SYMS-NEXT: 00000010 g     O DATA	alias_address434# CHECK-SYMS-NEXT: 00000000 g     O DATA	bar435# CHECK-SYMS-NEXT: 00000000 gw    O DATA	.hidden bar_alias436