[llvm-dev] A "hello world" coverage sanitizer

Zhoulai via llvm-dev
Sat, 13 Aug 2016 02:40:48 -0000

Thank you, kcc. I am unsure if I misunderstand your reply. It seems that
trace-bb, rather than trace-pc,  fits better for my problem, given that my
instrumentation is to put before each conditional statement. Do I
misunderstand something here?

 "
Tracing basic blocks
<http://clang.llvm.org/docs/SanitizerCoverage.html#id11>
With -fsanitize-coverage=trace-bb the compiler will insert
__sanitizer_cov_trace_basic_block(s32 *id) before every function, basic
block, or edge (depending on the value of -fsanitize-coverage=[func,bb,edge]).

"


*Thanks,*

*Zhoulai*





Zhoulai

On Fri, Aug 12, 2016 at 1:57 PM, Kostya Serebryany <kcc at google.com>
wrote:

> Hi Zhoulai,
> The closest you can get is http://clang.llvm.org/docs/
> SanitizerCoverage.html#tracing-pcs
> With this flavor of instrumentation the compiler inserts calls to
> __sanitizer_cov_trace_pc into the control flow.
> The users (you) needs to define the function __sanitizer_cov_trace_pc and
> so you can call printf there.
>
> By default, not all edges in the control flow are instrumented
> This is an optimization, you can disable it by -mllvm
> -sanitizer-coverage-prune-blocks=0
>
> --kcc
>
> On Fri, Aug 12, 2016 at 11:46 AM, Zhoulai via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> Hi, all
>>
>> I want to instrument a program automatically so that it prints
"hello"
>> before each conditional statement. For example, consider the function P
>> below.
>>
>>     int P(int x) {
>>      if (x<3)
>>         if (x>0)
>>            return 1;
>>      return 0;
>>    }
>>
>> Let P_instrum be the instrumented version of P.  It is expected that:
>>
>> -- P_instrum(1)  prints two "hello"s
>> -- P_instrum(-1) prints one "hello"
>> -- P_instrum(5)  prints no "hello"
>>
>> From my understanding about Clang's sanitizer coverage,
>> <http://clang.llvm.org/docs/SanitizerCoverage.html> we can use a
>> sanitizer to achieve this instrumentation.  However, so far I have not
>> found a working example or snippet code to get started. Any idea?
>>
>> Thanks,
>>
>> Zhoulai
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20160812/67b96b76/attachment.html>