[llvm-dev] A "hello world" coverage sanitizer
Zhoulai via llvm-dev
llvm-dev at lists.llvm.org
Fri Aug 12 19:40:48 PDT 2016
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>
More information about the llvm-dev
mailing list