diff options
author | Martin Storsjo <martin@martin.st> | 2017-09-12 19:23:54 +0000 |
---|---|---|
committer | Martin Storsjo <martin@martin.st> | 2017-09-12 19:23:54 +0000 |
commit | e68141f212492d3a50bff295d9ca5743674f48af (patch) | |
tree | b88a4377a8f6d1012b7c6a7e2740f33c1c6bd62a /lld/MinGW | |
parent | c2435b0e964b4b17b74c23192a1b85b370672045 (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.cpp | 10 |
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)) |