/* 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); } }
/* Show command. Display a warning if the language set does not match the frame. */ static void show_language_command (char *ignore, int from_tty) { enum language flang; /* The language of the current frame */ flang = get_frame_language (); if (flang != language_unknown && language_mode == language_mode_manual && current_language->la_language != flang) printf_filtered ("%s\n", lang_frame_mismatch_warn); }
/* 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 current frame */ deprecated_show_value_hack (file, from_tty, c, value); flang = get_frame_language (); if (flang != language_unknown && language_mode == language_mode_manual && current_language->la_language != flang) printf_filtered ("%s\n", lang_frame_mismatch_warn); }
/* Set command. Change the current working language. */ static void set_language_command (char *ignore, int from_tty, struct cmd_list_element *c) { int i; enum language flang = language_unknown; /* Search the list of languages for a match. */ for (i = 0; i < languages_size; i++) { if (strcmp (languages[i]->la_name, language) == 0) { /* Found it! Go into manual mode, and use this language. */ if (languages[i]->la_language == language_auto) { /* Enter auto mode. Set to the current frame's language, if known, or fallback to the initial language. */ language_mode = language_mode_auto; TRY { struct frame_info *frame; frame = get_selected_frame (NULL); flang = get_frame_language (frame); } CATCH (ex, RETURN_MASK_ERROR) { flang = language_unknown; } END_CATCH if (flang != language_unknown) set_language (flang); else set_initial_language (); expected_language = current_language; return; } else { /* Enter manual mode. Set the specified language. */ language_mode = language_mode_manual; current_language = languages[i]; set_range_case (); expected_language = current_language; return; } }
/* Set command. Change the current working language. */ static void set_language_command (char *ignore, int from_tty, struct cmd_list_element *c) { int i; enum language flang; /* Search the list of languages for a match. */ for (i = 0; i < languages_size; i++) { if (strcmp (languages[i]->la_name, language) == 0) { /* Found it! Go into manual mode, and use this language. */ if (languages[i]->la_language == language_auto) { /* Enter auto mode. Set to the current frame's language, if known, or fallback to the initial language. */ language_mode = language_mode_auto; flang = get_frame_language (); if (flang != language_unknown) set_language (flang); else set_initial_language (); expected_language = current_language; return; } else { /* Enter manual mode. Set the specified language. */ language_mode = language_mode_manual; current_language = languages[i]; set_range_case (); expected_language = current_language; return; } } } internal_error (__FILE__, __LINE__, "Couldn't find language `%s' in known languages list.", language); }
/* Set command. Change the current working language. */ static void set_language_command (char *ignore, int from_tty) { int i; enum language flang; char *err_lang; if (!language || !language[0]) { printf_unfiltered ("The currently understood settings are:\n\n"); printf_unfiltered ("local or auto Automatic setting based on source file\n"); for (i = 0; i < languages_size; ++i) { /* Already dealt with these above. */ if (languages[i]->la_language == language_unknown || languages[i]->la_language == language_auto) continue; /* FIXME for now assume that the human-readable name is just a capitalization of the internal name. */ printf_unfiltered ("%-16s Use the %c%s language\n", languages[i]->la_name, /* Capitalize first letter of language name. */ toupper (languages[i]->la_name[0]), languages[i]->la_name + 1); } /* Restore the silly string. */ set_language (current_language->la_language); return; } /* Search the list of languages for a match. */ for (i = 0; i < languages_size; i++) { if (strcmp (languages[i]->la_name, language) == 0) { /* Found it! Go into manual mode, and use this language. */ if (languages[i]->la_language == language_auto) { /* Enter auto mode. Set to the current frame's language, if known. */ language_mode = language_mode_auto; flang = get_frame_language (); if (flang != language_unknown) set_language (flang); expected_language = current_language; return; } else { /* Enter manual mode. Set the specified language. */ language_mode = language_mode_manual; current_language = languages[i]; set_type_range_case (); set_lang_str (); expected_language = current_language; return; } } } /* Reset the language (esp. the global string "language") to the correct values. */ err_lang = savestring (language, strlen (language)); make_cleanup (xfree, err_lang); /* Free it after error */ set_language (current_language->la_language); error ("Unknown language `%s'.", err_lang); }