|
LLVM
4.0.0
|
#include "llvm/ADT/ArrayRef.h"#include "llvm/ADT/SmallVector.h"#include "llvm/Analysis/EHPersonalities.h"#include "llvm/Analysis/PostDominators.h"#include "llvm/IR/CFG.h"#include "llvm/IR/CallSite.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/DebugInfo.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/Function.h"#include "llvm/IR/IRBuilder.h"#include "llvm/IR/InlineAsm.h"#include "llvm/IR/LLVMContext.h"#include "llvm/IR/MDBuilder.h"#include "llvm/IR/Module.h"#include "llvm/IR/Type.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Debug.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Transforms/Instrumentation.h"#include "llvm/Transforms/Scalar.h"#include "llvm/Transforms/Utils/BasicBlockUtils.h"#include "llvm/Transforms/Utils/ModuleUtils.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "sancov" |
Functions | |
| static bool | isFullDominator (const BasicBlock *BB, const DominatorTree *DT) |
| static bool | isFullPostDominator (const BasicBlock *BB, const PostDominatorTree *PDT) |
| static bool | shouldInstrumentBlock (const Function &F, const BasicBlock *BB, const DominatorTree *DT, const PostDominatorTree *PDT) |
| INITIALIZE_PASS_BEGIN (SanitizerCoverageModule,"sancov","SanitizerCoverage: TODO.""ModulePass", false, false) INITIALIZE_PASS_END(SanitizerCoverageModule | |
Variables | |
| static const char *const | SanCovModuleInitName = "__sanitizer_cov_module_init" |
| static const char *const | SanCovName = "__sanitizer_cov" |
| static const char *const | SanCovWithCheckName = "__sanitizer_cov_with_check" |
| static const char *const | SanCovIndirCallName = "__sanitizer_cov_indir_call16" |
| static const char *const | SanCovTracePCIndirName |
| static const char *const | SanCovTraceEnterName |
| static const char *const | SanCovTraceBBName |
| static const char *const | SanCovTracePCName = "__sanitizer_cov_trace_pc" |
| static const char *const | SanCovTraceCmp1 = "__sanitizer_cov_trace_cmp1" |
| static const char *const | SanCovTraceCmp2 = "__sanitizer_cov_trace_cmp2" |
| static const char *const | SanCovTraceCmp4 = "__sanitizer_cov_trace_cmp4" |
| static const char *const | SanCovTraceCmp8 = "__sanitizer_cov_trace_cmp8" |
| static const char *const | SanCovTraceDiv4 = "__sanitizer_cov_trace_div4" |
| static const char *const | SanCovTraceDiv8 = "__sanitizer_cov_trace_div8" |
| static const char *const | SanCovTraceGep = "__sanitizer_cov_trace_gep" |
| static const char *const | SanCovTraceSwitchName = "__sanitizer_cov_trace_switch" |
| static const char *const | SanCovModuleCtorName = "sancov.module_ctor" |
| static const uint64_t | SanCtorAndDtorPriority = 2 |
| static const char *const | SanCovTracePCGuardSection = "__sancov_guards" |
| static const char *const | SanCovTracePCGuardName |
| static const char *const | SanCovTracePCGuardInitName |
| static cl::opt< int > | ClCoverageLevel ("sanitizer-coverage-level", cl::desc("Sanitizer Coverage. 0: none, 1: entry block, 2: all blocks, ""3: all blocks and critical edges, ""4: above plus indirect calls"), cl::Hidden, cl::init(0)) |
| static cl::opt< unsigned > | ClCoverageBlockThreshold ("sanitizer-coverage-block-threshold", cl::desc("Use a callback with a guard check inside it if there are"" more than this number of blocks."), cl::Hidden, cl::init(500)) |
| static cl::opt< bool > | ClExperimentalTracing ("sanitizer-coverage-experimental-tracing", cl::desc("Experimental basic-block tracing: insert ""callbacks at every basic block"), cl::Hidden, cl::init(false)) |
| static cl::opt< bool > | ClExperimentalTracePC ("sanitizer-coverage-trace-pc", cl::desc("Experimental pc tracing"), cl::Hidden, cl::init(false)) |
| static cl::opt< bool > | ClTracePCGuard ("sanitizer-coverage-trace-pc-guard", cl::desc("pc tracing with a guard"), cl::Hidden, cl::init(false)) |
| static cl::opt< bool > | ClCMPTracing ("sanitizer-coverage-trace-compares", cl::desc("Tracing of CMP and similar instructions"), cl::Hidden, cl::init(false)) |
| static cl::opt< bool > | ClDIVTracing ("sanitizer-coverage-trace-divs", cl::desc("Tracing of DIV instructions"), cl::Hidden, cl::init(false)) |
| static cl::opt< bool > | ClGEPTracing ("sanitizer-coverage-trace-geps", cl::desc("Tracing of GEP instructions"), cl::Hidden, cl::init(false)) |
| static cl::opt< bool > | ClPruneBlocks ("sanitizer-coverage-prune-blocks", cl::desc("Reduce the number of instrumented blocks"), cl::Hidden, cl::init(true)) |
| static cl::opt< bool > | ClUse8bitCounters ("sanitizer-coverage-8bit-counters", cl::desc("Experimental 8-bit counters"), cl::Hidden, cl::init(false)) |
| sancov | |
| SanitizerCoverage | __pad0__ |
| SanitizerCoverage | false |
| #define DEBUG_TYPE "sancov" |
Definition at line 57 of file SanitizerCoverage.cpp.
| INITIALIZE_PASS_BEGIN | ( | SanitizerCoverageModule | , |
| "sancov" | , | ||
| "SanitizerCoverage: TODO.""ModulePass" | , | ||
| false | , | ||
| false | |||
| ) |
|
static |
Definition at line 402 of file SanitizerCoverage.cpp.
References llvm::DominatorTree::dominates(), llvm::make_range(), llvm::succ_begin(), and llvm::succ_end().
Referenced by shouldInstrumentBlock().
|
static |
Definition at line 415 of file SanitizerCoverage.cpp.
References llvm::DominatorTreeBase< N >::dominates(), llvm::make_range(), llvm::pred_begin(), and llvm::pred_end().
Referenced by shouldInstrumentBlock().
|
static |
Definition at line 428 of file SanitizerCoverage.cpp.
References ClPruneBlocks, llvm::Function::getEntryBlock(), llvm::BasicBlock::getTerminator(), isFullDominator(), and isFullPostDominator().
| SanitizerCoverage __pad0__ |
Definition at line 765 of file SanitizerCoverage.cpp.
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
Referenced by shouldInstrumentBlock().
|
static |
|
static |
| SanitizerCoverage false |
Definition at line 765 of file SanitizerCoverage.cpp.
| sancov |
Definition at line 765 of file SanitizerCoverage.cpp.
Definition at line 62 of file SanitizerCoverage.cpp.
Definition at line 78 of file SanitizerCoverage.cpp.
Definition at line 59 of file SanitizerCoverage.cpp.
Definition at line 60 of file SanitizerCoverage.cpp.
Definition at line 67 of file SanitizerCoverage.cpp.
Definition at line 70 of file SanitizerCoverage.cpp.
Definition at line 71 of file SanitizerCoverage.cpp.
Definition at line 72 of file SanitizerCoverage.cpp.
Definition at line 73 of file SanitizerCoverage.cpp.
Definition at line 74 of file SanitizerCoverage.cpp.
Definition at line 75 of file SanitizerCoverage.cpp.
Definition at line 65 of file SanitizerCoverage.cpp.
Definition at line 76 of file SanitizerCoverage.cpp.
Definition at line 84 of file SanitizerCoverage.cpp.
Definition at line 82 of file SanitizerCoverage.cpp.
Definition at line 81 of file SanitizerCoverage.cpp.
Definition at line 63 of file SanitizerCoverage.cpp.
Definition at line 69 of file SanitizerCoverage.cpp.
Definition at line 77 of file SanitizerCoverage.cpp.
Definition at line 61 of file SanitizerCoverage.cpp.
|
static |
Definition at line 79 of file SanitizerCoverage.cpp.
1.8.6