[PATCH v3] strip: keep .ctf section in stripped file

Mark Wielaard mark@klomp.org
Tue Mar 7 14:50:01 GMT 2023


Hi Nick, Hi Guillermo,

On Sat, 2023-03-04 at 08:00 -0600, Guillermo E. Martinez wrote:
> Hello,
> 
> On Fri, Mar 03, 2023 at 12:24:19PM +0000, Nick Clifton wrote:
> > Hi Mark,
> > 
> > > > > I am mainly wondering why binutils strip already seems to keep ".ctf"
> > > > > sections (even without -g).
> > 
> > > Right. But I am wondering how that mechanism works with binutils strip.
> > > Apparently we do something different in eu-strip which makes it
> > > necessary to add a --keep-ctf option based on the section name. It
> > > would be good if we figured out how/what we can do to keep the
> > > different strip utilities in sync.
> > 
> > I think that the function that does this is "is_strip_section_1" in
> 
> That's right, this function decided whether the section will be striped
> out by default, if it has set `SEC_DEBUGGING' in BFD section flags then
> section is removed by the default.  For `.ctf' this flag is not set
> because in `_bfd_elf_make_section_from_shdr' when BFD sections are
> building it uses the section's name: ".debug", ".gnu.debuglto_.debug_",
> ".gnu.linkonce.wi.", ".zdebug", "lines", ".stab", etc, to set
> `SEC_DEBUGGING' flag.
> 
> > binutils/objcopy.c.  If an input section has the BSF_DEBUGGING flag
> > set (an internal flag to he BFD library, but basically it should be
> > set for all debug sections, including .ctf sections I think), then
> > the basic decision is to keep the section unless -g is used.

OK, that is interesting. So given the .ctf section is NOT marked as
SEC_DEBUGGING binutils strip basically never strips it.

While eu-strip does strip it by default (since it is a non-loadable
PROGBITS section), but keeps it with -g (which only strips the
explicitly named .debug sections).

But both binutils strip and eu-strip do have --keep-section=.ctf which
would explicitly keep it even without -g, and both have --remove-
section=.ctf which always removes the section.

So binutils strip and eu-strip aren't totally identical with the
default flags, but with --keep-section=.ctf and --remove-section=.ctf
they seem to do the same thing.

So I am not sure we really need a --keep-ctf flag for eu-strip (unless
we also get it for binutils strip). My preference would be to just
recommend a user use --keep-section=.ctf or --remove-section=.ctf to
indicate what they want.

Cheers,

Mark


More information about the Elfutils-devel mailing list