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 98639384F4A2 for ; Wed, 14 Dec 2022 19:59:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 98639384F4A2 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 2BEHDsOD006698 for ; Wed, 14 Dec 2022 19:59:19 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=Bdw/klVNTeqca2K57dqI4uEEbjQ0OxXmE51dwJ3t2F0=; b=vU1bkMAernyjokP2s6rFzYmUQR2f6gXCvXM6XvY/OWoRcojmd3yf3greYGdOG3Hlct5j Yf6xpOQ/v0JzHb9aIe0wpYb2REEXvKHg/b3f4nV81WO4cb/3IA54AoOiX+dgwNSjx5AR 9ywMouzUHNEodqei6pSy9RFUj1IQvaN2/5/4xo/ADQF5gCfbfTp3dMq2DE0BCMNKI1gn Pi+OsN7SNar0Py6/7Y+jyhSDSZIjvr1Krohs2McFTo2dnFU3rYib6h4inyomaOi+PpWp BOmT5zDziBJ13XI/qKJg2ekkZCMpl1+62h7FahWL9QaKYVwFMYPj5wkfH+YJPAnCORiW 3A== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3meyewu6nu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 14 Dec 2022 19:59:19 +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 2BEJ0mI6003906 for ; Wed, 14 Dec 2022 19:59:18 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2169.outbound.protection.outlook.com [104.47.57.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3meyewku6p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 14 Dec 2022 19:59:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Yoo0SpnQW3KRDc8Yq2KUWEkrjmp/2Q911iaRZQOM36NJazvWHJNSIZpAu1WOYr1ieaedKQqH0k56jWqlP5/HsxevV9nwRe7jL7/XC1GDxrHPthgHWFc5FTPwC3MgG/YcRdI5xgKSzrnMwHB6WEf4YYx6FavBgqN0yZx8V0eeJbM7Vj9U+0U7X/SX0+3bBmNeKja1u029QopLOKasdiC5Z1RSloze2iWp86HqhfXftzPd2q5KyjEIRNWx3usGVS7qajeR+q/1Uq8LQrz0ojAq/G5R5mh/DvuEUOpsklk423fuQOi5skIEeEwVc5a7MAVq0lNBWxQ/dMNwjs5sJuc4ww== 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=Bdw/klVNTeqca2K57dqI4uEEbjQ0OxXmE51dwJ3t2F0=; b=YWneXcys9heyjeTuuRofPzKc89KSYell29Mvyo5girizcwn8feXjpyjPdovfa/28v3nSRm5VgLdoVhoPLfpcWqgveX30sbBs5Qvqr2sMM7dXHmXtXo70mznuM6zSclgSzQrt2FbJw91rOi8wJsdWwSCxApR+OaUvzICfFYNFOkJ/q6wykIMET8KNad8iGg7gv0+GJvgtnOpFyVRD7x2x5omYB27stobsuA4Xr6Ad7WsX+aCHhXJEJt3pH8LYdJlXUzIY5FE0AWrbV0j/RbRSuqFiiYAHq4/l8FZq0HtdJ+KIp28338lOtCqKSP8wXHti/hMb6sg6a/ZTWqqvJ6GOQA== 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=Bdw/klVNTeqca2K57dqI4uEEbjQ0OxXmE51dwJ3t2F0=; b=e0Fid1fE27ZJRSEGAXBAObcOojVVAN5bZGwVb21SJOvDJtwpmUHafMiZsVPzVZ9SHjzZGq52NVYfb/GxPcHXnpPgO8o9FCQAl7oQBWGhUzskKVu7NW56QCOB4YUJBtSKGiQrUUwvtFzdKfdJw7+Axqiph3VTRUhoOOtfO9xkvBI= Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by IA1PR10MB7386.namprd10.prod.outlook.com (2603:10b6:208:42e::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.19; Wed, 14 Dec 2022 19:59:16 +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.5880.019; Wed, 14 Dec 2022 19:59:16 +0000 From: Indu Bhagat To: binutils@sourceware.org Cc: Indu Bhagat Subject: [PATCH 2/6] [2/6] gas: sframe: add support for .cfi_negate_ra_state Date: Wed, 14 Dec 2022 11:58:55 -0800 Message-Id: <20221214195859.1233809-3-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20221214195859.1233809-1-indu.bhagat@oracle.com> References: <20221214195859.1233809-1-indu.bhagat@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: MW2PR2101CA0021.namprd21.prod.outlook.com (2603:10b6:302:1::34) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|IA1PR10MB7386:EE_ X-MS-Office365-Filtering-Correlation-Id: 622bd24f-e3ce-46e7-0b57-08dade0dae0b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 36q2mJeaXHBPbK9oxPwvvpY0D8ELvPluRsFZcnza4KwsLbhmsRnkDEzvPYkhzeszwwrB2dFJG/by6aGTs7VfoKPpDPn24BN1WCfLmLcCGYs/nS3J7cqlKN2BVeIPFuxghjH5gLbb8jwZM/S16KwNzJugk2VnZqDAzWaVpxLQ6CKDbhufzZG/2tiMqo7Qeq2YkOZOayun0GjdVVeFltggQKuwU/DmmIySmHfEsAsTdFP27D7x6ke1XdlL4EezQkFjAIzFUyeQiebxeqpMzv8O9fa4ClHJS7My8Xp6svjj983SUM96ESub+Q9OSC/KXJsduuz/qqraxX3n5BDUtraGrtcNMWLw/dxHFh/f5xyNTovN99dSG3lA4fqBBY0YM0LfhCd/4QYEC7W/FithHit0fvyJlEPNK2VpqEsS8ewso3lBU3DVWxvI/xrvJb4TSB2hE5Yyv6ucjNJiL3GM4yryvCy7OU4MH5KihJ7tZp8vCxhs56mGu2mG72znXv7I1OfJpeF6yIoWg12eBotDQBZgVOzNwcgsRJnAdq0/+yc7pwQsjd7D7GCwDfWz6nYlytIYnUBlCvx/R0T/lekYuQZs6LpCNXU6oZd9GsLm4t2ugeVv0qkRvEh2JcZbsfHAvwwZVYVlRna25sB4MRzyTvvvVd9idy0wEHeGkgWh5IO90DrY8LOix9edSTCrcHjfKOSH 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)(346002)(396003)(376002)(136003)(39860400002)(451199015)(2906002)(44832011)(38100700002)(41300700001)(66556008)(36756003)(4326008)(107886003)(6506007)(316002)(6916009)(86362001)(5660300002)(66476007)(8676002)(8936002)(66946007)(478600001)(83380400001)(6486002)(6666004)(186003)(1076003)(6512007)(2616005)(142923001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2ZM1Y7l9ZGny7ophfDSeouGOGKgFA0Oc3M0cYnvmrVG0H1wmd5RHvDm/hegD?= =?us-ascii?Q?QoFlJRr1jMmhuzk101vU57f/9aBPLyXYM9LmFcebqCQzA9eI9UGRIY7gaBH2?= =?us-ascii?Q?fMnPk9hiIri5KydBURTvPcUF7ZEvmxv/WJxOH//ZvAoGW6+RvI7N4O70LQGL?= =?us-ascii?Q?720l3l/jeX91i4jACFFE+A2uMHmkBxMtFw7xo/CLFj0Ja01TF1116kxrUeAs?= =?us-ascii?Q?AfBa6xrqSFeZJaSNjMTpy7GdTOe92JwNKCDjfTgdMM3CJsyPp4513gM9y0wr?= =?us-ascii?Q?VkoZUal6aZou/m0rWG8mXKCDHrErSE3eBTXsMnXl6X04rYRxGHelIfLuHXQP?= =?us-ascii?Q?0nRYpZFm2gWwwBndF6EG6eIiq9dAKTnw13S6UJcDRDJIrVoEwJjTNnp+9k/O?= =?us-ascii?Q?DQJ8mJlmbqsNrQ4+Fdwoe94V5rrXuNxyQRfCEdVUPVuyd4dOSgYjfiDnCEru?= =?us-ascii?Q?QkY2hnIo2AtE8II4euc9CEFm9jx4zRx1N2L/QdUa9Mfao/fqc8I3mznARBnZ?= =?us-ascii?Q?m1Us9zsgMstYpqiXDWZbvvztWCbcRRBen4KYpXtpw3DlTcuuG5dHn03tX5qh?= =?us-ascii?Q?wfk/FN/abKZqvdEl/uU5pIs1tjSyC/b1jP6YrsEIFhUoyY0RBHJdsW2NMZ1P?= =?us-ascii?Q?khaS2wb6t7xum8DPre7k3JCfrtNvKn5fmtnlAM4XPvseuaLpZ84C+ZPP0/ci?= =?us-ascii?Q?lNsV0LbA+S6tQbwaHJHsuufMSyWCSj428pUVY+Q6F6pNTkliDIqq0FZOiUHn?= =?us-ascii?Q?v5RcA0YtQlZk11UG0/DlMO8RjgWR/f0AdVVRFK4lRwwzyvTCwiZaM/3hRytc?= =?us-ascii?Q?KOw3rejJLnZYPhBZSuhstwFabRdSepRJ0bWpHq7634kUqxZabWGaGrcThUSc?= =?us-ascii?Q?1Ym65DrEWKqDeeZjCFRS6fbawbwPNaN+dDtOtY5bUbDsL8TJrgvHwUKHZBxS?= =?us-ascii?Q?TRi+FCd9PQ2tcn45Us5YzG9pu+BDJbVUBKE7+RzTqpOefYda62nH7CQATWFv?= =?us-ascii?Q?bXwxSKPSEzKAIZn3M1UIUuZNJqplwRgQrcp6vOU5UgEWByw6ud+CiuXPVFn7?= =?us-ascii?Q?45Kzv4WbQFMiNjY01UOwhCYxFX0J3bSSUoLkdYeTjQY53xYpi4IeVHaDgfn+?= =?us-ascii?Q?cdN9SM8lUidRA7pqr0gtucEQ0Fzkp8h3TW58yYW6pX4GED/fvUGYy92mByxE?= =?us-ascii?Q?t/4HU8P5xXsa4oBJ/3z5WhYgYLwtpehWEj2qPfLriZir9ATVi5BzMpHLoeKU?= =?us-ascii?Q?Gd6soDHBD2l1Hj9aad+zB1L8fWULdOKS9Ynr4eBAqFRBB3ysjXG/Ynr00JZu?= =?us-ascii?Q?WJNnko5MULEJXRKQDD3NjkP9Uc4S6q+Dz5tH6mFCi5BWm2R6KCsp+y/RH4iP?= =?us-ascii?Q?ECBJneRFoX0FQo1mREeFyoyl9LGs1r9LzZaQo8bFkmLP00S/DzUA5cQxz91y?= =?us-ascii?Q?O5D81/fksccH18rRurei1CMTHU+QwSgcFlxCPfvvvgOQX+ZLByS/2Vxn20ft?= =?us-ascii?Q?B4oNH6CVaxt8h/am7k4NRvECSGkiyYxplGthHfD62XtB9UZSucUCmlfI4Q4T?= =?us-ascii?Q?ZpQc3ZjeXc0J1YDcK/DBbWx9PrkPs5XaI4bsHo2QqHPZ5F8ZaMF0woXjNSac?= =?us-ascii?Q?I5FsR13I0XFsNfjqFTeFhvc=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 622bd24f-e3ce-46e7-0b57-08dade0dae0b X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Dec 2022 19:59:16.4278 (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: CMsp8FOVbTZFQEqoMP9CXlGaUlkJl4cF7nd78Vp+eG/eTdvilCuqqMC+eqKXP/tcphNsjYiaf114MHFrbaFllw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB7386 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-14_11,2022-12-14_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 suspectscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2212140163 X-Proofpoint-GUID: 9_evANwPl3ndJaFTqC28ilq7iiZf0o36 X-Proofpoint-ORIG-GUID: 9_evANwPl3ndJaFTqC28ilq7iiZf0o36 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: DW_CFA_AARCH64_negate_ra_state in aarch64 is multiplexed with DW_CFA_GNU_window_save in the DWARF format. ChangeLog: * gas/gen-sframe.c (sframe_v1_set_fre_info): Add new argument for mangled_ra_p. (sframe_set_fre_info): Likewise. (output_sframe_row_entry): Handle mangled_ra_p. (sframe_row_entry_new): Initialize mangled_ra_p. (sframe_xlate_do_gnu_window_save): New definition. (sframe_do_cfi_insn): Handle DW_CFA_GNU_window_save. * gas/gen-sframe.h (struct sframe_row_entry): (struct sframe_version_ops): Add a new argument for mangled_ra_p. --- gas/gen-sframe.c | 41 +++++++++++++++++++++++++++++++++-------- gas/gen-sframe.h | 6 +++++- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c index 075720facd6..f31a66da377 100644 --- a/gas/gen-sframe.c +++ b/gas/gen-sframe.c @@ -243,10 +243,11 @@ static struct sframe_version_ops sframe_ver_ops; static unsigned char sframe_v1_set_fre_info (unsigned int base_reg, unsigned int num_offsets, - unsigned int offset_size) + unsigned int offset_size, bool mangled_ra_p) { unsigned char fre_info; fre_info = SFRAME_V1_FRE_INFO (base_reg, num_offsets, offset_size); + fre_info = SFRAME_V1_FRE_INFO_UPDATE_MANGLED_RA_P (mangled_ra_p, fre_info); return fre_info; } @@ -275,10 +276,10 @@ sframe_set_version (uint32_t sframe_version __attribute__((unused))) static unsigned char sframe_set_fre_info (unsigned int base_reg, unsigned int num_offsets, - unsigned int offset_size) + unsigned int offset_size, bool mangled_ra_p) { return sframe_ver_ops.set_fre_info (base_reg, num_offsets, - offset_size); + offset_size, mangled_ra_p); } /* SFrame set func info. */ @@ -507,7 +508,7 @@ output_sframe_row_entry (symbolS *fde_start_addr, fre_num_offsets = get_fre_num_offsets (sframe_fre); fre_offset_size = sframe_get_fre_offset_size (sframe_fre); fre_info = sframe_set_fre_info (fre_base_reg, fre_num_offsets, - fre_offset_size); + fre_offset_size, sframe_fre->mangled_ra_p); out_one (fre_info); idx = sframe_fre_offset_func_map_index (fre_offset_size); @@ -845,6 +846,9 @@ sframe_row_entry_new (void) for the supported arches. */ fre->cfa_base_reg = -1; fre->merge_candidate = true; + /* Reset the mangled RA status bit to zero by default. We will initialize it in + sframe_row_entry_initialize () with the sticky bit if set. */ + fre->mangled_ra_p = false; return fre; } @@ -890,6 +894,9 @@ sframe_row_entry_initialize (struct sframe_row_entry *cur_fre, cur_fre->bp_offset = prev_fre->bp_offset; cur_fre->ra_loc = prev_fre->ra_loc; cur_fre->ra_offset = prev_fre->ra_offset; + /* Treat RA mangling as a sticky bit. It retains its value until another + .cfi_negate_ra_state is seen. */ + cur_fre->mangled_ra_p = prev_fre->mangled_ra_p; } /* Translate DW_CFA_advance_loc into SFrame context. @@ -1150,6 +1157,22 @@ sframe_xlate_do_restore (struct sframe_xlate_ctx *xlate_ctx, return SFRAME_XLATE_OK; } +/* Translate DW_CFA_GNU_window_save into SFrame context. + Return SFRAME_XLATE_OK if success. */ + +static int +sframe_xlate_do_gnu_window_save (struct sframe_xlate_ctx *xlate_ctx, + struct cfi_insn_data *cfi_insn ATTRIBUTE_UNUSED) +{ + struct sframe_row_entry *cur_fre = xlate_ctx->cur_fre; + + gas_assert (cur_fre); + /* Toggle the mangled RA status bit. */ + cur_fre->mangled_ra_p = !cur_fre->mangled_ra_p; + + return SFRAME_XLATE_OK; +} + /* Process CFI_INSN and update the translation context with the FRE information. @@ -1195,6 +1218,11 @@ sframe_do_cfi_insn (struct sframe_xlate_ctx *xlate_ctx, case DW_CFA_restore: err = sframe_xlate_do_restore (xlate_ctx, cfi_insn); break; + /* DW_CFA_AARCH64_negate_ra_state is multiplexed with + DW_CFA_GNU_window_save. */ + case DW_CFA_GNU_window_save: + err = sframe_xlate_do_gnu_window_save (xlate_ctx, cfi_insn); + break; case DW_CFA_undefined: case DW_CFA_same_value: break; @@ -1207,10 +1235,7 @@ sframe_do_cfi_insn (struct sframe_xlate_ctx *xlate_ctx, - ... Following skipped operations do, however, impact the asynchronicity: - - CFI_escape, - - DW_CFA_GNU_window_save, - - DW_CFA_AARCH64_negate_ra_state (multiplexed with - DW_CFA_GNU_window_save) */ + - CFI_escape */ err = SFRAME_XLATE_ERR_NOTREPRESENTED; // printf (_("SFrame Unsupported or unknown Dwarf CFI number: %#x\n"), op); diff --git a/gas/gen-sframe.h b/gas/gen-sframe.h index 93af499278c..aa8be5df457 100644 --- a/gas/gen-sframe.h +++ b/gas/gen-sframe.h @@ -50,6 +50,9 @@ struct sframe_row_entry on it. */ bool merge_candidate; + /* Toggle RA state wrt pointer authentication code. */ + bool mangled_ra_p; + /* Track CFA base (architectural) register ID. */ unsigned int cfa_base_reg; /* Offset from the CFA base register for recovering CFA. */ @@ -140,7 +143,8 @@ struct sframe_version_ops { unsigned char format_version; /* SFrame format version. */ /* set SFrame FRE info. */ - unsigned char (*set_fre_info) (unsigned int, unsigned int, unsigned int); + 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); }; -- 2.37.2