+2011-03-18 Pedro Alves <pedro@codesourcery.com>
+
+ * 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.
+
2011-03-18 Pedro Alves <pedro@codesourcery.com>
* stack.c (print_frame_local_vars, print_frame_arg_vars): Handle
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)
/* 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;
}
}