1# RUN: yaml2obj %s | llvm-readobj --symbols - | FileCheck %s 2 3# Test symbols with custom import module and name attributes. 4 5--- !WASM 6FileHeader: 7 Version: 0x00000001 8Sections: 9 - Type: TYPE 10 Signatures: 11 - Index: 0 12 ParamTypes: [] 13 ReturnTypes: 14 - I32 15 - Index: 1 16 ParamTypes: [] 17 ReturnTypes: [] 18 - Type: IMPORT 19 Imports: 20 - Module: env 21 Field: __linear_memory 22 Kind: MEMORY 23 Memory: 24 Minimum: 0x00000000 25 - Module: env 26 Field: __indirect_function_table 27 Kind: TABLE 28 Table: 29 Index: 0 30 ElemType: FUNCREF 31 Limits: 32 Minimum: 0x00000000 33 - Module: red 34 Field: foo 35 Kind: FUNCTION 36 SigIndex: 1 37 - Module: env 38 Field: green 39 Kind: FUNCTION 40 SigIndex: 1 41 - Module: blue 42 Field: purple 43 Kind: FUNCTION 44 SigIndex: 1 45 - Type: FUNCTION 46 FunctionTypes: [ 0 ] 47 - Type: CODE 48 Relocations: 49 - Type: R_WASM_FUNCTION_INDEX_LEB 50 Index: 1 51 Offset: 0x00000004 52 - Type: R_WASM_FUNCTION_INDEX_LEB 53 Index: 2 54 Offset: 0x0000000A 55 - Type: R_WASM_FUNCTION_INDEX_LEB 56 Index: 3 57 Offset: 0x00000010 58 Functions: 59 - Index: 3 60 Locals: [] 61 Body: 10808080800010818080800010828080800041000B 62 - Type: CUSTOM 63 Name: linking 64 Version: 2 65 SymbolTable: 66 - Index: 0 67 Kind: FUNCTION 68 Name: test 69 Flags: [ VISIBILITY_HIDDEN ] 70 Function: 3 71 - Index: 1 72 Kind: FUNCTION 73 Name: foo 74 Flags: [ UNDEFINED ] 75 Function: 0 76 - Index: 2 77 Kind: FUNCTION 78 Name: bar 79 Flags: [ UNDEFINED, EXPLICIT_NAME ] 80 Function: 1 81 - Index: 3 82 Kind: FUNCTION 83 Name: qux 84 Flags: [ UNDEFINED, EXPLICIT_NAME ] 85 Function: 2 86 - Type: CUSTOM 87 Name: producers 88 Tools: 89 - Name: clang 90 Version: '9.0.0 (trunk 359436)' 91... 92 93# CHECK: Format: WASM 94# CHECK-NEXT: Arch: wasm32 95# CHECK-NEXT: AddressSize: 32bit 96# CHECK-NEXT: Symbols [ 97# CHECK-NEXT: Symbol { 98# CHECK-NEXT: Name: test 99# CHECK-NEXT: Type: FUNCTION (0x0) 100# CHECK-NEXT: Flags [ (0x4) 101# CHECK-NEXT: VISIBILITY_HIDDEN (0x4) 102# CHECK-NEXT: ] 103# CHECK-NEXT: ElementIndex: 0x3 104# CHECK-NEXT: } 105# CHECK-NEXT: Symbol { 106# CHECK-NEXT: Name: foo 107# CHECK-NEXT: Type: FUNCTION (0x0) 108# CHECK-NEXT: Flags [ (0x10) 109# CHECK-NEXT: UNDEFINED (0x10) 110# CHECK-NEXT: ] 111# CHECK-NEXT: ImportModule: red 112# CHECK-NEXT: ElementIndex: 0x0 113# CHECK-NEXT: } 114# CHECK-NEXT: Symbol { 115# CHECK-NEXT: Name: bar 116# CHECK-NEXT: Type: FUNCTION (0x0) 117# CHECK-NEXT: Flags [ (0x50) 118# CHECK-NEXT: EXPLICIT_NAME (0x40) 119# CHECK-NEXT: UNDEFINED (0x10) 120# CHECK-NEXT: ] 121# CHECK-NEXT: ImportName: green 122# CHECK-NEXT: ImportModule: env 123# CHECK-NEXT: ElementIndex: 0x1 124# CHECK-NEXT: } 125# CHECK-NEXT: Symbol { 126# CHECK-NEXT: Name: qux 127# CHECK-NEXT: Type: FUNCTION (0x0) 128# CHECK-NEXT: Flags [ (0x50) 129# CHECK-NEXT: EXPLICIT_NAME (0x40) 130# CHECK-NEXT: UNDEFINED (0x10) 131# CHECK-NEXT: ] 132# CHECK-NEXT: ImportName: purple 133# CHECK-NEXT: ImportModule: blue 134# CHECK-NEXT: ElementIndex: 0x2 135# CHECK-NEXT: } 136# CHECK-NEXT: ] 137