mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 16:46:39 +00:00

EXPORTAS is a new name type in import libraries. It's used by default on ARM64EC, but it's allowed on other platforms as well.
95 lines
2.7 KiB
Plaintext
95 lines
2.7 KiB
Plaintext
Test EXPORTAS in importlibs.
|
|
|
|
RUN: split-file %s %t.dir && cd %t.dir
|
|
RUN: llvm-lib -machine:amd64 -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: __imp_func in test.dll
|
|
ARMAP-NEXT: __imp_func2 in test.dll
|
|
ARMAP-NEXT: __imp_func3 in test.dll
|
|
ARMAP-NEXT: __imp_mydata in test.dll
|
|
ARMAP-NEXT: func in test.dll
|
|
ARMAP-NEXT: func2 in test.dll
|
|
ARMAP-NEXT: func3 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-x86-64
|
|
READOBJ-NEXT: Arch: x86_64
|
|
READOBJ-NEXT: AddressSize: 64bit
|
|
READOBJ-EMPTY:
|
|
READOBJ-NEXT: File: test.lib(test.dll)
|
|
READOBJ-NEXT: Format: COFF-x86-64
|
|
READOBJ-NEXT: Arch: x86_64
|
|
READOBJ-NEXT: AddressSize: 64bit
|
|
READOBJ-EMPTY:
|
|
READOBJ-NEXT: File: test.lib(test.dll)
|
|
READOBJ-NEXT: Format: COFF-x86-64
|
|
READOBJ-NEXT: Arch: x86_64
|
|
READOBJ-NEXT: AddressSize: 64bit
|
|
READOBJ-EMPTY:
|
|
READOBJ-NEXT: File: test.dll
|
|
READOBJ-NEXT: Format: COFF-import-file-x86-64
|
|
READOBJ-NEXT: Type: code
|
|
READOBJ-NEXT: Name type: export as
|
|
READOBJ-NEXT: Export name: expfunc
|
|
READOBJ-NEXT: Symbol: __imp_func
|
|
READOBJ-NEXT: Symbol: func
|
|
READOBJ-EMPTY:
|
|
READOBJ-NEXT: File: test.dll
|
|
READOBJ-NEXT: Format: COFF-import-file-x86-64
|
|
READOBJ-NEXT: Type: data
|
|
READOBJ-NEXT: Name type: export as
|
|
READOBJ-NEXT: Export name: expdata
|
|
READOBJ-NEXT: Symbol: __imp_mydata
|
|
READOBJ-EMPTY:
|
|
READOBJ-NEXT: File: test.dll
|
|
READOBJ-NEXT: Format: COFF-import-file-x86-64
|
|
READOBJ-NEXT: Type: code
|
|
READOBJ-NEXT: Name type: export as
|
|
READOBJ-NEXT: Export name: expfunc2
|
|
READOBJ-NEXT: Symbol: __imp_func2
|
|
READOBJ-NEXT: Symbol: func2
|
|
READOBJ-EMPTY:
|
|
READOBJ-NEXT: File: test.dll
|
|
READOBJ-NEXT: Format: COFF-import-file-x86-64
|
|
READOBJ-NEXT: Type: code
|
|
READOBJ-NEXT: Name type: export as
|
|
READOBJ-NEXT: Export name: expfunc3
|
|
READOBJ-NEXT: Symbol: __imp_func3
|
|
READOBJ-NEXT: Symbol: func3
|
|
|
|
|
|
EXPORTAS must be at the end of entry declaration.
|
|
RUN: not llvm-lib -machine:amd64 -def:test2.def -out:test2.lib 2>&1 \
|
|
RUN: | FileCheck --check-prefix=ERROR %s
|
|
RUN: not llvm-lib -machine:amd64 -def:test3.def -out:test3.lib 2>&1 \
|
|
RUN: | FileCheck --check-prefix=ERROR %s
|
|
ERROR: Invalid data was encountered while parsing the file
|
|
|
|
|
|
#--- test.def
|
|
LIBRARY test.dll
|
|
EXPORTS
|
|
func EXPORTAS expfunc
|
|
mydata DATA EXPORTAS expdata
|
|
func2 = myfunc2 EXPORTAS expfunc2
|
|
func3 = otherdll.otherfunc3 EXPORTAS expfunc3
|
|
|
|
#--- test2.def
|
|
LIBRARY test.dll
|
|
EXPORTS
|
|
func EXPORTAS expfunc
|
|
mydata EXPORTAS expdata DATA
|
|
|
|
#--- test3.def
|
|
LIBRARY test.dll
|
|
EXPORTS
|
|
mydata EXPORTAS
|