From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id +y1TGUTOsWnYKiQAWB0awg (envelope-from ) for ; Wed, 11 Mar 2026 16:19:16 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=labware.com header.i=@labware.com header.a=rsa-sha256 header.s=mimecast20220511 header.b=NcwiR8Im; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 4FE741E089; Wed, 11 Mar 2026 16:19:16 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (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 0F35A1E089 for ; Wed, 11 Mar 2026 16:19:15 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 5FFD24BB5912 for ; Wed, 11 Mar 2026 20:19:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5FFD24BB5912 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=labware.com header.i=@labware.com header.a=rsa-sha256 header.s=mimecast20220511 header.b=NcwiR8Im Received: from us-smtp-delivery-114.mimecast.com (us-smtp-delivery-114.mimecast.com [170.10.129.114]) by sourceware.org (Postfix) with ESMTP id 1DF4B4BB3B80 for ; Wed, 11 Mar 2026 20:18:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1DF4B4BB3B80 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine 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 1DF4B4BB3B80 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.114 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773260322; cv=none; b=AEB5ODbd64C69Dnz5kwFBm+ISwU/tXsKNlRUJEB/Kbi0lRDsFJFM7/nWX7pOYSuNv5UwI6HfnJk88/oBrNxxlGib/RST9vXpDQbSMOaFBgVxL1NvCc2mVn8/5sRzQOvHMXc80ehqC5iwjJAx8Enuw0T/QCki79I+RBQ1pBGagtk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773260322; c=relaxed/simple; bh=FHgO7/MMBqLia0TjtCV4q9piUjZ1NVSi8LOEgSNWYnk=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=aRXpkloR/7N811Sz5gEAGagDFIOplEwAvJOxAoW4j1G5UR3wW7e0Wfhv9woqX5xuW1eINM8H261sc5f3MADMxu3ldy5utw5mQNqNzjwYzrUewyzkc+8bZa57S+n+lhN2NWAAK/VVI68Dmm/309mm/szC6LPAzLqsELfAJAp/L6s= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1DF4B4BB3B80 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=labware.com; s=mimecast20220511; t=1773260321; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=K3D6kwWyfzfzd+dqS0LUsEZfv4cmrlKsMCokWaF/Ebg=; b=NcwiR8ImPumPLTx9OlhncqMa/QkjyEGPHo8PywYF1nVggD5fenhAYzVSrgpE0z7SjAwb+1 4umFVt5LMjoP8Widu7yFw8lCXgkd0MoZfDo+zytO9TvuXfRvJmHSn8f2r1GEazyDPlyOQv HPSfBMU/ZPTKX4nBGM6oGOOMjXuWhTQ= Received: from CO1PR03CU002.outbound.protection.outlook.com (mail-westus2azon11020139.outbound.protection.outlook.com [52.101.46.139]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-657-A_T6iZwXOmOE17iRgLkz4A-1; Wed, 11 Mar 2026 16:18:40 -0400 X-MC-Unique: A_T6iZwXOmOE17iRgLkz4A-1 X-Mimecast-MFC-AGG-ID: A_T6iZwXOmOE17iRgLkz4A_1773260319 Received: from SA1PR17MB5365.namprd17.prod.outlook.com (2603:10b6:806:1d8::11) by DS0PR17MB7658.namprd17.prod.outlook.com (2603:10b6:8:2f3::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.25; Wed, 11 Mar 2026 20:18:37 +0000 Received: from SA1PR17MB5365.namprd17.prod.outlook.com ([fe80::9a:538a:fa42:730e]) by SA1PR17MB5365.namprd17.prod.outlook.com ([fe80::9a:538a:fa42:730e%3]) with mapi id 15.20.9700.010; Wed, 11 Mar 2026 20:18:37 +0000 From: Jan Vrany To: gdb-patches@sourceware.org CC: Jan Vrany Subject: [PATCH] gdb/python: add property ranges to gdb.Block object Date: Wed, 11 Mar 2026 20:18:26 +0000 Message-ID: <20260311201826.2244014-1-jan.vrany@labware.com> X-Mailer: git-send-email 2.51.0 X-ClientProxiedBy: LO4P123CA0017.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:150::22) To SA1PR17MB5365.namprd17.prod.outlook.com (2603:10b6:806:1d8::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA1PR17MB5365:EE_|DS0PR17MB7658:EE_ X-MS-Office365-Filtering-Correlation-Id: a676ecd2-bbb2-4677-c149-08de7fab60cb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|1800799024|376014|56012099003|18002099003 X-Microsoft-Antispam-Message-Info: Oi8K5XEhq9tW73lb8B1Ka01ai/xn88EAFlRbzYECDTFcUJFQSfWz/kIFwo7uOvDI8M4JGIE1ykz60Fuhl6KJ2wZTjXaHJ3ntWSgu5wk//j4BFB1gOUScIBUtulHnv/zNTECm/myjbeTQrccuqjKSWOwJUo+wzU3LpIZvq9Qz/qqUqOocwBnZUmiFbURUotTb8to1hebySOduiT94FEIO3sAy3yEs1PyNjjnJsK212zjNXqUCx8/RjlmxC0Jl+rk96hHfiMjqikwtGZ+uYa4+Yo/7Ok28rgJcheNaMlVnulWicLo2ZuVkLD4MJtis/r2yvT2Hai0jG1Lmp52R7YLuTH6yJ3MLiyrbZ9Db7SE2t1udMC2V1TdA80NGZsirizQ5h47nxPK1VdYu0CYK4woMI4SOo/4ykv2iluaVFkVfnKoZkAA28Ny1WeZ8Saqd3CduOcPslguAaQUtw9n4HypTQ4g/3aI00jS5un6HW/Eim+CPVgKO7M3Q7od1OrLrTa/XgguMV56sf6yfe8t7+w14Uqrit31jGw3NfRVBQt32KLHjXkw1nrLgm1HWEPEIggUhXTflVqq7dMMQoWgFu8F3Mw1byeJTkJOypiEMG8QwU98eWNAlXKXxI3CftCKrQuCacnpiFXsjtio2tO4Uz9PPcT4eYFbTpaBYFK2q+BhU8OHzUFNOoK5AzBZx7mtERT4BkTPJuSFwS6akFm87KfT1SIkxabBRJ40C3a4ZV8tw6z8= 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)(1800799024)(376014)(56012099003)(18002099003); DIR:OUT; SFP:1102 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IQvuM+V88v8NBXM5N+QEO90pdkkXUBlotIvWNHKa25/7nAWbGGFUZ20DraA+?= =?us-ascii?Q?viCESUgkebZdhJGUB6CT+NSbOmYTGnorB8+u4bAi8EaOQvAz3c9+E9fXYotI?= =?us-ascii?Q?L8iJzQvpgpo0K5WWlThIDpbKQb/lKvlb2j1i5P82qARKvf5mRQxM+7BxC9t1?= =?us-ascii?Q?vnkcz2564w++qNIR7CUjU+v+6joYJhY7BJkGTAUzfcBguzxHpQhaya0Km+ef?= =?us-ascii?Q?vvEsffvqq2dlvasWPRUb2g4HU4XwFIRLyv9OpdG9DjR5CrfpmKFo9E9TifbK?= =?us-ascii?Q?vy26raGD3+h2z/ZWE23EWvNH/wD5OEINw79oC+wkXHe/YCmztbXOg3BsSafx?= =?us-ascii?Q?WWDQJ0ncQW6+zKN7/z6vgoshiQAAtpGV3jF3gmIpY4e9VxQmLwF0wdYldrmt?= =?us-ascii?Q?aXXLPkex4ZA+5/GzP9BuRgHt1NYzib/0FtIgx+zXD8IEVyoSRzR0zczU2FQb?= =?us-ascii?Q?6u3mKi0oAFN/DrcyRpibO9oVxfOfdFOFEpZUWWEWiwXbUwRE/nNNndgiHZms?= =?us-ascii?Q?/cdQ2i4E3hFRjvIAVWSWZqNDYyc0SBQeaOYH5EroUBhMzUF4xJy4TcPPbeil?= =?us-ascii?Q?SkUCrWP0xpxbg1GcWwiv/IrrY6sfZIzehlw6nAy3LrPJ8vs+DSF1asza4glb?= =?us-ascii?Q?wyL0n0j+t/gni72FBZl7ffGY4Gijtxnka0xCnhpHAWMSXUetDwv9r5wD6xFr?= =?us-ascii?Q?EDBSwhfx3jg7Y/YgPqB9oWuUnm5Lc8Dsc5tnHKs6sODEW+KvLbYyQW08LmIK?= =?us-ascii?Q?h+PdebpobS3S2cmfSvUzBsMsYsghT6JK5vdCMkoXl3OU62P6KV6FKzU03wAa?= =?us-ascii?Q?Bp5NuOrbYiYced/0wsJ4UHhgwvkoBtW3Ove67gknU5R0m+pLknb5DGdT0ZjQ?= =?us-ascii?Q?ZBbxaAKZ89iX5ss6C4MzsqSr2Mtznv4veE4sv7mCql5uoEtaWncYt74B8ICr?= =?us-ascii?Q?t9zq9EyPKkx2KYHps0iZq/wY4EcdATMMO/NayvHEnv5z8/R3hktagwpEql2m?= =?us-ascii?Q?Fhf1V7xe4WPzUQt3SHpxnLhWdC92G9r6RXYZf+H5hi/O9lU3IxdS/+0GbL5A?= =?us-ascii?Q?G0WKW4X92Q1XFL8Nu0VabiXScroIkuAMO7EBYmwGGB78fxD5ECgfdKQlCi39?= =?us-ascii?Q?BZTtGE7yXYTEhoE3e7BzYY+k8hWLqXo+bdJk5zt6B7Moy64JQ3EY2bIVJV6t?= =?us-ascii?Q?Zov82g7f8sWXYf8H/E8anSQgsNmpkwM+rJwMT/6LDb3gjnPGaCiNbCyIUozy?= =?us-ascii?Q?GDX5zyJSSNi8J/9/BCRyr4V7eA5uOFXrKMG62AJDSiYxTbOrHe2IAvHF4CT8?= =?us-ascii?Q?1uoOESRxGGFXJ/YaL4LK/nPKmanwkoj3nwMuPiTHtJSL9g79p1zJpAFHh3Hr?= =?us-ascii?Q?7uXkLXVvHI/98Yb9AEHFW4ki3J97aSRKF9aWGCetTnjtpi4kt6sMuFgpadhd?= =?us-ascii?Q?SFh2ii9ATPv9ShWGNtRtRQGQp5BwlJi7IVW5qSq0+UH82Pxk8VhZNkaYmaTl?= =?us-ascii?Q?gQhgYI6MmedlI3AFPD3YbbSPPgID7xrlqqQEJI0uulJBXEEsXEgrj6ni+IEv?= =?us-ascii?Q?4Ab/88jblSt8D5A8PenZkH5wOuIqb1ZQpFFa2wWoAwaXwyonDFO22ZPm7Hdt?= =?us-ascii?Q?CZ3CxKCAoMj/DbgV+sX3aXzoB+YeqtMH5gXK8Mb6MBaNrgz2wi4fcKVkjPkC?= =?us-ascii?Q?J7RJ9m4TOlZCDcmV9A1HZRXYzkvATc8hMVKUzcxpEKNxU7C3socUfLzGLS5z?= =?us-ascii?Q?eQxrgl5c1A=3D=3D?= X-Exchange-RoutingPolicyChecked: JIw6ieW8n6u4AQwS4Frx97o96kl3cGO+fRQYy3h/ZvDiPhwi2jY+PlSQgUO120bS+dwc9CkAP49P4G+7wFB2ocQObgoEitzC5lNGFHsxqzDGSLMOs+IiTiZyt88dPr94YvBOh5lZEf99DZrfyPGmgw6qCYoDXxoMRq1N7JJ8C6uiIeT9jmhr9cGX6KxNqraQOi6/ALEt9bR2yt4bZj6gXiDOZunYvObjIU3m55VXZnExIHUaGt8WinHZEl/6tcltWD4YPAuR2X5476O3uKD4y7474VJEJEs879+43MnC11ZTXItIHdY9HJU1q5kAXXrKawg5PcdcTGYdUkQDd+L0Yg== X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-Network-Message-Id: a676ecd2-bbb2-4677-c149-08de7fab60cb X-MS-Exchange-CrossTenant-AuthSource: SA1PR17MB5365.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Mar 2026 20:18:37.6513 (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: 39vs2O+Pigvt+RCVtE9W3RBVAxEPEXrKn54rmM0TaNH/NtTzF4FCzgjKY8DOODWI881k/YXUCyjQNyvkwrDvcg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR17MB7658 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: B8pYqjoOC1orLf4yZLp6PZtxEx8JipfxUGOejuCLlZQ_1773260319 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 This commit adds a new property - ranges - to gdb.Block object. It holds a tuple of ranges for that block. Each range is a tuple of (start, end) address. For contiguous blocks it contains only one range. --- gdb/NEWS | 4 ++++ gdb/doc/python.texi | 7 +++++++ gdb/python/py-block.c | 30 +++++++++++++++++++++++++++ gdb/testsuite/gdb.python/py-block.exp | 3 +++ 4 files changed, 44 insertions(+) diff --git a/gdb/NEWS b/gdb/NEWS index e46a5108272..605e55f1115 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -229,6 +229,10 @@ qExecAndArgs the appropriate user setting is enabled, and GDB knows how to style this source file. =20 + ** New gdb.Block.ranges attribute. This read only attribute contains + a tuple of pairs each representing a single range. Contiguous blocks + have only one range. + * Guile API =20 ** Procedures 'memory-port-read-buffer-size', diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index 2df3b7c0423..69a3b298ede 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -6342,6 +6342,13 @@ One past the last address that appears in the block.= This attribute is not writable. @end defvar =20 +@defvar Block.ranges +A tuple representing address ranges of the block. Each range is represent= ed +as pair (two-element tuple) where first element is the start of the range +and second element is one past the last address that appears in the range. +The order of ranges is unspecified. Contiguous blocks have only one range. +This attribute is not writable. + @defvar Block.function The name of the block represented as a @code{gdb.Symbol}. If the block is not named, then this attribute holds @code{None}. This diff --git a/gdb/python/py-block.c b/gdb/python/py-block.c index 4d77242ca0d..3f293a2d091 100644 --- a/gdb/python/py-block.c +++ b/gdb/python/py-block.c @@ -117,6 +117,34 @@ blpy_get_end (PyObject *self, void *closure) return gdb_py_object_from_ulongest (block->end ()).release (); } =20 +/* Implementation of gdb.Block.ranges. */ + +static PyObject * +blpy_get_ranges (PyObject *self, void *closure) +{ + const struct block *block =3D NULL; + + BLPY_REQUIRE_VALID (self, block); + + auto ranges =3D block->ranges (); + + if (ranges.size() =3D=3D 0) + return Py_BuildValue ("((KK))", block->start (), block->end ()); + else + { + gdbpy_ref<> ranges_obj (PyTuple_New (ranges.size ())); + + for (int i =3D 0; i < ranges.size (); i++) +=09{ +=09 gdbpy_ref<> range_obj (Py_BuildValue ("(KK)", ranges[i].start (), +=09=09=09=09=09=09ranges[i].end ())); +=09 PyTuple_SetItem (ranges_obj.get (), i, range_obj.release ()); +=09} + + return ranges_obj.release (); + } +} + static PyObject * blpy_get_function (PyObject *self, void *closure) { @@ -564,6 +592,8 @@ static gdb_PyGetSetDef block_object_getset[] =3D { "Whether this block is a global block.", NULL }, { "subblocks", blpy_get_subblocks, nullptr, "List of blocks contained in this block.", nullptr }, + { "ranges", blpy_get_ranges, nullptr, + "List of address ranges for this block.", nullptr }, { NULL } /* Sentinel */ }; =20 diff --git a/gdb/testsuite/gdb.python/py-block.exp b/gdb/testsuite/gdb.pyth= on/py-block.exp index b483d4b8a92..e4e309da05f 100644 --- a/gdb/testsuite/gdb.python/py-block.exp +++ b/gdb/testsuite/gdb.python/py-block.exp @@ -43,6 +43,9 @@ gdb_test "python print (block)" " \= {i, f, b\}>" \ gdb_test "python print (block.function)" "None" "first anonymous block" gdb_test "python print (block.start)" "${decimal}" "check start not None" gdb_test "python print (block.end)" "${decimal}" "check end not None" +gdb_test "python print (block.ranges)" \ +=09 "\\(\\(${decimal}, ${decimal}\\)(,|(, (\\(${decimal}, ${decimal}\\))+)= )\\)" \ +=09 "check ranges contains tuple of tuples" gdb_test "python print (block\['f'\].name =3D=3D 'f')" "True" "check varia= ble access" gdb_test "python print (block\['nonexistent'\])" ".*KeyError.*: 'nonexiste= nt'.*" \ =09 "check nonexistent variable" --=20 2.51.0