From patchwork Mon Dec 19 21:14:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Indu Bhagat X-Patchwork-Id: 34775 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:e747:0:0:0:0:0 with SMTP id c7csp2619375wrn; Mon, 19 Dec 2022 13:15:49 -0800 (PST) X-Google-Smtp-Source: AMrXdXsB90je0eZdV/OMWJMSPJIo4q/6yNeT09ByXmVe/AFP/6AAk01D0gTe+JfzPf32YtQsuGCy X-Received: by 2002:a17:907:bd1:b0:835:57c9:6431 with SMTP id ez17-20020a1709070bd100b0083557c96431mr620112ejc.68.1671484549440; Mon, 19 Dec 2022 13:15:49 -0800 (PST) Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id mh7-20020a170906eb8700b007763cc7093csi7640300ejb.884.2022.12.19.13.15.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Dec 2022 13:15:49 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=LUNybxJD; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EEA83385B537 for ; Mon, 19 Dec 2022 21:15:26 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EEA83385B537 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1671484527; bh=KWdUQM6EJUTSpHyqH/CqiYjR+JyleZE8jiCxDAJej9c=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=LUNybxJDw1tnlyAAzsNyP1Ngiap/vxq+Gj8G4kWwWZUqL55LChcnMTodrk/UEbww5 MNEY2ziNef8Ki2piXG9qxNpBNko3M2zzplsCvzYZ1j3PjEi1FQtrWNXCQPaWXwjhQQ lSLlUqu/44adiWGCilZMjn8VLbjofZReYjbpftY0= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id D27823858C3A for ; Mon, 19 Dec 2022 21:14:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D27823858C3A Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2BJIwngG011959; Mon, 19 Dec 2022 21:14:17 GMT Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3mh6tsuyv0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Dec 2022 21:14:17 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2BJJjF8k008000; Mon, 19 Dec 2022 21:14:16 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2100.outbound.protection.outlook.com [104.47.58.100]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3mh47b4ajr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 19 Dec 2022 21:14:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ORwLtSNVRyNSMcVzjNeO6/DF0fDvtxWfjIvv18cSWVYPKhQRh4XqzzupiFKFM3WWwQ1X58H1FOESpmPCUKimeSOgVLMjTGzJhA414e+IrbJyqEqYmKp2T1I9qwOvlq3Rc/kY+ILt2mst4VsWEVimtynESGNKEJB5lZMvQobxrX6l/B8zGe9/U0KHDKlq0ZxMJKbwC2QZxFroTnoGioDwIEFbEgMGx4KqlFNlxcyc+PkQHSx8w4P+wWOa1mzjJ+ct8UbOrZWZVEJbQVG5V7ftj61Ynj9q601AN4/inGBmM1F9RjyNh/a44+LjArKt05UpRXF2K0GeA4Nd6KEDiRILpw== 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=h6a3HqlZ59jscnwOoQLYvI6Y6HqxKl6eameV6Fta7sdh5wuLZusC7A95y/WgGKCsDqLjYR+Aey2hr1hb6yFiM5YkFl4B06jEIeVoqs298FEhVBuT2V9MG6+UFMcBpz/6W4DqhsVoDQqGLFAgQcyFIFEBMEu/M2sdVuq2m3sbJTcypaPyFrIWkEXz6GBQmOsErIKkSo8opMU8OA/kTaVlw+7igAz+iHx5c4s+dososLGJgw3GwJVj/b4N1NKdR/YdZaFx6GBRhEF4s0tsvcZ7esSEaknAVCDzsG4qZR64cTIQLihv0MVLo4WORDDAEbD8jgwWHmAachXnRYCYeO1tDQ== 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 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by CO1PR10MB4690.namprd10.prod.outlook.com (2603:10b6:303:9f::17) 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 21:14:14 +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 21:14:14 +0000 To: binutils@sourceware.org Cc: nickc@redhat.com, Indu Bhagat Subject: [PATCH, V2 2/5] [2/5] gas: sframe: add support for .cfi_b_key_frame Date: Mon, 19 Dec 2022 13:14:03 -0800 Message-Id: <20221219211406.1443750-3-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221219211406.1443750-1-indu.bhagat@oracle.com> References: <20221219211406.1443750-1-indu.bhagat@oracle.com> X-ClientProxiedBy: MW4PR04CA0187.namprd04.prod.outlook.com (2603:10b6:303:86::12) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|CO1PR10MB4690:EE_ X-MS-Office365-Filtering-Correlation-Id: 646ff3ae-aeb5-46f9-a633-08dae205fb68 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vWGgLixnaEKcve2c0vK9Y6ckliqugF2NExuUFz7ytLjg4M1yKHU8P6DGcBLAF7B+kiVuhwKEXmVpZCySEQdgWi9Xp2zw1FlTvymgCq10taHYhLFBPzpCtHqo3t21+tTEr7ive/JYkVc0MFArcpK4bgTNxl78rpl1l8FLXfgg2RTl+4xKaanmWkmQKZUeFSwzYQvNFXTMQ1r6Qtc/VQq96GPOpxhLgSg61bk2ZJLC13pbhlzlq37D41LTZjRTJurIuZJMP68bS1p5J6aPNaNgd9IzTe6cVlwHiVhtwn3ZQvNI0x7HmB/qEqsdRCVttIXZ8rlOKtYWGOYLS2G0KQpvsS3cxRJM2Z1D4fq2BwEKx5WOEgJMZvKtbqQJ7zCo0dGTUHLj+s6TayXNIx92HgFAQ9bnPz5YMP6RN6L/aB2yDpQx65xdf22a58RVOeHh+1NDU9/UXwFjfP5rfo8gj+6HS2azOviDF7wBKexbh7tar2Wokyuz+Anq9/r3r+QZO7uXkMWDM3rC8FIeWoF2s4JBLFm4gBr7k3iPMlAaj56pMBvDihg7uwjJeghyojvd7grPRzzVZFWtuK3TRUlPUhvYslQR1ZbCSS//oELbYYRQdn7JOYkUXeSff/d51veCJXzDiKbVXMZ7ZqFcOEoEv6KU727hb4wBEFH7ZIJFKrAQ9o04vIFwqLLP5xuG+kWxmt88 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)(366004)(39860400002)(136003)(346002)(376002)(396003)(451199015)(107886003)(6666004)(6506007)(478600001)(6486002)(186003)(2906002)(86362001)(6512007)(36756003)(66946007)(1076003)(8676002)(66476007)(66556008)(4326008)(6916009)(2616005)(83380400001)(41300700001)(8936002)(38100700002)(44832011)(5660300002)(316002)(142923001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: K70R9Xjiq2vuKpXBZiBqM0PXrW8WfFXQW6YQP5wezL0JNSm/AHm11W9PyUvrDpO80ieSOoqmLCvEaTO6qD/S8Wzjue+Y/PYYqr+aRSILH4ocS72MSCK6wz/b8eLKxGbx66YyurrVTkPdMdFbWrALZDzWKkUpeJnmsGivCQSFZWCFrn65Kt4FUYDfJf6/u2j0HonNiEm9lugCoidthqlR4oAHlr6re79Q6ynTlCRv67iddR/emT+NZa5+aLJb1rObBWvzSIlEOjiMzWlObH9G46hlw0dJUL9B7b7coYMP60KyDdQ29Phm6u7QpB816Zio5fiZL1grRrg+pt6oL0aW4/wGzr8v1HPq9/bBvwEtMBDFwqI+sCi7DIW/0f498ge4I314u4gSo4IN7gAloTK8svcV9kpYv5Fa545XWtT5nNh5rLX4qT7ytFCReZITA68UGw3L3ifJdafWjRiOtB0TghAdUDgaWYXQIi/CHoY9GsxwNQBAakhm+OHi0RpFv8YKtLgzavTajlvhY4RKPVIbfPRTTjFMScQoMkjNGq+N7ENV3oSlA+u/N4TazYXkm1y3s8O9p63FRQsx4adDdRoHwZ/tw5SrraQHZ/liN17859+hWY+uk8QXtWAsqth+zZMXYnPwsYJLKri0xXQOGi6jcux+1OgbhE0S69l96BQ34nObD7SyxkWSjk7cfXDAawFPyukcg5+hKKzKwcxhhimoPuQX3lsqNRMxeG4FIwekWOArWQ9KBgO4J1BxAeB1dU7dB1kIQy/pNCjbGsjuhGGv9m+cIlRUsYTPIYLfN1je8QmaLT4bj79pIJrFB/3Q/cctegFAEyA77b4DyeAwuFs80C/GA8WhL0WLH2iPjbro+g9Gv29WtvKb/FlGxVtPjBxAU8pwz6F+8MZeoGoozHXeARjaURWxAR4dfHxgidbOqqGRr4rPNZbHj52WohjyNVJvW8JtXeAIr4vwMt9YnGThgxBQvNCYF7GIUwFbNE4/Gs/8yr2WqM4QIcPYoPsmnFzZxcvxheAdAH1WHo7hb4qCSimP0lMEIYN5Ft41AiIHfHrZSVOAEFtwn6UsHMSS9djpL9VUvHvkmVkW8OlaJiu8hU93NU1cUe4LGVJlk+DrQzyWIp4LNh+jHt79D05ABSUq4AiML7a/nHE050eM6RCsHNcr+NU6fsaabGErLNpDzszAFi69RPthrthm8aAln5osU/jYXMQSRYtQTm13Nz2yKt+2ThVUzqPXpEhoFc8GSGnJJ60Z7sVfl+YTgAWf/yxVeTm83keolRp9c164QtAmS/3yNP7MRFBSnbbkpVzNJ3BEb316RACHaath5Jp0tIJW1D63KQ1BE1f0jULjW4fci00ecHx+cUa+6ukpXz160mkTIOElIlGoRcD98b60sDcnL4kUuYkO2+AocVGj+CEqNvSBKMqQJvMcDNf+olbxa333BVSEw6iEhxySYzySHtsaGhmGhEv65nHfaGlLWKqFls1IZuJ+NjT/8jS+LEQIA3ti20EUKcKRW2hMK9Nk5IwZsuv6dtbMwHDL3JlOfiJ8X85hcB5l4jxJ1nAyre628EA+vDDvQu/lTGcenA2udUeEGLYT1+GTEUK/wXlu0Xa2OXPL31pXiItMCjBXCKREvlY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 646ff3ae-aeb5-46f9-a633-08dae205fb68 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Dec 2022 21:14:14.8874 (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: XuVh5A/N6NbnaFMkoob3pSvqkbBtRsKTi66XbuSirNWvuxocvIaJt4ySv0FYzq9HlQUg2lawnCUAypQD33ykFg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4690 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 adultscore=0 malwarescore=0 phishscore=0 suspectscore=0 spamscore=0 bulkscore=0 mlxscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2212190187 X-Proofpoint-ORIG-GUID: BMzfCVYT8CF-vJtn-q3pWebjX_xAIzgv X-Proofpoint-GUID: BMzfCVYT8CF-vJtn-q3pWebjX_xAIzgv 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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Indu Bhagat via Binutils From: Indu Bhagat Reply-To: Indu Bhagat Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752675332136185103?= X-GMAIL-MSGID: =?utf-8?q?1752678583087385561?= [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; }