<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 20, 2014 at 1:19 PM, Hal Finkel <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">----- Original Message -----<br>
> From: "David Blaikie" <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>><br>
> To: <a href="mailto:reviews%2BD5862%2Bpublic%2Be7b928154d4d08d9@reviews.llvm.org">reviews+D5862+public+e7b928154d4d08d9@reviews.llvm.org</a><br>
> Cc: "Hal Finkel" <<a href="mailto:hfinkel@anl.gov">hfinkel@anl.gov</a>>, "Eric Christopher" <<a href="mailto:echristo@gmail.com">echristo@gmail.com</a>>, "llvm cfe" <<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a>><br>
> Sent: Sunday, October 19, 2014 8:35:13 PM<br>
> Subject: Re: [PATCH] Treat -g1 as -gline-tables-only<br>
><br>
> On Sun, Oct 19, 2014 at 4:06 PM, <a href="mailto:hfinkel@anl.gov">hfinkel@anl.gov</a> < <a href="mailto:hfinkel@anl.gov">hfinkel@anl.gov</a> ><br>
> wrote:<br>
><br>
><br>
> Hi echristo, dblaikie,<br>
><br>
> To follow-up on this thread on cfe-dev:<br>
> <a href="http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-October/039649.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-October/039649.html</a><br>
><br>
> -g1 on gcc (and also IBM's xlc) are documented to be very similar to<br>
> -gline-tables-only. Our -gline-tables-only might still be more<br>
> verbose than -g1 on other compilers, but currently we treat -g1 as<br>
> -g, and so we're producing much more debug info at -g1 than<br>
> everybody else. Treating -g1 as -gline-tables-only brings us much<br>
> closer to what everyone else is doing.<br>
><br>
><br>
> A follow-up: which user(s) did you have who hit problems with -g1? Do<br>
> you know what /they/ want when they specify -g1? It'd be useful to<br>
> at least have some actual user of -g1 with a documented use case so<br>
> we know if we're meeting their needs, etc.<br>
<br>
</span>Okay, this is how the issue came up...<br>
<br>
At our supercomputing facility, we have three compilers: IBM's xlc, gcc and clang (all customized for the BG/Q). The facility is responsible for analyzing all job failures, both for our own purposes, and to help our users diagnose and fix problems with their code (when their code is at fault). When running tens of thousands of processes in parallel, it is not feasible to generate full core files for every crash from every process (that could be hundreds of TB of data per crash), and so our kernel generates "light weight" core files. For the most part, these core files contain only enough information to reconstruct the stack backtrace, but not enough for interactive debugging. Nevertheless, as you might imagine, the backtraces themselves are very useful (compared to nothing), and are much more useful with line-table information (especially for C++ code). </blockquote><div><br></div><div>Do you happen to know if your backtracing/symbolication uses inlining information to improve the quality?<br><br>If so, it doesn't look like XLC will help you there, and neither will GCC, but Clang will.<br><br>Beyond that, for basic, non-inlining backtraces, -g1 in xlc and gcc (and as you've patched here in Clang) will all provide the basic line table good for symbolication.<br><br>Arguably we could have -g1 do something more like xlc to save on space more if non-inlined symbolication is what users of this feature need - so if you find the debug info is too big even with this new -g1 you're proposing, we can chat about what to do there. (note that the debug info with Clang's -gmlt (this new -g1) is substantially bigger in optimized binaries (with lots of inlining) so if you're assessing the build impact of this feature, be sure to test it on whatever build modes you care about, not just -O0)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">One proposal we've been evaluating is automatically adding -g1 to all compiles on the system, so that we can always get line-table information for use with these light-weight core files. In order to add this to every compile, there needs to be only a small effect on compile/link times (the smaller the better -- and the line table information is really all we need). The fact that clang treats -g1 like -g (instead of generating much less debugging info like gcc/xlc do) was discovered in the process of evaluating this proposal. </blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I could obviously just "fix" this locally, but it seemed like it might be generally desirable behavior to better match gcc/xlc in this case (thus the thread on cfe-dev, etc.)<br></blockquote><div><br>Nah, seems fine as a notion.<br><br>Please commit<br><br>- David<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks again,<br>
Hal<br>
<div class="HOEnZb"><div class="h5"><br>
><br>
><br>
><br>
> <a href="http://reviews.llvm.org/D5862" target="_blank">http://reviews.llvm.org/D5862</a><br>
><br>
> Files:<br>
> lib/Driver/Tools.cpp<br>
> test/Driver/debug-options.c<br>
><br>
><br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Hal Finkel<br>
Assistant Computational Scientist<br>
Leadership Computing Facility<br>
Argonne National Laboratory<br>
</font></span></blockquote></div><br></div></div>