This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

gdb and binutils branch master updated. 329ea57934a9d4b250a0b417af1ec47bc2d0ceb6


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gdb and binutils".

The branch, master has been updated
       via  329ea57934a9d4b250a0b417af1ec47bc2d0ceb6 (commit)
       via  92bcb5f949b1d1f14df079bbe9fd3941c1e09919 (commit)
      from  fd664c91769bf7e31c3b4d64e41d05854eecd94a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=329ea57934a9d4b250a0b417af1ec47bc2d0ceb6

commit 329ea57934a9d4b250a0b417af1ec47bc2d0ceb6
Author: Pedro Alves <palves@redhat.com>
Date:   Thu May 29 19:58:57 2014 +0100

    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.

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=92bcb5f949b1d1f14df079bbe9fd3941c1e09919

commit 92bcb5f949b1d1f14df079bbe9fd3941c1e09919
Author: Pedro Alves <palves@redhat.com>
Date:   Fri May 23 11:37:12 2014 +0100

    Make display_gdb_prompt CLI-only.
    
    Enabling target-async by default will require implementing sync
    execution on top of an async target, much like foreground command are
    implemented on the CLI in async mode.
    
    In order to do that, we will need better control of when to print the
    MI prompt.  Currently the interp->display_prompt_p hook is all we
    have, and MI just always returns false, meaning, make
    display_gdb_prompt a no-op.  We'll need to be able to know to print
    the MI prompt in some of the conditions that display_gdb_prompt is
    called from the core, but not all.
    
    This is all a litte twisted currently.  As we can see,
    display_gdb_prompt is really CLI specific, so make the console
    interpreters (console/tui) themselves call it.  To be able to do that,
    and add a few different observers that the interpreters can use to
    distinguish when or why the the prompt is being printed:
    
    #1 - one called whenever a command is cancelled due to an error.
    #2 - another for when a foreground command just finished.
    
    In both cases, CLI wants to print the prompt, while MI doesn't.
    
    MI will want to print the prompt in the second case when in a special
    MI mode.
    
    The display_gdb_prompt call in interp_set made me pause.  The comment
    there reads:
    
      /* Finally, put up the new prompt to show that we are indeed here.
         Also, display_gdb_prompt for the console does some readline magic
         which is needed for the console interpreter, at least...  */
    
    But, that looks very much like a no-op to me currently:
    
     - the MI interpreter always return false in the prompt hook, meaning
       actually display no prompt.
    
     - the interpreter used at that point is still quiet.  And the
       console/tui interpreters return false in the prompt hook if they're
       quiet, meaning actually display no prompt.
    
    The only remaining possible use would then be the readline magic.  But
    whatever that might have been, it's not reacheable today either,
    because display_gdb_prompt returns early, before touching readline if
    the interpreter returns false in the display_prompt_p hook.
    
    Tested on x86_64 Fedora 20, sync and async modes.
    
    gdb/
    2014-05-29  Pedro Alves  <palves@redhat.com>
    
    	* cli/cli-interp.c (cli_interpreter_display_prompt_p): Delete.
    	(_initialize_cli_interp): Adjust.
    	* event-loop.c: Include "observer.h".
    	(start_event_loop): Notify 'command_error' observers instead of
    	calling display_gdb_prompt.  Remove FIXME comment.
    	* event-top.c (display_gdb_prompt): Remove call into the
    	interpreters.
    	* inf-loop.c: Include "observer.h".
    	(inferior_event_handler): Notify 'command_error' observers instead
    	of calling display_gdb_prompt.
    	* infrun.c (fetch_inferior_event): Notify 'sync_execution_done'
    	observers instead of calling display_gdb_prompt.
    	* interps.c (interp_set): Don't call display_gdb_prompt.
    	(current_interp_display_prompt_p): Delete.
    	* interps.h (interp_prompt_p): Delete declaration.
    	(interp_prompt_p_ftype): Delete.
    	(struct interp_procs) <prompt_proc_p>: Delete field.
    	(current_interp_display_prompt_p): Delete declaration.
    	* mi-interp.c (mi_interpreter_prompt_p): Delete.
    	(_initialize_mi_interp): Adjust.
    	* tui-interp.c (tui_init): Install 'sync_execution_done' and
    	'command_error' observers.
    	(tui_on_sync_execution_done, tui_on_command_error): New
    	functions.
    	(tui_display_prompt_p): Delete.
    	(_initialize_tui_interp): Adjust.
    
    gdb/doc/
    2014-05-29  Pedro Alves  <palves@redhat.com>
    
    	* observer.texi (sync_execution_done, command_error): New
    	subjects.

