Author: samsonov Date: Wed Oct 15 14:57:45 2014 New Revision: 219840 URL: http://llvm.org/viewvc/llvm-project?rev=219840&view=rev Log: Move SanitizerBlacklist to clangBasic. NFC.
This change moves SanitizerBlacklist.h from lib/CodeGen to public Clang headers in include/clang/Basic. SanitizerBlacklist is currently only used in CodeGen to decide which functions/modules should be instrumented, but this will soon change as ASan will optionally modify class layouts during AST construction (http://reviews.llvm.org/D5687). We need blacklist machinery to be available at this point. Added: cfe/trunk/include/clang/Basic/SanitizerBlacklist.h - copied, changed from r219818, cfe/trunk/lib/CodeGen/SanitizerBlacklist.h cfe/trunk/lib/Basic/SanitizerBlacklist.cpp - copied, changed from r219818, cfe/trunk/lib/CodeGen/SanitizerBlacklist.cpp Removed: cfe/trunk/lib/CodeGen/SanitizerBlacklist.cpp cfe/trunk/lib/CodeGen/SanitizerBlacklist.h Modified: cfe/trunk/lib/Basic/CMakeLists.txt cfe/trunk/lib/CodeGen/CMakeLists.txt cfe/trunk/lib/CodeGen/CodeGenModule.h Copied: cfe/trunk/include/clang/Basic/SanitizerBlacklist.h (from r219818, cfe/trunk/lib/CodeGen/SanitizerBlacklist.h) URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/SanitizerBlacklist.h?p2=cfe/trunk/include/clang/Basic/SanitizerBlacklist.h&p1=cfe/trunk/lib/CodeGen/SanitizerBlacklist.h&r1=219818&r2=219840&rev=219840&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/SanitizerBlacklist.h (original) +++ cfe/trunk/include/clang/Basic/SanitizerBlacklist.h Wed Oct 15 14:57:45 2014 @@ -11,8 +11,8 @@ // sanitizers. // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_LIB_CODEGEN_SANITIZERBLACKLIST_H -#define LLVM_CLANG_LIB_CODEGEN_SANITIZERBLACKLIST_H +#ifndef LLVM_CLANG_BASIC_SANITIZERBLACKLIST_H +#define LLVM_CLANG_BASIC_SANITIZERBLACKLIST_H #include "clang/Basic/LLVM.h" #include "llvm/ADT/StringRef.h" @@ -26,7 +26,6 @@ class Module; } namespace clang { -namespace CodeGen { class SanitizerBlacklist { std::unique_ptr<llvm::SpecialCaseList> SCL; @@ -41,7 +40,7 @@ public: StringRef Category = StringRef()) const; bool isBlacklistedType(StringRef MangledTypeName) const; }; -} // end namespace CodeGen + } // end namespace clang #endif Modified: cfe/trunk/lib/Basic/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/CMakeLists.txt?rev=219840&r1=219839&r2=219840&view=diff ============================================================================== --- cfe/trunk/lib/Basic/CMakeLists.txt (original) +++ cfe/trunk/lib/Basic/CMakeLists.txt Wed Oct 15 14:57:45 2014 @@ -17,6 +17,7 @@ add_clang_library(clangBasic ObjCRuntime.cpp OpenMPKinds.cpp OperatorPrecedence.cpp + SanitizerBlacklist.cpp SourceLocation.cpp SourceManager.cpp TargetInfo.cpp Copied: cfe/trunk/lib/Basic/SanitizerBlacklist.cpp (from r219818, cfe/trunk/lib/CodeGen/SanitizerBlacklist.cpp) URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/SanitizerBlacklist.cpp?p2=cfe/trunk/lib/Basic/SanitizerBlacklist.cpp&p1=cfe/trunk/lib/CodeGen/SanitizerBlacklist.cpp&r1=219818&r2=219840&rev=219840&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/SanitizerBlacklist.cpp (original) +++ cfe/trunk/lib/Basic/SanitizerBlacklist.cpp Wed Oct 15 14:57:45 2014 @@ -11,13 +11,12 @@ // sanitizers. // //===----------------------------------------------------------------------===// -#include "SanitizerBlacklist.h" +#include "clang/Basic/SanitizerBlacklist.h" #include "llvm/IR/Function.h" #include "llvm/IR/GlobalValue.h" #include "llvm/IR/Module.h" using namespace clang; -using namespace CodeGen; static StringRef GetGlobalTypeString(const llvm::GlobalValue &G) { // Types of GlobalVariables are always pointer types. Modified: cfe/trunk/lib/CodeGen/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CMakeLists.txt?rev=219840&r1=219839&r2=219840&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CMakeLists.txt (original) +++ cfe/trunk/lib/CodeGen/CMakeLists.txt Wed Oct 15 14:57:45 2014 @@ -61,7 +61,6 @@ add_clang_library(clangCodeGen ItaniumCXXABI.cpp MicrosoftCXXABI.cpp ModuleBuilder.cpp - SanitizerBlacklist.cpp SanitizerMetadata.cpp TargetInfo.cpp Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=219840&r1=219839&r2=219840&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CodeGenModule.h (original) +++ cfe/trunk/lib/CodeGen/CodeGenModule.h Wed Oct 15 14:57:45 2014 @@ -16,7 +16,6 @@ #include "CGVTables.h" #include "CodeGenTypes.h" -#include "SanitizerBlacklist.h" #include "SanitizerMetadata.h" #include "clang/AST/Attr.h" #include "clang/AST/DeclCXX.h" @@ -26,6 +25,7 @@ #include "clang/Basic/ABI.h" #include "clang/Basic/LangOptions.h" #include "clang/Basic/Module.h" +#include "clang/Basic/SanitizerBlacklist.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/SetVector.h" #include "llvm/ADT/SmallPtrSet.h" Removed: cfe/trunk/lib/CodeGen/SanitizerBlacklist.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/SanitizerBlacklist.cpp?rev=219839&view=auto ============================================================================== --- cfe/trunk/lib/CodeGen/SanitizerBlacklist.cpp (original) +++ cfe/trunk/lib/CodeGen/SanitizerBlacklist.cpp (removed) @@ -1,52 +0,0 @@ -//===--- SanitizerBlacklist.cpp - Blacklist for sanitizers ----------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// User-provided blacklist used to disable/alter instrumentation done in -// sanitizers. -// -//===----------------------------------------------------------------------===// -#include "SanitizerBlacklist.h" -#include "llvm/IR/Function.h" -#include "llvm/IR/GlobalValue.h" -#include "llvm/IR/Module.h" - -using namespace clang; -using namespace CodeGen; - -static StringRef GetGlobalTypeString(const llvm::GlobalValue &G) { - // Types of GlobalVariables are always pointer types. - llvm::Type *GType = G.getType()->getElementType(); - // For now we support blacklisting struct types only. - if (llvm::StructType *SGType = dyn_cast<llvm::StructType>(GType)) { - if (!SGType->isLiteral()) - return SGType->getName(); - } - return "<unknown type>"; -} - -bool SanitizerBlacklist::isIn(const llvm::Module &M, - StringRef Category) const { - return SCL->inSection("src", M.getModuleIdentifier(), Category); -} - -bool SanitizerBlacklist::isIn(const llvm::Function &F) const { - return isIn(*F.getParent()) || - SCL->inSection("fun", F.getName(), ""); -} - -bool SanitizerBlacklist::isIn(const llvm::GlobalVariable &G, - StringRef Category) const { - return isIn(*G.getParent(), Category) || - SCL->inSection("global", G.getName(), Category) || - SCL->inSection("type", GetGlobalTypeString(G), Category); -} - -bool SanitizerBlacklist::isBlacklistedType(StringRef MangledTypeName) const { - return SCL->inSection("type", MangledTypeName); -} Removed: cfe/trunk/lib/CodeGen/SanitizerBlacklist.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/SanitizerBlacklist.h?rev=219839&view=auto ============================================================================== --- cfe/trunk/lib/CodeGen/SanitizerBlacklist.h (original) +++ cfe/trunk/lib/CodeGen/SanitizerBlacklist.h (removed) @@ -1,47 +0,0 @@ -//===--- SanitizerBlacklist.h - Blacklist for sanitizers --------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// User-provided blacklist used to disable/alter instrumentation done in -// sanitizers. -// -//===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_LIB_CODEGEN_SANITIZERBLACKLIST_H -#define LLVM_CLANG_LIB_CODEGEN_SANITIZERBLACKLIST_H - -#include "clang/Basic/LLVM.h" -#include "llvm/ADT/StringRef.h" -#include "llvm/Support/SpecialCaseList.h" -#include <memory> - -namespace llvm { -class GlobalVariable; -class Function; -class Module; -} - -namespace clang { -namespace CodeGen { - -class SanitizerBlacklist { - std::unique_ptr<llvm::SpecialCaseList> SCL; - -public: - SanitizerBlacklist(std::unique_ptr<llvm::SpecialCaseList> SCL) - : SCL(std::move(SCL)) {} - bool isIn(const llvm::Module &M, - StringRef Category = StringRef()) const; - bool isIn(const llvm::Function &F) const; - bool isIn(const llvm::GlobalVariable &G, - StringRef Category = StringRef()) const; - bool isBlacklistedType(StringRef MangledTypeName) const; -}; -} // end namespace CodeGen -} // end namespace clang - -#endif _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
