From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic303-20.consmr.mail.ir2.yahoo.com (sonic303-20.consmr.mail.ir2.yahoo.com [77.238.178.201]) by sourceware.org (Postfix) with ESMTPS id A3DB03848410 for ; Fri, 4 Jun 2021 14:03:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A3DB03848410 X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1622815410; bh=cMdodGUn97QpfqEZEvlV5CMg//Y91BlRm1mO3VgDkJd=; h=X-Sonic-MF:Date:From:To:Subject:From:Subject; b=Pq0EvrB0VtfggID50pgz1dR0fehSK8eqm2UlRn2p+D0cQNcFEmqh9SHcb8mMq+ZOdxgrd4yxpQMJ0zB1YA8wSPAJWJmIuUIjKG6DA7EWDwg7OH6SU9m3d3V+0h2gL8xVMflA3oXQGW5qxLJkCIL+f89jFBRn47TRz3IUZlWemM5rkUlvBbZXdkyTvpiCElyman5V6cvzyDePzwHPsOpuKzFHWAWOu0zbPvr/Dax7yVelZ5k5yPqeSCJiZeGQXcpun6dMBF4ls+9M5eJFOcNvz4fBII4f9XnvKWmOyBJH/tv3Vola0aS2sSMMxseFSYtYOAfbf5So++zuISOjVf4H3A== X-YMail-OSG: MtgWvf8VM1nWrXfauz42r2vuap12pr5FqIq5_TSCMEMMSRMNp0XqjL_FxVduqiX dVSJ5j7ipRINj0qEROnH7XSCJbCGCmUpGAwwlJ1z6Mujz40ASeGwk7vsR6k9Fl75lJQ95kWD_o2e ehVoWl4Mn5BFQziRroe5AYBClSo5x4wJQoG97LuiDc7HKNhi0pi1UvV9Zv2t6xziH8EAGOFaNvBS O5gCaaY1Goe3k3W6ra3vld8Dsl6sns5gQQd0ncuO82LbypsN3m6YvwS0tXWE_7nePb44lYjtZVI8 OR8XDu7ofWe37te.ZyyWDAEBt37mCGKBKEDFtWfHY1bDbSNMntKlx6.A_TAhGOg7S9PKZP8.pwGs Tt94m8Dm5tdT7JQUDo7bqSAiznCubeon479roHTf_eOiIpj3qhqeTmgV6UzUYRIK3aWweAIQEx5R iicwQcupVilaucV08LXda2bGb9kqgcD9jSaT_SvfQXlZqjObBE.L7fD5yMeVfj4hOe5LRlCEpsCv WDuefKiWGPckQdO7tdj1M8YNcTV1MDj7vZ1Z7YK.516nhtiKh9UQfTSvtB8ILkG2OwuZ44bdnLYK 5YucXnMuK2ZWJ8BTP6W0hFgN_.XjzcnzMnaGpJVcQ6vLICHSyMD1zCFVNZsQAvlu4K5XcIN7ThzQ KJu45BL2xkUUCQWY1P.XBej.1Et7vloya8EqvDeQWYuJMc5R.DYFg7_BOMLRPIe5XotB3cdTctfV ySXu2SJiwjIfVySqp5TfVAQ2l033EdYhXeENenI.z4mjpmKtyoO_mMi.vxPaRe4OrIug4EUUwRyO rCV5.JHS2AgsRXcgfhMXuCouqO8mJIc.UvkUsxptczcsMhmChCPse4OTjfNyiUaH.txllSJ6Q20N iBE39NEe_jcWqlEF13Dr0u4VDPms2OEXKLzksH.lVfQMr_5kEgaFIVTCGmopqXN9gDk0StcgTDiN _1wUqcx4Ev9E5gT8eIcpX6xX9UIz3oLhmT_b7CT_SLqUcjmtyx.yKPA52gVBgqkBZDCTniPZMx0t ilDl07POL9JSdptzUTXhRhrG.hk5mHxnC6py_MPCB6LiMaw5k.h2obP1x.jS9GFWegCut9ldcCuK PwvZQCUYSSydlVPXMiR0vKAYHrxdgQt.x_FHJVxMqEJ8NwYlGhPjkA1ANNxRE399R0gI1TOgvlK. Qcyo2_Bgr3PmJY8JZCoSWZRLLuP7kr1Rf40bUZwSg18Gw3ixM1b1jGv2RtvzFm84Z5kpTiXd7nlE hql90jcpf5NV4fdow9YE1HMTQ.o_DNKnGQ8wGjMwCKhoLKCINm.GUHnyJBKo9CywOZOEUhXkLdA9 cgHH1UXv.o_bhhJvCW.K5eLg7pmAIfkPZGWBxZL03iEfVan8x9hZWPO_E2nNpgGATNkmsWxzZzjq ncxCCiy8hIhTkrIkRjnW1SvxtscNp2HxPzD3a3TfqxJQdSdqO4pfneZ24wIDYKofgQrhGHPDRP4X _It4eo389e7SlWQXPSgf15iKsQTWPf1cDOGZfCZGgMCmtYbCrAQkvscZIlFXoeszZfIBg1uFdAdu Ruw.xlGJTMqSjpSow44WMKG4z8wmfdRlV5fU5wbr48Esi0rcUZfXKSd2bdLFMGcke2fgYWdnYY2K 0kBV18Q_CjjZhqY2mKgDGc0nwXCqJkFGgWzO6Ri6Go_uK2WQH0H5BvNU6woWxog7mgLhqvBGC6F4 vCP4M2XSV6H_ZIiFKACmaLc11R6yIbUz1kLEM89fNSGSTqgvvfb7CzTj0AUmcsDnQs.8PpZHlRv2 LyOX6DgqfqXPyA4HPDgP86taIRPYihGep26gm8bmpDjoL_h1.onJ7Mq0fyeo0CeHIEgllFhMQn0b SyMrhFUc9KKawGTz5M9fNOeqIFJj_zXp6sZhwCA6erdNwJdUIz88q_hXQ58BuatXGSursln5cn33 J.VIcZRzKo4AGjp5DpMMRMltG2.3cLUBwD0bfj34jvkjtCCnESMDpSij4OChUxiZheyLsHi_lnit e63xHOHza4HcWFSeCJKVZfUKHR0NnrSIR.JWks0Seupi6yPrF3D3OM3r0ptDlOrETJpE2jdSEV7q VWTC1WzxNiehv8rCcNyySBFiDzIGfYQl_7.KuXvEKOBsJbEud71v2aMNh9YYRucECPQi7KGwrh_4 EMlnRq5W1eyIZe_6ykCnS4sy4Sy4wFYzXolTIciZ0xQtAXjLnIefJOJEO0GVCDVlCc_8NlHCcMIU IKDxSV3SjqS9U5yS.HVd5caUOD0_QWdFVZdYNqLzMh2nnilW.Hyyh0i2Sj.AVBldIjz83zK2TPR4 paTLJUT4IO_Hc4.jmxzSxgqCXfdsSPluZX79Se_mqEVDINjs2Wjz_ICSF5mc..1mS8QAV04d11Ii YGB3j9E7VJMxK0ym8EooXjc8T9Uc8fG5meMiZ3gWoff0wl3dL.jEU6gCj5CP5l8vXA3ZQxL2KE.L AAnZW9RXYhMd3duesdQEMCTaqH7H.8xvJhiv7HWVu_WvJMfU5ot0vRAwIkQrBBDny666jiYeNKod nvtyG8.xhtjCWRA-- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic303.consmr.mail.ir2.yahoo.com with HTTP; Fri, 4 Jun 2021 14:03:30 +0000 Date: Fri, 4 Jun 2021 14:03:27 +0000 (UTC) From: Hannes Domani To: Andrew Burgess Cc: "gdb-patches@sourceware.org" Message-ID: <96825665.5208200.1622815407635@mail.yahoo.com> In-Reply-To: <20210602131648.GL2672@embecosm.com> References: <20210131134611.3255-1-ssbssa.ref@yahoo.de> <20210131134611.3255-1-ssbssa@yahoo.de> <20210517094824.GM3067949@embecosm.com> <981574547.1965792.1621248848432@mail.yahoo.com> <20210602131648.GL2672@embecosm.com> Subject: Re: [PATCH v2] Fix raw-frame-arguments in combination with frame-filters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Mailer: WebService/1.1.18368 YMailNorrin X-Spam-Status: No, score=-9.0 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 Jun 2021 14:03:42 -0000 Am Mittwoch, 2. Juni 2021, 15:17:51 MESZ hat Andrew Burgess Folgendes geschrieben: > * Hannes Domani [2021-05-17 10:54:08 +0000]: > > >=C2=A0 Am Montag, 17. Mai 2021, 11:48:27 MESZ hat Andrew Burgess Folgendes geschrieben: > > > > > * Hannes Domani via Gdb-patches [2021-01= -31 14:46:11 +0100]: > > > > > > > Currently, if frame-filters are active, raw-values is used instead = of > > > > raw-frame-arguments to decide if a pretty-printer should be invoked= for > > > > frame arguments in a backtrace. > > > > > > > > In this example, "super struct" is the output of the pretty-printer= : > > > > > > > >=C2=A0=C2=A0=C2=A0 (gdb) disable frame-filter global BasicFrameFilte= r > > > >=C2=A0=C2=A0=C2=A0 (gdb) bt > > > >=C2=A0=C2=A0=C2=A0 #0=C2=A0 foo (x=3D42, ss=3Dsuper struct =3D {...}= ) at C:/src/repos/gdb-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:47 > > > >=C2=A0=C2=A0=C2=A0 #1=C2=A0 0x004016aa in main () at C:/src/repos/gd= b-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:57 > > > > > > > > If no frame-filter is active, then the raw-values print option does= not > > > > affect the backtrace output: > > > > > > > >=C2=A0=C2=A0=C2=A0 (gdb) set print raw-values on > > > >=C2=A0=C2=A0=C2=A0 (gdb) bt > > > >=C2=A0=C2=A0=C2=A0 #0=C2=A0 foo (x=3D42, ss=3Dsuper struct =3D {...}= ) at C:/src/repos/gdb-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:47 > > > >=C2=A0=C2=A0=C2=A0 #1=C2=A0 0x004016aa in main () at C:/src/repos/gd= b-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:57 > > > >=C2=A0=C2=A0=C2=A0 (gdb) set print raw-values off > > > > > > > > Instead, the raw-frame-arguments option disables the pretty-printer= in the > > > > backtrace: > > > > > > > >=C2=A0=C2=A0=C2=A0 (gdb) bt -raw-frame-arguments on > > > >=C2=A0=C2=A0=C2=A0 #0=C2=A0 foo (x=3D42, ss=3D...) at C:/src/repos/g= db-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:47 > > > >=C2=A0=C2=A0=C2=A0 #1=C2=A0 0x004016aa in main () at C:/src/repos/gd= b-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:57 > > > > > > > > But if a frame-filter is active, the same rules don't apply. > > > > The option raw-frame-arguments is ignored, but raw-values decides i= f the > > > > pretty-printer is used: > > > > > > > >=C2=A0=C2=A0=C2=A0 (gdb) enable frame-filter global BasicFrameFilter > > > >=C2=A0=C2=A0=C2=A0 (gdb) bt > > > >=C2=A0=C2=A0=C2=A0 #0=C2=A0 foo (x=3D42, ss=3Dsuper struct =3D {...}= ) at C:/src/repos/gdb-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:47 > > > >=C2=A0=C2=A0=C2=A0 #1=C2=A0 0x004016aa in main () at C:/src/repos/gd= b-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:57 > > > >=C2=A0=C2=A0=C2=A0 (gdb) set print raw-values on > > > >=C2=A0=C2=A0=C2=A0 (gdb) bt > > > >=C2=A0=C2=A0=C2=A0 #0=C2=A0 foo (x=3D42, ss=3D...) at C:/src/repos/g= db-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:47 > > > >=C2=A0=C2=A0=C2=A0 #1=C2=A0 0x004016aa in main () at C:/src/repos/gd= b-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:57 > > > >=C2=A0=C2=A0=C2=A0 (gdb) set print raw-values off > > > >=C2=A0=C2=A0=C2=A0 (gdb) bt -raw-frame-arguments on > > > >=C2=A0=C2=A0=C2=A0 #0=C2=A0 foo (x=3D42, ss=3Dsuper struct =3D {...}= ) at C:/src/repos/gdb-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:47 > > > >=C2=A0=C2=A0=C2=A0 #1=C2=A0 0x004016aa in main () at C:/src/repos/gd= b-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:57 > > > > > > > > So this adds the PRINT_RAW_FRAME_ARGUMENTS flag to frame_filter_fla= g, which > > > > is then used in the frame-filter to override the raw flag in enumer= ate_args. > > > > > > > > Then the output is the same if a frame-filter is active, the pretty= -printer > > > > for backtraces is only disabled with the raw-frame-arguments option= : > > > > > > > >=C2=A0=C2=A0=C2=A0 (gdb) enable frame-filter global BasicFrameFilter > > > >=C2=A0=C2=A0=C2=A0 (gdb) bt > > > >=C2=A0=C2=A0=C2=A0 #0=C2=A0 foo (x=3D42, ss=3Dsuper struct =3D {...}= ) at C:/src/repos/gdb-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:47 > > > >=C2=A0=C2=A0=C2=A0 #1=C2=A0 0x004016aa in main () at C:/src/repos/gd= b-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:57 > > > >=C2=A0=C2=A0=C2=A0 (gdb) set print raw-values on > > > >=C2=A0=C2=A0=C2=A0 (gdb) bt > > > >=C2=A0=C2=A0=C2=A0 #0=C2=A0 foo (x=3D42, ss=3Dsuper struct =3D {...}= ) at C:/src/repos/gdb-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:47 > > > >=C2=A0=C2=A0=C2=A0 #1=C2=A0 0x004016aa in main () at C:/src/repos/gd= b-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:57 > > > >=C2=A0=C2=A0=C2=A0 (gdb) set print raw-values off > > > >=C2=A0=C2=A0=C2=A0 (gdb) bt -raw-frame-arguments on > > > >=C2=A0=C2=A0=C2=A0 #0=C2=A0 foo (x=3D42, ss=3D...) at C:/src/repos/g= db-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:47 > > > >=C2=A0=C2=A0=C2=A0 #1=C2=A0 0x004016aa in main () at C:/src/repos/gd= b-testsuite/gdb/testsuite/gdb.python/py-frame-args.c:57 > > > > > > Thanks for working on improving this behaviour. > > > > > > I think that there's something weird going on with the MI behaviour. > > > > > > I ran the py-frame-args.c test program, stopped at line 47, then I se= e > > > this: > > > > > >=C2=A0=C2=A0 (gdb) set print raw-frame-arguments off > > >=C2=A0=C2=A0 (gdb) set print raw-values off > > >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-stack-list-variables 1" > > >=C2=A0=C2=A0 ^done,variables=3D[{name=3D"x",arg=3D"1",value=3D"42"},{n= ame=3D"ss",arg=3D"1",value=3D"super struct =3D {\n=C2=A0 a =3D m=3D<1>,\n= =C2=A0 b =3D m=3D<2>\n}"}] > > >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" > > >=C2=A0=C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D= "x",value=3D"42"},{name=3D"ss",value=3D"super struct =3D {\n=C2=A0 a =3D m= =3D<1>,\n=C2=A0 b =3D m=3D<2>\n}"}]},frame=3D{level=3D"1",args=3D[]}] > > > > > >=C2=A0=C2=A0 (gdb) set print raw-frame-arguments on > > >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" > > >=C2=A0=C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D= "x",value=3D"42"},{name=3D"ss",value=3D"super struct =3D {\n=C2=A0 a =3D m= =3D<1>,\n=C2=A0 b =3D m=3D<2>\n}"}]},frame=3D{level=3D"1",args=3D[]}] > > >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-stack-list-variables 1" > > >=C2=A0=C2=A0 ^done,variables=3D[{name=3D"x",arg=3D"1",value=3D"42"},{n= ame=3D"ss",arg=3D"1",value=3D"super struct =3D {\n=C2=A0 a =3D m=3D<1>,\n= =C2=A0 b =3D m=3D<2>\n}"}] > > > > > >=C2=A0=C2=A0 (gdb) set print raw-values on > > >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" > > >=C2=A0=C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D= "x",value=3D"42"},{name=3D"ss",value=3D"super struct =3D {\n=C2=A0 a =3D m= =3D<1>,\n=C2=A0 b =3D m=3D<2>\n}"}]},frame=3D{level=3D"1",args=3D[]}] > > >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-stack-list-variables 1" > > >=C2=A0=C2=A0 ^done,variables=3D[{name=3D"x",arg=3D"1",value=3D"42"},{n= ame=3D"ss",arg=3D"1",value=3D"{\n=C2=A0 a =3D {\n=C2=A0=C2=A0=C2=A0 m =3D 1= \n=C2=A0 },\n=C2=A0 b =3D {\n=C2=A0=C2=A0=C2=A0 m =3D 2\n=C2=A0 }\n}"}] > > >=C2=A0=C2=A0 (gdb) > > > > > > The summary is: > > > > > >=C2=A0=C2=A0 - when just doing '-stack-list-arguments' neither 'set pr= int > > >=C2=A0=C2=A0=C2=A0=C2=A0 raw-values' or 'set print raw-frame-arguments= ' seem to effect what > > >=C2=A0=C2=A0=C2=A0=C2=A0 is printed, and > > > > > >=C2=A0=C2=A0 - when doing '-stack-list-variables', 'set print raw-valu= es' seems > > >=C2=A0=C2=A0=C2=A0=C2=A0 to effect how arguments are printed, but 'set= print > > >=C2=A0=C2=A0=C2=A0=C2=A0 raw-frame-arguments' does not. > > > > > > I guess I would expect 'set print raw-frame-arguments' to be the > > > controlling option in both these cases. > > > > I'm not completely sure now, is that something this patch breaks? > > Or do you mean this should be fixed as well, since it's a very similar = problem? > > All of the above :) > > There is I believe at least one regression with this patch, the > following session is using GDB without your patch, break in your test > program at line 47 then: > >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-enable-frame-filters" >=C2=A0=C2=A0 ^done >=C2=A0=C2=A0 (gdb) set print raw-values off >=C2=A0=C2=A0 (gdb) set print raw-frame-arguments off >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" >=C2=A0=C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D"x",= value=3D"42"},{name=3D"ss",value=3D"super struct =3D {\n=C2=A0 a =3D m=3D<1= >,\n=C2=A0 b =3D m=3D<2>\n}"}]},frame=3D{level=3D"1",args=3D[]}] >=C2=A0=C2=A0 (gdb) set print raw-values on >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" >=C2=A0=C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D"x",= value=3D"42"},{name=3D"ss",value=3D"{\n=C2=A0 a =3D {\n=C2=A0=C2=A0=C2=A0 m= =3D 1\n=C2=A0 },\n=C2=A0 b =3D {\n=C2=A0=C2=A0=C2=A0 m =3D 2\n=C2=A0 }\n}"= }]},frame=3D{level=3D"1",args=3D[]}] >=C2=A0=C2=A0 (gdb) set print raw-values off >=C2=A0=C2=A0 (gdb) set print raw-frame-arguments on >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" >=C2=A0=C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D"x",= value=3D"42"},{name=3D"ss",value=3D"super struct =3D {\n=C2=A0 a =3D m=3D<1= >,\n=C2=A0 b =3D m=3D<2>\n}"}]},frame=3D{level=3D"1",args=3D[]}] > > Notice that 'set print raw-values' controls whether 'ss' is printed > raw or not. > > This is an existing bug, but it would be neat if this got fixed in > this commit as it is so close to what you're already fixing. > > BUT.... > > With your patch applied the above behaviour changes, I now see this: > >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-enable-frame-filters" >=C2=A0=C2=A0 ^done >=C2=A0=C2=A0 (gdb) set print raw-values off >=C2=A0=C2=A0 (gdb) set print raw-frame-arguments off >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" >=C2=A0=C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D"x",= value=3D"42"},{name=3D"ss",value=3D"super struct =3D {\n=C2=A0 a =3D m=3D<1= >,\n=C2=A0 b =3D m=3D<2>\n}"}]},frame=3D{level=3D"1",args=3D[]}] >=C2=A0=C2=A0 (gdb) set print raw-values on >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" >=C2=A0=C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D"x",= value=3D"42"},{name=3D"ss",value=3D"super struct =3D {\n=C2=A0 a =3D m=3D<1= >,\n=C2=A0 b =3D m=3D<2>\n}"}]},frame=3D{level=3D"1",args=3D[]}] >=C2=A0=C2=A0 (gdb) set print raw-values off >=C2=A0=C2=A0 (gdb) set print raw-frame-arguments on >=C2=A0=C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" >=C2=A0=C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D"x",= value=3D"42"},{name=3D"ss",value=3D"super struct =3D {\n=C2=A0 a =3D m=3D<1= >,\n=C2=A0 b =3D m=3D<2>\n}"}]},frame=3D{level=3D"1",args=3D[]}] > > Notice now that even 'set print raw-values on|off' doesn't change how > 'ss' is printed, it's always pretty-printed. > > I think as a minimum you need to fix this regression, and ideally add > a test for this case, as clearly it's not covered in the existing tests. > > However, while trying to figure out how reasonable it was to ask you > to fix the above, I think I probably fixed it (see the patch below, > which applies on top of yours), the only thing missing would be some > tests, which would still need to be written.=C2=A0 I'll take a look when = I > have time, but if you wanted to write some then this would be great. > > Let me know how you'd feel about including this fix with yours, I'm fine with including this in my patch. So with your changes I get the expected result: =C2=A0 (gdb) interpreter-exec mi "-enable-frame-filters" =C2=A0 ^done =C2=A0 (gdb) set print raw-values off =C2=A0 (gdb) set print raw-frame-arguments off =C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" =C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D"x",value= =3D"42"},{name=3D"ss",value=3D"super struct =3D {a =3D m=3D<1>, b =3D m=3D<= 2>}"}]},frame=3D{level=3D"1",args=3D[]}] =C2=A0 (gdb) set print raw-values on =C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" =C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D"x",value= =3D"42"},{name=3D"ss",value=3D"super struct =3D {a =3D m=3D<1>, b =3D m=3D<= 2>}"}]},frame=3D{level=3D"1",args=3D[]}] =C2=A0 (gdb) set print raw-values off =C2=A0 (gdb) set print raw-frame-arguments on =C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" =C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D"x",value= =3D"42"},{name=3D"ss",value=3D"{a =3D {m =3D 1}, b =3D {m =3D 2}}"}]},frame= =3D{level=3D"1",args=3D[]}] But if I disable the frame-filter, it's again 'set print raw-values' that controls how 'ss' is printed: =C2=A0 (gdb) disable frame-filter global BasicFrameFilter =C2=A0 (gdb) interpreter-exec mi "-enable-frame-filters" =C2=A0 ^done =C2=A0 (gdb) set print raw-values off =C2=A0 (gdb) set print raw-frame-arguments off =C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" =C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D"x",value= =3D"42"},{name=3D"ss",value=3D"super struct =3D {a =3D m=3D<1>, b =3D m=3D<= 2>}"}]},frame=3D{level=3D"1",args=3D[]}] =C2=A0 (gdb) set print raw-values on =C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" =C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D"x",value= =3D"42"},{name=3D"ss",value=3D"{a =3D {m =3D 1}, b =3D {m =3D 2}}"}]},frame= =3D{level=3D"1",args=3D[]}] =C2=A0 (gdb) set print raw-values off =C2=A0 (gdb) set print raw-frame-arguments on =C2=A0 (gdb) interpreter-exec mi "-stack-list-arguments 1" =C2=A0 ^done,stack-args=3D[frame=3D{level=3D"0",args=3D[{name=3D"x",value= =3D"42"},{name=3D"ss",value=3D"super struct =3D {a =3D m=3D<1>, b =3D m=3D<= 2>}"}]},frame=3D{level=3D"1",args=3D[]}] I didn't see an obvious fix for this, maybe you can take a look at this? Regarding the tests, I would have just integrated it to py-frame-args.exp, see patch below. Hannes diff --git a/gdb/testsuite/gdb.python/py-frame-args.exp b/gdb/testsuite/gdb= .python/py-frame-args.exp index dae0c0ac29e..3711e2f5c54 100644 --- a/gdb/testsuite/gdb.python/py-frame-args.exp +++ b/gdb/testsuite/gdb.python/py-frame-args.exp @@ -35,6 +35,8 @@ gdb_breakpoint [gdb_get_line_number "break-here"] =C2=A0gdb_continue_to_breakpoint "break-here" ".* break-here .*" =C2=A0 =C2=A0# Test raw-frame-arguments on backtrace with and without frame-filter +gdb_test "interpreter-exec mi \"-enable-frame-filters\"" \ +=C2=A0=C2=A0=C2=A0 "done" =C2=A0foreach_with_prefix filtered {enable disable} { =C2=A0=C2=A0=C2=A0=C2=A0 gdb_test_no_output "$filtered frame-filter global = BasicFrameFilter" =C2=A0 @@ -46,11 +48,24 @@ foreach_with_prefix filtered {enable disable} { =C2=A0=C2=A0=C2=A0 =C2=A0".*foo \\(x=3D42, ss=3D\[.\]{3}\\).*" \ =C2=A0=C2=A0=C2=A0 =C2=A0"bt raw" =C2=A0 +=C2=A0=C2=A0=C2=A0 gdb_test "interpreter-exec mi \"-stack-list-arguments 1= \"" \ +=C2=A0=C2=A0 =C2=A0".*name=3D\"ss\",value=3D\"super struct =3D.*" \ +=C2=A0=C2=A0 =C2=A0"mi bt pretty" + +=C2=A0=C2=A0=C2=A0 gdb_test_no_output "set print raw-frame-arguments on" +=C2=A0=C2=A0=C2=A0 gdb_test "interpreter-exec mi \"-stack-list-arguments 1= \"" \ +=C2=A0=C2=A0 =C2=A0".*name=3D\"ss\",value=3D\".a =3D.*" \ +=C2=A0=C2=A0 =C2=A0"mi bt raw" +=C2=A0=C2=A0=C2=A0 gdb_test_no_output "set print raw-frame-arguments off" + =C2=A0=C2=A0=C2=A0=C2=A0 # "set print raw-values" should not affect frame a= rguments =C2=A0=C2=A0=C2=A0=C2=A0 gdb_test_no_output "set print raw-values on" =C2=A0=C2=A0=C2=A0=C2=A0 gdb_test "bt 1" \ =C2=A0=C2=A0=C2=A0 =C2=A0".*foo \\(x=3D42, ss=3Dsuper struct =3D {\[.\]{3}}= \\).*" \ =C2=A0=C2=A0=C2=A0 =C2=A0"bt pretty,raw-values" +=C2=A0=C2=A0=C2=A0 gdb_test "interpreter-exec mi \"-stack-list-arguments 1= \"" \ +=C2=A0=C2=A0 =C2=A0".*name=3D\"ss\",value=3D\"super struct =3D.*" \ +=C2=A0=C2=A0 =C2=A0"mi bt pretty,raw-values" =C2=A0=C2=A0=C2=A0=C2=A0 gdb_test_no_output "set print raw-values off" =C2=A0} =C2=A0