<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 3, 2014 at 8:03 PM, Nico Weber <span dir="ltr"><<a href="mailto:thakis@chromium.org" target="_blank">thakis@chromium.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Now that I played with this a bit, I realized that triggering this on NDEBUG means it's only stripped in -Asserts builds, independent of Debug and Release.</div>
<div><br></div><div>How about something completely different: Let NO_DEAD_STRIP be 1 by default in debug builds, and remove used attribute completely? Then the dump functions won't be stripped in debug (since no stripping is done), and no special attribute is needed. (And the dump() functions get stripped in Release+Asserts mode too as long as nothing calls them.)</div>
</blockquote></div><br></div><div class="gmail_extra">Linker dead stripping is only one of many ways dead stripping can and does occur. The used attribute is a much more stable way of ensuring that these debugging aids are available.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Similarly, I really want to be able to call dump methods from a Release+Asserts binary. The +Asserts means that the increased binary size shouldn't be a problem, and this can be a huge help when debugging bootstrap miscompiles and in-the-wild crashers.</div>
</div>