From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id wffaGtedsmnK4CUAWB0awg (envelope-from ) for ; Thu, 12 Mar 2026 07:04:55 -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=FMAHKxyg; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 56BB81E0DD; Thu, 12 Mar 2026 07:04:55 -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 336451E08D for ; Thu, 12 Mar 2026 07:04:54 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 86C4F4BBC0C6 for ; Thu, 12 Mar 2026 11:04:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 86C4F4BBC0C6 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=FMAHKxyg 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 26E474BBC09B for ; Thu, 12 Mar 2026 11:04:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 26E474BBC09B 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 26E474BBC09B 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=1773313466; cv=none; b=lvxOu6oxkOmCMjxr6dLil7O7cnzRZIHuVH0q8kF80WaOFBQuWzKnWjdrS2WAGP78CGLhLQJSIGY2NX7Te/7rZJg+6YNgG7X7COcOAk8UnWwGptRyv/Pvwvhfo9qVxk5i6Uby4zMHWrdE6Thy6aSiBGac0hq6AF9jWbB9mkXBwCg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1773313466; c=relaxed/simple; bh=ebzzKS1c0ftvYURoLmKwi8lCNDvuFVUwfTtFuzdaLuo=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=aHQQYz17DArzpEU9Unt2N2NeesFyRv899k95BNp7+LfFzZPkfRgt6BP7yu/g1FQo3qBdg9RvZxI64I0f1BT0hJrLsdnf8ANzV3ioMageksBdHVCWfQuZSdT5Gh0fQSm7f+wTLZH0hDEotTSCgUV/V971UujahFtL/OAeRnera64= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 26E474BBC09B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=labware.com; s=mimecast20220511; t=1773313465; 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: in-reply-to:in-reply-to:references:references; bh=hGJesy0fEl4HHVjYnNeiDQxT7fbbwc9pUKcnpao/lF0=; b=FMAHKxyggiIYoctDxDlbu8t/GvB6Dd1plCcoC8ZzHU5eP4pHZB+t2yNvvTbSYTPDEXegkJ bYwCW378Bln8hBVDVeyd+QIPeFjqqx6WBxF0ZR/Xr43DyBuJIDU+3kIW2Jtt277LniTltq ZkX66VPdgTjpRqTNbxJdmxUl9Onr9x4= Received: from BN8PR05CU002.outbound.protection.outlook.com (mail-eastus2azon11021118.outbound.protection.outlook.com [52.101.57.118]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-670-KnY9LOojNIG8qHMd6vV6Qw-2; Thu, 12 Mar 2026 07:04:24 -0400 X-MC-Unique: KnY9LOojNIG8qHMd6vV6Qw-2 X-Mimecast-MFC-AGG-ID: KnY9LOojNIG8qHMd6vV6Qw_1773313464 Received: from SA1PR17MB5365.namprd17.prod.outlook.com (2603:10b6:806:1d8::11) by BY5PR17MB4065.namprd17.prod.outlook.com (2603:10b6:a03:23a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.13; Thu, 12 Mar 2026 11:04:22 +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.013; Thu, 12 Mar 2026 11:04:21 +0000 From: =?iso-8859-15?Q?Jan_Vran=FD?= To: "eliz@gnu.org" CC: "gdb-patches@sourceware.org" Subject: Re: [PATCH] gdb/python: add property ranges to gdb.Block object Thread-Topic: [PATCH] gdb/python: add property ranges to gdb.Block object Thread-Index: AQHcsZQ+DzVpv4m9N0qA6/h0P9LMarWqdnp6gABGUQA= Date: Thu, 12 Mar 2026 11:04:21 +0000 Message-ID: References: <20260311201826.2244014-1-jan.vrany@labware.com> <86zf4dedzs.fsf@gnu.org> In-Reply-To: <86zf4dedzs.fsf@gnu.org> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR17MB5365:EE_|BY5PR17MB4065:EE_ x-ms-office365-filtering-correlation-id: 04a87e11-35c7-4868-0180-08de80271d64 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|376014|366016|38070700021|22082099003|56012099003|18002099003 x-microsoft-antispam-message-info: T1JY4Tc0bIKyNBWMT6CXhjNAZGlNx3CGiXL+cK3vF7hJ7Z0sdttPG6FFpiHLqyI1ozTNsxx9JZdMHugtPEJa2Im4pCtTDfX8aN3pLTRskvvddNwco2V3OAWRLPWZt7BlVsojJ9c6H5XpWdm6XtYbECzQ9ouXhpLtK7HOiYfiqA48NF6/23Mmqy+SbjYZKzr7kGJ7ssm1yLE+uwAs3sJubDnU2djTyqaeKgMLYyFgS+ZJ1tCfbs7AizdNuUSSQkJHdbVl2xTDQ98Zq7BqLy/z4Zit3vY/8UnRJD0YRxaYqLYPmtu2MmwMVFH2fg9yOyEZ9NvIn7W1NhkV+xWFaPWbsmZSCoMXcYPWvazEABvNa94QkI7A+Kau6AMf3vlq6MP+pMkaSoWXlKNB/8KfQDRABufTxNquNG96Q5K3eqg5rZ5LhJLIXv8HBOiiu4BRvEF3mTIC9J96icCT1NHmwSM030s/lDCx+NGoJLA99xNPEiBHWOrfthBh1KkgkU9lW9kwuTD8LRPramAdB1vTkQxx9u77d/5cD3LO5PZZdr9RIvwP5BO1wcDkD3XxvjexAqRaIWI/oYhyLiZugF1oZARHdl2/bPjmsWrQoqxx/0V+nIfX5D0Pll/iM/0wMYDo/9B+kigxdIXY2kv3fhXUfXpUUuVXANYjUeUChXnDbsC53FOuB5DkfmRldVBYnz/0JIfZ4YbcRiHvkDMM7BZ+b6s2cDaTFympDtMuFEg8mOYb0MJ0M3NLFTLCTm/kUxiaoj57LrNyYrG/tbnJ95NKaQ2j3HhFzJHIk60El8TODEt51E0= 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)(1800799024)(376014)(366016)(38070700021)(22082099003)(56012099003)(18002099003); DIR:OUT; SFP:1102 x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-15?Q?KPUpdS3OsG40plhn+KjbLMer2Z3b4l03WAOC/uyI5srukASa593o3eSQa?= =?iso-8859-15?Q?obwrjenCnxh85zot2A+lOIobl7TE0VWBzm1DNi/uaH5QdOIek9/IBcxPw?= =?iso-8859-15?Q?m8FDdZ9+WFphk7YB4srsTaGUaVx1vQlwuM2KkVBQDOVrf438xMAonbrfH?= =?iso-8859-15?Q?NeFOlBv1Syj090nknYJBosrJKdPRaI/w8SsN3le07t+UNeYNNpLy5iUem?= =?iso-8859-15?Q?o3CzYoRTk/AMJP78IiSwWKpf961camoDHpAs+DUTw878L3JQlzKq3NrZr?= =?iso-8859-15?Q?8NZaCr+092budua3gTFhMW5H7UyyqVvvqD1z5QZZoYP2LwQrHBT8oAwPC?= =?iso-8859-15?Q?OECLzTONn39fy368iWyhy8PTPsdOrteSnS/g5dKa2LneHTd4QyYNcokTN?= =?iso-8859-15?Q?bNsWE625UxzylvjVC7cEVg3wRPxvF/Nnu4f1KqV0c2If73EFAppiLj79I?= =?iso-8859-15?Q?Bj331bZ4KMR5Trt6zcL86l1/mbxzhXV0L/cmZc2y7tPTifh4mAdk39NV2?= =?iso-8859-15?Q?CHWOESQPoSICI54HG5bsTNlbQQDwpzibdz/rF+cndg8V9/Y2TznR5uZ89?= =?iso-8859-15?Q?fqjdYC7TxSPBcQokjLHWSp6eIoavkrM0UF4T5ZPvCWjl9bfshnZPm8Xce?= =?iso-8859-15?Q?nvDSekVrpbxvCyV7vmQC9kPb/V8A/KeLfy3hwc6QYvssb3Ttbsa5VSN0m?= =?iso-8859-15?Q?4G4Y5GGNnRjV8HZn4Hul/2zSFxciYRewMZeLR0kQHDjqIravrTnQsyvPB?= =?iso-8859-15?Q?wFeNT2feSlqDzuPYatXZT5BBa3Ro4nt0/glWURvITnpftk29Zda3SJUOA?= =?iso-8859-15?Q?w6u7sQIajT94dlGN40PBdZOUOt8Lknnu4/J5ck7287qspabj0Dlikfsz+?= =?iso-8859-15?Q?W1Afzh6BqwX+uk40C5QHf7CHFFmSEW5c2CLpB55Pf3E97gNtaJ82PHEvJ?= =?iso-8859-15?Q?b97Dpfa4gFlQ1SF3l0hwTfoHOjlJWnlgk+87K/V0hzfmD+k9s1W9jFzPB?= =?iso-8859-15?Q?b8OxnQEIOfugs5Mog1qzxJZaS+V731Sg67xOnTaXxAdkl+/kuJ0pguF55?= =?iso-8859-15?Q?C8QXJWyDkTUQmOlDwJGls2MK7jExuHSGYUS1mu1CeL0xCUMsGUz2lMDto?= =?iso-8859-15?Q?34lRLB2he++2Mpd5mxjaVxKzuj5ta0WYKcrtmvIgn0EqwwPfevMXSwCTg?= =?iso-8859-15?Q?0IGhQSDe4wKUm12Rx4zaaJtF2xu4NKpmMgTRCdJalfMG7+aRsHBHu59MD?= =?iso-8859-15?Q?K2F5yObb+ViAHa3gzkCyS/v62aaJRo1jI90zuHamCibR86rJYsBSbjlTz?= =?iso-8859-15?Q?0nC79Ba0W92/NsO1miJ0UQaKrWl1Kmvaze+gPabgEZ+ogDhFGcki5udij?= =?iso-8859-15?Q?NuxAtiJXpxWdZeT7/oGwn3BDNnMp9M3A02SORnFuTRqVh5tMJUJ08DUAl?= =?iso-8859-15?Q?RvO01VmIs58+te+5oA85UENrYsvCBMyB/JUhrfeumzC8GbDLPAmO2bpQC?= =?iso-8859-15?Q?CV0ayE64H8ERY6rEI98c7b+YgY/Hzos5iqF1AjHhlyGj1qak0m9tEa70g?= =?iso-8859-15?Q?t9n3iK8ssk9W/Rlb30n9/J+yx7bHICnZsG+Xlk9VZp+PJb1THhW990mt/?= =?iso-8859-15?Q?oK5JalGTPsZ2PodmzPZD1t3/4vvxW12Mz5d2WCeUUlqJmkukoEWWgg4kv?= =?iso-8859-15?Q?NGLNM8iO/lNrsHl7vXQXgUQdDTzovrxvc/NDyb7HAptq0+16SXu+BgIHl?= =?iso-8859-15?Q?yeYDu/w7rWTYB48rm2Bu7mXD8QJxQ92/2fX9A445CkdkWlK8PqO6PQBG8?= =?iso-8859-15?Q?kmt4EXhMjYclwp7zUpzGJTUf/+JDGMX0Ze2croOA=3D=3D?= MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: gdQO6fv7x1WhjJWT6OXZ1AbPCCPkuOkzEdnEIOV9DXbxdPw3A1JVC7Z6wInBkV0tHRggNylwqxUAgsmib1XJAzwHPEqyNc4eflEYjY44Hx7DY6nsyByKpIJEwo8I5v+/d5IabaPrlXOha1GbVTjUSQq5DLS00byDDOkdy63MQi6OpQkAL3MaD1Kt8A8XqRB1DyPFkVrO62GRFMR1cuCy/8CSgaM8S4zyFyVyWnXQ3zZD/YI2M+fE7Nok1f/2yzbidp8ayFmqMk7Ud0hWANtIGrsGuHZuMd/l3SyYFM1QntwGkRJ3Xih+dzZVbrKgA7Oizh+V/EiqPTESqQ1KIveE+A== X-OriginatorOrg: labware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR17MB5365.namprd17.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 04a87e11-35c7-4868-0180-08de80271d64 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Mar 2026 11:04:21.8160 (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: NpjS7b/pJznM5qJXSXNS0ObnslpT3uzVJvnGV/g02UANZkixTGsxOKqVP5RFaO92MLTrMolb42Ku7RELsx5r9A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR17MB4065 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: dnn7hxDEURTR_zrtcn0ImsQtSEoLf-qvb0daVm2K4cQ_1773313464 X-Mimecast-Originator: labware.com Content-Language: en-US Content-Type: text/plain; charset=ISO-8859-15 Content-ID: <99D52D92ABCB984C8A15F62ABE715609@namprd17.prod.outlook.com> Content-Transfer-Encoding: quoted-printable 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 On Thu, 2026-03-12 at 08:52 +0200, Eli Zaretskii wrote: >=20 > > +=A0 ** New gdb.Block.ranges attribute.=A0 This read only attribute con= tains > > +=A0=A0=A0=A0 a tuple of pairs each representing a single range. Contig= uous blocks > > +=A0=A0=A0=A0 have only one range.=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 ^^ >=20 > Two spaces there, please. >=20 > > +@defvar Block.ranges > > +A tuple representing address ranges of the block.=A0 Each range is rep= resented > > +as pair (two-element tuple) where first element is the start of the ra= nge > =A0=A0 ^^^^^^^=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0 ^^^^^^^^^^^^^ > "as a pair" and "the first element" >=20 > > +and second element is one past the last address that appears in the ra= nge. > =A0=A0=A0=A0=A0=A0 ^^^^^^^^^^^^^^ > "the second element" >=20 > > +The order of ranges is unspecified. Contiguous blocks have only one ra= nge. > > +This attribute is not writable.=A0=A0 ^^ >=20 > Two spaces there. >=20 > Reviewed-By: Eli Zaretskii Thanks! Fixed below. Jan -- 8< -- 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. Reviewed-By: Eli Zaretskii --- gdb/NEWS | 4 ++++ gdb/doc/python.texi | 8 +++++++ gdb/python/py-block.c | 30 +++++++++++++++++++++++++++ gdb/testsuite/gdb.python/py-block.exp | 3 +++ 4 files changed, 45 insertions(+) diff --git a/gdb/NEWS b/gdb/NEWS index e46a5108272..e48eecbeb7c 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..05e00d8370f 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -6342,6 +6342,14 @@ 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 a pair (two-element tuple) where the first element is the start of the +range and the second element is one past the last address that appears in +the range. The order of ranges is unspecified. Contiguous blocks have onl= y +one range. This attribute is not writable. +@end defvar + @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