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