summaryrefslogtreecommitdiff
path: root/lld/MinGW
diff options
context:
space:
mode:
authorMartin Storsjo <martin@martin.st>2017-09-12 19:23:54 +0000
committerMartin Storsjo <martin@martin.st>2017-09-12 19:23:54 +0000
commite68141f212492d3a50bff295d9ca5743674f48af (patch)
treeb88a4377a8f6d1012b7c6a7e2740f33c1c6bd62a /lld/MinGW
parentc2435b0e964b4b17b74c23192a1b85b370672045 (diff)
[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
Diffstat (limited to 'lld/MinGW')
-rw-r--r--lld/MinGW/Driver.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp
index 060231bd7a6..790bae792ed 100644
--- a/lld/MinGW/Driver.cpp
+++ b/lld/MinGW/Driver.cpp
@@ -121,8 +121,14 @@ bool mingw::link(ArrayRef<const char *> ArgsArr, raw_ostream &Diag) {
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))