-----------------------------------------------------------------------

Summary of changes:
 gdb/ChangeLog                                    |   63 ++++++++++++++++++
 gdb/NEWS                                         |   31 +++++++++
 gdb/cli/cli-interp.c                             |   31 ++++++---
 gdb/doc/ChangeLog                                |   14 ++++
 gdb/doc/gdb.texinfo                              |   54 ++++++++++-----
 gdb/doc/observer.texi                            |    8 ++
 gdb/event-loop.c                                 |    6 +-
 gdb/event-top.c                                  |    5 --
 gdb/inf-loop.c                                   |    3 +-
 gdb/infcmd.c                                     |    6 +-
 gdb/inferior.h                                   |    7 ++
 gdb/infrun.c                                     |    3 +-
 gdb/interps.c                                    |   30 +-------
 gdb/interps.h                                    |    5 +-
 gdb/mi/mi-interp.c                               |   61 +++++++++++++----
 gdb/mi/mi-main.c                                 |   77 ++++++++++++++++++++--
 gdb/mi/mi-main.h                                 |    4 +
 gdb/target.c                                     |   25 ++++----
 gdb/target.h                                     |    3 +-
 gdb/testsuite/ChangeLog                          |   29 ++++++++
 gdb/testsuite/gdb.base/async-shell.exp           |    1 -
 gdb/testsuite/gdb.base/async.exp                 |    2 -
 gdb/testsuite/gdb.base/corefile.exp              |   17 +-----
 gdb/testsuite/gdb.base/dprintf-non-stop.exp      |    1 -
 gdb/testsuite/gdb.base/gdb-sigterm.exp           |   12 +---
 gdb/testsuite/gdb.base/inferior-died.exp         |    1 -
 gdb/testsuite/gdb.base/interrupt-noterm.exp      |    1 -
 gdb/testsuite/gdb.mi/mi-async.exp                |    2 +-
 gdb/testsuite/gdb.mi/mi-nonstop-exit.exp         |    2 +-
 gdb/testsuite/gdb.mi/mi-nonstop.exp              |    2 +-
 gdb/testsuite/gdb.mi/mi-ns-stale-regcache.exp    |    2 +-
 gdb/testsuite/gdb.mi/mi-nsintrall.exp            |    2 +-
 gdb/testsuite/gdb.mi/mi-nsmoribund.exp           |    2 +-
 gdb/testsuite/gdb.mi/mi-nsthrexec.exp            |    2 +-
 gdb/testsuite/gdb.mi/mi-watch-nonstop.exp        |    2 +-
 gdb/testsuite/gdb.multi/watchpoint-multi.exp     |    2 +-
 gdb/testsuite/gdb.python/py-evsignal.exp         |    1 -
 gdb/testsuite/gdb.python/py-evthreads.exp        |    1 -
 gdb/testsuite/gdb.python/py-prompt.exp           |    6 +-
 gdb/testsuite/gdb.reverse/break-precsave.exp     |    6 --
 gdb/testsuite/gdb.server/solib-list.exp          |    1 -
 gdb/testsuite/gdb.threads/thread-specific-bp.exp |    1 -
 gdb/testsuite/lib/mi-support.exp                 |    4 +-
 gdb/tui/tui-interp.c                             |   32 ++++++----
 44 files changed, 388 insertions(+), 182 deletions(-)


hooks/post-receive
-- 
gdb and binutils


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]