public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Doug Evans <dje@google.com>
To: Pedro Alves <palves@redhat.com>
Cc: Eli Zaretskii <eliz@gnu.org>, gdb-patches <gdb-patches@sourceware.org>
Subject: Re: [PATCH v6 2/2] enable target async by default; separate MI and target notions of async
Date: Wed, 30 Jul 2014 18:40:00 -0000	[thread overview]
Message-ID: <CADPb22RFFDgOCAJp+LVET2ueg1CPqSVGdcqarLtNJj_o_KgjtA@mail.gmail.com> (raw)
In-Reply-To: <53873ABE.9070801@redhat.com>

On Thu, May 29, 2014 at 6:48 AM, Pedro Alves <palves@redhat.com> wrote:
> [...]
> Below's what I pushed.
>
> 8<------------
> Subject: [PATCH] enable target async by default; separate MI and target
>  notions of async
>
> This finally makes background execution commands possible by default.
>
> However, in order to do that, there's one last thing we need to do --
> we need to separate the MI and target notions of "async".  Unlike the
> CLI, where the user explicitly requests foreground vs background
> execution in the execution command itself (c vs c&), MI chose to treat
> "set target-async" specially -- setting it changes the default
> behavior of execution commands.
>
> So, we can't simply "set target-async" default to on, as that would
> affect MI frontends.  Instead we have to make the setting MI-specific,
> and teach MI about sync commands on top of an async target.
>
> Because the "target" word in "set target-async" ends up as a potential
> source of confusion, the patch adds a "set mi-async" option, and makes
> "set target-async" a deprecated alias.
>
> Rather than make the targets always async, this patch introduces a new
> "maint set target-async" option so that the GDB developer can control
> whether the target is async.  This makes it simpler to debug issues
> arising only in the synchronous mode; important because sync mode
> seems unlikely to go away.
>
> Unlike in previous revisions, "set target-async" does not affect this
> new maint parameter.  The rationale for this is that then one can
> easily run the test suite in the "maint set target-async off" mode and
> have tests that enable mi-async fail just like they fail on
> non-async-capable targets.  This emulation is exactly the point of the
> maint option.
>
> I had asked Tom in a previous iteration to split the actual change of
> the target async default to a separate patch, but it turns out that
> that is quite awkward in this version of the patch, because with MI
> async and target async decoupled (unlike in previous versions), if we
> don't flip the default at the same time, then just "set target-async
> on" alone never actually manages to do anything.  It's best to not
> have that transitory state in the tree.
>
> Given "set target-async on" now only has effect for MI, the patch goes
> through the testsuite removing it from non-MI tests.  MI tests are
> adjusted to use the new and less confusing "mi-async" spelling.
>
> 2014-05-29  Pedro Alves  <palves@redhat.com>
>             Tom Tromey  <tromey@redhat.com>
>
>         * NEWS: Mention "maint set target-async", "set mi-async", and that
>         background execution commands are now always available.
>         * target.h (target_async_permitted): Update comment.
>         * target.c (target_async_permitted, target_async_permitted_1):
>         Default to 1.
>         (set_target_async_command): Rename to ...
>         (maint_set_target_async_command): ... this.
>         (show_target_async_command): Rename to ...
>         (maint_show_target_async_command): ... this.
>         (_initialize_target): Adjust.
>         * infcmd.c (prepare_execution_command): Make extern.
>         * inferior.h (prepare_execution_command): Declare.
>         * infrun.c (set_observer_mode): Leave target async alone.
>         * mi/mi-interp.c (mi_interpreter_init): Install
>         mi_on_sync_execution_done as sync_execution_done observer.
>         (mi_on_sync_execution_done): New function.
>         (mi_execute_command_input_handler): Don't print the prompt if we
>         just started a synchronous command with an async target.
>         (mi_on_resume): Check sync_execution before printing prompt.
>         * mi/mi-main.h (mi_async_p): Declare.
>         * mi/mi-main.c: Include gdbcmd.h.
>         (mi_async_p): New function.
>         (mi_async, mi_async_1): New globals.
>         (set_mi_async_command, show_mi_async_command, mi_async): New
>         functions.
>         (exec_continue): Call prepare_execution_command.
>         (run_one_inferior, mi_cmd_exec_run, mi_cmd_list_target_features)
>         (mi_execute_async_cli_command): Use mi_async_p.
>         (_initialize_mi_main): Install "set mi-async".  Make
>         "target-async" a deprecated alias.
>
> 2014-05-29  Pedro Alves  <palves@redhat.com>
>             Tom Tromey  <tromey@redhat.com>
>
>         * gdb.texinfo (Non-Stop Mode): Remove "set target-async 1"
>         from example.
>         (Asynchronous and non-stop modes): Document '-gdb-set mi-async'.
>         Mention that target-async is now deprecated.
>         (Maintenance Commands): Document maint set/show target-async.
>
> 2014-05-29  Pedro Alves  <palves@redhat.com>
>             Tom Tromey  <tromey@redhat.com>
>
>         * gdb.base/async-shell.exp: Don't enable target-async.
>         * gdb.base/async.exp
>         * gdb.base/corefile.exp (corefile_test_attach): Remove 'async'
>         parameter.  Adjust.
>         (top level): Don't test with "target-async".
>         * gdb.base/dprintf-non-stop.exp: Don't enable target-async.
>         * gdb.base/gdb-sigterm.exp: Don't test with "target-async".
>         * gdb.base/inferior-died.exp: Don't enable target-async.
>         * gdb.base/interrupt-noterm.exp: Likewise.
>         * gdb.mi/mi-async.exp: Use "mi-async" instead of "target-async".
>         * gdb.mi/mi-nonstop-exit.exp: Likewise.
>         * gdb.mi/mi-nonstop.exp: Likewise.
>         * gdb.mi/mi-ns-stale-regcache.exp: Likewise.
>         * gdb.mi/mi-nsintrall.exp: Likewise.
>         * gdb.mi/mi-nsmoribund.exp: Likewise.
>         * gdb.mi/mi-nsthrexec.exp: Likewise.
>         * gdb.mi/mi-watch-nonstop.exp: Likewise.
>         * gdb.multi/watchpoint-multi.exp: Adjust comment.
>         * gdb.python/py-evsignal.exp: Don't enable target-async.
>         * gdb.python/py-evthreads.exp: Likewise.
>         * gdb.python/py-prompt.exp: Likewise.
>         * gdb.reverse/break-precsave.exp: Don't test with "target-async".
>         * gdb.server/solib-list.exp: Don't enable target-async.
>         * gdb.threads/thread-specific-bp.exp: Likewise.
>         * lib/mi-support.exp: Adjust to use mi-async.

