Index: lib/Driver/ToolChains/Fuchsia.cpp =================================================================== --- lib/Driver/ToolChains/Fuchsia.cpp +++ lib/Driver/ToolChains/Fuchsia.cpp @@ -146,6 +146,12 @@ return P.str(); } +static std::string getSysRoot(const Driver &D, llvm::Triple Triple) { + SmallString<128> P(llvm::sys::path::parent_path(D.Dir)); + llvm::sys::path::append(P, normalizeTriple(Triple)); + return P.str(); +} + Fuchsia::Fuchsia(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) : ToolChain(D, Triple, Args) { @@ -157,11 +163,10 @@ llvm::sys::path::append(P, "lib"); getFilePaths().push_back(P.str()); - if (!D.SysRoot.empty()) { - SmallString<128> P(D.SysRoot); - llvm::sys::path::append(P, "lib"); - getFilePaths().push_back(P.str()); - } + SmallString<128> S(!D.SysRoot.empty() ? D.SysRoot + : getSysRoot(D, getTriple())); + llvm::sys::path::append(S, "lib"); + getFilePaths().push_back(S.str()); } std::string Fuchsia::ComputeEffectiveClangTriple(const ArgList &Args, @@ -236,11 +241,10 @@ return; } - if (!D.SysRoot.empty()) { - SmallString<128> P(D.SysRoot); - llvm::sys::path::append(P, "include"); - addExternCSystemInclude(DriverArgs, CC1Args, P.str()); - } + SmallString<128> S(!D.SysRoot.empty() ? D.SysRoot + : getSysRoot(D, getTriple())); + llvm::sys::path::append(S, "include"); + addExternCSystemInclude(DriverArgs, CC1Args, S.str()); } void Fuchsia::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,