forked from OSchip/llvm-project
COFF: Implement DLL symbol exports for bitcode files.
Differential Revision: http://reviews.llvm.org/D10530 llvm-svn: 239994
This commit is contained in:
parent
ae7fa78e91
commit
8b2492f2a0
|
@ -269,6 +269,14 @@ std::error_code BitcodeFile::parse() {
|
|||
bool Replaceable = (SymbolDef == LTO_SYMBOL_DEFINITION_TENTATIVE ||
|
||||
(Attrs & LTO_SYMBOL_COMDAT));
|
||||
SymbolBodies.push_back(new (Alloc) DefinedBitcode(SymName, Replaceable));
|
||||
|
||||
const llvm::GlobalValue *GV = M->getSymbolGV(I);
|
||||
if (GV && GV->hasDLLExportStorageClass()) {
|
||||
Directives += " /export:";
|
||||
Directives += SymName;
|
||||
if (!GV->getValueType()->isFunctionTy())
|
||||
Directives += ",data";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-pc-windows-msvc"
|
||||
|
||||
define void @_DllMainCRTStartup() {
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @exportfn1() {
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @exportfn2() {
|
||||
ret void
|
||||
}
|
||||
|
||||
define dllexport void @exportfn3() {
|
||||
ret void
|
||||
}
|
|
@ -10,10 +10,26 @@ EXPORT: Ordinal RVA Name
|
|||
EXPORT-NEXT: 0 0
|
||||
EXPORT-NEXT: 1 0x1008 exportfn1
|
||||
EXPORT-NEXT: 2 0x1010 exportfn2
|
||||
EXPORT-NEXT: 3 0x1010 exportfn3
|
||||
|
||||
# RUN: llvm-as -o %t.lto.obj %p/Inputs/export.ll
|
||||
# RUN: lld -flavor link2 /out:%t.lto.dll /dll %t.lto.obj /export:exportfn1 /export:exportfn2
|
||||
# RUN: llvm-objdump -p %t.lto.dll | FileCheck -check-prefix=EXPORT-LTO %s
|
||||
|
||||
EXPORT-LTO: Export Table:
|
||||
EXPORT-LTO: DLL name: dll.test.tmp.lto.dll
|
||||
EXPORT-LTO: Ordinal RVA Name
|
||||
EXPORT-LTO-NEXT: 0 0
|
||||
EXPORT-LTO-NEXT: 1 0x1010 exportfn1
|
||||
EXPORT-LTO-NEXT: 2 0x1020 exportfn2
|
||||
EXPORT-LTO-NEXT: 3 0x1030 exportfn3
|
||||
|
||||
# RUN: yaml2obj < %p/Inputs/import.yaml > %t2.obj
|
||||
# RUN: lld -flavor link2 /out:%t2.exe %t2.obj %t.lib
|
||||
# RUN: llvm-readobj -coff-imports %t2.exe | FileCheck -check-prefix=IMPORT %s
|
||||
|
||||
# RUN: lld -flavor link2 /out:%t2.lto.exe %t2.obj %t.lto.lib
|
||||
# RUN: llvm-readobj -coff-imports %t2.lto.exe | FileCheck -check-prefix=IMPORT %s
|
||||
|
||||
IMPORT: Symbol: exportfn1
|
||||
IMPORT: Symbol: exportfn2
|
||||
|
|
Loading…
Reference in New Issue