[Bug tools/29498] New: Is it expected that eu-strip strips .note.GNU-stack

2022-08-16 Thread jpalus at fastmail dot com via Elfutils-devel
https://sourceware.org/bugzilla/show_bug.cgi?id=29498

Bug ID: 29498
   Summary: Is it expected that eu-strip strips .note.GNU-stack
   Product: elfutils
   Version: unspecified
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: tools
  Assignee: unassigned at sourceware dot org
  Reporter: jpalus at fastmail dot com
CC: elfutils-devel at sourceware dot org
  Target Milestone: ---

Accidentally we've started to strip crt*.o files produced by glibc and were
surprised by the fact that eu-strip gets rid of .note.GNU-stack section
resulting in incorrect linking.

$ gcc -c test.c -o test.o
$ readelf -S test.o|grep GNU-stack
  [ 5] .note.GNU-stack   PROGBITS   0074
$ eu-strip test.o
$ readelf -S test.o|grep GNU-stack
(empty)

I see following comment in strip.c:

> - special sections named ".comment" and ".note" are kept


https://sourceware.org/git/?p=elfutils.git;a=blob;f=src/strip.c;h=452b12796dd3b7ff3a46d13a2bfb9aa0f5c93ac9;hb=HEAD#l1361

The question is whether observed behavior is expected or rather .note.GNU-stack
should be kept?

-- 
You are receiving this mail because:
You are on the CC list for the bug.

[Bug tools/29498] Is it expected that eu-strip strips .note.GNU-stack

2022-10-28 Thread jpalus at fastmail dot com via Elfutils-devel
https://sourceware.org/bugzilla/show_bug.cgi?id=29498

--- Comment #3 from Jan Palus  ---
If I understand it correctly in binutils primary criteria for removing section
is whether it is marked with SEC_DEBUGGING flag:

https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=binutils/objcopy.c;h=d20aaef9f4f2e2a910bd7bf666dab6e3c158fc1b;hb=HEAD#l1366

and the flag for ELF seems to be set here:

https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=bfd/elf.c;h=81825b748d75f2b68a6cca1c54b126df53c36dc2;hb=HEAD#l1093

  if (startswith (name, ".debug")
  || startswith (name, ".gnu.debuglto_.debug_")
  || startswith (name, ".gnu.linkonce.wi.")
  || startswith (name, ".zdebug"))
flags |= SEC_DEBUGGING | SEC_ELF_OCTETS;
  else if (startswith (name, GNU_BUILD_ATTRS_SECTION_NAME)
   || startswith (name, ".note.gnu"))
{
  flags |= SEC_ELF_OCTETS;
  opb = 1;
}
  else if (startswith (name, ".line")
   || startswith (name, ".stab")
   || strcmp (name, ".gdb_index") == 0)
flags |= SEC_DEBUGGING;

-- 
You are receiving this mail because:
You are on the CC list for the bug.