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

Alexey Samsonov via llvm-dev llvm-dev at lists.llvm.org
Wed Oct 21 13:21:21 PDT 2015


On Wed, Oct 21, 2015 at 12:59 PM, Eric Christopher <echristo at gmail.com>
wrote:

>
>
> On Wed, Oct 21, 2015 at 12:17 PM Alexey Samsonov <vonosmas at gmail.com>
> wrote:
>
>> We have out-of-tree implementation of llvm-symbolizer-as-a-library, and I
>> still hope to upstream it one day (unfortunately, its build process is
>> really complicated).
>>
>> Mike can probably comment on his plans for using symbolization in
>> coverage-related tools.
>>
>> On Wed, Oct 21, 2015 at 11:34 AM, Eric Christopher <echristo at gmail.com>
>> wrote:
>>
>>> To create unit tests is a pretty good reason IMO :)
>>>
>>> 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 :)
>>>
>>
>> Do you suggest to design it upfront, or you're fine with moving the
>> existing code first, and gradually updating the interface afterwards?
>>
>
> Don't know, what's the interface look like now? :) Were you just going to
> copy the LLVMSymbolize.[cpp,h] into the directory?
>

For a start, yes.


> That should be fine I guess. I'd like to see the general ownership of
> objects separated out fairly explicitly from the rest of the code.
>

I'm not sure what you mean by this.


>
> -eric
>
>
>>
>>
>>>
>>> -eric
>>>
>>> On Wed, Oct 21, 2015 at 7:35 AM Rafael EspĂ­ndola <
>>> llvm-dev at lists.llvm.org> wrote:
>>>
>>>> I would say it is worth it if someone is actually planning on using
>>>> the library in something else.
>>>>
>>>> Moving the code "just in case" or to create unit tests is not a good
>>>> reason IMHO.
>>>>
>>>> On 20 October 2015 at 16:54, Alexey Samsonov <vonosmas at gmail.com>
>>>> wrote:
>>>> > Hi,
>>>> >
>>>> > 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
>>>> > repository.
>>>> >
>>>> > Any comments/objections?
>>>> >
>>>> > --
>>>> > Alexey Samsonov
>>>> > vonosmas at gmail.com
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> llvm-dev at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>
>>>
>>
>>
>> --
>> Alexey Samsonov
>> vonosmas at gmail.com
>>
>


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


More information about the llvm-dev mailing list