summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJimmy Guo <guo@cup.hp.com>2000-08-11 01:02:35 +0000
committerJimmy Guo <guo@cup.hp.com>2000-08-11 01:02:35 +0000
commit7cd88377253939e5530e78b3ba34d7e5941854a0 (patch)
treec82369a10d3073844fc28805043ef7920f4e4d8d
parent652517fddf384292980cfc43dfa562c9f456fab8 (diff)
downloadgdb-7cd88377253939e5530e78b3ba34d7e5941854a0.tar.gz
2000-08-10 Jimmy Guo <guo@cup.hp.com>
* c-lang.c: Set case sensitivity on for c_language_defn, cplus_language_defn, and asm_language_defn. * ch-lang.c: Set case sensitivity on for chill_language_defn. * f-lang.c: Set case sensivitity off for f_language_defn. * jv-lang.c: Set case sensitivity on for java_language_defn. * language.h: Add enum case_mode, case_sensitivity. * language.c: Define case_mode, case_sensitivity. Set case sensitivity on for unknown_language_defn, auto_language_defn, and local_language_defn. (show_case_command,set_case_command,set_case_str): New static func. (set_type_range_case): New static func, replaces set_type_range (). (set_language_command,set_type_command,set_range_command,set_language): Call set_type_range_case (). (language_info): Print case sensitivity setting. (_initialize_language): Add set/show commands for 'case-sensitive'. Set default case mode 'auto'. Set default language 'auto'. * m2-lang.c: Set case sensitivity on for m2_language_defn. * p-lang.c: Set case sensitivity on for pascal_language_defn. * scm-lang.c: Set case sensitivity off for scm_language_defn. * symtab.c (lookup_symbol): Downcase symbol name if case sensivitity is off.
-rw-r--r--gdb/ChangeLog24
-rw-r--r--gdb/c-lang.c3
-rw-r--r--gdb/ch-lang.c1
-rw-r--r--gdb/f-lang.c1
-rw-r--r--gdb/jv-lang.c1
-rw-r--r--gdb/language.c121
-rw-r--r--gdb/language.h23
-rw-r--r--gdb/m2-lang.c1
-rw-r--r--gdb/p-lang.c1
-rw-r--r--gdb/scm-lang.c1
-rw-r--r--gdb/symtab.c13
11 files changed, 176 insertions, 14 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a44b2b8931d..90fc8134421 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,29 @@
2000-08-10 Jimmy Guo <guo@cup.hp.com>
+ * c-lang.c: Set case sensitivity on for c_language_defn,
+ cplus_language_defn, and asm_language_defn.
+ * ch-lang.c: Set case sensitivity on for chill_language_defn.
+ * f-lang.c: Set case sensivitity off for f_language_defn.
+ * jv-lang.c: Set case sensitivity on for java_language_defn.
+ * language.h: Add enum case_mode, case_sensitivity.
+ * language.c: Define case_mode, case_sensitivity. Set case
+ sensitivity on for unknown_language_defn, auto_language_defn,
+ and local_language_defn.
+ (show_case_command,set_case_command,set_case_str): New static func.
+ (set_type_range_case): New static func, replaces set_type_range ().
+ (set_language_command,set_type_command,set_range_command,set_language):
+ Call set_type_range_case ().
+ (language_info): Print case sensitivity setting.
+ (_initialize_language): Add set/show commands for 'case-sensitive'.
+ Set default case mode 'auto'. Set default language 'auto'.
+ * m2-lang.c: Set case sensitivity on for m2_language_defn.
+ * p-lang.c: Set case sensitivity on for pascal_language_defn.
+ * scm-lang.c: Set case sensitivity off for scm_language_defn.
+ * symtab.c (lookup_symbol): Downcase symbol name if case sensivitity
+ is off.
+
+2000-08-10 Jimmy Guo <guo@cup.hp.com>
+
* MAINTAINERS: Change my contact email for hp tests maintainership.
Thu Aug 10 15:28:17 2000 Andrew Cagney <cagney@ryobi.cygnus.com>
diff --git a/gdb/c-lang.c b/gdb/c-lang.c
index 5214c2a9c82..e5053953f63 100644
--- a/gdb/c-lang.c
+++ b/gdb/c-lang.c
@@ -409,6 +409,7 @@ const struct language_defn c_language_defn =
c_builtin_types,
range_check_off,
type_check_off,
+ case_sensitive_on,
c_parse,
c_error,
evaluate_subexp_standard,
@@ -460,6 +461,7 @@ const struct language_defn cplus_language_defn =
cplus_builtin_types,
range_check_off,
type_check_off,
+ case_sensitive_on,
c_parse,
c_error,
evaluate_subexp_standard,
@@ -488,6 +490,7 @@ const struct language_defn asm_language_defn =
c_builtin_types,
range_check_off,
type_check_off,
+ case_sensitive_on,
c_parse,
c_error,
evaluate_subexp_standard,
diff --git a/gdb/ch-lang.c b/gdb/ch-lang.c
index 32e612e958a..c8e12beefea 100644
--- a/gdb/ch-lang.c
+++ b/gdb/ch-lang.c
@@ -608,6 +608,7 @@ const struct language_defn chill_language_defn =
chill_builtin_types,
range_check_on,
type_check_on,
+ case_sensitive_on,
chill_parse, /* parser */
chill_error, /* parser error function */
evaluate_subexp_chill,
diff --git a/gdb/f-lang.c b/gdb/f-lang.c
index d127a50a06b..b61af1d3c50 100644
--- a/gdb/f-lang.c
+++ b/gdb/f-lang.c
@@ -460,6 +460,7 @@ const struct language_defn f_language_defn =
f_builtin_types,
range_check_on,
type_check_on,
+ case_sensitive_off,
f_parse, /* parser */
f_error, /* parser error function */
evaluate_subexp_standard,
diff --git a/gdb/jv-lang.c b/gdb/jv-lang.c
index 5a22f1ce563..37fab62cd25 100644
--- a/gdb/jv-lang.c
+++ b/gdb/jv-lang.c
@@ -1033,6 +1033,7 @@ const struct language_defn java_language_defn =
c_builtin_types,
range_check_off,
type_check_off,
+ case_sensitive_on,
java_parse,
java_error,
evaluate_subexp_java,
diff --git a/gdb/language.c b/gdb/language.c
index 19520cede62..6db94d42909 100644
--- a/gdb/language.c
+++ b/gdb/language.c
@@ -57,6 +57,12 @@ static void show_range_command (char *, int);
static void set_range_command (char *, int);
+static void show_case_command (char *, int);
+
+static void set_case_command (char *, int);
+
+static void set_case_str (void);
+
static void set_range_str (void);
static void set_type_str (void);
@@ -71,7 +77,7 @@ static void show_check (char *, int);
static void set_check (char *, int);
-static void set_type_range (void);
+static void set_type_range_case (void);
static void unk_lang_emit_char (int c, struct ui_file *stream, int quoter);
@@ -105,6 +111,8 @@ enum range_mode range_mode = range_mode_auto;
enum range_check range_check = range_check_off;
enum type_mode type_mode = type_mode_auto;
enum type_check type_check = type_check_off;
+enum case_mode case_mode = case_mode_auto;
+enum case_sensitivity case_sensitivity = case_sensitive_on;
/* The current language and language_mode (see language.h) */
@@ -132,6 +140,7 @@ static unsigned languages_allocsize;
static char *language;
static char *type;
static char *range;
+static char *case_sensitive;
/* Warning issued when current_language and the language of the current
frame do not match. */
@@ -211,7 +220,7 @@ set_language_command (char *ignore, int from_tty)
/* Enter manual mode. Set the specified language. */
language_mode = language_mode_manual;
current_language = languages[i];
- set_type_range ();
+ set_type_range_case ();
set_lang_str ();
expected_language = current_language;
return;
@@ -259,9 +268,9 @@ set_type_command (char *ignore, int from_tty)
else if (STREQ (type, "auto"))
{
type_mode = type_mode_auto;
- set_type_range ();
+ set_type_range_case ();
/* Avoid hitting the set_type_str call below. We
- did it in set_type_range. */
+ did it in set_type_range_case. */
return;
}
else
@@ -305,9 +314,9 @@ set_range_command (char *ignore, int from_tty)
else if (STREQ (range, "auto"))
{
range_mode = range_mode_auto;
- set_type_range ();
+ set_type_range_case ();
/* Avoid hitting the set_range_str call below. We
- did it in set_type_range. */
+ did it in set_type_range_case. */
return;
}
else
@@ -318,12 +327,56 @@ set_range_command (char *ignore, int from_tty)
show_range_command ((char *) 0, from_tty);
}
-/* Set the status of range and type checking based on
+/* Show command. Display a warning if the case sensitivity setting does
+ not match the current language. */
+static void
+show_case_command(ignore, from_tty)
+ char *ignore;
+ int from_tty;
+{
+ if (case_sensitivity != current_language->la_case_sensitivity)
+ printf_unfiltered(
+"Warning: the current case sensitivity setting does not match the language.\n");
+}
+
+/* Set command. Change the setting for case sensitivity. */
+static void
+set_case_command(ignore, from_tty)
+ char *ignore;
+ int from_tty;
+{
+ if (STREQ (case_sensitive, "on"))
+ {
+ case_sensitivity = case_sensitive_on;
+ case_mode = case_mode_manual;
+ }
+ else if (STREQ (case_sensitive, "off"))
+ {
+ case_sensitivity = case_sensitive_off;
+ case_mode = case_mode_manual;
+ }
+ else if (STREQ (case_sensitive, "auto"))
+ {
+ case_mode = case_mode_auto;
+ set_type_range_case ();
+ /* Avoid hitting the set_case_str call below. We
+ did it in set_type_range_case. */
+ return;
+ }
+ else
+ {
+ warning ("Unrecognized case-sensitive setting: \"%s\"", case_sensitive);
+ }
+ set_case_str();
+ show_case_command ((char *) NULL, from_tty);
+}
+
+/* Set the status of range and type checking and case sensitivity based on
the current modes and the current language.
If SHOW is non-zero, then print out the current language,
type and range checking status. */
static void
-set_type_range (void)
+set_type_range_case (void)
{
if (range_mode == range_mode_auto)
@@ -332,8 +385,12 @@ set_type_range (void)
if (type_mode == type_mode_auto)
type_check = current_language->la_type_check;
+ if (case_mode == case_mode_auto)
+ case_sensitivity = current_language->la_case_sensitivity;
+
set_type_str ();
set_range_str ();
+ set_case_str ();
}
/* Set current language to (enum language) LANG. Returns previous language. */
@@ -351,7 +408,7 @@ set_language (enum language lang)
if (languages[i]->la_language == lang)
{
current_language = languages[i];
- set_type_range ();
+ set_type_range_case ();
set_lang_str ();
break;
}
@@ -431,6 +488,29 @@ set_range_str (void)
range = concat (pref, tmp, NULL);
}
+static void
+set_case_str()
+{
+ char *tmp = NULL, *prefix = "";
+
+ if (case_mode==case_mode_auto)
+ prefix = "auto; currently ";
+
+ switch (case_sensitivity)
+ {
+ case case_sensitive_on:
+ tmp = "on";
+ break;
+ case case_sensitive_off:
+ tmp = "off";
+ break;
+ default:
+ error ("Unrecognized case-sensitive setting.");
+ }
+
+ free (case_sensitive);
+ case_sensitive = concat (prefix, tmp, NULL);
+}
/* Print out the current language settings: language, range and
type checking. If QUIETLY, print only what has changed. */
@@ -451,6 +531,8 @@ language_info (int quietly)
show_type_command ((char *) 0, 1);
printf_unfiltered ("Range checking: %s\n", range);
show_range_command ((char *) 0, 1);
+ printf_unfiltered ("Case sensitivity: %s\n", case_sensitive);
+ show_case_command ((char *) 0, 1);
}
}
@@ -1400,6 +1482,7 @@ const struct language_defn unknown_language_defn =
&unknown_builtin_types[0],
range_check_off,
type_check_off,
+ case_sensitive_on,
unk_lang_parser,
unk_lang_error,
evaluate_subexp_standard,
@@ -1429,6 +1512,7 @@ const struct language_defn auto_language_defn =
&unknown_builtin_types[0],
range_check_off,
type_check_off,
+ case_sensitive_on,
unk_lang_parser,
unk_lang_error,
evaluate_subexp_standard,
@@ -1457,6 +1541,7 @@ const struct language_defn local_language_defn =
&unknown_builtin_types[0],
range_check_off,
type_check_off,
+ case_sensitive_on,
unk_lang_parser,
unk_lang_error,
evaluate_subexp_standard,
@@ -1523,16 +1608,24 @@ _initialize_language (void)
set->function.cfunc = set_range_command;
show->function.cfunc = show_range_command;
+ set = add_set_cmd ("case-sensitive", class_support, var_string_noescape,
+ (char *) &case_sensitive,
+ "Set case sensitivity in name search. (on/off/auto)\n\
+For Fortran the default is off; for other languages the default is on.",
+ &setlist);
+ show = add_show_from_set (set, &showlist);
+ set->function.cfunc = set_case_command;
+ show->function.cfunc = show_case_command;
+
add_language (&unknown_language_defn);
add_language (&local_language_defn);
add_language (&auto_language_defn);
language = savestring ("auto", strlen ("auto"));
- set_language_command (language, 0);
-
type = savestring ("auto", strlen ("auto"));
- set_type_command (NULL, 0);
-
range = savestring ("auto", strlen ("auto"));
- set_range_command (NULL, 0);
+ case_sensitive = savestring ("auto",strlen ("auto"));
+
+ /* Have the above take effect */
+ set_language (language_auto);
}
diff --git a/gdb/language.h b/gdb/language.h
index 8de751d3e0c..ba007786de2 100644
--- a/gdb/language.h
+++ b/gdb/language.h
@@ -81,6 +81,26 @@ extern enum type_check
type_check_off, type_check_warn, type_check_on
}
type_check;
+
+/* case_mode ==
+ case_mode_auto: case_sensitivity set upon selection of scope
+ case_mode_manual: case_sensitivity set only by user. */
+
+extern enum case_mode
+ {
+ case_mode_auto, case_mode_manual
+ }
+case_mode;
+
+/* case_sensitivity ==
+ case_sensitive_on: Case sensitivity in name matching is used
+ case_sensitive_off: Case sensitivity in name matching is not used */
+
+extern enum case_sensitivity
+ {
+ case_sensitive_on, case_sensitive_off
+ }
+case_sensitivity;
/* Information for doing language dependent formatting of printed values. */
@@ -140,6 +160,9 @@ struct language_defn
enum type_check la_type_check;
+ /* Default case sensitivity */
+ enum case_sensitivity la_case_sensitivity;
+
/* Parser function. */
int (*la_parser) (void);
diff --git a/gdb/m2-lang.c b/gdb/m2-lang.c
index cc3d82f8cc9..3896c2d4232 100644
--- a/gdb/m2-lang.c
+++ b/gdb/m2-lang.c
@@ -414,6 +414,7 @@ const struct language_defn m2_language_defn =
m2_builtin_types,
range_check_on,
type_check_on,
+ case_sensitive_on,
m2_parse, /* parser */
m2_error, /* parser error function */
evaluate_subexp_standard,
diff --git a/gdb/p-lang.c b/gdb/p-lang.c
index 57ee5b88444..93dd2548f67 100644
--- a/gdb/p-lang.c
+++ b/gdb/p-lang.c
@@ -388,6 +388,7 @@ const struct language_defn pascal_language_defn =
pascal_builtin_types,
range_check_on,
type_check_on,
+ case_sensitive_on,
pascal_parse,
pascal_error,
evaluate_subexp_standard,
diff --git a/gdb/scm-lang.c b/gdb/scm-lang.c
index ea606228eb2..39aaa060ffa 100644
--- a/gdb/scm-lang.c
+++ b/gdb/scm-lang.c
@@ -233,6 +233,7 @@ const struct language_defn scm_language_defn =
c_builtin_types,
range_check_off,
type_check_off,
+ case_sensitive_off,
scm_parse,
c_error,
evaluate_subexp_scm,
diff --git a/gdb/symtab.c b/gdb/symtab.c
index 633f6f79fe2..b116375f0bb 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -584,6 +584,19 @@ lookup_symbol (const char *name, register const struct block *block,
register struct block *b;
register struct minimal_symbol *msymbol;
+ if (case_sensitivity == case_sensitive_off)
+ {
+ char *copy;
+ int len, i;
+
+ len = strlen (name);
+ copy = (char *) alloca (len + 1);
+ for (i= 0; i < len; i++)
+ copy[i] = tolower (name[i]);
+ copy[len] = 0;
+ name = copy;
+ }
+
/* Search specified block and its superiors. */
while (block != 0)