This is the mail archive of the
mailing list for the Archer project.
Re: Fedora 14 debug proposal
- From: Roland McGrath <roland at redhat dot com>
- To: tromey at redhat dot com
- Cc: Project Archer <archer at sourceware dot org>, Jakub Jelinek <jakub at redhat dot com>
- Date: Sun, 13 Jun 2010 03:40:10 -0700 (PDT)
- Subject: Re: Fedora 14 debug proposal
- References: <firstname.lastname@example.org>
> 1. Generate index files for the separate .debug files. This involves
> running gdb to dump the index, something like:
Is this a magical gdb-internal format, or something that will really be
specified as a known file format? Since the plan as stated is to
distribute this format in distro packages that will be around forever, the
format details become interesting from a long-term compatibility point of
view, not just as a gdb feature of today.
> I don't know where the debuginfo stripping is done right now, but
> that seems like the best place to run this script.
See /usr/lib/rpm/find-debuginfo.sh. If DWARF compression ever gets
finished, its tools will probably replace most or all of that script.
> 2. Change GCC so that it no longer emits .debug_aranges,
> .debug_pubnames, and .debug_pubtypes.
Please do not lump .debug_aranges in with .debug_pub*. They are
qualitatively different cases. .debug_aranges is a direct low-level
derivative of the CU DIEs. The others are made with language-specific
> From what I can tell, no program uses these sections. They just
> waste space.
libdw uses .debug_aranges and does not fall back to linear search of CUs.
Removing it breaks all existing users that do any kind of lookups by PC
> I think .debug_pub* are pretty useless. [...]
I don't doubt that.
> I can write the gcc patch for this.
For Fedora purposes, dropping .debug_pub* sections could just as well be
done in the stripping stage. And, I don't think they really cost much
space in the grand scheme of things. So there is little real motivation to
fiddle gcc at all until after we have completed basically everything else
in the related realms. (There also isn't really any reason I know of not
to drop .debug_pub* from gcc yesterday if anyone really wants to.)
> 3. If we are shipping GCC 4.5 in F14, I think we should enable the
> .debug_types stuff by default. This will shrink debuginfo and it
> makes gdb use less memory.
libdw does not yet handle .debug_types. It of course will, but I wouldn't
like to have a gcc defaults change on any queue until we are quite concrete
with getting all the support in line.
> This one is optional, in particular I assume it will be subsumed by
> the other DWARF compression work.
It should be, yes. I don't see any reason that .debug_types and
DW_FORM_ref_sig8 need to survive final linking. The normal reference
forms are more efficient for consumers to use. Replacing ref_sig8 forms
with direct ref_addr forms requires that the targets be in .debug_info
rather than .debug_types. So I'd been imagining that DW_TAG_type_unit
would morph into DW_TAG_compile_unit anyway. It's still possible that
emitting .debug_types during compilation could speed up the build
process, if plain ld COMDAT handling reduces a lot of duplication before
the brute-force DWARF duplicate-subtree finder has to run.