Index: source/Plugins/ExpressionParser/Clang/ClangHost.cpp =================================================================== --- source/Plugins/ExpressionParser/Clang/ClangHost.cpp +++ source/Plugins/ExpressionParser/Clang/ClangHost.cpp @@ -45,6 +45,8 @@ std::string raw_path = lldb_shlib_spec.GetPath(); llvm::StringRef parent_dir = llvm::sys::path::parent_path(raw_path); + // LLVM.org's build of LLDB uses the clang resource directory placed in + // $install_dir/lib/clang/$clang_version llvm::SmallString<256> clang_dir(parent_dir); llvm::SmallString<32> relative_path; llvm::sys::path::append(relative_path, @@ -58,6 +60,18 @@ return true; } + // swift-lldb uses the clang resource directory copied from swift, which by + // default is placed in $install_dir/lib/lldb/clang + clang_dir = parent_dir; + relative_path.clear(); + llvm::sys::path::append(relative_path, "lib", "lldb", "clang"); + llvm::sys::path::append(clang_dir, relative_path); + if (!verify || VerifyClangPath(clang_dir)) { + file_spec.GetDirectory().SetString(clang_dir); + FileSystem::Instance().Resolve(file_spec); + return true; + } + return HostInfo::ComputePathRelativeToLibrary(file_spec, relative_path); }