<div dir="ltr">Hi all,<div><br></div><div>I used the instruction from here:</div><div><a href="https://clang.llvm.org/docs/SanitizerCoverage.html#partially-disabling-instrumentation">https://clang.llvm.org/docs/SanitizerCoverage.html#partially-disabling-instrumentation</a><br></div><div><br></div><div>to compile the following c file</div><div><br></div><div>#include <stdint.h><br>#include <stdio.h><br>#include <sanitizer/coverage_interface.h><br><br><br>void __sanitizer_cov_trace_pc_guard_init(uint32_t *start,<br>                                                    uint32_t *stop) {<br>  static uint64_t N;  // Counter for the guards.<br>  if (start == stop || *start) return;  // Initialize only once.<br>  printf("INIT: %p %p\n", start, stop);<br>  for (uint32_t *x = start; x < stop; x++)<br>    *x = ++N;  // Guards should start from 1.<br>}<br><br> void __sanitizer_cov_trace_pc_guard(uint32_t *guard) {<br>  if (!*guard) return;  // Duplicate the guard check.<br>  <br>  void *PC = __builtin_return_address(0);<br>  char PcDescr[1024];<br><br>}<br><br><br>int addition(int num1, int num2)<br>{<br>     int sum;<br>     sum = num1+num2;<br>     if(sum)<br>         return sum;<br>     else <br>         return 0;<br>     <br>}<br><br>int substraction(int num1, int num2)<br>{<br>     int sum;<br>     sum = num1-num2;<br>     <br>     if(sum)<br>             return sum;<br>     else <br>        return -1;<br>}<br><br>int main()<br>{<br>     int var1, var2,res;<br>     printf("Enter number 1: ");<br>     scanf("%d",&var1);<br>     printf("Enter number 2: ");<br>     scanf("%d",&var2);<br>     <br>     if(var1 >1){<br><br>         res = addition(var1, var2);<br>        printf ("Output: %d", res);<br>     }<br>     if(var2 > 2){<br>         res = substraction(var1, var2);<br>            printf ("Output2: %d", res);<br>      }<br><br>     return 0;<br>}<br></div><div><br></div><div>test.sh</div><div><br></div><div>export CC=clang<br>export LDFLAGS="-O0 -g -fsanitize-coverage=trace-pc-guard -fsanitize-coverage-allowlist=./whitelist.txt -fsanitize-coverage-blocklist=./blacklist.txt" <br><br>$CC  $LD_LFAGS test.c -o test<br></div><div><br></div><div>blacklist.txt contains:</div><div>fun:addition*<br></div><div><br></div><div>and whitelist.txt contains</div><div>src:*<br>fun:*<br></div><div><br></div><div>Basically I want everything to be instrumented except function addition. I'm using clang 11.</div><div><br></div><div>The problem is if I look in the disassembly of the binary sanitizer_cov_trace_pc_guard in any of the 3 functions: main/addition/substraction. It should instrument all , except addition.</div><div><br></div><div><br></div><div><br></div></div>