diff options
| author | Matt Morehouse <mascasa@google.com> | 2017-08-18 18:43:30 +0000 |
|---|---|---|
| committer | Matt Morehouse <mascasa@google.com> | 2017-08-18 18:43:30 +0000 |
| commit | 5c7fc76983f609894c1b24f6c03195a5db00d718 (patch) | |
| tree | 7c840a35f129ac84624bc7f7c7fc34ad12fa6c50 /llvm/lib/Fuzzer/FuzzerTracePC.h | |
| parent | 6178cfaf7bd4144371b75279e903f6fcc405b6f3 (diff) | |
| download | bcm5719-llvm-5c7fc76983f609894c1b24f6c03195a5db00d718.tar.gz bcm5719-llvm-5c7fc76983f609894c1b24f6c03195a5db00d718.zip | |
[SanitizerCoverage] Add stack depth tracing instrumentation.
Summary:
Augment SanitizerCoverage to insert maximum stack depth tracing for
use by libFuzzer. The new instrumentation is enabled by the flag
-fsanitize-coverage=stack-depth and is compatible with the existing
trace-pc-guard coverage. The user must also declare the following
global variable in their code:
thread_local uintptr_t __sancov_lowest_stack
https://bugs.llvm.org/show_bug.cgi?id=33857
Reviewers: vitalybuka, kcc
Reviewed By: vitalybuka
Subscribers: kubamracek, hiraditya, cfe-commits, llvm-commits
Differential Revision: https://reviews.llvm.org/D36839
llvm-svn: 311186
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerTracePC.h')
| -rw-r--r-- | llvm/lib/Fuzzer/FuzzerTracePC.h | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerTracePC.h b/llvm/lib/Fuzzer/FuzzerTracePC.h index 40827b32828..56f1820f79e 100644 --- a/llvm/lib/Fuzzer/FuzzerTracePC.h +++ b/llvm/lib/Fuzzer/FuzzerTracePC.h @@ -120,19 +120,8 @@ class TracePC { return PCs()[Idx]; } - void RecordCurrentStack() { - uintptr_t Stack = GetCurrentStack(); - if (Stack < LowestStack) - LowestStack = Stack; - } - void RecordInitialStack() { - InitialStack = GetCurrentStack(); - LowestStack = InitialStack; - } - uintptr_t GetCurrentStack() const { - return reinterpret_cast<uintptr_t>(__builtin_frame_address(0)); - } - uintptr_t GetMaxStackOffset() const { return InitialStack - LowestStack; } + void RecordInitialStack(); + uintptr_t GetMaxStackOffset() const; template<class CallBack> void ForEachObservedPC(CallBack CB) { @@ -167,7 +156,7 @@ private: std::set<uintptr_t> ObservedPCs; ValueBitMap ValueProfileMap; - uintptr_t InitialStack, LowestStack; // Assume stack grows down. + uintptr_t InitialStack; }; template <class Callback> |

