<div dir="ltr">To create unit tests is a pretty good reason IMO :)<div><br></div><div>That said, I'd be a fan of trying to encapsulate all of this behind an interface. I like that most of the tools are exceptionally light weight and it makes it much more obvious what's "wrapper" versus "functionality" in something like llvm-symbolize. That said, I'll be interested to see the library design :)</div><div><br></div><div>-eric</div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Oct 21, 2015 at 7:35 AM Rafael EspĂ­ndola <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I would say it is worth it if someone is actually planning on using<br>
the library in something else.<br>
<br>
Moving the code "just in case" or to create unit tests is not a good<br>
reason IMHO.<br>
<br>
On 20 October 2015 at 16:54, Alexey Samsonov <<a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a>> wrote:<br>
> Hi,<br>
><br>
> We have a lot of non-trivial logic accumulated in the<br>
> implementation of llvm-symbolizer tool<br>
> (tools/llvm-symbolizer/LLVMSymbolize.{h,cpp}), for instance:<br>
><br>
> * dynamic dispatch between DWARF and PDB debug info;<br>
> * building address->symbol_name mapping from object file (with special cases<br>
> for PowerPC function descriptor section, and COFF export tables);<br>
> * finding debug info stored in separate files (.dSYM files on Darwin, ELF<br>
> .gnu_debuglink section, etc.);<br>
> * demangling (with platform-specific implementations for Windows and Unix).<br>
><br>
> I propose to move this code into a separate library LLVMSymbolize (stored<br>
> under lib/DebugInfo/Symbolize), and make llvm-symbolizer a short and simple<br>
> tool using it. This would allow to:<br>
><br>
> * implement in-process symbolized stack trace printers (for the cases when<br>
> it's possible to link in a bunch of LLVM libraries into the executable).<br>
> * easily write more tools that can make use of symbolized code locations,<br>
> such as coverage data visualizers.<br>
> * (at least sometimes) write unit tests instead of testing functionality by<br>
> running "llvm-symbolizer" executable on pre-built executables checked in<br>
> repository.<br>
><br>
> Any comments/objections?<br>
><br>
> --<br>
> Alexey Samsonov<br>
> <a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a><br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>