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 gdb-7.8-branch updated. gdb-7.8-release-115-gcbd6f6b


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, gdb-7.8-branch has been updated
       via  cbd6f6bf80881be4628622e369baafb337589578 (commit)
      from  c9792faa1e25cb54edf55ffce93582370c99e4ac (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=cbd6f6bf80881be4628622e369baafb337589578

commit cbd6f6bf80881be4628622e369baafb337589578
Author: Pedro Alves <palves@redhat.com>
Date:   Thu Oct 23 17:13:35 2014 +0100

    PR python/17372 - Python hangs when displaying help()
    
    This is more of a readline/terminal issue than a Python one.
    
    PR17372 is a regression in 7.8 caused by the fix for PR17072:
    
     commit 0017922d0292d8c374584f6100874580659c9973
     Author: Pedro Alves <palves@redhat.com>
     Date:   Mon Jul 14 19:55:32 2014 +0100
    
        Background execution + pagination aborts readline/gdb
    
        gdb_readline_wrapper_line removes the handler after a line is
        processed.  Usually, we'll end up re-displaying the prompt, and that
        reinstalls the handler.  But if the output is coming out of handling
        a stop event, we don't re-display the prompt, and nothing restores the
        handler.  So the next input wakes up the event loop and calls into
        readline, which aborts.
    ...
        gdb/
        2014-07-14  Pedro Alves  <palves@redhat.com>
    
            PR gdb/17072
            * top.c (gdb_readline_wrapper_line): Tweak comment.
            (gdb_readline_wrapper_cleanup): If readline is enabled, reinstall
            the input handler callback.
    
    The problem is that installing the input handler callback also preps
    the terminal, putting it in raw mode and with echo disabled, which is
    bad if we're going to call a command that assumes cooked/canonical
    mode, and echo enabled, like in the case of the PR, Python's
    interactive shell.  Another example I came up with that doesn't depend
    on Python is starting a subshell with "(gdb) shell /bin/sh" from a
    multi-line command.  Tests covering both these examples are added.
    
    The fix is to revert the original fix for PR gdb/17072, and instead
    restore the callback handler after processing an asynchronous target
    event.
    
    Furthermore, calling rl_callback_handler_install when we already have
    some input in readline's line buffer discards that input, which is
    obviously a bad thing to do while the user is typing.  No specific
    test is added for that, because I first tried calling it even if the
    callback handler was still installed and that resulted in hundreds of
    failures in the testsuite.
    
    gdb/
    2014-10-29  Pedro Alves  <palves@redhat.com>
    
    	PR python/17372
    	* event-top.c (change_line_handler): Call
    	gdb_rl_callback_handler_remove instead of
    	rl_callback_handler_remove.
    	(callback_handler_installed): New global.
    	(gdb_rl_callback_handler_remove, gdb_rl_callback_handler_install)
    	(gdb_rl_callback_handler_reinstall): New functions.
    	(display_gdb_prompt): Call gdb_rl_callback_handler_remove and
    	gdb_rl_callback_handler_install instead of
    	rl_callback_handler_remove and rl_callback_handler_install.
    	(gdb_disable_readline): Call gdb_rl_callback_handler_remove
    	instead of rl_callback_handler_remove.
    	* event-top.h (gdb_rl_callback_handler_remove)
    	(gdb_rl_callback_handler_install)
    	(gdb_rl_callback_handler_reinstall): New declarations.
    	* infrun.c (reinstall_readline_callback_handler_cleanup): New
    	cleanup function.
    	(fetch_inferior_event): Install it.
    	* top.c (gdb_readline_wrapper_line) Call
    	gdb_rl_callback_handler_remove instead of
    	rl_callback_handler_remove.
    	(gdb_readline_wrapper_cleanup): Don't call
    	rl_callback_handler_install.
    
    gdb/testsuite/
    2014-10-29  Pedro Alves  <palves@redhat.com>
    
    	PR python/17372
    	* gdb.python/python.exp: Test a multi-line command that spawns
    	interactive Python.
    	* gdb.base/multi-line-starts-subshell.exp: New file.

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

Summary of changes:
 gdb/ChangeLog                                      |   26 ++++++++
 gdb/event-top.c                                    |   61 ++++++++++++++++++--
 gdb/event-top.h                                    |   11 ++++
 gdb/infrun.c                                       |   20 +++++++
 gdb/testsuite/ChangeLog                            |    7 ++
 .../gdb.base/multi-line-starts-subshell.exp        |   55 ++++++++++++++++++
 gdb/testsuite/gdb.python/python.exp                |   16 +++++
 gdb/top.c                                          |   19 ++++--
 8 files changed, 204 insertions(+), 11 deletions(-)
 create mode 100644 gdb/testsuite/gdb.base/multi-line-starts-subshell.exp


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]