From patchwork Mon Jul 14 09:43:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Claudiu Zissulescu-Ianculescu X-Patchwork-Id: 116226 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 54C8A385841D for ; Mon, 14 Jul 2025 09:51:26 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 54C8A385841D 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-2025-04-25 header.b=fHnx+CuM; 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=cgTTR4/H X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 29F0A3858C48 for ; Mon, 14 Jul 2025 09:48:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 29F0A3858C48 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 29F0A3858C48 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=1752486506; cv=pass; b=a/IZSrgUVa+7Z3TYoQmDVzEdDj79RUoYwWQzwVdiu7N4enOFMP5mMS84ZIfHcBlrFmgdp/QbY/Ict8PS0QmUwoPaJmrjJIZiw/mXeU9UlxfQI9OjymbilV7z90apoPPsEuDGUWBjJtMLBWZec2yDKr3UtnRIkQ+8gaVjcW7QDUw= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1752486506; c=relaxed/simple; bh=e2PUdoyDQ+AuMFeKQSWEf+vWLNN5Vk+N9lC/8pTDmmQ=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=fk54uu/eBQQrSTk7vWl8KjH/9EQoijsw9opY+ZJdY6F8tbLB0jWaQKrETp3cCLOCxH5uAv4OPRgHuqNYlF8Aht+gOF0JC9qin+VtnFyKjvmw9Vm/Da+TzwrSj3dtEmfPbdsPPXKMm0UgnPklqqbL4tiTP4VQ7gZRKD6nGvI1Gx0= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 29F0A3858C48 Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56E9Z4Sq001268; Mon, 14 Jul 2025 09:48:18 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-2025-04-25; bh=3NHaH9puQ5JY13jGocJwqLCnQcBGH4z/o+JgPMROMdc=; b= fHnx+CuM3XXQiQ3dI/5wD3F+6O04q1AXxzHBeBC8d30o75bEyy1ESQegpzjiCYQr 7quiWQj420LemDzWj+bpV7Zyew1hchkL/fcB3wVwxv+72ald5x4WFO2LYdCgrgq7 FKupdqGtDUdGHfgRjsZjIv5AmJdmGwba8DSJZvzdX+t2WvHJK5hMdM2QhqRazLaN H5BuGu3AU2qyR5PryZA3rcyxblr2WoT2tOgi2CfTNKUay4evdMYG1iddC6A4bEpK 3BahogQs9khHitTlJiHnL1A+8ao+jCXCgjsfsy3N5s1WsyZvnEExVZNkazG59IUi BvrAEetH9mI2w1PWHwQtTw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 47uk8fush4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 14 Jul 2025 09:48:18 +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 56E8aVRe029722; Mon, 14 Jul 2025 09:48:17 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12on2082.outbound.protection.outlook.com [40.107.243.82]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 47ue583sfs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 14 Jul 2025 09:48:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ce3ZfSYL+8jLCXJL2TmvXu4UxvMtcPnFXNsGdG2t/rHDDDe9HRv7MKPy+w++8xQ9h3uTdALHzkeqXwTZFEtyXPeSk1DKRMrfbhomkAsJOXjqharzsES5RTP0k83r9O7ueXcV7ptdeGv4qTqfDD7Mc/tuJG0TOxtF4BR7eJTwwV3wHCzQj/ozkX+IpPA8dYhD7kXhnV085GR6XAGuP6XgWpf6Hf9fUdOrvcjJ2ImigcbuKu8bSA7aNVp1oMrV+A4JK/7ATbia03trLyZwXo5x0kbSphgjbHSgPNck5xggHzhHJhtc8Xf1Au5Qrfftai62XylWKPH2YOYB7eWddkGd4Q== 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=3NHaH9puQ5JY13jGocJwqLCnQcBGH4z/o+JgPMROMdc=; b=fNPBKMC9gpqOQwzNhnxWEiyMi8GHgS0G7IuF4vjzHoIpaHwSjz+8qiqd/ThfO2disZzLrCrkI8PLYMRGVU5kzXTjJitTdWG8jTvkiDnkjcMw1IG1tzIamyT20cUVYtfsyhs7icHHd6YnMSWwvXj/QCUo/mA0IZruEt9oSeCo9kvJNSKoybeLJCwGpa86kBPQLnZ1Ffzdc22yjb88KrkafXxeqv/HjIrgW8XeFsfOeG0fFgHxZuJCweguolWZKnBFY06NGZCTepTgpUw8kyOfdMrTAHjsRQFPe+G2MzHHQPw9YQ4p5fECHv0wmLKnoCXGe4YkSDnT5Wf7d0H+QzaFww== 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=3NHaH9puQ5JY13jGocJwqLCnQcBGH4z/o+JgPMROMdc=; b=cgTTR4/HsuhDWm8eVxdAc0DEqkOICX32YuhZlROy91lcsPuYyur5/NBrBUUzgR30DnZN1m/KjPyYcjuQxiMVzO8Mfda4pUP7Sro2PgewfIl/3hNlxy47+HVTaQIkPz70kN5a4xRuq5lrpE0StcQV2AzYD5fgauaX2yA5D91juU4= Received: from CY5PR10MB6011.namprd10.prod.outlook.com (2603:10b6:930:28::16) by PH0PR10MB4710.namprd10.prod.outlook.com (2603:10b6:510:3e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.27; Mon, 14 Jul 2025 09:48:15 +0000 Received: from CY5PR10MB6011.namprd10.prod.outlook.com ([fe80::3aca:a3f6:e92f:782e]) by CY5PR10MB6011.namprd10.prod.outlook.com ([fe80::3aca:a3f6:e92f:782e%6]) with mapi id 15.20.8922.028; Mon, 14 Jul 2025 09:48:15 +0000 From: claudiu.zissulescu-ianculescu@oracle.com To: libc-alpha@sourceware.org Cc: sam@gentoo.org Subject: [PATCH 1/6] elf: Add SFrame support to _dl_find_object function Date: Mon, 14 Jul 2025 12:43:26 +0300 Message-ID: <20250714094805.43078-2-claudiu.zissulescu-ianculescu@oracle.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250714094805.43078-1-claudiu.zissulescu-ianculescu@oracle.com> References: <87bjpnmbud.fsf@gentoo.org> <20250714094805.43078-1-claudiu.zissulescu-ianculescu@oracle.com> X-ClientProxiedBy: VI1PR04CA0045.eurprd04.prod.outlook.com (2603:10a6:802:2::16) To DS7PR10MB5998.namprd10.prod.outlook.com (2603:10b6:8:9e::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY5PR10MB6011:EE_|PH0PR10MB4710:EE_ X-MS-Office365-Filtering-Correlation-Id: 26583d00-626d-4d83-a905-08ddc2bb8d8d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: 7PR9LzY5ZqrB+FV6BV1tCHF8aHL7LR9gWYLODWfHJEKcaklGsuVw/HbxBA5VI4v2gT+dyzrYE5cLiTj+lUODJHnBErIsoc8ftspSNmNdzcRnf0337PZxBnkak+ysALHZp6rDAgdISOsL0NaVdQTMhmEuwh79zA7Cv5/mCnXvvJ9HAac2dk/gFNUiu6yEYk55jwMrx8oVbPgz1in/xSKSsqGtkarSTUEM1M2DtUYsUVxGY5mj84FM5+vdBJ0oSevWl6fiJGqRJILHSthSRy3RBSR2d+5SSmIbeSVdDTvS0CxCTgL677Hnh1NwECXhX8c+ha759rhF4lfCmliEXGU2efIMHuoVbZiPRWn9xEgcPIKXGJkUqBl8ajgBtzC3WmREEORfxl0xLKICxnJ2En8xLukUo6lHcemu1YSn+gRzIve6OaQEO4SuBA/5+VbbfXJox0tehOsRj57pGlSVwTgKQkXMF0skuGVzJbDk212cMbZqSuLNXwFZqSjTz2N6biLRCbWCztwEIc37q0GA/3QEa3k64WaC+O+Ut2IFdJp0bh10qftZTTPM7TCMlnhAqkAGM5ufKUw/Zszwx0C8q8Ma/E4GVLKnj2cTpZlCTYtqtUhvOlXoUidYplXK5KCEzilyCNZ86Trg1KNNK0v/1N+J2OHWPmhX3MZ3lNuM8BT6obejRwnbHZktM1Yv5NCbN1xuYxSBiT6RFxGFfGCGcLhOYMlW12IBE5C5TcpeHjkQVpnzYsDq4MPpY8FMOtA3OVi0WFJwyhTUaNSR4Y8j2KNfr81bUThu7ATCZGAuLNeAOMmGz7q7QdxhGCFBGcsRI5UHQCeIcxRJ25K6BYahUhEaFvJxtglnhdMwPTVlLFFSVeeHGYj4mGpq0BN2qmWihJzDXYx0KVJJPEMgiaWrA2L7lDhbup6snrhWIPLaZT7spZe7odJxFhJSLyO5yANMcAfBnx6hFAn3JTgm7gDwQNJT/UczcpyIwtog4RDUxCni9IR7jLnF0QndsGWIQLs4YSYl/UqvBVk4lvQiOoR7Wzvo9hw5y86z6A7VoLPiu1zY+7hlDoOA+fREDJutdGBHZ/yZrthfsbqZtwJqGLsmGXLjgWaMsnq0uG8l3ezzef7bjtbKA9n71ODAxFJShP9dzdZR4h9oZYQtmmytxcwe65xHQ4WfnnWeffaqm5JzKFhP1P68FcGJxskeKrnqOm0pzw/BhLtemNePhyn1yGMTOE/qjBFGlVsPU+Fq3M7w25EcPTprWFXX4FmXqo0I9lCpXjSjMHXd1gZn6HRMfjpNNBQMlXfoJHBERdBZ4mmrODZH5Y4q+7X6zMkcZfXKfM+MRn8Y6hiqE/07vrQsfG20Wdf3bYpuVHRLX3EiembmHhHmRTVvtyWvHehkaBlAUh5szA8X6hJg/wNRRpZvKWdmtl/eRYjDhwbypeWMx+qtHABaMXw= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY5PR10MB6011.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: T7DknguiAGpkQrX5kr6I23geL1WAQATFp5a4g5kNuCj29GWJE3aeDcgKRRR2VN9uvxFlk1ew/eby6wBvxkczUmRFrLzVjVUxmmf2puhe/H4mdJTi8At1Gd6iyd1A18YvFf/u/SHVrLpHWhx7Kn2rsdNAfvI6KHC36hZqiyePOkfoZvAYkDbT9/5K102fsz/FxWQe0mX1FYsb7McEr0/4fDJGnH8vhNtJ+V9wD1NrakUmDswh01jvNIGTm+2YMzL2XVLROAFani+/xjwU4tPd7Hx0Z/NF57CsyvssrCmVfhCeXaQHPH7p2fMosNpGFb2bS0SUKaoZhqVfuAniRBkD++bvVRQDSwQRxtx7vJs3/8Qb10733Ud0DAIPnX3Ui8MQqjxnxY3qx4GNhWdaacCnUudLqJlNZBJ2IMkKrXkLtdNlm6sIPBILxxDRobKTNS91rpXqIXSyNBmLbmLntpfjUXhoKUmaxV7FDy5tJFF3c/+oAC3NWQbJP26aND4oJwZSKJXKPD7QTbpX95XVg0FgZoycnIppo9bSVyrI5+H3DnaF03UdUZec2PSrVkn49XnqkTlU0kEh+Cr5kRaOZ/h121Sp7S03F43lz1R/eFIOKr8/g4iBhjVrOcKuz9naqTDQuIewoMpCF++2zjLW7cStLn1uI0Fr666O21cjh8Mh6OpgQQ1aW6DdKcgPJrBaML5YwgisPMxnaPeRxN9NGjJz7PHXVtaQjknDso1AUbBJyCV/GaryUUBjdvNREehNQZByPXFPAQaaeHCOcoTY4hR7C97Khq39+oOjtH8qrE9CkhFlzdJ+OazYf+D1+Pn9H/MF7DW2BOdQptEnKmS3B77WzPec3rtPReN9CcKT4fi4/66aAv55T8Jc7ue66sHofFZo1bqDogMeoc7ITtAP0foKNBXHNHlHSqKvbVn6HdAmXgp7bR+QkkzCkAdiLBHHbxj4MFR3oOmQyDzSqvaiGuiSRNDlePlqwh6uTCLDGHVkfXQ5r0Gi8of+HHT48pjukYDkUK6hJQwnp5A/nMX7nmjtsTEY4ZC6GqX0ZfZGKCH3PJiZNYmLOpLN+n+hnb/A0AoXwkrtGznN4g21TapJw5drke/ne8JKxY1ZEVilSvibXnmbs9/FLpco/5+weA/24aDpIaqv3hKg9pF9sBI8FVzYa87OUX1NtnCAsdOs7B75qp7vKcGIs5fRpn0dOFzJPHKz9GALuMumWsu2OU6Fy/RIOvRuIViE8bTaZPXTToSJdpG2s1eghsd5jSPjW3yhem4YMykKoW9wXULB4WzyjGOl1uLk2L6mDC/+c3KBb0Wx+Dhn6B6ianNnskJ47xZBjtH5epzwBa67tk82lMK5vo6lgQyGOBz2mdfa9Rs7wSw020bpTQmfHJTO1OwSqlRAjwQ1ZLVroZlfFXnMSB7+QXL2nxffW48FRhsp7r3a6O3VcMZW21cy/GaSOMM/i9p4dq4zIMO5RvlaR88ZdpPGopkzm8y46ETbNPtoSVYB35HZHng6Yi84tgtpr8vi/ElJAP6u9kykd+Z/2rpkJPeUQImKXKzseapTPkAjUywlv1L05oK9BxzZvNINFn5yva3VJ2hkzyzszGaV32FZmeT9YiLNxU677p7JSITFZTdoObrMKExd5qJFJmpkN3fJ76jkm1Ka X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: g/Beow++KxoJurA0RRDM65j97WgEUBKlEWkjfuSOCFwosXOEn/RryOZQtA4Ko+rW30GNkFr0nRGy+eKwzBaE3fZY5U/x/ZCH6jU+4jyhpKQZ1JbI11CgzNB/7ZssBE2S5ExF58DP9Km/pNKr+IPeu6LUqRQbQgqDHbtzEZIioRku3Sngu/hdj1pZeadwbjrMvWKQL4SYBTYB/F+LBw041jc3QgDvhNXC/z6OslyXarefz3NjS+sauTKHfzVYRtTWEz7mjNpGUUDaa5XrfIShIJ5099UHuSpmhGeHPMvUiWuB0tKzWg9R0p8PuAeOyQdJszS63Yj7x0mmGWP049qgJ6ExUalv/2a/V0Wo/uFsoWxRUzu8KJIGanJ79qtpXRINtchaPJctlNP6Oi9oKB4w0la59uH7a2rNe6lmbrN0/QFD9Oti6Mz3vZWYGhYHc6ZtgMLJSGSLcqYRA9fjLoKnMHkQVzcMEB+tTQcDZOojZRfPCI/N1OpJOuPbeUeBR8LMAySEO4nld5xunoQuBQU4UX6ua4IQlocMDz2Lmw0IkY4v+VPcPlPeOjMyZ4PHzPUOcAWl4DIxsJHb2q+uZescZm4vnVQynRuR27oXBgoY1Bw= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26583d00-626d-4d83-a905-08ddc2bb8d8d X-MS-Exchange-CrossTenant-AuthSource: DS7PR10MB5998.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jul 2025 09:48:15.5757 (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: xDy/BuXphJr9kWWmTvTELW6vG3HyMTeKQ1L+03/OhOUUSOxLbhtfK/A0tIvVXY1KpJ/IwDz2bztTM94ZFd2bML4HbauvATeHvwA3Vm5HdbPXDUouj/ZjSGE55ayjNZAp/Uvzg5DmMLBXyrhT9hbAcA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4710 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-14_01,2025-07-09_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000 definitions=main-2507140057 X-Proofpoint-ORIG-GUID: IPE_pfdnYDNIiNdBawksUsbzTb0Tc0h_ X-Authority-Analysis: v=2.4 cv=Of+YDgTY c=1 sm=1 tr=0 ts=6874d262 cx=c_pps a=OOZaFjgC48PWsiFpTAqLcw==:117 a=OOZaFjgC48PWsiFpTAqLcw==:17 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=GoEa3M9JfhUA:10 a=yPCof4ZbAAAA:8 a=20KFwNOVAAAA:8 a=h_Blgzv6WJHfIOoWkc0A:9 X-Proofpoint-GUID: IPE_pfdnYDNIiNdBawksUsbzTb0Tc0h_ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE0MDA1NyBTYWx0ZWRfX2K4mTnaIT8kr BCj5Cx+1TpUtYsgdHAp7FvMXoQLqy2koRUcgBYWlZQnE+W+EQQsWl94WFn6wlEU4wDA3q16xHX0 ne/g2/bum0fH5TeAIWbI1Hs3Vvko+vQDUeIMerzt2Dt0u7+lL4s8mHwphHJqRS2k00gFzZ5O3yG GySb6HIHQqLx9aZHuAMonhPbN4ZEkzYMEgFfQNqr3xFfzEOB+YLKehuDsFIDXkLSOoInPcRFJVL Dyd75pcj+zikouFyw/MDjinQwtEQ6QNAYN+NqLo7qJw40w9e3CcAXpzPRXSaIbTwW0T+VIs1Scm bmlUvXoREaBclmrpRCEGSlWtMk9zsLZ50fKW6qNdgvn6xMS/pgM5bdG6Iptddc6K50iG4WI2HlZ k1qHd7H51DY8VheJE5kibQVSZr/cooogtNAQahrM4BMDnhqVoHFFyq/QSD2naHK5I08ef1mB 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_DNSWL_LOW, 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 server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org From: Claudiu Zissulescu The SFrame provides information to be able to do stack trace is now well defined and implemented in Binutils 2.41. The format simply contains enough information to be able to do stack trace given a program counter (PC) value, the stack pointer, and the frame pointer. The SFrame information is stored in a .sframe ELF section, which is loaded into its own PT_GNU_SFRAME segment. We consider for this support SFrame version 2. This patch adds the bits to _dl_find_object to recognize and store in struct dl_find_object the necessary info about SFrame section. Signed-off-by: Claudiu Zissulescu Reviewed-by: Florian Weimer --- dlfcn/dlfcn.h | 10 +++++++-- elf/dl-find_object.h | 52 +++++++++++++++++++++++++++++++++----------- manual/dynlink.texi | 17 ++++++++++++++- 3 files changed, 63 insertions(+), 16 deletions(-) diff --git a/dlfcn/dlfcn.h b/dlfcn/dlfcn.h index 4c2bdf9b64..bc73180a20 100644 --- a/dlfcn/dlfcn.h +++ b/dlfcn/dlfcn.h @@ -217,15 +217,21 @@ struct dl_find_object int dlfo_eh_count; /* Number of exception handling entries. */ unsigned int __dlfo_eh_count_pad; # endif - __extension__ unsigned long long int __dflo_reserved[7]; + void *dlfo_sframe; /* SFrame stack trace data of the object. */ +#if __WORDSIZE == 32 + unsigned int __dlfo_sframe_pad; +#endif + __extension__ unsigned long long int __dlfo_reserved[6]; }; /* If ADDRESS is found in an object, fill in *RESULT and return 0. Otherwise, return -1. */ int _dl_find_object (void *__address, struct dl_find_object *__result) __THROW; -#endif /* __USE_GNU */ +/* SFrame stack trace data is valid. */ +#define DLFO_FLAG_SFRAME (1ULL << 0) +#endif /* __USE_GNU */ __END_DECLS diff --git a/elf/dl-find_object.h b/elf/dl-find_object.h index e433ff8740..9aa2439eaa 100644 --- a/elf/dl-find_object.h +++ b/elf/dl-find_object.h @@ -43,6 +43,7 @@ struct dl_find_object_internal #if DLFO_STRUCT_HAS_EH_COUNT int eh_count; #endif + void *sframe; }; /* Create a copy of *SOURCE in *COPY using relaxed MO loads and @@ -67,13 +68,14 @@ _dl_find_object_internal_copy (const struct dl_find_object_internal *source, atomic_store_relaxed (©->eh_count, atomic_load_relaxed (&source->eh_count)); #endif + atomic_store_relaxed (©->sframe, + atomic_load_relaxed (&source->sframe)); } static inline void _dl_find_object_to_external (struct dl_find_object_internal *internal, struct dl_find_object *external) { - external->dlfo_flags = 0; external->dlfo_map_start = (void *) internal->map_start; external->dlfo_map_end = (void *) internal->map_end; external->dlfo_link_map = internal->map; @@ -84,6 +86,11 @@ _dl_find_object_to_external (struct dl_find_object_internal *internal, # if DLFO_STRUCT_HAS_EH_COUNT external->dlfo_eh_count = internal->eh_count; # endif + external->dlfo_sframe = internal->sframe; + if (internal->sframe != NULL) + external->dlfo_flags = DLFO_FLAG_SFRAME; + else + external->dlfo_flags = 0; } /* Extract the object location data from a link map and writes it to @@ -92,6 +99,9 @@ static void __attribute__ ((unused)) _dl_find_object_from_map (struct link_map *l, struct dl_find_object_internal *result) { + /* A mask to find out which segment has been read out. */ + unsigned int read_seg = 0; + atomic_store_relaxed (&result->map_start, (uintptr_t) l->l_map_start); atomic_store_relaxed (&result->map_end, (uintptr_t) l->l_map_end); atomic_store_relaxed (&result->map, l); @@ -100,23 +110,39 @@ _dl_find_object_from_map (struct link_map *l, atomic_store_relaxed (&result->eh_dbase, (void *) l->l_info[DT_PLTGOT]); #endif - for (const ElfW(Phdr) *ph = l->l_phdr, *ph_end = l->l_phdr + l->l_phnum; - ph < ph_end; ++ph) - if (ph->p_type == DLFO_EH_SEGMENT_TYPE) - { - atomic_store_relaxed (&result->eh_frame, - (void *) (ph->p_vaddr + l->l_addr)); + /* Initialize object's exception handling segment and SFrame segment + data. */ + atomic_store_relaxed (&result->sframe, NULL); + atomic_store_relaxed (&result->eh_frame, NULL); #if DLFO_STRUCT_HAS_EH_COUNT - atomic_store_relaxed (&result->eh_count, ph->p_memsz / 8); + atomic_store_relaxed (&result->eh_count, 0); #endif - return; - } - /* Object has no exception handling segment. */ - atomic_store_relaxed (&result->eh_frame, NULL); + for (const ElfW(Phdr) *ph = l->l_phdr, *ph_end = l->l_phdr + l->l_phnum; + ph < ph_end; ++ph) + { + switch (ph->p_type) + { + case DLFO_EH_SEGMENT_TYPE: + atomic_store_relaxed (&result->eh_frame, + (void *) (ph->p_vaddr + l->l_addr)); #if DLFO_STRUCT_HAS_EH_COUNT - atomic_store_relaxed (&result->eh_count, 0); + atomic_store_relaxed (&result->eh_count, ph->p_memsz / 8); #endif + read_seg |= 1; + break; + + case PT_GNU_SFRAME: + atomic_store_relaxed (&result->sframe, + (void *) (ph->p_vaddr + l->l_addr)); + read_seg |= 2; + /* Fall through. */ + default: + break; + } + if (read_seg == 3) + return; + } } /* Called by the dynamic linker to set up the data structures for the diff --git a/manual/dynlink.texi b/manual/dynlink.texi index 3a4864f146..cd05107e6c 100644 --- a/manual/dynlink.texi +++ b/manual/dynlink.texi @@ -545,7 +545,8 @@ result data to the caller. @table @code @item unsigned long long int dlfo_flags -Currently unused and always 0. +Bit zero signals if SFrame stack data is valid. See +@code{DLFO_FLAG_SFRAME} below. @item void *dlfo_map_start The start address of the inspected mapping. This information comes from @@ -562,6 +563,11 @@ This member contains a pointer to the link map of the object. This member contains a pointer to the exception handling data of the object. See @code{DLFO_EH_SEGMENT_TYPE} below. +@item void *dlfo_sframe +This member points to the SFrame stack trace data associated with the +object. It is valid only when @code{DLFO_FLAG_SFRAME} is set in +@code{dlfo_flags}; otherwise, it may be null or undefined. + @end table This structure is a GNU extension. @@ -639,6 +645,15 @@ information is processed. This function is a GNU extension. @end deftypefun +The following flag masks are defined for use with @code{dlfo_flags}: + +@table @code +@item DLFO_FLAG_SFRAME +A bit mask used to signal that the object contains SFrame data. See +@code{dlfo_sframe} above. + +@end table + @node Dynamic Linker Hardening @section Avoiding Unexpected Issues With Dynamic Linking