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