mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 06:46:36 +00:00
517 lines
18 KiB
Plaintext
517 lines
18 KiB
Plaintext
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
|