public inbox for glibc-cvs@sourceware.org help / color / mirror / Atom feed
From: Stefan Liebler <stli@sourceware.org> To: glibc-cvs@sourceware.org Subject: [glibc] Avoid padding in _init and _fini. [BZ #31042] Date: Thu, 30 Nov 2023 12:32:26 +0000 (GMT) [thread overview] Message-ID: <20231130123226.82F7E3858D32@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=807849965bbdeaa9b0a8f675d098efc520eeaaa8 commit 807849965bbdeaa9b0a8f675d098efc520eeaaa8 Author: Stefan Liebler <stli@linux.ibm.com> Date: Tue Nov 21 13:33:03 2023 +0100 Avoid padding in _init and _fini. [BZ #31042] The linker just concatenates the .init and .fini sections which results in the complete _init and _fini functions. If needed the linker adds padding bytes due to an alignment. GNU ld is adding NOPs, which is fine. But e.g. mold is adding traps which results in broken _init and _fini functions. Thus this patch removes the alignment in .init and .fini sections in crtn.S files. We keep the 4 byte function alignment in crti.S files. As the assembler now also outputs the start of _init and _fini functions as multiples of 4 byte, it perhaps has to fill it. Although GNU as is using NOPs here, to be sure, we just keep the alignment with 0x07 (=NOPs) at the end of crti.S. In order to avoid an obvious NOP slide in _fini, this patch also uses an lg instead of lgr instruction. Then the emitted instructions needs a multiple of 4 bytes. Diff: --- sysdeps/s390/s390-64/crti.S | 2 +- sysdeps/s390/s390-64/crtn.S | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/sysdeps/s390/s390-64/crti.S b/sysdeps/s390/s390-64/crti.S index 11ab75e8d9..4c8246da26 100644 --- a/sysdeps/s390/s390-64/crti.S +++ b/sysdeps/s390/s390-64/crti.S @@ -85,7 +85,7 @@ _init: .type _fini,@function _fini: stmg %r6,%r15,48(%r15) - lgr %r1,%r15 + lg %r1,120(%r15) aghi %r15,-160 stg %r1,0(%r15) larl %r12,_GLOBAL_OFFSET_TABLE_ diff --git a/sysdeps/s390/s390-64/crtn.S b/sysdeps/s390/s390-64/crtn.S index 0eabcb346c..6bb1bc9dcf 100644 --- a/sysdeps/s390/s390-64/crtn.S +++ b/sysdeps/s390/s390-64/crtn.S @@ -37,13 +37,11 @@ corresponding to the prologues in crti.S. */ .section .init - .align 4 lg %r4,272(%r15) lmg %r6,%r15,208(%r15) br %r4 .section .fini - .align 4 lg %r4,272(%r15) lmg %r6,%r15,208(%r15) br %r4
reply other threads:[~2023-11-30 12:32 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20231130123226.82F7E3858D32@sourceware.org \ --to=stli@sourceware.org \ --cc=glibc-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).