This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [google] AddressSanitizer for gcc, first attempt. (issue 5272048)
- From: davidxl at google dot com
- To: konstantin dot s dot serebryany at gmail dot com, kcc at google dot com
- Cc: gcc-patches at gcc dot gnu dot org, reply at codereview dot appspotmail dot com
- Date: Tue, 18 Oct 2011 06:06:48 +0000
- Subject: Re: [google] AddressSanitizer for gcc, first attempt. (issue 5272048)
- Reply-to: konstantin dot s dot serebryany at gmail dot com, kcc at google dot com, davidxl at google dot com, gcc-patches at gcc dot gnu dot org, reply at codereview dot appspotmail dot com
There must be a style lint for gcc -- but I have not used it ..
http://codereview.appspot.com/5272048/diff/2001/tree-asan.c
File tree-asan.c (right):
http://codereview.appspot.com/5272048/diff/2001/tree-asan.c#newcode79
tree-asan.c:79: (All I need is to traverse *all* memory accesses and
instrument them).
For refs such as component ref 'ap->b[i].c', you need to create the
access address expression out of it -- you may want to try to use
build_addr interface. There is another interface
get_ref_base_and_extent which can return the access base + offset, but
it does not work for asan when there is array ref with runtime index --
this is mainly for alias analysis.
On 2011/10/17 23:04:50, kcc wrote:
On 2011/10/17 22:33:17, davidxl wrote:
> Discard 2) -- it is not correct. What Asan needs is slightly
different.
Yea.
I actually have a test where this instrumentation does something bad.
http://codereview.appspot.com/5272048/diff/2001/tree-asan.c#newcode128
tree-asan.c:128: /* perform the instrumentation */
On 2011/10/17 23:04:50, kcc wrote:
On 2011/10/17 22:26:55, davidxl wrote:
> Parameter documentation. s/perform/Perform/
Done, although I am not sure what location is...
location is the source location.
http://codereview.appspot.com/5272048/diff/2001/tree-asan.c#newcode286
tree-asan.c:286: transform_derefs (gimple_stmt_iterator *iter, tree *tp,
Look at interface build_addr in tree-nested.c, it may be what you need.
On 2011/10/17 23:04:50, kcc wrote:
On 2011/10/17 22:26:55, davidxl wrote:
> You can use get_base_address utility function defined in gimple.c
So, do I ignore this for now?
http://codereview.appspot.com/5272048/diff/2001/tree-asan.c#newcode414
tree-asan.c:414: do
Ok, in that case, may be you should use the aux field of BB to mark
those new BBs and skip them?
On 2011/10/17 23:04:50, kcc wrote:
On 2011/10/17 22:26:55, davidxl wrote:
> Can you use FOR_EACH_BB macro?
I don't know. Can I? The instrumentation code creates new BB while it
runs and
those should not be instrumented.
http://codereview.appspot.com/5272048/