From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id F239F3858C52 for ; Mon, 19 Dec 2022 20:23:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F239F3858C52 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2BJIwtIl008070; Mon, 19 Dec 2022 20:23:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=KWdUQM6EJUTSpHyqH/CqiYjR+JyleZE8jiCxDAJej9c=; b=Tlz2i8o0dHHFVkdTAaOB6ZVbbt14n1sGRUJfdSESw0yuPxTUstPCK97ZFukaeVOmNNqG IfWa066k5BTdvCOgBXPq4zZC5M8qFvf971o2CY2D9RDJOIgp3Do7SK/+z1+W2hnClAeL 71nrLdJnlD9oWRcKdZOs0skAQCVrxFm/YEjaG4Q7pRe8E6qUfk7AtbyBP4JbZhgpxB7P 0wW2ZR7AWDUpo1rLzYuFGFqEAuewHaL6XiUCvx4gGfsmAAY5bRHemBjCB1X0lMKEwgKB 3V/qbPPDK7BVEWnsfLMjpoYQp/HV9rnhbcILbxrzPdc5OebsMacQLndDtuyf5iFD/FZC ZA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3mh6tn3tgq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Dec 2022 20:23:51 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2BJJc15e004629; Mon, 19 Dec 2022 20:23:44 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam04lp2177.outbound.protection.outlook.com [104.47.73.177]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3mh47ab10q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Dec 2022 20:23:43 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cRda5E+FHGDroIpBS03dqIuwulVLB+PUnRhCdxI05srsxSbZmRC6pfruiQN/i4nJi2W7jllxkh66EBfkKDyK2PRsJaapN4mIondu/Cx8Jxn8reGOmh3uERykH6Kksx87Xn2V2J18NbT+13izZCPNPKJFctibG/q0QULRRKkXAU68+0uusC5BIkEB5OKAAm4GtEbnY63LW2x0ZAyQ+tce318BZwFjX/lOLN4kjD1AG3Aj+KY63BdeEXOuGiScg852461Ydzr05POXHqr0B/Dzusrg8J51vKpSAdfVrWfQHUjQF8jdzJoHByUtmbN1DGmHuTCgJ7CfM6Zlx1dbU9+faw== 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=KWdUQM6EJUTSpHyqH/CqiYjR+JyleZE8jiCxDAJej9c=; b=RzICqhantw9gicawDv+gOG99DOntP8RX481mlfJKbeK8dbsDh0huh7b3wjRVgKm65FiNC/6kLZj2893Hz3GBxX/IXHbQqYxg7sW5moyRRrZmjJBzeAdtY7NZJEHbyUAnHKJDw7QaRtWw833vsAZYE9C7hjc82aQUOQL0iyOdvn/vK5+8qPS1000vhbuaeQOqH8wjnVJtL69A5rvPdjR/1iQARDn1fXIrL9sZlccuWsoxx2BS2945dzjLDhnnZQyWGDN1vjvzwnoY+iIpB6JHCnXa6b7ZFwE1imemqQasam0Ae3WEcVLnmUjrkSwbkSiQJFYDv2wM4Z/v78eqlCvuKA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KWdUQM6EJUTSpHyqH/CqiYjR+JyleZE8jiCxDAJej9c=; b=ZYweNmwEFdZEdZw7Pnp5luTefAlHHqe1s0W1FoXffNf58qVLBc29cfNDKQimR8npECYRMZB5lAYHW49rbrBk6dvzIx63raQufEKMcKFqgUajVbQdnHOsmyj43qHSq48txK79rrehhQVEOlpuvf2UW6ZM9T0jUVQiNYcQ9EJgZyI= Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by CO1PR10MB4596.namprd10.prod.outlook.com (2603:10b6:303:6f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5924.16; Mon, 19 Dec 2022 20:23:42 +0000 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::ee70:1952:4416:1bdc]) by MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::ee70:1952:4416:1bdc%5]) with mapi id 15.20.5924.016; Mon, 19 Dec 2022 20:23:41 +0000 From: Indu Bhagat To: binutils@sourceware.org Cc: nickc@redhat.com, Indu Bhagat Subject: [COMMITTED, V2 2/5] [2/5] gas: sframe: add support for .cfi_b_key_frame Date: Mon, 19 Dec 2022 12:23:25 -0800 Message-Id: <20221219202328.1442022-3-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221219202328.1442022-1-indu.bhagat@oracle.com> References: <20221219202328.1442022-1-indu.bhagat@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MW4PR02CA0011.namprd02.prod.outlook.com (2603:10b6:303:16d::28) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|CO1PR10MB4596:EE_ X-MS-Office365-Filtering-Correlation-Id: 1268ac4a-a5c8-438a-fb0c-08dae1feeb92 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cCIitxrKmeFZ1hbVKRESiB/iKxCWiSkZm1ao1mKGFGNjhh44wmOnoRiric2XBFRCqr7gjYVNJ0Jeiveq6QIA/3E3n8uSXLQT0EIRmJhJZRHBmN2ByeZ+gTqvWJFIroLWV5unEnDkSI3KmKW8nzM/ghmVRLYLTUylRGlBgv/SyyMhfxZtNcftVz4JQUp1mIdNy59hXMj0pcMJuF/CXXLJcK8rdmeIA1TLG6x9+fy4xSxpDMgw9q5bMJDo3Gra+igi6ei5gbruWTBPmfJNB3iU1j8V+vmLPJCOM13vnpYnSa+eY+0EbcRu+bM/22X6GjVmnhYCDbgznmjr7Kavz3yDLqmfo4cumyg72wWPTA9873Ilru7cRivfLWGO+cKMEu+3HFs+4sOvuC8G85AOuGMT/aVNBGVZ6eBIoHYOJ5sML4uA9pyUhvFZt97Ra0iGY+vzwORr39zaS71SQhMzp5rbvLQKJijFKGwiG1NooWk0jEuuWPnlCkUgso8BTmJXRunS3vOsQRd2ayW6Pm8WSIn6MlGRW5KyfRhLWQ7hPtJMKrKObzvmbz5TDOs0CdfJmO/YlK6Ja5+tmtkjNd0vTIEFNDyk4pFGhyXOdRIYnhMsBjQB5iNEM5TN/Y9BiI15faYQQvYnx73+FedhKb8ug+y36GHoWI9pj2/0OJNe9TUM3tVRwXQsrq7Nrq3zjqy9TG4D X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1001MB2158.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(39860400002)(366004)(136003)(346002)(396003)(376002)(451199015)(1076003)(2616005)(38100700002)(107886003)(6666004)(83380400001)(6512007)(186003)(6486002)(36756003)(478600001)(6506007)(8936002)(5660300002)(4326008)(66476007)(8676002)(41300700001)(66556008)(86362001)(316002)(2906002)(6916009)(44832011)(66946007)(142923001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?J4g2DXyG7E66epnRXhCTywg0aSz43tqzEv9DUgFhYdfjGdhKfImhVjLao6rX?= =?us-ascii?Q?AKG0iV/3/vYZQ0Plwx6rJe6Q2QqOsQYvUmwHC4ErzuYS722hJRZMpw1eyERK?= =?us-ascii?Q?CQtZN6D/adLT3ZpMyq44ScPknDXZdMBYwdhuJYFEhePIZ0S/c1UdhiWAEdns?= =?us-ascii?Q?GX14uaupQLdlVTV5R8wsEltxifdXVlcnMBKec7iM73Td6S2WoSvy9IlVdVkH?= =?us-ascii?Q?7MkXJ5UIi2iWF2zcbDnj1pHFeiAM8Lxj5o7TkBW+4jFn9PDJ5311eIRYeIiL?= =?us-ascii?Q?omJhOFBsWTo7SHY5ysOeYLzGnCv7sApYt8AVySgtq6nwSLXSvOsYza6I/FvT?= =?us-ascii?Q?68YLf98mmI3UQhoCNvYl8f2QUDEmYMbNXOBd8DD3QDQ0lLeD7hRthRaJGGUk?= =?us-ascii?Q?liDQyp/cQRPpM/15Wsgd36DVzRh0oWB0rM4ToYIBgq7/oEfSz25/KDBLLUnA?= =?us-ascii?Q?NG5p5Xt7PPik3h+O6aOUcx7sqv4H1PDfs8hInBXppFhutRdBo+WUCeWpSN9t?= =?us-ascii?Q?FY6J5T2XyhdvFKkSiLgrVH6PRNErmeVD/Gzk1IMP+FtUM3qRDV+aNY/5QWi/?= =?us-ascii?Q?o21LIolrc/6hDo4RnGnxpV/M6wESOuVj4NE0QgVfDOuu1F2blqxceGpKyrqp?= =?us-ascii?Q?aek3WiTwdQlTiOStdZ8e+yo3AEecaRa5q/sQ2jg8xP0CPzWjfwvcldmZzjkb?= =?us-ascii?Q?+fur3eC/od0iawQS1ELvkM5ALLIfF4T9+hfFwy4XEwbKzOnFuox0NpTsvzoS?= =?us-ascii?Q?BQVd3+Kkyui0G1SoeQZ41N9T1W22J5Gw43H+CTO/jEdvUrqSHSChja3UajeO?= =?us-ascii?Q?5fCjdhVZ3vrJ62Oi0JmBsxFwp7vouMTOFd9qAkPCa3mduW9CmckbbSxoZb7L?= =?us-ascii?Q?+5p5S4lEPnIJxJYFbII91t5Xxwje2Bae59UNwOBqcCEoeI/kBI52s9YoIVDR?= =?us-ascii?Q?Wye1li3532DA8C2pU/8fGWYXTuwi/r2RBu32ybUUifetBFo1DBINBoXV+VKX?= =?us-ascii?Q?G1QQmzQD5yQwtrGSLVqe95zMBW6XzsE0x3KUvXmBdsr1ZOZbY5UG3cYVH9AM?= =?us-ascii?Q?JclPb40q+ktc5Aww4kiX5mdrVIz9mfPFQqHsVlwjjkIwf/XpPbUsyvBqq0g4?= =?us-ascii?Q?tSZVKSvQBFFG8BE6BcJnzpmepvHPdwdbq9DlkJWD70jEcBVtDGfW1QGhU/yg?= =?us-ascii?Q?67p3Q6T3seLNOv4vQ7ybCkd6LeYOnZE1BuVb9GWau290/30HKmykStNvsrN7?= =?us-ascii?Q?/KlpncSfKkv2RdeIOv6kv0FEIU0yO6+6xIx+VvcKzjzScJ15wDRJ54lP8dhL?= =?us-ascii?Q?8N7McdEPZ7L+jMpnhWSARqLhUxhQsjLWdeJSPXayhHHkfMY6uXA+gertuS8J?= =?us-ascii?Q?ERILCp8YzjujNtdUj2bNStQ/qpVrYLvayNTGF4X7fBwVWUcSa0AaXi3YlpBk?= =?us-ascii?Q?4vlTeV7yefX2NTX3r7J2faB/7lAfm51XvBCYTyO0AodLvEGWf1gxXLysFDKZ?= =?us-ascii?Q?APDnIh64gTdq2HG+uD1OTzaJBleItv3/emFR4N8JWzxmrWPGweJbKYDlW9dZ?= =?us-ascii?Q?5STLMx7Vafb7OQ4PBgSso3YgrONiUpeXgbEsMd7baJWxmn5ZQJa7QhP+TG0J?= =?us-ascii?Q?Fqs+XXxVjOJhseVCwAav0uM=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1268ac4a-a5c8-438a-fb0c-08dae1feeb92 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Dec 2022 20:23:41.7817 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Z1u2B5tLO5S24vq9iE11ATTBA52364+s3Q9CsQZAtHUONyni+6tDoJqGz31UZJGs79PM2dHVMu+RPp1hqQWEuQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4596 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-12-19_01,2022-12-15_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxlogscore=999 phishscore=0 bulkscore=0 malwarescore=0 spamscore=0 adultscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2212190180 X-Proofpoint-ORIG-GUID: KK6pr64UyISS11XyjiczHH5w2a7FB4eE X-Proofpoint-GUID: KK6pr64UyISS11XyjiczHH5w2a7FB4eE X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: [No changes in V2] Gather the information from the DWARF FDE on whether frame's return addresses are signed using the B key or A key. Reflect the information in the SFrame counterpart data structure, the SFrame FDE. ChangeLog: * gas/gen-sframe.c (get_dw_fde_pauth_b_key_p): New definition. (sframe_v1_set_func_info): Add new argument for pauth_key. (sframe_set_func_info): Likewise. (output_sframe_funcdesc): Likewise. * gas/gen-sframe.h (struct sframe_version_ops): Add new argument to the function pointer declaration. * gas/sframe-opt.c (sframe_convert_frag): Handle pauth_key. --- gas/gen-sframe.c | 26 ++++++++++++++++++++++---- gas/gen-sframe.h | 2 +- gas/sframe-opt.c | 3 +++ 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c index 9baf20bd873..76f8529d740 100644 --- a/gas/gen-sframe.c +++ b/gas/gen-sframe.c @@ -106,6 +106,17 @@ get_dw_fde_end_addrS (const struct fde_entry *dw_fde) return dw_fde->end_address; } +/* Get whether PAUTH B key is used. */ +static bool +get_dw_fde_pauth_b_key_p (const struct fde_entry *dw_fde ATTRIBUTE_UNUSED) +{ +#ifdef tc_fde_entry_extras + return (dw_fde->pauth_key == AARCH64_PAUTH_KEY_B); +#else + return false; +#endif +} + /* SFrame Frame Row Entry (FRE) related functions. */ static void @@ -253,10 +264,12 @@ sframe_v1_set_fre_info (unsigned int base_reg, unsigned int num_offsets, /* SFrame (SFRAME_VERSION_1) set function info. */ static unsigned char -sframe_v1_set_func_info (unsigned int fde_type, unsigned int fre_type) +sframe_v1_set_func_info (unsigned int fde_type, unsigned int fre_type, + unsigned int pauth_key) { unsigned char func_info; func_info = SFRAME_V1_FUNC_INFO (fde_type, fre_type); + func_info = SFRAME_V1_FUNC_INFO_UPDATE_PAUTH_KEY (pauth_key, func_info); return func_info; } @@ -285,9 +298,10 @@ sframe_set_fre_info (unsigned int base_reg, unsigned int num_offsets, /* SFrame set func info. */ ATTRIBUTE_UNUSED static unsigned char -sframe_set_func_info (unsigned int fde_type, unsigned int fre_type) +sframe_set_func_info (unsigned int fde_type, unsigned int fre_type, + unsigned int pauth_key) { - return sframe_ver_ops.set_func_info (fde_type, fre_type); + return sframe_ver_ops.set_func_info (fde_type, fre_type, pauth_key); } /* Get the number of SFrame FDEs for the current file. */ @@ -544,6 +558,7 @@ output_sframe_funcdesc (symbolS *start_of_fre_section, expressionS exp; unsigned int addr_size; symbolS *dw_fde_start_addrS, *dw_fde_end_addrS; + unsigned int pauth_key; addr_size = SFRAME_RELOC_SIZE; dw_fde_start_addrS = get_dw_fde_start_addrS (sframe_fde->dw_fde); @@ -575,8 +590,11 @@ output_sframe_funcdesc (symbolS *start_of_fre_section, /* SFrame FDE function info. */ unsigned char func_info; + pauth_key = (get_dw_fde_pauth_b_key_p (sframe_fde->dw_fde) + ? SFRAME_AARCH64_PAUTH_KEY_B : SFRAME_AARCH64_PAUTH_KEY_A); func_info = sframe_set_func_info (SFRAME_FDE_TYPE_PCINC, - SFRAME_FRE_TYPE_ADDR4); + SFRAME_FRE_TYPE_ADDR4, + pauth_key); #if SFRAME_FRE_TYPE_SELECTION_OPT expressionS cexp; create_func_info_exp (&cexp, dw_fde_end_addrS, dw_fde_start_addrS, diff --git a/gas/gen-sframe.h b/gas/gen-sframe.h index 5d5702a57ca..eb43c3a07a5 100644 --- a/gas/gen-sframe.h +++ b/gas/gen-sframe.h @@ -146,7 +146,7 @@ struct sframe_version_ops unsigned char (*set_fre_info) (unsigned int, unsigned int, unsigned int, bool); /* set SFrame Func info. */ - unsigned char (*set_func_info) (unsigned int, unsigned int); + unsigned char (*set_func_info) (unsigned int, unsigned int, unsigned int); }; /* Generate SFrame unwind info and prepare contents for the output. diff --git a/gas/sframe-opt.c b/gas/sframe-opt.c index f08a424fd88..cf7ca5c1893 100644 --- a/gas/sframe-opt.c +++ b/gas/sframe-opt.c @@ -95,6 +95,7 @@ sframe_convert_frag (fragS *frag) offsetT rest_of_data; uint8_t fde_type, fre_type; + uint8_t pauth_key; expressionS *exp; symbolS *dataS; @@ -116,6 +117,7 @@ sframe_convert_frag (fragS *frag) dataS = exp->X_add_symbol; rest_of_data = (symbol_get_value_expression(dataS))->X_add_number; fde_type = SFRAME_V1_FUNC_FDE_TYPE (rest_of_data); + pauth_key = SFRAME_V1_FUNC_PAUTH_KEY (rest_of_data); gas_assert (fde_type == SFRAME_FDE_TYPE_PCINC); /* Calculate the applicable fre_type. */ @@ -130,6 +132,7 @@ sframe_convert_frag (fragS *frag) /* Create the new function info. */ value = SFRAME_V1_FUNC_INFO (fde_type, fre_type); + value = SFRAME_V1_FUNC_INFO_UPDATE_PAUTH_KEY (pauth_key, value); frag->fr_literal[frag->fr_fix] = value; } -- 2.37.2