From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1448) id 72F673858C5E; Wed, 5 Jul 2023 12:33:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 72F673858C5E Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Andreas Krebbel To: bfd-cvs@sourceware.org Subject: [binutils-gdb] Align linkerscript symbols according to ABI X-Act-Checkin: binutils-gdb X-Git-Author: Andreas Krebbel X-Git-Refname: refs/heads/master X-Git-Oldrev: 1f2218d699e9e5146fc84b24460b63a864d65b04 X-Git-Newrev: a5042543d819df8a76ebec8c4d715f244efbab0a Message-Id: <20230705123309.72F673858C5E@sourceware.org> Date: Wed, 5 Jul 2023 12:33:09 +0000 (GMT) X-BeenThere: binutils-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Jul 2023 12:33:09 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3Da5042543d819= df8a76ebec8c4d715f244efbab0a commit a5042543d819df8a76ebec8c4d715f244efbab0a Author: Andreas Krebbel Date: Tue Jul 4 14:13:34 2023 +0200 Align linkerscript symbols according to ABI =20 Apply ABI specific alignment to symbols generated in the default linker script. Diff: --- ld/emulparams/elf64_s390.sh | 1 + ld/emulparams/elf_s390.sh | 1 + ld/scripttempl/elf.sc | 50 ++++++++++++++++++++++++++++-------------= ---- 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/ld/emulparams/elf64_s390.sh b/ld/emulparams/elf64_s390.sh index 899efd7f532..d0a2a59a092 100644 --- a/ld/emulparams/elf64_s390.sh +++ b/ld/emulparams/elf64_s390.sh @@ -17,6 +17,7 @@ EXTRA_EM_FILE=3Ds390 IREL_IN_PLT=3D SEPARATE_GOTPLT=3D0 test -z "$RELRO" && unset SEPARATE_GOTPLT +SYMBOL_ABI_ALIGNMENT=3D2 =20 # Treat a host that matches the target with the possible exception of "x" # in the name as if it were native. diff --git a/ld/emulparams/elf_s390.sh b/ld/emulparams/elf_s390.sh index cb1c6b5b04d..1b2fca3f937 100644 --- a/ld/emulparams/elf_s390.sh +++ b/ld/emulparams/elf_s390.sh @@ -12,3 +12,4 @@ GENERATE_SHLIB_SCRIPT=3Dyes GENERATE_PIE_SCRIPT=3Dyes NO_SMALL_DATA=3Dyes IREL_IN_PLT=3D +SYMBOL_ABI_ALIGNMENT=3D2 diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc index 1e3c5aa8504..9e95e6b4162 100644 --- a/ld/scripttempl/elf.sc +++ b/ld/scripttempl/elf.sc @@ -78,6 +78,8 @@ # USER_LABEL_PREFIX - prefix to add to user-visible symbols. # RODATA_NAME, SDATA_NAME, SBSS_NAME, BSS_NAME - base parts of names # for standard sections, without initial "." or suffixes. +# SYMBOL_ABI_ALIGNMENT - minimum alignment in bytes which needs to be +# applied to every symbol definition # # When adding sections, do note that the names of some sections are used # when specifying the start address of the next. @@ -165,19 +167,29 @@ if test -z "$GOT"; then GOTPLT=3D".got.plt ${RELOCATING-0} : { *(.got.plt)${RELOCATING+ *= (.igot.plt)} }" fi fi + +def_symbol() +{ + if [ -z "${SYMBOL_ABI_ALIGNMENT}" ]; then + echo "${USER_LABEL_PREFIX}$1 =3D . " + else + echo "${USER_LABEL_PREFIX}$1 =3D ALIGN(${SYMBOL_ABI_ALIGNMENT})" + fi +} + REL_IFUNC=3D".rel.ifunc ${RELOCATING-0} : { *(.rel.ifunc) }" RELA_IFUNC=3D".rela.ifunc ${RELOCATING-0} : { *(.rela.ifunc) }" REL_IPLT=3D".rel.iplt ${RELOCATING-0} : { - ${RELOCATING+${CREATE_PIC-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rel_= iplt_start =3D .);}} + ${RELOCATING+${CREATE_PIC-PROVIDE_HIDDEN ($(def_symbol "__rel_iplt_s= tart"));}} *(.rel.iplt) - ${RELOCATING+${CREATE_PIC-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rel_= iplt_end =3D .);}} + ${RELOCATING+${CREATE_PIC-PROVIDE_HIDDEN ($(def_symbol "__rel_iplt_e= nd"));}} }" RELA_IPLT=3D".rela.iplt ${RELOCATING-0} : { - ${RELOCATING+${CREATE_PIC-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rela= _iplt_start =3D .);}} + ${RELOCATING+${CREATE_PIC-PROVIDE_HIDDEN ($(def_symbol "__rela_iplt_= start"));}} *(.rela.iplt) - ${RELOCATING+${CREATE_PIC-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__rela= _iplt_end =3D .);}} + ${RELOCATING+${CREATE_PIC-PROVIDE_HIDDEN ($(def_symbol "__rela_iplt_= end"));}} }" DYNAMIC=3D".dynamic ${RELOCATING-0} : { *(.dynamic) }" RODATA=3D".${RODATA_NAME} ${RELOCATING-0} : { *(.${RODATA_NAME}${REL= OCATING+ .${RODATA_NAME}.* .gnu.linkonce.r.*}) }" @@ -267,23 +279,23 @@ else fi PREINIT_ARRAY=3D".preinit_array : { - ${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__preinit_array_sta= rt =3D .);} + ${CREATE_SHLIB-PROVIDE_HIDDEN ($(def_symbol "__preinit_array_start"));} KEEP (*(.preinit_array)) - ${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__preinit_array_end= =3D .);} + ${CREATE_SHLIB-PROVIDE_HIDDEN ($(def_symbol "__preinit_array_end"));} }" INIT_ARRAY=3D".init_array : { - ${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__init_array_start = =3D .);} + ${CREATE_SHLIB-PROVIDE_HIDDEN ($(def_symbol "__init_array_start"));} ${SORT_INIT_ARRAY} KEEP (*(.init_array ${CTORS_IN_INIT_ARRAY})) - ${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__init_array_end = =3D .);} + ${CREATE_SHLIB-PROVIDE_HIDDEN ($(def_symbol "__init_array_end"));} }" FINI_ARRAY=3D".fini_array : { - ${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__fini_array_start = =3D .);} + ${CREATE_SHLIB-PROVIDE_HIDDEN ($(def_symbol "__fini_array_start"));} ${SORT_FINI_ARRAY} KEEP (*(.fini_array ${DTORS_IN_FINI_ARRAY})) - ${CREATE_SHLIB-PROVIDE_HIDDEN (${USER_LABEL_PREFIX}__fini_array_end = =3D .);} + ${CREATE_SHLIB-PROVIDE_HIDDEN ($(def_symbol "__fini_array_end"));} }" CTOR=3D".ctors ${CONSTRUCTING-0} : { @@ -323,7 +335,7 @@ DTOR=3D".dtors ${CONSTRUCTING-0} : }" STACK=3D".stack ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} : { - ${RELOCATING+${USER_LABEL_PREFIX}_stack =3D .;} + ${RELOCATING+$(def_symbol "_stack");} *(.stack) ${RELOCATING+${STACK_SENTINEL}} }" @@ -494,16 +506,16 @@ cat >> ldscripts/dyntmp.$$ <