[lld] r208446 - [PECOFF] Fix dllexported name.
Rui Ueyama
ruiu at google.com
Fri May 9 14:37:43 PDT 2014
Author: ruiu
Date: Fri May 9 16:37:43 2014
New Revision: 208446
URL: http://llvm.org/viewvc/llvm-project?rev=208446&view=rev
Log:
[PECOFF] Fix dllexported name.
Previously the handling of exported symbol was wrong if it's
specified in a module definition file in the form of
<externalname>=<internalname>. Export the correct symbol.
Modified:
lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp
lld/trunk/test/pecoff/export.test
Modified: lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp?rev=208446&r1=208445&r2=208446&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp (original)
+++ lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp Fri May 9 16:37:43 2014
@@ -76,7 +76,14 @@ static bool getExportedAtoms(PECOFFLinki
return false;
}
const DefinedAtom *atom = it->second;
- ret.push_back(TableEntry(desc.name, desc.ordinal, atom, desc.noname));
+
+ // One can export a symbol with a different name than the symbol
+ // name used in DLL. If such name is specified, use it in the
+ // .edata section.
+ StringRef exportName =
+ desc.externalName.empty() ? desc.name : desc.externalName;
+ ret.push_back(TableEntry(exportName, desc.ordinal, atom, desc.noname));
+
if (desc.externalName.empty())
desc.externalName = removeLeadingUnderscore(atom->name());
exports.insert(desc);
Modified: lld/trunk/test/pecoff/export.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/export.test?rev=208446&r1=208445&r2=208446&view=diff
==============================================================================
--- lld/trunk/test/pecoff/export.test (original)
+++ lld/trunk/test/pecoff/export.test Fri May 9 16:37:43 2014
@@ -39,5 +39,5 @@ CHECK4: DLL name: export.test.tmp4.
CHECK4: Ordinal RVA Name
CHECK4-NEXT: 5 0x2008 exportfn1
CHECK4-NEXT: 6 0x2010 exportfn2
-CHECK4-NEXT: 7 0x2010 exportfn6
+CHECK4-NEXT: 7 0x2010 exportfn5
CHECK4-NEXT: 8 0x2010 exportfn3 at 256
More information about the llvm-commits
mailing list