From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id MD5qHR/YU2gtZhQAWB0awg (envelope-from ) for ; Thu, 19 Jun 2025 05:27:59 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=E3neJzbt; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=E3neJzbt; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 719A21E11C; Thu, 19 Jun 2025 05:27:59 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-9.1 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL, RCVD_IN_VALIDITY_SAFE autolearn=ham autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id A74D61E0C2 for ; Thu, 19 Jun 2025 05:27:58 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 420C43870CD3 for ; Thu, 19 Jun 2025 09:27:58 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 420C43870CD3 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=E3neJzbt; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=E3neJzbt Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazlp170130007.outbound.protection.outlook.com [IPv6:2a01:111:f403:c20f::7]) by sourceware.org (Postfix) with ESMTPS id 8242B3844178 for ; Thu, 19 Jun 2025 09:25:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8242B3844178 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8242B3844178 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c20f::7 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1750325151; cv=pass; b=HS7Szv09nGZ7H9cjeWYEqM8cvlowECXIwQ4IJBGHKVtxtficmoARxLAw+OOKLHe+O4GuqCFAoN0uDwLv4WA0I/tNFnTDfZRAmm12h9U8w6QIzktaGKhk1UCzixKlVrv3vYUSgiOxzKe6VtKvT2/Uw4q4hgjSYTHQbv7X0ySRaak= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1750325151; c=relaxed/simple; bh=PYJu7X1D2+gZUtjP3TDEeOnEDdNg6vmpTf3+M5Tz/kw=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:From:Subject:To: MIME-Version; b=bdEf9OmAkNsiKE1MoNa5EqyxmpVRUgkpRzSqB4nXJG+dMBF0w9s3qGYKjUGYn4EqxssbtU5xjtub+GD6rabGQ5Zn1PDOZzoM9e8WUHCyKbCdljhnoXlt03bsyHPo36ZQ7tbdNODMV0CVkH8Rk8/j+UhuYRI28Rn+F05EU71nDq4= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8242B3844178 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=CSuqpuim6jwk1UijSxlMCzzRep46vfGK2OWnlnyCZD9X9w3EPgAgHlzI1nWSA/eVMZ15IjMvF0ICG7hc9+eA96xZfC5h3SQCAjfs0N0IjOasJXjQnau1dAZ2rjrERq/1gxW5fLaX/kh6+/wvNcu51e1YiGLuqfUrVZE73VgPt/E26D8+TmTCOnryN1tKRq0jmruapjPwKbuV0Eg0Nc+rawjviwWFIKd8CG3lSYwH96irvMMSyT8lN6lC43/5NsCyl6dCZLWqA4gSETrialqiGQp1lBHJvKCNFQscL09LE7y6YESnOr0AlEipXME3TdkBJG/m0G60/j7cqKzalG57rA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=7qhq8XZWYDadAOWTxbSdXYzUZjqZcjLufSFUtkCO54o=; b=Kwl3Z8Uv1ng75+Nll4gxPp0McQ4lsEaKw409EyTaoCV8W6Cstg7V3wulZgjDyOliJd6BaZxPT4R4JW/P6SzuSuJlY10TAn11/+LbRkmI+3CdDpM5CCPdpq77Sve4H/OYAs4TmUIOS5uGLlGwyTND2DaS05xOw/xs/mkZWMZaEoIFfxDpemyrtVuTPjbocb+MtbQPWMUo6ECpPbSh6cuSHbQYUg87lSCHFiAXoUwMqG8A1FSEqXXzeanSjbZ4NZmZaQRjpD+F2eg2CYC69+pXcEQHr3MyZrcc2MIjhhniH2oZXjaZdoN2Lgy7NMvCNywTSyqu9fJPdVPEBSWcYmks3A== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=intel.com 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=arm.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]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7qhq8XZWYDadAOWTxbSdXYzUZjqZcjLufSFUtkCO54o=; b=E3neJzbtWcjdpWfeTl3UKiobSqyqIWdf8Em1IIURGRn4wfi12SqSbLGv3kBNcsNUi+xm5D51/fnmGRxhyy7gzdU55JeEYFOywFq72DRu6NPgje292KaRagQUQY1TISGKr8quN82aQA0bFrrIj2X4glyWLmoBxMRs3BitrcrA1i0= Received: from DUZPR01CA0194.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b6::19) by PAXPR08MB6333.eurprd08.prod.outlook.com (2603:10a6:102:15b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.19; Thu, 19 Jun 2025 09:25:48 +0000 Received: from DB1PEPF00039230.eurprd03.prod.outlook.com (2603:10a6:10:4b6:cafe::ae) by DUZPR01CA0194.outlook.office365.com (2603:10a6:10:4b6::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8835.35 via Frontend Transport; Thu, 19 Jun 2025 09:25:45 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DB1PEPF00039230.mail.protection.outlook.com (10.167.8.103) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8857.21 via Frontend Transport; Thu, 19 Jun 2025 09:25:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cMFMw9GCD+ADSLNWdNy+C49RABnBVan2B7DHTK5/nJVkV9fAXcM9YlkRbH9ft1kM7Sa1H9XWzwVX2BGc0TAoV46g1CTsO/usw5er6XuZPw0XOrSJk9C0v9dlhG55uiKs6urZ0Q9vTWNA5+9sSDqj98+ESgPpBxVz3bemahwstT/AekbTAywmlN1nTFZQV3o3g3povVl61KM5mX6sppRJUoe6cRoj73TtaIwf4Zumr6PbplRUadO0BmNTMgiHW2iHD/aDJj0NSZUmfjrCUZwKCwO1xLvqabaVvv3wDYxbbdAaVrEdQPTvEZtuLLt1AJHdWFOJNF5e79WV7yhdsbw34g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=7qhq8XZWYDadAOWTxbSdXYzUZjqZcjLufSFUtkCO54o=; b=y/O1ek/KP0fcTWK/oW2pzZk9dTtC+A6MiqPj0doL+If9ksvb2yh18cpNXjes5Zr8aF5zy4tGc+pu2X66UGkGRp7Pn95a9yH6PiHG4ecfjRlMkkMMkvdmpiv9CByu/4Zm2oxjiqdDfTTQj5Q4hD/l2QwxH/UWKwgBRgHyNn3iibxLFVBPNnBOvBFEQadegWIXuUEVM6GVk6Ord+gnuiHpKM3EF2gNr/t4SmqzxoR2PcwlkaPHdDTm2AzRtkZZZKhXZHalnrd3eVBh8pPxKbjKo9fdRf9f2ITS3Iei8HDZ6S4aialEqhj1qVEhyiqUmgEsLLFclDxa81TDcvn/Sk7jwg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7qhq8XZWYDadAOWTxbSdXYzUZjqZcjLufSFUtkCO54o=; b=E3neJzbtWcjdpWfeTl3UKiobSqyqIWdf8Em1IIURGRn4wfi12SqSbLGv3kBNcsNUi+xm5D51/fnmGRxhyy7gzdU55JeEYFOywFq72DRu6NPgje292KaRagQUQY1TISGKr8quN82aQA0bFrrIj2X4glyWLmoBxMRs3BitrcrA1i0= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from PR3PR08MB5852.eurprd08.prod.outlook.com (2603:10a6:102:8e::21) by AS4PR08MB7829.eurprd08.prod.outlook.com (2603:10a6:20b:519::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.26; Thu, 19 Jun 2025 09:25:13 +0000 Received: from PR3PR08MB5852.eurprd08.prod.outlook.com ([fe80::f44:d113:1c29:825d]) by PR3PR08MB5852.eurprd08.prod.outlook.com ([fe80::f44:d113:1c29:825d%6]) with mapi id 15.20.8857.019; Thu, 19 Jun 2025 09:25:13 +0000 Message-ID: Date: Thu, 19 Jun 2025 10:25:05 +0100 User-Agent: Mozilla Thunderbird From: Luis Machado Subject: Re: [PATCH v4 07/11] gdb: Handle shadow stack pointer register unwinding for amd64 linux. To: Christina Schimpe , gdb-patches@sourceware.org Cc: thiago.bauermann@linaro.org, eliz@gnu.org References: <20250617121147.1956686-1-christina.schimpe@intel.com> <20250617121147.1956686-8-christina.schimpe@intel.com> Content-Language: en-US In-Reply-To: <20250617121147.1956686-8-christina.schimpe@intel.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: JNXP275CA0044.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:18::32) To PR3PR08MB5852.eurprd08.prod.outlook.com (2603:10a6:102:8e::21) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: PR3PR08MB5852:EE_|AS4PR08MB7829:EE_|DB1PEPF00039230:EE_|PAXPR08MB6333:EE_ X-MS-Office365-Filtering-Correlation-Id: fa2907ce-a17d-46e2-1787-08ddaf134690 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info-Original: =?utf-8?B?OXVzVjNHNi9UM2ZLZkRrendmYnBlSFBQbmF6Vk5tbjJYeUwwY0pQNENXRkVp?= =?utf-8?B?MVIybSs1OVBDYVNpdEgzbjFsUU1uTmZBRHZla0NPTUdXYXJVQ1AxZXdJZ2tC?= =?utf-8?B?U3R5bVRCM3Bha2g1aXBsMmxsek10c0xFT2xPTE54S291VHpUZFdFYXh3K3c2?= =?utf-8?B?ZllqQWRwT3FaeVZjcGI4ck4wQWlHb2xWUVpISFVtYm1RdFd2dTNOUmRBczlM?= =?utf-8?B?RkZyM2hvUWlrbS9jUzNMUXA3dnFhNTdhN0Yyb0NKYkRuRHprcnlXOU5WYSti?= =?utf-8?B?OUYzSGpPaDZsa3lTMDBORVdhMEFnQjY2NjIyckdrY29US1VrTFFONUpMUGV0?= =?utf-8?B?V1BkYnRCZDVQWkZGWDN5cVJTalJ6OUFJQjBVeE1kQ1U5Nm9GaEEvU3I4VE5x?= =?utf-8?B?Wm1QYmtSYWFxbFp1ejY3cERsTWxtbW9YbEFLb21BYzFzbHR1dmVmR3l1T0pz?= =?utf-8?B?VytTdkJlZGY4THAxWlZPTWJXcVEzKzhhejQ5L3NUeFJXNHVBWHV6MDlOZmd1?= =?utf-8?B?QVNFNzFtVU5xRGZ5UHZhMExNS1VLbCt3T3IzSklGS3FlaVFPdXQzVzM0Wm9S?= =?utf-8?B?Qkc2ak1JZ1VpQ2FsaDZIYzJGcEhxMG5CK0JDdm5JL204NC9tM3ZGMmdxSlFj?= =?utf-8?B?UEFmT0o0Q1JOUGpJMmpBc21Qc0xEV3ZpYzNVWXoycjNEbjk5ZkVsOHp1Q1ZS?= =?utf-8?B?bkxDTTE4K2x0ZDJycVRab1Vkd0FHUFV1bEN0TWRTSW9NbElra2RhZ0VpcGxK?= =?utf-8?B?OXBKNWtjRUFNQWV4MFNKOWZ6MTR4aUc3T29tRmliNEdUSmg1K0puR1RPNDhC?= =?utf-8?B?MUNvZzBDUFpHUlNrVzhHcDlybXl1ZHNpemYyVUhXakxwcE4yd1JWZWhqZU1U?= =?utf-8?B?eGNEQWZ3dG1HVzgyUWl3d3RhTmFOSllSMzllS1JuTjc5VHk0UWhBOEFBVzha?= =?utf-8?B?dW9UbEFxdmpUdXBWZXhrVnNJUWhoVEVueVB0d3BkWk03VkFQRWcyMWRWVGdK?= =?utf-8?B?dmFCNWlHRG05dUpncDBpeU95c0lnYUhMSGRtQ1I5b0I2b3lHWTlLWnRlVjEr?= =?utf-8?B?ZVUrYlJVOERVU0c0dmlIQ09nbldrbFVRNEN0RWFONUsyTk03ZkkxWHRhZFhj?= =?utf-8?B?Z1BiVWcwUDRoUXRQdzVqeGVDMWRFckRGMGhCNXFLNytWMkxrRkJ2Uk5KZURR?= =?utf-8?B?dzF4ZS9JSXlzSHh2cnp2cGVPeHlsODZOelJ2alYzNFc3RjMyVGprZ3FpdWJo?= =?utf-8?B?UzJuU1RvVkgyb1dlemtMQmwwdlRrWjRqREpqdjRXeUtCRFhRSXlkUDlwenZt?= =?utf-8?B?TG1nanIwdVFWbkxLeDJVTTBDWHJTcXp1Zys4U3VubnpLNHZyYlQ2OTJFSExR?= =?utf-8?B?Mmx2SGpsR2VJVkNQaEF0dFdDemgxcDZ4Q21VVzhnVE11NE1Ma1ZlTGpjNjMr?= =?utf-8?B?cjMxWHlXaE1EdFB4bFVOWEo2b0puQ1pEajRreVg5bm5XMVpnUytKSlpIL0tq?= =?utf-8?B?eXVzT2dJYThvOURmQVI4Mzcrdll0SE1EWVVFeW9nQlRWSk1hK3NJSUpjVGdQ?= =?utf-8?B?dHVWeFkwOTRhNzZIekducXR1d0J6K0lIdnJQZzhHSzdKZWJxSjk2c2dacGll?= =?utf-8?B?eWtXcEVOUXZuNW90eUlycHFIekNuK0VINTBFSVcrVG1uSms2OFhvbm1BV0p5?= =?utf-8?B?T1JCQi90NUpMb3dFLzlJWWJ1NXI0bXN1enIwOHRmVS8xa2E4MUJ0Y0xGY25v?= =?utf-8?B?WWU5QkZRM0RtL0RmTTdKVTJLZG40a0kyWXE0UjNJWGVKbU1TNkhLNzgxT0pW?= =?utf-8?B?eUkxY0hqVUZ3cHB3MFdGZDdqSUhsOHB1MXloeVk1T0w3TGg1SlBoVTl2Z0Ra?= =?utf-8?B?NWExTEF1S3VKQUM3M3prUUY5bzFkRVE3aEZNMmI3cXRVYk44ckJRODU3dG4z?= =?utf-8?Q?grqwr3YElKA=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PR3PR08MB5852.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7829 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF00039230.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 61112ef0-2e0d-4624-f819-08ddaf1331d3 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|14060799003|376014|35042699022|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WUFvR0oyN0RkUzhyNXNsQ01lRHBEMFVYdG56b2N5Z0VxKzY0MHRaRHJ2SWVo?= =?utf-8?B?VnJVbFdxWVhGeXovTS9yVlYrY0dMTGlQbFdvNU5kblZEankzV2NWalZRTDc2?= =?utf-8?B?Z3VmVmJOTzIxWGUwRkJVTVlpMHJveTdxWk1TWVZORVl3eVpHU0FkbUxqbWlN?= =?utf-8?B?ZlQrTWgxNEQ3bm0rQ1o3QjB5WDArWk94NG9lMy9jaEZOeU9SNlN5VHZmYmo0?= =?utf-8?B?aTNQcU9zeHdPV0hyaTA4dDJzSEFOUVlERWxZcHdKc0xkUDM3N3ZITlhxbTdn?= =?utf-8?B?Sm5GY3JxTmJQWEVWTzkrdkFtSHpuWjZPZXdwZmtRZUUrYnNhcnc3ZnR0MjhK?= =?utf-8?B?anBxZTVuZ3M3WDdIQlk2cFU0SDhhTDdac1hCT2hTQW1pZjJUa1F3S3VtVFFk?= =?utf-8?B?b1NtTDlKRllUb0dkQzJDWG5NT3dTV1pyL3RSVDZYWVV5eEhSZDNVaW52ZVY3?= =?utf-8?B?UERVemc5WE10UlpQUXp1L2FUbi9BMkZWSzNTRHFnVU9DQm1LUG9ndk5IM2w5?= =?utf-8?B?OWtsdHlpdGhBODY3cUx6QUkwZzR0b3V3d0o3WVRaWHMxWlJpaWUyVFlZM2Q0?= =?utf-8?B?YUozdVBLcEpkOGtlbWpuKzhqSHdOeGtIYjVSa3VyM1U0S0FBaVROTEwxVGU1?= =?utf-8?B?azZhL0tlWXZMZ3FTTGp0L2pQZ2tJQmxNWTlQUTYxZ1B1UlhvaFlXeXdPRG45?= =?utf-8?B?bmtkQU8yZUhMZ3A5cDEvSkdrdHNpZTI3NW54Vmtzc0VYY3dDZWJudzlxbnBQ?= =?utf-8?B?bU9nY2ZGUktGWVlnM0xKMGNFOEtVSDdYb3piNnNwMWcvRGxvcVloQXpza2V4?= =?utf-8?B?dVpVeWk4bWxsZE93R1lwSUgwaVQ1RSs0azdOSkNOZkxwQlMxUEl4TUllSDJt?= =?utf-8?B?YWp0U1VCRFE3MU90VEI1SEVnbnhLQWJ4ZGx4QWtJUW5tUC9HazVDTFBORlN2?= =?utf-8?B?RXNselAxUEdPaUdWclkrOG03RkZqSnRrZWM1dS9jc2syRy8ya3RvcjI0OWNj?= =?utf-8?B?dExIT0VaREVLbzNXUzRUN25vVmRySnhSaEx2MFZQNWc5ZUtrcWhNcmp6UmJs?= =?utf-8?B?UTlSaHV0TjVBNys0Wkwwb1JvaDljUU9PN21vTG1tNzA4S1l5TVIwTG1vTzd3?= =?utf-8?B?R2JoRlcraVI3K1lXU0JwZ091Qk8yLzlXVlpxTDFtMVg3ZkYraWhXR0s2TmV0?= =?utf-8?B?QXE1ZG9WL3Z3YldBZ1VMRDBnRlRyd0I4RHZyaG5FSWJRYkptTm9ZdGJ5UGZM?= =?utf-8?B?N2txSUpUVlBPU3d2ZGgvd25lY0RXWTlEK0ZnNzRIMitPWGc4QjhtZTEwS05Q?= =?utf-8?B?ZDM5RjJkbnpkbnl3M1pheXpHT1BKOTg5MkJPdEhGQ0ppdjFzbFQ4cDh1aDBT?= =?utf-8?B?SjV3QkN3ZGtFOUlTaElDYzluTjlsY25GZXJzSkh1WGlDOEdiZ05waXo5V09r?= =?utf-8?B?ZGd6anQrOU1wUEZTZ2lhNWhseGNIdEE3aWNLOEprZHc2N01NTEIzcWw5eGZH?= =?utf-8?B?SHozRk55U2wzNXMrcnlaOGF5bWJHRXVicVQvUHJFQkpaS1REMDAra0NtUVN2?= =?utf-8?B?emswUzlFbTNTdU9qOC9MWVBsRlpwbHE1TlpsWlYycmZrRUVKRGNlNE9oTW1Q?= =?utf-8?B?alJZNnZaaUZYbTMvOER3RFNDc2c3akV4UDU1bVdvODllbHlSZE0yVU1maUgr?= =?utf-8?B?MU4zVk1ucjIvTDJtOGEvRjhqbmlNQ1hFOFBQTjFlcGVnNUlTVFVYVU90T3Uz?= =?utf-8?B?YXM4R0E1UDJkVnNXZmgweGJXYnc4QU42TUhURUNZQXV4Q1NwTXQ5ejFJMEVQ?= =?utf-8?B?eHYzYy9FakdWVHFBbVVmcGZQV25jejVZTy9YZDJteTg3dzVuaWRqVWJEL28w?= =?utf-8?B?UHpmL2FjSzMrZkVacHZpVTdERlpBaVpWSS9NakxzYVlCVzd2Nnh4ZWVWNWNr?= =?utf-8?B?NWtsSGh0bmJjUVExZG5FZmc1UFdDRkdQYTM3aWV6Y0dTbmNrTFJNSmppMlRU?= =?utf-8?B?aXdFTnpVaCtoTFVQMncrY3lid3FSTE5BOUpGcXJKdldwMCs1MERxNTFaOGZI?= =?utf-8?Q?V2VlNI?= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(14060799003)(376014)(35042699022)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2025 09:25:47.8505 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fa2907ce-a17d-46e2-1787-08ddaf134690 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DB1PEPF00039230.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6333 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org On 6/17/25 13:11, Christina Schimpe wrote: > Unwind the $pl3_ssp register. > We now have an updated value for the shadow stack pointer when > moving up or down the frame level. Note that $pl3_ssp can > become unavailable when moving to a frame before the shadow > stack enablement. In the example below, shadow stack is enabled > in the function 'call1'. Thus, when moving to a frame level above > the function, $pl3_ssp will become unavaiable. > Following the restriction of the linux kernel, implement the unwinding > for amd64 linux only. > > Before this patch: > ~~~ > Breakpoint 1, call2 (j=3) at sample.c:44 > 44 return 42; > (gdb) p $pl3_ssp > $1 = (void *) 0x7ffff79ffff8 > (gdb) up > 55 call2 (3); > (gdb) p $pl3_ssp > $2 = (void *) 0x7ffff79ffff8 > (gdb) up > 68 call1 (43); > (gdb) p $pl3_ssp > $3 = (void *) 0x7ffff79ffff8 > ~~~ > > After this patch: > ~~~ > Breakpoint 1, call2 (j=3) at sample.c:44 > 44 return 42; > (gdb) p $pl3_ssp > $1 = (void *) 0x7ffff79ffff8 > (gdb) up > 55 call2 (3); > (gdb) p $pl3_ssp > $2 = (void *) 0x7ffff7a00000 > (gdb) up > 68 call1 (43i); > (gdb) p $pl3_ssp > $3 = > ~~~ > > As we now have an updated value for each selected frame, the > return command is now enabled for shadow stack enabled programs, too. > > We therefore add a test for the return command and shadow stack support, > and for an updated shadow stack pointer after a frame level change. > > Reviewed-by: Thiago Jung Bauermann > --- > gdb/amd64-linux-tdep.c | 84 ++++++++++++++++++ > gdb/linux-tdep.c | 47 ++++++++++ > gdb/linux-tdep.h | 7 ++ > .../gdb.arch/amd64-shadow-stack-cmds.exp | 88 +++++++++++++++++++ > gdb/testsuite/gdb.arch/amd64-shadow-stack.c | 13 +++ > 5 files changed, 239 insertions(+) > create mode 100644 gdb/testsuite/gdb.arch/amd64-shadow-stack-cmds.exp > > diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c > index d806d3cb1f7..9436f0b190c 100644 > --- a/gdb/amd64-linux-tdep.c > +++ b/gdb/amd64-linux-tdep.c > @@ -47,6 +47,8 @@ > #include "arch/amd64-linux-tdesc.h" > #include "inferior.h" > #include "x86-tdep.h" > +#include "dwarf2/frame.h" > +#include "frame-unwind.h" > > /* The syscall's XML filename for i386. */ > #define XML_SYSCALL_FILENAME_AMD64 "syscalls/amd64-linux.xml" > @@ -1917,6 +1919,87 @@ amd64_linux_get_tls_dtv_addr (struct gdbarch *gdbarch, ptid_t ptid, > return dtv_addr; > } > > +/* Return the number of bytes required to update the shadow stack pointer > + by one element. For x32 the shadow stack elements are still 64-bit > + aligned. Thus, gdbarch_addr_bit cannot be used to compute the new > + stack pointer. */ > + > +static inline int > +amd64_linux_shadow_stack_element_size_aligned (gdbarch *gdbarch) > +{ > + const bfd_arch_info *binfo = gdbarch_bfd_arch_info (gdbarch); > + return (binfo->bits_per_word / binfo->bits_per_byte); > +} > + > + > +/* Implement shadow stack pointer unwinding. For each new shadow stack > + pointer check if its address is still in the shadow stack memory range. > + If it's outside the range set the returned value to unavailable, > + otherwise return a value containing the new shadow stack pointer. */ > + > +static value * > +amd64_linux_dwarf2_prev_ssp (const frame_info_ptr &this_frame, > + void **this_cache, int regnum) > +{ > + value *v = frame_unwind_got_register (this_frame, regnum, regnum); > + gdb_assert (v != nullptr); > + > + gdbarch *gdbarch = get_frame_arch (this_frame); > + > + if (v->entirely_available () && !v->optimized_out ()) > + { > + int size = register_size (gdbarch, regnum); > + bfd_endian byte_order = gdbarch_byte_order (gdbarch); > + CORE_ADDR ssp = extract_unsigned_integer (v->contents_all ().data (), > + size, byte_order); > + > + /* Starting with v6.6., the Linux kernel supports CET shadow stack. Same typo as before, period after "v6.6". > + Using /proc/PID/smaps we can only check if the current shadow > + stack pointer SSP points to shadow stack memory. Only if this is > + the case a valid previous shadow stack pointer can be > + calculated. */ > + std::pair range; > + if (linux_address_in_shadow_stack_mem_range (ssp, &range)) > + { > + /* The shadow stack grows downwards. To compute the previous > + shadow stack pointer, we need to increment SSP. */ > + CORE_ADDR new_ssp > + = ssp + amd64_linux_shadow_stack_element_size_aligned (gdbarch); > + > + /* If NEW_SSP points to the end of or before (<=) the current > + shadow stack memory range we consider NEW_SSP as valid (but > + empty). */ I couldn't quite understand the difference between the empty case and the unavailable case. But maybe I just don't fully understand the feature. Would it be possible to make the comment a bit more clear? > + if (new_ssp <= range.second) > + return frame_unwind_got_address (this_frame, regnum, new_ssp); > + } > + } > + > + /* Return a value which is marked as unavailable in case we could not > + calculate a valid previous shadow stack pointer. */ > + value *retval > + = value::allocate_register (get_next_frame_sentinel_okay (this_frame), > + regnum, register_type (gdbarch, regnum)); > + retval->mark_bytes_unavailable (0, retval->type ()->length ()); > + return retval; > +} > + > +/* Implement the "init_reg" dwarf2_frame_ops method. */ > + > +static void > +amd64_init_reg (gdbarch *gdbarch, int regnum, dwarf2_frame_state_reg *reg, > + const frame_info_ptr &this_frame) > +{ > + if (regnum == gdbarch_pc_regnum (gdbarch)) > + reg->how = DWARF2_FRAME_REG_RA; > + else if (regnum == gdbarch_sp_regnum (gdbarch)) > + reg->how = DWARF2_FRAME_REG_CFA; > + else if (regnum == AMD64_PL3_SSP_REGNUM) > + { > + reg->how = DWARF2_FRAME_REG_FN; > + reg->loc.fn = amd64_linux_dwarf2_prev_ssp; > + } > +} > + > static void > amd64_linux_init_abi_common(struct gdbarch_info info, struct gdbarch *gdbarch, > int num_disp_step_buffers) > @@ -1974,6 +2057,7 @@ amd64_linux_init_abi_common(struct gdbarch_info info, struct gdbarch *gdbarch, > > set_gdbarch_remove_non_address_bits_watchpoint > (gdbarch, amd64_linux_remove_non_address_bits_watchpoint); > + dwarf2_frame_set_init_reg (gdbarch, amd64_init_reg); > } > > static void <...> Otherwise the rest looks OK to me. Reviewed-By: Luis Machado