This change was causing MSan/ASan failures on the sanitizer bots: http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/28272
I reverted it in r351282. On Tue, Jan 15, 2019 at 11:09 AM Haojian Wu via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: hokein > Date: Tue Jan 15 11:05:50 2019 > New Revision: 351222 > > URL: http://llvm.org/viewvc/llvm-project?rev=351222&view=rev > Log: > [Tooling] Make clang-tool find libc++ dir on mac when running on a file > without compilation database. > > Summary: > This is a regression of r348365. > > When clang-tools run on a file without a complation database (`clang-check > /tmp/t.cc`), > we will use fixed compilation database as a fallback. However the actual > compiler > path in the fallback complation command is just `clang-tool` which is > insufficient to detect the libc++ dir. > > Reviewers: ilya-biryukov, EricWF > > Reviewed By: ilya-biryukov > > Subscribers: cfe-commits > > Differential Revision: https://reviews.llvm.org/D56680 > > Added: > cfe/trunk/test/Tooling/clang-check-mac-libcxx-fixed-compilation-db.cpp > Modified: > cfe/trunk/lib/Tooling/CompilationDatabase.cpp > > Modified: cfe/trunk/lib/Tooling/CompilationDatabase.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/CompilationDatabase.cpp?rev=351222&r1=351221&r2=351222&view=diff > > ============================================================================== > --- cfe/trunk/lib/Tooling/CompilationDatabase.cpp (original) > +++ cfe/trunk/lib/Tooling/CompilationDatabase.cpp Tue Jan 15 11:05:50 2019 > @@ -227,6 +227,16 @@ struct FilterUnusedFlags { > } > }; > > +std::string GetClangToolCommand() { > + static int Dummy; > + std::string ClangExecutable = > + llvm::sys::fs::getMainExecutable("clang", (void *)&Dummy); > + SmallString<128> ClangToolPath; > + ClangToolPath = llvm::sys::path::parent_path(ClangExecutable); > + llvm::sys::path::append(ClangToolPath, "clang-tool"); > + return ClangToolPath.str(); > +} > + > } // namespace > > /// Strips any positional args and possible argv[0] from a command-line > @@ -266,9 +276,9 @@ static bool stripPositionalArgs(std::vec > Diagnostics)); > NewDriver->setCheckInputsExist(false); > > - // This becomes the new argv[0]. The value is actually not important as > it > - // isn't used for invoking Tools. > - Args.insert(Args.begin(), "clang-tool"); > + // This becomes the new argv[0]. The value is used to detect libc++ > include > + // dirs on Mac, it isn't used for other platforms. > + Args.insert(Args.begin(), GetClangToolCommand().c_str()); > > // By adding -c, we force the driver to treat compilation as the last > phase. > // It will then issue warnings via Diagnostics about un-used options > that > @@ -366,7 +376,7 @@ FixedCompilationDatabase::loadFromFile(S > > FixedCompilationDatabase:: > FixedCompilationDatabase(Twine Directory, ArrayRef<std::string> > CommandLine) { > - std::vector<std::string> ToolCommandLine(1, "clang-tool"); > + std::vector<std::string> ToolCommandLine(1, GetClangToolCommand()); > ToolCommandLine.insert(ToolCommandLine.end(), > CommandLine.begin(), CommandLine.end()); > CompileCommands.emplace_back(Directory, StringRef(), > > Added: > cfe/trunk/test/Tooling/clang-check-mac-libcxx-fixed-compilation-db.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Tooling/clang-check-mac-libcxx-fixed-compilation-db.cpp?rev=351222&view=auto > > ============================================================================== > --- cfe/trunk/test/Tooling/clang-check-mac-libcxx-fixed-compilation-db.cpp > (added) > +++ cfe/trunk/test/Tooling/clang-check-mac-libcxx-fixed-compilation-db.cpp > Tue Jan 15 11:05:50 2019 > @@ -0,0 +1,16 @@ > +// Clang on MacOS can find libc++ living beside the installed compiler. > +// This test makes sure our libTooling-based tools emulate this properly > with > +// fixed compilation database. > +// > +// RUN: rm -rf %t > +// RUN: mkdir %t > +// > +// Install the mock libc++ (simulates the libc++ directory structure). > +// RUN: cp -r %S/Inputs/mock-libcxx %t/ > +// > +// RUN: cp clang-check %t/mock-libcxx/bin/ > +// RUN: cp "%s" "%t/test.cpp" > +// RUN: %t/mock-libcxx/bin/clang-check -p "%t" "%t/test.cpp" -- > -stdlib=libc++ > + > +#include <mock_vector> > +vector v; > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits