[llvm] r369747 - [llvm-dlltool] Make sure to strip decorations from ExtName for renamed exports

Martin Storsjo via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 23 04:18:12 PDT 2019


Author: mstorsjo
Date: Fri Aug 23 04:18:11 2019
New Revision: 369747

URL: http://llvm.org/viewvc/llvm-project?rev=369747&view=rev
Log:
[llvm-dlltool] Make sure to strip decorations from ExtName for renamed exports

ExtName should not be decorated, just like Name.

This avoids double decoration on symbols in import libraries
that use = for renaming functions. (Weak aliases, which use ==,
worked fine with respect to decoration.)

Differential Revision: https://reviews.llvm.org/D66617

Modified:
    llvm/trunk/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
    llvm/trunk/test/tools/llvm-dlltool/coff-decorated.def

Modified: llvm/trunk/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp?rev=369747&r1=369746&r2=369747&view=diff
==============================================================================
--- llvm/trunk/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp (original)
+++ llvm/trunk/lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp Fri Aug 23 04:18:11 2019
@@ -171,6 +171,7 @@ int llvm::dlltoolDriverMain(llvm::ArrayR
       // By making sure E.SymbolName != E.Name for decorated symbols,
       // writeImportLibrary writes these symbols with the type
       // IMPORT_NAME_UNDECORATE.
+      E.ExtName = E.ExtName.substr(0, E.ExtName.find('@', 1));
     }
   }
 

Modified: llvm/trunk/test/tools/llvm-dlltool/coff-decorated.def
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-dlltool/coff-decorated.def?rev=369747&r1=369746&r2=369747&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-dlltool/coff-decorated.def (original)
+++ llvm/trunk/test/tools/llvm-dlltool/coff-decorated.def Fri Aug 23 04:18:11 2019
@@ -9,6 +9,7 @@ StdcallFunction at 4
 @FastcallFunction at 4
 StdcallAlias at 4==StdcallFunction at 4
 ??_7exception@@6B@
+StdcallExportName at 4=StdcallInternalFunction at 4
 
 ; CHECK: Name type: noprefix
 ; CHECK: Symbol: __imp__CdeclFunction
@@ -24,3 +25,5 @@ StdcallAlias at 4==StdcallFunction at 4
 ; CHECK: Symbol: ??_7exception@@6B@
 ; CHECK-NM: W _StdcallAlias at 4
 ; CHECK-NM: U _StdcallFunction at 4
+; CHECK: Symbol: __imp__StdcallExportName at 4{{$}}
+; CHECK: Symbol: _StdcallExportName at 4{{$}}




More information about the llvm-commits mailing list