https://sourceware.org/bugzilla/show_bug.cgi?id=32191
--- Comment #4 from Sourceware Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by H.J. Lu <[email protected]>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=99600a4787910d4b1994b243473a7386dbee641d commit 99600a4787910d4b1994b243473a7386dbee641d Author: H.J. Lu <[email protected]> Date: Wed Mar 18 12:13:26 2026 -0700 elf/x86: Place code after read-only data for --rosegment commit e8e10743f7b207b21a1efb0cc9e42487080db013 Author: Nick Clifton <[email protected]> Date: Thu Jun 13 15:10:15 2024 +0100 Add --rosegment option to BFD linker to stop the '-z separate-code' from gen erating two read-only segments. added --rosegment option to generate one read-only segment with -z separate-code. But it puts the read-only data, which contains ELF headers and .note.gnu.build-id section, in the executable segment: Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x00000000 0x00000000 0x00185 0x00185 R E 0x1000 LOAD 0x001000 0x00001000 0x00001000 0x000d0 0x000d0 R 0x1000 LOAD 0x001f78 0x00002f78 0x00002f78 0x0008c 0x0008c RW 0x1000 DYNAMIC 0x001f78 0x00002f78 0x00002f78 0x00070 0x00070 RW 0x4 NOTE 0x000154 0x00000154 0x00000154 0x00024 0x00024 R 0x4 NOTE 0x00109c 0x0000109c 0x0000109c 0x00034 0x00034 R 0x4 GNU_PROPERTY 0x00109c 0x0000109c 0x0000109c 0x00034 0x00034 R 0x4 GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10 GNU_RELRO 0x001f78 0x00002f78 0x00002f78 0x00088 0x00088 R 0x1 Section to Segment mapping: Segment Sections... 00 .note.gnu.build-id .text 01 .gnu.hash .dynsym .dynstr .rela.dyn .rodata .eh_frame .note.gnu.property 02 .dynamic .got.plt .data 03 .dynamic 04 .note.gnu.build-id 05 .note.gnu.property 06 .note.gnu.property 07 08 .dynamic .got.plt which defeats the purpose of -z separate-code. Update --rosegment to place code after read-only data: Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x000000 0x00000000 0x00000000 0x00248 0x00248 R 0x1000 LOAD 0x001000 0x00001000 0x00001000 0x00005 0x00005 R E 0x1000 LOAD 0x001f78 0x00002f78 0x00002f78 0x0008c 0x0008c RW 0x1000 DYNAMIC 0x001f78 0x00002f78 0x00002f78 0x00070 0x00070 RW 0x4 NOTE 0x000154 0x00000154 0x00000154 0x00024 0x00024 R 0x4 NOTE 0x000214 0x00000214 0x00000214 0x00034 0x00034 R 0x4 GNU_PROPERTY 0x000214 0x00000214 0x00000214 0x00034 0x00034 R 0x4 GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10 GNU_RELRO 0x001f78 0x00002f78 0x00002f78 0x00088 0x00088 R 0x1 Section to Segment mapping: Segment Sections... 00 .note.gnu.build-id .gnu.hash .dynsym .dynstr .rela.dyn .rodata .eh_frame .note.gnu.property 01 .text 02 .dynamic .got.plt .data 03 .dynamic 04 .note.gnu.build-id 05 .note.gnu.property 06 .note.gnu.property 07 08 .dynamic .got.plt PR ld/23704 PR ld/30907 PR ld/32191 PR ld/34003 * emulparams/elf32_x86_64.sh (ALL_TEXT_AFTER_RO): New. * emulparams/elf_i386.sh (ALL_TEXT_AFTER_RO): Likewise. * emulparams/elf_i386_be.sh (ALL_TEXT_AFTER_RO): Likewise. * emulparams/elf_i386_vxworks.sh (ALL_TEXT_AFTER_RO): Likewise. * emulparams/elf_iamcu.sh (ALL_TEXT_AFTER_RO): Likewise. * emulparams/elf_x86_64.sh (ALL_TEXT_AFTER_RO): Likewise. * scripttempl/elf.sc (ALL_TEXT_AFTER_RO): New. If set, place code after read-only data for -z separate-code --rosegment. * testsuite/ld-elf/pr30907-2.d: Skip x86 targets. * testsuite/ld-elf/pr34003.d: New file. * testsuite/ld-i386/pr32191.d: Updated. * testsuite/ld-x86-64/pr32191-x32.d: Likewise. * testsuite/ld-x86-64/pr32191.d: Likewise. Signed-off-by: H.J. Lu <[email protected]> -- You are receiving this mail because: You are on the CC list for the bug.
