diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -136,14 +136,17 @@ if (!this->VFS) this->VFS = llvm::vfs::getRealFileSystem(); - if (llvm::sys::path::is_relative(SysRoot)) { - SysRoot = GetResourcesPath(ClangExecutable, SysRoot); - } - Name = std::string(llvm::sys::path::filename(ClangExecutable)); Dir = std::string(llvm::sys::path::parent_path(ClangExecutable)); InstalledDir = Dir; // Provide a sensible default installed dir. + if (llvm::sys::path::is_relative(SysRoot)) { + // Prepend InstalledDir if SysRoot is relative + SmallString<128> fullpath(InstalledDir); + llvm::sys::path::append(fullpath, SysRoot); + SysRoot = std::string(fullpath); + } + #if defined(CLANG_CONFIG_FILE_SYSTEM_DIR) SystemConfigDir = CLANG_CONFIG_FILE_SYSTEM_DIR; #endif