Index: lld/trunk/MinGW/Driver.cpp =================================================================== --- lld/trunk/MinGW/Driver.cpp +++ lld/trunk/MinGW/Driver.cpp @@ -121,8 +121,14 @@ 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)) Index: lld/trunk/test/MinGW/driver.test =================================================================== --- lld/trunk/test/MinGW/driver.test +++ lld/trunk/test/MinGW/driver.test @@ -44,3 +44,6 @@ RUN: ld.lld -### foo.o -m i386pep --verbose | FileCheck -check-prefix=VERBOSE %s VERBOSE: -verbose + +RUN: ld.lld -### -shared -m i386pe -e _DllMainCRTStartup@12 foo.o | FileCheck -check-prefix I386-ENTRY %s +I386-ENTRY: -entry:DllMainCRTStartup@12