From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id WNjLDbiFe2Ow/RoAWB0awg (envelope-from ) for ; Mon, 21 Nov 2022 09:05:44 -0500 Received: by simark.ca (Postfix, from userid 112) id 331731E124; Mon, 21 Nov 2022 09:05:44 -0500 (EST) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=dJ+fhUXZ; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,NICE_REPLY_A, RCVD_IN_DNSWL_MED,RDNS_DYNAMIC,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 806B41E0D3 for ; Mon, 21 Nov 2022 09:05:43 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C09CD3853D60 for ; Mon, 21 Nov 2022 14:05:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C09CD3853D60 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1669039542; bh=d/lKfMdVNTiY1GDCLetGqL/kJD4l2JHdnytavT9zdLU=; h=Date:Subject:To:Cc:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=dJ+fhUXZM1MGp5+swQKrgFaBSC7FYUWvmcon4aFGZlvy6A1USjLdJRpccVbMVGW1d okhzlzwl6nQf73FIOf8E7eNWCx8QSdAfxR8hK1MRk12TwX7FGuGWxe/nQxX0GQu/mj hhXFXDKIDxlmdv++JDTFVfRNbPHRtYQ13XdadJhM= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70053.outbound.protection.outlook.com [40.107.7.53]) by sourceware.org (Postfix) with ESMTPS id A274D3852C58 for ; Mon, 21 Nov 2022 14:05:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A274D3852C58 Received: from DU2PR04CA0158.eurprd04.prod.outlook.com (2603:10a6:10:2b0::13) by DBBPR08MB5913.eurprd08.prod.outlook.com (2603:10a6:10:20b::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.17; Mon, 21 Nov 2022 14:05:09 +0000 Received: from DBAEUR03FT035.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:2b0:cafe::67) by DU2PR04CA0158.outlook.office365.com (2603:10a6:10:2b0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.9 via Frontend Transport; Mon, 21 Nov 2022 14:05:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT035.mail.protection.outlook.com (100.127.142.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.8 via Frontend Transport; Mon, 21 Nov 2022 14:05:09 +0000 Received: ("Tessian outbound aeae1c7b66fd:v130"); Mon, 21 Nov 2022 14:05:09 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 1a46cdf79ce81847 X-CR-MTA-TID: 64aa7808 Received: from a8cafe6e59d7.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id A2EDC938-4BD8-40DE-BC43-81C27A998E6C.1; Mon, 21 Nov 2022 14:05:02 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id a8cafe6e59d7.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 21 Nov 2022 14:05:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a5MSOPOlJ6/tfgJ71DoFJlnd7SDsWnEVevLhMEivDy+OM7L4CKwJkv91RBkjds2bF67OHdLc6WYsTQXs5IYy5XUyuZxJSDubrUrbmubAj43Z+VsUcFxIBPD2ktUBSqVcat+74jmGB/SFfS+UZEU5J/4eAtyRlMujWNrzbGswwC8PzpYGSsscqrYua40Og8p7LDFzOkCKcnmAtvnOOMKjQIe//TSJFLtLmM6wiEhQJ3tnO1h+jYYJilVoZGUSTgga8w8HiBcDX8VfxhNdbAHfeqbS+9DVw+bupqVL+YUS9/AX7Ka1hPnTuZH0IDhVcVkm/lrbZxQHKiSF7zlco4B1og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=d/lKfMdVNTiY1GDCLetGqL/kJD4l2JHdnytavT9zdLU=; b=DAv/LfYIKA3SerbFWvNMu/czPOjaqCnA+aMZfGbE9KNqJwDJ4Bk1UH1dg1Mz3m4Xr6SjjA4Wi5c2Sj9DYxLZT8sYZo/H9F76OWVa/4orrNNwcztAy3ROtGV6n9HgcJnHd3OnZNb3F88QiDrlJ8Y78UBW+6kZTxn93NdfpfM66xVNmLsBDWPgOq5XCXmIEfT5Uqq81kQg/qtjyT/YYGWGYEm70YgCqGhTxXm15PXQFaWR3Kvs9qIIV0+wAd8WzQNqXCST9c3BEt6asTzvYg75LvtBQhMIl9pdL/1OL5kb5vp0IgFN3f7EYba07uKsa/xL4xgJqjbpNWsMI26WlTBD6w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB3919.eurprd08.prod.outlook.com (2603:10a6:803:c4::31) by AS8PR08MB9816.eurprd08.prod.outlook.com (2603:10a6:20b:613::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.13; Mon, 21 Nov 2022 14:04:57 +0000 Received: from VI1PR08MB3919.eurprd08.prod.outlook.com ([fe80::c470:cc90:a9ad:6dd1]) by VI1PR08MB3919.eurprd08.prod.outlook.com ([fe80::c470:cc90:a9ad:6dd1%4]) with mapi id 15.20.5857.017; Mon, 21 Nov 2022 14:04:56 +0000 Message-ID: <465d0e48-e457-024c-cd56-ad0d21422f3b@arm.com> Date: Mon, 21 Nov 2022 14:04:53 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [PATCH v2 2/4] gdb/arm: Ensure that stack pointers are in sync Content-Language: en-US To: =?UTF-8?Q?Torbj=c3=b6rn_SVENSSON?= , gdb-patches@sourceware.org Cc: vanekt@volny.cz References: <20221118155252.113476-1-torbjorn.svensson@foss.st.com> <20221118155252.113476-3-torbjorn.svensson@foss.st.com> In-Reply-To: <20221118155252.113476-3-torbjorn.svensson@foss.st.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: LO4P123CA0308.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:197::7) To VI1PR08MB3919.eurprd08.prod.outlook.com (2603:10a6:803:c4::31) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI1PR08MB3919:EE_|AS8PR08MB9816:EE_|DBAEUR03FT035:EE_|DBBPR08MB5913:EE_ X-MS-Office365-Filtering-Correlation-Id: fb12cdce-5dbd-4241-a7e4-08dacbc9665c x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: pM/vu8N4rWKlr5VqRAVEC9kcyVo//IRsOafjVejEmdohkHRJu9eCQo/3hY5L3SMRkHgz6GJJ8Xs1Hp7MNKCsBVi4xowrZYemjmx3zAQxE5bcN8jExflnf1MR42eeMPvghIa/R5t35YyDBJxTtuBM0DuFT2R7I7pgR4TGUrk7MGazHIx5L4vce+H74D/EMOgst4thZfOh8sLQoDQCH13a/u/X/0YKgNRSgdzROye2H9IoPqikQ+Zbt0WpVK9yCKJu+kQWy8H0lWfOK8edJ2WbC2BH4YI4z5hRNhGz5BvUltqhK4NBBpIdeJ/pIjxMyjOn4pHcURmO09dcplotJuL0yvqoSIF/5S+R1yiYDMYMgFMmxz+JlDbPJnBF+zYjdwFE52YCFWYP/XSnk8nS+kN9Yo0mtwa8zj15PK2NlMB4cP1YXbwd2UyMRf5f5EuHSxiNh3vqA5He+BTb1E1QDaK4/9fwCE1bPe1+YgaoOXAJuud3hqGZA7ws1mJdENuSvBY3XzT/4BYpYC9dPy53vGjc+5uSRLYeGuzWr5xszWp5Shh0beOTTrLlsuEr8A+N5lDbRZ10fm6o/bljY9+Cq4Mb5FiGWlPikuUriLdjZ1/TUkQYdq728/z8+kgSFHqXtL85T+X5ATWn79LbFN++mXn+iXHiLS8MjBHcIo2iF/OM5g/n8N6jmbRD9L+dBqPSuJKpLviVO8S6h+S7sbOG2CMGXpXp/zunUCG9Fi7OLIJoxEM= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB3919.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(376002)(39860400002)(396003)(136003)(366004)(346002)(451199015)(316002)(26005)(8936002)(186003)(36756003)(44832011)(5660300002)(6512007)(83380400001)(2906002)(66574015)(66556008)(66476007)(66946007)(2616005)(4326008)(8676002)(41300700001)(31686004)(6486002)(6506007)(478600001)(31696002)(86362001)(6666004)(38100700002)(53546011)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9816 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT035.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 21f8b4b0-e6a9-45ab-094e-08dacbc95e8d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: J7QwLhjxyAD1iGdlxb6KW0WGdfauKLLITNu+lCggl/T3Cj61L9f8HC+GTB5U9gZ/RQMOE1GGzn9yEua16rwWdt8PbaTHAnT+Q3MF01GVEfb5lNsHSOpY5Y7/XSn6uIPo3yB2EtCfhqdWlxGRDQ8YtSKOLaGDLCUoHLzgMk0ivQMsAVHp2s88+7C8YAG93c/Bh1X2kiF9mqW3veKhFTa/ZjjYDXqPIM2AUjtHKDq+ijh42kEV4pF42erd/t7nIGkHE9j6j01a5L12onU5fZFPlgReKiGAeQgGNCDazYgXWzNzvuCDtnflNRfNrsvJJWWYRZB+fnBV4luOzFUEJ0NvZcvpahWl2a1m1fJEr+MDVkh6t8UqVlWVegjzjrdoEOnqaLErfoaQCuKxxxr54xCCMpmbMNjWPtpXrm2ZFm/Fwp4brBoZO4hrb0yREBx3BouZI7T5JbYioN1ZF8PQRJaxDRnMuhmy6yb9KKxKErVvydOB8zX6FnRnBIgB0/BPKWyvm2rUb6qUanFx8O2a77XK5pZ0Rmz8Daf5NuatepjWq0lIvD0PDAil3xWCl+jLFGpvqQIYDr7UsANzFALJpdhcORakK7X8tcWfC7bAGWE/QxYmDjJagY35W8i1I381srV5IJ4mAGpTI0wDCf8Dk47VjP21pCAvUZ2baAXQXuP1YOdpNTeXcQREDs5LPYiZmj0Z2Yb4sEf3XVxG4L3QwYmaTBIoqh0GDXlWrR6s1YeSmXY= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230022)(4636009)(396003)(346002)(376002)(39860400002)(136003)(451199015)(46966006)(40470700004)(36840700001)(31686004)(41300700001)(40480700001)(44832011)(8936002)(70206006)(5660300002)(4326008)(8676002)(70586007)(316002)(31696002)(36756003)(6486002)(83380400001)(6666004)(478600001)(6506007)(26005)(356005)(2906002)(86362001)(81166007)(107886003)(6512007)(2616005)(47076005)(66574015)(336012)(186003)(82740400003)(82310400005)(40460700003)(36860700001)(53546011)(43740500002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2022 14:05:09.2403 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fb12cdce-5dbd-4241-a7e4-08dacbc9665c X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT035.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB5913 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Luis Machado via Gdb-patches Reply-To: Luis Machado Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" On 11/18/22 15:52, Torbjörn SVENSSON wrote: > Without this patch, sp might be secure, but msp or psp is non-secure > (this state can not happen in the hardware). Maybe expand to make it clear we're patching things so we correctly sync msp/psp to the active sp. > > Signed-off-by: Torbjörn SVENSSON > --- > gdb/arm-tdep.c | 86 ++++++++++++++++++++++++++++++++++---------------- > 1 file changed, 58 insertions(+), 28 deletions(-) > > diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c > index 124a94dc87d..c011b2aa973 100644 > --- a/gdb/arm-tdep.c > +++ b/gdb/arm-tdep.c > @@ -324,20 +324,6 @@ reconstruct_t_bit(struct gdbarch *gdbarch, CORE_ADDR lr, ULONGEST psr) > return psr; > } > > -/* Initialize stack pointers, and flag the active one. */ > - > -static inline void > -arm_cache_init_sp (int regnum, CORE_ADDR* member, > - struct arm_prologue_cache *cache, > - frame_info_ptr frame) > -{ > - CORE_ADDR val = get_frame_register_unsigned (frame, regnum); > - if (val == cache->sp) > - cache->active_sp_regnum = regnum; > - > - *member = val; > -} > - > /* Initialize CACHE fields for which zero is not adequate (CACHE is > expected to have been ZALLOC'ed before calling this function). */ > > @@ -362,34 +348,78 @@ arm_cache_init (struct arm_prologue_cache *cache, frame_info_ptr frame) > > if (tdep->have_sec_ext) > { > - CORE_ADDR msp_val = get_frame_register_unsigned (frame, tdep->m_profile_msp_regnum); > - CORE_ADDR psp_val = get_frame_register_unsigned (frame, tdep->m_profile_psp_regnum); > - > - arm_cache_init_sp (tdep->m_profile_msp_s_regnum, &cache->msp_s, cache, frame); > - arm_cache_init_sp (tdep->m_profile_psp_s_regnum, &cache->psp_s, cache, frame); > - arm_cache_init_sp (tdep->m_profile_msp_ns_regnum, &cache->msp_ns, cache, frame); > - arm_cache_init_sp (tdep->m_profile_psp_ns_regnum, &cache->psp_ns, cache, frame); > - > + const CORE_ADDR msp_val > + = get_frame_register_unsigned (frame, tdep->m_profile_msp_regnum); > + const CORE_ADDR psp_val > + = get_frame_register_unsigned (frame, tdep->m_profile_psp_regnum); > + > + cache->msp_s > + = get_frame_register_unsigned (frame, tdep->m_profile_msp_s_regnum); > + cache->msp_ns > + = get_frame_register_unsigned (frame, tdep->m_profile_msp_ns_regnum); > + cache->psp_s > + = get_frame_register_unsigned (frame, tdep->m_profile_psp_s_regnum); > + cache->psp_ns > + = get_frame_register_unsigned (frame, tdep->m_profile_psp_ns_regnum); > + > + /* Identify what msp is alias for (msp_s or msp_ns). */ > if (msp_val == cache->msp_s) > cache->active_msp_regnum = tdep->m_profile_msp_s_regnum; > else if (msp_val == cache->msp_ns) > cache->active_msp_regnum = tdep->m_profile_msp_ns_regnum; > + else > + { > + warning (_("Invalid state, unable to determine msp alias.")); > + cache->active_msp_regnum = tdep->m_profile_msp_s_regnum; It seems we're assuming msp is msp_s, so it would be nice to put that in the warning as well. warning (_("Invalid state, unable to determine msp alias, assuming msp_s.")); > + } > + > + /* Identify what psp is alias for (psp_s or psp_ns). */ > if (psp_val == cache->psp_s) > cache->active_psp_regnum = tdep->m_profile_psp_s_regnum; > else if (psp_val == cache->psp_ns) > cache->active_psp_regnum = tdep->m_profile_psp_ns_regnum; > + else > + { > + warning (_("Invalid state, unable to determine psp alias.")); > + cache->active_psp_regnum = tdep->m_profile_psp_s_regnum; > + } > > - /* Use MSP_S as default stack pointer. */ > - if (cache->active_sp_regnum == ARM_SP_REGNUM) > - cache->active_sp_regnum = tdep->m_profile_msp_s_regnum; > + /* Identify what sp is alias for (msp_s, msp_ns, psp_s or psp_ns). */ > + if (msp_val == cache->sp) > + cache->active_sp_regnum = cache->active_msp_regnum; > + else if (psp_val == cache->sp) > + cache->active_sp_regnum = cache->active_psp_regnum; > + else > + { > + warning (_("Invalid state, unable to determine sp alias.")); > + cache->active_sp_regnum = cache->active_msp_regnum; > + } Same here. "assuming msp". > } > else if (tdep->is_m) > { > - arm_cache_init_sp (tdep->m_profile_msp_regnum, &cache->msp_s, cache, frame); > - arm_cache_init_sp (tdep->m_profile_psp_regnum, &cache->psp_s, cache, frame); > + cache->msp_s > + = get_frame_register_unsigned (frame, tdep->m_profile_msp_s_regnum); > + cache->psp_s > + = get_frame_register_unsigned (frame, tdep->m_profile_psp_s_regnum); > + > + /* Identify what sp is alias for (msp or psp). */ > + if (cache->msp_s == cache->sp) > + cache->active_sp_regnum = tdep->m_profile_msp_regnum; > + else if (cache->psp_s == cache->sp) > + cache->active_sp_regnum = tdep->m_profile_psp_regnum; > + else > + { > + warning (_("Invalid state, unable to determine sp alias.")); > + cache->active_sp_regnum = tdep->m_profile_msp_regnum; Same here. > + } > } > else > - arm_cache_init_sp (ARM_SP_REGNUM, &cache->msp_s, cache, frame); > + { > + cache->msp_s > + = get_frame_register_unsigned (frame, ARM_SP_REGNUM); > + > + cache->active_sp_regnum = ARM_SP_REGNUM; > + } > } > > /* Return the requested stack pointer value (in REGNUM), taking into Otherwise this looks OK to me.