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 B49213835822 for ; Mon, 17 May 2021 10:54:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B49213835822 X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1621248851; bh=huMmGiW6ZXCUMtcrgawAWz755zsfOfkdWrP6q//3UXc=; h=X-Sonic-MF:Date:From:To:Subject:From:Subject; b=LopU7hX+ykaI6b38FxT6WoYPRZswytE2vGd1qyYH7Q49EE2PmHuiKDu86f0OTVnqvxa06RumR/xh+BtgHRRS6qEorChlXQ9VcBjhJp5T7qjHxhtOSO8MlgWaAB3D0ZtniZ8sA8URorh64EP/3J4kvmYIE746eld7ue5VI+ssyK4ZGFlJF+rC1xHZHahUxLhcTjpfwD+oP5jEehU5w+mgL075qQx2UmZHPP+uQfcxtmPhCUTK7UpJoWPI7n+ZDTjjKTvUqReJNUB5DpLsWjrliuK0UgMIJDoGIlRBcqVNvbqTrB2VSKKeB81LDDq+Hf8W9GaCHmtjRuWoXmobaVelWA== X-YMail-OSG: X0GsAJMVM1nfDcPvqeWsoTJ33Nynoxw95dAowUesjq0eb5g211zLjIiuHfwC_lr 5CNQTPDtYJwHWqTvdo22HoFQt70R3yyJlQ2inXefhmrpT249yWHoGk9cO0WarDJ_DwkHpyTKJ9vy LJUmTZmIb8YoxF30ImL_Ln2_vIoNoM8Sa0t5HrWKW0lBM3il2Nk05HWmSoTkkm_V9SX_P0kbmJbc DRWP7QyEvLQK3c120bR4tO5VsUThIbTFYQKBNcFEsxamiwsQUvEBLUxaj87Y3ihYzAItJjKM2NV5 U1IQcFKcBvkfCM.XFoVWMRihv5Ailf8Cs20Kvi4G2jf5fYodUE16fLDLlkFPBc0C0j0hdS9NotDU k6EI5ezrqbaoM3iOeIO_k8IDGTQIEiCh7aazT3KjQrTtAp.jQIkHZLeeu7hs15wpOeIQlez92sSH W8JZasLuAZWgO8brOW7NupEjaoGWC7WRnOdAQODYB0CkPVuzOtpBdlolmIHP9go6DGEm4fGXCZa8 J4tcimUsHeyBUybMJET.ciPTeLngZpYshEkXHpRXOfYHaZRsa8E0_ltkwVJJ0z8YLvF7.8G5VXbe Szg7GT0.IxwbZEaajEhxZfpeyVZqulc2H1fXvu3TahHF4nwnIm.QTrHp3RbjZm2sgpWO01s529mX e1WQpYvPddVQATpPiTaNrmlthtZsk0JoaqokKE3CRH1D585VyA1zhcjQ4ixuqT97afLamGlULs4V _Zqfvr_W7w.Ho7wte2VGq5k_ykqX.oMu3BzYmzT5sNiDCBPxp57OoEavDlReNqYx8gABZj7nBh7E fX4qMgPfwzciWUPmJScjFlx8QUsB6.ltJd.6uhdl_ZSYr58JJ4LK4z4cPM7b87NwfMEgGAex5lis z9TMW9bp3xByqGgyXLoTDETymrqnjve.TRk9c6SLwxrNnv1p6V0EUknhkIQ373HjuqUTHSmE4UgK AOrH9vmFgAkIjA4E3.QWMPmjnwLlCc9S5QVS5s4lmwQm6UUcJiTBq.ewGoWZmWY5eWURbqU2fyYT qmuGIM.kFNgdrzl3EQxmFJXpYzs8VifHug8Le3Y90UUz8dIdxQid_9M7gMtL7PUcoEuDpu_9gpvM ciiRY95ggRfSvtbQl2Xx7W6RM_9.oewC3JAqrAvwoX.UAjNAykmtRTDsBsG67qKRIrx6zRIETBk4 Aho7BKbqtjhUajaaoKk135FNEBa8CYSIk41NbC72iiMjKI7FnPDDEjZ2v8xxOOM2x0YPOrku5fH2 2YjmLRPyQGLKP40ms8lzVGmdXDlvUBZtjHv5F8Gyr1XdkbnqDU1GHCPyWvqf1EvmEjOMlncuZKvR MfV4126tyPV65r7A4tyjenZSZ2CnJM3W6seNfYhYCXX7d.T3yWnf0YtyzIhwnauotmQ6e2otb0V6 W0lo6XK_kNUpDnO1o3HgRF3HoObwhprBycShvdu5N4FhDHZJ7kRChvSLJ1Z1EuzTO1w6k8Epuj.P jqcBDEVVxqwXoeBGdcLPybAquxGz8DkNzv8rzSZ2gbW_wnPywjsZpaDFQVuFvCZWIyu0VYCVoJFK C0Vw7LbRP7DhxkVRIb7cE_deeRTtGfGIwzvdic15bfpa_KUWub3YNNPpGaWUNbx3fjp4G4zzpsdD 1Yxde3yuIrm1GolmVhfCPWEjKaTupd3PgHjwe4dR8DV.xsE8IvcKVVRr_AruBmgdNei2DA7BPGi5 gsYq9J_yzfuNlkGCdYlFZM2CgX9If3LK3EjYYKURaXyBPBQzY5WTQeMqI5Pj2Fc3ab1HvwopntpC QquBc_eMzAh.ITt.aDOIiFCKD04WgsMGcZVvashqHEim3b0XlmFtjeWI1.FrFxBVEt_A9mFDD7Ip 9pa_P8TOnwfZotNn.H46dj.HMVDR1b5b9GFng6hMB43oBVEsdSPgx9QVdaGGV_c2weSrxN.xpZKf k9olt4vHMi_dRyi5BMzAy_qdZR4iB.BCJmtjs3JmZwqAPiPxOagUbzbRrKmOkrWkab7olnKjlgaa lG4SMdYitWNrkteGBePLHs_SCO8d8xvbqSWXtl432pWOwcQ5ReXcn5bB68xqTIxyQAUTQsUzQH2N W8q9cvMGdsFfcjQ2ZcwCqV79KVLJGXkqyJQhQiDvRCPMdS6uUuvKrRV2rfex1PAwe6BgUgQ2gXSM PTpMXpzj_1F1kr9epFkdKHMZabY7YKWK7YDTtS4SjuDcNEkd.7jPRPBsLbJipi5_zDw7q6UPh5D_ aUtEK3Lm0XHPAjcmaO.CEQkKIiokpFmlx6v54jbAgJ80F0.RVqudy7zZ5uHwnMpaYl82l4JKsl67 y7eAgzdkWsRagOIPYLAsJUEFThi8H4H0FIeoTRFXs0YwgramuLPBSwHQ5uBLsARcZ3oPrbSJqFjY wTCuIPULcPQm2GTF4rfi2xgpgZmBIFypnY3sS_sWB8AYaneO2x62JB5fs6IPNqUX3dY3qmwB3na8 xS_NsYtP5SGAvr_WfrQN6hpapASyXbMs3c4oHofp.0Fa4KB8vNQBnxFCRztVO8SJ5njp6AT86_Bi qIBBh6GvFsGBzT9VBpa0sQr0m.A-- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic303.consmr.mail.ir2.yahoo.com with HTTP; Mon, 17 May 2021 10:54:11 +0000 Date: Mon, 17 May 2021 10:54:08 +0000 (UTC) From: Hannes Domani To: Andrew Burgess Cc: "gdb-patches@sourceware.org" Message-ID: <981574547.1965792.1621248848432@mail.yahoo.com> In-Reply-To: <20210517094824.GM3067949@embecosm.com> References: <20210131134611.3255-1-ssbssa.ref@yahoo.de> <20210131134611.3255-1-ssbssa@yahoo.de> <20210517094824.GM3067949@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.18291 YMailNorrin Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0 X-Spam-Status: No, score=-3.0 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, 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: Mon, 17 May 2021 10:54:14 -0000 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 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/gdb-te= stsuite/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/gdb-te= stsuite/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/gdb-t= estsuite/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/gdb-te= stsuite/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 if th= e > > 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/gdb-te= stsuite/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/gdb-t= estsuite/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/gdb-te= stsuite/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/gdb-te= stsuite/gdb/testsuite/gdb.python/py-frame-args.c:57 > > > > So this adds the PRINT_RAW_FRAME_ARGUMENTS flag to frame_filter_flag, w= hich > > is then used in the frame-filter to override the raw flag in enumerate_= args. > > > > Then the output is the same if a frame-filter is active, the pretty-pri= nter > > 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/gdb-te= stsuite/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/gdb-te= stsuite/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/gdb-t= estsuite/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/gdb-te= stsuite/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 see > 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"},{name= =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"},{name= =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"},{name= =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 print >=C2=A0=C2=A0=C2=A0=C2=A0 raw-values' or 'set print raw-frame-arguments' se= em 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-values' = seems >=C2=A0=C2=A0=C2=A0=C2=A0 to effect how arguments are printed, but 'set pri= nt >=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 prob= lem? Hannes