From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2076.outbound.protection.outlook.com [40.107.22.76]) by sourceware.org (Postfix) with ESMTPS id 3B37B3856DCF for ; Sat, 16 Jul 2022 02:03:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3B37B3856DCF ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=IHs5c5YEUclUbcU0h/f6EfDmXwmNhOglPXdne0fAM6+RmWGuYCBzyPEJdK7wSLQY/Sbh5Gz240xONH2uYc+8IPdeJZ81sQnOcrHfqfNsdV2xFeaNuwFIa42FNAwJnhaQB3uJo+Vu29tPq7MDHYgl+q5DlOxnWTovZmLLej2IR/d53NpunHy6G0RXsbANiFiwRmt7c6u75L6siKl1Y+uJu+xdq3Qd4ApHojIHYXJv3coYGIEED328gIasgrHSmxfeFaTH1t0jog3pkfO/jGqAEqDdC0LHlMK4ltb8g+O6dq5kexhaTG9UWIbQdCxDmDpX6QHFt00WY2o2o3szDlBRHQ== ARC-Message-Signature: i=2; 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=3E3NPZoawQJiNzkyXrMd9MLnGui1J3AC/45r9q9xqvU=; b=YiQvKtl4zcTpyjLWQhDCpFxYsJUE37MkIHmQg8nXO9JZ6A68H0sKUB8IIscInAmK8B/JRCeKaiQAHAJESDATZAVdK/u0vdnacejrpyaFbkXSJ7BzlVcK4JSIZ6oY5U/GNqLKQ9RAF+MuicB+AVtVLzz4kYKUN116aGPnUl3oeDWttDowlKPD9IQnX7X9xBfzqhb8CUtaX/vvXnGV8JGkSwdxqQpl5teHhfyPUoX9PU/yRkf+SeEOOfrJnZMmlIu59mI4mHW737Hm4o3liZBZQHpL545x3RFAJNgawIO1AQhv9UW+84XS0AWHwJ9LLJv3FlyxQ2RnkEgZP7yh4BZbbw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from AS9PR06CA0734.eurprd06.prod.outlook.com (2603:10a6:20b:487::10) by AS1PR08MB7612.eurprd08.prod.outlook.com (2603:10a6:20b:477::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.12; Sat, 16 Jul 2022 02:03:34 +0000 Received: from AM5EUR03FT003.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:487:cafe::f5) by AS9PR06CA0734.outlook.office365.com (2603:10a6:20b:487::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.14 via Frontend Transport; Sat, 16 Jul 2022 02:03:34 +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 AM5EUR03FT003.mail.protection.outlook.com (10.152.16.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.12 via Frontend Transport; Sat, 16 Jul 2022 02:03:34 +0000 Received: ("Tessian outbound 73dd6a25223d:v123"); Sat, 16 Jul 2022 02:03:34 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: e561ae99881a2486 X-CR-MTA-TID: 64aa7808 Received: from 0d51ace67bf8.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 4AF5479D-D955-4933-A5B0-47FFDAED396B.1; Sat, 16 Jul 2022 02:03:27 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 0d51ace67bf8.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Sat, 16 Jul 2022 02:03:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kynFDYeu8JiuJlmSHwvXKzBb6Vrb0MCsx9E1lcvGCZyM7toJ6wRpJVqUOU291dqtXUhNCgF7AEfouEqltQW1DygyvhI7Q0NL6LO5OVJTVW5vmiL3Fw2oTe6tENNR6i/2aVMjDpNiW+C5pRjGDOtyyGJrB0DCPsu1g2uswsqy6zNfxoumEyC0ojDWia+WUHhmDIEsr0daAw58Rs1MMGUSTnqXx5rBrPNE9BhvQ0w24oewW1FgJo7VRq1VPUerkZjqs/v0whItIPGtFHpn5aDH5PRL2vQyzkY8Wok6Nc1zPUV3ewBneUM2SgO3rQ8eBSuXOWuxbEx8iw8TpRxcpNEdXw== 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=3E3NPZoawQJiNzkyXrMd9MLnGui1J3AC/45r9q9xqvU=; b=M/w/0fL6+6Rq+ylG3s3utdJx9rv3/D7wqeGdW40V2uDhzdB06AlOhrxJAmAvL7PbC1Kg/9Cl1CDpMM1mwomvheVEAosJN4g52vBhQJ1WzSuionazU+cUvKGRViAGpPEd+G+djuNb+ziQZ365Es5qoHf4R/LXgbbwxvolMuu4sBVnl7aBqHW8THrBM2LsAH+NeUsXd1zp1YU2iLHd6PL/reEr987f5TcVaKAmeKV79kYJcCGVyUC7t+5+N0X5kqj8iipJyIYEv93vf+gBDemsUlhN4wKXKuw3L3zDVbvT2p1SiJvTQ7FWscThAVWQyGsdTbtyTrsmHo6wRoqLwUl1rw== 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 HE1PR0801MB1962.eurprd08.prod.outlook.com (2603:10a6:3:57::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.15; Sat, 16 Jul 2022 02:03:25 +0000 Received: from VI1PR08MB3919.eurprd08.prod.outlook.com ([fe80::e866:af0e:2168:5ca7]) by VI1PR08MB3919.eurprd08.prod.outlook.com ([fe80::e866:af0e:2168:5ca7%5]) with mapi id 15.20.5438.018; Sat, 16 Jul 2022 02:03:25 +0000 Message-ID: <65e76c95-0b0a-d491-06af-c1823c45869c@arm.com> Date: Sat, 16 Jul 2022 03:03:23 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 From: Luis Machado Subject: Re: [PATCH V2 2/2] gdb/arm: Sync sp with other *sp registers To: Yvan Roux , gdb-patches@sourceware.org Cc: Torbjorn SVENSSON References: <20220707091722.GB5239@gnbcxd0114.gnb.st.com> <20220707092116.GD5239@gnbcxd0114.gnb.st.com> Content-Language: en-US In-Reply-To: <20220707092116.GD5239@gnbcxd0114.gnb.st.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: LO4P265CA0156.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2c7::18) To VI1PR08MB3919.eurprd08.prod.outlook.com (2603:10a6:803:c4::31) MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 935da5a4-e37c-4b1e-3cc2-08da66cf63d9 X-MS-TrafficTypeDiagnostic: HE1PR0801MB1962:EE_|AM5EUR03FT003:EE_|AS1PR08MB7612:EE_ 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: s3jkhqJVyH2H90KkfJ6B1qsjVK+IvbGABrKDVLF8LVelElR2wUmvOtIt2LBLMsN8DnvbqG+d17UR/l8lrO0OOUMnKkgthZvKKMIU4fcDdJcf5ek1F0qC+RS9PfnWKkOm/BR7DYmEZAzVGgjDG3ErJFXah36Rf1VmTDDjYnXCRT7EDPHDAIbUVeTy1tSY3iPCZsEcxk8wAXZVzbZfbJxlo7uX5grTGceTHA/aSz39SNhABK/l9vUIS5Ye8pyWJBBy3dTEc68stAQd4GRKdic2lFEZyEsr+3HC2DbuaWgwj7mSUXqM+vq0Kjsic/cY7hwVDvMUskK9pGKqzvxWELjDL9C+nNTZFPV+2w0BN+nT0cJ3Po1LLq+/n3FoZVpo7ECz2yeMeGcYZ7enKXv0/qGC8p0KDY3mwCYZt8Tid7cJ771EJLoLuU2fX253C8HdD6jJnTLko7Cmy67LWBf3pTku91HETv7A4v9RCqRYOIGL4W0cD9n3djrKS2T44OfXCeoC4cRPFf62hZuhtJ1wZyLKup91T8uxI7924JQuhtUYSLg8HxzdQgu3p5w+t/C0k7M6hPQtWOUNWjJPyTZ7WLv9+ckDsNwIEXPFET04I45wL1DEI+E53qR2xhQDGIZSbXpMGtYiInYn+BzJqLPJIlLwfyT4BGTn1BEJY8eaIqxefi/4+x1wwlmOcKasIKxmK6LjMvpQ4hrkFBnzISP9nVFHqkVjZfHTVSkT6X6YVHpnIhYvaTxp8JecIa1Pe9jP5pp3clBBqkBNv0wrVrSAJYLx2G5wOGA3uObnSRXhRKM9Z+o6PmHk7aUWTCCV6Gqx5jg1sF/+Xou46gxxvPpg5HrcHFQMmf3iP3+8JjwHqtgjB9g= 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:(13230016)(4636009)(376002)(39860400002)(346002)(136003)(396003)(366004)(2906002)(6506007)(6486002)(53546011)(66476007)(41300700001)(5660300002)(316002)(478600001)(31696002)(44832011)(86362001)(83380400001)(8936002)(66574015)(26005)(6512007)(186003)(2616005)(38100700002)(31686004)(66556008)(36756003)(8676002)(4326008)(66946007)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1962 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: AM5EUR03FT003.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: e07b1836-b183-4f70-8edc-08da66cf5e3e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vYWLGN3boPl3gsF3sm26KKhEic3XeP9UhPxSht2jntYXfQ++WNYfwc54o11GXdeGspbplUmmGYfjy4EtR4y/+ec9OPVKYqeEHwMnuhY8JCPVs6+TTJqcBeGicu2l0hHwCYouqxtk2ZbXvA7m4Gg0Xq7+dAcLWwMNA4CPvCcGaaypd2anr8dVoIubilXZZUxuC1pjVZcNYk95LWduF2MV3pOmr7Boh8twG8UKQK5rdWpnFdwMq5NBUpKkryabTOfR3bRXhCEC0d33QlC+HfzDnjl1l49zUUqmo8OqbI8CoFOd8sDUyuxHR8AwsRZv51nyeosCIny0oBYL64pvw08nHxFK9hr6p5wjc8vRWF//V3lPkKNzNFSShK09GDQZFBMAUzM2MSN89BfiLvzvFKQ3X75mz9TLo/50JRYy39Lgu3W1Hnv1vmMLs5S4Yz3RQ5Y0SDNltuyoIQyUmbumT5y9TBZbnzVV5KIkYNEcE8fU7CONr9CqdeHR3NRS3AholH2Ni2uRfpiXxNZnl4JuWiGbvaI1jGXixTLBCfS1CvdK6ik6UwGhDyujDphuY/kAgmxuehq1hvPHijOrgiNTjVCakpwAVA5KElx7OcuzFL/h6OM6tmhW2s1p0ixZrCqa0pPYT7s27/klteQX/qtgmJM/CMO91zXFZ60SAC6RKZAxb/vgysGlxmNyBAXOkl8tumzgeGEVAgK6OeBOjeEMBIU+LCd4hDfHr5bCZp6MgL2rr1Ivwf6WT0qLAEQMPbUFbhFKk6uLFHAdqLy88ewUp5IazHQaK5sgAtuLdTxTY2738sts3Wbsqn73wLGYTagey4eAHpVnj5Kv8UqyVL73xxyHoN90ncUqTUIGI1R5RJraERk= 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:(13230016)(4636009)(396003)(346002)(39860400002)(376002)(136003)(46966006)(40470700004)(36840700001)(66574015)(186003)(47076005)(336012)(70206006)(40480700001)(6486002)(41300700001)(70586007)(8676002)(83380400001)(6512007)(4326008)(2616005)(2906002)(26005)(31686004)(36756003)(6506007)(53546011)(36860700001)(86362001)(31696002)(44832011)(82310400005)(5660300002)(8936002)(316002)(82740400003)(356005)(81166007)(478600001)(40460700003)(43740500002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2022 02:03:34.5192 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 935da5a4-e37c-4b1e-3cc2-08da66cf63d9 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: AM5EUR03FT003.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7612 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org 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: , X-List-Received-Date: Sat, 16 Jul 2022 02:03:46 -0000 Hi, On 7/7/22 10:21, Yvan Roux wrote: > For Arm Cortex-M33 with security extensions, there are 4 different > stack pointers (msp_s, msp_ns, psp_s, psp_ns), without security > extensions and for other Cortex-M targets, there are 2 different > stack pointers (msp and psp). > > With this path, sp will always be in sync with one of the real stack path -> patch > pointers on Arm targets that contains more than one stack pointer. contains -> contain. > > Signed-off-by: Torbjörn SVENSSON > Signed-off-by: Yvan Roux > --- > gdb/arm-tdep.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 89 insertions(+) > > diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c > index 89c2779bbb5..c28543229de 100644 > --- a/gdb/arm-tdep.c > +++ b/gdb/arm-tdep.c > @@ -3812,6 +3812,85 @@ arm_dwarf2_prev_register (struct frame_info *this_frame, void **this_cache, > return frame_unwind_got_constant (this_frame, regnum, cpsr); > > default: > + /* Handle the alternative SP on Cortex-M. */ > + if (arm_is_alternative_sp_register (tdep, regnum)) > + { > + bool override_with_sp_value = false; > + CORE_ADDR val; > + > + if (tdep->have_sec_ext) > + { > + CORE_ADDR sp > + = get_frame_register_unsigned (this_frame, ARM_SP_REGNUM); > + CORE_ADDR msp_s > + = get_frame_register_unsigned (this_frame, > + tdep->m_profile_msp_s_regnum); > + CORE_ADDR msp_ns > + = get_frame_register_unsigned (this_frame, > + tdep->m_profile_msp_ns_regnum); > + CORE_ADDR psp_s > + = get_frame_register_unsigned (this_frame, > + tdep->m_profile_psp_s_regnum); > + CORE_ADDR psp_ns > + = get_frame_register_unsigned (this_frame, > + tdep->m_profile_psp_ns_regnum); > + > + if (regnum == tdep->m_profile_msp_regnum > + && (msp_s == sp || msp_ns == sp)) > + /* Use value of SP for MSP register. */ > + override_with_sp_value = true; > + else if (regnum == tdep->m_profile_msp_s_regnum && msp_s == sp) > + /* Use value of SP for MSP_S register. */ > + override_with_sp_value = true; > + else if (regnum == tdep->m_profile_msp_ns_regnum && msp_ns == sp) > + /* Use value of SP for MSP_NS register. */ > + override_with_sp_value = true; > + else if (regnum == tdep->m_profile_psp_regnum > + && (psp_s == sp || psp_ns == sp)) > + /* Use value of SP for PSP register. */ > + override_with_sp_value = true; > + else if (regnum == tdep->m_profile_psp_s_regnum && psp_s == sp) > + /* Use value of SP for PSP_S register. */ > + override_with_sp_value = true; > + else if (regnum == tdep->m_profile_psp_ns_regnum && psp_ns == sp) > + /* Use value of SP for PSP_NS register. */ > + override_with_sp_value = true; Can the above be simplified in some way? They outcomes are the same, so maybe we could have a single condition. > + } > + else if (tdep->is_m) > + { > + CORE_ADDR sp > + = get_frame_register_unsigned (this_frame, ARM_SP_REGNUM); > + CORE_ADDR msp > + = get_frame_register_unsigned (this_frame, > + tdep->m_profile_msp_regnum); > + CORE_ADDR psp > + = get_frame_register_unsigned (this_frame, > + tdep->m_profile_psp_regnum); > + > + if (regnum == tdep->m_profile_msp_regnum && sp == msp) > + /* Use value of SP for MSP register. */ > + override_with_sp_value = true; > + else if (regnum == tdep->m_profile_psp_regnum && sp == psp) > + /* Use value of SP for PSP register. */ > + override_with_sp_value = true; > + } Same here. > + > + if (override_with_sp_value) > + { > + /* Use value of SP from previous frame. */ > + struct frame_info *prev_frame = get_prev_frame(this_frame); Formatting: Space before ( > + if (prev_frame) > + val = get_frame_register_unsigned (prev_frame, ARM_SP_REGNUM); > + else > + val = get_frame_base(this_frame); Formatting: Space before ( > + } > + else > + /* Use value for the register from previous frame. */ > + val = get_frame_register_unsigned (this_frame, regnum); > + > + return frame_unwind_got_constant(this_frame, regnum, val); Formatting: Space before ( Please check for other occurrences. > + } > + > internal_error (__FILE__, __LINE__, > _("Unexpected register %d"), regnum); > } > @@ -4931,6 +5010,8 @@ arm_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, > struct dwarf2_frame_state_reg *reg, > struct frame_info *this_frame) > { > + arm_gdbarch_tdep *tdep = (arm_gdbarch_tdep *) gdbarch_tdep (gdbarch); > + > if (is_pacbti_pseudo (gdbarch, regnum)) > { > /* Initialize RA_AUTH_CODE to zero. */ > @@ -4950,6 +5031,14 @@ arm_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, > case ARM_SP_REGNUM: > reg->how = DWARF2_FRAME_REG_CFA; > break; > + default: > + /* Handle the alternative SP on Cortex-M. */ Maybe "Handle the alternative SP registers on Cortex-M."? > + if (arm_is_alternative_sp_register (tdep, regnum)) > + { > + reg->how = DWARF2_FRAME_REG_FN; > + reg->loc.fn = arm_dwarf2_prev_register; > + } > + break; > } > } > Otherwise this LGTM.