From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 89A2B382F08A; Fri, 10 Jun 2022 00:07:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 89A2B382F08A From: "sam at gentoo dot org" To: glibc-bugs@sourceware.org Subject: [Bug libc/29237] New: ld.so immediately crashes after f5f7144dfcbf2a11fd2c17316c213928307c1db3 on hppa2.0-unknown-linux-gnu Date: Fri, 10 Jun 2022 00:07:26 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: glibc X-Bugzilla-Component: libc X-Bugzilla-Version: 2.36 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: sam at gentoo dot org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter cc target_milestone cf_gcchost cf_gcctarget cf_gccbuild Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: glibc-bugs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Glibc-bugs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jun 2022 00:07:27 -0000 https://sourceware.org/bugzilla/show_bug.cgi?id=3D29237 Bug ID: 29237 Summary: ld.so immediately crashes after f5f7144dfcbf2a11fd2c17316c213928307c1db3 on hppa2.0-unknown-linux-gnu Product: glibc Version: 2.36 Status: NEW Severity: normal Priority: P2 Component: libc Assignee: unassigned at sourceware dot org Reporter: sam at gentoo dot org CC: drepper.fsp at gmail dot com, nszabolcs at gmail dot com Target Milestone: --- Host: hppa2.0-unknown-linux-gnu Target: hppa2.0-unknown-linux-gnu Build: hppa2.0-unknown-linux-gnu Initially reported downstream in Gnetoo at https://bugs.gentoo.org/850691. I've bisected it to: ``` ``` f5f7144dfcbf2a11fd2c17316c213928307c1db3 is the first bad commit commit f5f7144dfcbf2a11fd2c17316c213928307c1db3 Author: Szabolcs Nagy Date: Fri Jun 15 16:14:58 2018 +0100 rtld: Use generic argv adjustment in ld.so [BZ #23293] When an executable is invoked as ./ld.so [ld.so-args] ./exe [exe-args] then the argv is adujusted in ld.so before calling the entry point of the executable so ld.so args are not visible to it. On most targets this requires moving argv, env and auxv on the stack to ensure correct stack alignment at the entry point. This had several issues: - The code for this adjustment on the stack is written in asm as part of the target specific ld.so _start code which is hard to maintain. - The adjustment is done after _dl_start returns, where it's too late to update GLRO(dl_auxv), as it is already readonly, so it points to memory that was clobbered by the adjustment. This is bug 23293. - _environ is also wrong in ld.so after the adjustment, but it is likely not used after _dl_start returns so this is not user visible. - _dl_argv was updated, but for this it was moved out of relro, which changes security properties across targets unnecessarily. This patch introduces a generic _dl_start_args_adjust function that handles the argument adjustments after ld.so processed its own args and before relro protection is applied. The same algorithm is used on all targets, _dl_skip_args is now 0, so existing target specific adjustment code is no longer used. The bug affects aarch64, alpha, arc, arm, csky, ia64, nios2, s390-32 and sparc, other targets don't need the change in principle, only for consistency. The GNU Hurd start code relied on _dl_skip_args after dl_main returned, now it checks directly if args were adjusted and fixes the Hurd startup data accordingly. Follow up patches can remove _dl_skip_args and DL_ARGV_NOT_RELRO. Tested on aarch64-linux-gnu and cross tested on i686-gnu. Reviewed-by: Adhemerval Zanella (cherry picked from commit ad43cac44a6860eaefcadadfb2acb349921e96bf) elf/rtld.c | 73 +++++++++++++++++++++++++++++++++++----= ---- sysdeps/mach/hurd/dl-sysdep.c | 30 ++++++++---------- 2 files changed, 73 insertions(+), 30 deletions(-) ``` (Ignore the date, it was only committed a few weeks ago). --=20 You are receiving this mail because: You are on the CC list for the bug.=