Hi Guillermo,

CCed Nick to see if he knows why binutils strip does what it does.

On Fri, 2023-02-24 at 10:48 -0600, Guillermo E. Martinez wrote:
> On Fri, Feb 24, 2023 at 12:51:25PM +0100, Mark Wielaard wrote:
> 
> 
> > On Thu, Feb 23, 2023 at 12:42:37PM -0600, Guillermo E. Martinez via 
> > Elfutils-devel wrote:
> > > This is the third version of the patch to avoid remove the CTF section in
> > > stripped files. Changes from v2:
> > > 
> > >   - Rebased from master.
> > > 
> > > Please let me know your thoughts.
> > > 
> > > CTF debug format was designed to be present in stripped files, so
> > > this section should not be removed, so a new --remove-ctf option
> > > is added to indicate explicitly that .ctf section will be stripped
> > > out from binary file.
> > 
> > Since the way to recognize a CTF section is by name ".ctf" does it
> > really need a new option? eu-strip already has:
> > 
> >     --keep-section=SECTION Keep the named section.  SECTION is an extended
> >                            wildcard pattern.  May be given more than once.
> > 
> > -R, --remove-section=SECTION   Remove the named section.  SECTION is an
> >                            extended wildcard pattern.  May be given more 
> > than
> >                            once.  Only non-allocated sections can be
> >                            removed.
> > 
> > Do you really need a new option? Or could you use an explicit
> > --keep-section=.ctf and/or --remove-section=.ctf ?
> > 
> 
> Oh, I see, thanks for your comment!. My intention with this patch is to
> replicate the same proceeding by _default_ implemented in `binutils strip'
> tool, it is: not remove CTF section, except it is indicated explicitly.

O, this surprises me. I wasn't aware binutils strip keeps unallocated
sections by default. But apparently it does. It doesn't seem specific
to ".ctf". Do you know why? This seems counter to how strip is supposed
to behave, at least how I understand it.

eu-strip removes any non-allocated section (unless -g is given) which
isn't referenced through a sh_link or sh_info (with SHF_INFO_LINK set)
from a section that isn't removed. I assumed binutils strip would
behave the same. See also
http://www.linker-aliens.org/blogs/ali/entry/how_to_strip_an_elf/
(So one idea might be to reference the .ctf section through sh_link
from e.g. the .text or .data section to signal it should be kept?)

> Of course, if you think it is not really a good idea, I can propose a
> patch to change the invocation of `eu-strip' in `find-debuginfo.sh' to
> preserve CTF section as you showed above, when it generates debug
> packages.

Note that find-debuginfo already has:

   Use --keep-section SECTION or --remove-section SECTION to explicitly
   keep a (non-allocated) section in the main executable or explicitly
   remove it into the .debug file. SECTION is an extended wildcard
   pattern.  Both options can be given more than once.
   
Cheers,

Mark

Reply via email to