gdb: use tui_set_layout not show_layout to fix window focus
When calling tui_add_win_to_layout, use tui_set_layout not show_layout so that window focus is correctly updated. If the focus is not correctly maintained then GDB can be crashed like this: start tui enable layout asm list SOME_FUNCTION At this point GDB will have "popped up" the source window to display SOME_FUNCTION. Previously no window would have focus at this point, and so if the user now does 'focus next' or 'focus prev', then GDB would crash. Calling tui_set_layout ensures that focus is correctly calculated as the source window is "popped up", and this fixes the issue. gdb/ChangeLog: * tui/tui-layout.c (tui_add_win_to_layout): Use tui_set_layout not show_layout. gdb/testsuite/ChangeLog: * gdb.tui/list.exp: Test 'focus next' after 'list main'. Change-Id: Id0b13f99b0e889261efedfd0adabe82020202f44
This commit is contained in:
parent
6a5206eb27
commit
f2302a34f2
@ -1,3 +1,8 @@
|
||||
2020-01-05 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* tui/tui-layout.c (tui_add_win_to_layout): Use tui_set_layout not
|
||||
show_layout.
|
||||
|
||||
2020-01-05 Luis Machado <luis.machado@linaro.org>
|
||||
|
||||
* aarch64-linux-nat.c
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
2020-01-05 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* gdb.tui/list.exp: Test 'focus next' after 'list main'.
|
||||
|
||||
2020-01-03 Philippe Waroquiers <philippe.waroquiers@skynet.be>
|
||||
|
||||
* gdb.base/style.exp: Test that warnings are styled.
|
||||
|
||||
@ -35,3 +35,6 @@ Term::check_contents "asm window shows main" "$hex <main>"
|
||||
|
||||
Term::command "list main"
|
||||
Term::check_contents "list main" "21 *return 0"
|
||||
# The following 'focus next' must be immediately after 'list main' to
|
||||
# ensure that GDB has a valid idea of what is currently focused.
|
||||
Term::command "focus next"
|
||||
|
||||
@ -201,9 +201,9 @@ tui_add_win_to_layout (enum tui_win_type type)
|
||||
&& cur_layout != SRC_DATA_COMMAND)
|
||||
{
|
||||
if (cur_layout == DISASSEM_DATA_COMMAND)
|
||||
show_layout (SRC_DATA_COMMAND);
|
||||
tui_set_layout (SRC_DATA_COMMAND);
|
||||
else
|
||||
show_layout (SRC_COMMAND);
|
||||
tui_set_layout (SRC_COMMAND);
|
||||
}
|
||||
break;
|
||||
case DISASSEM_WIN:
|
||||
@ -212,9 +212,9 @@ tui_add_win_to_layout (enum tui_win_type type)
|
||||
&& cur_layout != DISASSEM_DATA_COMMAND)
|
||||
{
|
||||
if (cur_layout == SRC_DATA_COMMAND)
|
||||
show_layout (DISASSEM_DATA_COMMAND);
|
||||
tui_set_layout (DISASSEM_DATA_COMMAND);
|
||||
else
|
||||
show_layout (DISASSEM_COMMAND);
|
||||
tui_set_layout (DISASSEM_COMMAND);
|
||||
}
|
||||
break;
|
||||
case DATA_WIN:
|
||||
@ -222,9 +222,9 @@ tui_add_win_to_layout (enum tui_win_type type)
|
||||
&& cur_layout != DISASSEM_DATA_COMMAND)
|
||||
{
|
||||
if (cur_layout == DISASSEM_COMMAND)
|
||||
show_layout (DISASSEM_DATA_COMMAND);
|
||||
tui_set_layout (DISASSEM_DATA_COMMAND);
|
||||
else
|
||||
show_layout (SRC_DATA_COMMAND);
|
||||
tui_set_layout (SRC_DATA_COMMAND);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user