From patchwork Sat Mar 8 07:38:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Indu Bhagat X-Patchwork-Id: 107541 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 56BF13858C2F for ; Sat, 8 Mar 2025 07:45:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 56BF13858C2F Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2023-11-20 header.b=S3Dv2aU2; dkim=pass (1024-bit key, unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com header.b=AoRJ8IP8 X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 4328B3858C78 for ; Sat, 8 Mar 2025 07:39:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4328B3858C78 Authentication-Results: sourceware.org; dmarc=pass (p=reject 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 4328B3858C78 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=1741419569; cv=pass; b=UdzA9k1gH4dXMIcD7ZeROy2Cubiadg0aN/DTH9qV7ueaNaxHsHEhVRZVJ3xeylmIoQOux/SxJP9g6Jdh0OjZ1qx4w3l/7lKzfL0RuU2V4z+pRMK2bgmdOrDwCzZSu+/KR5vk8em9p1vXHPjTo02dzXl2MZLkv3N+2iGdzttpm9Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1741419569; c=relaxed/simple; bh=fGoF1vC0Z+vYadV/Bb2ciw9o5mIkKZTfgYXOfEclk9A=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=FEOALJ+XFTIxeJfE9JRtu9tu9mqNjtjW2ir3HlTRtMcWZtZZqWJl/Evnnv2Kd7RBFtWHtwDzS7Gg+PbbsucIhZ97TDdrrP7B+53nmLH1VxBLRwmnxN2MD9rppwJLc/v/eFO3jIx5eIR3w5sqqdxRptDeXMgqkexKSEowRVBgXfk= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4328B3858C78 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5284S5aT017151; Sat, 8 Mar 2025 07:39:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= corp-2023-11-20; bh=hB6DHBboAy/n1GJc6xUKRx1X4HVYue+9uNb5Dj6Zuks=; b= S3Dv2aU2LHKHI5OJ05oWefNuG2DJEJS9QURxuOJvbrC/YT2StDgRFKC2B7LpCvOy FAfzWnS1vHOcRH4GtzpylM48SY4O0lAzQ+3jVvqJn1faU4VZSLX5Ocx5elZx8n5I jMCN1KS7zSyAhXOy52eCjdb/G8v35qB/vvpNFgQAMnC90DiOf8+LP9Z0yzFYWR8Z n7QcCDk0IrZ2ZlLTxtsBL896IRuOlJPTlhIs9ptblKqu09ONx/YES8ctVdE8ossI J2rbCpej2OPyZ2Zi/9qYsCEblHEhhhzZu+jBNEunGr19Jsi5+AmKQUHXx3sjsu/x 50JUfp9rMrwC85Cd0yuhqw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 458ds9g3ne-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 08 Mar 2025 07:39:23 +0000 (GMT) Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 5286ATpD026182; Sat, 8 Mar 2025 07:39:23 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2049.outbound.protection.outlook.com [104.47.58.49]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 458cb5wp7c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 08 Mar 2025 07:39:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=H3dtK6J0+JIEVlk2LlFyeSu+bMIL93lAU+7V1D+BbA6Y+UbbZf/rglI2kDlkCLPCpgRWuf3B0sX15wP+xmamaMfH6OuwSbZXl0fyKbJBDrx1/dTTmt3/9ddwncPGxp4dgzh70CxKP5FVdS6xu8QSKl0pkIBcXaOlo6PPTA0INaDTu9VAReGNewtU6FTPx6Rv8efelY8Fo6/ICBvWoDE7ZFQ03swEf3sZ3oVok8G89Dmj7VUeGYRfrz18H92VvvJkBM829Bs6jT+Nz5qRLLvEmu+PGvK8p+rfSpNLMzi2xuy2OP+mAgXE0v361VDceADYwXLrTJVXe3sB1MDmaH5GKA== 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=hB6DHBboAy/n1GJc6xUKRx1X4HVYue+9uNb5Dj6Zuks=; b=e/jh/+VBUydXlaOGb1rKUhnH8E4zFLxk29Dd9vZLfnrYPELR8MNUNcY4XkktPrkRP7XxKG3PIlQCG4CvgSA+EODT7q5/ZQhKAD6604iYQcpKOxliTvc9yMNNSNuDh3RVEsxuYtgPVOQsIjDAUuE0WNK/M7ZukofXLFyO8SH9//QJsvVfWQ4Mav3IPmoMrQ2h6g8ENWoskxIylZYSAcEllGv3DvCEb9ysO//xKiHXGI43Fp/PZ04aqBJt8+tju7QNN2QSJoksgj6tD8dDwCMMLC84M3V0E+KQM4d+HmOkoV2S1HP30GSwHNX0atWQCiPpfmyowOjGHu/8fZjOFwoGeQ== 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=hB6DHBboAy/n1GJc6xUKRx1X4HVYue+9uNb5Dj6Zuks=; b=AoRJ8IP8Rtb8PdAkUCsVU4BovjvmJo7A9VJDZ66UR36c8MBthAkXA3iyL3Lf9Uc77e13oN+phq8WPQCWX/xuLfwyJhd0mifY9QNt6wddWpKZcDB//BORmP4qIZ5IWIZHFXRcbHFdzdwJn59fVxcyKzy8zxoXPlbqz75o+LoeVQE= Received: from SA1PR10MB6365.namprd10.prod.outlook.com (2603:10b6:806:255::12) by PH0PR10MB7080.namprd10.prod.outlook.com (2603:10b6:510:28c::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.24; Sat, 8 Mar 2025 07:39:19 +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.8511.017; Sat, 8 Mar 2025 07:39:19 +0000 From: Indu Bhagat To: binutils@sourceware.org Cc: nickc@redhat.com, amodra@gmail.com, jbeulich@suse.com, jremus@linux.ibm.com, Indu Bhagat Subject: [RFC 4/4] ld: bfd: sframe: fix incorrect r_addend in RELA entries Date: Fri, 7 Mar 2025 23:38:53 -0800 Message-ID: <20250308073853.78738-5-indu.bhagat@oracle.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250308073853.78738-1-indu.bhagat@oracle.com> References: <20250308073853.78738-1-indu.bhagat@oracle.com> X-ClientProxiedBy: MW2PR16CA0015.namprd16.prod.outlook.com (2603:10b6:907::28) To SA1PR10MB6365.namprd10.prod.outlook.com (2603:10b6:806:255::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA1PR10MB6365:EE_|PH0PR10MB7080:EE_ X-MS-Office365-Filtering-Correlation-Id: 59a8225d-e6a5-4213-fe47-08dd5e1455fd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|366016|10070799003; X-Microsoft-Antispam-Message-Info: Uh+uNcMFBbgHTaQaATpxxhbHjpxb5h19uDKU8KciRurN2gdM8jjp/iU56vNx2J9jbgzsP/zUhNFOpMmiR9UZUoEVebi8KjSOPoqpkLYFh/3DjBVRN/h2GtcFmeDgVUyPlVU4bhNDMeEGpUQrerWmnoiFj5YB0JBMrp1HFDyDcw0bNkt+ySYEdALR/ZHU0VGjFhU9HlNJ77R/hCj4w/h9aXCnECwyCFy06hI0GAaHMXGDUfTpr+MPmkRPYldwJRx0eE5jrmetYSbNC0acfGZ+JgifsZudac7hd2RwNVACSCJfRD7BSR+mAra4UZhKv4qxqwvbKnC4A3+a+xAcvqGgDAbNWWpKGn0ez7u2Et0H3JfsvnkBdFkDss6NOqTIqFpoWlriPknBX0ymB3TUeVWQTR35OSHcdCaC3p1qFnJeNKcTeh35kh85EP0AgSi9vuDTd0/h1P2zgrPkERq49YAOexhIte6ecGFQlR6GPlA89FtbIfE3tIAurdxIX0HMP0A6KOtIVdQxPt/LX98cEKSsQMZiR+ovkgTUXeOLcnI89mryGdYmrURLpl7BKEx8lJCqPYeZCpeWlXWHpz5uCLZOt/l6yqn/uKTB0W99Wyh5jxvnO5dfdbtCbDKaXiThzQyJ0lRJoXU9iEE5PpJVuHGvQxNxDdFYTncxgsPymhIeDtgfCbT0I3ota9lHAahQNgkEK+zJTGr6NSsUTbKy+fJDF/dKDiqP0UzKX5/Y5V59v5wDBeudGN8l9ECQ9zCMiGf0O3Tas7mcGygd1RzvVRqpZJozw6MMX3KycIWg3+MsXWEVBDQWpn1VnUTcgeGZhDlcbbCv/ejKjmmehaes9wejCcgVq5hOkTUb5m8Ozxll5RiH/AK6NVlHu33fj0Em5AqrHCcz6W96H/JVrYPZ2merIMdoa8BIjbZhaFPI17DwujG+XDP/xxTcAyqZgIXSEPhDlBmM7A2zR9V+9jSIdLtJdLGUxi779sd/xXYMl2YnJ6MiiZRSe48fuK2JmTgWNYrXJlUoyemg6p0o6JdmZmkkmhOMF5h689RzXavR6OjxeBBMbBcPBzVulX4LQyr0pALVuXEXbmdeHw00rEwymCl2MwCvDQ0B9GrAvZDoNrNiPrQwPXi49EcaYpeFQ2NhlWH3Uw7vsHCOxQ16+SB+mqRM7kCQcjXKvQMGJZ+vbHZ+Sh+i1T/Lk+CCzeIQSC2JhWAjmlycopYPQBGVvHl+mZp4mlVs3k73vDkjT0J6s8Vp64e+NSJUtpPgBA0NS/lL2MPpZqlAI6GRBVgM7IzjodWAB1FYeQc3g/9tkQ8USvswh/TnHvOPGReuL4tTRFw5GBnXouK/nNpvbqVy8y61ZQnJJOgWbegvIyLhhwn6fKfil8Wex1y5QE5Tp7ABMonF4DET 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)(376014)(1800799024)(366016)(10070799003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: t9fTDNoxecLE9G83ksn8Df834KWBfILj8CCgN7yq5EongMUqDmFeiTDLbXebA9/n1S33ARw1+td7BuRKYbbzvj9TWgR7mU1gAspMmTHDVgbaMShKK+NG96R5fUe1CSDl+2jqaNokWqgXzkCV7KyCwQtrnYEp5si3Fa7pii14VO8iJr9XLCxCAc2IRvoOASNQ1vpGZSAfLMPUdR+8oFQ5gbSN3krc4To/4Hk3VgU8vfbqElP7G6LiqBk+RFfUNDX39TNBFY0BaRcjJSaBRSpBGU36Uj8t+U6n5JAa2mdYDpId9tabJT9BpWRy8TudQRG+6tJIbVkLMyZJXYcYveVHKWUGnI5guSJ+xBL6x732GmnTKOHGJOIefpgJ7cZZteRV04tOQa70ZXKDYQ8/e8Umbu7MTIHy6rJ16l9bMbMVOhV8rzmUasJCpRtJOBA5v1OPAkKzJy8ab1kHBrpLwpm29ZZoKjcwM6IjgxdYYG5eEg3jf+Wah30TXck7tLTRnwJpnfh8H2nwY8VHHd3qw/ZqQUwCZYDgvK9JjnBIo1A9go1f141NIztwzbOMiabMkydCb2NxlU6h8DGxETpwT+C9kvDOvlS/QG0PYPXQ11I0p2WzaorL6r7gBcv2lJGGfnMsKu1D+QbW/w/c1Y+WvjJrOlhJEBlGZJIF31CFO06JXIhT1k+Y0dthGW1GKNaiaIENk8N15r6TKeTDkQeThgNVD2ekRDDXbwkSCI1JqwZAZgGIooLZjcC1HInv8rDHtMLeXn7EMgYkfV5non27QlZtmhQEfyZnzE8k0pgoI3dK+fPD8Ut4sIwjo14SS9TaYTIxe6If93Szl5HbB4trV6PP7AsfwrBTQSq97TwZlTzi37tYkQRwJh/E2Q95d2zqrKqiDy6/OiCZo+q35CmFjtWVXUAS4NlgSzBCdRbApXnslwuMB92rL8Enwbr5EEIofB8cWTNa0qO2b9BeTL2Uwkq/pxDbckZb/pvWN3kAOl2vou6Odk1SSrrdqqNCIhvBNfVMe2uWmQxWVKv39qd1Sq7WTjblmFG/giPcwStEwte+IqVih27vHw3iMwyqmkMxcYm+EFDG/8CYukbF0ReIBgvsl0A0VV0wuooZZjlgrqtEmtC7tFBVa4yjcnRi5DDXyh42PpuWeVF/vIF+dYNvBMueiCfdi1+tgwUGvgAyHiDGLkzE3fDlPYUCdrzgutycVsbVFMmgFpVEv3FpEMATnMBZrYmpVqXrry1vRfMuzeuetMJDDNdWcDFxXDhKTwegli6KXnMa4xAqp6DrwypFfjWqxguTtrvQJegUk6y5VwqHsFThM32dRK95n7d5qR7udPICXEifbd0eRLeoaZXj8JFDG44njd299ngKuwYjyBztlUfjzSKgkaf/iG4u//3TUESY2COTeJ8cjMNZoTT76HmYzeze6gwQqP3sYPatYSU3OJj+wmD1rwp+qcYYNzxhtPSn6adWPnMIddpjUT6yaaKOGvOljwuObBVZ8TYe5RpmF0xcYrXtla3kIbSGMZm1b9GnWR9EAqjlhrxfddjuC4yszotoE4SMJ5mqduLEWewwfqy6confw/FE71fFmhQmCW2cVFiQyuhWU3+uEptsfI7H/Jyvf5/5mx69urCYghK0Tck= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: qkn1Ur18fh0nHer9BehQnDwTsZn+FAzWT7vgOlAK6csVyd1WuLZSUqUfpBFQV3vvcfl8l0tv/8yikB6Y9KR5HID+FNYs98QIAZacjy8PS5f977YTOZ5Npu7+5JvI6SolfiRn6xRUCZizzd4HemCzff/y8UaIiWHC9A2eaCDdjJmi/CdnOMEqOJtEwo6nLxLeAzeyxCarK4cX0isVmWSsLP2/eqFkmltLvXrOPkFvhLckUH5cR8UlNfbbGYwDYBsfZrgTOwKAYSjlxoJJ/2i4Aq+Lm8EfcMqpqve8Oxoe/pMMddSs70xiQy6WR0LyhhCGy1fdz4nJwGH55t+kjKpMbw3iYPbE7v6LDsf6MeB0tyd8PT1kgtVfs/GNlZe9djLy6pYlBfIOLHrkyKmhBp33THJ0Ka8+nJEbm+mTTAJ211RPIemhgXz2bXtCGkBbq07ZtdFqTvggCOLe1NTBgTEVxY7cngqZe3tvguGBtPQzAbodRAzOZFQXPxhdhaIGtw0Xl0WVNRvehllwnPElXmfxyxZeLTlbs2xRGKrk6O4K0C6aHQ4wpdJw1U5WYxQBWEq8DkuoWhICAxXgEUzmorjvRl5LGWBElS+guVZGqaG6Ti4= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 59a8225d-e6a5-4213-fe47-08dd5e1455fd X-MS-Exchange-CrossTenant-AuthSource: SA1PR10MB6365.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2025 07:39:19.3327 (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: C5VQilutr0XZlCYaRTL89rz496tvHM/BTAcJ1z2N41zY7oZwoH1v/1Z3TmhrlDany60HBV9Ohw7rXk1pY6tGGA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB7080 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-08_03,2025-03-07_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 mlxscore=0 spamscore=0 adultscore=0 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2502100000 definitions=main-2503080052 X-Proofpoint-GUID: uRb6Kb9kZWBmsQANMQoLXhhMMB2z13Xs X-Proofpoint-ORIG-GUID: uRb6Kb9kZWBmsQANMQoLXhhMMB2z13Xs X-Spam-Status: No, score=-12.9 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.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org With the fix in GAS, we now use a different PC-relative RELA for updating the SFrame FDE function start address: The value is the offset of the start PC of the function from the start of the SFrame section. When RELAs are output (e.g. for relocatable links), there is need to adjust the r_addend. This is because the r_addend values still have the correct values for the _input_ SFrame section being linked / relocated. The values must now be (before outputing the RELAs) with respect to the _output_ SFrame section. PS: This patch should be merged with the previous commits before final commit (Otherwise the tests will fail). It is currently a separate patch as I would like to check if this is OK to do. If such a "addend fixup" is risky or wrong, it seems we will need a new type of RELOC for SFrame sections. bfd/ * elf-bfd.h: New declaration. * elf-sframe.c (_bfd_elf_sframe_section_addend): New definition. * elflink.c (elf_link_input_bfd): Fixup the r_addend of SFrame RELAs. --- bfd/elf-bfd.h | 2 ++ bfd/elf-sframe.c | 31 +++++++++++++++++++++++++++++++ bfd/elflink.c | 24 ++++++++++++++++++++---- 3 files changed, 53 insertions(+), 4 deletions(-) diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index f62570919d5..fd301638baa 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -2551,6 +2551,8 @@ extern bool _bfd_elf_merge_section_sframe (bfd *, struct bfd_link_info *, asection *, bfd_byte *); extern bfd_vma _bfd_elf_sframe_section_offset (bfd *, struct bfd_link_info *, asection *, bfd_vma); +extern bfd_vma _bfd_elf_sframe_section_addend + (bfd *, struct bfd_link_info *, asection *, unsigned int, bfd_vma); extern bool _bfd_elf_write_section_sframe (bfd *, struct bfd_link_info *); extern bool _bfd_elf_set_section_sframe (bfd *, struct bfd_link_info *); diff --git a/bfd/elf-sframe.c b/bfd/elf-sframe.c index 9c7bf099649..c893d406ce8 100644 --- a/bfd/elf-sframe.c +++ b/bfd/elf-sframe.c @@ -574,6 +574,37 @@ _bfd_elf_sframe_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED, + out_fde_idx * sizeof (sframe_func_desc_entry)); } +/* Get the "canonicalized" addend for the symbol reference corresponding to the + relocation at RELOC_INDEX. E.g., for the following reloc for the SFrame + FDE function start address: + Offset Type Sym. Name + Addend + 00000000001c R_X86_64_PC32 .text + 1c + 000000000030 R_X86_64_PC32 .text + 3b + The canonicalized addend are 0 and b respectively as the relocs are for + symbols (.text + 0) and (.text + b) respectively. + + This is used to manually adjust the RELA addends to ensure correct values + for relocatable links. */ + +bfd_vma +_bfd_elf_sframe_section_addend (bfd *output_bfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info ATTRIBUTE_UNUSED, + asection *sec, + unsigned int reloc_index, + bfd_vma addend) +{ + struct sframe_dec_info *sfd_info; + + if (sec->sec_info_type != SEC_INFO_TYPE_SFRAME) + return addend; + + sfd_info = (struct sframe_dec_info *) elf_section_data (sec)->sec_info; + BFD_ASSERT (sfd_info && sfd_info->sfd_ctx); + + return (addend - (sframe_decoder_get_hdr_size (sfd_info->sfd_ctx) + + reloc_index * sizeof (sframe_func_desc_entry))); +} + /* Write out the .sframe section. This must be called after _bfd_elf_merge_section_sframe has been called on all input .sframe sections. */ diff --git a/bfd/elflink.c b/bfd/elflink.c index 895fbb0206e..6bce2966359 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -11939,7 +11939,9 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd) last_offset = o->output_offset; if (!bfd_link_relocatable (flinfo->info)) last_offset += o->output_section->vma; - for (next_erel = 0; irela < irelaend; irela++, next_erel++) + unsigned int num_reloc = 0; + for (next_erel = 0; irela < irelaend; + irela++, next_erel++, num_reloc++) { unsigned long r_symndx; asection *sec; @@ -12070,10 +12072,24 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd) } } - /* Adjust the addend according to where the - section winds up in the output section. */ if (rela_normal) - irela->r_addend += sec->output_offset; + { + if (o->sec_info_type == SEC_INFO_TYPE_SFRAME) + { + bfd_vma addend + = _bfd_elf_sframe_section_addend (output_bfd, + flinfo->info, o, + num_reloc, + irela->r_addend); + /* Adjust the addend in the output RELA. The + input SFrame section has already been + relocated. */ + irela->r_addend = addend + irela->r_offset; + } + /* Adjust the addend according to where the + section winds up in the output section. */ + irela->r_addend += sec->output_offset; + } } else {