From patchwork Tue Dec 2 07:34:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Indu Bhagat X-Patchwork-Id: 125737 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7F31D4BCA1A5 for ; Tue, 2 Dec 2025 07:39:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7F31D4BCA1A5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1764661193; bh=hHEH3mCpRTCHqh8Pb54de5BpptUIuEGxOAdltGox9AI=; 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=r3K72M2Y9i5NmwhalJiPuCyEckj5EE3HuSPtLneYUXAK4xlHtNSdU0LonrhhZUq4H 9XUlVFIWQGqm2g77x3DHvkwzfxk8YVuvp4nhQdC5ocXZHJQeTXLjT1EV7zXaFUGOgm pmYXXC+/XDa/WYCK7APBMLr9A+zdCMw4H/NxHX14= 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 2262E4BB3BD5 for ; Tue, 2 Dec 2025 07:34:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2262E4BB3BD5 ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 2262E4BB3BD5 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1764660891; cv=pass; b=qLy27nGIpZrFwRaiSX1MutrcIB+GO7+DjghoTB2QuHVbhLFChyS8YJd98Ru3fuwqt+A5mn3612QOW0kPHLXSBst534XD8/h1AeQskf4CcABquw9c6ukvNa/V3GJb4HSd8C73pnpwzMQepbJjZ21iMdEBdb3ubLbsZevgw/j9cXU= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1764660891; c=relaxed/simple; bh=je9euG1wKqTcLn/FvqIe9bLy1juKYAl4Ukmk+vCkkDM=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=ni2We7f9X4/mfF/cq4loIvYjGbQ8svnxMEm+cziJwNYCbfeBhXFiZqnB/jKFBH5Vu1nnpXxeK14AGb7V50N0HywyShdeXYhH0zLHVsnBa+Bi2vlL1ckZNiawa1/IbUoxX4ep6Bf8PT/PokvVZrhmaglhF/G1DaQ/MEZvn1Z2XYk= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2262E4BB3BD5 Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5B21NdQS3259529 for ; Tue, 2 Dec 2025 07:34:50 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 4as86ya6wa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 02 Dec 2025 07:34:50 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5B25Vkaj035384 for ; Tue, 2 Dec 2025 07:34:49 GMT Received: from sa9pr02cu001.outbound.protection.outlook.com (mail-southcentralusazon11013044.outbound.protection.outlook.com [40.93.196.44]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 4aqq9k1qx0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 02 Dec 2025 07:34:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ut6GGTxlEKwz/rlExOxhqciLPnDoUwMTHtdkkIZ5m2y27ImzwXDXcYbRCBIVKjSK3M5C/CJp5/orJfihbGcdxSR1oDg+dpstHPht++O0OBBku72eydDYd4zqEuOZXsKq2ptGtjWYO871syQILOJ3R5rTSWyaop3KkKrLowb5EeByV6Op2Ben4DdZMWOkqwD6QjK7irvdlBPfWUlBt+rO9hkqmzHVAI3/Moy9AuRugNdN2Tex5jg7SvkOW3v3IVtbHaWhcx277srjam4Okr/vjnAPnLqIRrz+rXq4OyGLTR/1J8XqJYodEFEC4Sql0zK13BTQhEtuCERIVZj/b232+w== 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=hHEH3mCpRTCHqh8Pb54de5BpptUIuEGxOAdltGox9AI=; b=LH2jbUFUAKjxdhldMhoIONhgPLBiRiuTizbCBJ0STW0rVoRZcInhlvwItLCT+ryO08eBb3Uq2EfgxBp9go3siPAwRbWceGKcUAD74dGa2Ce95mB+BGWopl26z8NyloWcwnAbrTJOgBnomVAcHt8BfkK/bW0nTv1KOZeaC7MA/TyDRBmoYWefhS2Kg5/wyudGf5BLXwymmVeNfVUmKcmmltnotGD4Qa07aWg381WlJQEQfgduZAwPuIzGOZ72PXEW65PvQFcM2piERXcH99wAfMry+akgmzpki/DdIYqQzrEpSZy8R8g+Fy5CYjSHTM4qpnz4IwvXZjX6HYwf2/09+g== 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 SA1PR10MB6365.namprd10.prod.outlook.com (2603:10b6:806:255::12) by PH8PR10MB6456.namprd10.prod.outlook.com (2603:10b6:510:22c::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9366.17; Tue, 2 Dec 2025 07:34:46 +0000 Received: from SA1PR10MB6365.namprd10.prod.outlook.com ([fe80::81bb:1fc4:37c7:a515]) by SA1PR10MB6365.namprd10.prod.outlook.com ([fe80::81bb:1fc4:37c7:a515%5]) with mapi id 15.20.9366.012; Tue, 2 Dec 2025 07:34:46 +0000 To: binutils@sourceware.org Cc: Indu Bhagat Subject: [PATCH 10/13] gas: sframe: refactor out the offsets emission code Date: Mon, 1 Dec 2025 23:34:11 -0800 Message-ID: <20251202073414.200246-11-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251202073414.200246-1-indu.bhagat@oracle.com> References: <20251202073414.200246-1-indu.bhagat@oracle.com> X-ClientProxiedBy: MW4PR03CA0076.namprd03.prod.outlook.com (2603:10b6:303:b6::21) To SA1PR10MB6365.namprd10.prod.outlook.com (2603:10b6:806:255::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA1PR10MB6365:EE_|PH8PR10MB6456:EE_ X-MS-Office365-Filtering-Correlation-Id: bec8e7bb-8f40-408d-aa79-08de317544b8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: OANpQceN8DtzosKObZYgfYm//WBGpQNwLDRUqikHuXRq9EGJIfoo7ejV02XfhRr52BAIiZFHcs9z4wtAJVEguSVjiOj24l9jOYz95JqRQi6qJ2Kfw8a1XTbPoL77gUlMgMxggBfCIrwZYJ4k1CRBmJOU/Gc90pdT+/5YEFkdkrMqe1hcLDlzOZsPBRvQw5KC2FDIvONiHpu0zfc4qf4fEbYHmF5UTZz25RZPS1ObmN0Cr3QdmxtCC+rt/HSewW0ll9kavidcTETb9ma52+B7mK5OBNBog7O+jIA6V0KE5Ql5AzHQOquU46LHqQCI5vob8T+zC+dgipYI03zZMy19t/BV23Y4xQ+uLGuuBI/PRUgfnTTjZ+bHlXGRanFMBPNHUWTDG5PfdQ99eUe1koy1dah37Dfkd9XP8+6eK/vPSbnaz03Guld7oh6uGHSXVKwofOOYThs27zABj5Fo5582e3uKKRLc8W7Te2gvwARlJ0ywEPqQHuWoat7rwRUebcj6voPNzGZ+DcpJqFt2x8PhS7f2Nqu0Tn/tY6uV3bWiSgvKZlWgxa5w01CSi7j2d41gz8ze1jfnun+ZDGexVKvPHCYWu5pB8l4VcQn8bD9jdoBRKY3b88Ph6MVgligBFAvwZSoreXQJ9Rztgt++KwcIXWCZV4kpoDO5PiJePmsdKV3xv1fAbwnWMiUqw2tUbGqk/HAUYrsSa6wQbrth6h7bPDU26qqy3mjnRQrx4CJv1kTUM0mIl5prh8KYVKy2yAxI8e6aTnP7rZkbEa4tBpIjw+KciazWHJJbw5wRGsQXV3vbiXDjHkv+oq/hGwg2vWRXLT5AaJK/rFuZHAXFEDXze3AV8xdM7cGUkS89RSWcRoqbjefICHjSGrwS91k3rFFHTUWZcwFKAKfc+dNxCnAZjhU1sSlKLnqVMut1iWXzPs+Te8k0ruRwbLFGVygvp+S+hlyJCNUkYkztRAgyaipt/lw5HJzL/rsj09Y7c5I0FnUeFIKumVJVYIQh0Tjg6jWQTKIF2G9pDsIUBxeuYNl101rrfFagknxuDSow2bTcmqkT0IOBCv2+Mm6+uIw7KKJFyt3U5/IrQKFcJfI2ojCfCNsEefGHSD7EtVAQg7NBn5RiDz9yZQ85VBrbExNC+hpw7DW0jxnMANJeJmvlgeOoPFofocfhDCkHAWUe+96bNnPbkZjpempqjuxIMC0ofCpnd5u3p2H4NU3pEn9KuhyDOOjc4NKDVPMcW7mHIL0QGfhI1TW5tfbdKhhM4yVrQ7Wq81Ewdv1Rf4j+6yPFfjeXEj2cJsEa8tmiIgqHN3pmWAF5Eg0BRLbW2jJuxKwJJqqf9uvyrQ7Tf+vgE64kwB/crAtABwvbRKIHQbTWd+22FhgrxuUqqdVS3kDABG0yOg79G+jh8jHzQXriwsnCwjH8gbMimZRoyjio1sLuLC7Gfk9OZw7C4lcTYHy0MtfoISgn X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA1PR10MB6365.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024)(10070799003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3Y4lv59bJX+2URDubfu+50T2aUeOnhcJQtXGdFNOGR5wORWBL9dCiwJDRrUYf6aGUiFvBlR6p52IVhE9XikgEmh3PFcfbEcc2u0GB2m3QJnZajNCORxv19bjmfMIbFFTRCzANqd8U1wAl7b97Lrb8koh35qeGvb5pjtIpBpfGO948IQCeh4aMOoYQPDBrgKpvZmwHfbCPG7iBHzF+0Sv80qT+Dgeq+WnQ1Q81kKNkrm/bva+/hm6gEmAuto1VX5Iai6FnRrtGf2x1VRQO8emTXZku4+OPh2Jfh4dw+F2RQofIRUQpOrjx4Xc6k/0/qqralZ89oY0q5MnXFlHMX4W3oS1eXRhT86uIGpn4PPNmguPksKgLWKudetwjcawS6dsYAxWuSeva2m56AlTw4bGT0J3t1E30oebTnnjrnC4QhTO36mSOQSfdZAp9KGGVHbUSp694LAI2ehlp6eKBxGQk6E+cl9/OuxU9hwk3bnpjMnL2cBACi/cOdk1dRXAHsBsmVdfuzBfcsQ7ob9yWMEeFQUGwNFW6yqt5k58w/80w7bsm9Yywuu934hMHa+W+zHCsjVtyetK51mNKhbb3Ierdw/s+6mdCHENyVi4dQ3t5MkHDmm34CvTU3o+OTkOvTxeKqJj+eSSE0WE0oadlj+jlrRQIOm6FxzyrVNecQ49OoUgk0dPg9edwWRunLS1ub8veKe8zvlYI+MG0fVv55lVLmiwYk0qH1rbwaoBMkB3zVCF6d6TSAb1rXbEa1MqiueKipe6sz62aEd0aCF9ELJ1UrqN6JrmXhMNMAVqED1zl0Ic/26ACtURde6pVf1twyYmeniEN2vkB+VWhB87utpA4Gt8ER0mMYGJKKiVaJZ6gwPnbw/dT/qqqfQGU4PRyXavyj+6n1Eh4cRpdOJ3cvME9EfE7BN7bsHaHEqby4NOtCO14ni6c1hOknSWScg5KFecA2nU0TJIa4yQ6mh8KXExKLD2j1uAR8jx+aBzXIWzBIzI2JUuQ0TiBEphriEgCWJCHSa4IwaiwE8EDHOnuGnhCUB+urng4jikQtC8qeh0OqtDzLuq3Gdv1J2Mj5hEVSEkpbAzAPq+m31vIEKPufQG+/tMKqIsnXpa3UtqrEjWcJ2zW+FRGSCKfntSH9ZryR270n5VhjBuasPyF0/SHrJ8ykvLHjYpu2REU1TWGuTtsGSioCYYcm+LwNMQ4uFvhMBQiWh1FOBQJeNSwRb0XA2yuUYx9fSpTpZjQKgZsCoJz/p9alQkReoyJyEuMiImFvH8xLAAXL5uP+FvX8zdf6NpE3j8OTaRG9ndCHCVBWXHj4gs2hvIZiUoKGmuHROxQjrft8ZxoCrsmEKlj22MAIgUgPYIWlrY+O/arwBzczlnXOGPkI93pLlS6G2I2C511fRzUBC7Os9qmwIAzZWqeVVhPOOVXvUzxr3wWbEhqbVagzABdxCIPN2+UUFbbLDNvbOFUOM1Qnlq+mTO3RTQVmGLkZ2dWtpc7pr45plAYztDGA1LW4f28faB8MUaantTTj4UEI6+QlhF5fsttruoICi38heDUjlQGvNVmbqtMAxYVaODcN1s8An+6MWhnjCiDSDLW2lCshFWem+2rsb00XBTn9co+M3j5MGIFEvtnNcIIDM= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: X6YsS+0cxJWx5vm6Ds0Ku4pqLionqvFAlU/qXOV983vbu9cdjhojfzXgCpjpwv8vYDV66E443VesIpGEudue0M/2Z10CB/sN/ITmiy9sYXHbAD29B1Gds/GAMTYG/nLrsvNlyNOItzNDXadbNVo5JmFGzlXEDGi63r5tRQa2N2xlzdzKORr6H/6Oi927+VMfnDOYv1FFyNjoCesRZ9pFih5qcipdQcOg+gB+UuVmPS8nW9564sgv0UoMjNksRuw2VntcpZDmKav94XYzre1b2nhcVDa5LgdGbwtm9dXnNz10XHS0xCh/ch9d2UDXqwNXPVpwPtl9eRuyulYe6yxzBYPRAF9pObJmsgftVxIz1foNoCxkpkKtGrZRWDNIyl5JINmDvWNL6Fj/2nPe12ju9IGNdpO9Yb3qQeueErR0DqWQbYRr2MSjQwRtO9yzxIAUyoKHmg9uR+hjfwh8iPYbwddajuUiPyOJsVFApNX6GUGB10hSCiNlWhtccIlJIAi6Se3c/UPTqLIpU843CLraq8vhH7nqxcBrt5/wWjZTf4CvzJMTY63qS8RvnQEgQ7BtKdAWLr6qxl97yUoUEEPHo9SrAbxAwpaTYFt2eqEn2tA= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: bec8e7bb-8f40-408d-aa79-08de317544b8 X-MS-Exchange-CrossTenant-AuthSource: SA1PR10MB6365.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Dec 2025 07:34:46.8519 (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: 4UOVJdsNLwGnPwA4DcZh4ySZpYypVURlSvIp6GGG/Eq0QdSFl1z9N5aZBckd72rBIFGtYwx23DLa/fG1d1Nsuw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR10MB6456 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-28_08,2025-11-27_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 spamscore=0 mlxscore=0 adultscore=0 bulkscore=0 phishscore=0 suspectscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2510240000 definitions=main-2512020059 X-Proofpoint-GUID: c6qKHuXn42r-p866Eh6Tk3dZS4-jJpyx X-Authority-Analysis: v=2.4 cv=AaW83nXG c=1 sm=1 tr=0 ts=692e969a b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=wP3pNCr1ah4A:10 a=GoEa3M9JfhUA:10 a=VkNPw1HP01LnGYTKEx00:22 a=P-XEVca7R7JmTnIKDooA:9 cc=ntf awl=host:13642 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjAyMDA1OSBTYWx0ZWRfX+aZXzPfTabBr nxUnUqmogJezQqmX/Q36kUkCNz4Hhu4aQpvW5rH/oOWeK06Vk8XDls3eJ4ciRwsNrYaARAPOnrK K4RvNfKqdGgcuE4fHxV9sMPx/mB0K96ZgS+tB8SDrmFiPkyqGJXN2fEZCZIr/ScE+4L6n/HI+AD 3OP9Ao74phigLmpxxihD1R0gXxgjR2rvHbkxCX0fAxlME0MdfoZRJ+Q/fwBl8pvnT63cH9wHD3W VIbc4Pc72AfZBwpgfS6GwDYBwox2GGY6OyO5gFq9wp3zezzVae8jNHlPyzE76umVGEOjuQqWDa2 q2mwuAJ/W4+/EKtOq8cAxWEJtDnk6LWaLXZrwzk+xa3k45DLLfih8oazcexruHhp1Jh5wWuQy7O N0GoqIELba8ML+qNqMZboTeXRu5T/ICLpR9GEAnNclGbk1HJ3MI= X-Proofpoint-ORIG-GUID: c6qKHuXn42r-p866Eh6Tk3dZS4-jJpyx X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, 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 sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 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~patchwork=sourceware.org@sourceware.org Minor refactoring. Carve out the SFrame FRE offsets emission code into a new output_sframe_row_entry_offsets (). This change helps prepare for later supporting a new FDE type in SFrame V3. gas/ * gen-sframe.c (output_sframe_row_entry_offsets): New definition. (output_sframe_row_entry): Use the new definition. --- gas/gen-sframe.c | 74 +++++++++++++++++++++++++++++------------------- 1 file changed, 45 insertions(+), 29 deletions(-) diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c index ae5a0c229c4..74a78902652 100644 --- a/gas/gen-sframe.c +++ b/gas/gen-sframe.c @@ -567,6 +567,49 @@ sframe_fde_free (struct sframe_func_entry *sframe_fde) XDELETE (sframe_fde); } +/* Output the varlen data (SFrame FRE stack offsets) for SFrame FRE object + SFRAME_FRE of the SFrame FDE object SFRAME_FDE. Each emitted entry is of + size FRE_OFFSET_SIZE. Write out the offsets in order - CFA, RA, FP. */ + +static unsigned int +output_sframe_row_entry_offsets (const struct sframe_func_entry *sframe_fde ATTRIBUTE_UNUSED, + const struct sframe_row_entry *sframe_fre, + unsigned int fre_offset_size) + +{ + unsigned int fre_write_offsets = 0; + + unsigned int idx = sframe_fre_offset_func_map_index (fre_offset_size); + gas_assert (idx < SFRAME_FRE_OFFSET_FUNC_MAP_INDEX_MAX); + + /* Write out the offsets in order - cfa, bp, ra. */ + fre_offset_func_map[idx].out_func (sframe_fre->cfa_offset); + fre_write_offsets++; + + if (sframe_ra_tracking_p ()) + { + if (sframe_fre->ra_loc == SFRAME_FRE_ELEM_LOC_STACK) + { + fre_offset_func_map[idx].out_func (sframe_fre->ra_offset); + fre_write_offsets++; + } + /* For s390x write padding RA offset, if FP without RA saved. */ + else if (sframe_get_abi_arch () == SFRAME_ABI_S390X_ENDIAN_BIG + && sframe_fre->bp_loc == SFRAME_FRE_ELEM_LOC_STACK) + { + fre_offset_func_map[idx].out_func (SFRAME_FRE_RA_OFFSET_INVALID); + fre_write_offsets++; + } + } + if (sframe_fre->bp_loc == SFRAME_FRE_ELEM_LOC_STACK) + { + fre_offset_func_map[idx].out_func (sframe_fre->bp_offset); + fre_write_offsets++; + } + + return fre_write_offsets; +} + static void output_sframe_row_entry (const struct sframe_func_entry *sframe_fde, const struct sframe_row_entry *sframe_fre) @@ -579,7 +622,6 @@ output_sframe_row_entry (const struct sframe_func_entry *sframe_fde, expressionS exp; unsigned int fre_addr_size; - unsigned int idx = 0; unsigned int fre_write_offsets = 0; symbolS *fde_start_addr = get_dw_fde_start_addrS (sframe_fde->dw_fde); symbolS *fde_end_addr = get_dw_fde_end_addrS (sframe_fde->dw_fde); @@ -631,34 +673,8 @@ output_sframe_row_entry (const struct sframe_func_entry *sframe_fde, if (sframe_fre->ra_undefined_p) return; - idx = sframe_fre_offset_func_map_index (fre_offset_size); - gas_assert (idx < SFRAME_FRE_OFFSET_FUNC_MAP_INDEX_MAX); - - /* Write out the offsets in order - cfa, bp, ra. */ - fre_offset_func_map[idx].out_func (sframe_fre->cfa_offset); - fre_write_offsets++; - - if (sframe_ra_tracking_p ()) - { - if (sframe_fre->ra_loc == SFRAME_FRE_ELEM_LOC_STACK) - { - fre_offset_func_map[idx].out_func (sframe_fre->ra_offset); - fre_write_offsets++; - } - /* For s390x write padding RA offset, if FP without RA saved. */ - else if (sframe_get_abi_arch () == SFRAME_ABI_S390X_ENDIAN_BIG - && sframe_fre->bp_loc == SFRAME_FRE_ELEM_LOC_STACK) - { - fre_offset_func_map[idx].out_func (SFRAME_FRE_RA_OFFSET_INVALID); - fre_write_offsets++; - } - } - if (sframe_fre->bp_loc == SFRAME_FRE_ELEM_LOC_STACK) - { - fre_offset_func_map[idx].out_func (sframe_fre->bp_offset); - fre_write_offsets++; - } - + fre_write_offsets = output_sframe_row_entry_offsets (sframe_fde, sframe_fre, + fre_offset_size); /* Check if the expected number offsets have been written out in this FRE. */ gas_assert (fre_write_offsets == fre_num_offsets);