@@ -2846,49 +2846,11 @@ void AppleMachO::AddCXXStdlibLibArgs(const ArgList &Args,
28462846 CXXStdlibType Type = GetCXXStdlibType (Args);
28472847
28482848 switch (Type) {
2849- case ToolChain::CST_Libcxx: {
2850- // On Darwin, we prioritize a libc++ located in the toolchain to a libc++
2851- // located in the sysroot. Unlike the driver for most other platforms, on
2852- // Darwin we do that by explicitly passing the library path to the linker
2853- // to avoid having to add the toolchain's `lib/` directory to the linker
2854- // search path, which would make other libraries findable as well.
2855- //
2856- // Prefering the toolchain library over the sysroot library matches the
2857- // behavior we have for headers, where we prefer headers in the toolchain
2858- // over headers in the sysroot if there are any. Note that it's important
2859- // for the header search path behavior to match the link-time search path
2860- // behavior to ensure that we link the program against a library that
2861- // matches the headers that were used to compile it.
2862- //
2863- // Otherwise, we end up compiling against some set of headers and then
2864- // linking against a different library (which, confusingly, shares the same
2865- // name) which may have been configured with different options, be at a
2866- // different version, etc.
2867- SmallString<128 > InstallLib = llvm::sys::path::parent_path (getDriver ().Dir );
2868- llvm::sys::path::append (InstallLib, " lib" ); // <install>/lib
2869- auto Link = [&](StringRef Library) {
2870- SmallString<128 > Shared (InstallLib);
2871- llvm::sys::path::append (Shared,
2872- SmallString<4 >(" lib" ) + Library + " .dylib" );
2873- SmallString<128 > Static (InstallLib);
2874- llvm::sys::path::append (Static, SmallString<4 >(" lib" ) + Library + " .a" );
2875- SmallString<32 > Relative (" -l" );
2876- Relative += Library;
2877-
2878- if (getVFS ().exists (Shared)) {
2879- CmdArgs.push_back (Args.MakeArgString (Shared));
2880- } else if (getVFS ().exists (Static)) {
2881- CmdArgs.push_back (Args.MakeArgString (Static));
2882- } else {
2883- CmdArgs.push_back (Args.MakeArgString (Relative));
2884- }
2885- };
2886-
2887- Link (" c++" );
2849+ case ToolChain::CST_Libcxx:
2850+ CmdArgs.push_back (" -lc++" );
28882851 if (Args.hasArg (options::OPT_fexperimental_library))
2889- Link ( " c ++experimental" );
2852+ CmdArgs. push_back ( " -lc ++experimental" );
28902853 break ;
2891- }
28922854
28932855 case ToolChain::CST_Libstdcxx:
28942856 // Unfortunately, -lstdc++ doesn't always exist in the standard search path;
0 commit comments