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