On Mon, Sep 28, 2020 at 05:15:16PM +0200, Jan Kratochvil wrote:
On Mon, 28 Sep 2020 12:42:33 +0200, Jakub Jelinek wrote:
> On Mon, Sep 28, 2020 at 12:31:59PM +0200, Mark Wielaard wrote:
> > Finally I am interested in your proposal to implement a different way
> > to reduce the size of DIE trees by eliminating "unused" DIEs. It is
> > hard to predict what effect that would have without seeing an
> > implementation (in theory GCC with LTO would not actually generate
> > debuginfo for unused functions). But I think that can be done separate
> > from your proposal and combined with other size reduction techniques.
>
> And note that GCC already does implement
> -feliminate-unused-debug-{symbols,types} which are enabled by default and
> are (at least in my eyes) sometimes too aggressive, so by eliminating even further
> DIEs the debug experience might be even worse.
git clone
git://git.jankratochvil.net/massrebuild
./dwarfredundant
lldb-debuginfo-11.0.0-0.2.rc3.fc34.x86_64/usr/lib/debug/usr/lib64/liblldb.so.11.0.0-11.0.0-0.2.rc3.fc34.x86_64.debug
So, was this compiled by GCC or clang?
If GCC, I don't see how one could end up with low_pc of 0 unless it is a
comdat function where there is a DIE from the TU that actually was selected
by the linker, or some other copy that wasn't selected.
A way out of this could be either to use comdat .debug_info etc. sections
(but that would result in quite large increase of *.o file sizes), or let
the linker or a tool like DWZ discard or simplify such DIEs.
I don't see how could you see at compile time that the linker will not
choose the particular copy.
Jakub