diff options
author | Pedro Alves <palves@redhat.com> | 2011-03-18 18:50:20 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2011-03-18 18:50:20 +0000 |
commit | f23d1b929daf1f1513c63ac810f05db9b1492c10 (patch) | |
tree | ff258d97f2322f574fcd58fd29dfb9f0d1bcdad2 /gdb/tui/tui-hooks.c | |
parent | 1d4f574102b243b00dead2f2ed9493c812cc07c9 (diff) | |
download | gdb-f23d1b929daf1f1513c63ac810f05db9b1492c10.zip gdb-f23d1b929daf1f1513c63ac810f05db9b1492c10.tar.gz gdb-f23d1b929daf1f1513c63ac810f05db9b1492c10.tar.bz2 |
gdb/
* tui/tui-hooks.c (tui_selected_frame_level_changed_hook): Assume
there's always a frame. Use get_frame_pc_if_available instead of
get_frame_pc, and if there's no PC available, don't look up a
symtab.
Diffstat (limited to 'gdb/tui/tui-hooks.c')
-rw-r--r-- | gdb/tui/tui-hooks.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/gdb/tui/tui-hooks.c b/gdb/tui/tui-hooks.c index e132b5a..97b99a7 100644 --- a/gdb/tui/tui-hooks.c +++ b/gdb/tui/tui-hooks.c @@ -190,6 +190,7 @@ static void tui_selected_frame_level_changed_hook (int level) { struct frame_info *fi; + CORE_ADDR pc; /* Negative level means that the selected frame was cleared. */ if (level < 0) @@ -199,28 +200,29 @@ tui_selected_frame_level_changed_hook (int level) /* Ensure that symbols for this frame are read in. Also, determine the source language of this frame, and switch to it if desired. */ - if (fi) + if (get_frame_pc_if_available (fi, &pc)) { struct symtab *s; - - s = find_pc_symtab (get_frame_pc (fi)); + + s = find_pc_symtab (pc); /* elz: This if here fixes the problem with the pc not being - displayed in the tui asm layout, with no debug symbols. The - value of s would be 0 here, and select_source_symtab would - abort the command by calling the 'error' function. */ + displayed in the tui asm layout, with no debug symbols. The + value of s would be 0 here, and select_source_symtab would + abort the command by calling the 'error' function. */ if (s) - select_source_symtab (s); - - /* Display the frame position (even if there is no symbols). */ - tui_show_frame_info (fi); - - /* Refresh the register window if it's visible. */ - if (tui_is_window_visible (DATA_WIN)) - { - tui_refreshing_registers = 1; - tui_check_data_values (fi); - tui_refreshing_registers = 0; - } + select_source_symtab (s); + } + + /* Display the frame position (even if there is no symbols or the PC + is not known). */ + tui_show_frame_info (fi); + + /* Refresh the register window if it's visible. */ + if (tui_is_window_visible (DATA_WIN)) + { + tui_refreshing_registers = 1; + tui_check_data_values (fi); + tui_refreshing_registers = 0; } } |