Index: cfe/trunk/include/clang/Tooling/Tooling.h =================================================================== --- cfe/trunk/include/clang/Tooling/Tooling.h +++ cfe/trunk/include/clang/Tooling/Tooling.h @@ -163,6 +163,8 @@ /// \param Code C++ code. /// \param Args Additional flags to pass on. /// \param FileName The file name which 'Code' will be mapped as. +/// \param ToolName The name of the binary running the tool. Standard library +/// header paths will be resolved relative to this. /// \param PCHContainerOps The PCHContainerOperations for loading and creating /// clang modules. /// @@ -170,6 +172,7 @@ bool runToolOnCodeWithArgs( clang::FrontendAction *ToolAction, const Twine &Code, const std::vector &Args, const Twine &FileName = "input.cc", + const Twine &ToolName = "clang-tool", std::shared_ptr PCHContainerOps = std::make_shared(), const FileContentMappings &VirtualMappedFiles = FileContentMappings()); @@ -192,13 +195,15 @@ /// \param Code C++ code. /// \param Args Additional flags to pass on. /// \param FileName The file name which 'Code' will be mapped as. +/// \param ToolName The name of the binary running the tool. Standard library +/// header paths will be resolved relative to this. /// \param PCHContainerOps The PCHContainerOperations for loading and creating /// clang modules. /// /// \return The resulting AST or null if an error occurred. std::unique_ptr buildASTFromCodeWithArgs( const Twine &Code, const std::vector &Args, - const Twine &FileName = "input.cc", + const Twine &FileName = "input.cc", const Twine &ToolName = "clang-tool", std::shared_ptr PCHContainerOps = std::make_shared()); Index: cfe/trunk/lib/Tooling/Tooling.cpp =================================================================== --- cfe/trunk/lib/Tooling/Tooling.cpp +++ cfe/trunk/lib/Tooling/Tooling.cpp @@ -103,14 +103,15 @@ const Twine &FileName, std::shared_ptr PCHContainerOps) { return runToolOnCodeWithArgs(ToolAction, Code, std::vector(), - FileName, PCHContainerOps); + FileName, "clang-tool", PCHContainerOps); } static std::vector -getSyntaxOnlyToolArgs(const std::vector &ExtraArgs, +getSyntaxOnlyToolArgs(const Twine &ToolName, + const std::vector &ExtraArgs, StringRef FileName) { std::vector Args; - Args.push_back("clang-tool"); + Args.push_back(ToolName.str()); Args.push_back("-fsyntax-only"); Args.insert(Args.end(), ExtraArgs.begin(), ExtraArgs.end()); Args.push_back(FileName.str()); @@ -120,6 +121,7 @@ bool runToolOnCodeWithArgs( clang::FrontendAction *ToolAction, const Twine &Code, const std::vector &Args, const Twine &FileName, + const Twine &ToolName, std::shared_ptr PCHContainerOps, const FileContentMappings &VirtualMappedFiles) { @@ -132,7 +134,7 @@ OverlayFileSystem->pushOverlay(InMemoryFileSystem); llvm::IntrusiveRefCntPtr Files( new FileManager(FileSystemOptions(), OverlayFileSystem)); - ToolInvocation Invocation(getSyntaxOnlyToolArgs(Args, FileNameRef), + ToolInvocation Invocation(getSyntaxOnlyToolArgs(ToolName, Args, FileNameRef), ToolAction, Files.get(), PCHContainerOps); SmallString<1024> CodeStorage; @@ -470,12 +472,12 @@ buildASTFromCode(const Twine &Code, const Twine &FileName, std::shared_ptr PCHContainerOps) { return buildASTFromCodeWithArgs(Code, std::vector(), FileName, - PCHContainerOps); + "clang-tool", PCHContainerOps); } std::unique_ptr buildASTFromCodeWithArgs( const Twine &Code, const std::vector &Args, - const Twine &FileName, + const Twine &FileName, const Twine &ToolName, std::shared_ptr PCHContainerOps) { SmallString<16> FileNameStorage; StringRef FileNameRef = FileName.toNullTerminatedStringRef(FileNameStorage); @@ -489,8 +491,8 @@ OverlayFileSystem->pushOverlay(InMemoryFileSystem); llvm::IntrusiveRefCntPtr Files( new FileManager(FileSystemOptions(), OverlayFileSystem)); - ToolInvocation Invocation(getSyntaxOnlyToolArgs(Args, FileNameRef), &Action, - Files.get(), PCHContainerOps); + ToolInvocation Invocation(getSyntaxOnlyToolArgs(ToolName, Args, FileNameRef), + &Action, Files.get(), PCHContainerOps); SmallString<1024> CodeStorage; InMemoryFileSystem->addFile(FileNameRef, 0, Index: cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.h =================================================================== --- cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.h +++ cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.h @@ -79,9 +79,9 @@ // Some tests need rtti/exceptions on Args.push_back("-frtti"); Args.push_back("-fexceptions"); - if (!runToolOnCodeWithArgs(Factory->create(), Code, Args, Filename, - std::make_shared(), - VirtualMappedFiles)) { + if (!runToolOnCodeWithArgs( + Factory->create(), Code, Args, Filename, "clang-tool", + std::make_shared(), VirtualMappedFiles)) { return testing::AssertionFailure() << "Parsing error in \"" << Code << "\""; } if (Found != DynamicFound) {