summaryrefslogtreecommitdiff
path: root/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc
diff options
context:
space:
mode:
authorMike Aizatsky <aizatsky@chromium.org>2017-01-05 03:14:35 +0000
committerMike Aizatsky <aizatsky@chromium.org>2017-01-05 03:14:35 +0000
commit73826d7ed91bb46f5561dc276c2c7a0e76f7f822 (patch)
tree9778bb5f9dc286c24f9a39562807ff984cc5f43b /lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc
parent966395dc4942565b1e71d81a322cc8ab5788db1c (diff)
[sancov] introducing SANCOV_OPTIONS
Summary: At this point SANCOV_OPTIONS are not functional but it is our intent to move here sanitizer coverage flags from various sanitizers _OPTIONS. Reviewers: kcc Subscribers: kubabrecka, mgorny Differential Revision: https://reviews.llvm.org/D28311 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@291068 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc')
-rw-r--r--lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc17
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc b/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc
index d83b77917..df6d10f81 100644
--- a/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc
+++ b/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc
@@ -8,6 +8,7 @@
//===----------------------------------------------------------------------===//
// Sanitizer Coverage Controller for Trace PC Guard.
+#include "sancov_flags.h"
#include "sanitizer_allocator_internal.h"
#include "sanitizer_atomic.h"
#include "sanitizer_common.h"
@@ -17,6 +18,7 @@ using namespace __sanitizer;
using AddressRange = LoadedModule::AddressRange;
+namespace __sancov {
namespace {
static const u64 Magic64 = 0xC0BFFFFFFFFFFF64ULL;
@@ -96,6 +98,10 @@ static void SanitizerDumpCoverage(const uptr* unsorted_pcs, uptr len) {
InternalFree(file_path);
InternalFree(module_name);
InternalFree(pcs);
+
+ if (sancov_flags()->symbolize) {
+ Printf("TODO(aizatsky): call sancov to symbolize\n");
+ }
}
// Collects trace-pc guard coverage.
@@ -106,6 +112,8 @@ class TracePcGuardController {
CHECK(!initialized);
initialized = true;
+ InitializeSancovFlags();
+
pc_vector.Initialize(0);
}
@@ -140,26 +148,27 @@ class TracePcGuardController {
static TracePcGuardController pc_guard_controller;
} // namespace
+} // namespace __sancov
extern "C" {
SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_dump_coverage( // NOLINT
const uptr* pcs, uptr len) {
- return SanitizerDumpCoverage(pcs, len);
+ return __sancov::SanitizerDumpCoverage(pcs, len);
}
SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void
__sanitizer_cov_trace_pc_guard(u32* guard) {
if (!*guard) return;
- pc_guard_controller.TracePcGuard(guard, GET_CALLER_PC() - 1);
+ __sancov::pc_guard_controller.TracePcGuard(guard, GET_CALLER_PC() - 1);
}
SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE void
__sanitizer_cov_trace_pc_guard_init(u32* start, u32* end) {
if (start == end || *start) return;
- pc_guard_controller.InitTracePcGuard(start, end);
+ __sancov::pc_guard_controller.InitTracePcGuard(start, end);
}
SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_dump_trace_pc_guard_coverage() {
- pc_guard_controller.Dump();
+ __sancov::pc_guard_controller.Dump();
}
} // extern "C"