File tree Expand file tree Collapse file tree 2 files changed +13
-6
lines changed Expand file tree Collapse file tree 2 files changed +13
-6
lines changed Original file line number Diff line number Diff line change @@ -85,11 +85,18 @@ void tools::MinGW::Linker::AddLibGCC(const ArgList &Args,
8585
8686 CmdArgs.push_back (" -lmoldname" );
8787 CmdArgs.push_back (" -lmingwex" );
88- for (auto Lib : Args.getAllArgValues (options::OPT_l))
88+ for (auto Lib : Args.getAllArgValues (options::OPT_l)) {
8989 if (StringRef (Lib).starts_with (" msvcr" ) ||
9090 StringRef (Lib).starts_with (" ucrt" ) ||
91- StringRef (Lib).starts_with (" crtdll" ))
91+ StringRef (Lib).starts_with (" crtdll" )) {
92+ std::string CRTLib = (llvm::Twine (" -l" ) + Lib).str ();
93+ // Respect the user's chosen crt variant, but still provide it
94+ // again as the last linker argument, because some of the libraries
95+ // we added above may depend on it.
96+ CmdArgs.push_back (Args.MakeArgStringRef (CRTLib));
9297 return ;
98+ }
99+ }
93100 CmdArgs.push_back (" -lmsvcrt" );
94101}
95102
Original file line number Diff line number Diff line change 77// CHECK_DEFAULT: "-lmingwex" "-lmsvcrt" "-ladvapi32"
88// CHECK_DEFAULT-SAME: "-lmsvcrt" "-lkernel32" "{{.*}}crtend.o"
99// CHECK_MSVCR120: "-lmsvcr120"
10- // CHECK_MSVCR120-SAME: "-lmingwex" "-ladvapi32"
10+ // CHECK_MSVCR120-SAME: "-lmingwex" "-lmsvcr120" "- ladvapi32"
1111// CHECK_UCRTBASE: "-lucrtbase"
12- // CHECK_UCRTBASE-SAME: "-lmingwex" "-ladvapi32"
12+ // CHECK_UCRTBASE-SAME: "-lmingwex" "-lucrtbase" "- ladvapi32"
1313// CHECK_UCRT: "-lucrt"
14- // CHECK_UCRT-SAME: "-lmingwex" "-ladvapi32"
14+ // CHECK_UCRT-SAME: "-lmingwex" "-lucrt" "- ladvapi32"
1515// CHECK_CRTDLL: "-lcrtdll"
16- // CHECK_CRTDLL-SAME: "-lmingwex" "-ladvapi32"
16+ // CHECK_CRTDLL-SAME: "-lmingwex" "-lcrtdll" "- ladvapi32"
You can’t perform that action at this time.
0 commit comments