From cc0c773f76cdf978304e8e27e3de10db83dd951f Mon Sep 17 00:00:00 2001 From: Kostya Serebryany Date: Tue, 3 Feb 2015 19:40:53 +0000 Subject: [PATCH] [sanitizer] move the coverage interface into a separate header, . NFC, except for the header name change. This may break existing users, but in this case it's better this way (not too many users so far) llvm-svn: 228017 --- compiler-rt/include/CMakeLists.txt | 1 + .../include/sanitizer/common_interface_defs.h | 20 ---------- compiler-rt/include/sanitizer/coverage_interface.h | 46 ++++++++++++++++++++++ .../Linux/coverage-caller-callee-total-count.cc | 2 +- .../TestCases/Linux/coverage-maybe-open-file.cc | 2 +- .../test/asan/TestCases/Linux/coverage-reset.cc | 2 +- .../asan/TestCases/Linux/coverage-sandboxing.cc | 2 +- compiler-rt/test/asan/TestCases/Linux/coverage.cc | 2 +- 8 files changed, 52 insertions(+), 25 deletions(-) create mode 100644 compiler-rt/include/sanitizer/coverage_interface.h diff --git a/compiler-rt/include/CMakeLists.txt b/compiler-rt/include/CMakeLists.txt index 7f8664e..ad1437e 100644 --- a/compiler-rt/include/CMakeLists.txt +++ b/compiler-rt/include/CMakeLists.txt @@ -2,6 +2,7 @@ set(SANITIZER_HEADERS sanitizer/allocator_interface.h sanitizer/asan_interface.h sanitizer/common_interface_defs.h + sanitizer/coverage_interface.h sanitizer/dfsan_interface.h sanitizer/linux_syscall_hooks.h sanitizer/lsan_interface.h diff --git a/compiler-rt/include/sanitizer/common_interface_defs.h b/compiler-rt/include/sanitizer/common_interface_defs.h index cfb06ea..ef645e5 100644 --- a/compiler-rt/include/sanitizer/common_interface_defs.h +++ b/compiler-rt/include/sanitizer/common_interface_defs.h @@ -62,26 +62,6 @@ extern "C" { void __sanitizer_unaligned_store32(void *p, uint32_t x); void __sanitizer_unaligned_store64(void *p, uint64_t x); - // Initialize coverage. - void __sanitizer_cov_init(); - // Record and dump coverage info. - void __sanitizer_cov_dump(); - // Open .sancov.packed in the coverage directory and return the file - // descriptor. Returns -1 on failure, or if coverage dumping is disabled. - // This is intended for use by sandboxing code. - intptr_t __sanitizer_maybe_open_cov_file(const char *name); - // Get the number of total unique covered entities (blocks, edges, calls). - // This can be useful for coverage-directed in-process fuzzers. - uintptr_t __sanitizer_get_total_unique_coverage(); - - // Reset the basic-block (edge) coverage to the initial state. - // Useful for in-process fuzzing to start collecting coverage from scratch. - // Experimental, will likely not work for multi-threaded process. - void __sanitizer_reset_coverage(); - // Set *data to the array of covered PCs and return the size of that array. - // Some of the entries in *data will be zero. - uintptr_t __sanitizer_get_coverage_guards(uintptr_t **data); - // Annotate the current state of a contiguous container, such as // std::vector, std::string or similar. // A contiguous container is a container that keeps all of its elements diff --git a/compiler-rt/include/sanitizer/coverage_interface.h b/compiler-rt/include/sanitizer/coverage_interface.h new file mode 100644 index 0000000..88a7e48 --- /dev/null +++ b/compiler-rt/include/sanitizer/coverage_interface.h @@ -0,0 +1,46 @@ +//===-- sanitizer/coverage_interface.h --------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Public interface for sanitizer coverage. +//===----------------------------------------------------------------------===// + +#ifndef SANITIZER_COVERAG_INTERFACE_H +#define SANITIZER_COVERAG_INTERFACE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + // Initialize coverage. + void __sanitizer_cov_init(); + // Record and dump coverage info. + void __sanitizer_cov_dump(); + // Open .sancov.packed in the coverage directory and return the file + // descriptor. Returns -1 on failure, or if coverage dumping is disabled. + // This is intended for use by sandboxing code. + intptr_t __sanitizer_maybe_open_cov_file(const char *name); + // Get the number of total unique covered entities (blocks, edges, calls). + // This can be useful for coverage-directed in-process fuzzers. + uintptr_t __sanitizer_get_total_unique_coverage(); + + // Reset the basic-block (edge) coverage to the initial state. + // Useful for in-process fuzzing to start collecting coverage from scratch. + // Experimental, will likely not work for multi-threaded process. + void __sanitizer_reset_coverage(); + // Set *data to the array of covered PCs and return the size of that array. + // Some of the entries in *data will be zero. + uintptr_t __sanitizer_get_coverage_guards(uintptr_t **data); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // SANITIZER_COVERAG_INTERFACE_H diff --git a/compiler-rt/test/asan/TestCases/Linux/coverage-caller-callee-total-count.cc b/compiler-rt/test/asan/TestCases/Linux/coverage-caller-callee-total-count.cc index 0201425..7598f6b 100644 --- a/compiler-rt/test/asan/TestCases/Linux/coverage-caller-callee-total-count.cc +++ b/compiler-rt/test/asan/TestCases/Linux/coverage-caller-callee-total-count.cc @@ -6,7 +6,7 @@ // // REQUIRES: asan-64-bits -#include +#include #include #include int P = 0; diff --git a/compiler-rt/test/asan/TestCases/Linux/coverage-maybe-open-file.cc b/compiler-rt/test/asan/TestCases/Linux/coverage-maybe-open-file.cc index 4664cef..4580de4 100644 --- a/compiler-rt/test/asan/TestCases/Linux/coverage-maybe-open-file.cc +++ b/compiler-rt/test/asan/TestCases/Linux/coverage-maybe-open-file.cc @@ -13,7 +13,7 @@ #include #include -#include +#include int main(int argc, char **argv) { int fd = __sanitizer_maybe_open_cov_file("test"); diff --git a/compiler-rt/test/asan/TestCases/Linux/coverage-reset.cc b/compiler-rt/test/asan/TestCases/Linux/coverage-reset.cc index dedea9e..d3d35e2 100644 --- a/compiler-rt/test/asan/TestCases/Linux/coverage-reset.cc +++ b/compiler-rt/test/asan/TestCases/Linux/coverage-reset.cc @@ -3,7 +3,7 @@ // RUN: %clangxx_asan -fsanitize-coverage=1 %s -o %t // RUN: ASAN_OPTIONS=coverage=1 %run %t -#include +#include #include #include static volatile int sink; diff --git a/compiler-rt/test/asan/TestCases/Linux/coverage-sandboxing.cc b/compiler-rt/test/asan/TestCases/Linux/coverage-sandboxing.cc index 56f9c40..1a72c6b 100644 --- a/compiler-rt/test/asan/TestCases/Linux/coverage-sandboxing.cc +++ b/compiler-rt/test/asan/TestCases/Linux/coverage-sandboxing.cc @@ -27,7 +27,7 @@ #include #include -#include +#include #define bb0(n) \ case n: \ diff --git a/compiler-rt/test/asan/TestCases/Linux/coverage.cc b/compiler-rt/test/asan/TestCases/Linux/coverage.cc index f6eb0ae..06fe1a2 100644 --- a/compiler-rt/test/asan/TestCases/Linux/coverage.cc +++ b/compiler-rt/test/asan/TestCases/Linux/coverage.cc @@ -13,7 +13,7 @@ // https://code.google.com/p/address-sanitizer/issues/detail?id=263 // XFAIL: android -#include "sanitizer/common_interface_defs.h" +#include #include #include #include -- 2.7.4