forked from OSchip/llvm-project
[PECOFF] Fix exported symbols in an import library.
Looks like if you have symbol foo in a module-definition file (.def file), and if the actual symbol name to match that export description is _foo@x (where x is an integer), the exported symbol name becomes this. - foo in the .dll file - foo@x in the .lib file I have checked in a few fixes recently for exported symbol name mangling. I haven't found a simple rule that governs all the mangling rules. There may not ever exist. For now, this is a patch to improve .lib file compatibility. llvm-svn: 223524
This commit is contained in:
parent
d8b766072b
commit
be68a99f20
|
@ -35,6 +35,8 @@ createModuleDefinitionFile(const PECOFFLinkingContext &ctx) {
|
|||
os << " ";
|
||||
if (!desc.externalName.empty()) {
|
||||
os << desc.externalName;
|
||||
} else if (!desc.mangledName.empty()) {
|
||||
os << ctx.undecorateSymbol(desc.mangledName);
|
||||
} else {
|
||||
os << ctx.undecorateSymbol(desc.name);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
; This is a comment line
|
||||
|
||||
EXPORTS
|
||||
exportfn1 @5 ; foo
|
||||
exportfn7
|
||||
exportfn5=exportfn6 PRIVATE
|
|
@ -1,8 +1,8 @@
|
|||
# RUN: yaml2obj %p/Inputs/export.obj.yaml > %t.obj
|
||||
#
|
||||
# RUN: lld -flavor link /out:%t.dll /dll /entry:init \
|
||||
# RUN: /export:exportfn1 /export:exportfn2 /lldmoduledeffile:%t.def -- %t.obj
|
||||
# RUN: FileCheck -check-prefix=CHECK1 %s < %t.def
|
||||
# RUN: /export:exportfn1 /export:exportfn2 /lldmoduledeffile:%t1.def -- %t.obj
|
||||
# RUN: FileCheck -check-prefix=CHECK1 %s < %t1.def
|
||||
|
||||
CHECK1: LIBRARY "exportlib2.test.tmp.dll"
|
||||
CHECK1: EXPORTS
|
||||
|
@ -11,11 +11,11 @@ CHECK1: exportfn2 @2
|
|||
CHECK1: exportfn3@256 @3
|
||||
|
||||
# RUN: lld -flavor link /out:%t.dll /dll /entry:init \
|
||||
# RUN: /def:%p/Inputs/exports.def /lldmoduledeffile:%t.def -- %t.obj
|
||||
# RUN: FileCheck -check-prefix=CHECK2 %s < %t.def
|
||||
# RUN: /def:%p/Inputs/exports2.def /lldmoduledeffile:%t2.def -- %t.obj
|
||||
# RUN: FileCheck -check-prefix=CHECK2 %s < %t2.def
|
||||
|
||||
CHECK2: LIBRARY "exportlib2.test.tmp.dll"
|
||||
CHECK2: EXPORTS
|
||||
CHECK2: exportfn1 @5
|
||||
CHECK2: exportfn2 @6
|
||||
CHECK2: exportfn3@256 @7
|
||||
CHECK2: exportfn3@256 @6
|
||||
CHECK2: exportfn7@8 @7
|
||||
|
|
Loading…
Reference in New Issue