From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic302-20.consmr.mail.ir2.yahoo.com (sonic302-20.consmr.mail.ir2.yahoo.com [87.248.110.83]) by sourceware.org (Postfix) with ESMTPS id E6E183857419 for ; Mon, 9 May 2022 10:52:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E6E183857419 X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1652093521; bh=Jy983jAjeM0ZVLDJ4goKsLxtYOB89WRn7p3JXa76wzL=; h=X-Sonic-MF:Date:From:To:Subject:From:Subject; b=g7Z0Svh9YKNuxt5yeMN1r6VtZ3h2Gti8/MV03aHSAopAgND/XSDHrMyLRRHFLlJxWIak6ruLTU50orjvfkUZr1sIrL6EfqsPtZVTF2W8bxyL5nafs+SgLYIRF/Nk1N0ZRQuTdcoErbN3/GClTGAA7mvbe+tZUWgyPrM3zdEAjMoNuAyG7BhbyUAIDF5IZOY71ms3pzrSQgI6/DU14ew4K4SMsxGtESxagihDuwD4HaOoawaI/zleC06MAPh0vYq50t7D0VBs7y3S87RKv6ubunywCZE/KSv0DSyFUJ8n/Xv+72uZKvzzC30k+6o5HWxm6cfrUgjHFLH26v+8nALdBQ== X-YMail-OSG: pNkULy8VM1nPJzi395A1E3cJW3Qj_KOJvBKY0PjfNFK0kXLVdZBbmcIwjc0IsZm 6jZ9ICPJ3JdGEkhWDL0UyGPQnT9kVKO7gWnH01C_ynLUaVk9TD.Xme74vWDVW4JSjY2L93H0KdFY n5YErOMId4ulRlz50kxMtsRtN2fZTMut9v_qbbYi3nfxKXWGEebb.GiuGqc3I6o8daCNi4P98Td4 9WFCrPteX8VQgvQT_.u_Thjb_Q18nIq.7clah4N0XbQZXZlKIzu90uSx.cVFWJyGOmZVWzRbM7c1 8jEbb9X58Miq_ApymEKGgKCYlzsUTXVzF9JiLQcQYla8CKxBc4f0m8C3g7dSBPbXx8maDROZubNd jHS9dhyoUnbNsWbnyvIBeNDsUerhOdPDLLjdhp.pxjSlBwAK2o09MMYk0cEim0zHW7Bl28A.JStd b67UokwfNT7UQraIeAOgLBGq4SRS_PoDSamiE0eAj506plrxPcBy4hQl6uFmKSzLhqDPJWzHUFEU yE3VF04wV_vBaKGQtsE5LPJIBiM6vuQ6HK7elT30iF2MD7URtEsHM7RfMloUrnnoHR5keUQNCbM7 1aApgWNaqzIvTH6h2Dh6.7GOcrI4u42IRWFdxgvr9HOySmeQfmnamV83f1a.vwKgwAUAYooiRhOm N3c8_JGEGWNw_F1uaZQlkZBAF7J2923P2J0DGXefi3ZE9uFF2Jta0m0bb2Lzu_P7bDGPszPMA28z Kr3g5V_DVxW709Z6X21KnUPlY1GMxsWuf_PdFGOElmezEhuHL5sIroKkVSquLzw_V9W9DvBtE0kA eWdKgX58QGYiiryrFnDvEvTGYDrfRecOiReP6brKTMvUBV5oV9C6msqeSaHZKO8ejupl_5oNeBIv HJBhOkAADe7EEIvegntLPjIp.0q_fl5TWKjlnbVnYZfmztGXNfYxBhUvwhZ3qcbowv22M2fjzqi3 Ep5MRVQpmNPiIunsvvq3v997mD32uo7rjCTQa_.UvaOT5BuKRLV14P2JULJ5wdChgnr.2PFy_My4 Y.AbooNQKZOWg0IO.ZhzEsKw8WY6OsAFH8mzjrSkoCcUCe.eAa9TzEymOpP8uWNfkvFI3jfnzNA8 s2_umFXi1u3iGzqBV06gR3169ZXklgpNHpeiv9VbgN0nWJUIXkhqT71zN64cNC7Gq0JPSU4F8I2L ALGLRXikfK2VHTFQc6KaduINvSom1WJzTT8hlFvXo4uNw9wgn9fb1TJ_Mw6K.8hcjQA.C3OdyBr6 K6qpI_a0spfSz2.R2YlpxFo82O1p9EUsMj4znoiKjOrcOC2LsllCJC1lnk4LaiEtVDX0TseV12mT YWevuVseW833QNvQLnRNJRLGtDcZPpFwc4E9GliqAAFLaP1PaHmc7IXgACcm2MeDeBvUIJVhlk.b 7yhkL26y_BRorwKM42aQDAOliInt6r4JqeVHsALvVa4mTrd2G47Bwrita2VP9TNRCSJWhkZJ8Vpf 1qyagu.k3R6.wYSzbwgSzhFJSSKitpFZbHWAhEW75f2oFWiZbUKDE2FJd5KCZntJps1FkdtAo3nI 94T0um0IasHNl00u_IPRlr_dfatcPhDvo5sVW95UKx_ozLG4Vb8Cs8NnIKJSQ2cqwPnKWwR2bL17 xmq8T9_nWgafU5r3.EDs5kDnDhUbgocRdZNCivPlGwDXu6ECC49537G1rcnL_m7GlhyXMUR0UQSu m1mcqxc0HAkDYoeBQCXrbEE8T9HrKRTtUiyppzGaCi5e44H.Kw2R8S0Cbvx0fdWeobjoQgYXXpKT eD_Ak3Apu.h6n7eEU76xoY_win3WmHrPIWjWg1Wdu7r8qLuYccQvaaT9cQ_wJ5K1_lPdR.7rcAPj _1tfpBMjkemukL16fH6U3vB6dpqln6INsaMdo9lFjHslYS8cMjpbJ9hcCVHrlEg8o6fvYlWw6NAq KbNzEbMMUuROEebupZ_ZcJVQuQymJOHGsE2_dAy55GZrTMJsuTHJ.nfHPNOWbz4qvRgeXra21Me_ a7s_GxzXByb.6ptfpbzZivqrCYlz9dBqUWcoYnz.qW.J7fRwgCAj4rXc.Kqfj8omgwT7hwE_YSzP 0C9icvM9i1hBa1s2TwrW9DgbhltTeU7IgX9Z3s5OCTHqizjYed0So5KwnNjuN0kE83zdMKHSyLwf k2DdYwgJ5beXYf02lO.tADpV8ckvdW5NznkBe4yBTj4GMZaD9t5rrpPUyc1SbS9fflzUVDDb0Qr. oE6IEPbOOUHhiyE4OQVo8FewQnM8gsIpB7VC20uoTzQUiAV6hvNdgNZe0okG7hKDFpXNJhdZmSOd 5RstgwPrrImNPQVZqcauuaYwnrmyaCslTh5QuJ_KBSU.2yBWxTTSK_jzG2ZKHHgvSsd6v X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic302.consmr.mail.ir2.yahoo.com with HTTP; Mon, 9 May 2022 10:52:01 +0000 Date: Mon, 9 May 2022 10:52:40 +0000 (UTC) From: Hannes Domani To: Jonathan Wakely , Paul Smith Cc: gcc-help Message-ID: <1603624112.1639754.1652093560089@mail.yahoo.com> In-Reply-To: <50961608.1629009.1652093269873@mail.yahoo.com> 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> <50961608.1629009.1652093269873@mail.yahoo.com> 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=-2.5 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:52:08 -0000 Am Montag, 9. Mai 2022, 12:47:49 MESZ hat Hannes Domani = Folgendes geschrieben: > 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 convenie= nce > > 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 recei= ve 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 I forgot to add the link. [1] https://sourceware.org/gdb/current/onlinedocs/gdb/Xmethod-API.html#inde= x-XMethodWorker_002e_005f_005fcall_005f_005f