From: Alan Modra Date: Fri, 7 Jul 2023 05:02:00 +0000 (+0930) Subject: .noinit and .persistent alignment X-Git-Tag: binutils-2_41-release~214 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dbe6d432d1f48fe77200cf4baff06d9f8d7debd7;p=thirdparty%2Fbinutils-gdb.git .noinit and .persistent alignment It's more elegant to make the section match up with its "_start" symbol. We could align by setting the address of the section (by using ALIGN before the colon), but this way we also set sh_addralign to at least $ALIGNMENT. * scripttempl/elf.sc (.noinit, .persistent): Align the output section rather than using ". = ALIGN();" at the beginning. Set address to zero when not a final link. --- diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc index bfd8b5ed4b3..82de4ed9f88 100644 --- a/ld/scripttempl/elf.sc +++ b/ld/scripttempl/elf.sc @@ -342,9 +342,8 @@ STACK=".stack ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} : test "${HAVE_NOINIT}" = "yes" && NOINIT=" /* This section contains data that is not initialized during load, or during the application's initialization sequence. */ - .noinit (NOLOAD) : + .noinit ${RELOCATING-0} (NOLOAD) : ${RELOCATING+ALIGN(${ALIGNMENT})} { - ${RELOCATING+. = ALIGN(${ALIGNMENT});} ${RELOCATING+PROVIDE (__noinit_start = .);} *(.noinit${RELOCATING+ .noinit.* .gnu.linkonce.n.*}) ${RELOCATING+. = ALIGN(${ALIGNMENT});} @@ -353,9 +352,8 @@ test "${HAVE_NOINIT}" = "yes" && NOINIT=" test "${HAVE_PERSISTENT}" = "yes" && PERSISTENT=" /* This section contains data that is initialized during load, but not during the application's initialization sequence. */ - .persistent : + .persistent ${RELOCATING-0} : ${RELOCATING+ALIGN(${ALIGNMENT})} { - ${RELOCATING+. = ALIGN(${ALIGNMENT});} ${RELOCATING+PROVIDE (__persistent_start = .);} *(.persistent${RELOCATING+ .persistent.* .gnu.linkonce.p.*}) ${RELOCATING+. = ALIGN(${ALIGNMENT});}