ld: Move note sections after .rodata section

Move note sections after .rodata section so that note sections are
placed in the same PT_LOAD segment together with .rodata section,
instead of a separate PT_LOAD segment.

	PR ld/32341
	* scripttempl/misc-sections.sc: Move note sections to ...
	* scripttempl/elf.sc: Here, after .rodata section.
	* testsuite/ld-elf/pr32341.d: New file.
	* testsuite/ld-elf/pr32341.s: Likewise.

Co-Authored-By: Nick Clifton <nickc@redhat.com>
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
This commit is contained in:
H.J. Lu 2024-11-07 12:39:19 +08:00
parent c0a07e7d48
commit 023e60ced0
4 changed files with 52 additions and 11 deletions

View File

@ -668,6 +668,17 @@ cat <<EOF
.exception_ranges ${RELOCATING-0} : ONLY_IF_RO { *(.exception_ranges${RELOCATING+*}) }
${TEXT_PLT+${PLT_NEXT_DATA+${PLT} ${OTHER_PLT_SECTIONS}}}
/* Various note sections. Placed here so that they are included in the
read-only segment, and so that they are not treated as orphan sections. */
.note.build-id : { *(.note.build-id) } ${RELOCATING+${REGION}}
.note.GNU-stack : { *(.note.GNU-stack) } ${RELOCATING+${REGION}}
.note.gnu-property : { *(.note.gnu-property) } ${RELOCATING+${REGION}}
.note.ABI-tag : { *(.note.ABI-tag) } ${RELOCATING+${REGION}}
.note.package : { *(.note.package) } ${RELOCATING+${REGION}}
.note.dlopen : { *(.note.dlopen) } ${RELOCATING+${REGION}}
.note.netbsd.ident : { *(.note.netbsd.ident) } ${RELOCATING+${REGION}}
.note.openbsd.ident : { *(.note.openbsd.ident) } ${RELOCATING+${REGION}}
${RELOCATING+${ETEXT_LAST_IN_RODATA_SEGMENT+PROVIDE (__${ETEXT_NAME} = .);}}
${RELOCATING+${ETEXT_LAST_IN_RODATA_SEGMENT+PROVIDE (_${ETEXT_NAME} = .);}}
${RELOCATING+${ETEXT_LAST_IN_RODATA_SEGMENT+PROVIDE (${ETEXT_NAME} = .);}}

View File

@ -30,15 +30,4 @@ cat <<EOF
.gnu.build.attributes : { *(.gnu.build.attributes${RELOCATING+ .gnu.build.attributes.*}) }
/* Various note sections. Placed here so that they do not get
treated as orphan sections. */
.note.build-id : { *(.note.build-id) } ${RELOCATING+${REGION}}
.note.GNU-stack : { *(.note.GNU-stack) } ${RELOCATING+${REGION}}
.note.gnu-property : { *(.note.gnu-property) } ${RELOCATING+${REGION}}
.note.ABI-tag : { *(.note.ABI-tag) } ${RELOCATING+${REGION}}
.note.package : { *(.note.package) } ${RELOCATING+${REGION}}
.note.dlopen : { *(.note.dlopen) } ${RELOCATING+${REGION}}
.note.netbsd.ident : { *(.note.netbsd.ident) } ${RELOCATING+${REGION}}
.note.openbsd.ident : { *(.note.openbsd.ident) } ${RELOCATING+${REGION}}
EOF

View File

@ -0,0 +1,15 @@
#ld: --build-id -z separate-code -z relro --rosegment
#readelf: -l --wide
#target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
#xfail: ![check_relro_support]
#failif
#...
[ ]+LOAD[ ]+0x[0-9a-f x]+.*
#...
[ ]+LOAD[ ]+0x[0-9a-f x]+.*
#...
[ ]+LOAD[ ]+0x[0-9a-f x]+.*
#...
[ ]+LOAD[ ]+0x[0-9a-f x]+.*
#...

View File

@ -0,0 +1,26 @@
.text
.type start,"function"
.global start
start:
.type _start,"function"
.global _start
_start:
.type __start,"function"
.global __start
__start:
.type main,"function"
.global main
main:
.type _main,"function"
.global _main
_main:
.dc.a 0
.section .rodata,"a"
.zero 8
.bss
.zero 8
.section .note.ABI-tag,"a"
.align 4
.zero 32
.ident "GCC: (GNU) 14.2.1"
.section .note.GNU-stack,"",%progbits