From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 827D2384AB5A for ; Thu, 18 Apr 2024 20:33:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 827D2384AB5A Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 827D2384AB5A Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1713472436; cv=pass; b=bzp6/FIkcxXmrPWB2J9y6wDUDI256YL0Px3K6qkPfPk2Kcfi40YTfmeKpmxHctQLVsRkKSE+N8k3PxNmKGbEGgHI1PAK2/jEmhdEMovaDVKE52JCC7Tu+awC5TxczedDd4RQk6Yl6GdrZXJtPlNgjr5f0Iwbj9BkXyHf7++mNZo= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1713472436; c=relaxed/simple; bh=8W7xuXWcJ2vmtDxNONBoi5dqEybT9u3LdY3CzjwyxN0=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:To:From: MIME-Version; b=BoUGby4PAL+WiVI1NqyQRwqwiRsGjA2ikXElqOBO1LDBxuo75l9+rKewOh3/zvnTlSYpLbq715B0kuU2VhogQCKfCyAm8dNocDBmnhZ6OGznyg4Ew43ariquayWMJ8ANaWxwUmn5pyApYIihnvRgta4Ga74+I0KAWV/iwJMILZg= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 43IJiL8R004541; Thu, 18 Apr 2024 20:33:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2023-11-20; bh=Xa+mynFeUTOmSpqr95CUHNs6dBUkSJWPmG5uoGCRsO8=; b=A7yrfkBYmpHw5ptfY0lvRpRP/KGZEBR4RnXT7Kaq1gpsz/m+xd2uW9IxeI4GtLgC/YjW bK4d2aR0P5gRr6E3ssXK0G7Q9qgnmZMch3iGgA6NCOypsvJDELDhS4L5KEqM/zHHDPMW 16GarvIum0HF1O+sTWhA64fxDg/M5ujlp1tT58/Yw64m6+F5TjeKLEnRbq9F4E7WtarJ QDd27v9tu4DOXrKfNcIX3OXeVd9tdDBHeY/a0TN2elyAlmM/e8nZeiy3l8NubNNk6XqP ND3J+Hi6gNI/PWRn2b915L9isrEwN3PtBNCBp1Vt6EssUSUTGYyIMZSnx1d9Qx6sWAFd 6Q== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3xfjkvbgde-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 18 Apr 2024 20:33:51 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 43IJgR9c029247; Thu, 18 Apr 2024 20:33:51 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2100.outbound.protection.outlook.com [104.47.55.100]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3xfggay9s9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 18 Apr 2024 20:33:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Yp81j6ecwaSea11Ff2VKq6YHoD/JbqLC5gKpQF/fZlv0AZz94KmcDps2cDERNF3eS+NPsawDbgmX3FMVt2rme0SQp67TB3YYoWHbjH4qt9RuxMAHR4S+QfCCQecJjyuV0Tr1Ve4bnWHwZk7C8MKQi5zCgmGVlqS9a6VPha409VnNxkSKS783nU9/skPih53/J+vlv2WbBCe4p6UjTuQ3aNzTxFKuIbQYxWtrZ/PdVbiufH/P6FGjY8LRk1LZ3Tazr0DZYcFpx9zWnyJDiXukHxGQ/uXeykXLMLNvqN3r5YUaFv0EM94u6nks0kTdYfh75CVT+Jl9fAWsJTj6uIuIwQ== 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=Xa+mynFeUTOmSpqr95CUHNs6dBUkSJWPmG5uoGCRsO8=; b=XmwAhicMG164dSElZxVZRNMgdXTvoXM0j7pl8yr7TkG+cOBrBTW06tUH6vUOVSCVnE63b6vk7G4oJoPn/8KnxVzNu9KK6CxkzzD4q0TTkmvUIvAgI6UzTWLQJzSuHJgcNLTk5ruI0xtURK6zlvbhQ28fqVg4EUKfZr1TVC/xIKB2wYfpwPWNwcTAYxLChtreRK5+7m3MlCY7EWH3gqY3j7q1mt1fCDxM3HCyrFsxK9wWlGhKNywQjLt9bHg307k+G3fFLrrLqwyJFz+pj3nyYcqooKqOfN8wdqkLEWvmxy5V0kbxZfp0F8+xpFVGgZ5a+g0lAoRlOwNPnvITbJPU5g== 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=Xa+mynFeUTOmSpqr95CUHNs6dBUkSJWPmG5uoGCRsO8=; b=KeZQuqbtMX9RJze7UxwyyWBy7BCn8ihQerwSMA8olo6VZBrpMIng+8QRS5XVrODBnwGBj5Ph9Z8lNkwWHZjDOnC9jwTML9ivwJ8bMOOXZFB9m/Duj7wbpQxIyT+/YQBAAzacwVcXwl88L7hEradhXRQ5Qy/1PvdDDL48wJDPSxU= Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by PH0PR10MB4455.namprd10.prod.outlook.com (2603:10b6:510:36::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7452.50; Thu, 18 Apr 2024 20:33:49 +0000 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::6f0e:742a:270:889]) by MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::6f0e:742a:270:889%5]) with mapi id 15.20.7472.037; Thu, 18 Apr 2024 20:33:48 +0000 Message-ID: <5591cd7d-8464-4d71-8f02-aa88af36fcd9@oracle.com> Date: Thu, 18 Apr 2024 13:33:46 -0700 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 09/15] gas: User readable warnings if SFrame FDE is not generated Content-Language: en-US To: Jens Remus , binutils@sourceware.org Cc: Andreas Krebbel References: <20240412144718.4191286-1-jremus@linux.ibm.com> <20240412144718.4191286-10-jremus@linux.ibm.com> From: Indu Bhagat In-Reply-To: <20240412144718.4191286-10-jremus@linux.ibm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MW4PR03CA0162.namprd03.prod.outlook.com (2603:10b6:303:8d::17) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|PH0PR10MB4455:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d99d8ee-1a85-4915-d134-08dc5fe6da38 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QjcBQxnJZhjLi0JMHCyzdCPqhnFcbudgmijBF5fbx/539rYNtvn8Sckecyja1YXXqCPrk7yh7kf4NNFGkT+P9wYhad5nqpJ4d+lPqToxMa5mt+I4xYfvFfgLO3giIw8NHUdanz7gkNrW75ZbM8BjILAGOeT5lDqm82QLMvzH4jYFGilEQtL8d7lHDIZhHdLBG2+yCU1xox4tLcpGqNpxqfAcR7y837H4YFpmfLsc20Xkz6haqsbyFgtrMzmZRpqooWC8kWAvpOCUTpMQ91yd9aBpjZsOW5RaDD6Bl1WLEXmSOVejNB9J3udngZyo83V55U8TNuE3clmS49/KIFYkelNN/Lo20sPthm+qJzAw/D0HU4FB3aWIB0kMsJcOx1AFCu+TwTQJmVUE545MmBfbrNd5vq+fkzUiI4K6YZCCUKHRyNt4iqtfL2950jklHQLbCpSfYZieamEV8XQWWxrDIOaGwwDWZ4HCs/19PAWgecYmCxwRkzVmfEwZjdYVPOCa2HpnlCEgcLASRHFnvEDHPiVZpQP6wmS8JsGWV1AkqBzO+UpOe7fBIOK/PJWwuFVWbOKtrKJaPpeFhd9YX/NLDRnqtyaMgoSRP1GthKNyfmFfD+mlrZ3P3cCfVtg4YZXn7SzL/8cHYMUQrshnVZuogUb2WYj13up1xwoXUzAxlrk= 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:(13230031)(376005)(366007)(1800799015);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VEIrRnU3NUFFQWlTZW56ZVdBWDJkVU5MY2VKbDVhZ1J2QmFDKzFDNmdtY1h4?= =?utf-8?B?a3FzSEZUQmxoSzRDa1hJeEJCc01YNUFNY0dKU004S09HK09VQmZZbmpRYmtj?= =?utf-8?B?ZjVzMWlneHJDbHh6dW9WMFBPQ1ZQdElmMDNjRU9Wek5ucXR5OVRaMjBDMVAw?= =?utf-8?B?OTA1WTVJb09yaG52cUpYQWhDUDRGRDJxSU5jRVpnT1huWVpvT3FtSkFKcC83?= =?utf-8?B?TWVHZkZZYjU1NVdqNzNnVE9hUjBQNEJBVXBwdWxVM3NOZnd3amJoUkUrNkdv?= =?utf-8?B?MnFpazhWVVArYUVybU5INDJueGQ5dUw2NU94OGlzQUdzSTczbHhtWTR3L25m?= =?utf-8?B?dTFaYUN4ZDB4TnVKWDR1T3RhSjZLaTYwckx5cDNHUG5FaEordHU4NW93djVp?= =?utf-8?B?cFEzY1ZnQ2VYa0hXUjJpeGtPMSs2NXpGVnBsUGtKdnhoVmhmdFRwOVBRdzZz?= =?utf-8?B?VVZVRzlTWmhkVVBVSDRvWndvait5Ly9xY2RldjFKNWJLNWhVSjlBSjdpbEtm?= =?utf-8?B?cTBtNW80Nkd1N0lTbTk4OHdPMk9DNkhnc1ZXSDhBZ0dCZHJIck8yb3VHdzQy?= =?utf-8?B?OHZBek9YMmx1a3ZqRDI3eFdVRDdkOHB6eFdMVnlrT2dPS25aa0J6VTF6MGdx?= =?utf-8?B?ZmFMR2JvVXBsVTRNWW1TbE5Ea0hQL3FYK3RBRGtZZlJYMXlRSVJYUk9ua0JT?= =?utf-8?B?Q2ZYQ2FvWG1WVTBlcVNRVjI3ZW52RDZIcmVMYmYyU2NFREY4dXlsY2VEdHpY?= =?utf-8?B?RTVyRnBYbE1NZVBIVmpWWjQvU2RQMmRDZDExekdnSWJOMDdyaDJyQkMyUlNk?= =?utf-8?B?YjhlNDdtdWVkaEVtTTVmWndEblJ6TmtKajRSUFJQRHhMWFpROUd5S1pZVTZI?= =?utf-8?B?Vkc5aFcxNXFPcW55WmpiOC9ZWDJrRUxKd1l5ZDBZWDEyVW5IbGJGb1NkU1Rp?= =?utf-8?B?a2pOSVBqWWliQVNyUmxTTk92QU5YVE41U044bFE0UGV4Q1liVTUyMXhZS3B6?= =?utf-8?B?WnE4YWQrbkpSYVU4U2VUN0k0MWhvck04MTdNUG50U3p1QXdaOEErL1JlOG40?= =?utf-8?B?c0ROVUhOdXB2QmFqSUMwT0VPMmlYSnZha2RWSDhrTjN4dFZNWHBwQ2xhVDd0?= =?utf-8?B?VmNhNzhieEFEUHgwM2hGNGY4cDhLRElkZlNXSlYzTk1LYTVDSmlTcjlWMFV3?= =?utf-8?B?cHB5ejUzNElQQmVFYmt0VXVHeVdsakp5N1lndkhjYkY5cVROUllucmZmS0Jw?= =?utf-8?B?Mks5OC9oUW1hMUFSSkNsTlZETi9ORDlSZWlTV3FZQnUvN29QVVdCWE5GOUlo?= =?utf-8?B?MGpYY3dWMjhJd3g4VEFCTlh4UzhvVVlHbDZPMTVyQmpzT1RTWjhXWG1mSnBL?= =?utf-8?B?OWtjNWs1ZUxRTXNqclhmR05NYnh0cjE3RTczMDVXS1doRHZ1Rjl4Y2luYUlq?= =?utf-8?B?YlFWaFZUWmhTYU90bFFxQ1ZhanhNSFVIU1dURURRZzhoTzAwMjNsdnloUjJl?= =?utf-8?B?Zm16ZW1wOWdDNVAydzBwWDVndEJpRWlyc3lmK2hlQnUwQVFCQTU4bmNOazY5?= =?utf-8?B?UmFPUm1FMktUcDVock1tdVk5MURPTlVjcWg4MWVFQ2xJM3g4bmxTRlExckpi?= =?utf-8?B?ZGdodEdhTUZVdFdUZW53c2o0dUNTU0RhaENESGZkamczWWN4WnU1cVUxV2g3?= =?utf-8?B?NVhLVFF5Wnk1S3FCZnQxd0FMMEdCdkNIUGd0Z1lpbVVYaGNqdUxqNmpKN2tF?= =?utf-8?B?NUtWRlI1UnNzeUdJa252NnpmbDNiZmduVlBCR0VicWh5TjVCbzc4RGdaNlBV?= =?utf-8?B?Yk5Cank2a2NWUitVQTVyS09CcHRQd2o0MWpiM09zaW9HeVFUSHRTUGgxbmV2?= =?utf-8?B?bWJwaHBONm5UUFZKU0pQbkQvNWhZUnNsYm0vYThwN1NENDhOT1hmMnlZTVl2?= =?utf-8?B?T2JqdzNrZDh2MFdxeklFQWNtV2pQRXpCODVCbmF0Q1VaVE5XT01YdW5zUlpQ?= =?utf-8?B?cURtQVJ3NGJIZDVkZ1kvbDRxMVJ0ek5vcGZSZjdkL2NRcENnQlpaMEd3ZEpw?= =?utf-8?B?a1ZmNW9NeW12ZzBFVmNEMGZRcmRSV3kxeEM1K1E1b3hocWpDRGk3dFJVM2U4?= =?utf-8?B?Vmh4OVd2eGswdVJ3T082SWhXNktjTGYzc0hXNndYZ3ZXQUw1aU9obGNGaWNH?= =?utf-8?Q?jUCdror1ctLcmDgjn917/FE=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: zfGTlpIrat3mEswRe9Ms8P1fykbtwzqrED2Cat0a2fqVPjbJDXkGWSaSDO4ymXnRSfF2rpXd30AM4OzFm5hRbI+22up/W9wzH0PMDhrni1yPlTVj0MdSq5uECmib3hgL0S0knrROBJRRpmexPxHMecYWkL0YkZZ/cjp3qoxpVKknDeK83YdejTjrGdUIjO/bBuILTDAnDMZvzTNytE3dPOFXFw2O26N7SFEpwWV9ufaWec2H3JRMPqI9Nif0pmJzZs6DTiYp11XBHpJVE94nOvVmrdHvYhed97bJIS3T9Xtj64/wmUBnQcj5xMCe7/c6dtHehD/ipvikcPMjNBfIO8CVcKXgHze9OsS1ELxB9xcs8brQGm35kYWeddhdKfJvj45KLa9JoVfLCmB/oSGIE7YjnO8jcv3L5BUmBRjKZN6RC95EWPC0JYvwR9/keptJgLtb5LmcHDqUnR/UQ5z+1J3l2JJX9NpuKx6caE3gl3REk34yqALc3aOhpoMEcizdJqzfXW13j41zrlUmNszMx3yBjrJSvbbXzzdcU5cuFSZvUrd3lSY7Zg5PeSRNhCjusz2XxW/t4xGsQStOiSg51zv8gTvqprAcji1tDrAf72s= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d99d8ee-1a85-4915-d134-08dc5fe6da38 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2024 20:33:48.9197 (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: WlJJC01dhclhmlKkKzUf4zhOhmZkZdlbkHzOjdUR9TmoyL0QiBBlUjBIJkPqI57/aVtTJLPKeiJGwMEH4GH8zw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4455 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-18_18,2024-04-17_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 spamscore=0 mlxlogscore=999 phishscore=0 mlxscore=0 malwarescore=0 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2404180149 X-Proofpoint-ORIG-GUID: 9WFwDdlY4oQv8t9M-0_Sy3cFXAkwgvH4 X-Proofpoint-GUID: 9WFwDdlY4oQv8t9M-0_Sy3cFXAkwgvH4 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,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: On 4/12/24 07:47, Jens Remus wrote: > The following generic warning message, which is printed whenever the > assembler skips generation of SFrame FDE, is not very helpful for the > user: > > skipping SFrame FDE due to DWARF CFI op (0x) > > Whenever possible print meaningful warning messages, when the assembler > skips generation of SFrame FDE: > My intention below is to keep warning messages terse but useful. > - skipping SFrame FDE due to .cfi_def_cfa defining non-SP/FP register > as CFA base register .cfi_def_cfa _is_ used to specify the CFA base register. So I suggest we re-word this to following (and hence, removing the redundancy): skipping SFrame FDE; non-SP/FP register in .cfi_def_cfa or if (;) is unappetizing: skipping SFrame FDE due to non-SP/FP register in .cfi_def_cfa (replacing ; with "due to", if you prefer, applies to all comments below) > - skipping SFrame FDE due to .cfi_def_cfa_register defining non-SP/FP > register as CFA base register skipping SFrame FDE; non-SP/FP register in .cfi_def_cfa_register > - skipping SFrame FDE due to .cfi_def_cfa_offset without CFA base > register in effect skipping SFrame FDE; .cfi_def_cfa_offset specified when no CFA base register in effect > - skipping SFrame FDE due to .cfi_def_cfa_offset with non-SP/FP register > as CFA base register in effect I find this very confusing. Can we not add this warning? Such a case should not happen as we have handled the respective cases in sframe_xlate_do_def_cfa and sframe_xlate_do_def_cfa_register ? > - skipping SFrame FDE due to .cfi_val_offset specifying {FP|RA} register skipping SFrame FDE; FP/RA register in .cfi_val_offset > - skipping SFrame FDE due to .cfi_remember_state without SFrame FRE > state skipping SFrame FDE; .cfi_remember_state without prior SFrame FRE state > - skipping SFrame FDE due to .cfi_register specifying {SP|FP|RA} > register skipping SFrame FDE; FP/RA register in .cfi_register > - skipping SFrame FDE due to non-default return-address register skipping SFrame FDE; non-default RA register > > gas/ > * gen-sframe.h (SFRAME_FRE_BASE_REG_INVAL): New macro for > invalid SFrame FRE CFA base register value of -1. > * gen-sframe.c: User readable warnings if SFrame FDE is not > generated. > > gas/testsuite/ > * gas/cfi-sframe/common-empty-1.d: Update generic SFrame test > case to updated warning message texts. > * gas/cfi-sframe/common-empty-2.d: Likewise. > * gas/cfi-sframe/common-empty-3.d: Likewise. > > Reviewed-by: Andreas Krebbel > Signed-off-by: Jens Remus > --- > > Notes (jremus): > Changes v2 -> v3: > - Updated SFrame warning message texts as suggested by Indu, except for > the .cfi_def_cfa[_register] ones. I think it would be helpful for the > user to know that the issue is caused by a non-SP/FP register. But > maybe that is because I am new to CFI and those that would actually > debug the cause for these warnings would not need this extra > information? Anyhow, Indu, if you still prefer your suggestions I > would go with yours. > The ".cfi_remember_state without SFrame FRE state" warning needs to > remain, as there would otherwise not be any warning at all. The reason > is that sframe_do_cfi_insn now expects any of its called CFI > processing functions to emit a warning, if they return with an error, > such as SFRAME_XLATE_ERR_NOTREPRESENTED. Silently skipping SFrame FDE > does not seem an acceptable approach to me. > - Do not test sframe_ra_tracking_p when determining the SFrame register > name in sframe_register_name. The RA register name does not depend on > whether RA tracking is used or not. > - Corrected formatting of ChangeLog in commit message. > > gas/gen-sframe.c | 95 ++++++++++++++----- > gas/gen-sframe.h | 2 + > gas/testsuite/gas/cfi-sframe/common-empty-1.d | 2 +- > gas/testsuite/gas/cfi-sframe/common-empty-2.d | 2 +- > gas/testsuite/gas/cfi-sframe/common-empty-3.d | 2 +- > 5 files changed, 75 insertions(+), 28 deletions(-) > > diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c > index f47f51c7a354..a3b6f75cfe85 100644 > --- a/gas/gen-sframe.c > +++ b/gas/gen-sframe.c > @@ -867,7 +867,7 @@ sframe_row_entry_new (void) > struct sframe_row_entry *fre = XCNEW (struct sframe_row_entry); > /* Reset cfa_base_reg to -1. A value of 0 will imply some valid register > for the supported arches. */ > - fre->cfa_base_reg = -1; > + fre->cfa_base_reg = SFRAME_FRE_BASE_REG_INVAL; > 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. */ > @@ -922,6 +922,23 @@ sframe_row_entry_initialize (struct sframe_row_entry *cur_fre, > cur_fre->mangled_ra_p = prev_fre->mangled_ra_p; > } > > +/* Return SFrame register name for SP, FP, and RA, or NULL if other. */ > + > +static const char * > +sframe_register_name (unsigned int reg) > +{ > + if (reg == SFRAME_CFA_SP_REG) > + return "SP"; > + else if (reg == SFRAME_CFA_FP_REG) > + return "FP"; > +#ifdef SFRAME_FRE_RA_TRACKING > + else if (reg == SFRAME_CFA_RA_REG) > + return "RA"; > +#endif > + else > + return NULL; > +} > + > /* Translate DW_CFA_advance_loc into SFrame context. > Return SFRAME_XLATE_OK if success. */ > > @@ -990,7 +1007,12 @@ sframe_xlate_do_def_cfa (struct sframe_xlate_ctx *xlate_ctx, > SFrame stack trace info for the function. */ > if (cfi_insn->u.r != SFRAME_CFA_SP_REG > && cfi_insn->u.r != SFRAME_CFA_FP_REG) > - return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented. */ > + { > + as_warn (_("skipping SFrame FDE due to .cfi_def_cfa defining " > + "non-SP/FP register %u as CFA base register"), > + cfi_insn->u.r); > + return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented. */ > + } > sframe_fre_set_cfa_base_reg (cur_fre, cfi_insn->u.ri.reg); > sframe_fre_set_cfa_offset (cur_fre, cfi_insn->u.ri.offset); > cur_fre->merge_candidate = false; > @@ -1015,7 +1037,12 @@ sframe_xlate_do_def_cfa_register (struct sframe_xlate_ctx *xlate_ctx, > skip creating SFrame stack trace info for the function. */ > if (cfi_insn->u.r != SFRAME_CFA_SP_REG > && cfi_insn->u.r != SFRAME_CFA_FP_REG) > - return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented. */ > + { > + as_warn (_("skipping SFrame FDE due to .cfi_def_cfa_register defining " > + "non-SP/FP register %u as CFA base register"), > + cfi_insn->u.r); > + return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented. */ > + } > sframe_fre_set_cfa_base_reg (cur_fre, cfi_insn->u.ri.reg); > sframe_fre_set_cfa_offset (cur_fre, last_fre->cfa_offset); > cur_fre->merge_candidate = false; > @@ -1046,7 +1073,16 @@ sframe_xlate_do_def_cfa_offset (struct sframe_xlate_ctx *xlate_ctx, > cur_fre->merge_candidate = false; > } > else > - return SFRAME_XLATE_ERR_NOTREPRESENTED; > + { > + if (cur_fre->cfa_base_reg == SFRAME_FRE_BASE_REG_INVAL) > + as_warn (_("skipping SFrame FDE due to .cfi_def_cfa_offset without " > + "CFA base register in effect")); > + else > + as_warn (_("skipping SFrame FDE due to .cfi_def_cfa_offset with " > + "non-SP/FP register %u as CFA base register in effect"), > + cur_fre->cfa_base_reg); > + return SFRAME_XLATE_ERR_NOTREPRESENTED; > + } > > return SFRAME_XLATE_OK; > } > @@ -1096,13 +1132,16 @@ sframe_xlate_do_val_offset (struct sframe_xlate_ctx *xlate_ctx ATTRIBUTE_UNUSED, > register is not interesting (FP or RA reg), the current DW_CFA_val_offset > instruction can be safely skipped without sacrificing the asynchronicity of > stack trace information. */ > - if (cfi_insn->u.r == SFRAME_CFA_FP_REG) > - return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented. */ > + if (cfi_insn->u.r == SFRAME_CFA_FP_REG > #ifdef SFRAME_FRE_RA_TRACKING > - else if (sframe_ra_tracking_p () > - && cfi_insn->u.r == SFRAME_CFA_RA_REG) > - return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented. */ > + || (sframe_ra_tracking_p () && cfi_insn->u.r == SFRAME_CFA_RA_REG) > #endif > + ) > + { > + as_warn (_("skipping SFrame FDE due to .cfi_val_offset specifying %s register"), > + sframe_register_name (cfi_insn->u.r)); > + return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented. */ > + } > > /* Safe to skip. */ > return SFRAME_XLATE_OK; > @@ -1124,7 +1163,11 @@ sframe_xlate_do_register (struct sframe_xlate_ctx *xlate_ctx ATTRIBUTE_UNUSED, > || (cfi_insn->u.rr.reg1 == SFRAME_CFA_RA_REG) > #endif > || cfi_insn->u.rr.reg1 == SFRAME_CFA_FP_REG) > - return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented. */ > + { > + as_warn (_("skipping SFrame FDE due to .cfi_register specifying %s register"), > + sframe_register_name (cfi_insn->u.rr.reg1)); > + return SFRAME_XLATE_ERR_NOTREPRESENTED; /* Not represented. */ > + } > > /* Safe to skip. */ > return SFRAME_XLATE_OK; > @@ -1142,7 +1185,10 @@ sframe_xlate_do_remember_state (struct sframe_xlate_ctx *xlate_ctx) > early with non-zero error code, this will cause no SFrame stack trace > info for the function involved. */ > if (!last_fre) > - return SFRAME_XLATE_ERR_INVAL; > + { > + as_warn (_("skipping SFrame FDE due to .cfi_remember_state without SFrame FRE state")); "without SFrame FRE state" --> "without prior SFrame FRE state" ? > + return SFRAME_XLATE_ERR_INVAL; > + } > > if (!xlate_ctx->remember_fre) > xlate_ctx->remember_fre = sframe_row_entry_new (); > @@ -1330,21 +1376,19 @@ sframe_do_cfi_insn (struct sframe_xlate_ctx *xlate_ctx, > default: > /* Following skipped operations do, however, impact the asynchronicity: > - CFI_escape. */ > - err = SFRAME_XLATE_ERR_NOTREPRESENTED; > - } > - > - /* An error here will cause no SFrame FDE later. Warn the user because this > - will affect the overall coverage and hence, asynchronicity. */ > - if (err) > - { > - const char *cfi_name = sframe_get_cfi_name (op); > - > - if (!cfi_name) > - cfi_name = _("(unknown)"); > - as_warn (_("skipping SFrame FDE due to DWARF CFI op %s (%#x)"), > - cfi_name, op); > + { > + const char *cfi_name = sframe_get_cfi_name (op); > + > + if (!cfi_name) > + cfi_name = _("(unknown)"); > + as_warn (_("skipping SFrame FDE due to DWARF CFI op %s (%#x)"), > + cfi_name, op); > + err = SFRAME_XLATE_ERR_NOTREPRESENTED; <>/GCC/gcc-upstream/gcc/contrib/check_GNU_style.py patch gives: === ERROR type #1: blocks of 8 spaces should be replaced with tabs (1 error(s)) === gas/gen-sframe.c:1386:0: err = SFRAME_XLATE_ERR_NOTREPRESENTED; I dont think it is a must-be-used-script for binutils project, but for my commits I have used this script to keep code base aligned to same formatting style. PS: Not all errors reported by the script need to be fixed. > + } > } > > + /* Any error will cause no SFrame FDE later. The user has already been > + warned. */ > return err; > } > > @@ -1361,7 +1405,8 @@ sframe_do_fde (struct sframe_xlate_ctx *xlate_ctx, > /* SFrame format cannot represent a non-default DWARF return column reg. */ > if (xlate_ctx->dw_fde->return_column != DWARF2_DEFAULT_RETURN_COLUMN) > { > - as_warn (_("skipping SFrame FDE due to non-default DWARF return column")); > + as_warn (_("skipping SFrame FDE due to non-default return-address register %u"), > + xlate_ctx->dw_fde->return_column); return-address -> "return address" or even just RA. > return SFRAME_XLATE_ERR_NOTREPRESENTED; > } > > diff --git a/gas/gen-sframe.h b/gas/gen-sframe.h > index fbe2fd5d9368..8ed46dbb087b 100644 > --- a/gas/gen-sframe.h > +++ b/gas/gen-sframe.h > @@ -24,6 +24,8 @@ > #define SFRAME_FRE_ELEM_LOC_REG 0 > #define SFRAME_FRE_ELEM_LOC_STACK 1 > > +#define SFRAME_FRE_BASE_REG_INVAL ((unsigned int)-1) > + > /* SFrame Frame Row Entry (FRE). > > A frame row entry is a slice of the frame and can be valid for a set of > diff --git a/gas/testsuite/gas/cfi-sframe/common-empty-1.d b/gas/testsuite/gas/cfi-sframe/common-empty-1.d > index d7756302b559..08731b069229 100644 > --- a/gas/testsuite/gas/cfi-sframe/common-empty-1.d > +++ b/gas/testsuite/gas/cfi-sframe/common-empty-1.d > @@ -1,5 +1,5 @@ > #as: --gsframe > -#warning: skipping SFrame FDE due to DWARF CFI op DW_CFA_remember_state \(0xa\) > +#warning: skipping SFrame FDE due to \.cfi_remember_state without SFrame FRE state > #objdump: --sframe=.sframe > #name: Uninteresting cfi directives generate an empty SFrame section > #... > diff --git a/gas/testsuite/gas/cfi-sframe/common-empty-2.d b/gas/testsuite/gas/cfi-sframe/common-empty-2.d > index 20282c7854e8..e759cddfcc20 100644 > --- a/gas/testsuite/gas/cfi-sframe/common-empty-2.d > +++ b/gas/testsuite/gas/cfi-sframe/common-empty-2.d > @@ -1,5 +1,5 @@ > #as: --gsframe > -#warning: skipping SFrame FDE due to DWARF CFI op DW_CFA_def_cfa_offset \(0xe\) > +#warning: skipping SFrame FDE due to \.cfi_def_cfa_offset without CFA base register in effect > #objdump: --sframe=.sframe > #name: SFrame supports only FP/SP based CFA > #... > diff --git a/gas/testsuite/gas/cfi-sframe/common-empty-3.d b/gas/testsuite/gas/cfi-sframe/common-empty-3.d > index d17521dd88ea..5cc37d5ff440 100644 > --- a/gas/testsuite/gas/cfi-sframe/common-empty-3.d > +++ b/gas/testsuite/gas/cfi-sframe/common-empty-3.d > @@ -1,5 +1,5 @@ > #as: --gsframe > -#warning: skipping SFrame FDE due to non-default DWARF return column > +#warning: skipping SFrame FDE due to non-default return-address register 0 > #objdump: --sframe=.sframe > #name: SFrame supports only default return column > #...