Record GDB 6.7 branch creation. Bump version number to 6.7.50-20070911-cvs.
[deliverable/binutils-gdb.git] / gdb / language.c
index 3d6ecfc960e2f72690ec26845a50fa1000985a9c..3cc513f3e6e46e9f8d5988f3b97d437b19c788c3 100644 (file)
@@ -1,7 +1,7 @@
 /* Multiple source language support for GDB.
 
-   Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
-   2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+   2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
 
    Contributed by the Department of Computer Science at the State University
    of New York at Buffalo.
@@ -10,7 +10,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -19,9 +19,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* This file contains functions that return things that are specific
    to languages.  Each function should examine current_language if necessary,
@@ -77,7 +75,7 @@ static void unk_lang_print_type (struct type *, char *, struct ui_file *,
 
 static int unk_lang_value_print (struct value *, struct ui_file *, int, enum val_prettyprint);
 
-static CORE_ADDR unk_lang_trampoline (CORE_ADDR pc);
+static CORE_ADDR unk_lang_trampoline (struct frame_info *, CORE_ADDR pc);
 
 /* Forward declaration */
 extern const struct language_defn unknown_language_defn;
@@ -324,32 +322,34 @@ show_case_command (struct ui_file *file, int from_tty,
 "Warning: the current case sensitivity setting does not match the language.\n");
 }
 
-/* Set command.  Change the setting for case sensitivity. */
+/* Set command.  Change the setting for case sensitivity.  */
+
 static void
 set_case_command (char *ignore, int from_tty, struct cmd_list_element *c)
 {
-   if (DEPRECATED_STREQ (case_sensitive, "on"))
-   {
-      case_sensitivity = case_sensitive_on;
-      case_mode = case_mode_manual;
-   }
-   else if (DEPRECATED_STREQ (case_sensitive, "off"))
-   {
-      case_sensitivity = case_sensitive_off;
-      case_mode = case_mode_manual;
-   }
-   else if (DEPRECATED_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;
-   }
+   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_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);
-   }
+     {
+       warning (_("Unrecognized case-sensitive setting: \"%s\""),
+               case_sensitive);
+     }
    set_case_str();
    show_case_command (NULL, from_tty, NULL, NULL);
 }
@@ -412,7 +412,7 @@ set_lang_str (void)
   if (language_mode == language_mode_auto)
     prefix = "auto; currently ";
 
-  language = concat (prefix, current_language->la_name, NULL);
+  language = concat (prefix, current_language->la_name, (char *)NULL);
 }
 
 static void
@@ -440,7 +440,7 @@ set_type_str (void)
       error (_("Unrecognized type check setting."));
     }
 
-  type = concat (prefix, tmp, NULL);
+  type = concat (prefix, tmp, (char *)NULL);
 }
 
 static void
@@ -468,7 +468,7 @@ set_range_str (void)
 
   if (range)
     xfree (range);
-  range = concat (pref, tmp, NULL);
+  range = concat (pref, tmp, (char *)NULL);
 }
 
 static void
@@ -492,7 +492,7 @@ set_case_str (void)
    }
 
    xfree (case_sensitive);
-   case_sensitive = concat (prefix, tmp, NULL);
+   case_sensitive = concat (prefix, tmp, (char *)NULL);
 }
 
 /* Print out the current language settings: language, range and
@@ -918,7 +918,7 @@ language_enum (char *str)
   int i;
 
   for (i = 0; i < languages_size; i++)
-    if (DEPRECATED_STREQ (languages[i]->la_name, str))
+    if (strcmp (languages[i]->la_name, str) == 0)
       return languages[i]->la_language;
 
   return language_unknown;
@@ -1003,7 +1003,7 @@ add_language (const struct language_defn *lang)
    Return the result from the first that returns non-zero, or 0 if all
    `fail'.  */
 CORE_ADDR 
-skip_language_trampoline (CORE_ADDR pc)
+skip_language_trampoline (struct frame_info *frame, CORE_ADDR pc)
 {
   int i;
 
@@ -1011,7 +1011,7 @@ skip_language_trampoline (CORE_ADDR pc)
     {
       if (languages[i]->skip_trampoline)
        {
-         CORE_ADDR real_pc = (languages[i]->skip_trampoline) (pc);
+         CORE_ADDR real_pc = (languages[i]->skip_trampoline) (frame, pc);
          if (real_pc)
            return real_pc;
        }
@@ -1055,6 +1055,17 @@ default_word_break_characters (void)
   return " \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,-";
 }
 
+/* Print the index of array elements using the C99 syntax.  */
+
+void
+default_print_array_index (struct value *index_value, struct ui_file *stream,
+                           int format, enum val_prettyprint pretty)
+{
+  fprintf_filtered (stream, "[");
+  LA_VALUE_PRINT (index_value, stream, format, pretty);
+  fprintf_filtered (stream, "] = ");
+}
+
 /* Define the language that is no language.  */
 
 static int
@@ -1117,7 +1128,7 @@ unk_lang_value_print (struct value *val, struct ui_file *stream, int format,
   error (_("internal error - unimplemented function unk_lang_value_print called."));
 }
 
-static CORE_ADDR unk_lang_trampoline (CORE_ADDR pc)
+static CORE_ADDR unk_lang_trampoline (struct frame_info *frame, CORE_ADDR pc)
 {
   return 0;
 }
@@ -1179,6 +1190,7 @@ const struct language_defn unknown_language_defn =
   NULL,
   default_word_break_characters,
   unknown_language_arch_info,  /* la_language_arch_info.  */
+  default_print_array_index,
   LANG_MAGIC
 };
 
@@ -1215,6 +1227,7 @@ const struct language_defn auto_language_defn =
   NULL,
   default_word_break_characters,
   unknown_language_arch_info,  /* la_language_arch_info.  */
+  default_print_array_index,
   LANG_MAGIC
 };
 
@@ -1250,6 +1263,7 @@ const struct language_defn local_language_defn =
   NULL,
   default_word_break_characters,
   unknown_language_arch_info,  /* la_language_arch_info.  */
+  default_print_array_index,
   LANG_MAGIC
 };
 \f
This page took 0.026007 seconds and 4 git commands to generate.