From nobody Tue May 6 22:15:36 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZsXlX450Bz5vXcL; Tue, 06 May 2025 22:15:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZsXlX1WjLz3d2K; Tue, 06 May 2025 22:15:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1746569736; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XdNOc0YxEvphDYZgRKIHbD2YJchY4mfROomZKPp+jV0=; b=B8hmfl3XvBddd3lPwVoJ2a4vC6vEqVSb05hOJbvfGubPAuJgasesz5H85HZZ9eDDOjxreL bHYcL5YRkfqY4aris8cFlyGiKqlniwddWujc94Jc+6ABclclVvHz38C9xGt+BFsRDwFXwx OCx3pRJ5MOtItu1By04ipaiCSR4XsSd7IxZchT9MP6XZWustb463WzOASzc9PoVzQXIAD5 iLzh8tpXpVjD8wvlkbwErC7H1zXJ6f6cIsjS/5iAJz1UNIZMU3Yr/g2rHvRYwttFEm32pS D+h5B+CVW7mN2PvPbYY+ifkMG3rulTLYfFbeTkeCblnNbB1vY0W6Gt/iHtSY0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1746569736; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XdNOc0YxEvphDYZgRKIHbD2YJchY4mfROomZKPp+jV0=; b=s5hetqEv0M3K5keY+Of+VEencgKHhF78HOLop90ID7sBa14uSE0uib7EiOe34ZnHoPcXM5 +/UITN7quzvEm8H2c/OlZeAMJctuINNXCJKjoGZh8QjI22CyA2KUqLkTuSTTACtYfSSACF nIvobVZ0icJQzNXfXwI4nc4eigkX/NuEgktwxJeJDsjmpcp82A2BLEZJr0QHFTkaBI0V1Y vEJTjgkaEr1cssYfI2e/xCvkOiom96HJ+UbT414LV+bl6E6Y0ToGAqJ7jhw8SYBQ84e9BC 7Ts5QU3NhABtGiS0hWu8uHEvPF/Ctj2HTM7aEYykPxevSHIHfR5LGM6IBJWtOg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1746569736; a=rsa-sha256; cv=none; b=s+cyQ2iPjwn0QnH9za/DTgh7+xihwhO1t0ZjwjNYqO3DTGExwWuwojgsB5B7LpAXG8TrWh LMleNBet+DtmEO7QKd2elKnWf0NeDDUDwd/FlxFmb2tXjE9vWEbR2JWwk4v4dqxcd6hHNa /GugeaLl498lEboAarbix4YsGxQqWyhhUAXTsYwBmdh6PKusiPwXRIi1zNIXtG6CJgFUOp ROz2B+FRbs3ObJrWHJM55y0hBwdjPhxMNtjb4ztJE8fTtMSlHDFT9IVv2fdxnuXSoZT9Zv 3wep8YRKHZK9/V5nMcT4zUzC2SFrZic8jyvelWrnJLKQfs7kK+Otqn7yC6HKAQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZsXlX11jcz1H8m; Tue, 06 May 2025 22:15:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 546MFalr063124; Tue, 6 May 2025 22:15:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 546MFaNW063121; Tue, 6 May 2025 22:15:36 GMT (envelope-from git) Date: Tue, 6 May 2025 22:15:36 GMT Message-Id: <202505062215.546MFaNW063121@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jessica Clarke Subject: git: d71c97026366 - main - rtld-elf: Push TLS_DTV_OFFSET into tls_get_addr_common's arguments List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d71c97026366eff5d8a701077fd9e1499a28c7b1 Auto-Submitted: auto-generated The branch main has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=d71c97026366eff5d8a701077fd9e1499a28c7b1 commit d71c97026366eff5d8a701077fd9e1499a28c7b1 Author: Jessica Clarke AuthorDate: 2025-05-06 22:14:52 +0000 Commit: Jessica Clarke CommitDate: 2025-05-06 22:14:52 +0000 rtld-elf: Push TLS_DTV_OFFSET into tls_get_addr_common's arguments Rather than calling tls_get_addr_common with a biased ti_offset and un-biasing the return value, we can instead un-bias the offset given in the first place and not need to adjust the return value. This is in fact how the MIPS implementation worked, and makes this call tail-recursive. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D50187 --- libexec/rtld-elf/powerpc/reloc.c | 6 ++---- libexec/rtld-elf/powerpc64/reloc.c | 6 ++---- libexec/rtld-elf/riscv/reloc.c | 6 ++---- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/libexec/rtld-elf/powerpc/reloc.c b/libexec/rtld-elf/powerpc/reloc.c index 82a9669e3e73..4d5b1be6a429 100644 --- a/libexec/rtld-elf/powerpc/reloc.c +++ b/libexec/rtld-elf/powerpc/reloc.c @@ -838,10 +838,8 @@ void* __tls_get_addr(tls_index* ti) { uintptr_t **dtvp; - char *p; dtvp = &_tcb_get()->tcb_dtv; - p = tls_get_addr_common(dtvp, ti->ti_module, ti->ti_offset); - - return (p + TLS_DTV_OFFSET); + return (tls_get_addr_common(dtvp, ti->ti_module, ti->ti_offset + + TLS_DTV_OFFSET)); } diff --git a/libexec/rtld-elf/powerpc64/reloc.c b/libexec/rtld-elf/powerpc64/reloc.c index 70acd0ac390d..b0b5ca6419f7 100644 --- a/libexec/rtld-elf/powerpc64/reloc.c +++ b/libexec/rtld-elf/powerpc64/reloc.c @@ -735,10 +735,8 @@ void* __tls_get_addr(tls_index* ti) { uintptr_t **dtvp; - char *p; dtvp = &_tcb_get()->tcb_dtv; - p = tls_get_addr_common(dtvp, ti->ti_module, ti->ti_offset); - - return (p + TLS_DTV_OFFSET); + return (tls_get_addr_common(dtvp, ti->ti_module, ti->ti_offset + + TLS_DTV_OFFSET)); } diff --git a/libexec/rtld-elf/riscv/reloc.c b/libexec/rtld-elf/riscv/reloc.c index aa2cc97ae769..80a0acd3510f 100644 --- a/libexec/rtld-elf/riscv/reloc.c +++ b/libexec/rtld-elf/riscv/reloc.c @@ -496,10 +496,8 @@ void * __tls_get_addr(tls_index* ti) { uintptr_t **dtvp; - void *p; dtvp = &_tcb_get()->tcb_dtv; - p = tls_get_addr_common(dtvp, ti->ti_module, ti->ti_offset); - - return ((char*)p + TLS_DTV_OFFSET); + return (tls_get_addr_common(dtvp, ti->ti_module, ti->ti_offset + + TLS_DTV_OFFSET)); }