|
clang
3.8.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 = DataFlow, NeedsUnwindTables = Address | Thread | Memory | DataFlow, SupportsCoverage = Address | Memory | Leak | Undefined | Integer | DataFlow, RecoverableByDefault = Undefined | Integer, Unrecoverable = 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) |
| 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 bool | getDefaultBlacklist (const Driver &D, SanitizerMask Kinds, std::string &BLPath) |
| 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) |
| #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 713 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 693 of file SanitizerArgs.cpp.
References describeSanitizeArg(), E, clang::expandSanitizerGroups(), I, 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 641 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 670 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 116 of file SanitizerArgs.cpp.
References clang::driver::Driver::Diag(), E, clang::expandSanitizerGroups(), I, 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 107 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 556 of file SanitizerArgs.cpp.
Referenced by clang::driver::SanitizerArgs::addArgs(), parseSanitizeTrapArgs(), and clang::driver::SanitizerArgs::SanitizerArgs().
1.8.6