[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