From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1791) id 2B482385842D; Tue, 22 Nov 2022 13:46:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2B482385842D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1669124800; bh=AOb6Oe6fYTYfzy4uUrMVRhmCS+l2/nZJQDlktebdWFM=; h=From:To:Subject:Date:From; b=QMmtKlXThdeKbZox6QODeMCdD8wOXNf9NtJR5eyIxUJkdWE98pbdyzj63oLE0Xby/ k4ctHwUeqtvWRxYvNnDponjyF4g6aO+81dJ82itO3oGSCtEzN8nfB3Ld5TYPrym9vm 0o5zK0DXkMSfWslJSSDXAZvlyBsDzORdDBgzmMJo= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Adhemerval Zanella To: glibc-cvs@sourceware.org Subject: [glibc/release/2.34/master] elf: Fix rtld-audit trampoline for aarch64 X-Act-Checkin: glibc X-Git-Author: Vladislav Khmelevsky X-Git-Refname: refs/heads/release/2.34/master X-Git-Oldrev: 75b0edb7ef338084e53925139ae81fb0dfc07dd4 X-Git-Newrev: 691f70b84a1284f35c8cf9fbf3ef3b1cec41c234 Message-Id: <20221122134640.2B482385842D@sourceware.org> Date: Tue, 22 Nov 2022 13:46:40 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=691f70b84a1284f35c8cf9fbf3ef3b1cec41c234 commit 691f70b84a1284f35c8cf9fbf3ef3b1cec41c234 Author: Vladislav Khmelevsky Date: Thu Nov 17 12:47:29 2022 +0400 elf: Fix rtld-audit trampoline for aarch64 This patch fixes two problems with audit: 1. The DL_OFFSET_RV_VPCS offset was mixed up with DL_OFFSET_RG_VPCS, resulting in x2 register value nulling in RG structure. 2. We need to preserve the x8 register before function call, but don't have to save it's new value and restore it before return. Anyway the final restore was using OFFSET_RV instead of OFFSET_RG value which is wrong (althoug doesn't affect anything). Reviewed-by: Adhemerval Zanella (cherry picked from commit eb4181e9f4a512de37dad4ba623c921671584dea) Diff: --- sysdeps/aarch64/dl-trampoline.S | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sysdeps/aarch64/dl-trampoline.S b/sysdeps/aarch64/dl-trampoline.S index 457570e7df..b84c53d1a5 100644 --- a/sysdeps/aarch64/dl-trampoline.S +++ b/sysdeps/aarch64/dl-trampoline.S @@ -298,12 +298,11 @@ _dl_runtime_profile: stp x2, x3, [x29, #OFFSET_RV + DL_OFFSET_RV_X0 + 16*1] stp x4, x5, [x29, #OFFSET_RV + DL_OFFSET_RV_X0 + 16*2] stp x6, x7, [x29, #OFFSET_RV + DL_OFFSET_RV_X0 + 16*3] - str x8, [x29, #OFFSET_RG + DL_OFFSET_RG_X0 + 16*4] stp q0, q1, [x29, #OFFSET_RV + DL_OFFSET_RV_V0 + 32*0] stp q2, q3, [x29, #OFFSET_RV + DL_OFFSET_RV_V0 + 32*1] stp q4, q5, [x29, #OFFSET_RV + DL_OFFSET_RV_V0 + 32*2] stp q6, q7, [x29, #OFFSET_RV + DL_OFFSET_RV_V0 + 32*3] - str xzr, [X29, #OFFSET_RV + DL_OFFSET_RG_VPCS] + str xzr, [X29, #OFFSET_RV + DL_OFFSET_RV_VPCS] /* Setup call to pltexit */ ldp x0, x1, [x29, #OFFSET_SAVED_CALL_X0] @@ -315,7 +314,6 @@ _dl_runtime_profile: ldp x2, x3, [x29, #OFFSET_RV + DL_OFFSET_RV_X0 + 16*1] ldp x4, x5, [x29, #OFFSET_RV + DL_OFFSET_RV_X0 + 16*2] ldp x6, x7, [x29, #OFFSET_RV + DL_OFFSET_RV_X0 + 16*3] - ldr x8, [x29, #OFFSET_RV + DL_OFFSET_RV_X0 + 16*4] ldp q0, q1, [x29, #OFFSET_RV + DL_OFFSET_RV_V0 + 32*0] ldp q2, q3, [x29, #OFFSET_RV + DL_OFFSET_RV_V0 + 32*1] ldp q4, q5, [x29, #OFFSET_RV + DL_OFFSET_RV_V0 + 32*2]