gdb/language.c - gdb
Global variables defined
Data types defined
Functions defined
Macros defined
Source code
- FIXME
- #include "defs.h"
- #include <ctype.h>
- #include "symtab.h"
- #include "gdbtypes.h"
- #include "value.h"
- #include "gdbcmd.h"
- #include "expression.h"
- #include "language.h"
- #include "varobj.h"
- #include "target.h"
- #include "parser-defs.h"
- #include "jv-lang.h"
- #include "demangle.h"
- #include "symfile.h"
- #include "cp-support.h"
- extern void _initialize_language (void);
- static void unk_lang_error (char *);
- static int unk_lang_parser (struct parser_state *);
- static void show_check (char *, int);
- static void set_check (char *, int);
- static void set_range_case (void);
- static void unk_lang_emit_char (int c, struct type *type,
- struct ui_file *stream, int quoter);
- static void unk_lang_printchar (int c, struct type *type,
- struct ui_file *stream);
- static void unk_lang_value_print (struct value *, struct ui_file *,
- const struct value_print_options *);
- static CORE_ADDR unk_lang_trampoline (struct frame_info *, CORE_ADDR pc);
- extern const struct language_defn unknown_language_defn;
- enum range_mode range_mode = range_mode_auto;
- enum range_check range_check = range_check_off;
- enum case_mode case_mode = case_mode_auto;
- enum case_sensitivity case_sensitivity = case_sensitive_on;
- const struct language_defn *current_language = &unknown_language_defn;
- enum language_mode language_mode = language_mode_auto;
- const struct language_defn *expected_language;
- static const struct language_defn **languages;
- static unsigned languages_size;
- static unsigned languages_allocsize;
- #define DEFAULT_ALLOCSIZE 4
- static const char *language;
- static const char *type;
- static const char *range;
- static const char *case_sensitive;
- char lang_frame_mismatch_warn[] =
- "Warning: the current language does not match this frame.";
- static void
- show_language_command (struct ui_file *file, int from_tty,
- struct cmd_list_element *c, const char *value)
- {
- enum language flang;
- 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);
- 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);
- }
- static void
- set_language_command (char *ignore, int from_tty, struct cmd_list_element *c)
- {
- int i;
- enum language flang;
-
- for (i = 0; i < languages_size; i++)
- {
- if (strcmp (languages[i]->la_name, language) == 0)
- {
-
- if (languages[i]->la_language == language_auto)
- {
-
- 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
- {
-
- 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);
- }
- static void
- show_range_command (struct ui_file *file, int from_tty,
- struct cmd_list_element *c, const char *value)
- {
- if (range_mode == range_mode_auto)
- {
- char *tmp;
- switch (range_check)
- {
- case range_check_on:
- tmp = "on";
- break;
- case range_check_off:
- tmp = "off";
- break;
- case range_check_warn:
- tmp = "warn";
- break;
- default:
- internal_error (__FILE__, __LINE__,
- "Unrecognized range check setting.");
- }
- fprintf_filtered (gdb_stdout,
- _("Range checking is \"auto; currently %s\".\n"),
- tmp);
- }
- else
- fprintf_filtered (gdb_stdout, _("Range checking is \"%s\".\n"),
- value);
- if (range_check != current_language->la_range_check)
- warning (_("the current range check setting "
- "does not match the language.\n"));
- }
- static void
- set_range_command (char *ignore, int from_tty, struct cmd_list_element *c)
- {
- if (strcmp (range, "on") == 0)
- {
- range_check = range_check_on;
- range_mode = range_mode_manual;
- }
- else if (strcmp (range, "warn") == 0)
- {
- range_check = range_check_warn;
- range_mode = range_mode_manual;
- }
- else if (strcmp (range, "off") == 0)
- {
- range_check = range_check_off;
- range_mode = range_mode_manual;
- }
- else if (strcmp (range, "auto") == 0)
- {
- range_mode = range_mode_auto;
- set_range_case ();
- return;
- }
- else
- {
- internal_error (__FILE__, __LINE__,
- _("Unrecognized range check setting: \"%s\""), range);
- }
- if (range_check != current_language->la_range_check)
- warning (_("the current range check setting "
- "does not match the language.\n"));
- }
- static void
- show_case_command (struct ui_file *file, int from_tty,
- struct cmd_list_element *c, const char *value)
- {
- if (case_mode == case_mode_auto)
- {
- char *tmp = NULL;
- switch (case_sensitivity)
- {
- case case_sensitive_on:
- tmp = "on";
- break;
- case case_sensitive_off:
- tmp = "off";
- break;
- default:
- internal_error (__FILE__, __LINE__,
- "Unrecognized case-sensitive setting.");
- }
- fprintf_filtered (gdb_stdout,
- _("Case sensitivity in "
- "name search is \"auto; currently %s\".\n"),
- tmp);
- }
- else
- fprintf_filtered (gdb_stdout,
- _("Case sensitivity in name search is \"%s\".\n"),
- value);
- if (case_sensitivity != current_language->la_case_sensitivity)
- warning (_("the current case sensitivity setting does not match "
- "the language.\n"));
- }
- static void
- set_case_command (char *ignore, int from_tty, struct cmd_list_element *c)
- {
- if (strcmp (case_sensitive, "on") == 0)
- {
- case_sensitivity = case_sensitive_on;
- case_mode = case_mode_manual;
- }
- else if (strcmp (case_sensitive, "off") == 0)
- {
- case_sensitivity = case_sensitive_off;
- case_mode = case_mode_manual;
- }
- else if (strcmp (case_sensitive, "auto") == 0)
- {
- case_mode = case_mode_auto;
- set_range_case ();
- return;
- }
- else
- {
- internal_error (__FILE__, __LINE__,
- "Unrecognized case-sensitive setting: \"%s\"",
- case_sensitive);
- }
- if (case_sensitivity != current_language->la_case_sensitivity)
- warning (_("the current case sensitivity setting does not match "
- "the language.\n"));
- }
- static void
- set_range_case (void)
- {
- if (range_mode == range_mode_auto)
- range_check = current_language->la_range_check;
- if (case_mode == case_mode_auto)
- case_sensitivity = current_language->la_case_sensitivity;
- }
- enum language
- set_language (enum language lang)
- {
- int i;
- enum language prev_language;
- prev_language = current_language->la_language;
- for (i = 0; i < languages_size; i++)
- {
- if (languages[i]->la_language == lang)
- {
- current_language = languages[i];
- set_range_case ();
- break;
- }
- }
- return prev_language;
- }
- void
- language_info (int quietly)
- {
- if (quietly && expected_language == current_language)
- return;
- expected_language = current_language;
- printf_unfiltered (_("Current language: %s\n"), language);
- show_language_command (NULL, 1, NULL, NULL);
- if (!quietly)
- {
- printf_unfiltered (_("Range checking: %s\n"), range);
- show_range_command (NULL, 1, NULL, NULL);
- printf_unfiltered (_("Case sensitivity: %s\n"), case_sensitive);
- show_case_command (NULL, 1, NULL, NULL);
- }
- }
- int
- pointer_type (struct type *type)
- {
- return TYPE_CODE (type) == TYPE_CODE_PTR ||
- TYPE_CODE (type) == TYPE_CODE_REF;
- }
- int
- value_true (struct value *val)
- {
-
- return !value_logical_not (val);
- }
- void
- range_error (const char *string,...)
- {
- va_list args;
- va_start (args, string);
- switch (range_check)
- {
- case range_check_warn:
- vwarning (string, args);
- break;
- case range_check_on:
- verror (string, args);
- break;
- case range_check_off:
- FIXME
- vfprintf_filtered (gdb_stderr, string, args);
- fprintf_filtered (gdb_stderr, "\n");
- break;
- default:
- internal_error (__FILE__, __LINE__, _("bad switch"));
- }
- va_end (args);
- }
- enum language
- language_enum (char *str)
- {
- int i;
- for (i = 0; i < languages_size; i++)
- if (strcmp (languages[i]->la_name, str) == 0)
- return languages[i]->la_language;
- return language_unknown;
- }
- const struct language_defn *
- language_def (enum language lang)
- {
- int i;
- for (i = 0; i < languages_size; i++)
- {
- if (languages[i]->la_language == lang)
- {
- return languages[i];
- }
- }
- return NULL;
- }
- const char *
- language_str (enum language lang)
- {
- int i;
- for (i = 0; i < languages_size; i++)
- {
- if (languages[i]->la_language == lang)
- {
- return languages[i]->la_name;
- }
- }
- return "Unknown";
- }
- static void
- set_check (char *ignore, int from_tty)
- {
- printf_unfiltered (
- "\"set check\" must be followed by the name of a check subcommand.\n");
- help_list (setchecklist, "set check ", all_commands, gdb_stdout);
- }
- static void
- show_check (char *ignore, int from_tty)
- {
- cmd_show_list (showchecklist, from_tty, "");
- }
- void
- add_language (const struct language_defn *lang)
- {
-
- static const char **language_names = NULL;
-
- char *language_set_doc = NULL;
- int i;
- struct ui_file *tmp_stream;
- if (lang->la_magic != LANG_MAGIC)
- {
- fprintf_unfiltered (gdb_stderr,
- "Magic number of %s language struct wrong\n",
- lang->la_name);
- internal_error (__FILE__, __LINE__,
- _("failed internal consistency check"));
- }
- if (!languages)
- {
- languages_allocsize = DEFAULT_ALLOCSIZE;
- languages = (const struct language_defn **) xmalloc
- (languages_allocsize * sizeof (*languages));
- }
- if (languages_size >= languages_allocsize)
- {
- languages_allocsize *= 2;
- languages = (const struct language_defn **) xrealloc ((char *) languages,
- languages_allocsize * sizeof (*languages));
- }
- languages[languages_size++] = lang;
-
- language_names = xrealloc (language_names,
- (languages_size + 1) * sizeof (const char *));
- for (i = 0; i < languages_size; ++i)
- language_names[i] = languages[i]->la_name;
- language_names[i] = NULL;
-
- tmp_stream = mem_fileopen ();
- fprintf_unfiltered (tmp_stream,
- _("Set the current source language.\n"
- "The currently understood settings are:\n\nlocal or "
- "auto Automatic setting based on source file\n"));
- for (i = 0; i < languages_size; ++i)
- {
-
- if (languages[i]->la_language == language_unknown
- || languages[i]->la_language == language_auto)
- continue;
- FIXME
- fprintf_unfiltered (tmp_stream, "%-16s Use the %c%s language\n",
- languages[i]->la_name,
-
- toupper (languages[i]->la_name[0]),
- languages[i]->la_name + 1);
- }
- language_set_doc = ui_file_xstrdup (tmp_stream, NULL);
- ui_file_delete (tmp_stream);
- add_setshow_enum_cmd ("language", class_support,
- (const char **) language_names,
- &language,
- language_set_doc,
- _("Show the current source language."),
- NULL, set_language_command,
- show_language_command,
- &setlist, &showlist);
- xfree (language_set_doc);
- }
- CORE_ADDR
- skip_language_trampoline (struct frame_info *frame, CORE_ADDR pc)
- {
- int i;
- for (i = 0; i < languages_size; i++)
- {
- if (languages[i]->skip_trampoline)
- {
- CORE_ADDR real_pc = (languages[i]->skip_trampoline) (frame, pc);
- if (real_pc)
- return real_pc;
- }
- }
- return 0;
- }
- FIXME
- FIXME
- char *
- language_demangle (const struct language_defn *current_language,
- const char *mangled, int options)
- {
- if (current_language != NULL && current_language->la_demangle)
- return current_language->la_demangle (mangled, options);
- return NULL;
- }
- char *
- language_class_name_from_physname (const struct language_defn *lang,
- const char *physname)
- {
- if (lang != NULL && lang->la_class_name_from_physname)
- return lang->la_class_name_from_physname (physname);
- return NULL;
- }
- int
- language_pass_by_reference (struct type *type)
- {
- return current_language->la_pass_by_reference (type);
- }
- int
- default_pass_by_reference (struct type *type)
- {
- return 0;
- }
- char *
- default_word_break_characters (void)
- {
- return " \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,-";
- }
- void
- default_print_array_index (struct value *index_value, struct ui_file *stream,
- const struct value_print_options *options)
- {
- fprintf_filtered (stream, "[");
- LA_VALUE_PRINT (index_value, stream, options);
- fprintf_filtered (stream, "] = ");
- }
- void
- default_get_string (struct value *value, gdb_byte **buffer, int *length,
- struct type **char_type, const char **charset)
- {
- error (_("Getting a string is unsupported in this language."));
- }
- static int
- unk_lang_parser (struct parser_state *ps)
- {
- return 1;
- }
- static void
- unk_lang_error (char *msg)
- {
- error (_("Attempted to parse an expression with unknown language"));
- }
- static void
- unk_lang_emit_char (int c, struct type *type, struct ui_file *stream,
- int quoter)
- {
- error (_("internal error - unimplemented "
- "function unk_lang_emit_char called."));
- }
- static void
- unk_lang_printchar (int c, struct type *type, struct ui_file *stream)
- {
- error (_("internal error - unimplemented "
- "function unk_lang_printchar called."));
- }
- static void
- unk_lang_printstr (struct ui_file *stream, struct type *type,
- const gdb_byte *string, unsigned int length,
- const char *encoding, int force_ellipses,
- const struct value_print_options *options)
- {
- error (_("internal error - unimplemented "
- "function unk_lang_printstr called."));
- }
- static void
- unk_lang_print_type (struct type *type, const char *varstring,
- struct ui_file *stream, int show, int level,
- const struct type_print_options *flags)
- {
- error (_("internal error - unimplemented "
- "function unk_lang_print_type called."));
- }
- static void
- unk_lang_val_print (struct type *type, const gdb_byte *valaddr,
- int embedded_offset, CORE_ADDR address,
- struct ui_file *stream, int recurse,
- const struct value *val,
- const struct value_print_options *options)
- {
- error (_("internal error - unimplemented "
- "function unk_lang_val_print called."));
- }
- static void
- unk_lang_value_print (struct value *val, struct ui_file *stream,
- const struct value_print_options *options)
- {
- error (_("internal error - unimplemented "
- "function unk_lang_value_print called."));
- }
- static CORE_ADDR unk_lang_trampoline (struct frame_info *frame, CORE_ADDR pc)
- {
- return 0;
- }
- static char *unk_lang_demangle (const char *mangled, int options)
- {
- return gdb_demangle (mangled, options);
- }
- static char *unk_lang_class_name (const char *mangled)
- {
- return NULL;
- }
- static const struct op_print unk_op_print_tab[] =
- {
- {NULL, OP_NULL, PREC_NULL, 0}
- };
- static void
- unknown_language_arch_info (struct gdbarch *gdbarch,
- struct language_arch_info *lai)
- {
- lai->string_char_type = builtin_type (gdbarch)->builtin_char;
- lai->bool_type_default = builtin_type (gdbarch)->builtin_int;
- lai->primitive_type_vector = GDBARCH_OBSTACK_CALLOC (gdbarch, 1,
- struct type *);
- }
- const struct language_defn unknown_language_defn =
- {
- "unknown",
- "Unknown",
- language_unknown,
- range_check_off,
- case_sensitive_on,
- array_row_major,
- macro_expansion_no,
- &exp_descriptor_standard,
- unk_lang_parser,
- unk_lang_error,
- null_post_parser,
- unk_lang_printchar,
- unk_lang_printstr,
- unk_lang_emit_char,
- unk_lang_print_type,
- default_print_typedef,
- unk_lang_val_print,
- unk_lang_value_print,
- default_read_var_value,
- unk_lang_trampoline,
- "this",
- basic_lookup_symbol_nonlocal,
- basic_lookup_transparent_type,
- unk_lang_demangle,
- unk_lang_class_name,
- unk_op_print_tab,
- 1,
- 0,
- default_word_break_characters,
- default_make_symbol_completion_list,
- unknown_language_arch_info,
- default_print_array_index,
- default_pass_by_reference,
- default_get_string,
- NULL,
- iterate_over_symbols,
- &default_varobj_ops,
- NULL,
- NULL,
- LANG_MAGIC
- };
- const struct language_defn auto_language_defn =
- {
- "auto",
- "Auto",
- language_auto,
- range_check_off,
- case_sensitive_on,
- array_row_major,
- macro_expansion_no,
- &exp_descriptor_standard,
- unk_lang_parser,
- unk_lang_error,
- null_post_parser,
- unk_lang_printchar,
- unk_lang_printstr,
- unk_lang_emit_char,
- unk_lang_print_type,
- default_print_typedef,
- unk_lang_val_print,
- unk_lang_value_print,
- default_read_var_value,
- unk_lang_trampoline,
- "this",
- basic_lookup_symbol_nonlocal,
- basic_lookup_transparent_type,
- unk_lang_demangle,
- unk_lang_class_name,
- unk_op_print_tab,
- 1,
- 0,
- default_word_break_characters,
- default_make_symbol_completion_list,
- unknown_language_arch_info,
- default_print_array_index,
- default_pass_by_reference,
- default_get_string,
- NULL,
- iterate_over_symbols,
- &default_varobj_ops,
- NULL,
- NULL,
- LANG_MAGIC
- };
- const struct language_defn local_language_defn =
- {
- "local",
- "Local",
- language_auto,
- range_check_off,
- case_sensitive_on,
- array_row_major,
- macro_expansion_no,
- &exp_descriptor_standard,
- unk_lang_parser,
- unk_lang_error,
- null_post_parser,
- unk_lang_printchar,
- unk_lang_printstr,
- unk_lang_emit_char,
- unk_lang_print_type,
- default_print_typedef,
- unk_lang_val_print,
- unk_lang_value_print,
- default_read_var_value,
- unk_lang_trampoline,
- "this",
- basic_lookup_symbol_nonlocal,
- basic_lookup_transparent_type,
- unk_lang_demangle,
- unk_lang_class_name,
- unk_op_print_tab,
- 1,
- 0,
- default_word_break_characters,
- default_make_symbol_completion_list,
- unknown_language_arch_info,
- default_print_array_index,
- default_pass_by_reference,
- default_get_string,
- NULL,
- iterate_over_symbols,
- &default_varobj_ops,
- NULL,
- NULL,
- LANG_MAGIC
- };
- static struct gdbarch_data *language_gdbarch_data;
- struct language_gdbarch
- {
-
- struct language_arch_info arch_info[nr_languages];
- };
- static void *
- language_gdbarch_post_init (struct gdbarch *gdbarch)
- {
- struct language_gdbarch *l;
- int i;
- l = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct language_gdbarch);
- for (i = 0; i < languages_size; i++)
- {
- if (languages[i] != NULL
- && languages[i]->la_language_arch_info != NULL)
- languages[i]->la_language_arch_info
- (gdbarch, l->arch_info + languages[i]->la_language);
- }
- return l;
- }
- struct type *
- language_string_char_type (const struct language_defn *la,
- struct gdbarch *gdbarch)
- {
- struct language_gdbarch *ld = gdbarch_data (gdbarch,
- language_gdbarch_data);
- return ld->arch_info[la->la_language].string_char_type;
- }
- struct type *
- language_bool_type (const struct language_defn *la,
- struct gdbarch *gdbarch)
- {
- struct language_gdbarch *ld = gdbarch_data (gdbarch,
- language_gdbarch_data);
- if (ld->arch_info[la->la_language].bool_type_symbol)
- {
- struct symbol *sym;
- sym = lookup_symbol (ld->arch_info[la->la_language].bool_type_symbol,
- NULL, VAR_DOMAIN, NULL);
- if (sym)
- {
- struct type *type = SYMBOL_TYPE (sym);
- if (type && TYPE_CODE (type) == TYPE_CODE_BOOL)
- return type;
- }
- }
- return ld->arch_info[la->la_language].bool_type_default;
- }
- static struct type **
- language_lookup_primitive_type_1 (const struct language_arch_info *lai,
- const char *name)
- {
- struct type **p;
- for (p = lai->primitive_type_vector; (*p) != NULL; p++)
- {
- if (strcmp (TYPE_NAME (*p), name) == 0)
- return p;
- }
- return NULL;
- }
- struct type *
- language_lookup_primitive_type (const struct language_defn *la,
- struct gdbarch *gdbarch,
- const char *name)
- {
- struct language_gdbarch *ld = gdbarch_data (gdbarch,
- language_gdbarch_data);
- struct type **typep;
- typep = language_lookup_primitive_type_1 (&ld->arch_info[la->la_language],
- name);
- if (typep == NULL)
- return NULL;
- return *typep;
- }
- static struct symbol *
- language_alloc_type_symbol (enum language lang, struct type *type)
- {
- struct symbol *symbol;
- struct gdbarch *gdbarch;
- gdb_assert (!TYPE_OBJFILE_OWNED (type));
- gdbarch = TYPE_OWNER (type).gdbarch;
- symbol = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct symbol);
- symbol->ginfo.name = TYPE_NAME (type);
- symbol->ginfo.language = lang;
- symbol->owner.arch = gdbarch;
- SYMBOL_OBJFILE_OWNED (symbol) = 0;
- SYMBOL_TYPE (symbol) = type;
- SYMBOL_DOMAIN (symbol) = VAR_DOMAIN;
- SYMBOL_ACLASS_INDEX (symbol) = LOC_TYPEDEF;
- return symbol;
- }
- static void
- language_init_primitive_type_symbols (struct language_arch_info *lai,
- const struct language_defn *la,
- struct gdbarch *gdbarch)
- {
- int n;
- struct compunit_symtab *cust;
- struct symtab *symtab;
- struct block *static_block, *global_block;
- gdb_assert (lai->primitive_type_vector != NULL);
- for (n = 0; lai->primitive_type_vector[n] != NULL; ++n)
- continue;
- lai->primitive_type_symbols
- = GDBARCH_OBSTACK_CALLOC (gdbarch, n + 1, struct symbol *);
- for (n = 0; lai->primitive_type_vector[n] != NULL; ++n)
- {
- lai->primitive_type_symbols[n]
- = language_alloc_type_symbol (la->la_language,
- lai->primitive_type_vector[n]);
- }
-
- }
- struct symbol *
- language_lookup_primitive_type_as_symbol (const struct language_defn *la,
- struct gdbarch *gdbarch,
- const char *name)
- {
- struct language_gdbarch *ld = gdbarch_data (gdbarch,
- language_gdbarch_data);
- struct language_arch_info *lai = &ld->arch_info[la->la_language];
- struct type **typep;
- struct symbol *sym;
- if (symbol_lookup_debug)
- {
- fprintf_unfiltered (gdb_stdlog,
- "language_lookup_primitive_type_as_symbol"
- " (%s, %s, %s)",
- la->la_name, host_address_to_string (gdbarch), name);
- }
- typep = language_lookup_primitive_type_1 (lai, name);
- if (typep == NULL)
- {
- if (symbol_lookup_debug)
- fprintf_unfiltered (gdb_stdlog, " = NULL\n");
- return NULL;
- }
-
- if (lai->primitive_type_symbols == NULL)
- language_init_primitive_type_symbols (lai, la, gdbarch);
- sym = lai->primitive_type_symbols[typep - lai->primitive_type_vector];
- if (symbol_lookup_debug)
- fprintf_unfiltered (gdb_stdlog, " = %s\n", host_address_to_string (sym));
- return sym;
- }
- void
- _initialize_language (void)
- {
- static const char *const type_or_range_names[]
- = { "on", "off", "warn", "auto", NULL };
- static const char *const case_sensitive_names[]
- = { "on", "off", "auto", NULL };
- language_gdbarch_data
- = gdbarch_data_register_post_init (language_gdbarch_post_init);
-
- add_prefix_cmd ("check", no_class, set_check,
- _("Set the status of the type/range checker."),
- &setchecklist, "set check ", 0, &setlist);
- add_alias_cmd ("c", "check", no_class, 1, &setlist);
- add_alias_cmd ("ch", "check", no_class, 1, &setlist);
- add_prefix_cmd ("check", no_class, show_check,
- _("Show the status of the type/range checker."),
- &showchecklist, "show check ", 0, &showlist);
- add_alias_cmd ("c", "check", no_class, 1, &showlist);
- add_alias_cmd ("ch", "check", no_class, 1, &showlist);
- add_setshow_enum_cmd ("range", class_support, type_or_range_names,
- &range,
- _("Set range checking. (on/warn/off/auto)"),
- _("Show range checking. (on/warn/off/auto)"),
- NULL, set_range_command,
- show_range_command,
- &setchecklist, &showchecklist);
- add_setshow_enum_cmd ("case-sensitive", class_support, case_sensitive_names,
- &case_sensitive, _("\
- Set case sensitivity in name search. (on/off/auto)"), _("\
- Show case sensitivity in name search. (on/off/auto)"), _("\
- For Fortran the default is off; for other languages the default is on."),
- set_case_command,
- show_case_command,
- &setlist, &showlist);
- add_language (&auto_language_defn);
- add_language (&local_language_defn);
- add_language (&unknown_language_defn);
- language = xstrdup ("auto");
- type = xstrdup ("auto");
- range = xstrdup ("auto");
- case_sensitive = xstrdup ("auto");
-
- set_language (language_auto);
- }