diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 10d72be2c3d65..e9bf60d5e2ee4 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -229,7 +229,14 @@ Driver::Driver(StringRef ClangExecutable, StringRef TargetTriple, } #if defined(CLANG_CONFIG_FILE_SYSTEM_DIR) - SystemConfigDir = CLANG_CONFIG_FILE_SYSTEM_DIR; + if (llvm::sys::path::is_absolute(CLANG_CONFIG_FILE_SYSTEM_DIR)) { + SystemConfigDir = CLANG_CONFIG_FILE_SYSTEM_DIR; + } else { + SmallString<128> configFileDir(Dir); + llvm::sys::path::append(configFileDir, CLANG_CONFIG_FILE_SYSTEM_DIR); + llvm::sys::path::remove_dots(configFileDir, true); + SystemConfigDir = static_cast(configFileDir); + } #endif #if defined(CLANG_CONFIG_FILE_USER_DIR) {