[Bug tools/29498] New: Is it expected that eu-strip strips .note.GNU-stack
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
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.