mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-26 23:21:11 +00:00
Remove support for EXPORTAS in def files to maintain ABI compatibility for COFFShortExport
This commit is contained in:
parent
207ecd684c
commit
2f640ad26d
@ -120,10 +120,6 @@ struct COFFShortExport {
|
||||
/// file, this is "baz" in "EXPORTS\nfoo = bar == baz".
|
||||
std::string AliasTarget;
|
||||
|
||||
/// Specifies EXPORTAS name. In a .def file, this is "bar" in
|
||||
/// "EXPORTS\nfoo EXPORTAS bar".
|
||||
std::string ExportAs;
|
||||
|
||||
uint16_t Ordinal = 0;
|
||||
bool Noname = false;
|
||||
bool Data = false;
|
||||
|
@ -675,9 +675,6 @@ Error writeImportLibrary(StringRef ImportName, StringRef Path,
|
||||
std::string ExportName;
|
||||
if (E.Noname) {
|
||||
NameType = IMPORT_ORDINAL;
|
||||
} else if (!E.ExportAs.empty()) {
|
||||
NameType = IMPORT_NAME_EXPORTAS;
|
||||
ExportName = E.ExportAs;
|
||||
} else {
|
||||
NameType = getNameType(SymbolName, E.Name, Machine, MinGW);
|
||||
}
|
||||
|
@ -39,7 +39,6 @@ enum Kind {
|
||||
KwConstant,
|
||||
KwData,
|
||||
KwExports,
|
||||
KwExportAs,
|
||||
KwHeapsize,
|
||||
KwLibrary,
|
||||
KwName,
|
||||
@ -119,7 +118,6 @@ public:
|
||||
.Case("CONSTANT", KwConstant)
|
||||
.Case("DATA", KwData)
|
||||
.Case("EXPORTS", KwExports)
|
||||
.Case("EXPORTAS", KwExportAs)
|
||||
.Case("HEAPSIZE", KwHeapsize)
|
||||
.Case("LIBRARY", KwLibrary)
|
||||
.Case("NAME", KwName)
|
||||
@ -288,16 +286,7 @@ private:
|
||||
E.AliasTarget = std::string("_").append(E.AliasTarget);
|
||||
continue;
|
||||
}
|
||||
// EXPORTAS must be at the end of export definition
|
||||
if (Tok.K == KwExportAs) {
|
||||
read();
|
||||
if (Tok.K == Eof)
|
||||
return createError(
|
||||
"unexpected end of file, EXPORTAS identifier expected");
|
||||
E.ExportAs = std::string(Tok.Value);
|
||||
} else {
|
||||
unget();
|
||||
}
|
||||
unget();
|
||||
Info.Exports.push_back(E);
|
||||
return Error::success();
|
||||
}
|
||||
|
@ -100,89 +100,6 @@ 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: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
|
||||
@ -191,13 +108,3 @@ EXPORTS
|
||||
?test_cpp_func@@YAHPEAX@Z
|
||||
expname=impname
|
||||
dataexp DATA
|
||||
|
||||
#--- 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
|
||||
|
@ -1,94 +0,0 @@
|
||||
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
|
Loading…
Reference in New Issue
Block a user