diff options
author | Ilya Biryukov <ibiryukov@google.com> | 2019-11-21 11:31:14 +0100 |
---|---|---|
committer | Ilya Biryukov <ibiryukov@google.com> | 2019-11-21 11:31:14 +0100 |
commit | 9f3fdb0d7fab73083e354768eb5808597474e1b8 (patch) | |
tree | 06d73f024ad370c2255094ff3608056ce1e93374 /clang/unittests/Driver/SanitizerArgsTest.cpp | |
parent | 2229391eb1632893571a435dd00f4ee71b5dbaf7 (diff) | |
download | bcm5719-llvm-9f3fdb0d7fab73083e354768eb5808597474e1b8.tar.gz bcm5719-llvm-9f3fdb0d7fab73083e354768eb5808597474e1b8.zip |
Revert "[Driver] Use VFS to check if sanitizer blacklists exist"
This reverts commit ba6f906854263375cff3257d22d241a8a259cf77.
Commit caused compilation errors on llvm tests. Will fix and re-land.
Diffstat (limited to 'clang/unittests/Driver/SanitizerArgsTest.cpp')
-rw-r--r-- | clang/unittests/Driver/SanitizerArgsTest.cpp | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/clang/unittests/Driver/SanitizerArgsTest.cpp b/clang/unittests/Driver/SanitizerArgsTest.cpp deleted file mode 100644 index 164bc68051f..00000000000 --- a/clang/unittests/Driver/SanitizerArgsTest.cpp +++ /dev/null @@ -1,141 +0,0 @@ -//===- unittests/Driver/SanitizerArgsTest.cpp -----------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#include "clang/Basic/Diagnostic.h" -#include "clang/Basic/DiagnosticIDs.h" -#include "clang/Basic/DiagnosticOptions.h" -#include "clang/Driver/Compilation.h" -#include "clang/Driver/Driver.h" -#include "clang/Driver/Job.h" -#include "clang/Frontend/TextDiagnosticPrinter.h" -#include "llvm/ADT/ArrayRef.h" -#include "llvm/ADT/IntrusiveRefCntPtr.h" -#include "llvm/ADT/Optional.h" -#include "llvm/ADT/SmallString.h" -#include "llvm/ADT/StringRef.h" -#include "llvm/Support/Host.h" -#include "llvm/Support/MemoryBuffer.h" -#include "llvm/Support/Path.h" -#include "llvm/Support/VirtualFileSystem.h" -#include "llvm/Support/raw_ostream.h" -#include "gmock/gmock.h" -#include "gtest/gtest.h" -#include <cstdlib> -#include <memory> -#include <string> -using namespace clang; -using namespace clang::driver; - -using ::testing::Contains; -using ::testing::StrEq; - -namespace { - -static constexpr const char *ClangBinary = "clang"; -static constexpr const char *InputFile = "/sources/foo.c"; - -std::string concatPaths(llvm::ArrayRef<StringRef> Components) { - llvm::SmallString<128> P; - for (StringRef C : Components) - llvm::sys::path::append(P, C); - return P.str().str(); -} - -class SanitizerArgsTest : public ::testing::Test { -protected: - const Command &emulateSingleCompilation(std::vector<std::string> ExtraArgs, - std::vector<std::string> ExtraFiles) { - assert(!Driver && "Running twice is not allowed"); - - llvm::IntrusiveRefCntPtr<DiagnosticOptions> Opts = new DiagnosticOptions; - DiagnosticsEngine Diags( - new DiagnosticIDs, Opts, - new TextDiagnosticPrinter(llvm::errs(), Opts.get())); - Driver.emplace(ClangBinary, "x86_64-unknown-linux-gnu", Diags, - prepareFS(ExtraFiles)); - - std::vector<const char *> Args = {ClangBinary}; - for (const auto &A : ExtraArgs) - Args.push_back(A.c_str()); - Args.push_back("-c"); - Args.push_back(InputFile); - - Compilation.reset(Driver->BuildCompilation(Args)); - - if (Diags.hasErrorOccurred()) - ADD_FAILURE() << "Error occurred while parsing compilation arguments. " - "See stderr for details."; - - const auto &Commands = Compilation->getJobs().getJobs(); - assert(Commands.size() == 1); - return *Commands.front(); - } - -private: - llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> - prepareFS(llvm::ArrayRef<std::string> ExtraFiles) { - llvm::IntrusiveRefCntPtr<llvm::vfs::InMemoryFileSystem> FS = - new llvm::vfs::InMemoryFileSystem; - FS->addFile(ClangBinary, time_t(), llvm::MemoryBuffer::getMemBuffer("")); - FS->addFile(InputFile, time_t(), llvm::MemoryBuffer::getMemBuffer("")); - for (llvm::StringRef F : ExtraFiles) - FS->addFile(F, time_t(), llvm::MemoryBuffer::getMemBuffer("")); - return FS; - } - - llvm::Optional<Driver> Driver; - std::unique_ptr<driver::Compilation> Compilation; -}; - -TEST_F(SanitizerArgsTest, Blacklists) { - const std::string ResourceDir = "/opt/llvm/lib/resources"; - const std::string UserBlacklist = "/source/my_blacklist.txt"; - const std::string ASanBlacklist = - concatPaths({ResourceDir, "share", "asan_blacklist.txt"}); - - auto &Command = emulateSingleCompilation( - /*ExtraArgs=*/{"-fsanitize=address", "-resource-dir", ResourceDir, - std::string("-fsanitize-blacklist=") + UserBlacklist}, - /*ExtraFiles=*/{ASanBlacklist, UserBlacklist}); - - // System blacklists are added based on resource-dir. - EXPECT_THAT(Command.getArguments(), - Contains(StrEq(std::string("-fsanitize-system-blacklist=") + - ASanBlacklist))); - // User blacklists should also be added. - EXPECT_THAT( - Command.getArguments(), - Contains(StrEq(std::string("-fsanitize-blacklist=") + UserBlacklist))); -} - -TEST_F(SanitizerArgsTest, XRayLists) { - const std::string XRayWhitelist = "/source/xray_whitelist.txt"; - const std::string XRayBlacklist = "/source/xray_blacklist.txt"; - const std::string XRayAttrList = "/source/xray_attr_list.txt"; - - auto &Command = emulateSingleCompilation( - /*ExtraArgs=*/ - { - "-fxray-instrument", - "-fxray-always-instrument=" + XRayWhitelist, - "-fxray-never-instrument=" + XRayBlacklist, - "-fxray-attr-list=" + XRayAttrList, - }, - /*ExtraFiles=*/{XRayWhitelist, XRayBlacklist, XRayAttrList}); - - // Blacklists exist in the filesystem, so they should be added to the - // compilation command, produced by the driver. - EXPECT_THAT(Command.getArguments(), - Contains(StrEq("-fxray-always-instrument=" + XRayWhitelist))); - EXPECT_THAT(Command.getArguments(), - Contains(StrEq("-fxray-never-instrument=" + XRayBlacklist))); - EXPECT_THAT(Command.getArguments(), - Contains(StrEq("-fxray-attr-list=" + XRayAttrList))); -} - -} // namespace |