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 13B5D3858D20 for ; Tue, 23 Apr 2024 08:15:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 13B5D3858D20 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 13B5D3858D20 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=1713860155; cv=pass; b=LqyxuKArik9VI2oQIHdRCEs8Y+L1iQnlLThuTjbzg3b9Y9a6fetkVdFgJmV6o6HbpByq4y/ZpQrCVnkvjWB68DP22jekG+tg7uIcHv4tplkqXKnxiAhR21cv1oAw9qheWFzCHHmKo839asDSAeQtCEVGEpnZ48XO3xHBALTwbJc= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1713860155; c=relaxed/simple; bh=Cw4BxWxigSPxBBXigXdFin5Zny6U3P4AhqcvGse+jIo=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:To:From: MIME-Version; b=xOuOSxr5XGFc9dJ0xoy7m6nbYZhToQ18eLoZzu8lFSTxCNK5lx8g77Qhp7GL1+4JhYWCbfEQ6LDp3T7elJ25Jbg3i0eASw526vgYO/Atf52w6xZzi+Tc8ZENqLnP6IGkQRR/cjp7uQj69b/WAPjfU/hFVegI84Hk3kMGTWXVcQU= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 43N7YoHo022023; Tue, 23 Apr 2024 08:15:50 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=tsxeYbRbc7iaImqu/L89idVCW0ZwFD99C0WX1zwaTyw=; b=hEfI/N11xOwFOAtFPb48P+bfnJ6lsyDqQcLJaAPWwN79lXb8ja8YAjCHx6J9KNQYeObe Tv+LeGAdHTJPTafqDUnyjOH41RltZn2t1vIoTcTOPYdXkED1c4Ru9Dzk2g89EXWJtXRq h/xxrs+dSiW9JmTk9hwdVZYZfGAuGrTdmkZ45Xyml897QQi8oDHMHlU+NVDrrJXWUr+n Zqu7zt5Q1sgpIqryte2NpTtSBeW2Iljh8HMy0rWL+3VS+rasR6xxlfvEQwEEwEarThkR 7aPUV7ubqLP3uQbVZ/Bcjh3sEtbTpcAJwuR+i4C65lZYINkw2ViZTOAZjFZuHFSONyvD EA== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3xm4a2d4gs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 23 Apr 2024 08:15:50 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 43N6gaEo010298; Tue, 23 Apr 2024 08:15:49 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2100.outbound.protection.outlook.com [104.47.58.100]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3xm4579mnh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 23 Apr 2024 08:15:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TF8BXRba1zMT928cyklttP/9hDsQepKnmddcD6QC1d4IH10fo0pi3RHCgh/NTEnIiktOgxtwyJbIwWXPvWdTDhJ7eSkgtvozkUdD8AbhRJZxeHhAQzzSNaERdVii0UkXHI4CTZuw5yz6urB6IEoNRJZHuFaz8qtXoa8pM3D0fE6tiai+ACYMBb6s6W0+sxcu4O2wzSmu9If3dXgd31f5Plw7YMvlg40nRcST06+Dy6zxFgDNvipDsgvDnLmOAdRlcMxPbDHjHFG0nTOi0cAeYJhmTley69gStp16gZdwzkPzTtsVGVj2gRep5j1l6TXQGA3bLIkhdZqd6RZv8xdjug== 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=tsxeYbRbc7iaImqu/L89idVCW0ZwFD99C0WX1zwaTyw=; b=Mck7PTdrEdkz17uDKbZa6BSLHyyI0g2AsIe7IVynTnd8ruhB/0W8cFGAfb7rvfsYe3UUV0HM/6Ehsnq41DJAuPzfflr9QqvLJBWiv7Wzh6q40F2c6m+UqX6lOARnxOl5O8366udY2yYcHi7A1OVw5lh33Qw7Dop48EfbdnhjJ2VsUGT1cvMB7cjr6zPj6Q7xaMXY60oiVgRi8H2am1Gh8J8eGbbmQY1l6WQ7mwtp0bZ7eW6ldmkt2EcRegUg0PLEuTnwlyU/0SmErHKgW+Dzcf3hxefP6LlnkJJcPeOmWGh+jFRNeSGPOAH4ogcyyjcKzmgQE0X6b53LAK+sy/8cCQ== 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=tsxeYbRbc7iaImqu/L89idVCW0ZwFD99C0WX1zwaTyw=; b=PKln5SzvL8/OKj39tU8MzuViNaieIoFBOE83MTr6K/9v2usBjxQQW96H9Iop/N5bbQkdcjdz3KKxqKhOb1DciyUAFG9zig4IEoOqYJgxZ+/WeQ6KFEJ1qaDou9mjy8jc0a8w7CTWXIr2KY/M7BJXXbn9t7EuprCgQdBLn3+e3xo= Received: from BN6PR1001MB2147.namprd10.prod.outlook.com (2603:10b6:405:2e::26) by PH0PR10MB4693.namprd10.prod.outlook.com (2603:10b6:510:3c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.44; Tue, 23 Apr 2024 08:15:47 +0000 Received: from BN6PR1001MB2147.namprd10.prod.outlook.com ([fe80::dcff:9a4b:28d6:99f8]) by BN6PR1001MB2147.namprd10.prod.outlook.com ([fe80::dcff:9a4b:28d6:99f8%4]) with mapi id 15.20.7472.044; Tue, 23 Apr 2024 08:15:47 +0000 Message-ID: <12ef16e4-c881-41ea-af27-de3254c2c2ee@oracle.com> Date: Tue, 23 Apr 2024 01:15:44 -0700 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 13/15] gas: Don't skip SFrame FDE if .cfi_register specifies SP register Content-Language: en-US To: Jens Remus , binutils@sourceware.org Cc: Andreas Krebbel References: <20240412144718.4191286-1-jremus@linux.ibm.com> <20240412144718.4191286-14-jremus@linux.ibm.com> <1e518650-2d11-4a28-a3b7-de94a32582b1@linux.ibm.com> From: Indu Bhagat In-Reply-To: <1e518650-2d11-4a28-a3b7-de94a32582b1@linux.ibm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: MW4PR04CA0219.namprd04.prod.outlook.com (2603:10b6:303:87::14) To BN6PR1001MB2147.namprd10.prod.outlook.com (2603:10b6:405:2e::26) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN6PR1001MB2147:EE_|PH0PR10MB4693:EE_ X-MS-Office365-Filtering-Correlation-Id: b1dbb895-3e5c-4f5d-252c-08dc636d9458 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: =?utf-8?B?MnJvV2FVT0tsbStWbEhpQ015MkNZYVJwTWpmakNUWmpvek4xVHRwT2Nzc0Rx?= =?utf-8?B?NU9qQTdnU0dPTStEcm8xYXhoekhsUGxJUjZMa0VBc1VOMGR2amM5U3FFaTN3?= =?utf-8?B?Lzd6WDVkTmVTVm56a29mbEFoVE1uSzRzbHBZR2xRMmdiWnB6eXliRVZUWXlE?= =?utf-8?B?cEdlRGp2QWViRzNrRGJUcXh3QWhwT0xzMHl1SHc1azJoOW5sUUV6MXplTmJi?= =?utf-8?B?RG5YTHBUSXgySDVBTjdSM2YvcitWazgwMTE4MFBENW84aFVtb3ZXd1JwU25Y?= =?utf-8?B?QUhSZ0NkUFBmaFpkOXdoemRUSTYvRXU1RWpneTdnTmg1b1NhUnU5UjhrSVRI?= =?utf-8?B?RWFSWm5vbDdzaVpWTWFMRXZmQ2xVdDJLWmJGOVNlRnE0REtyVFNBdmp0ZE9Y?= =?utf-8?B?VlRBczc2OUs1TkQ4aWYveHdzSk1ON0JvdmR1V0I2RVcxbVNsQVhJdWRacHVp?= =?utf-8?B?WGFNVklnaUV5NWQxK2M2NU04OFR0UER1WmE0bjdocW10K3RRYmF2aGtLMDlw?= =?utf-8?B?SkhLdC9sRHpJRDB1VWM3MTJEd09CaEdmY1pvcEswL3BTZWk4QlVoeVVwY05M?= =?utf-8?B?VGpvZFNVWm9GR0h2aW1tWDVYNzRNNHU0QUZGZDhSZGpDU1RjTmt2K0ZLbHNH?= =?utf-8?B?NDRwWVNMaGw1aXRrQS9qMTZibml2K2hNVENUUGMzTlFNU20wRkI1dXRtbGpk?= =?utf-8?B?VGp6cGprWGQ4L3dtUTNRT2Z6eWt4eHdPbGx0V1NkMEFwUmZyZnJFZ3hsaUE4?= =?utf-8?B?dS9jdUJoUEM0YVAwVUJpVWJVYk1Rd2dlYmNMRkdXekVXRDNMeGwzOEJtMjVx?= =?utf-8?B?ZDdVc0xETi9uZWQyRnpHTzBmTW9ialJqUTYycTBWUm9QaTlDUWszRWR2NnRC?= =?utf-8?B?Y3ZQUzNDY2YrUS9vWWw0TWZsT29UaU02S0Jwam0wd0ZWYmp3aURxWmZlV0xk?= =?utf-8?B?UVZoL1NKZzdBQzR2YUxUM0p1b3A4MUhlaUhFWU9icms4ZFh1TVNnanhQcnR3?= =?utf-8?B?Um5mUFpOeXg2NHNBMGYxQWdaVCtQMUZEeG95WjlEUFlucEZtOEhEUndyVllu?= =?utf-8?B?V2tKeG5uUkx0aldaUXRRR1pHNlZhcjNDOW1peGk1WEI3UHhkNFRMN1QxT081?= =?utf-8?B?K0VGOFovSSs1YzNYVlIrc2lqOW82Q1R0cVptR1NNb0FiSWdGVSsybFhFRjBh?= =?utf-8?B?b1h4cWdGdzNQOGtGendndmNLRW9RYnBaZ0lubzRRSVg3SnBUcFF5dmVWWkhp?= =?utf-8?B?dHFzc2IyY2g2a294clA5T29EZmlsL0U4SkxyRWQrdXF2UzFPNXpqUXFaUUpj?= =?utf-8?B?RDVSZjdTMDcxSHErNEZvb0VTNTVlaWQ0UXYwM1U3dkVCbENqZHBPazcwN1lm?= =?utf-8?B?TEJZbEFwTk1xSlFmb2ltU014eWlvWlRuRUpuM2FINWJITDhjOTRHNW5HRG12?= =?utf-8?B?aDhUQ1J4QXM4YkRYeWlKR3J4U25wQ1NHRVQrWUh0aUdsR3VDY1JlbzMxTm1H?= =?utf-8?B?aHZQWUJRZnJRZVY4c0dQYW1RSUE1QVNyWDJDcEtMQVlPVlNZYzlOc2U3T0Y5?= =?utf-8?B?YTB6NDd2YVV5aXI1aU9VOUprdkhlUlFsMzZQZmVPNXJiOElLWGsvWkVoMXVn?= =?utf-8?B?UVZHaWxFWUIxcDZxUUpqWVRVVWtleWVSOTBNMDBnT3VlbWJodG5DaFBZZHdO?= =?utf-8?B?a1JPckVuNFpMUlcyMWI3WlRnMzd5M1NFRHd2eGFRNnRTbHBsazFCL0xBPT0=?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN6PR1001MB2147.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366007)(376005)(1800799015);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?a1YrY3EzMnBOUi9Rb2J1UnN2cUs0Z1A4c2dxTXdGeDhwTENvdkw3enhCb3VI?= =?utf-8?B?b0VhekRpdXQ2c0RoQWFjN09GWEcvRmV1U1gvODlXWkV3dzcxSXk2U0NrUCtL?= =?utf-8?B?bDM0N25TWHg4ZzRLNEhuUWN1eVYydkxIemlxbmxqYVNFand4Zzd6ZXY4dVU3?= =?utf-8?B?LzczNEIwZDEzcm9UVCtCMUVDZHhpK1R4Vk9BcXdsQXJwd3J6dUZQcWs2a0t0?= =?utf-8?B?MGRDWm5IYVkyQnVLdlAwODNNU3NuakdHQkh6UXc2bjRuRGJ5WE1EMG1zYWNF?= =?utf-8?B?eTJidVB0WCtPUkY4NnhaeklReVpxc3VMdVRtcmtxaFRJREtJeTVhY3JudDdD?= =?utf-8?B?VmhoR0Q2aUk0MlRDL0JBb1ArSzVGTWNTR3NORU5YOUJ3WEZOSi9VcEQ4REJa?= =?utf-8?B?bWZ2eWh4VWF1TnR4N2diNGJHWXc1WnlTOEhMSHRMWHN6V3QxdHdMNDdHekVi?= =?utf-8?B?ZlRCdG5sc1ZQdWk1RzhxTmRKSkxrc3htYkJFZGlnYmlVY2cwaUFPSVFPNnNU?= =?utf-8?B?WXB3dk56NSs2RHFTQUJuUFBIQXp5NStOM1ZRMUJrN3BTVkFQTEVEQVdoc21O?= =?utf-8?B?TlNIcjEyUFpPdjAvS2pWQzdMcU0ycDFWd3VtVWdmUE0xd0crcCtMbXgrV1RD?= =?utf-8?B?anVwOHJiSGRYc0RzQnNBM3R3ZXA2OWRpTCtLS09VYjR6SEhNb0kyZ1RvemI3?= =?utf-8?B?WUZLZHJpb1hTTUFYdzJCckFMd3VzcUZab3F5QVNtUGVwRnY3c1dzb1hlYkpi?= =?utf-8?B?Ym1JNzhUNUxWOUFXVS9FVUNaSnR3aElIclluM3dpWkQ0VWZvUXBPRnpBejh3?= =?utf-8?B?bjM4QkUwWjJZUVlmRmc0TVNLZWIwR0x5andSekVtbFJvcTBtWng5SWNUcnk4?= =?utf-8?B?YWhSZHpUZjh5OHg4cUF1cEZYTllKdDJxbmlmTWkvOENaNnFHZVNCSFk3VzNO?= =?utf-8?B?NHo2bU8zMUVjQU5qbXhGL1FzZUEwTzQyS3FuRmZQS0VKVERaVXRVdVU2ZlAr?= =?utf-8?B?cTlWN0ExTUljc21LZmU5Y2lCUDZVUjAwODJleHgyeUYyMVhpU0FmbTk3dzNV?= =?utf-8?B?dmFoamlwR3JZSkF2SHlOL1NZV1UvUjB6emhqQ0hQNzJVblZZRUlWSE1MdEJz?= =?utf-8?B?NFFZeVBYb2VWUGg2Vk1wSmhlNEU5QzFJN2lhdzY4M0VHQSswTFlhS1YvZm13?= =?utf-8?B?OXpkcXd0RVdDcnRRK1FoZFdxNmpEbDlYVy9GbEI3N016bjAyL05vdnpvckFU?= =?utf-8?B?Kzg5TkJsT0Z3b0hMSGNQb0RBNmNLVTJhM1AwK2l5K3RIUHpzNlJtMEJ6WHdT?= =?utf-8?B?WHUxaGszVjdwZkdZbmc1SGU3MThHR3NhWllacERWUEQyTnkwSzNPamN3Zy9q?= =?utf-8?B?Szd0N2dkQlM3Unhuc0pZZEFaK3BtYTVMcGFZdjNsc2swdjYremd0UWI5eGha?= =?utf-8?B?RGdiaU9LMmtHRzV6ZjN6RWtQV3RXODB1UlUvRUJuYm9FR3lZT2dmUWFuUkpS?= =?utf-8?B?Z09MTUlIOHdvVlRGc282VWJ0UnpzNytpUWY5U0xxR29iMkZJd0p6NTFqUFNm?= =?utf-8?B?VTVNK3dvV0tPdWdzRkl3WUtIckcwTVJnNnpTNGJLVUp1K0J1eVNYQXFmYnlI?= =?utf-8?B?Q21NRDRiY1RJNDR1YkN2Yk9GQ1ZIUGpGYmVyZlQvZGl5UDl4TkZLcXcveVhm?= =?utf-8?B?dTJRa2RTREFma21xakZZeWszZjd4N0k4T1JNREpuKzYzdHExTVlObzFlMTZ3?= =?utf-8?B?SGlpUVBISjhZOVAvOXJhUUpva3Zsd3hHT0JjUFd5dStsR3J2aHYyMzd5ZkFq?= =?utf-8?B?Y0pjT3hBc3o4Nlc3VTd3ZWxDTmZ4cmtobUZkR25pcW11cEtibDJTV3FkREUr?= =?utf-8?B?YVJlK2p2TjZuMS9aTGxCWXJRWnE1ditsazJvU3VldE4vY2pJUHZDbDhVUEZz?= =?utf-8?B?L2I5SWM4UzMxNjRpcHNGQ09BYjUvWTlOcmE0L0t5bk9mYzJQdlBiN25WR25M?= =?utf-8?B?R3NnVHdZSWYrVjl3N2FXdEhTRnZmT2tFLzNIWWNTTWo5aWx0aUE1OGE3Ri8y?= =?utf-8?B?NnM1VGdyZHZVbHBtckFzZjliTWtiZTBBY2NMcmUwWCtWa0hpTGlqMCtaRGlt?= =?utf-8?B?TFQxbEs5dHQ1ZG5mMWg3NEVFdEdaVlBKeS9LVzNpMkhUM2hBcitocmhlNG1D?= =?utf-8?Q?d7k9cFz2sAsveNIhXvkliSI=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: q2Ib/4mCdD0VXuQ7gDLK5RxJdLugEMQstl7uDI9RvxSK3GeX9qd4fuiMVX8rMuSoyO3tsPebTUSFdA87LxsBWNQb+6bzkbdYEDMb2QzV5uN884dvxCHyH4hUchf7UbIqVfmX7LTcYU22qrsAr+12BGC5zoJ8cmh9yY4yYJXXciDgCPuLLp9WRbuCW5aPxnAumKsZvPxeJrRc+Eh5rUyzL03F16JjfrdT4D7M9/QsQx6CinoRPOAXYT90pdFZtyaPFu5spSfTii3Qbs9S24nag8P6FoqfWVm+GRelUYE5FxM6jVzCI7thqJxMfmREMG1EIHVs24sbZnm8q1bESkuEiVp23VPs+SnQ0nwJoVXe6IBWCNe/X8ETA0Fi/buo2DNeGiUzumVLLT62ZMgkDDg0SO4H0NvOc9ypUOW8/QovHKJAH+3gRyQyFGuMuPrdMKoHBF2YEw6il5kekT/vvaxImbK1iy10J8eyNb3lyteQiQpxCRDlu+J7cXtsAzdDr6E3gV48EslSnJve6jQIJC27ETM4jYv/ivvRKDPQ1KJge8jMiiX/ZIOMQd3xR5QAnCXUbGjGSYTrlUyWdSn12dRQRTNtlOU4WzuCvPtLzo+VmoQ= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b1dbb895-3e5c-4f5d-252c-08dc636d9458 X-MS-Exchange-CrossTenant-AuthSource: BN6PR1001MB2147.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2024 08:15:47.2977 (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: hCb7qat9BsE6Hngrw/2kAbkonIB02jVKdAcHgQgBzXAksvbTKo8P6hFsGiaJ+EkHDYIlA/9J8QYzPcfTLQoDHQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4693 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-23_04,2024-04-22_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 spamscore=0 malwarescore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2404230022 X-Proofpoint-GUID: kIwcZWtKM9Zvo7tdHWTGA3q8g3w6Vf2n X-Proofpoint-ORIG-GUID: kIwcZWtKM9Zvo7tdHWTGA3q8g3w6Vf2n X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,BODY_8BITS,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/19/24 06:13, Jens Remus wrote: > Am 18.04.2024 um 22:37 schrieb Indu Bhagat: >> On 4/12/24 07:47, Jens Remus wrote: >>> The stack-pointer (SP) register contents on entry can be reconstructed >>> from the CFA base register tracking information from the current SFrame >>> FRE and initial FRE from the FDE: >>> >>> 1. Compute CFA from the current CFA base register (SP or FP) and CFA >>>     offset from the SFrame CFA base register tracking information from >>>     the SFrame FRE for the current instruction address: >>> >>>       CFA = + >>> >>> 2. Compute SP from the current CFA and the CFA offset from the SFrame >>>     CFA tracking information from the initial SFrame FRE of the FDE: >>> >>>       SP = CFA - >>> >>> While at it add a comment to the processing of .cfi_val_offset that the >>> SP can be reconstructed from the CFA base register tracking information. >>> >> >> Sorry, but I am not sure I follow.  Yes, SP can be reconstructed using >> the means you outline, but so can FP.  And also RA when applicable. >> >> In other words, I dont follow why treat SP differently from FP / RA >> when it comes to .cfi_register (or even .cfi_val_offset) for reporting >> the warning. >> > > I did not find any explanation how unwinding using SFrame is exactly > expected to be performed. Following is how I assume it to work in > general and on s390x specifically. Details of how to restore the stack > pointer register value at the call site are probably architecture specific. > > 1. Use the program counter (PC) or subsequently return address (RA) >    as address to do a binary search through the SFrame FDEs to determine >    the FDE for the current function. Binary search can be used, as the >    FDEs are of fixed size. > > 2. Note/print the function start address taken from the FDE or lookup >    its symbol for the stack trace. > > 3. Do a linear search through the SFrame FREs associated with the FDE >    to determine the FRE for the address within the function. Linear >    search must be used, since the FREs are of different size and >    different numbers of offsets may follow each. > > 3. Unwind the stack-pointer (SP), frame-pointer (FP), and return- >    address (RA) register values at function entry: > >    - SP: Since SFrame does not track the SP register, the mean >      to restore its contents at entry to the function must be to >      use the SFrame CFA trackig information from the current FRE >      and initial FRE of the function/FDE to restore the SP value: > >         CFA = + >         SP = CFA - > >         NOTE: Above does not restore the SP value from the stack, >               as SFrame does not know whether and where it would >               be saved. Instead it computes the SP value. > >      The use of both the current and initial CFA offsets is valid, >      as the DWARF standard mandates the CFA to be fixed for a >      function: > >         "The algorithm to compute CFA changes as you progress >         through the prologue and epilogue code. (__By definition, >         the CFA value does not change.__)" > >    - FP: Without SFrame FP tracking use the fixed FP offset as follows. >      With FP tacking (currently the default), if available use the >      FP offset to recover the FP value as follows, otherwise the >      FP value is still in the FP register. > >     CFA = + >     FP = [CFA + FP-offset] > >     NOTE: Above restores the FP value from the stack. > >    - RA: Without SFrame RA tracking use the fixed RA offset as follows. >      With RA tracking (depending on architecture), if available use the >      RA offset to recover the RA value as follows, otherwise the >      RA value is still in the RA register. > >         CFA = + >         RA = [CFA + RA-offset] > >         NOTE: Same as for FP. > > 4. Unwind the SP register value at the call site. This step be merged >    with the previous one. > >    On s390x the value of the stack pointer on entry to a function is >    identical to the value of the stack pointer at the call site. Thus >    nothing has to be done. >    Note that on s390x the CFA is not defined to be the value of the >    stack pointer at the call site, as it is for other architectures. >    Instead it is usually defined as the upper bound (exclusive) of >    the current stack frame. >    This is valid as the DWARF standard does not mandate the CFA to >    be defined as the value of the SP at the call site. > >       "__Typically__, the CFA is defined to be the value of the stack >       pointer at the call site in the previous frame (which may be >       different from its value on entry to the current frame)." > >    On x86-64 the SP at the call site can be determined using a fixed >    offset, or SP = CFA can be used, if the CFA is defined as the SP >    value at the call site on x86-64. > > 5. Repeat at step 1 using the RA value as address to perform the next >    FDE lookup. > > > With that to your question why I assume it would be acceptable to treat > SP different from FP and RA when it comes to .cfi_offset, > .cfi_val_offset, and .cfi_register: > > On s390x, and I assume this to apply to all other architectures, the SP > value on function entry and from that also at the call site can always > be restored using above steps. It is irrelevant whether the SP value on > function entry is saved on the stack (.cfi_offset), in another register > (.cfi_register), or is defined as offset from CFA (.cfi_val_offset). > > Actually the SP is inherently defined as an offset from the CFA that can > be deducted from the CFA tracking information (see above). > An exception would be if a compiler would generate code that defines a > non-SP register as CFA base register on function entry. I have not > observed that on s390x. > > Regarding the aforementioned CFI directives I observed the following on > s390x: > > The SP register value is saved on the stack in the function prologue and > restored in the epilogue, when allocating stack space of fixed size for > local variables. The compiler generates respective .cfi_offset > , ... and .cfi_restore CFI directives. Note that > the compiler could alternatively use arithmetic instructions to restore > the initial SP value. Due to the availability of Load/Store Multiple > instructions those are generally preferred. > An unwinder using .eh_frame information would most likely use the > .cfi_offset information for the SP register. > An unwinder using .sframe information would instead need to perform > above mentioned computations, as SFrame does not track the SP register. > > As for the .cfi_val_offset , ... instances in glibc it is > similar. > An unwinder using .eh_frame information would use the .cfi_val_offset > information. > An unwinder using .sframe information would instead again need to > perform above mentioned computations. > > Does that make sense? If I have missed something, then SFrame generation > would probably need to skip FDE when the SP register is specified in > .cfi_offset (new), .cfi_register, and .cfi_val_offset, no? > I think it is dawning on me: If '.cfi_register SP, reg2' is seen, this does not alter the tracking to recover prev-SP (doing so will need an explicit .cfi_def_cfa which we track). Whereas if .cfi_register FP, reg3 is seen, the FDE needs to be skipped because we cannot represent this information. A later instruction may be sabotaging FP, and later recovering back FP from reg3 via a .cfi_register reg3, FP. I think some SCFI related work was polluting my thoughts. > > Btw., besides the RFC Linux Kernel perf patch series "[PATCH RFC 00/10] > perf: user space sframe unwinding" [1] is there any reference > implementation of a SFrame unwinder I could use as base for testing > SFrame unwinding on s390x? Maybe a GDB Python script to do unwinding > using SFrame (not sure how to access the .sframe section)? > > [1] [PATCH RFC 00/10] perf: user space sframe unwinding, > https://lore.kernel.org/all/cover.1699487758.git.jpoimboe@kernel.org/ > We did have an "SFrame unwinder library" patchset for binutils, which we used for testing SFrame for x86 and aarch64 support. It wasn't upstreamed because a) it had open issues, b) in hindsight, it doesn't belong to binutils-gdp repo in the current shape. I will push it in a personal branch upstream and share some notes on its status and open issues. At the least, it should be helpful in testing your s390 enhancements to the SFrame format. >>> gas/ >>>     * gen-sframe.c (sframe_xlate_do_register): Do not skip SFrame >>>     FDE if .cfi_register specifies SP register. >>>     (sframe_xlate_do_val_offset): Add comment that this is likewise. >>> >>> Signed-off-by: Jens Remus >>> --- >>> >>> Notes (jremus): >>>      Changes v2 -> v3: >>>      - New patch. >>> >>>   gas/gen-sframe.c | 8 +++++--- >>>   1 file changed, 5 insertions(+), 3 deletions(-) >>> >>> diff --git a/gas/gen-sframe.c b/gas/gen-sframe.c >>> index 61c846f214ee..12b523a8d59a 100644 >>> --- a/gas/gen-sframe.c >>> +++ b/gas/gen-sframe.c >>> @@ -1136,6 +1136,7 @@ sframe_xlate_do_val_offset (struct >>> sframe_xlate_ctx *xlate_ctx ATTRIBUTE_UNUSED, >>>   #ifdef SFRAME_FRE_RA_TRACKING >>>         || (sframe_ra_tracking_p () && cfi_insn->u.r == >>> SFRAME_CFA_RA_REG) >>>   #endif >>> +      /* Ignore SP reg, as it can be recovered from the CFA tracking >>> info.  */ >>>         ) >>>       { >>>         as_warn (_("skipping SFrame FDE due to .cfi_val_offset >>> specifying %s register"), >>> @@ -1155,14 +1156,15 @@ sframe_xlate_do_register (struct >>> sframe_xlate_ctx *xlate_ctx ATTRIBUTE_UNUSED, >>>                 struct cfi_insn_data *cfi_insn) >>>   { >>>     /* Previous value of register1 is register2.  However, if the >>> specified >>> -     register1 is not interesting (SP, FP, or RA reg), the current >>> DW_CFA_register >>> +     register1 is not interesting (FP or RA reg), the current >>> DW_CFA_register >>>        instruction can be safely skipped without sacrificing the >>> asynchronicity of >>>        stack trace information.  */ >>> -  if (cfi_insn->u.rr.reg1 == SFRAME_CFA_SP_REG >>> +  if (cfi_insn->u.rr.reg1 == SFRAME_CFA_FP_REG >>>   #ifdef SFRAME_FRE_RA_TRACKING >>>         || (sframe_ra_tracking_p () && cfi_insn->u.rr.reg1 == >>> SFRAME_CFA_RA_REG) >>>   #endif >>> -      || cfi_insn->u.rr.reg1 == SFRAME_CFA_FP_REG) >>> +      /* Ignore SP reg, as it can be recovered from the CFA tracking >>> info.  */ >>> +      ) >>>       { >>>         as_warn (_("skipping SFrame FDE due to .cfi_register >>> specifying %s register"), >>>              sframe_register_name (cfi_insn->u.rr.reg1)); >> > > Thanks and regards, > Jens