[Rpm-maint] [PATCH] debugedit: Support String/Line table rewriting for larger/smaller paths.
Panu Matilainen
pmatilai at laiskiainen.org
Sat Mar 4 09:28:31 UTC 2017
On 02/27/2017 05:28 PM, Mark Wielaard wrote:
> From: Mark Wielaard <mark at klomp.org>
>
> debugedit --base to --dest rewriting of debug source file paths only
> supported dest paths that were smaller or equal than the base path
> (and the size should differ more than 1 character for correct debug lines).
> All paths were changed "in place". Which could in theory mess up debug str
> sharing.
>
> This rewrite supports base and dest strings of any size (some limitations,
> see below). This is done by reconstructing the debug_str and debug_line
> tables and updating the references in the debug_info attributes pointing
> to these tables. Plus, if necessary (only for ET_REL kernel modules),
> updating any relocations for the debug_info and debug_line sections.
>
> This has the nice benefit of merging any duplicate strings in the
> debug_str table which might resulting on slightly smaller files.
> kernel modules are ET_REL files that often contain a lot of duplicate
> strings.
>
> The rewrite uses elfutils (either libebl or libdw) to reconstruct the
> debug_str table. Since we are changing some section sizes now we cannot
> just use mmap and rawdata to poke the values, but need to read in and
> write out the changed sections. This does take a bit more memory because
> we now also need to keep track of all string/line references.
I dont feel qualified to really review this, and perhaps others are
feeling the same way since it's been out there for a week now with no
comments at all.
Because this seems quite awesome (even if also a bit scary), to avoid
stalling forever with no-one to review it: if there are no objections
raised by Monday I'm going to just apply it (and the couple of other
recent debuginfo patches). So anybody having doubts, speak up now.
- Panu -
More information about the Rpm-maint
mailing list