From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7897) id 3C9963853D66; Mon, 21 Nov 2022 14:37:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3C9963853D66 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1669041424; bh=H63WAXheSSyhsMBXpzYVaXb1QEf7v5FsT1HA5D88v/I=; h=From:To:Subject:Date:From; b=Y7pDCoIGK2SE9w1VokkTjbUu0C9b3u8jI285P1h02Tsr9HfBgoFgefhCvruvpLpea hLys/rverF+tHkyrDC1gHSb1vD9SXUP6m+p2XS/UMw1fY2reDaV/65MQTh5BsHnEhb r440cby3v9sbY8YZWaFh+fdU5u1ffvDTLNPIRfyA= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Torbjorn Svensson To: gdb-cvs@sourceware.org Subject: [binutils-gdb] gdb/arm: Update active msp/psp when switching stack X-Act-Checkin: binutils-gdb X-Git-Author: =?utf-8?q?Torbj=C3=B6rn_SVENSSON?= X-Git-Refname: refs/heads/master X-Git-Oldrev: 84f9fbe90e5429adb9dee68f04f44c92fa9e2345 X-Git-Newrev: 4d9fd8683fd48f081cb205afed07ba69f9aed134 Message-Id: <20221121143704.3C9963853D66@sourceware.org> Date: Mon, 21 Nov 2022 14:37:04 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D4d9fd8683fd4= 8f081cb205afed07ba69f9aed134 commit 4d9fd8683fd48f081cb205afed07ba69f9aed134 Author: Torbj=C3=B6rn SVENSSON Date: Fri Nov 4 09:46:34 2022 +0100 gdb/arm: Update active msp/psp when switching stack =20 For targets with secext, msp and psp can be seen as an alias for one of msp_s, msp_ns, psp_s or psp_ns. When switching active sp, the corresponding msp/psp needs to be switched too. =20 Signed-off-by: Torbj=C3=B6rn SVENSSON Diff: --- gdb/arm-tdep.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 7cb3f5f3050..124a94dc87d 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -504,8 +504,23 @@ arm_cache_switch_prev_sp (struct arm_prologue_cache *c= ache, gdb_assert (arm_is_alternative_sp_register (tdep, sp_regnum)); =20 if (tdep->have_sec_ext) - gdb_assert (sp_regnum !=3D tdep->m_profile_msp_regnum - && sp_regnum !=3D tdep->m_profile_psp_regnum); + { + gdb_assert (sp_regnum !=3D tdep->m_profile_msp_regnum + && sp_regnum !=3D tdep->m_profile_psp_regnum); + + if (sp_regnum =3D=3D tdep->m_profile_msp_s_regnum + || sp_regnum =3D=3D tdep->m_profile_psp_s_regnum) + { + cache->active_msp_regnum =3D tdep->m_profile_msp_s_regnum; + cache->active_psp_regnum =3D tdep->m_profile_psp_s_regnum; + } + else if (sp_regnum =3D=3D tdep->m_profile_msp_ns_regnum + || sp_regnum =3D=3D tdep->m_profile_psp_ns_regnum) + { + cache->active_msp_regnum =3D tdep->m_profile_msp_ns_regnum; + cache->active_psp_regnum =3D tdep->m_profile_psp_ns_regnum; + } + } =20 cache->active_sp_regnum =3D sp_regnum; }