/* Show command. Display a warning if the language set does not match the frame. */ static void show_language_command (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) { enum language flang; /* The language of the frame. */ if (language_mode == language_mode_auto) fprintf_filtered (gdb_stdout, _("The current source language is " "\"auto; currently %s\".\n"), current_language->la_name); else fprintf_filtered (gdb_stdout, _("The current source language is \"%s\".\n"), current_language->la_name); if (has_stack_frames ()) { struct frame_info *frame; frame = get_selected_frame (NULL); flang = get_frame_language (frame); if (flang != language_unknown && language_mode == language_mode_manual && current_language->la_language != flang) printf_filtered ("%s\n", lang_frame_mismatch_warn); } }
/* Return "current" architecture. If the target is running, this is the architecture of the selected frame. Otherwise, the "current" architecture defaults to the target architecture. This function should normally be called solely by the command interpreter routines to determine the architecture to execute a command in. */ struct gdbarch * get_current_arch (void) { if (has_stack_frames ()) return get_frame_arch (get_selected_frame (NULL)); else return target_gdbarch (); }
static void tui_refresh_frame_and_register_information (int registers_too_p) { struct frame_info *fi; CORE_ADDR pc; struct cleanup *old_chain; int frame_info_changed_p; if (!has_stack_frames ()) return; old_chain = make_cleanup_restore_target_terminal (); target_terminal_ours_for_output (); fi = get_selected_frame (NULL); /* Ensure that symbols for this frame are read in. Also, determine the source language of this frame, and switch to it if desired. */ if (get_frame_pc_if_available (fi, &pc)) { struct symtab *s; s = find_pc_line_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. */ if (s) select_source_symtab (s); } /* Display the frame position (even if there is no symbols or the PC is not known). */ frame_info_changed_p = tui_show_frame_info (fi); /* Refresh the register window if it's visible. */ if (tui_is_window_visible (DATA_WIN) && (frame_info_changed_p || registers_too_p)) { tui_refreshing_registers = 1; tui_check_data_values (fi); tui_refreshing_registers = 0; } do_cleanups (old_chain); }