From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id UVFkMYhU4mlpHB8AWB0awg (envelope-from ) for ; Fri, 17 Apr 2026 11:40:56 -0400 Authentication-Results: simark.ca; dkim=fail reason="signature verification failed" (768-bit key; unprotected) header.d=tromey.com header.i=@tromey.com header.a=rsa-sha256 header.s=default header.b=RZIpvUhY; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id C638E1E0B1; Fri, 17 Apr 2026 11:40:56 -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.1 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_INVALID,DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, 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 1F83B1E04F for ; Fri, 17 Apr 2026 11:40:56 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id B2A644CCCA33 for ; Fri, 17 Apr 2026 15:40:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B2A644CCCA33 Authentication-Results: sourceware.org; dkim=fail reason="signature verification failed" (768-bit key, unprotected) header.d=tromey.com header.i=@tromey.com header.a=rsa-sha256 header.s=default header.b=RZIpvUhY Received: from omta036.useast.a.cloudfilter.net (omta036.useast.a.cloudfilter.net [44.202.169.35]) by sourceware.org (Postfix) with ESMTPS id 1B3584AA3971 for ; Fri, 17 Apr 2026 15:40:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1B3584AA3971 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1B3584AA3971 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=44.202.169.35 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776440420; cv=none; b=pLLX6zGUNbPwUx3sfOkzcErp46uybJX1HmUczgqlhN8XUun/hec77/HQtKU4EHobxWY9aQKWbxTDjrB4dHfC4UvucVcg4gSMhnBkgYYI4N8haI1j0n4EE6iep6yt3SxAaSCwu7DL7gPCjLahFYFTakKAqHw+zhC067hB+jr+KDA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776440420; c=relaxed/simple; bh=easEoFiWF+UEwxNGOhg/ObMbWYhtFHH9XnfjHPwN0rU=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=oFHMwG2oRfuwXmkTZI2jwquRbG+2JI+rFM9cupgBVGSnCpxin60v75RlucMBmznZI4P+YxmvzKgch+XNJ0vzVOINwvzoUSHO+j47lz+ZzH5chCvse9vZgnqu38hRhlPkiQPsVz5DWF0Km/2aMxEGhy45AhCMRcU38huGafn5bO4= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1B3584AA3971 Received: from eig-obgw-5007b.ext.cloudfilter.net ([10.0.29.167]) by cmsmtp with ESMTPS id DkrNwxR4IObRfDlIow1XBs; Fri, 17 Apr 2026 15:40:18 +0000 Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTPS id DlInwJBIYxUZ2DlInwkjHY; Fri, 17 Apr 2026 15:40:17 +0000 X-Authority-Analysis: v=2.4 cv=HJHDFptv c=1 sm=1 tr=0 ts=69e25462 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=A5OVakUREuEA:10 a=ItBw4LHWJt0A:10 a=7CQSdrXTAAAA:8 a=zstS-IiYAAAA:8 a=wJG5W4SpDJy-DjYqV6QA:9 a=a-qgeE7W1pNrGK8U0ZQC:22 a=4G6NA9xxw8l3yy4pmD5M:22 a=DCx65vhANUyCzuf5D8fC:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To :Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=NUmNJkeqV14rw9JoJktd3Fhh//ycJVs3OBGCG0nUU94=; b=RZIpvUhYpHdm2BKVO2jJN576ra 29sfLnCdO6lJsARc3hReePf5MiZhRm9wicUWQRj8vxF2rMJ1sTuG++c8D1SajTwJDO/U4E7CcLGBI lQcMVWhH38AlXtEJ71JmYLVbW; Received: from 75-166-225-82.hlrn.qwest.net ([75.166.225.82]:46720 helo=bapiya) by box5379.bluehost.com with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wDlIn-00000003Gec-0bRa; Fri, 17 Apr 2026 09:40:17 -0600 From: Tom Tromey To: Matthieu Longo Cc: , Tom Tromey Subject: Re: [PATCH v1 1/4] gdb/python: add gdbpy_borrowed_ref In-Reply-To: <20260409105155.1416274-2-matthieu.longo@arm.com> (Matthieu Longo's message of "Thu, 9 Apr 2026 11:51:52 +0100") References: <20260409105155.1416274-1-matthieu.longo@arm.com> <20260409105155.1416274-2-matthieu.longo@arm.com> X-Attribution: Tom Date: Fri, 17 Apr 2026 09:40:16 -0600 Message-ID: <87340ttx27.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box5379.bluehost.com X-AntiAbuse: Original Domain - sourceware.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 75.166.225.82 X-Source-L: No X-Exim-ID: 1wDlIn-00000003Gec-0bRa X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 75-166-225-82.hlrn.qwest.net (bapiya) [75.166.225.82]:46720 X-Source-Auth: tom+tromey.com X-Email-Count: 8 X-Org: HG=bhshared;ORG=bluehost; X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfNY56JMgdZvOpONq07j/Fe9bIZnpe8pVa3KG3EYv/ccE2nwZ5nXeQdEUS7RYuzFj8YhNk8FwkqLimFlm2x2Gm+25h4s61cvkSgvsvu2m1Gc/LF2mSdYp WLN3nj3srnNVNBAuY8Jo2hOugAsLpOQMgGgJiofVHwkWPbWtEN6oWv9TBXf657M/QG2WzFd34jPi8hb65OOI0JWQ53TTnaGHmms= 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 >>>>> Matthieu Longo writes: > From: Tom Tromey > This adds a new gdbpy_borrowed_ref class. This class is primarily for > code "documentation" purposes -- it makes it clear to the reader that > a given reference is borrowed. However, it also adds a tiny bit of > safety, in that conversion to gdbpy_ref<> will acquire a new > reference. On my branch I ended up giving this a gdbpy_opt_borrowed_ref base class. > +/* A class representing a borrowed reference. > + > + This is a simple wrapper for a PyObject*. Aside from documenting > + what the code does, the main advantage of using this is that > + conversion to a gdbpy_ref<> is guaranteed to make a new > + reference. */ > +template > +class gdbpy_borrowed_ref Also mine isn't templated like this though I guess this makes some sense. IIRC I felt like this was overkill. I didn't read your subsequent patches yet but I assume there's some use for it. > + /* Allow a (checked) conversion to any subclass of PyObject. */ > + template + typename = std::is_convertible> > + operator TObj * () > + { > + //gdb_assert (PyObject_TypeCheck (m_obj, T::corresponding_object_type)); No commented-out code. This is unsafe though. I would prefer a check. I think a name other than "TObj" would be good. Even "U" would be better. "T" and "TObj" are too close. > + /* When converting a borrowed reference to a gdbpy_ref<>, a new > + reference is acquired. */ > + template + typename = std::is_convertible> > + operator gdbpy_ref () > + { > + gdb_assert (m_obj != nullptr); > + return gdbpy_ref::new_reference (m_obj); > + } The naming thing here too. And also safety if we can get it. > + > + gdbpy_ref strong_ref () const noexcept > + { > + return static_cast> (*this); > + } I think it would be clearer to directly write this in terms of new_reference. Tom