forked from OSchip/llvm-project
[clangd] Don't mangle workdir-relevant driver path in compile commands
Summary: We can't resolve this (if it's a symlink) without further refactoring, but the current behaviour is just incorrect. Reviewers: kadircet Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D82011
This commit is contained in:
parent
c587b076a0
commit
a3b7934012
|
@ -135,6 +135,12 @@ static std::string resolveDriver(llvm::StringRef Driver, bool FollowSymlink,
|
|||
// First, eliminate relative paths.
|
||||
std::string Storage;
|
||||
if (!llvm::sys::path::is_absolute(Driver)) {
|
||||
// If it's working-dir relative like bin/clang, we can't resolve it.
|
||||
// FIXME: we could if we had the working directory here.
|
||||
// Let's hope it's not a symlink.
|
||||
if (llvm::any_of(Driver,
|
||||
[](char C) { return llvm::sys::path::is_separator(C); }))
|
||||
return Driver.str();
|
||||
// If the driver is a generic like "g++" with no path, add clang dir.
|
||||
if (ClangPath &&
|
||||
(Driver == "clang" || Driver == "clang++" || Driver == "gcc" ||
|
||||
|
|
|
@ -115,7 +115,7 @@ TEST(CommandMangler, ClangPath) {
|
|||
|
||||
Cmd = {"foo/unknown-binary", "foo.cc"};
|
||||
Mangler.adjust(Cmd);
|
||||
EXPECT_EQ(testPath("fake/unknown-binary"), Cmd.front());
|
||||
EXPECT_EQ("foo/unknown-binary", Cmd.front());
|
||||
}
|
||||
|
||||
// Only run the PATH/symlink resolving test on unix, we need to fiddle
|
||||
|
|
Loading…
Reference in New Issue