[PATCH] D28433: [libFuzzer] Fix Sanitizer Coverage.

Marcos Pividori via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 6 19:29:23 PST 2017


mpividori created this revision.
mpividori added reviewers: kcc, aizatsky, rnk, zturner.
mpividori added a subscriber: llvm-commits.
mpividori set the repository for this revision to rL LLVM.

This changes are related to the changes in compiler-rt to fix Sanitizer Coverage for Windows (https://reviews.llvm.org/D28432)
We need to export the functions when we want to change the default implementation.


Repository:
  rL LLVM

https://reviews.llvm.org/D28433

Files:
  lib/Fuzzer/FuzzerTracePC.cpp


Index: lib/Fuzzer/FuzzerTracePC.cpp
===================================================================
--- lib/Fuzzer/FuzzerTracePC.cpp
+++ lib/Fuzzer/FuzzerTracePC.cpp
@@ -265,43 +265,42 @@
 
 } // namespace fuzzer
 
+#if LIBFUZZER_WINDOWS
+#define COVERAGE_WEAK(Name) __declspec(dllexport) Name##_impl
+#else
+#define COVERAGE_WEAK(Name) __attribute__((visibility("default"))) Name
+#endif
+
 extern "C" {
-__attribute__((visibility("default")))
-void __sanitizer_cov_trace_pc_guard(uint32_t *Guard) {
+void COVERAGE_WEAK(__sanitizer_cov_trace_pc_guard)(uint32_t *Guard) {
   uintptr_t PC = (uintptr_t)__builtin_return_address(0);
   fuzzer::TPC.HandleTrace(Guard, PC);
 }
 
-__attribute__((visibility("default")))
-void __sanitizer_cov_trace_pc_guard_init(uint32_t *Start, uint32_t *Stop) {
+void COVERAGE_WEAK(__sanitizer_cov_trace_pc_guard_init)(uint32_t *Start,
+                                                        uint32_t *Stop) {
   fuzzer::TPC.HandleInit(Start, Stop);
 }
 
-__attribute__((visibility("default")))
-void __sanitizer_cov_trace_pc_indir(uintptr_t Callee) {
+void COVERAGE_WEAK(__sanitizer_cov_trace_pc_indir)(uintptr_t Callee) {
   uintptr_t PC = (uintptr_t)__builtin_return_address(0);
   fuzzer::TPC.HandleCallerCallee(PC, Callee);
 }
 
-__attribute__((visibility("default")))
-void __sanitizer_cov_trace_cmp8(uint64_t Arg1, uint64_t Arg2) {
+void COVERAGE_WEAK(__sanitizer_cov_trace_cmp8)(uint64_t Arg1, uint64_t Arg2) {
   fuzzer::TPC.HandleCmp(__builtin_return_address(0), Arg1, Arg2);
 }
-__attribute__((visibility("default")))
-void __sanitizer_cov_trace_cmp4(uint32_t Arg1, uint32_t Arg2) {
+void COVERAGE_WEAK(__sanitizer_cov_trace_cmp4)(uint32_t Arg1, uint32_t Arg2) {
   fuzzer::TPC.HandleCmp(__builtin_return_address(0), Arg1, Arg2);
 }
-__attribute__((visibility("default")))
-void __sanitizer_cov_trace_cmp2(uint16_t Arg1, uint16_t Arg2) {
+void COVERAGE_WEAK(__sanitizer_cov_trace_cmp2)(uint16_t Arg1, uint16_t Arg2) {
   fuzzer::TPC.HandleCmp(__builtin_return_address(0), Arg1, Arg2);
 }
-__attribute__((visibility("default")))
-void __sanitizer_cov_trace_cmp1(uint8_t Arg1, uint8_t Arg2) {
+void COVERAGE_WEAK(__sanitizer_cov_trace_cmp1)(uint8_t Arg1, uint8_t Arg2) {
   fuzzer::TPC.HandleCmp(__builtin_return_address(0), Arg1, Arg2);
 }
 
-__attribute__((visibility("default")))
-void __sanitizer_cov_trace_switch(uint64_t Val, uint64_t *Cases) {
+void COVERAGE_WEAK(__sanitizer_cov_trace_switch)(uint64_t Val, uint64_t *Cases) {
   uint64_t N = Cases[0];
   uint64_t ValSizeInBits = Cases[1];
   uint64_t *Vals = Cases + 2;
@@ -325,16 +324,13 @@
     fuzzer::TPC.HandleCmp(PC + i, Token, (uint64_t)(0));
 }
 
-__attribute__((visibility("default")))
-void __sanitizer_cov_trace_div4(uint32_t Val) {
+void COVERAGE_WEAK(__sanitizer_cov_trace_div4)(uint32_t Val) {
   fuzzer::TPC.HandleCmp(__builtin_return_address(0), Val, (uint32_t)0);
 }
-__attribute__((visibility("default")))
-void __sanitizer_cov_trace_div8(uint64_t Val) {
+void COVERAGE_WEAK(__sanitizer_cov_trace_div8)(uint64_t Val) {
   fuzzer::TPC.HandleCmp(__builtin_return_address(0), Val, (uint64_t)0);
 }
-__attribute__((visibility("default")))
-void __sanitizer_cov_trace_gep(uintptr_t Idx) {
+void COVERAGE_WEAK(__sanitizer_cov_trace_gep)(uintptr_t Idx) {
   fuzzer::TPC.HandleCmp(__builtin_return_address(0), Idx, (uintptr_t)0);
 }
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D28433.83490.patch
Type: text/x-patch
Size: 3347 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170107/20c7f9ea/attachment.bin>


More information about the llvm-commits mailing list