From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id x+TjFzh9WWhu1xoAWB0awg (envelope-from ) for ; Mon, 23 Jun 2025 12:13:44 -0400 Received: by simark.ca (Postfix, from userid 112) id 2DD6A1E11C; Mon, 23 Jun 2025 12:13:44 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-9.0 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED, RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE autolearn=ham autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id A1FCD1E0C2 for ; Mon, 23 Jun 2025 12:13:42 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 53625386B898 for ; Mon, 23 Jun 2025 16:13:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 53625386B898 Received: from us-smtp-delivery-114.mimecast.com (us-smtp-delivery-114.mimecast.com [170.10.133.114]) by sourceware.org (Postfix) with ESMTP id 5454D38697FF for ; Mon, 23 Jun 2025 16:10:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5454D38697FF Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=labware.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=labware.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 5454D38697FF Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.114 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1750695042; cv=none; b=c84Nt5y2IdCHpkw6e8WcmxVTrq3wUsTPA4PvYVfBLo566zJoNbcvAK2exigIExr/iXPVqjsQbd0BZr90MFZg9IdZtd/25g1qTyqS7GluSOtify6GSfkP0PQgrx3fkG6zJ1zbP6/KwmxqCsLyIpaSmA6zeBHENQyZkssRNp9JrVM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1750695042; c=relaxed/simple; bh=yvx1Oi43n9PgorxARMb6PGfjJwYaAGltu2oNIm9GHU0=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=rHViEQzUwOGhtANHBZHZq2g5qmVWAD7F38qUx/dRDRDmrp3+J7/902cdwqN2k09/djjDrfHj9PnAZSAW6DsDe+LapKYB/BImll8ssyNDZvL6rgyYWDmzYEu/5i4f5aR5dmO3PnnVpZnQC1oco6gJu2M7OGtUa46WwWOGE4W1ub0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5454D38697FF Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2108.outbound.protection.outlook.com [40.107.243.108]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-618-9IB98_5AOCqDN28RmphtaQ-1; Mon, 23 Jun 2025 12:10:41 -0400 X-MC-Unique: 9IB98_5AOCqDN28RmphtaQ-1 X-Mimecast-MFC-AGG-ID: 9IB98_5AOCqDN28RmphtaQ_1750695040 Received: from SA1PR17MB5365.namprd17.prod.outlook.com (2603:10b6:806:1d8::11) by PH0PR17MB4637.namprd17.prod.outlook.com (2603:10b6:510:81::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.29; Mon, 23 Jun 2025 16:10:39 +0000 Received: from SA1PR17MB5365.namprd17.prod.outlook.com ([fe80::6398:7dc0:7d88:5a4d]) by SA1PR17MB5365.namprd17.prod.outlook.com ([fe80::6398:7dc0:7d88:5a4d%5]) with mapi id 15.20.8857.026; Mon, 23 Jun 2025 16:10:39 +0000 From: Jan Vrany To: gdb-patches@sourceware.org CC: Jan Vrany , Tom Tromey Subject: [RFC v5 03/18] gdb: update is_addr_in_objfile to support "dynamic" objfiles Date: Mon, 23 Jun 2025 17:09:58 +0100 Message-ID: <20250623161013.650814-4-jan.vrany@labware.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250623161013.650814-1-jan.vrany@labware.com> References: <20250623161013.650814-1-jan.vrany@labware.com> X-ClientProxiedBy: LO4P265CA0047.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ac::14) To SA1PR17MB5365.namprd17.prod.outlook.com (2603:10b6:806:1d8::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA1PR17MB5365:EE_|PH0PR17MB4637:EE_ X-MS-Office365-Filtering-Correlation-Id: 53fafa74-e1de-46db-8b0d-08ddb2707ef4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024 X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?SmmD4Gcx32gK9dH4bgfWztok4voPNFAXoodq4sY9DsRb6AYyStPOsoMiJFPS?= =?us-ascii?Q?DmjNn8Uf3DuyRWrPHT8L6lTA4APysBKuvHIufB0E4BQYOCvxp6hFZ/d/zuh9?= =?us-ascii?Q?EICqeSB5EmV1CltaKKE3YnqZ6a3403y3maQNr5mtDCnxr18ByFfDk7DCGLxQ?= =?us-ascii?Q?hIXHNuyBe+62U68Q6g+3D3LECO4YPDULdgatVOSYxLOm5r0hC/yePiFmzAQ1?= =?us-ascii?Q?3eSbvlgdlwMY7hyG1FGzPdfJv1CXYxYYAggUnJkQKAV8QhnMnJJn5bsJwCdC?= =?us-ascii?Q?XkCLIB1bkEm5C7Fjz3UKWSYUNzmt5fPPDonSd1DjLnXrcSDIAOFryRdtkooa?= =?us-ascii?Q?/ADwoe2s1eOI//yw3Fc7rTf5v25Ku1FlDa+Wv0UF71IDsaoxY19jkOanAmTZ?= =?us-ascii?Q?h96Q+VTbevFIkDP5WpbH/jLeqeKm3RAvBMEWPCoTorwIlGhfSnt0TA/gwekx?= =?us-ascii?Q?RNZt351PThbclmbzfN78RrgxQ/FzdyTahidXtcGByjJjbYSN7cU5rrtYqvH8?= =?us-ascii?Q?8zyELw/MisR9wPbry0zaGMelAyDUKRoSxJ5TkciOFUYaIkuZugiQp7WdvsPs?= =?us-ascii?Q?Wa3jHA7YVvgt8YzrJMReQAA0yMmOdHfdPtzHf/GOgYNIIO668zaBn4DfCkB9?= =?us-ascii?Q?ESxyYQzkoxYe35TumNtNIuA4lDk+WO+d+9o866sVIJvXlSZfYq2QukDX6lRG?= =?us-ascii?Q?UUzLMrim1im3H/zd7IQvvcY4LhLgX8aeAOfVOBZWci2dAzBFuP71N9rizDV7?= =?us-ascii?Q?35RBBAYVul35aDZ690gm91dN2L8TQK/ptLdwfaOvar8jzwiHtpIRIQdulZe0?= =?us-ascii?Q?ZSAGIuxeJSwhHrgcAKddV/6tHD+LN0UItgcjuaryEGwwaASHjjCBnx0p89Ry?= =?us-ascii?Q?fJHOhbGo47S1T266/IXHHF3O7wqqkRlMzm6gARRXMJi7slKqqnSqJgjIuazM?= =?us-ascii?Q?KzCyNOWD1ODPOdOvbBzkZ9FtqcCeuPhoRXvv+AdfnOSKbxQ9pacqrlvo9R1e?= =?us-ascii?Q?n26X7/Bp/nNHDLCMYoKvfjGnj0kpxUtB0Zd2ODZG1EG6eLfKyhQLfKbuMkn/?= =?us-ascii?Q?eymsXysdiooHEgf2GpSCZMAHpivh3tQUFX4KVXbi+9qRHtSUsH91H5uQaGsS?= =?us-ascii?Q?djonXOWpwMop+kCnkhMVekw9fX9CNaEHNCiLtcwxBF2tn+pfXD5zNJyf4gOo?= =?us-ascii?Q?GyXO/gnTON1Gqy+nEMJhoNhwuAPySPNXtPJ91by81V1zsCkdzsecydDWmu3b?= =?us-ascii?Q?XSGcLQLXfPGUXM0ipegcE/i+Oo+Gi/lzlRBVaI47BtWVtxH9gECjpsP9tIfq?= =?us-ascii?Q?0P7WbwgF9KN7WfW/ch1Ymut+N6U105NGoxvHKDb1dq8QHdDBQjzbzNj6foZt?= =?us-ascii?Q?eV65Dq6wFkTggh7G6pFmk/7VZP8BVe6vGMd2Ri0yeThQVAJ777Yy5gqXUO7n?= =?us-ascii?Q?unlIX2c8OA4=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA1PR17MB5365.namprd17.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?AfrfeI9MWiDEAUvju9eic3Zp8zx8IZ/++QnFcWFuS6TH5B7jpNA3l2Rdx8u5?= =?us-ascii?Q?j5ulrnw0F/G+WOOs/3VaMMEpsyf4YfgCiCPlt3YTEhRQjifJ3p+6HL0fiS5X?= =?us-ascii?Q?o5fGg4ErSxOD7txIQnaagjJYkqLjFAV9cUqkKgJreLbePPTdMLIQdq/hjEwm?= =?us-ascii?Q?EweAPqU3fa+mhBCmLdEOsbCpIHQK98OH1led62AC4JyaZL/CVdTNU0GotSBq?= =?us-ascii?Q?D0ZsAWcFgl5q1jC9FrZ2OlSx+Ty8J83wf9TAep21OkilqeD+LwUnNnDNqwA9?= =?us-ascii?Q?k2QZTLD1vIAkrGJXpun1JV3yWReivfZGVhik0HFMZ185w+qAmaT1gsapCz/J?= =?us-ascii?Q?QJE8G5DLMAZzpyicA+A7PtRrL0p7/xy3SHTK793vq+3ueHqJyGSuhdb6zoKT?= =?us-ascii?Q?7buOgNgn4R7g373OYg0Vfo7BixQq+8NQZodT4ZaMX/fxDWJY9tb3RflizBvB?= =?us-ascii?Q?ZBpvVk/hdzDEfAWkpBuWdKotMNn6bbvuk0FXvZni6LIY+QAq/l/xVz4BEQZF?= =?us-ascii?Q?LM7mrwcASm+TvJ926GobeaXvwGihU1/gwHT+yA4fx2lrC6X8JmDdW/23bD4b?= =?us-ascii?Q?nyV/E6nQQJ9GTbiKbgEm9vR493ZCOaoNhO0O5Xsu+jGgxjyWy7n6kuL7Ql3i?= =?us-ascii?Q?zWrqBadqXRYtUe06HkjHKa6m+2eLKE8SXesfvh+fSL2L7pgFgsUh6lsr5/Bg?= =?us-ascii?Q?uwGplXSJSosD642mtlmTPxAevcz96xkRU0xYEE8MrGJx6cfGNmYr8dXOIoi2?= =?us-ascii?Q?3rP5iOyJiAodT5qKpX+VcssNIn3Ix1ZmJk6kWed/ZG8FYuaw5R5L/kj2u6FG?= =?us-ascii?Q?WkJ+NAnBQObq/BcwRW7xG4jWT8/IB+oRwJ1un8/QzYtb/fLffu9GwuaUv6eC?= =?us-ascii?Q?DdFzJFjY5uhzjaLPV4agWG1SKkWS/hg0issU+OYWcu0OParuqOWD+v7iC+oy?= =?us-ascii?Q?UHRtggEdgWeiLzcFIJXVHvPWq2h7m4raCegtA0zHa6EzCOJQCo1GGUm4bFy+?= =?us-ascii?Q?bIbmxLuayJkBv+f6sAcHIV1u6Y5e69cJFPMmhaZsJmm5ctGzPbwUijVKkj1W?= =?us-ascii?Q?AimJLiHGxIeeAfg7w00pmqHc9N5RNuu0rCQ0/CmGJO23NFnLPZ7f4GSBABej?= =?us-ascii?Q?u2SMfrDipiT5esirAxmoBe8hkvkdF4ia+jtda1QeKQuo/u4yQv0CsOmWNgZS?= =?us-ascii?Q?09u0AFpmQveegiERKeWvrooJKG8249AKZf9kBkHbvGYmpVefCcdEhC2K4BP7?= =?us-ascii?Q?cJ7l4GHUQrzMGk+bP4gYoB4RKPHdLKMupEDYKVuLHwMDMObrQbfpkfX8VVVe?= =?us-ascii?Q?I0vV7JDzW1VsOEwsBRQjuwgYXjetfJpnig4BoJNvtgC5uDZGqLdGYTxaQVDf?= =?us-ascii?Q?cKCqXPw0Ymwm6CEBJojnc98MSYpSWqVIUNHrH8wzfqdbk4uHV4eqim9Vr138?= =?us-ascii?Q?n3RuAJmjrIOem3PBK9tcrHXE8426ZK041G+S7dlYSrbXUK/Rod00U4pcAsCo?= =?us-ascii?Q?Iu9+Tirk4RdayVjfIA46MFojJN7jcxmnnXSil2i45AEHkv6snNkybYgy6xdA?= =?us-ascii?Q?REmnsTJAIS2ubDap/yt0+nUso1zcNP5KcWVCaOzp?= X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 53fafa74-e1de-46db-8b0d-08ddb2707ef4 X-MS-Exchange-CrossTenant-AuthSource: SA1PR17MB5365.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2025 16:10:39.3624 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b5db0322-1aa0-4c0a-859c-ad0f96966f4c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: JEE/wFtrXc0F/uOLd8RYi6LoWMI7K4C5gni8KWD+0DCSfAJmzW4De+ed4l9OT8bxvHP3+Z1snBFMETCtpPa7fQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR17MB4637 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 5VLv_lf8pzYG9mBC-Sy_tBZlfbT_CmB59mhgN83MrDY_1750695040 X-Mimecast-Originator: labware.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=WINDOWS-1252 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org While working with objfiles in Python I noticed that gdb.Progspace.objfile_for_address () does not return "dynamic" objfiles created by (for example) GDB's JIT reader API. This is because is_addr_in_objfile() checks if a given address falls into any (mappped) section of that objfile. However objfiles created by JIT reader API do not have sections. To solve this issue, this commit updates is_addr_in_objfile() to also check if the address fall into any compunit in that objfile. It does so only if the objfile has no sections. Approved-By: Tom Tromey --- gdb/objfiles.c | 14 ++++++++++++++ gdb/objfiles.h | 7 +++++++ gdb/testsuite/gdb.base/jit-reader.exp | 9 +++++++++ 3 files changed, 30 insertions(+) diff --git a/gdb/objfiles.c b/gdb/objfiles.c index d25d1a02cea..6d5dd588f91 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -1135,6 +1135,20 @@ is_addr_in_objfile (CORE_ADDR addr, const struct obj= file *objfile) if (osect->contains (addr)) =09return true; } + /* Objfiles created dynamically by JIT reader API (and possibly by + other means too) do not have sections and therefore the above + check never succeeds. + + For such "dynamic" objfiles walk over all compunits and check + if any of them contains given ADDR. */ + if (objfile->sections_start =3D=3D nullptr) + { + for (const compunit_symtab *cu : objfile->compunits ()) +=09{ +=09 if (cu->maybe_contains (addr)) +=09 return true; +=09} + } return false; } =20 diff --git a/gdb/objfiles.h b/gdb/objfiles.h index 0206b49e00c..cadb4525782 100644 --- a/gdb/objfiles.h +++ b/gdb/objfiles.h @@ -459,6 +459,13 @@ struct objfile : intrusive_list_node return compunit_symtab_range (compunit_symtabs); } =20 + /* Const version of the function above. */ + + compunit_symtab_range compunits () const + { + return compunit_symtab_range (compunit_symtabs); + } + /* A range adapter that makes it possible to iterate over all minimal symbols of an objfile. */ =20 diff --git a/gdb/testsuite/gdb.base/jit-reader.exp b/gdb/testsuite/gdb.base= /jit-reader.exp index 4462ab4aa65..8399558403a 100644 --- a/gdb/testsuite/gdb.base/jit-reader.exp +++ b/gdb/testsuite/gdb.base/jit-reader.exp @@ -233,6 +233,15 @@ proc jit_reader_test {} { =09=09gdb_test "python print( \[o for o in gdb.objfiles() if o.filename.st= artswith('<< JIT compiled code')\]\[0\].build_id )" \ =09=09 "None" \ =09=09 "python gdb.Objfile.build_id" + +=09=09# Check that Progspace.objfile_for_address () finds "jitted" +=09=09# objfile +=09=09gdb_test "frame 0" \ +=09=09 "#0 $hex in jit_function_stack_mangle ()$any" \ +=09=09 "select frame 0" +=09=09gdb_test "python print( gdb.current_progspace().objfile_for_address(= gdb.parse_and_eval('\$pc')) )" \ +=09=09 ">>" \ +=09=09 "python gdb.Progspace.objfile_for_address" =09 } =09} } --=20 2.47.2