-
Notifications
You must be signed in to change notification settings - Fork 12.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[llvm-lib][llvm-dlltool][Object] Add support for EXPORTAS name types. (…
…#78772) 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.
- Loading branch information
Showing
6 changed files
with
162 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters