On Tue, Mar 07, 2023 at 03:50:01PM +0100, Mark Wielaard wrote:
> Hi Nick, Hi Guillermo,
> 

Hi Mark, 

> 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.
> 

Oh, I see. My first motivation to add `--keep-ctf' in `eu-strip' is
because it's used by `find-debuginfo.sh' script  to build the debug RPM
packages:

        `eu-strip --remove-comment $r $g ${keep_remove_args} -f "$1" "$2" || 
exit'

So, `eu-strip' removes `.ctf' section by default.

In this case I'll prepare a patch updating `find-debuginfo.sh' to add
`--keep-section=.ctf' to `eu-strip' to preserve such section.

Thanks for your comments!
guillermo

Reply via email to