| Test creating ARM64EC importlib. |
| |
| RUN: split-file %s %t.dir && cd %t.dir |
| RUN: llvm-lib -machine:arm64ec -def:test.def -out:test.lib |
| |
| RUN: llvm-nm --print-armap test.lib | FileCheck -check-prefix=ARMAP %s |
| |
| ARMAP: Archive map |
| ARMAP-NEXT: __IMPORT_DESCRIPTOR_test in test.dll |
| ARMAP-NEXT: __NULL_IMPORT_DESCRIPTOR in test.dll |
| ARMAP-NEXT: test_NULL_THUNK_DATA in test.dll |
| ARMAP-EMPTY: |
| ARMAP-NEXT: Archive EC map |
| ARMAP-NEXT: #expname in test.dll |
| ARMAP-NEXT: #funcexp in test.dll |
| ARMAP-NEXT: #mangledfunc in test.dll |
| ARMAP-NEXT: #manglednonamefunc in test.dll |
| ARMAP-NEXT: #nonamefunc in test.dll |
| ARMAP-NEXT: ?test_cpp_func@@$$hYAHPEAX@Z in test.dll |
| ARMAP-NEXT: ?test_cpp_func@@YAHPEAX@Z in test.dll |
| ARMAP-NEXT: __IMPORT_DESCRIPTOR_test in test.dll |
| ARMAP-NEXT: __NULL_IMPORT_DESCRIPTOR in test.dll |
| ARMAP-NEXT: __imp_?test_cpp_func@@YAHPEAX@Z in test.dll |
| ARMAP-NEXT: __imp_aux_?test_cpp_func@@YAHPEAX@Z in test.dll |
| ARMAP-NEXT: __imp_aux_expname in test.dll |
| ARMAP-NEXT: __imp_aux_funcexp in test.dll |
| ARMAP-NEXT: __imp_aux_mangledfunc in test.dll |
| ARMAP-NEXT: __imp_aux_manglednonamefunc in test.dll |
| ARMAP-NEXT: __imp_aux_nonamefunc in test.dll |
| ARMAP-NEXT: __imp_dataexp in test.dll |
| ARMAP-NEXT: __imp_expname in test.dll |
| ARMAP-NEXT: __imp_funcexp in test.dll |
| ARMAP-NEXT: __imp_mangledfunc in test.dll |
| ARMAP-NEXT: __imp_manglednonamefunc in test.dll |
| ARMAP-NEXT: __imp_nonamefunc in test.dll |
| ARMAP-NEXT: expname in test.dll |
| ARMAP-NEXT: funcexp in test.dll |
| ARMAP-NEXT: mangledfunc in test.dll |
| ARMAP-NEXT: manglednonamefunc in test.dll |
| ARMAP-NEXT: nonamefunc in test.dll |
| ARMAP-NEXT: test_NULL_THUNK_DATA in test.dll |
| |
| RUN: llvm-readobj test.lib | FileCheck -check-prefix=READOBJ %s |
| |
| READOBJ: File: test{{.*}}.lib(test.dll) |
| READOBJ-NEXT: Format: COFF-ARM64{{$}} |
| READOBJ-NEXT: Arch: aarch64 |
| READOBJ-NEXT: AddressSize: 64bit |
| READOBJ-EMPTY: |
| READOBJ-NEXT: File: test{{.*}}.lib(test.dll) |
| READOBJ-NEXT: Format: COFF-ARM64{{$}} |
| READOBJ-NEXT: Arch: aarch64 |
| READOBJ-NEXT: AddressSize: 64bit |
| READOBJ-EMPTY: |
| READOBJ-NEXT: File: test{{.*}}.lib(test.dll) |
| READOBJ-NEXT: Format: COFF-ARM64{{$}} |
| READOBJ-NEXT: Arch: aarch64 |
| READOBJ-NEXT: AddressSize: 64bit |
| READOBJ-EMPTY: |
| READOBJ-NEXT: File: test.dll |
| READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJ-NEXT: Type: code |
| READOBJ-NEXT: Name type: export as |
| READOBJ-NEXT: Export name: funcexp |
| READOBJ-NEXT: Symbol: __imp_funcexp |
| READOBJ-NEXT: Symbol: funcexp |
| READOBJ-NEXT: Symbol: __imp_aux_funcexp |
| READOBJ-NEXT: Symbol: #funcexp |
| READOBJ-EMPTY: |
| READOBJ-NEXT: File: test.dll |
| READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJ-NEXT: Type: code |
| READOBJ-NEXT: Name type: export as |
| READOBJ-NEXT: Export name: mangledfunc |
| READOBJ-NEXT: Symbol: __imp_mangledfunc |
| READOBJ-NEXT: Symbol: mangledfunc |
| READOBJ-NEXT: Symbol: __imp_aux_mangledfunc |
| READOBJ-NEXT: Symbol: #mangledfunc |
| READOBJ-EMPTY: |
| READOBJ-NEXT: File: test.dll |
| READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJ-NEXT: Type: code |
| READOBJ-NEXT: Name type: export as |
| READOBJ-NEXT: Export name: ?test_cpp_func@@YAHPEAX@Z |
| READOBJ-NEXT: Symbol: __imp_?test_cpp_func@@YAHPEAX@Z |
| READOBJ-NEXT: Symbol: ?test_cpp_func@@YAHPEAX@Z |
| READOBJ-NEXT: Symbol: __imp_aux_?test_cpp_func@@YAHPEAX@Z |
| READOBJ-NEXT: Symbol: ?test_cpp_func@@$$hYAHPEAX@Z |
| READOBJ-EMPTY: |
| READOBJ-NEXT: File: test.dll |
| READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJ-NEXT: Type: code |
| READOBJ-NEXT: Name type: export as |
| READOBJ-NEXT: Export name: expname |
| READOBJ-NEXT: Symbol: __imp_expname |
| READOBJ-NEXT: Symbol: expname |
| READOBJ-NEXT: Symbol: __imp_aux_expname |
| READOBJ-NEXT: Symbol: #expname |
| READOBJ-EMPTY: |
| READOBJ-NEXT: File: test.dll |
| READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJ-NEXT: Type: data |
| READOBJ-NEXT: Name type: name |
| READOBJ-NEXT: Export name: dataexp |
| READOBJ-NEXT: Symbol: __imp_dataexp |
| READOBJ-EMPTY: |
| READOBJ-NEXT: File: test.dll |
| READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJ-NEXT: Type: code |
| READOBJ-NEXT: Name type: ordinal |
| READOBJ-NEXT: Symbol: __imp_nonamefunc |
| READOBJ-NEXT: Symbol: nonamefunc |
| READOBJ-NEXT: Symbol: __imp_aux_nonamefunc |
| READOBJ-NEXT: Symbol: #nonamefunc |
| READOBJ-EMPTY: |
| READOBJ-NEXT: File: test.dll |
| READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJ-NEXT: Type: code |
| READOBJ-NEXT: Name type: ordinal |
| READOBJ-NEXT: Symbol: __imp_manglednonamefunc |
| READOBJ-NEXT: Symbol: manglednonamefunc |
| READOBJ-NEXT: Symbol: __imp_aux_manglednonamefunc |
| READOBJ-NEXT: Symbol: #manglednonamefunc |
| |
| |
| Using -machine:arm64x gives the same output. |
| RUN: llvm-lib -machine:arm64x -def:test.def -out:testx.lib |
| RUN: llvm-nm --print-armap testx.lib | FileCheck -check-prefix=ARMAP %s |
| RUN: llvm-readobj testx.lib | FileCheck -check-prefix=READOBJ %s |
| |
| Creating a new lib containing the existing lib: |
| RUN: llvm-lib -machine:arm64ec test.lib -out:test2.lib |
| RUN: llvm-nm --print-armap test2.lib | FileCheck -check-prefix=ARMAP %s |
| |
| |
| RUN: llvm-lib -machine:arm64ec -def:test.def -defArm64Native:test.def -out:testx.lib |
| |
| RUN: llvm-nm --print-armap testx.lib | FileCheck -check-prefix=ARMAPX %s |
| |
| ARMAPX: Archive map |
| ARMAPX-NEXT: #mangledfunc in test.dll |
| ARMAPX-NEXT: #manglednonamefunc in test.dll |
| ARMAPX-NEXT: ?test_cpp_func@@YAHPEAX@Z in test.dll |
| ARMAPX-NEXT: __IMPORT_DESCRIPTOR_test in test.dll |
| ARMAPX-NEXT: __NULL_IMPORT_DESCRIPTOR in test.dll |
| ARMAPX-NEXT: __imp_#mangledfunc in test.dll |
| ARMAPX-NEXT: __imp_#manglednonamefunc in test.dll |
| ARMAPX-NEXT: __imp_?test_cpp_func@@YAHPEAX@Z in test.dll |
| ARMAPX-NEXT: __imp_dataexp in test.dll |
| ARMAPX-NEXT: __imp_expname in test.dll |
| ARMAPX-NEXT: __imp_funcexp in test.dll |
| ARMAPX-NEXT: __imp_nonamefunc in test.dll |
| ARMAPX-NEXT: expname in test.dll |
| ARMAPX-NEXT: funcexp in test.dll |
| ARMAPX-NEXT: nonamefunc in test.dll |
| ARMAPX-NEXT: test_NULL_THUNK_DATA in test.dll |
| ARMAPX-EMPTY: |
| ARMAPX-NEXT: Archive EC map |
| ARMAPX-NEXT: #expname in test.dll |
| ARMAPX-NEXT: #funcexp in test.dll |
| ARMAPX-NEXT: #mangledfunc in test.dll |
| ARMAPX-NEXT: #manglednonamefunc in test.dll |
| ARMAPX-NEXT: #nonamefunc in test.dll |
| ARMAPX-NEXT: ?test_cpp_func@@$$hYAHPEAX@Z in test.dll |
| ARMAPX-NEXT: ?test_cpp_func@@YAHPEAX@Z in test.dll |
| ARMAPX-NEXT: __IMPORT_DESCRIPTOR_test in test.dll |
| ARMAPX-NEXT: __NULL_IMPORT_DESCRIPTOR in test.dll |
| ARMAPX-NEXT: __imp_?test_cpp_func@@YAHPEAX@Z in test.dll |
| ARMAPX-NEXT: __imp_aux_?test_cpp_func@@YAHPEAX@Z in test.dll |
| ARMAPX-NEXT: __imp_aux_expname in test.dll |
| ARMAPX-NEXT: __imp_aux_funcexp in test.dll |
| ARMAPX-NEXT: __imp_aux_mangledfunc in test.dll |
| ARMAPX-NEXT: __imp_aux_manglednonamefunc in test.dll |
| ARMAPX-NEXT: __imp_aux_nonamefunc in test.dll |
| ARMAPX-NEXT: __imp_dataexp in test.dll |
| ARMAPX-NEXT: __imp_expname in test.dll |
| ARMAPX-NEXT: __imp_funcexp in test.dll |
| ARMAPX-NEXT: __imp_mangledfunc in test.dll |
| ARMAPX-NEXT: __imp_manglednonamefunc in test.dll |
| ARMAPX-NEXT: __imp_nonamefunc in test.dll |
| ARMAPX-NEXT: expname in test.dll |
| ARMAPX-NEXT: funcexp in test.dll |
| ARMAPX-NEXT: mangledfunc in test.dll |
| ARMAPX-NEXT: manglednonamefunc in test.dll |
| ARMAPX-NEXT: nonamefunc in test.dll |
| ARMAPX-NEXT: test_NULL_THUNK_DATA in test.dll |
| |
| RUN: llvm-readobj testx.lib | FileCheck -check-prefix=READOBJX %s |
| |
| READOBJX: File: testx.lib(test.dll) |
| READOBJX-NEXT: Format: COFF-ARM64 |
| READOBJX-NEXT: Arch: aarch64 |
| READOBJX-NEXT: AddressSize: 64bit |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: testx.lib(test.dll) |
| READOBJX-NEXT: Format: COFF-ARM64 |
| READOBJX-NEXT: Arch: aarch64 |
| READOBJX-NEXT: AddressSize: 64bit |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: testx.lib(test.dll) |
| READOBJX-NEXT: Format: COFF-ARM64 |
| READOBJX-NEXT: Arch: aarch64 |
| READOBJX-NEXT: AddressSize: 64bit |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJX-NEXT: Type: code |
| READOBJX-NEXT: Name type: export as |
| READOBJX-NEXT: Export name: funcexp |
| READOBJX-NEXT: Symbol: __imp_funcexp |
| READOBJX-NEXT: Symbol: funcexp |
| READOBJX-NEXT: Symbol: __imp_aux_funcexp |
| READOBJX-NEXT: Symbol: #funcexp |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJX-NEXT: Type: code |
| READOBJX-NEXT: Name type: export as |
| READOBJX-NEXT: Export name: mangledfunc |
| READOBJX-NEXT: Symbol: __imp_mangledfunc |
| READOBJX-NEXT: Symbol: mangledfunc |
| READOBJX-NEXT: Symbol: __imp_aux_mangledfunc |
| READOBJX-NEXT: Symbol: #mangledfunc |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJX-NEXT: Type: code |
| READOBJX-NEXT: Name type: export as |
| READOBJX-NEXT: Export name: ?test_cpp_func@@YAHPEAX@Z |
| READOBJX-NEXT: Symbol: __imp_?test_cpp_func@@YAHPEAX@Z |
| READOBJX-NEXT: Symbol: ?test_cpp_func@@YAHPEAX@Z |
| READOBJX-NEXT: Symbol: __imp_aux_?test_cpp_func@@YAHPEAX@Z |
| READOBJX-NEXT: Symbol: ?test_cpp_func@@$$hYAHPEAX@Z |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJX-NEXT: Type: code |
| READOBJX-NEXT: Name type: export as |
| READOBJX-NEXT: Export name: expname |
| READOBJX-NEXT: Symbol: __imp_expname |
| READOBJX-NEXT: Symbol: expname |
| READOBJX-NEXT: Symbol: __imp_aux_expname |
| READOBJX-NEXT: Symbol: #expname |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJX-NEXT: Type: data |
| READOBJX-NEXT: Name type: name |
| READOBJX-NEXT: Export name: dataexp |
| READOBJX-NEXT: Symbol: __imp_dataexp |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJX-NEXT: Type: code |
| READOBJX-NEXT: Name type: ordinal |
| READOBJX-NEXT: Symbol: __imp_nonamefunc |
| READOBJX-NEXT: Symbol: nonamefunc |
| READOBJX-NEXT: Symbol: __imp_aux_nonamefunc |
| READOBJX-NEXT: Symbol: #nonamefunc |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64EC |
| READOBJX-NEXT: Type: code |
| READOBJX-NEXT: Name type: ordinal |
| READOBJX-NEXT: Symbol: __imp_manglednonamefunc |
| READOBJX-NEXT: Symbol: manglednonamefunc |
| READOBJX-NEXT: Symbol: __imp_aux_manglednonamefunc |
| READOBJX-NEXT: Symbol: #manglednonamefunc |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64 |
| READOBJX-NEXT: Type: code |
| READOBJX-NEXT: Name type: name |
| READOBJX-NEXT: Export name: funcexp |
| READOBJX-NEXT: Symbol: __imp_funcexp |
| READOBJX-NEXT: Symbol: funcexp |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64 |
| READOBJX-NEXT: Type: code |
| READOBJX-NEXT: Name type: name |
| READOBJX-NEXT: Export name: #mangledfunc |
| READOBJX-NEXT: Symbol: __imp_#mangledfunc |
| READOBJX-NEXT: Symbol: #mangledfunc |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64 |
| READOBJX-NEXT: Type: code |
| READOBJX-NEXT: Name type: name |
| READOBJX-NEXT: Export name: ?test_cpp_func@@YAHPEAX@Z |
| READOBJX-NEXT: Symbol: __imp_?test_cpp_func@@YAHPEAX@Z |
| READOBJX-NEXT: Symbol: ?test_cpp_func@@YAHPEAX@Z |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64 |
| READOBJX-NEXT: Type: code |
| READOBJX-NEXT: Name type: name |
| READOBJX-NEXT: Export name: expname |
| READOBJX-NEXT: Symbol: __imp_expname |
| READOBJX-NEXT: Symbol: expname |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64 |
| READOBJX-NEXT: Type: data |
| READOBJX-NEXT: Name type: name |
| READOBJX-NEXT: Export name: dataexp |
| READOBJX-NEXT: Symbol: __imp_dataexp |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64 |
| READOBJX-NEXT: Type: code |
| READOBJX-NEXT: Name type: ordinal |
| READOBJX-NEXT: Symbol: __imp_nonamefunc |
| READOBJX-NEXT: Symbol: nonamefunc |
| READOBJX-EMPTY: |
| READOBJX-NEXT: File: test.dll |
| READOBJX-NEXT: Format: COFF-import-file-ARM64 |
| READOBJX-NEXT: Type: code |
| READOBJX-NEXT: Name type: ordinal |
| READOBJX-NEXT: Symbol: __imp_#manglednonamefunc |
| READOBJX-NEXT: Symbol: #manglednonamefunc |
| |
| |
| RUN: llvm-lib -machine:arm64ec -def:test.def -defArm64Native:test2.def -out:test2.lib |
| RUN: llvm-lib -machine:arm64ec -def:test.def -defArm64Native:test2.def -out:test2x.lib |
| RUN: llvm-nm --print-armap test2.lib | FileCheck -check-prefix=ARMAPX2 %s |
| RUN: llvm-nm --print-armap test2x.lib | FileCheck -check-prefix=ARMAPX2 %s |
| |
| ARMAPX2: Archive map |
| ARMAPX2-NEXT: __IMPORT_DESCRIPTOR_test2 in test2.dll |
| ARMAPX2-NEXT: __NULL_IMPORT_DESCRIPTOR in test2.dll |
| ARMAPX2-NEXT: __imp_otherfunc in test2.dll |
| ARMAPX2-NEXT: otherfunc in test2.dll |
| ARMAPX2-NEXT: test2_NULL_THUNK_DATA in test2.dll |
| ARMAPX2-EMPTY: |
| ARMAPX2-NEXT: Archive EC map |
| ARMAPX2-NEXT: #expname in test2.dll |
| ARMAPX2-NEXT: #funcexp in test2.dll |
| ARMAPX2-NEXT: #mangledfunc in test2.dll |
| ARMAPX2-NEXT: #manglednonamefunc in test2.dll |
| ARMAPX2-NEXT: #nonamefunc in test2.dll |
| ARMAPX2-NEXT: ?test_cpp_func@@$$hYAHPEAX@Z in test2.dll |
| ARMAPX2-NEXT: ?test_cpp_func@@YAHPEAX@Z in test2.dll |
| ARMAPX2-NEXT: __IMPORT_DESCRIPTOR_test2 in test2.dll |
| ARMAPX2-NEXT: __NULL_IMPORT_DESCRIPTOR in test2.dll |
| ARMAPX2-NEXT: __imp_?test_cpp_func@@YAHPEAX@Z in test2.dll |
| ARMAPX2-NEXT: __imp_aux_?test_cpp_func@@YAHPEAX@Z in test2.dll |
| ARMAPX2-NEXT: __imp_aux_expname in test2.dll |
| ARMAPX2-NEXT: __imp_aux_funcexp in test2.dll |
| ARMAPX2-NEXT: __imp_aux_mangledfunc in test2.dll |
| ARMAPX2-NEXT: __imp_aux_manglednonamefunc in test2.dll |
| ARMAPX2-NEXT: __imp_aux_nonamefunc in test2.dll |
| ARMAPX2-NEXT: __imp_dataexp in test2.dll |
| ARMAPX2-NEXT: __imp_expname in test2.dll |
| ARMAPX2-NEXT: __imp_funcexp in test2.dll |
| ARMAPX2-NEXT: __imp_mangledfunc in test2.dll |
| ARMAPX2-NEXT: __imp_manglednonamefunc in test2.dll |
| ARMAPX2-NEXT: __imp_nonamefunc in test2.dll |
| ARMAPX2-NEXT: expname in test2.dll |
| ARMAPX2-NEXT: funcexp in test2.dll |
| ARMAPX2-NEXT: mangledfunc in test2.dll |
| ARMAPX2-NEXT: manglednonamefunc in test2.dll |
| ARMAPX2-NEXT: nonamefunc in test2.dll |
| ARMAPX2-NEXT: test2_NULL_THUNK_DATA in test2.dll |
| |
| ARMAPX2: test2.dll: |
| ARMAPX2: 00000000 T #funcexp |
| ARMAPX2-NEXT: 00000000 T __imp_aux_funcexp |
| ARMAPX2-NEXT: 00000000 T __imp_funcexp |
| ARMAPX2-NEXT: 00000000 T funcexp |
| ARMAPX2-EMPTY: |
| ARMAPX2-NEXT: test2.dll: |
| ARMAPX2-NEXT: 00000000 T #mangledfunc |
| ARMAPX2-NEXT: 00000000 T __imp_aux_mangledfunc |
| ARMAPX2-NEXT: 00000000 T __imp_mangledfunc |
| ARMAPX2-NEXT: 00000000 T mangledfunc |
| ARMAPX2-EMPTY: |
| ARMAPX2-NEXT: test2.dll: |
| ARMAPX2-NEXT: 00000000 T ?test_cpp_func@@$$hYAHPEAX@Z |
| ARMAPX2-NEXT: 00000000 T ?test_cpp_func@@YAHPEAX@Z |
| ARMAPX2-NEXT: 00000000 T __imp_?test_cpp_func@@YAHPEAX@Z |
| ARMAPX2-NEXT: 00000000 T __imp_aux_?test_cpp_func@@YAHPEAX@Z |
| ARMAPX2-EMPTY: |
| ARMAPX2-NEXT: test2.dll: |
| ARMAPX2-NEXT: 00000000 T #expname |
| ARMAPX2-NEXT: 00000000 T __imp_aux_expname |
| ARMAPX2-NEXT: 00000000 T __imp_expname |
| ARMAPX2-NEXT: 00000000 T expname |
| ARMAPX2-EMPTY: |
| ARMAPX2-NEXT: test2.dll: |
| ARMAPX2-NEXT: 00000000 D __imp_dataexp |
| ARMAPX2-EMPTY: |
| ARMAPX2-NEXT: test2.dll: |
| ARMAPX2-NEXT: 00000000 T #nonamefunc |
| ARMAPX2-NEXT: 00000000 T __imp_aux_nonamefunc |
| ARMAPX2-NEXT: 00000000 T __imp_nonamefunc |
| ARMAPX2-NEXT: 00000000 T nonamefunc |
| ARMAPX2-EMPTY: |
| ARMAPX2-NEXT: test2.dll: |
| ARMAPX2-NEXT: 00000000 T #manglednonamefunc |
| ARMAPX2-NEXT: 00000000 T __imp_aux_manglednonamefunc |
| ARMAPX2-NEXT: 00000000 T __imp_manglednonamefunc |
| ARMAPX2-NEXT: 00000000 T manglednonamefunc |
| ARMAPX2-EMPTY: |
| ARMAPX2-NEXT: test2.dll: |
| ARMAPX2-NEXT: 00000000 T __imp_otherfunc |
| ARMAPX2-NEXT: 00000000 T otherfunc |
| |
| |
| RUN: llvm-lib -machine:arm64ec -def:exportas.def -out:exportas.lib |
| RUN: llvm-nm --print-armap exportas.lib | FileCheck -check-prefix=EXPAS-ARMAP %s |
| RUN: llvm-readobj exportas.lib | FileCheck -check-prefix=EXPAS-READOBJ %s |
| |
| EXPAS-ARMAP: Archive EC map |
| EXPAS-ARMAP-NEXT: #func1 in test.dll |
| EXPAS-ARMAP-NEXT: #func2 in test.dll |
| EXPAS-ARMAP-NEXT: #func3 in test.dll |
| EXPAS-ARMAP-NEXT: #func4 in test.dll |
| EXPAS-ARMAP-NEXT: __IMPORT_DESCRIPTOR_test in test.dll |
| EXPAS-ARMAP-NEXT: __NULL_IMPORT_DESCRIPTOR in test.dll |
| EXPAS-ARMAP-NEXT: __imp_aux_func1 in test.dll |
| EXPAS-ARMAP-NEXT: __imp_aux_func2 in test.dll |
| EXPAS-ARMAP-NEXT: __imp_aux_func3 in test.dll |
| EXPAS-ARMAP-NEXT: __imp_aux_func4 in test.dll |
| EXPAS-ARMAP-NEXT: __imp_data1 in test.dll |
| EXPAS-ARMAP-NEXT: __imp_data2 in test.dll |
| EXPAS-ARMAP-NEXT: __imp_func1 in test.dll |
| EXPAS-ARMAP-NEXT: __imp_func2 in test.dll |
| EXPAS-ARMAP-NEXT: __imp_func3 in test.dll |
| EXPAS-ARMAP-NEXT: __imp_func4 in test.dll |
| EXPAS-ARMAP-NEXT: func1 in test.dll |
| EXPAS-ARMAP-NEXT: func2 in test.dll |
| EXPAS-ARMAP-NEXT: func3 in test.dll |
| EXPAS-ARMAP-NEXT: func4 in test.dll |
| EXPAS-ARMAP-NEXT: test_NULL_THUNK_DATA in test.dll |
| |
| EXPAS-READOBJ: File: test.dll |
| EXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| EXPAS-READOBJ-NEXT: Type: code |
| EXPAS-READOBJ-NEXT: Name type: export as |
| EXPAS-READOBJ-NEXT: Export name: func1 |
| EXPAS-READOBJ-NEXT: Symbol: __imp_func1 |
| EXPAS-READOBJ-NEXT: Symbol: func1 |
| EXPAS-READOBJ-NEXT: Symbol: __imp_aux_func1 |
| EXPAS-READOBJ-NEXT: Symbol: #func1 |
| EXPAS-READOBJ-EMPTY: |
| EXPAS-READOBJ-NEXT: File: test.dll |
| EXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| EXPAS-READOBJ-NEXT: Type: code |
| EXPAS-READOBJ-NEXT: Name type: export as |
| EXPAS-READOBJ-NEXT: Export name: func2 |
| EXPAS-READOBJ-NEXT: Symbol: __imp_func2 |
| EXPAS-READOBJ-NEXT: Symbol: func2 |
| EXPAS-READOBJ-NEXT: Symbol: __imp_aux_func2 |
| EXPAS-READOBJ-NEXT: Symbol: #func2 |
| EXPAS-READOBJ-EMPTY: |
| EXPAS-READOBJ-NEXT: File: test.dll |
| EXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| EXPAS-READOBJ-NEXT: Type: code |
| EXPAS-READOBJ-NEXT: Name type: export as |
| EXPAS-READOBJ-NEXT: Export name: #func3 |
| EXPAS-READOBJ-NEXT: Symbol: __imp_func3 |
| EXPAS-READOBJ-NEXT: Symbol: func3 |
| EXPAS-READOBJ-NEXT: Symbol: __imp_aux_func3 |
| EXPAS-READOBJ-NEXT: Symbol: #func3 |
| EXPAS-READOBJ-EMPTY: |
| EXPAS-READOBJ-NEXT: File: test.dll |
| EXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| EXPAS-READOBJ-NEXT: Type: code |
| EXPAS-READOBJ-NEXT: Name type: export as |
| EXPAS-READOBJ-NEXT: Export name: #func4 |
| EXPAS-READOBJ-NEXT: Symbol: __imp_func4 |
| EXPAS-READOBJ-NEXT: Symbol: func4 |
| EXPAS-READOBJ-NEXT: Symbol: __imp_aux_func4 |
| EXPAS-READOBJ-NEXT: Symbol: #func4 |
| EXPAS-READOBJ-EMPTY: |
| EXPAS-READOBJ-NEXT: File: test.dll |
| EXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| EXPAS-READOBJ-NEXT: Type: data |
| EXPAS-READOBJ-NEXT: Name type: export as |
| EXPAS-READOBJ-NEXT: Export name: #data1 |
| EXPAS-READOBJ-NEXT: Symbol: __imp_data1 |
| EXPAS-READOBJ-EMPTY: |
| EXPAS-READOBJ-NEXT: File: test.dll |
| EXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC |
| EXPAS-READOBJ-NEXT: Type: data |
| EXPAS-READOBJ-NEXT: Name type: export as |
| EXPAS-READOBJ-NEXT: Export name: data2 |
| EXPAS-READOBJ-NEXT: Symbol: __imp_data2 |
| |
| |
| #--- test.def |
| LIBRARY test.dll |
| EXPORTS |
| funcexp |
| #mangledfunc |
| ?test_cpp_func@@YAHPEAX@Z |
| expname=impname |
| dataexp DATA |
| nonamefunc @1 NONAME |
| #manglednonamefunc @2 NONAME |
| |
| #--- test2.def |
| LIBRARY test2.dll |
| EXPORTS |
| otherfunc |
| |
| #--- exportas.def |
| LIBRARY test.dll |
| EXPORTS |
| #func1 EXPORTAS func1 |
| func2 EXPORTAS func2 |
| func3 EXPORTAS #func3 |
| #func4 EXPORTAS #func4 |
| data1 DATA EXPORTAS #data1 |
| #data2 DATA EXPORTAS data2 |