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;
}
next prev parent 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).