public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Jan Vrany <jan.vrany@labware.com>
To: gdb-patches@sourceware.org
Subject: [PING] Re: [PATCH] MI: PR20684, preserve user selected thread and frame when invoking MI commands
Date: Tue, 02 Mar 2021 10:36:00 +0000	[thread overview]
Message-ID: <ae092acf0ba16f47e07e8e29f0ec130e1b95008e.camel@labware.com> (raw)
In-Reply-To: <71093a268d80ba44ededb868b850dde4873987b3.camel@labware.com>

Polite ping.

On Tue, 2021-02-23 at 11:20 +0000, Jan Vrany wrote:
> Polite ping. 
> 
> On Tue, 2021-02-09 at 10:08 +0000, Jan Vrany wrote:
> > When invoking MI commands with --thread and/or --frame, user
> > selected
> > thread and frame was not preserved:
> > 
> >   (gdb)
> >   info thread
> >   &"info thread\n"
> >   ~"  Id   Target Id                                          
> > Frame
> > \n"
> >   ~"* 1    Thread 0x7ffff7c30740 (LWP 19302) \"user-selected-c\"
> > main
> > () at /home/uuu/gdb/gdb/testsuite/gdb.mi/user-selected-context-
> > sync.c:60\n"
> >   ~"  2    Thread 0x7ffff7c2f700 (LWP 19306) \"user-selected-c\"
> > child_sub_function () at /home/uuu/gdb/gdb/testsuite/gdb.mi/user-
> > selected-context-sync.c:30\n"
> >   ~"  3    Thread 0x7ffff742e700 (LWP 19307) \"user-selected-c\"
> > child_sub_function () at /home/uuu/gdb/gdb/testsuite/gdb.mi/user-
> > selected-context-sync.c:30\n"
> >   ^done
> >   (gdb)
> >   info frame
> >   &"info frame\n"
> >   ~"Stack level 0, frame at 0x7fffffffdf90:\n"
> >   ~" rip = 0x555555555207 in main
> > (/home/uuu/gdb/gdb/testsuite/gdb.mi/user-selected-context-
> > sync.c:60);
> > saved rip = 0x7ffff7c5709b\n"
> >   ~" source language c.\n"
> >   ~" Arglist at 0x7fffffffdf80, args: \n"
> >   ~" Locals at 0x7fffffffdf80, Previous frame's sp is
> > 0x7fffffffdf90\n"
> >   ~" Saved registers:\n "
> >   ~" rbp at 0x7fffffffdf80, rip at 0x7fffffffdf88\n"
> >   ^done
> >   (gdb)
> >   -stack-info-depth --thread 3
> >   ^done,depth="4"
> >   (gdb)
> >   info thread
> >   &"info thread\n"
> >   ~"  Id   Target Id                                          
> > Frame
> > \n"
> >   ~"  1    Thread 0x7ffff7c30740 (LWP 19302) \"user-selected-c\"
> > main
> > () at /home/uuu/gdb/gdb/testsuite/gdb.mi/user-selected-context-
> > sync.c:60\n"
> >   ~"  2    Thread 0x7ffff7c2f700 (LWP 19306) \"user-selected-c\"
> > child_sub_function () at /home/uuu/gdb/gdb/testsuite/gdb.mi/user-
> > selected-context-sync.c:30\n"
> >   ~"* 3    Thread 0x7ffff742e700 (LWP 19307) \"user-selected-c\"
> > child_sub_function () at /home/uuu/gdb/gdb/testsuite/gdb.mi/user-
> > selected-context-sync.c:30\n"
> >   ^done
> >   (gdb)
> >   info frame
> >   &"info frame\n"
> >   ~"Stack level 0, frame at 0x7ffff742dee0:\n"
> >   ~" rip = 0x555555555169 in child_sub_function
> > (/home/uuu/gdb/gdb/testsuite/gdb.mi/user-selected-context-
> > sync.c:30);
> > saved rip = 0x555555555188\n"
> >   ~" called by frame at 0x7ffff742df00\n"
> >   ~" source language c.\n"
> >   ~" Arglist at 0x7ffff742ded0, args: \n"
> >   ~" Locals at 0x7ffff742ded0, Previous frame's sp is
> > 0x7ffff742dee0\n"
> >   ~" Saved registers:\n "
> >   ~" rbp at 0x7ffff742ded0, rip at 0x7ffff742ded8\n"
> >   ^done
> >   (gdb)
> > 
> > This was problematic for frontends that provide access to CLI
> > because
> > UI
> > may silently change the context for CLI commands (as demonstrated
> > above).
> > 
> > gdb/Changelog
> > 
> >         PR 20684
> >         * gdb/mi/mi-main.c (mi_cmd_execute): Preserve user selected
> > thread
> >         and frame when invoking MI commands.
> > ---
> >  gdb/ChangeLog    |  6 ++++++
> >  gdb/mi/mi-main.c | 36 +++++++++++++++---------------------
> >  2 files changed, 21 insertions(+), 21 deletions(-)
> > 
> > diff --git a/gdb/ChangeLog b/gdb/ChangeLog
> > index e67668d315c..ea232ff1b3f 100644
> > --- a/gdb/ChangeLog
> > +++ b/gdb/ChangeLog
> > @@ -1,3 +1,9 @@
> > +2021-02-09  Jan Vrany  <jan.vrany@labware.com>
> > +
> > +       PR 20684
> > +       * gdb/mi/mi-main.c (mi_cmd_execute): Preserve user selected
> > thread
> > +       and frame when invoking MI commands.
> > +
> >  2021-02-08  Shahab Vahedi  <shahab@synopsys.com>
> >  
> >         PR tdep/27369
> > diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
> > index 9a14d78e1e2..c5103800314 100644
> > --- a/gdb/mi/mi-main.c
> > +++ b/gdb/mi/mi-main.c
> > @@ -1971,25 +1971,13 @@ mi_execute_command (const char *cmd, int
> > from_tty)
> >              again.  */
> >           && !command_notifies_uscc_observer (command.get ()))
> >         {
> > -         int report_change = 0;
> > -
> > -         if (command->thread == -1)
> > -           {
> > -             report_change = (previous_ptid != null_ptid
> > -                              && inferior_ptid != previous_ptid
> > -                              && inferior_ptid != null_ptid);
> > -           }
> > -         else if (inferior_ptid != null_ptid)
> > -           {
> > -             struct thread_info *ti = inferior_thread ();
> > -
> > -             report_change = (ti->global_num != command->thread);
> > -           }
> > -
> > -         if (report_change)
> > -           {
> > -             gdb::observers::user_selected_context_changed.notify
> > -               (USER_SELECTED_THREAD | USER_SELECTED_FRAME);
> > +         if (command->thread == -1
> > +             && previous_ptid != null_ptid
> > +             && inferior_ptid != previous_ptid
> > +             && inferior_ptid != null_ptid)
> > +            {
> > +              gdb::observers::user_selected_context_changed.notify
> > +                      (USER_SELECTED_THREAD |
> > USER_SELECTED_FRAME);
> >             }
> >         }
> >      }
> > @@ -2035,6 +2023,7 @@ mi_cmd_execute (struct mi_parse *parse)
> >        set_current_program_space (inf->pspace);
> >      }
> >  
> > +  gdb::optional<scoped_restore_current_thread> thread_saver;
> >    if (parse->thread != -1)
> >      {
> >        thread_info *tp = find_thread_global_id (parse->thread);
> > @@ -2045,9 +2034,11 @@ mi_cmd_execute (struct mi_parse *parse)
> >        if (tp->state == THREAD_EXITED)
> >         error (_("Thread id: %d has terminated"), parse->thread);
> >  
> > +      thread_saver.emplace ();
> >        switch_to_thread (tp);
> >      }
> >  
> > +  gdb::optional<scoped_restore_selected_frame> frame_saver;
> >    if (parse->frame != -1)
> >      {
> >        struct frame_info *fid;
> > @@ -2055,8 +2046,11 @@ mi_cmd_execute (struct mi_parse *parse)
> >  
> >        fid = find_relative_frame (get_current_frame (), &frame);
> >        if (frame == 0)
> > -       /* find_relative_frame was successful */
> > -       select_frame (fid);
> > +        {
> > +          /* find_relative_frame was successful */
> > +          frame_saver.emplace ();
> > +          select_frame (fid);
> > +        }
> >        else
> >         error (_("Invalid frame id: %d"), frame);
> >      }
> 



  reply	other threads:[~2021-03-02 10:36 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-09 10:08 Jan Vrany
2021-02-23 11:20 ` [PING] " Jan Vrany
2021-03-02 10:36   ` Jan Vrany [this message]
2021-03-02 17:39     ` Jonah Graham
2021-03-09 12:04     ` Jan Vrany
2021-03-17 14:47       ` Jan Vrany
2021-03-23 13:31         ` Jan Vrany
2021-03-25 18:25 ` Simon Marchi
2021-04-14 15:27   ` Jan Vrany
     [not found] <b3e449f0581f9ba05b7523aa1aa4c3685511f0aa.camel@labware.com>
2021-03-02 20:27 ` [PING] " Jan Vrany

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ae092acf0ba16f47e07e8e29f0ec130e1b95008e.camel@labware.com \
    --to=jan.vrany@labware.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).