[lld] r221303 - [PECOFF] Fix symbols in module-definition file.
Rui Ueyama
ruiu at google.com
Tue Nov 4 14:09:13 PST 2014
Author: ruiu
Date: Tue Nov 4 16:09:13 2014
New Revision: 221303
URL: http://llvm.org/viewvc/llvm-project?rev=221303&view=rev
Log:
[PECOFF] Fix symbols in module-definition file.
Modified:
lld/trunk/lib/ReaderWriter/PECOFF/WriterImportLibrary.cpp
lld/trunk/test/pecoff/exportlib2.test
Modified: lld/trunk/lib/ReaderWriter/PECOFF/WriterImportLibrary.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/WriterImportLibrary.cpp?rev=221303&r1=221302&r2=221303&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/PECOFF/WriterImportLibrary.cpp (original)
+++ lld/trunk/lib/ReaderWriter/PECOFF/WriterImportLibrary.cpp Tue Nov 4 16:09:13 2014
@@ -30,7 +30,15 @@ createModuleDefinitionFile(const PECOFFL
<< "EXPORTS\n";
for (const PECOFFLinkingContext::ExportDesc &desc : ctx.getDllExports()) {
- os << " " << desc.getExternalName();
+ // Symbol names in a module-definition file will be mangled by lib.exe,
+ // so we need to demangle them before writing to a .def file.
+ os << " ";
+ if (!desc.externalName.empty()) {
+ os << desc.externalName;
+ } else {
+ os << ctx.undecorateSymbol(desc.name);
+ }
+
if (!desc.isPrivate)
os << " @" << desc.ordinal;
if (desc.noname)
Modified: lld/trunk/test/pecoff/exportlib2.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/exportlib2.test?rev=221303&r1=221302&r2=221303&view=diff
==============================================================================
--- lld/trunk/test/pecoff/exportlib2.test (original)
+++ lld/trunk/test/pecoff/exportlib2.test Tue Nov 4 16:09:13 2014
@@ -2,10 +2,20 @@
#
# RUN: lld -flavor link /out:%t.dll /dll /entry:init \
# RUN: /export:exportfn1 /export:exportfn2 /lldmoduledeffile:%t.def -- %t.obj
-# RUN: FileCheck %s < %t.def
+# RUN: FileCheck -check-prefix=CHECK1 %s < %t.def
-CHECK: LIBRARY "exportlib2.test.tmp.dll"
-CHECK: EXPORTS
-CHECK: exportfn1 @1
-CHECK: exportfn2 @2
-CHECK: exportfn3 at 256 @3
+CHECK1: LIBRARY "exportlib2.test.tmp.dll"
+CHECK1: EXPORTS
+CHECK1: exportfn1 @1
+CHECK1: exportfn2 @2
+CHECK1: exportfn3 at 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
+
+CHECK2: LIBRARY "exportlib2.test.tmp.dll"
+CHECK2: EXPORTS
+CHECK2: exportfn1 @5
+CHECK2: exportfn2 @6
+CHECK2: exportfn3 at 256 @7
More information about the llvm-commits
mailing list