[llvm-dev] RFC: Move parts of llvm-symbolizer tool implementation to LLVMSymbolize library

Alexey Samsonov via llvm-dev llvm-dev at lists.llvm.org
Tue Oct 20 13:54:19 PDT 2015


We have a lot of non-trivial logic accumulated in the
implementation of llvm-symbolizer tool
(tools/llvm-symbolizer/LLVMSymbolize.{h,cpp}), for instance:

* dynamic dispatch between DWARF and PDB debug info;
* building address->symbol_name mapping from object file (with special
cases for PowerPC function descriptor section, and COFF export tables);
* finding debug info stored in separate files (.dSYM files on Darwin, ELF
.gnu_debuglink section, etc.);
* demangling (with platform-specific implementations for Windows and Unix).

I propose to move this code into a separate library LLVMSymbolize (stored
under lib/DebugInfo/Symbolize), and make llvm-symbolizer a short and simple
tool using it. This would allow to:

* implement in-process symbolized stack trace printers (for the cases when
it's possible to link in a bunch of LLVM libraries into the executable).
* easily write more tools that can make use of symbolized code locations,
such as coverage data visualizers.
* (at least sometimes) write unit tests instead of testing functionality by
running "llvm-symbolizer" executable on pre-built executables checked in

Any comments/objections?

Alexey Samsonov
vonosmas at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151020/3d8655a0/attachment.html>

More information about the llvm-dev mailing list