[compiler-rt] 2d39559 - [SanitizerCoverage] Add compiler-rt test for -fsanitize-coverage=inline-bool-flag

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 9 13:49:23 PDT 2020


Author: Pratyai Mazumder
Date: 2020-04-09T13:49:13-07:00
New Revision: 2d39559d68aabfcf66546c339a2b3bcec59bd18c

URL: https://github.com/llvm/llvm-project/commit/2d39559d68aabfcf66546c339a2b3bcec59bd18c
DIFF: https://github.com/llvm/llvm-project/commit/2d39559d68aabfcf66546c339a2b3bcec59bd18c.diff

LOG: [SanitizerCoverage] Add compiler-rt test for -fsanitize-coverage=inline-bool-flag

Reviewers: kcc, vitalybuka

Reviewed By: vitalybuka

Subscribers: dberris, #sanitizers, llvm-commits

Tags: #sanitizers

Differential Revision: https://reviews.llvm.org/D77638

Added: 
    compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_inline_bool_flag.cpp

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_inline_bool_flag.cpp b/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_inline_bool_flag.cpp
new file mode 100644
index 000000000000..da13d83f9cb0
--- /dev/null
+++ b/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_inline_bool_flag.cpp
@@ -0,0 +1,42 @@
+// Tests -fsanitize-coverage=inline-bool-flag,pc-table
+//
+// REQUIRES: has_sancovcc,stable-runtime
+// UNSUPPORTED: i386-darwin
+//
+// RUN: %clangxx -O0 %s -fsanitize-coverage=inline-bool-flag,pc-table -o %t
+// RUN: %run %t 2>&1 | FileCheck %s
+// XFAIL: tsan
+
+#include <assert.h>
+#include <stdint.h>
+#include <stdio.h>
+
+const bool *first_flag;
+
+extern "C" void __sanitizer_cov_bool_flag_init(const bool *start,
+                                               const bool *end) {
+  printf("INIT: %p %p\n", start, end);
+  assert(end - start > 1);
+  first_flag = start;
+}
+
+uintptr_t FirstPC;
+uintptr_t FirstPCFlag;
+
+extern "C" void __sanitizer_cov_pcs_init(const uintptr_t *pcs_beg,
+                                         const uintptr_t *pcs_end) {
+  const uintptr_t *B = (const uintptr_t *)pcs_beg;
+  const uintptr_t *E = (const uintptr_t *)pcs_end;
+  assert(B + 1 < E);
+  FirstPC = B[0];
+  FirstPCFlag = B[1];
+}
+
+int main() {
+  assert(first_flag);
+  assert(*first_flag);
+  assert(FirstPC == (uintptr_t)&main);
+  assert(FirstPCFlag == 1);
+  fprintf(stderr, "PASS\n");
+  // CHECK: PASS
+}


        


More information about the llvm-commits mailing list