xref: /llvm-project/llvm/test/tools/llvm-readobj/wasm/wasm-imports.test (revision 9ac5620cb8548c0bd0150f0da68219dd3a5a657a)
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