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