From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic311-30.consmr.mail.ir2.yahoo.com (sonic311-30.consmr.mail.ir2.yahoo.com [77.238.176.162]) by sourceware.org (Postfix) with ESMTPS id 91C113857419 for ; Mon, 9 May 2022 10:44:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 91C113857419 X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1652093070; bh=Xg1uZhcj8YFvwacUt0JRLcOHRJwfOtlKfEcDXFlFaH/=; h=X-Sonic-MF:Date:From:To:Subject:From:Subject; b=kDlCAWVrihpZLDhdDxZ2HGiP9XsMgTlpEq0snNQOEL6zAeuUou6IhSvcQHTBL3pSiRMKE6yorRoNZsvrdG4CoJZpq1OKB9G8+0uNhO4/3I0RFTk15XHRZo+vJMb8Hwkue6tpbNd7+JD4hwwIJE/XcixlsIePPZa6gisIDhtRpBx1m8rHssRmT6oJSkO/ey6lZ+s3SYLNHi2yViLqZRiCGSboR1b0VkY0YrIp88QCGVBrxF5g9Mh2iF+NCH324jDUUC8FS+Rlym5ufzJu1DkYrXRRj1aaivtvFsXlxHp+XQDlbem/1+94eArN7n+J1eATtVYbeT0P7YO16DlBNDvQXA== X-YMail-OSG: ECquZNUVM1mW0Ujtr6d_tMys1rS_DsdErcKTKEsIuBjPLgpEoRyTSQ8GadSYj5p c76kIE7TwPBb8nk696MMRFcUg8t2d5z7Wo8F8f2O1hAG38X0FESuXeID8zGaeOY.qj1_JBA1sh8K fbkcPOufPG4Z4uG1PbjJRpjryECAHuEejK_a1SMBg6R0LcAwQajXSYFD1zRA9UGE_aHayZ231nId pROKkw2GisJwA8blzBwFdbHWXT1_SCk26N4InhrjAc3FNVJTuyjZtwZQ9colX1RjLyJ2Rvki.Dq_ vruhqnFNUGwMXMSXG.Tb.ypYWsQT69Cgvvl1ddp_C1wE5c.tNcYCSkVHsTMVSXD8IJqnEAVix8Dc M4n1Ji1jJBIkZAFR3FsTCWy20jFsJTMPu_Bnwp8Z3XB6nt61pmxygKo_gR9oz2AZlOSP82ONSRaK GYlc1RYt1OlJgbQZdafJL.wnwl9A2gbW5vkLBLSzNhIdxU7EJh1SBBc5fCvLOYywjDHd5Wqu7dh9 MLY1rhs.aORNw31Ip8XPRNWRkReQCYhKKouhs3XatgftDATJ86MMSmFhl8g2rw8WQ2yqanhme47z 19iumgIoJ35sr0_zWsjzz3JJSYNqrKNelOx4Dm_AtGJ1V41TkYXf3lJqlngNmhQzud6uIrSJLI7A t5PPJ_OtPLtFMymYm5CEaMpi4_lPwxDVt8YF0PO4SDVtbEpJrDzP57EEmMroxYRW1F7USZP0hoFf AepBvnMMgd50GaGWYlGvUC7HEwydxaLEVMDhOi6RzUNDN6Zl0P3iIzATh4J7B1m0h8g8.FSJ.nyU l3XOh8W048fdzDvw.D8xwX1EqxOUUN.0B.V8kek3M9NRvuYiv.DTPN5yPem1mmZoqsR73Abv4qhW krF9ErWaTJ3m7xFXQYTHTeYHjQ1aKrFLGvSCe1ue3ifg3lNTv6TiMB8hFvyh0Up6UaAzz4eDa9l8 b77h_pogw_6QnC7iuepdwbKgTG.GhHf_h26YSow_7dNDXonn4awR7HdUD6vDkIpggYFdfC_qIAEK oL7ejjGSnYCluLRwP0ff0fiBPTuhHGcdlMXyElZ3bhDcKDY5GH5KMWcRCvwaXZ5pFOWAruAUsIrN bxEWAH5rWwphyUZffv6xeUjBq7w.CtYduFUwXPNUmZJIMsY.umn_Du419Ebll_PGzcPRUmLlnF15 1hdUpDL.BhP34v1CKq8ZyjIb16MKy8AhJM1kDQa4WUEr07dqxxSKXCApdUCd00t7RAm5WwAhrfV8 cbBifveqgn50wi7S_r8zok0x4lQhOn.cSwuzLcu571avUxyRxLVu1s0fihnY6YchL9_eD4n9NJxU GRHwziGCtcx5_ojVOrOB1IuWU_Ztl1qsVzmZmw_ISqSjty29kVkLdZoC9Ge82X7J1kLEkISFdev1 1bAeyhOQoO3VCbe4sBoiexCoiugr0191a8xSl20bMfFoLvR0IqPZjaObFHqRdeIu8YgUtVv8WyIU DKikCv5UeqrdmA4r.gMk1.7GhNSTZdIlnSFbjU6hwDrMLn8rJ5k0Nsa_RlWyf5WMyTBAxes77_NN JKxV06MV71xTm3gSxyFca0soeW1dyWjOQHefqHXBuHOATKSan5j7PEgJWaUKEvU8Uq55.D2sl392 1wQ7TCLsuPzszACkwV_6i_ldu9smPW2b7Xz1nh8NkyvePXZpqf_V.ej.63bIrg4.ZntRgdMzF6Yo YEGWheGaErifxgOM_6MgeJWJgK933OPKEkzvZuyt6s8MdyrMNj4KOWcFrWz8JzekKonzGF10jO86 DHyHbs5RxjoyeH.AOpWDBzEVLN7D_BhErBwtkDVKIzieKKSUCAm1MVAX1kFHo840kAwMvrowCwTU Vfd01r8H1_LPEa0DPlNzDLT10z48X3Ed2u8DaLIdMMaRKLerYIhFKj1B.dnpp63utt711tV4qhpl lwYm56jN__4b2mmwItzGRm9gMjT5SVpXX1Nqqnyy68nilc.uLVnPR3T.CaCJIZWZZKK0a5iPRE9i 4ujC3N_tIrclaMmO37tgELcq3WJbJlBhXBQr6B5q1sEU8cdcfFFUFcGA2VCzcw9r8DZ1EtwkgB5b AO5NI7w.OlpleHvSDUovPXNll0any0YGsJAWN7sJ4Xn3TPXN3DEWX.7WpUP7X6cOfbyKGcMwji3S hpyI7IcDysFx3NmAVXRPQ7rDiTvE2y7mqxjLhFV8VcWtXC_Tto8LyizYxsMMjV7lTZ0Dl9JUoXx0 ioYj27bVZDDP8LTtTNGqAcQeuWUsWsg4ZzKI_VGDTVUg5HiZ2xzM- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic311.consmr.mail.ir2.yahoo.com with HTTP; Mon, 9 May 2022 10:44:30 +0000 Date: Mon, 9 May 2022 10:47:49 +0000 (UTC) From: Hannes Domani To: Jonathan Wakely , Paul Smith Cc: gcc-help Message-ID: <50961608.1629009.1652093269873@mail.yahoo.com> In-Reply-To: <0cb93fd8169d89f2263204de88ca45f68d39677e.camel@mad-scientist.net> References: <5568db74d0acb198a3e8121ee75e3cfa02ea0c6f.camel@mad-scientist.net> <453082091.802975.1651922375216@mail.yahoo.com> <222e7c9b9ac74aa886c1501792e677a0dfa1f268.camel@mad-scientist.net> <27202f68e59e9a17aaa96d39659ce73005325cd7.camel@mad-scientist.net> <7c6d308fdbbcabf83dd5423c33ca851666beaae7.camel@mad-scientist.net> <0cb93fd8169d89f2263204de88ca45f68d39677e.camel@mad-scientist.net> Subject: Re: Help using the GDB C++ STL pretty-printers / xmethods MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Mailer: WebService/1.1.20188 YMailNorrin X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-help@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-help mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 May 2022 10:44:34 -0000 Am Sonntag, 8. Mai 2022, 22:26:37 MESZ hat Paul Smith Folgendes geschrieben: > On Sun, 2022-05-08 at 15:44 -0400, Paul Smith wrote: > > On Sun, 2022-05-08 at 09:16 +0100, Jonathan Wakely wrote: > > > > gdb.set_convenience_variable('mgr', val['mgr']) > > > > init =3D gdb.parse_and_eval('$mgr->initialized') > > > > > > > > This will use the xmethod to evaluate the expression. > > > > > > And then: > > > > > > if init: > > >=C2=A0=C2=A0=C2=A0=C2=A0 return gdb.parse_and_eval('*$mgr') > > > > Unfortunately, this doesn't work :(.=C2=A0 I can't do it from the GDB > > command line or python (I have tried both with the same results). > > Something about convenience variables doesn't play well with xmethods > > (or maybe this xmethod implementation specifically?) > > Hm.=C2=A0 I have done a fair amount of work writing GDB Python convenienc= e > functions and commands, but I've only done a small amount of pretty- > printer work and no xmethod implementations. > > But I don't understand this from the C++ STL xmethods.py: > >=C2=A0=C2=A0 class UniquePtrGetWorker(gdb.xmethod.XMethodWorker): >=C2=A0=C2=A0=C2=A0=C2=A0 ... >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 def __call__(self, obj): >=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 impl_type =3D= obj.dereference().type.fields()[0].type.tag > > Why are we using dereference() here?=C2=A0 Aren't we expecting to receive= a > gdb.Value of type std::unique_ptr here, not _pointer to_ > > std::unique_ptr? > > > But, it definitely doesn't work to remove the dereference(), and also > the value we get normally IS a pointer; adding debugging above I see: > >=C2=A0=C2=A0 type: 'std::unique_ptr > *' > > I don't really grok xmethods so I'm not sure how calling "foo->val" > when "foo" is std::unique_ptr<> results in the __call__ method being > invoked with a gdb.Value of type std::unique_ptr<>*. > > My suspicion (not based on anything) is that whatever the reason is, is > why I can't use these xmethods with a convenience variable. This is documented in the XMethod API, see XMethodWorker.__call__ in [1]: The first element is always the this pointer value. Why don't you just set the convenience variable to the address?: (gdb) set $xx=3D&foo (gdb) p (*$xx)->val $7 =3D 0 Hannes