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. 3278a9f568b197cd754dd056b36803e5bd00872f


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  3278a9f568b197cd754dd056b36803e5bd00872f (commit)
      from  ee92b0dd4e4abc5063f689a084c27ee7d5b08942 (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=3278a9f568b197cd754dd056b36803e5bd00872f

commit 3278a9f568b197cd754dd056b36803e5bd00872f
Author: Patrick Palka <patrick@parcs.ath.cx>
Date:   Mon Aug 25 10:40:32 2014 -0400

    Fix terminal state corruption when starting a program from within TUI
    
    The TUI terminal state becomes corrupted (e.g. key sequences such as
    Alt_F and Alt_B no longer work) when one attaches to an inferior process
    (via "run" or "attach") from within TUI.  This terminal corruption
    remains until you switch out of TUI mode.
    
    This happens because the terminal state is not properly saved when
    switching to and out from TUI mode.  Although the functions tui_enable()
    and tui_disable() both call the function target_terminal_save_ours() to
    save the terminal state, this function is a no-op unless GDB has already
    attached to an inferior process.  This is because only the "native"
    target has a useful implementation of target_terminal_save_ours()
    (namely child_terminal_save_ours()) and we only have the "native" target
    in our target vector if GDB has already attached to an inferior process.
    
    So without an inferior process, switching to and from TUI mode does not
    actually save the terminal state.  Therefore when you attach to an
    inferior process from within TUI mode, the proper terminal state is not
    restored (after swapping from the inferior's terminal back to the GDB
    terminal).
    
    To fix this we just have to ensure that the terminal state is always
    being properly saved when switching from and to TUI mode.  To achieve
    this, this patch removes the polymorphic function
    target_terminal_save_ours() and replaces it with a regular function
    gdb_save_tty_state() that always saves the terminal state.
    
    Tested on x86_64-unknown-linux-gnu by running "make check", no new
    regressions.
    
    gdb/ChangeLog:
    	* target.h (struct target_ops::to_terminal_save_ours): Remove
    	declaration.
    	(target_terminal_save_ours): Remove macro.
    	* target-delegates.c: Regenerate.
    	* inf-child.c (inf_child_target): Don't set the nonexistent
    	field to_terminal_save_ours.
    	* inferior.h (child_terminal_save_ours): Remove declaration.
    	* terminal.h (gdb_save_tty_state): New declaration.
    	* inflow.c (child_terminal_save_ours): Rename to ...
    	(gdb_save_tty_state): ... this.
    	* tui/tui.c: Include terminal.h.
    	(tui_enable): Use gdb_save_tty_state instead of
    	target_terminal_save_ours.
    	(tui_disable): Likewise.

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

Summary of changes:
 gdb/inf-child.c        |    1 -
 gdb/inferior.h         |    2 --
 gdb/inflow.c           |    2 +-
 gdb/target-delegates.c |   26 --------------------------
 gdb/target.h           |   10 ----------
 gdb/terminal.h         |    2 ++
 gdb/tui/tui.c          |    5 +++--
 7 files changed, 6 insertions(+), 42 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]