clang
3.7.0
|
#include "clang/Driver/SanitizerArgs.h"
#include "Tools.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 <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 | : SanitizerMask { NeedsUbsanRt = Undefined | Integer | CFI, NeedsUbsanCxxRt = Vptr | CFI, NotAllowedWithTrap = Vptr, RequiresPIE = Memory | DataFlow, NeedsUnwindTables = Address | Thread | Memory | DataFlow, SupportsCoverage = Address | Memory | Leak | Undefined | Integer | DataFlow, RecoverableByDefault = Undefined | Integer, Unrecoverable = Address | Unreachable | Return, LegacyFsanitizeRecoverMask = Undefined | Integer, NeedsLTO = CFI, TrappingSupported, TrappingDefault = CFI } |
enum | CoverageFeature { CoverageFunc = 1 << 0, CoverageBB = 1 << 1, CoverageEdge = 1 << 2, CoverageIndirCall = 1 << 3, CoverageTraceBB = 1 << 4, CoverageTraceCmp = 1 << 5, Coverage8bitCounters = 1 << 6 } |
Functions | |
static SanitizerMask | parseArgValues (const Driver &D, const llvm::opt::Arg *A, bool DiagnoseErrors) |
static int | parseCoverageFeatures (const Driver &D, const llvm::opt::Arg *A) |
static std::string | lastArgumentForMask (const Driver &D, const llvm::opt::ArgList &Args, SanitizerMask Mask) |
static std::string | describeSanitizeArg (const llvm::opt::Arg *A, SanitizerMask Mask) |
static std::string | toString (const clang::SanitizerSet &Sanitizers) |
static bool | getDefaultBlacklist (const Driver &D, SanitizerMask Kinds, std::string &BLPath) |
static SanitizerMask | setGroupBits (SanitizerMask Kinds) |
static SanitizerMask | parseSanitizeTrapArgs (const Driver &D, const llvm::opt::ArgList &Args) |
#define SANITIZER | ( | NAME, | |
ID | |||
) |
#define SANITIZER | ( | NAME, | |
ID | |||
) |
anonymous enum : SanitizerMask |
Definition at line 28 of file SanitizerArgs.cpp.
enum CoverageFeature |
Enumerator | |
---|---|
CoverageFunc | |
CoverageBB | |
CoverageEdge | |
CoverageIndirCall | |
CoverageTraceBB | |
CoverageTraceCmp | |
Coverage8bitCounters |
Definition at line 44 of file SanitizerArgs.cpp.
|
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 682 of file SanitizerArgs.cpp.
References clang::expandSanitizerGroups(), and clang::parseSanitizerValue().
Referenced by lastArgumentForMask(), and clang::driver::SanitizerArgs::SanitizerArgs().
|
static |
Definition at line 82 of file SanitizerArgs.cpp.
References clang::driver::Driver::ResourceDir.
Referenced by 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 662 of file SanitizerArgs.cpp.
References describeSanitizeArg(), clang::expandSanitizerGroups(), and parseArgValues().
Referenced by clang::driver::SanitizerArgs::SanitizerArgs().
|
static |
Parse a -fsanitize= or -fno-sanitize= argument's values, diagnosing any invalid components. Returns a SanitizerMask.
Definition at line 610 of file SanitizerArgs.cpp.
References clang::driver::Driver::Diag(), 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 639 of file SanitizerArgs.cpp.
References Coverage8bitCounters, CoverageBB, CoverageEdge, CoverageFunc, CoverageIndirCall, CoverageTraceBB, CoverageTraceCmp, and clang::driver::Driver::Diag().
Referenced by clang::driver::SanitizerArgs::SanitizerArgs().
|
static |
Definition at line 114 of file SanitizerArgs.cpp.
References clang::driver::Driver::Diag(), clang::expandSanitizerGroups(), clang::SanitizerSet::Mask, parseArgValues(), S, setGroupBits(), toString(), TrappingDefault, and TrappingSupported.
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 105 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 532 of file SanitizerArgs.cpp.
Referenced by clang::driver::SanitizerArgs::addArgs(), parseSanitizeTrapArgs(), and clang::driver::SanitizerArgs::SanitizerArgs().