[PATCH] Align linkerscript symbols according to ABI

Alan Modra amodra@gmail.com
Wed Jul 12 01:36:14 GMT 2023


Align dot before symbols defined outside of output sections.  Before _end
is already aligned.

I'm inclined to think that with this patch the alignment in def_symbol
ought to disappear, but for now I'm leaving it in.

	* scripttempl/elf.sc (def_symbol): Tidy excess space.
	(_edata): Align before emitting symbol when SYMBOL_ABI_ALIGNMENT.

diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc
index 9e95e6b4162..bfd8b5ed4b3 100644
--- a/ld/scripttempl/elf.sc
+++ b/ld/scripttempl/elf.sc
@@ -171,7 +171,7 @@ fi
 def_symbol()
 {
     if [ -z "${SYMBOL_ABI_ALIGNMENT}" ]; then
-	echo "${USER_LABEL_PREFIX}$1 =  . "
+	echo "${USER_LABEL_PREFIX}$1 = ."
     else
 	echo "${USER_LABEL_PREFIX}$1 = ALIGN(${SYMBOL_ABI_ALIGNMENT})"
     fi
@@ -688,6 +688,7 @@ cat <<EOF
   ${SDATA_GOT+${OTHER_GOT_SECTIONS}}
   ${DATA_SDATA-${SDATA}}
   ${DATA_SDATA-${OTHER_SDATA_SECTIONS}}
+  ${RELOCATING+${SYMBOL_ABI_ALIGNMENT+. = ALIGN(${SYMBOL_ABI_ALIGNMENT});}}
   ${RELOCATING+${DATA_END_SYMBOLS-${CREATE_SHLIB+PROVIDE (}$(def_symbol "_edata")${CREATE_SHLIB+)}; PROVIDE ($(def_symbol "edata"));}}
   ${PERSISTENT}
   ${RELOCATING+. = .;}

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list