xref: /llvm-project/llvm/test/tools/llvm-lib/arm64ec-implib.test (revision c9d12664f2f967ec170ed16d9a57af2f48e832c8)
1bf0534e8SJacek CabanTest creating ARM64EC importlib.
2bf0534e8SJacek Caban
3bf0534e8SJacek CabanRUN: split-file %s %t.dir && cd %t.dir
4bf0534e8SJacek CabanRUN: llvm-lib -machine:arm64ec -def:test.def -out:test.lib
5bf0534e8SJacek Caban
6bf0534e8SJacek CabanRUN: llvm-nm --print-armap test.lib | FileCheck -check-prefix=ARMAP %s
7bf0534e8SJacek Caban
880fcf486SJacek CabanARMAP:      Archive map
9bf0534e8SJacek CabanARMAP-NEXT: __IMPORT_DESCRIPTOR_test in test.dll
10bf0534e8SJacek CabanARMAP-NEXT: __NULL_IMPORT_DESCRIPTOR in test.dll
1180fcf486SJacek CabanARMAP-NEXT: test_NULL_THUNK_DATA in test.dll
1280fcf486SJacek CabanARMAP-EMPTY:
1380fcf486SJacek CabanARMAP-NEXT: Archive EC map
1433c6b77dSJacek CabanARMAP-NEXT: #expname in test.dll
1533c6b77dSJacek CabanARMAP-NEXT: #funcexp in test.dll
1633c6b77dSJacek CabanARMAP-NEXT: #mangledfunc in test.dll
17*c9d12664SJacek CabanARMAP-NEXT: #manglednonamefunc in test.dll
18*c9d12664SJacek CabanARMAP-NEXT: #nonamefunc in test.dll
1933c6b77dSJacek CabanARMAP-NEXT: ?test_cpp_func@@$$hYAHPEAX@Z in test.dll
2033c6b77dSJacek CabanARMAP-NEXT: ?test_cpp_func@@YAHPEAX@Z in test.dll
211a6ec906SDaniel PaolielloARMAP-NEXT: __IMPORT_DESCRIPTOR_test in test.dll
221a6ec906SDaniel PaolielloARMAP-NEXT: __NULL_IMPORT_DESCRIPTOR in test.dll
2333c6b77dSJacek CabanARMAP-NEXT: __imp_?test_cpp_func@@YAHPEAX@Z in test.dll
2433c6b77dSJacek CabanARMAP-NEXT: __imp_aux_?test_cpp_func@@YAHPEAX@Z in test.dll
2533c6b77dSJacek CabanARMAP-NEXT: __imp_aux_expname in test.dll
2633c6b77dSJacek CabanARMAP-NEXT: __imp_aux_funcexp in test.dll
2733c6b77dSJacek CabanARMAP-NEXT: __imp_aux_mangledfunc in test.dll
28*c9d12664SJacek CabanARMAP-NEXT: __imp_aux_manglednonamefunc in test.dll
29*c9d12664SJacek CabanARMAP-NEXT: __imp_aux_nonamefunc in test.dll
30bf0534e8SJacek CabanARMAP-NEXT: __imp_dataexp in test.dll
3133c6b77dSJacek CabanARMAP-NEXT: __imp_expname in test.dll
32bf0534e8SJacek CabanARMAP-NEXT: __imp_funcexp in test.dll
3333c6b77dSJacek CabanARMAP-NEXT: __imp_mangledfunc in test.dll
34*c9d12664SJacek CabanARMAP-NEXT: __imp_manglednonamefunc in test.dll
35*c9d12664SJacek CabanARMAP-NEXT: __imp_nonamefunc in test.dll
3633c6b77dSJacek CabanARMAP-NEXT: expname in test.dll
37bf0534e8SJacek CabanARMAP-NEXT: funcexp in test.dll
3833c6b77dSJacek CabanARMAP-NEXT: mangledfunc in test.dll
39*c9d12664SJacek CabanARMAP-NEXT: manglednonamefunc in test.dll
40*c9d12664SJacek CabanARMAP-NEXT: nonamefunc in test.dll
411a6ec906SDaniel PaolielloARMAP-NEXT: test_NULL_THUNK_DATA in test.dll
42bf0534e8SJacek Caban
43bf0534e8SJacek CabanRUN: llvm-readobj test.lib | FileCheck -check-prefix=READOBJ %s
44bf0534e8SJacek Caban
458ecc377cSJacek CabanREADOBJ:      File: test{{.*}}.lib(test.dll)
4680fcf486SJacek CabanREADOBJ-NEXT: Format: COFF-ARM64{{$}}
47bf0534e8SJacek CabanREADOBJ-NEXT: Arch: aarch64
48bf0534e8SJacek CabanREADOBJ-NEXT: AddressSize: 64bit
49bf0534e8SJacek CabanREADOBJ-EMPTY:
508ecc377cSJacek CabanREADOBJ-NEXT: File: test{{.*}}.lib(test.dll)
5180fcf486SJacek CabanREADOBJ-NEXT: Format: COFF-ARM64{{$}}
52bf0534e8SJacek CabanREADOBJ-NEXT: Arch: aarch64
53bf0534e8SJacek CabanREADOBJ-NEXT: AddressSize: 64bit
54bf0534e8SJacek CabanREADOBJ-EMPTY:
558ecc377cSJacek CabanREADOBJ-NEXT: File: test{{.*}}.lib(test.dll)
5680fcf486SJacek CabanREADOBJ-NEXT: Format: COFF-ARM64{{$}}
57bf0534e8SJacek CabanREADOBJ-NEXT: Arch: aarch64
58bf0534e8SJacek CabanREADOBJ-NEXT: AddressSize: 64bit
59bf0534e8SJacek CabanREADOBJ-EMPTY:
60bf0534e8SJacek CabanREADOBJ-NEXT: File: test.dll
61b26bfcc1SJacek CabanREADOBJ-NEXT: Format: COFF-import-file-ARM64EC
62bf0534e8SJacek CabanREADOBJ-NEXT: Type: code
6333c6b77dSJacek CabanREADOBJ-NEXT: Name type: export as
64a2e5287dSJacek CabanREADOBJ-NEXT: Export name: funcexp
65bf0534e8SJacek CabanREADOBJ-NEXT: Symbol: __imp_funcexp
66bf0534e8SJacek CabanREADOBJ-NEXT: Symbol: funcexp
6733c6b77dSJacek CabanREADOBJ-NEXT: Symbol: __imp_aux_funcexp
6833c6b77dSJacek CabanREADOBJ-NEXT: Symbol: #funcexp
6933c6b77dSJacek CabanREADOBJ-EMPTY:
7033c6b77dSJacek CabanREADOBJ-NEXT: File: test.dll
7133c6b77dSJacek CabanREADOBJ-NEXT: Format: COFF-import-file-ARM64EC
7233c6b77dSJacek CabanREADOBJ-NEXT: Type: code
7333c6b77dSJacek CabanREADOBJ-NEXT: Name type: export as
7433c6b77dSJacek CabanREADOBJ-NEXT: Export name: mangledfunc
7533c6b77dSJacek CabanREADOBJ-NEXT: Symbol: __imp_mangledfunc
7633c6b77dSJacek CabanREADOBJ-NEXT: Symbol: mangledfunc
7733c6b77dSJacek CabanREADOBJ-NEXT: Symbol: __imp_aux_mangledfunc
7833c6b77dSJacek CabanREADOBJ-NEXT: Symbol: #mangledfunc
7933c6b77dSJacek CabanREADOBJ-EMPTY:
8033c6b77dSJacek CabanREADOBJ-NEXT: File: test.dll
8133c6b77dSJacek CabanREADOBJ-NEXT: Format: COFF-import-file-ARM64EC
8233c6b77dSJacek CabanREADOBJ-NEXT: Type: code
8333c6b77dSJacek CabanREADOBJ-NEXT: Name type: export as
8433c6b77dSJacek CabanREADOBJ-NEXT: Export name: ?test_cpp_func@@YAHPEAX@Z
8533c6b77dSJacek CabanREADOBJ-NEXT: Symbol: __imp_?test_cpp_func@@YAHPEAX@Z
8633c6b77dSJacek CabanREADOBJ-NEXT: Symbol: ?test_cpp_func@@YAHPEAX@Z
8733c6b77dSJacek CabanREADOBJ-NEXT: Symbol: __imp_aux_?test_cpp_func@@YAHPEAX@Z
8833c6b77dSJacek CabanREADOBJ-NEXT: Symbol: ?test_cpp_func@@$$hYAHPEAX@Z
8933c6b77dSJacek CabanREADOBJ-EMPTY:
9033c6b77dSJacek CabanREADOBJ-NEXT: File: test.dll
9133c6b77dSJacek CabanREADOBJ-NEXT: Format: COFF-import-file-ARM64EC
9233c6b77dSJacek CabanREADOBJ-NEXT: Type: code
9333c6b77dSJacek CabanREADOBJ-NEXT: Name type: export as
9433c6b77dSJacek CabanREADOBJ-NEXT: Export name: expname
9533c6b77dSJacek CabanREADOBJ-NEXT: Symbol: __imp_expname
9633c6b77dSJacek CabanREADOBJ-NEXT: Symbol: expname
9733c6b77dSJacek CabanREADOBJ-NEXT: Symbol: __imp_aux_expname
9833c6b77dSJacek CabanREADOBJ-NEXT: Symbol: #expname
99bf0534e8SJacek CabanREADOBJ-EMPTY:
100bf0534e8SJacek CabanREADOBJ-NEXT: File: test.dll
101b26bfcc1SJacek CabanREADOBJ-NEXT: Format: COFF-import-file-ARM64EC
102bf0534e8SJacek CabanREADOBJ-NEXT: Type: data
103bf0534e8SJacek CabanREADOBJ-NEXT: Name type: name
104a2e5287dSJacek CabanREADOBJ-NEXT: Export name: dataexp
105bf0534e8SJacek CabanREADOBJ-NEXT: Symbol: __imp_dataexp
106*c9d12664SJacek CabanREADOBJ-EMPTY:
107*c9d12664SJacek CabanREADOBJ-NEXT: File: test.dll
108*c9d12664SJacek CabanREADOBJ-NEXT: Format: COFF-import-file-ARM64EC
109*c9d12664SJacek CabanREADOBJ-NEXT: Type: code
110*c9d12664SJacek CabanREADOBJ-NEXT: Name type: ordinal
111*c9d12664SJacek CabanREADOBJ-NEXT: Symbol: __imp_nonamefunc
112*c9d12664SJacek CabanREADOBJ-NEXT: Symbol: nonamefunc
113*c9d12664SJacek CabanREADOBJ-NEXT: Symbol: __imp_aux_nonamefunc
114*c9d12664SJacek CabanREADOBJ-NEXT: Symbol: #nonamefunc
115*c9d12664SJacek CabanREADOBJ-EMPTY:
116*c9d12664SJacek CabanREADOBJ-NEXT: File: test.dll
117*c9d12664SJacek CabanREADOBJ-NEXT: Format: COFF-import-file-ARM64EC
118*c9d12664SJacek CabanREADOBJ-NEXT: Type: code
119*c9d12664SJacek CabanREADOBJ-NEXT: Name type: ordinal
120*c9d12664SJacek CabanREADOBJ-NEXT: Symbol: __imp_manglednonamefunc
121*c9d12664SJacek CabanREADOBJ-NEXT: Symbol: manglednonamefunc
122*c9d12664SJacek CabanREADOBJ-NEXT: Symbol: __imp_aux_manglednonamefunc
123*c9d12664SJacek CabanREADOBJ-NEXT: Symbol: #manglednonamefunc
124*c9d12664SJacek Caban
125bf0534e8SJacek Caban
1268ecc377cSJacek CabanUsing -machine:arm64x gives the same output.
1278ecc377cSJacek CabanRUN: llvm-lib -machine:arm64x -def:test.def -out:testx.lib
1288ecc377cSJacek CabanRUN: llvm-nm --print-armap testx.lib | FileCheck -check-prefix=ARMAP %s
1298ecc377cSJacek CabanRUN: llvm-readobj testx.lib | FileCheck -check-prefix=READOBJ %s
1308ecc377cSJacek Caban
131bf0534e8SJacek CabanCreating a new lib containing the existing lib:
132bf0534e8SJacek CabanRUN: llvm-lib -machine:arm64ec test.lib -out:test2.lib
133bf0534e8SJacek CabanRUN: llvm-nm --print-armap test2.lib | FileCheck -check-prefix=ARMAP %s
134bf0534e8SJacek Caban
13533c6b77dSJacek Caban
136a38152e2SJacek CabanRUN: llvm-lib -machine:arm64ec -def:test.def -defArm64Native:test.def -out:testx.lib
137a38152e2SJacek Caban
138a38152e2SJacek CabanRUN: llvm-nm --print-armap testx.lib | FileCheck -check-prefix=ARMAPX %s
139a38152e2SJacek Caban
140a38152e2SJacek CabanARMAPX:      Archive map
141a38152e2SJacek CabanARMAPX-NEXT: #mangledfunc in test.dll
142*c9d12664SJacek CabanARMAPX-NEXT: #manglednonamefunc in test.dll
143a38152e2SJacek CabanARMAPX-NEXT: ?test_cpp_func@@YAHPEAX@Z in test.dll
144a38152e2SJacek CabanARMAPX-NEXT: __IMPORT_DESCRIPTOR_test in test.dll
145a38152e2SJacek CabanARMAPX-NEXT: __NULL_IMPORT_DESCRIPTOR in test.dll
146a38152e2SJacek CabanARMAPX-NEXT: __imp_#mangledfunc in test.dll
147*c9d12664SJacek CabanARMAPX-NEXT: __imp_#manglednonamefunc in test.dll
148a38152e2SJacek CabanARMAPX-NEXT: __imp_?test_cpp_func@@YAHPEAX@Z in test.dll
149a38152e2SJacek CabanARMAPX-NEXT: __imp_dataexp in test.dll
150a38152e2SJacek CabanARMAPX-NEXT: __imp_expname in test.dll
151a38152e2SJacek CabanARMAPX-NEXT: __imp_funcexp in test.dll
152*c9d12664SJacek CabanARMAPX-NEXT: __imp_nonamefunc in test.dll
153a38152e2SJacek CabanARMAPX-NEXT: expname in test.dll
154a38152e2SJacek CabanARMAPX-NEXT: funcexp in test.dll
155*c9d12664SJacek CabanARMAPX-NEXT: nonamefunc in test.dll
156a38152e2SJacek CabanARMAPX-NEXT: test_NULL_THUNK_DATA in test.dll
157a38152e2SJacek CabanARMAPX-EMPTY:
158a38152e2SJacek CabanARMAPX-NEXT: Archive EC map
159a38152e2SJacek CabanARMAPX-NEXT: #expname in test.dll
160a38152e2SJacek CabanARMAPX-NEXT: #funcexp in test.dll
161a38152e2SJacek CabanARMAPX-NEXT: #mangledfunc in test.dll
162*c9d12664SJacek CabanARMAPX-NEXT: #manglednonamefunc in test.dll
163*c9d12664SJacek CabanARMAPX-NEXT: #nonamefunc in test.dll
164a38152e2SJacek CabanARMAPX-NEXT: ?test_cpp_func@@$$hYAHPEAX@Z in test.dll
165a38152e2SJacek CabanARMAPX-NEXT: ?test_cpp_func@@YAHPEAX@Z in test.dll
1661a6ec906SDaniel PaolielloARMAPX-NEXT: __IMPORT_DESCRIPTOR_test in test.dll
1671a6ec906SDaniel PaolielloARMAPX-NEXT: __NULL_IMPORT_DESCRIPTOR in test.dll
168a38152e2SJacek CabanARMAPX-NEXT: __imp_?test_cpp_func@@YAHPEAX@Z in test.dll
169a38152e2SJacek CabanARMAPX-NEXT: __imp_aux_?test_cpp_func@@YAHPEAX@Z in test.dll
170a38152e2SJacek CabanARMAPX-NEXT: __imp_aux_expname in test.dll
171a38152e2SJacek CabanARMAPX-NEXT: __imp_aux_funcexp in test.dll
172a38152e2SJacek CabanARMAPX-NEXT: __imp_aux_mangledfunc in test.dll
173*c9d12664SJacek CabanARMAPX-NEXT: __imp_aux_manglednonamefunc in test.dll
174*c9d12664SJacek CabanARMAPX-NEXT: __imp_aux_nonamefunc in test.dll
175a38152e2SJacek CabanARMAPX-NEXT: __imp_dataexp in test.dll
176a38152e2SJacek CabanARMAPX-NEXT: __imp_expname in test.dll
177a38152e2SJacek CabanARMAPX-NEXT: __imp_funcexp in test.dll
178a38152e2SJacek CabanARMAPX-NEXT: __imp_mangledfunc in test.dll
179*c9d12664SJacek CabanARMAPX-NEXT: __imp_manglednonamefunc in test.dll
180*c9d12664SJacek CabanARMAPX-NEXT: __imp_nonamefunc in test.dll
181a38152e2SJacek CabanARMAPX-NEXT: expname in test.dll
182a38152e2SJacek CabanARMAPX-NEXT: funcexp in test.dll
183a38152e2SJacek CabanARMAPX-NEXT: mangledfunc in test.dll
184*c9d12664SJacek CabanARMAPX-NEXT: manglednonamefunc in test.dll
185*c9d12664SJacek CabanARMAPX-NEXT: nonamefunc in test.dll
1861a6ec906SDaniel PaolielloARMAPX-NEXT: test_NULL_THUNK_DATA in test.dll
187a38152e2SJacek Caban
188a38152e2SJacek CabanRUN: llvm-readobj testx.lib | FileCheck -check-prefix=READOBJX %s
189a38152e2SJacek Caban
190a38152e2SJacek CabanREADOBJX:      File: testx.lib(test.dll)
191a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-ARM64
192a38152e2SJacek CabanREADOBJX-NEXT: Arch: aarch64
193a38152e2SJacek CabanREADOBJX-NEXT: AddressSize: 64bit
194a38152e2SJacek CabanREADOBJX-EMPTY:
195a38152e2SJacek CabanREADOBJX-NEXT: File: testx.lib(test.dll)
196a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-ARM64
197a38152e2SJacek CabanREADOBJX-NEXT: Arch: aarch64
198a38152e2SJacek CabanREADOBJX-NEXT: AddressSize: 64bit
199a38152e2SJacek CabanREADOBJX-EMPTY:
200a38152e2SJacek CabanREADOBJX-NEXT: File: testx.lib(test.dll)
201a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-ARM64
202a38152e2SJacek CabanREADOBJX-NEXT: Arch: aarch64
203a38152e2SJacek CabanREADOBJX-NEXT: AddressSize: 64bit
204a38152e2SJacek CabanREADOBJX-EMPTY:
205a38152e2SJacek CabanREADOBJX-NEXT: File: test.dll
206a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64EC
207a38152e2SJacek CabanREADOBJX-NEXT: Type: code
208a38152e2SJacek CabanREADOBJX-NEXT: Name type: export as
209a38152e2SJacek CabanREADOBJX-NEXT: Export name: funcexp
210a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_funcexp
211a38152e2SJacek CabanREADOBJX-NEXT: Symbol: funcexp
212a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_aux_funcexp
213a38152e2SJacek CabanREADOBJX-NEXT: Symbol: #funcexp
214a38152e2SJacek CabanREADOBJX-EMPTY:
215a38152e2SJacek CabanREADOBJX-NEXT: File: test.dll
216a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64EC
217a38152e2SJacek CabanREADOBJX-NEXT: Type: code
218a38152e2SJacek CabanREADOBJX-NEXT: Name type: export as
219a38152e2SJacek CabanREADOBJX-NEXT: Export name: mangledfunc
220a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_mangledfunc
221a38152e2SJacek CabanREADOBJX-NEXT: Symbol: mangledfunc
222a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_aux_mangledfunc
223a38152e2SJacek CabanREADOBJX-NEXT: Symbol: #mangledfunc
224a38152e2SJacek CabanREADOBJX-EMPTY:
225a38152e2SJacek CabanREADOBJX-NEXT: File: test.dll
226a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64EC
227a38152e2SJacek CabanREADOBJX-NEXT: Type: code
228a38152e2SJacek CabanREADOBJX-NEXT: Name type: export as
229a38152e2SJacek CabanREADOBJX-NEXT: Export name: ?test_cpp_func@@YAHPEAX@Z
230a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_?test_cpp_func@@YAHPEAX@Z
231a38152e2SJacek CabanREADOBJX-NEXT: Symbol: ?test_cpp_func@@YAHPEAX@Z
232a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_aux_?test_cpp_func@@YAHPEAX@Z
233a38152e2SJacek CabanREADOBJX-NEXT: Symbol: ?test_cpp_func@@$$hYAHPEAX@Z
234a38152e2SJacek CabanREADOBJX-EMPTY:
235a38152e2SJacek CabanREADOBJX-NEXT: File: test.dll
236a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64EC
237a38152e2SJacek CabanREADOBJX-NEXT: Type: code
238a38152e2SJacek CabanREADOBJX-NEXT: Name type: export as
239a38152e2SJacek CabanREADOBJX-NEXT: Export name: expname
240a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_expname
241a38152e2SJacek CabanREADOBJX-NEXT: Symbol: expname
242a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_aux_expname
243a38152e2SJacek CabanREADOBJX-NEXT: Symbol: #expname
244a38152e2SJacek CabanREADOBJX-EMPTY:
245a38152e2SJacek CabanREADOBJX-NEXT: File: test.dll
246a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64EC
247a38152e2SJacek CabanREADOBJX-NEXT: Type: data
248a38152e2SJacek CabanREADOBJX-NEXT: Name type: name
249a38152e2SJacek CabanREADOBJX-NEXT: Export name: dataexp
250a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_dataexp
251a38152e2SJacek CabanREADOBJX-EMPTY:
252a38152e2SJacek CabanREADOBJX-NEXT: File: test.dll
253*c9d12664SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64EC
254*c9d12664SJacek CabanREADOBJX-NEXT: Type: code
255*c9d12664SJacek CabanREADOBJX-NEXT: Name type: ordinal
256*c9d12664SJacek CabanREADOBJX-NEXT: Symbol: __imp_nonamefunc
257*c9d12664SJacek CabanREADOBJX-NEXT: Symbol: nonamefunc
258*c9d12664SJacek CabanREADOBJX-NEXT: Symbol: __imp_aux_nonamefunc
259*c9d12664SJacek CabanREADOBJX-NEXT: Symbol: #nonamefunc
260*c9d12664SJacek CabanREADOBJX-EMPTY:
261*c9d12664SJacek CabanREADOBJX-NEXT: File: test.dll
262*c9d12664SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64EC
263*c9d12664SJacek CabanREADOBJX-NEXT: Type: code
264*c9d12664SJacek CabanREADOBJX-NEXT: Name type: ordinal
265*c9d12664SJacek CabanREADOBJX-NEXT: Symbol: __imp_manglednonamefunc
266*c9d12664SJacek CabanREADOBJX-NEXT: Symbol: manglednonamefunc
267*c9d12664SJacek CabanREADOBJX-NEXT: Symbol: __imp_aux_manglednonamefunc
268*c9d12664SJacek CabanREADOBJX-NEXT: Symbol: #manglednonamefunc
269*c9d12664SJacek CabanREADOBJX-EMPTY:
270*c9d12664SJacek CabanREADOBJX-NEXT: File: test.dll
271a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64
272a38152e2SJacek CabanREADOBJX-NEXT: Type: code
273a38152e2SJacek CabanREADOBJX-NEXT: Name type: name
274a38152e2SJacek CabanREADOBJX-NEXT: Export name: funcexp
275a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_funcexp
276a38152e2SJacek CabanREADOBJX-NEXT: Symbol: funcexp
277a38152e2SJacek CabanREADOBJX-EMPTY:
278a38152e2SJacek CabanREADOBJX-NEXT: File: test.dll
279a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64
280a38152e2SJacek CabanREADOBJX-NEXT: Type: code
281a38152e2SJacek CabanREADOBJX-NEXT: Name type: name
282a38152e2SJacek CabanREADOBJX-NEXT: Export name: #mangledfunc
283a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_#mangledfunc
284a38152e2SJacek CabanREADOBJX-NEXT: Symbol: #mangledfunc
285a38152e2SJacek CabanREADOBJX-EMPTY:
286a38152e2SJacek CabanREADOBJX-NEXT: File: test.dll
287a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64
288a38152e2SJacek CabanREADOBJX-NEXT: Type: code
289a38152e2SJacek CabanREADOBJX-NEXT: Name type: name
290a38152e2SJacek CabanREADOBJX-NEXT: Export name: ?test_cpp_func@@YAHPEAX@Z
291a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_?test_cpp_func@@YAHPEAX@Z
292a38152e2SJacek CabanREADOBJX-NEXT: Symbol: ?test_cpp_func@@YAHPEAX@Z
293a38152e2SJacek CabanREADOBJX-EMPTY:
294a38152e2SJacek CabanREADOBJX-NEXT: File: test.dll
295a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64
296a38152e2SJacek CabanREADOBJX-NEXT: Type: code
297a38152e2SJacek CabanREADOBJX-NEXT: Name type: name
298a38152e2SJacek CabanREADOBJX-NEXT: Export name: expname
299a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_expname
300a38152e2SJacek CabanREADOBJX-NEXT: Symbol: expname
301a38152e2SJacek CabanREADOBJX-EMPTY:
302a38152e2SJacek CabanREADOBJX-NEXT: File: test.dll
303a38152e2SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64
304a38152e2SJacek CabanREADOBJX-NEXT: Type: data
305a38152e2SJacek CabanREADOBJX-NEXT: Name type: name
306a38152e2SJacek CabanREADOBJX-NEXT: Export name: dataexp
307a38152e2SJacek CabanREADOBJX-NEXT: Symbol: __imp_dataexp
308*c9d12664SJacek CabanREADOBJX-EMPTY:
309*c9d12664SJacek CabanREADOBJX-NEXT: File: test.dll
310*c9d12664SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64
311*c9d12664SJacek CabanREADOBJX-NEXT: Type: code
312*c9d12664SJacek CabanREADOBJX-NEXT: Name type: ordinal
313*c9d12664SJacek CabanREADOBJX-NEXT: Symbol: __imp_nonamefunc
314*c9d12664SJacek CabanREADOBJX-NEXT: Symbol: nonamefunc
315*c9d12664SJacek CabanREADOBJX-EMPTY:
316*c9d12664SJacek CabanREADOBJX-NEXT: File: test.dll
317*c9d12664SJacek CabanREADOBJX-NEXT: Format: COFF-import-file-ARM64
318*c9d12664SJacek CabanREADOBJX-NEXT: Type: code
319*c9d12664SJacek CabanREADOBJX-NEXT: Name type: ordinal
320*c9d12664SJacek CabanREADOBJX-NEXT: Symbol: __imp_#manglednonamefunc
321*c9d12664SJacek CabanREADOBJX-NEXT: Symbol: #manglednonamefunc
322a38152e2SJacek Caban
323a38152e2SJacek Caban
324a38152e2SJacek CabanRUN: llvm-lib -machine:arm64ec -def:test.def -defArm64Native:test2.def -out:test2.lib
3258ecc377cSJacek CabanRUN: llvm-lib -machine:arm64ec -def:test.def -defArm64Native:test2.def -out:test2x.lib
326a38152e2SJacek CabanRUN: llvm-nm --print-armap test2.lib | FileCheck -check-prefix=ARMAPX2 %s
3278ecc377cSJacek CabanRUN: llvm-nm --print-armap test2x.lib | FileCheck -check-prefix=ARMAPX2 %s
328a38152e2SJacek Caban
329a38152e2SJacek CabanARMAPX2:      Archive map
330a38152e2SJacek CabanARMAPX2-NEXT: __IMPORT_DESCRIPTOR_test2 in test2.dll
331a38152e2SJacek CabanARMAPX2-NEXT: __NULL_IMPORT_DESCRIPTOR in test2.dll
332a38152e2SJacek CabanARMAPX2-NEXT: __imp_otherfunc in test2.dll
333a38152e2SJacek CabanARMAPX2-NEXT: otherfunc in test2.dll
334a38152e2SJacek CabanARMAPX2-NEXT: test2_NULL_THUNK_DATA in test2.dll
335a38152e2SJacek CabanARMAPX2-EMPTY:
336a38152e2SJacek CabanARMAPX2-NEXT: Archive EC map
337a38152e2SJacek CabanARMAPX2-NEXT: #expname in test2.dll
338a38152e2SJacek CabanARMAPX2-NEXT: #funcexp in test2.dll
339a38152e2SJacek CabanARMAPX2-NEXT: #mangledfunc in test2.dll
340*c9d12664SJacek CabanARMAPX2-NEXT: #manglednonamefunc in test2.dll
341*c9d12664SJacek CabanARMAPX2-NEXT: #nonamefunc in test2.dll
342a38152e2SJacek CabanARMAPX2-NEXT: ?test_cpp_func@@$$hYAHPEAX@Z in test2.dll
343a38152e2SJacek CabanARMAPX2-NEXT: ?test_cpp_func@@YAHPEAX@Z in test2.dll
3441a6ec906SDaniel PaolielloARMAPX2-NEXT: __IMPORT_DESCRIPTOR_test2 in test2.dll
3451a6ec906SDaniel PaolielloARMAPX2-NEXT: __NULL_IMPORT_DESCRIPTOR in test2.dll
346a38152e2SJacek CabanARMAPX2-NEXT: __imp_?test_cpp_func@@YAHPEAX@Z in test2.dll
347a38152e2SJacek CabanARMAPX2-NEXT: __imp_aux_?test_cpp_func@@YAHPEAX@Z in test2.dll
348a38152e2SJacek CabanARMAPX2-NEXT: __imp_aux_expname in test2.dll
349a38152e2SJacek CabanARMAPX2-NEXT: __imp_aux_funcexp in test2.dll
350a38152e2SJacek CabanARMAPX2-NEXT: __imp_aux_mangledfunc in test2.dll
351*c9d12664SJacek CabanARMAPX2-NEXT: __imp_aux_manglednonamefunc in test2.dll
352*c9d12664SJacek CabanARMAPX2-NEXT: __imp_aux_nonamefunc in test2.dll
353a38152e2SJacek CabanARMAPX2-NEXT: __imp_dataexp in test2.dll
354a38152e2SJacek CabanARMAPX2-NEXT: __imp_expname in test2.dll
355a38152e2SJacek CabanARMAPX2-NEXT: __imp_funcexp in test2.dll
356a38152e2SJacek CabanARMAPX2-NEXT: __imp_mangledfunc in test2.dll
357*c9d12664SJacek CabanARMAPX2-NEXT: __imp_manglednonamefunc in test2.dll
358*c9d12664SJacek CabanARMAPX2-NEXT: __imp_nonamefunc in test2.dll
359a38152e2SJacek CabanARMAPX2-NEXT: expname in test2.dll
360a38152e2SJacek CabanARMAPX2-NEXT: funcexp in test2.dll
361a38152e2SJacek CabanARMAPX2-NEXT: mangledfunc in test2.dll
362*c9d12664SJacek CabanARMAPX2-NEXT: manglednonamefunc in test2.dll
363*c9d12664SJacek CabanARMAPX2-NEXT: nonamefunc in test2.dll
3641a6ec906SDaniel PaolielloARMAPX2-NEXT: test2_NULL_THUNK_DATA in test2.dll
365a38152e2SJacek Caban
366a38152e2SJacek CabanARMAPX2:      test2.dll:
367a38152e2SJacek CabanARMAPX2:      00000000 T #funcexp
368a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T __imp_aux_funcexp
369a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T __imp_funcexp
370a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T funcexp
371a38152e2SJacek CabanARMAPX2-EMPTY:
372a38152e2SJacek CabanARMAPX2-NEXT: test2.dll:
373a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T #mangledfunc
374a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T __imp_aux_mangledfunc
375a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T __imp_mangledfunc
376a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T mangledfunc
377a38152e2SJacek CabanARMAPX2-EMPTY:
378a38152e2SJacek CabanARMAPX2-NEXT: test2.dll:
379a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T ?test_cpp_func@@$$hYAHPEAX@Z
380a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T ?test_cpp_func@@YAHPEAX@Z
381a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T __imp_?test_cpp_func@@YAHPEAX@Z
382a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T __imp_aux_?test_cpp_func@@YAHPEAX@Z
383a38152e2SJacek CabanARMAPX2-EMPTY:
384a38152e2SJacek CabanARMAPX2-NEXT: test2.dll:
385a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T #expname
386a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T __imp_aux_expname
387a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T __imp_expname
388a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T expname
389a38152e2SJacek CabanARMAPX2-EMPTY:
390a38152e2SJacek CabanARMAPX2-NEXT: test2.dll:
391a38152e2SJacek CabanARMAPX2-NEXT: 00000000 D __imp_dataexp
392a38152e2SJacek CabanARMAPX2-EMPTY:
393a38152e2SJacek CabanARMAPX2-NEXT: test2.dll:
394*c9d12664SJacek CabanARMAPX2-NEXT: 00000000 T #nonamefunc
395*c9d12664SJacek CabanARMAPX2-NEXT: 00000000 T __imp_aux_nonamefunc
396*c9d12664SJacek CabanARMAPX2-NEXT: 00000000 T __imp_nonamefunc
397*c9d12664SJacek CabanARMAPX2-NEXT: 00000000 T nonamefunc
398*c9d12664SJacek CabanARMAPX2-EMPTY:
399*c9d12664SJacek CabanARMAPX2-NEXT: test2.dll:
400*c9d12664SJacek CabanARMAPX2-NEXT: 00000000 T #manglednonamefunc
401*c9d12664SJacek CabanARMAPX2-NEXT: 00000000 T __imp_aux_manglednonamefunc
402*c9d12664SJacek CabanARMAPX2-NEXT: 00000000 T __imp_manglednonamefunc
403*c9d12664SJacek CabanARMAPX2-NEXT: 00000000 T manglednonamefunc
404*c9d12664SJacek CabanARMAPX2-EMPTY:
405*c9d12664SJacek CabanARMAPX2-NEXT: test2.dll:
406a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T __imp_otherfunc
407a38152e2SJacek CabanARMAPX2-NEXT: 00000000 T otherfunc
408a38152e2SJacek Caban
409a38152e2SJacek Caban
41033c6b77dSJacek CabanRUN: llvm-lib -machine:arm64ec -def:exportas.def -out:exportas.lib
41133c6b77dSJacek CabanRUN: llvm-nm --print-armap exportas.lib | FileCheck -check-prefix=EXPAS-ARMAP %s
41233c6b77dSJacek CabanRUN: llvm-readobj exportas.lib | FileCheck -check-prefix=EXPAS-READOBJ %s
41333c6b77dSJacek Caban
41433c6b77dSJacek CabanEXPAS-ARMAP:      Archive EC map
41533c6b77dSJacek CabanEXPAS-ARMAP-NEXT: #func1 in test.dll
41633c6b77dSJacek CabanEXPAS-ARMAP-NEXT: #func2 in test.dll
41733c6b77dSJacek CabanEXPAS-ARMAP-NEXT: #func3 in test.dll
41833c6b77dSJacek CabanEXPAS-ARMAP-NEXT: #func4 in test.dll
4191a6ec906SDaniel PaolielloEXPAS-ARMAP-NEXT: __IMPORT_DESCRIPTOR_test in test.dll
4201a6ec906SDaniel PaolielloEXPAS-ARMAP-NEXT: __NULL_IMPORT_DESCRIPTOR in test.dll
42133c6b77dSJacek CabanEXPAS-ARMAP-NEXT: __imp_aux_func1 in test.dll
42233c6b77dSJacek CabanEXPAS-ARMAP-NEXT: __imp_aux_func2 in test.dll
42333c6b77dSJacek CabanEXPAS-ARMAP-NEXT: __imp_aux_func3 in test.dll
42433c6b77dSJacek CabanEXPAS-ARMAP-NEXT: __imp_aux_func4 in test.dll
42533c6b77dSJacek CabanEXPAS-ARMAP-NEXT: __imp_data1 in test.dll
42633c6b77dSJacek CabanEXPAS-ARMAP-NEXT: __imp_data2 in test.dll
42733c6b77dSJacek CabanEXPAS-ARMAP-NEXT: __imp_func1 in test.dll
42833c6b77dSJacek CabanEXPAS-ARMAP-NEXT: __imp_func2 in test.dll
42933c6b77dSJacek CabanEXPAS-ARMAP-NEXT: __imp_func3 in test.dll
43033c6b77dSJacek CabanEXPAS-ARMAP-NEXT: __imp_func4 in test.dll
43133c6b77dSJacek CabanEXPAS-ARMAP-NEXT: func1 in test.dll
43233c6b77dSJacek CabanEXPAS-ARMAP-NEXT: func2 in test.dll
43333c6b77dSJacek CabanEXPAS-ARMAP-NEXT: func3 in test.dll
43433c6b77dSJacek CabanEXPAS-ARMAP-NEXT: func4 in test.dll
4351a6ec906SDaniel PaolielloEXPAS-ARMAP-NEXT: test_NULL_THUNK_DATA in test.dll
43633c6b77dSJacek Caban
43733c6b77dSJacek CabanEXPAS-READOBJ:      File: test.dll
43833c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC
43933c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Type: code
44033c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Name type: export as
44133c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Export name: func1
44233c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: __imp_func1
44333c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: func1
44433c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: __imp_aux_func1
44533c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: #func1
44633c6b77dSJacek CabanEXPAS-READOBJ-EMPTY:
44733c6b77dSJacek CabanEXPAS-READOBJ-NEXT: File: test.dll
44833c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC
44933c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Type: code
45033c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Name type: export as
45133c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Export name: func2
45233c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: __imp_func2
45333c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: func2
45433c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: __imp_aux_func2
45533c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: #func2
45633c6b77dSJacek CabanEXPAS-READOBJ-EMPTY:
45733c6b77dSJacek CabanEXPAS-READOBJ-NEXT: File: test.dll
45833c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC
45933c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Type: code
46033c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Name type: export as
46133c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Export name: #func3
46233c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: __imp_func3
46333c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: func3
46433c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: __imp_aux_func3
46533c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: #func3
46633c6b77dSJacek CabanEXPAS-READOBJ-EMPTY:
46733c6b77dSJacek CabanEXPAS-READOBJ-NEXT: File: test.dll
46833c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC
46933c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Type: code
47033c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Name type: export as
47133c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Export name: #func4
47233c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: __imp_func4
47333c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: func4
47433c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: __imp_aux_func4
47533c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: #func4
47633c6b77dSJacek CabanEXPAS-READOBJ-EMPTY:
47733c6b77dSJacek CabanEXPAS-READOBJ-NEXT: File: test.dll
47833c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC
47933c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Type: data
48033c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Name type: export as
48133c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Export name: #data1
48233c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: __imp_data1
48333c6b77dSJacek CabanEXPAS-READOBJ-EMPTY:
48433c6b77dSJacek CabanEXPAS-READOBJ-NEXT: File: test.dll
48533c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC
48633c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Type: data
48733c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Name type: export as
48833c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Export name: data2
48933c6b77dSJacek CabanEXPAS-READOBJ-NEXT: Symbol: __imp_data2
49033c6b77dSJacek Caban
49133c6b77dSJacek Caban
492bf0534e8SJacek Caban#--- test.def
493bf0534e8SJacek CabanLIBRARY test.dll
494bf0534e8SJacek CabanEXPORTS
495bf0534e8SJacek Caban    funcexp
49633c6b77dSJacek Caban    #mangledfunc
49733c6b77dSJacek Caban    ?test_cpp_func@@YAHPEAX@Z
49833c6b77dSJacek Caban    expname=impname
499bf0534e8SJacek Caban    dataexp DATA
500*c9d12664SJacek Caban    nonamefunc @1 NONAME
501*c9d12664SJacek Caban    #manglednonamefunc @2 NONAME
50233c6b77dSJacek Caban
503a38152e2SJacek Caban#--- test2.def
504a38152e2SJacek CabanLIBRARY test2.dll
505a38152e2SJacek CabanEXPORTS
506a38152e2SJacek Caban    otherfunc
507a38152e2SJacek Caban
50833c6b77dSJacek Caban#--- exportas.def
50933c6b77dSJacek CabanLIBRARY test.dll
51033c6b77dSJacek CabanEXPORTS
51133c6b77dSJacek Caban    #func1 EXPORTAS func1
51233c6b77dSJacek Caban    func2 EXPORTAS func2
51333c6b77dSJacek Caban    func3 EXPORTAS #func3
51433c6b77dSJacek Caban    #func4 EXPORTAS #func4
51533c6b77dSJacek Caban    data1 DATA EXPORTAS #data1
51633c6b77dSJacek Caban    #data2 DATA EXPORTAS data2
517