clang
9.0.0
|
#include "clang/Driver/SanitizerArgs.h"
#include "ToolChains/CommonArgs.h"
#include "clang/Basic/Sanitizers.h"
#include "clang/Driver/Driver.h"
#include "clang/Driver/DriverDiagnostic.h"
#include "clang/Driver/Options.h"
#include "clang/Driver/ToolChain.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/SpecialCaseList.h"
#include "llvm/Support/TargetParser.h"
#include <memory>
#include "clang/Basic/Sanitizers.def"
Go to the source code of this file.
Macros | |
#define | SANITIZER(NAME, ID) |
#define | SANITIZER_GROUP(NAME, ID, ALIAS) |
#define | SANITIZER(NAME, ID) |
Enumerations | |
enum | CoverageFeature { CoverageFunc = 1 << 0, CoverageBB = 1 << 1, CoverageEdge = 1 << 2, CoverageIndirCall = 1 << 3, CoverageTraceBB = 1 << 4, CoverageTraceCmp = 1 << 5, CoverageTraceDiv = 1 << 6, CoverageTraceGep = 1 << 7, Coverage8bitCounters = 1 << 8, CoverageTracePC = 1 << 9, CoverageTracePCGuard = 1 << 10, CoverageNoPrune = 1 << 11, CoverageInline8bitCounters = 1 << 12, CoveragePCTable = 1 << 13, CoverageStackDepth = 1 << 14 } |
Functions | |
static SanitizerMask | parseArgValues (const Driver &D, const llvm::opt::Arg *A, bool DiagnoseErrors) |
Parse a -fsanitize= or -fno-sanitize= argument's values, diagnosing any invalid components. More... | |
static int | parseCoverageFeatures (const Driver &D, const llvm::opt::Arg *A) |
Parse -f(no-)?sanitize-coverage= flag values, diagnosing any invalid components. More... | |
static std::string | lastArgumentForMask (const Driver &D, const llvm::opt::ArgList &Args, SanitizerMask Mask) |
Produce an argument string from ArgList Args , which shows how it provides some sanitizer kind from Mask . More... | |
static std::string | describeSanitizeArg (const llvm::opt::Arg *A, SanitizerMask Mask) |
Produce an argument string from argument A , which shows how it provides a value in Mask . More... | |
static std::string | toString (const clang::SanitizerSet &Sanitizers) |
Produce a string containing comma-separated names of sanitizers in Sanitizers set. More... | |
static void | addDefaultBlacklists (const Driver &D, SanitizerMask Kinds, std::vector< std::string > &BlacklistFiles) |
static SanitizerMask | setGroupBits (SanitizerMask Kinds) |
Sets group bits for every group that has at least one representative already enabled in Kinds . More... | |
static SanitizerMask | parseSanitizeTrapArgs (const Driver &D, const llvm::opt::ArgList &Args) |
static void | addIncludeLinkerOption (const ToolChain &TC, const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs, StringRef SymbolName) |
Variables | |
static const SanitizerMask | NeedsUbsanRt |
static const SanitizerMask | NeedsUbsanCxxRt |
static const SanitizerMask | NotAllowedWithTrap = SanitizerKind::Vptr |
static const SanitizerMask | NotAllowedWithMinimalRuntime |
static const SanitizerMask | RequiresPIE |
static const SanitizerMask | NeedsUnwindTables |
static const SanitizerMask | SupportsCoverage |
static const SanitizerMask | RecoverableByDefault |
static const SanitizerMask | Unrecoverable |
static const SanitizerMask | AlwaysRecoverable |
static const SanitizerMask | LegacyFsanitizeRecoverMask |
static const SanitizerMask | NeedsLTO = SanitizerKind::CFI |
static const SanitizerMask | TrappingSupported |
static const SanitizerMask | TrappingDefault = SanitizerKind::CFI |
static const SanitizerMask | CFIClasses |
static const SanitizerMask | CompatibleWithMinimalRuntime |
#define SANITIZER | ( | NAME, | |
ID | |||
) |
#define SANITIZER | ( | NAME, | |
ID | |||
) |
#define SANITIZER_GROUP | ( | NAME, | |
ID, | |||
ALIAS | |||
) |
enum CoverageFeature |
Definition at line 74 of file SanitizerArgs.cpp.
|
static |
Definition at line 120 of file SanitizerArgs.cpp.
References clang::driver::Driver::Diag(), and clang::driver::Driver::ResourceDir.
|
static |
Definition at line 851 of file SanitizerArgs.cpp.
References clang::driver::ToolChain::getTriple().
Referenced by clang::driver::SanitizerArgs::addArgs().
|
static |
Produce an argument string from argument A
, which shows how it provides a value in Mask
.
For instance, the argument "-fsanitize=address,alignment" with mask NeedsUbsanRt
would produce "-fsanitize=alignment".
Definition at line 1109 of file SanitizerArgs.cpp.
References clang::expandSanitizerGroups(), i, and clang::parseSanitizerValue().
Referenced by lastArgumentForMask(), and clang::driver::SanitizerArgs::SanitizerArgs().
|
static |
Produce an argument string from ArgList Args
, which shows how it provides some sanitizer kind from Mask
.
For example, the argument list "-fsanitize=thread,vptr -fsanitize=address" with mask NeedsUbsanRt
would produce "-fsanitize=vptr".
Definition at line 1089 of file SanitizerArgs.cpp.
References describeSanitizeArg(), clang::expandSanitizerGroups(), and parseArgValues().
Referenced by clang::driver::SanitizerArgs::addArgs(), and clang::driver::SanitizerArgs::SanitizerArgs().
|
static |
Parse a -fsanitize= or -fno-sanitize= argument's values, diagnosing any invalid components.
Returns a SanitizerMask.
Definition at line 1029 of file SanitizerArgs.cpp.
References clang::driver::Driver::Diag(), i, and clang::parseSanitizerValue().
Referenced by lastArgumentForMask(), parseSanitizeTrapArgs(), and clang::driver::SanitizerArgs::SanitizerArgs().
|
static |
Parse -f(no-)?sanitize-coverage= flag values, diagnosing any invalid components.
Returns OR of members of CoverageFeature
enumeration.
Definition at line 1058 of file SanitizerArgs.cpp.
References Coverage8bitCounters, CoverageBB, CoverageEdge, CoverageFunc, CoverageIndirCall, CoverageInline8bitCounters, CoverageNoPrune, CoveragePCTable, CoverageStackDepth, CoverageTraceBB, CoverageTraceCmp, CoverageTraceDiv, CoverageTraceGep, CoverageTracePC, CoverageTracePCGuard, clang::driver::Driver::Diag(), and i.
|
static |
Definition at line 163 of file SanitizerArgs.cpp.
References parseArgValues(), and setGroupBits().
Referenced by clang::driver::SanitizerArgs::SanitizerArgs().
|
static |
Sets group bits for every group that has at least one representative already enabled in Kinds
.
Definition at line 154 of file SanitizerArgs.cpp.
Referenced by parseSanitizeTrapArgs(), and clang::driver::SanitizerArgs::SanitizerArgs().
|
static |
Produce a string containing comma-separated names of sanitizers in Sanitizers
set.
Definition at line 839 of file SanitizerArgs.cpp.
Referenced by clang::driver::SanitizerArgs::addArgs(), addSanitizersAtO0(), clang::tooling::applyAtomicChanges(), clang::tooling::convertChangesToFileReplacements(), clang::tooling::CommonOptionsParser::create(), clang::tooling::internal::createExecutorFromCommandLineArgsImpl(), clang::ast_matchers::dynamic::Diagnostics::errors(), findBlockLocations(), clang::tooling::formatAndApplyAllReplacements(), clang::format::formatReplacements(), clang::APFixedPoint::getIntPart(), clang::tooling::Replacement::getReplacementText(), getStaticBooleanValue(), llvm::yaml::MappingTraits< clang::tooling::DiagnosticMessage >::mapping(), llvm::yaml::MappingTraits< TemplightEntry >::mapping(), clang::operator<<(), clang::serialization::reader::ASTDeclContextNameLookupTrait::ReadDataInto(), clang::ASTReader::ReadSubExpr(), clang::tooling::HeaderIncludes::remove(), clang::tooling::ReplaceStmtWithText::run(), clang::tooling::ReplaceNodeWithTemplate::run(), clang::tooling::ReplaceStmtWithStmt::run(), clang::tooling::ReplaceIfStmtWithItsBody::run(), clang::tooling::ClangTool::run(), and clang::SavedStreamPosition::~SavedStreamPosition().
|
static |
Definition at line 56 of file SanitizerArgs.cpp.
Referenced by emitCheckHandlerCall(), and getRecoverableKind().
|
static |
Definition at line 67 of file SanitizerArgs.cpp.
Referenced by clang::driver::SanitizerArgs::addArgs().
|
static |
Definition at line 71 of file SanitizerArgs.cpp.
|
static |
Definition at line 58 of file SanitizerArgs.cpp.
|
static |
Definition at line 60 of file SanitizerArgs.cpp.
Referenced by clang::driver::SanitizerArgs::needsLTO().
|
static |
Definition at line 31 of file SanitizerArgs.cpp.
Referenced by clang::driver::SanitizerArgs::SanitizerArgs().
|
static |
Definition at line 27 of file SanitizerArgs.cpp.
|
static |
Definition at line 38 of file SanitizerArgs.cpp.
Referenced by clang::driver::SanitizerArgs::needsUnwindTables().
|
static |
Definition at line 34 of file SanitizerArgs.cpp.
|
static |
Definition at line 33 of file SanitizerArgs.cpp.
Referenced by clang::driver::SanitizerArgs::SanitizerArgs().
|
static |
Definition at line 50 of file SanitizerArgs.cpp.
|
static |
Definition at line 36 of file SanitizerArgs.cpp.
Referenced by clang::driver::SanitizerArgs::requiresPIE().
|
static |
Definition at line 41 of file SanitizerArgs.cpp.
|
static |
Definition at line 66 of file SanitizerArgs.cpp.
|
static |
Definition at line 61 of file SanitizerArgs.cpp.
|
static |
Definition at line 54 of file SanitizerArgs.cpp.
Referenced by emitCheckHandlerCall(), and getRecoverableKind().