[lld] r313066 - [MinGW] Pass the undecorated entry point name to the COFF linker

Martin Storsjo via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 12 12:23:54 PDT 2017


Author: mstorsjo
Date: Tue Sep 12 12:23:54 2017
New Revision: 313066

URL: http://llvm.org/viewvc/llvm-project?rev=313066&view=rev
Log:
[MinGW] Pass the undecorated entry point name to the COFF linker

On i386, the --entry parameter to GNU ld is supposed to be a decorated
symbol name, while it is an undecorated name in link.exe.

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

Modified:
    lld/trunk/MinGW/Driver.cpp
    lld/trunk/test/MinGW/driver.test

Modified: lld/trunk/MinGW/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/MinGW/Driver.cpp?rev=313066&r1=313065&r2=313066&view=diff
==============================================================================
--- lld/trunk/MinGW/Driver.cpp (original)
+++ lld/trunk/MinGW/Driver.cpp Tue Sep 12 12:23:54 2017
@@ -121,8 +121,14 @@ bool mingw::link(ArrayRef<const char *>
 
   Add("lld-link");
 
-  if (auto *A = Args.getLastArg(OPT_entry))
-    Add("-entry:" + StringRef(A->getValue()));
+  if (auto *A = Args.getLastArg(OPT_entry)) {
+    StringRef S = A->getValue();
+    if (Args.getLastArgValue(OPT_m) == "i386pe" && S.startswith("_"))
+      Add("-entry:" + S.substr(1));
+    else
+      Add("-entry:" + S);
+  }
+
   if (auto *A = Args.getLastArg(OPT_subs))
     Add("-subsystem:" + StringRef(A->getValue()));
   if (auto *A = Args.getLastArg(OPT_out_implib))

Modified: lld/trunk/test/MinGW/driver.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/MinGW/driver.test?rev=313066&r1=313065&r2=313066&view=diff
==============================================================================
--- lld/trunk/test/MinGW/driver.test (original)
+++ lld/trunk/test/MinGW/driver.test Tue Sep 12 12:23:54 2017
@@ -44,3 +44,6 @@ STACK: -stack:4194304,8192
 
 RUN: ld.lld -### foo.o -m i386pep --verbose | FileCheck -check-prefix=VERBOSE %s
 VERBOSE: -verbose
+
+RUN: ld.lld -### -shared -m i386pe -e _DllMainCRTStartup at 12 foo.o | FileCheck -check-prefix I386-ENTRY %s
+I386-ENTRY: -entry:DllMainCRTStartup at 12




More information about the llvm-commits mailing list