[llvm-dev] [Proposal][Debuginfo] dsymutil-like tool for ELF.

Alexey via llvm-dev llvm-dev at lists.llvm.org
Mon Sep 14 04:17:11 PDT 2020


Debuginfo folks,

What is your opinion on this proposal?

Do we need to work on better DWARFLinker library for now? or Can we 
start to integrate llvm-dwarfutil as a series of small patches?

If it is OK to start integrating of llvm-dwarfutil, Is it OK to move 
llvm-objcopy implementation into separate library ObjCopy ?

Thank you, Alexey.

On 01.09.2020 20:18, James Y Knight wrote:
>
>
> On Mon, Aug 31, 2020 at 11:06 AM Alexey <avl.lapshin at gmail.com 
> <mailto:avl.lapshin at gmail.com>> wrote:
>
>     Hi James,
>
>     Thank you for the comments.
>
>     >I think we're not terribly far from that ideal, now, for ELF.
>     Maybe only these three things need to be done? --
>     >  1. Teach lld how to emit a separated debuginfo output file
>     directly, without requiring an objcopy step.
>     >  2. Integrate DWARFLinker into lld.
>     >  3. Create a new tool which takes the separated debuginfo and
>     DWO/DWP files and uses DWARFLinker library
>     > to create a new (dwarf-linked) separated-debug file, that
>     doesn't depend on DWO/DWP files.
>
>     The three goals which you`ve described are our far goals.
>     Indeed, the best solution would be to create valid optimized debug
>     info without additional
>     stages and additional modifications of resulting binaries.
>
>     There was an attempt to use DWARFLinker from the lld -
>     https://reviews.llvm.org/D74169
>     It did not receive enough support to be integrated yet. There are
>     fair reasons for that:
>
>     1. Execution time. The time required by DWARFLinker for processing
>     clang binary is 8x bigger
>     than the usual linking time. Linking clang binary with DWARFLinker
>     takes 72 sec,
>     linking with the only lld takes 9 sec.
>
>     2. "Removing obsolete debug info" could not be switched off. Thus,
>     lld could not use DWARFLinker for
>     other tasks(like generation of index tables - .gdb_index,
>     .debug_names) without significant performance
>     degradation.
>
>     3. DWARFLinker does not support split dwarf at the moment.
>
>     All these reasons are not blockers. And I believe implementation
>     from D74169 might be integrated and
>     incrementally improved if there would be agreement on that.
>
>
> Those do sound like absolutely critical issues for deploying this for 
> real -- whether as a separate tool or integrated with lld. But 
> possibly not critical enough to prevent adding this behind an 
> experimental flag, and working on the code incrementally in-tree. 
> However (without having looked at the code in question), I wonder if 
> the reported 8x regression in link-time is even going to be 
> salvageable just by incremental optimizations, or if it might require 
> a complete re-architecting of the DwarfLinker code.
>
>     Using DWARFLinker from llvm-dwarfutil is another possibility to
>     use and improve it.
>
>     When finally implemented - llvm-dwarfutil should solve the above
>     three issues and there
>     would probably be more reasons to include DWARFLinker into lld.
>
>
> Is it the case that if the code is built to support the "read an 
> executable, output a new better executable" use-case, it will actually 
> be what's needed for the "output an optimized executable while linking 
> object files" use-case? I worry that those could have enough different 
> requirements that you really need to be developing the 
> linker-integrated version from the very beginning in order to get a 
> good result, rather than trying to shoehorn it in as an afterthought.
>
>     Even if we would have the best solution - it is still useful to
>     have a tool like llvm-dwarfutil
>
>     for cases when it is necessary to process already created binaries.
>
>
> Sure -- I just think that should be considered as a secondary 
> use-case, and not the primary goal.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200914/e1ebb3b2/attachment.html>


More information about the llvm-dev mailing list