Hi.

I happened to notice a couple of comments that still need updating.

linux-nat.c:

/* target_is_async_p implementation.  */

static int
linux_nat_is_async_p (struct target_ops *ops)
{
  /* NOTE: palves 2008-03-21: We're only async when the user requests
     it explicitly with the "set target-async" command.
     Someday, linux will always be async.  */
  return target_async_permitted;
}

/* target_can_async_p implementation.  */

static int
linux_nat_can_async_p (struct target_ops *ops)
{
  /* NOTE: palves 2008-03-21: We're only async when the user requests
     it explicitly with the "set target-async" command.
     Someday, linux will always be async.  */
  return target_async_permitted;
}

  reply	other threads:[~2014-07-30 18:30 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-23 20:59 [PATCH v6 0/2] enable target-async by default Pedro Alves
2014-05-23 20:59 ` [PATCH v6 2/2] enable target async by default; separate MI and target notions of async Pedro Alves
2014-05-24  7:03   ` Eli Zaretskii
2014-05-29 13:49     ` Pedro Alves
2014-07-30 18:40       ` Doug Evans [this message]
2014-05-23 20:59 ` [PATCH v6 1/2] Make display_gdb_prompt CLI-only Pedro Alves
2014-05-29 13:44 ` [pushed] Re: [PATCH v6 0/2] enable target-async by default Pedro Alves
2014-07-01 16:28   ` Regression for attach from stdin [Re: [pushed] Re: [PATCH v6 0/2] enable target-async by default] Jan Kratochvil
2014-07-02  8:59     ` Mark Wielaard
2014-07-02  9:16       ` Pedro Alves
2014-07-03 15:39         ` Pedro Alves
2014-07-04 13:48           ` [PATCH] Fix "attach" command vs user input race [Re: Regression for attach from stdin [Re: [pushed] Re: [PATCH v6 0/2] enable target-async by default]] Pedro Alves
2014-07-04 21:13             ` Mark Wielaard
2014-07-07 16:39             ` Doug Evans
2014-07-08 15:24               ` Pedro Alves
2014-07-09 16:37                 ` Doug Evans
2014-07-09 17:09                   ` [pushed+7.8] " Pedro Alves
2014-07-29 22:03                     ` Doug Evans
2014-07-29 23:10                       ` Doug Evans
2014-07-30 12:46                         ` Pedro Alves
2014-07-30 12:38                       ` Pedro Alves
2014-07-30 16:59                         ` Doug Evans
2014-08-21 16:34                           ` [PUSHED] infcmd.c: Remove stale TODO Pedro Alves
2014-09-03  7:59                     ` Regression: GDB stopped on run with attached process (PR 17347) [Re: [pushed+7.8] Re: [PATCH] Fix "attach" command vs user input race [Re: Regression for attach from stdin [Re: [pushed] Re: [PATCH v6 0/2] enable target-async by default]]] Jan Kratochvil
2014-09-03 20:11                       ` Regression: GDB stopped on run with attached process (PR 17347) [Re: [pushed+7.8] Re: [PATCH] Fix "attach" command vs user input race Pedro Alves
2014-09-07 19:28                         ` Jan Kratochvil
2014-09-08 16:19                           ` [PATCH 1/2] testsuite: refactor spawn and wait for attach (was: Re: Regression: GDB stopped on run with attached process) Pedro Alves
2014-09-09 17:29                             ` Jan Kratochvil
2014-09-09 17:35                               ` [PATCH 1/2] testsuite: refactor spawn and wait for attach Pedro Alves
2014-09-10 21:25                                 ` Pedro Alves
2014-09-11 12:34                                   ` Pedro Alves
2014-09-08 16:27                           ` Regression: GDB stopped on run with attached process (PR 17347) [Re: [pushed+7.8] Re: [PATCH] Fix "attach" command vs user input race Pedro Alves
2014-09-09 18:25                             ` Jan Kratochvil
2014-09-11 12:36                               ` Pedro Alves
2014-09-12  7:34                                 ` [testsuite patch] runaway attach processes [Re: Regression: GDB stopped on run with attached process (PR 17347)] Jan Kratochvil
2014-09-12 10:14                                   ` Pedro Alves
2014-09-12 11:40                                     ` [commit] " Jan Kratochvil
2014-07-07 17:02             ` [PATCH] Fix "attach" command vs user input race [Re: Regression for attach from stdin [Re: [pushed] Re: [PATCH v6 0/2] enable target-async by default]] Jan Kratochvil
2014-10-05 14:00   ` Crash regression for annota1.exp w/vDSO debuginfo [Re: [pushed] Re: [PATCH v6 0/2] enable target-async by default] Jan Kratochvil
2014-10-05 14:14     ` Jan Kratochvil
2014-10-05 16:43     ` Jan Kratochvil
2014-10-09 15:48     ` Pedro Alves

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=CADPb22RFFDgOCAJp+LVET2ueg1CPqSVGdcqarLtNJj_o_KgjtA@mail.gmail.com \
    --to=dje@google.com \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    /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).