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