<br><br><div class="gmail_quote">On Tue, Nov 15, 2011 at 6:40 PM, Eli Friedman <span dir="ltr"><<a href="mailto:eli.friedman@gmail.com">eli.friedman@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="HOEnZb"><div class="adm"><div id="q_133aa52cc00bbe31_0" class="ajR h4"><div class="ajT"></div></div></div><div class="h5">On Tue, Nov 15, 2011 at 6:22 PM, Kostya Serebryany <<a href="mailto:kcc@google.com">kcc@google.com</a>> wrote:<br>

> Hello,<br>
> Please review the following patch which adds -fasan (AddressSanitizer) flag<br>
> to clang.<br>
> (Mostly prepared by Chandler Carruth).<br>
> The LLVM part of AddressSanitizer has been submitted as r144758.<br>
> This patch will allow to enable AddressSanitizer from the clang command<br>
> line.<br>
> <a href="http://codereview.appspot.com/5396042" target="_blank">http://codereview.appspot.com/5396042</a><br>
> Coming next in separate patches:<br>
>   - a patch to clang driver to pass linker flags for AddressSanitizer<br>
> (small)<br>
>   - the run-time library and the tests (big)<br>
> Thanks,<br>
> --kcc<br>
<br>
</div></div>I would prefer -faddress-sanitizer over -fasan; shorter isn't really<br>
better here.<br></blockquote><div><br></div><div>Changing the flag name would sad.</div><div>  - The logo of AddressSanitizer is a "Pheasant eating a Bug". "Fasan" means "Pheasant" in several European languages (also, "Фазан" in Russian).</div>
<div>- Quite a few existing users will have to change their makefiles. </div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
+  if (Args.hasFlag(options::OPT_fasan, options::OPT_fno_asan, false)) {<br>
+    CmdArgs.push_back("-DADDRESS_SANITIZER=1");<br>
+  }<br>
 }<br>
<br>
Why would a program need this?  Can a program that's aware of the<br>
address sanitizer actually do anything usefully different?  </blockquote><div><br></div><div>To name a few cases: </div><div>- replace a custom free list with vanilla malloc/free (to catch more bugs). This is what webkit does. </div>
<div><a href="http://trac.webkit.org/browser/trunk/Source/WebCore/rendering/RenderArena.cpp">http://trac.webkit.org/browser/trunk/Source/WebCore/rendering/RenderArena.cpp</a></div><div>- don't call rlimit or other functions hostile to asan (asan uses a large chunk of virtual address space)</div>
<div>- increase the default size of thread stacks (asan eats more stack). </div><div>- disable code that deliberately accesses unaddressable memory (heap/stack profilers, leak detectors).</div><div><br></div><div><br></div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Also,<br>
since this define doesn't start with an underscore, it's possible this<br>
could break a program using the identifier ADDRESS_SANITIZER for<br>
something else.<br></blockquote><div><br></div><div>Quite a few users (including WebKit) already use the current name, it would be sad to break compatibility.</div><div><br></div><div>--kcc </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<span class="HOEnZb"><font color="#888888"><br>
-Eli<br>
</font></span></blockquote></div><br>