This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: FYI: fix PR gdb/8869


On Saturday 08 August 2009 14:43:58, Pedro Alves wrote:
> On Saturday 08 August 2009 00:28:00, Tom Tromey wrote:
> > >>>>> "Tom" == Tom Tromey <tromey@redhat.com> writes:
> > 
> > Tom> Sigh.
> > Tom> I'll fix soon.
> > 
> > Ok, here is an update to strip trailing whitespace.  This time with some
> > tests.
> 
> Thanks!
> 
> > This is kind of ugly.
> 
> Indeed.  :-)
> 
> > I did remember a problem with using a real enum for set language -- the
> > languages aren't all registered when _initialize_language is called.
> 
> I think it would work to (re-)register the command in add_language
> instead, whenever a new language is added.
> 

Like below.  This was probably what Cagney had in mind with
the "FIXME: make these enum commands".  Notice how set_case_str, set_type_str,
set_range_str and set_lang_str go away.  This kills a few more usages of
deprecated_show_value_hack.  No need to strip trailing whitespace.
One issue is that "set language" without an argument doesn't show that
larger help list of known languages, because the enum command machinary
takes care of handling the case of no argument itself.  I've moved that
listing to "help set language", which I think is a better place for it
anyway.  

 (gdb) set language
 Requires an argument. Valid arguments are auto, local, unknown, ada, c, c++, asm, minimal, fortran, objective-c, java, modula-2, pascal, scheme.
 (gdb) help set language
 Set the current source language.
 The currently understood settings are:

 local or auto    Automatic setting based on source file
 ada              Use the Ada language
 c                Use the C language
 c++              Use the C++ language
 asm              Use the Asm language
 minimal          Use the Minimal language
 fortran          Use the Fortran language
 objective-c      Use the Objective-c language
 java             Use the Java language
 modula-2         Use the Modula-2 language
 pascal           Use the Pascal language
 scheme           Use the Scheme language

 (gdb) 

This required a couple of testsuite adjustments to default.exp
and help.exp.  I diffed the log of running setshow.exp, and the only
differences that came out were "Warning" vs "warning".  This is due
to the patch changing a few printf_unfiltered("Warning:..." calls
to warning(_("... calls.  More consistency, and, added i18n.

No regressions on x86_64-unknown-linux-gnu.  Let me know what
you think.

-- 
Pedro Alves

2009-08-08  Pedro Alves  <pedro@codesourcery.com>

	* language.c (language, type, range, case_sensitive): Make const.
	(show_language_command): Don't call deprecated_show_value_hack.
	Special case "auto".
	(set_language_command): Don't strip trailing whitespace.  Don't
	print list of known languages.  An unrecognized language is now an
	internal error instead of a user error.  Don't call set_lang_str.
	(language_completer): Delete.
	(show_type_command): Don't call deprecated_show_value_hack.
	Special case "auto".  Use warning.
	(set_type_command): Don't strip trailing whitespace.  An
	unrecognized type is now an internal error instead of a user
	error.  Output type check mismatch with language here.  Don't call
	set_type_str.
	(show_range_command): Don't call deprecated_show_value_hack.
	Special case "auto".  Use warning.
	(set_range_command): Don't strip trailing whitespace.  An
	unrecognized range check is now an internal error instead of a
	warning.  Output range check mismatch with language here.  Don't
	call set_range_str.
	(show_case_command): Don't call deprecated_show_value_hack.
	Special case "auto".  Use warning.
	(set_case_command): Don't call set_case_str.  An unrecognized case
	check is now an internal error instead of a warning.  Output range
	check mismatch with language here.  Don't call set_case_str.
	(set_type_range_case): Don't call set_type_str, set_range_str or
	set_case_str here.
	(set_lang_str, set_type_str, set_range_str, set_case_str): Delete.
	(add_language): Install or reinstall the "set language" command
	here, and make it an enum command.  Build the enumeration and the
	help string from the current list of known languages.
	(_initialize_language): Don't install "set language" here.  Make
	"set check type", "set check range" and "set case-sensitive" enum
	commands.  Register the "auto" "local" and "unknown" languages in
	that order.

2009-08-08  Pedro Alves  <pedro@codesourcery.com>

	* gdb.base/default.exp: Adjust "set language test": it's now an
	enum command.  Larger help string moved to "help set language".
	* gdb.base/help.exp: Adjust "help set language" expected output,
	now lists all known languages.

---
 gdb/language.c                     |  478 ++++++++++++++++---------------------
 gdb/testsuite/gdb.base/default.exp |    2 
 gdb/testsuite/gdb.base/help.exp    |    3 
 3 files changed, 210 insertions(+), 273 deletions(-)

Index: src/gdb/language.c
===================================================================
--- src.orig/gdb/language.c	2009-08-08 16:24:02.000000000 +0100
+++ src/gdb/language.c	2009-08-08 16:47:39.000000000 +0100
@@ -47,14 +47,6 @@
 
 extern void _initialize_language (void);
 
-static void set_case_str (void);
-
-static void set_range_str (void);
-
-static void set_type_str (void);
-
-static void set_lang_str (void);
-
 static void unk_lang_error (char *);
 
 static int unk_lang_parser (void);
@@ -111,16 +103,12 @@ static unsigned languages_size;
 static unsigned languages_allocsize;
 #define	DEFAULT_ALLOCSIZE 4
 
-/* The "set language/type/range" commands all put stuff in these
-   buffers.  This is to make them work as set/show commands.  The
-   user's string is copied here, then the set_* commands look at
-   them and update them to something that looks nice when it is
-   printed out. */
-
-static char *language;
-static char *type;
-static char *range;
-static char *case_sensitive;
+/* The current values of the "set language/type/range" enum
+   commands.  */
+static const char *language;
+static const char *type;
+static const char *range;
+static const char *case_sensitive;
 
 /* Warning issued when current_language and the language of the current
    frame do not match. */
@@ -138,7 +126,15 @@ show_language_command (struct ui_file *f
 {
   enum language flang;		/* The language of the current frame */
 
-  deprecated_show_value_hack (file, from_tty, c, value);
+  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 &&
@@ -150,51 +146,9 @@ show_language_command (struct ui_file *f
 static void
 set_language_command (char *ignore, int from_tty, struct cmd_list_element *c)
 {
-  int i, len;
+  int i;
   enum language flang;
-  char *err_lang, *tem;
-
-  /* Strip trailing whitespace.  */
-  if (!language)
-    len = 0;
-  else
-    {
-      len = strlen (language);
-      while (len > 0 && language[len - 1] == ' ')
-	--len;
-    }
-
-  if (len == 0)
-    {
-      printf_unfiltered (_("\
-The currently understood settings are:\n\n\
-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: i18n: 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;
-    }
-
-  /* Reset LANGUAGE to avoid trailing spaces.  */
-  tem = savestring (language, len);
-  xfree (language);
-  language = tem;
+  char *err_lang;
 
   /* Search the list of languages for a match.  */
   for (i = 0; i < languages_size; i++)
@@ -221,33 +175,15 @@ local or auto    Automatic setting based
 	      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 = xstrdup (language);
-  make_cleanup (xfree, err_lang);	/* Free it after error */
-  set_language (current_language->la_language);
-  error (_("Unknown language `%s'."), err_lang);
-}
-
-static char **
-language_completer (struct cmd_list_element *self, char *text, char *word)
-{
-  int i;
-  const char **langnames
-    = (const char **) alloca ((languages_size + 1) * sizeof (const char *));
-
-  for (i = 0; i < languages_size; ++i)
-    langnames[i] = languages[i]->la_name;
-  langnames[i] = NULL;
-
-  return complete_on_enum (langnames, text, word);
+  internal_error (__FILE__, __LINE__,
+		  "Couldn't find language `%s' in known languages list.",
+		  language);
 }
 
 /* Show command.  Display a warning if the type setting does
@@ -256,28 +192,43 @@ static void
 show_type_command (struct ui_file *file, int from_tty,
 		   struct cmd_list_element *c, const char *value)
 {
-  deprecated_show_value_hack (file, from_tty, c, value);
+  if (type_mode == type_mode_auto)
+    {
+      char *tmp = NULL;
+
+      switch (type_check)
+	{
+	case type_check_on:
+	  tmp = "on";
+	  break;
+	case type_check_off:
+	  tmp = "off";
+	  break;
+	case type_check_warn:
+	  tmp = "warn";
+	  break;
+	default:
+	  internal_error (__FILE__, __LINE__,
+			  "Unrecognized type check setting.");
+	}
+
+      fprintf_filtered (gdb_stdout,
+			_("Type checking is \"auto; currently %s\".\n"),
+			tmp);
+    }
+  else
+    fprintf_filtered (gdb_stdout, _("Type checking is \"%s\".\n"),
+		      value);
+
   if (type_check != current_language->la_type_check)
-    printf_unfiltered (
-			"Warning: the current type check setting does not match the language.\n");
+    warning (_("the current type check setting"
+	       " does not match the language.\n"));
 }
 
 /* Set command.  Change the setting for type checking. */
 static void
 set_type_command (char *ignore, int from_tty, struct cmd_list_element *c)
 {
-  int len;
-  char *tem;
-
-  /* Strip trailing whitespace.  */
-  len = strlen (type);
-  while (len > 0 && type[len - 1] == ' ')
-    --len;
-  /* Reset TYPE.  */
-  tem = savestring (type, len);
-  xfree (type);
-  type = tem;
-
   if (strcmp (type, "on") == 0)
     {
       type_check = type_check_on;
@@ -297,16 +248,14 @@ set_type_command (char *ignore, int from
     {
       type_mode = type_mode_auto;
       set_type_range_case ();
-      /* Avoid hitting the set_type_str call below.  We
-         did it in set_type_range_case. */
-      return;
     }
   else
-    {
-      warning (_("Unrecognized type check setting: \"%s\""), type);
-    }
-  set_type_str ();
-  show_type_command (NULL, from_tty, NULL, NULL);
+    internal_error (__FILE__, __LINE__,
+		    _("Unrecognized type check setting: \"%s\""), type);
+
+  if (type_check != current_language->la_type_check)
+    warning (_("the current type check setting"
+	       " does not match the language.\n"));
 }
 
 /* Show command.  Display a warning if the range setting does
@@ -315,28 +264,43 @@ static void
 show_range_command (struct ui_file *file, int from_tty,
 		    struct cmd_list_element *c, const char *value)
 {
-  deprecated_show_value_hack (file, from_tty, c, 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)
-    printf_unfiltered (
-			"Warning: the current range check setting does not match the language.\n");
+    warning (_("the current range check setting "
+	       "does not match the language.\n"));
 }
 
 /* Set command.  Change the setting for range checking. */
 static void
 set_range_command (char *ignore, int from_tty, struct cmd_list_element *c)
 {
-  int len;
-  char *tem;
-
-  /* Strip trailing whitespace.  */
-  len = strlen (range);
-  while (len > 0 && range[len - 1] == ' ')
-    --len;
-  /* Reset RANGE.  */
-  tem = savestring (range, len);
-  xfree (range);
-  range = tem;
-
   if (strcmp (range, "on") == 0)
     {
       range_check = range_check_on;
@@ -356,16 +320,17 @@ set_range_command (char *ignore, int fro
     {
       range_mode = range_mode_auto;
       set_type_range_case ();
-      /* Avoid hitting the set_range_str call below.  We
-         did it in set_type_range_case. */
       return;
     }
   else
     {
-      warning (_("Unrecognized range check setting: \"%s\""), range);
+      internal_error (__FILE__, __LINE__,
+		      _("Unrecognized range check setting: \"%s\""), range);
     }
-  set_range_str ();
-  show_range_command (NULL, from_tty, NULL, NULL);
+
+  if (range_check != current_language->la_range_check)
+    warning (_("the current range check setting "
+	       "does not match the language.\n"));
 }
 
 /* Completer for range and type parameters.  */
@@ -382,10 +347,35 @@ static void
 show_case_command (struct ui_file *file, int from_tty,
 		   struct cmd_list_element *c, const char *value)
 {
-  deprecated_show_value_hack (file, from_tty, c, 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)
-    printf_unfiltered(
-"Warning: the current case sensitivity setting does not match the language.\n");
+    warning (_("the current case sensitivity setting does not match "
+	       "the language.\n"));
 }
 
 /* Set command.  Change the setting for case sensitivity.  */
@@ -407,17 +397,18 @@ set_case_command (char *ignore, int from
      {
        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);
+       internal_error (__FILE__, __LINE__,
+		       "Unrecognized case-sensitive setting: \"%s\"",
+		       case_sensitive);
      }
-   set_case_str();
-   show_case_command (NULL, from_tty, NULL, NULL);
+
+  if (case_sensitivity != current_language->la_case_sensitivity)
+    warning (_("the current case sensitivity setting does not match "
+	       "the language.\n"));
 }
 
 /* Completer for case-sensitive parameter.  */
@@ -435,7 +426,6 @@ case_completer (struct cmd_list_element 
 static void
 set_type_range_case (void)
 {
-
   if (range_mode == range_mode_auto)
     range_check = current_language->la_range_check;
 
@@ -444,10 +434,6 @@ set_type_range_case (void)
 
   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. */
@@ -466,7 +452,6 @@ set_language (enum language lang)
 	{
 	  current_language = languages[i];
 	  set_type_range_case ();
-	  set_lang_str ();
 	  break;
 	}
     }
@@ -474,100 +459,6 @@ set_language (enum language lang)
   return prev_language;
 }
 
-/* This page contains functions that update the global vars
-   language, type and range. */
-static void
-set_lang_str (void)
-{
-  char *prefix = "";
-
-  if (language)
-    xfree (language);
-  if (language_mode == language_mode_auto)
-    prefix = "auto; currently ";
-
-  language = concat (prefix, current_language->la_name, (char *)NULL);
-}
-
-static void
-set_type_str (void)
-{
-  char *tmp = NULL, *prefix = "";
-
-  if (type)
-    xfree (type);
-  if (type_mode == type_mode_auto)
-    prefix = "auto; currently ";
-
-  switch (type_check)
-    {
-    case type_check_on:
-      tmp = "on";
-      break;
-    case type_check_off:
-      tmp = "off";
-      break;
-    case type_check_warn:
-      tmp = "warn";
-      break;
-    default:
-      error (_("Unrecognized type check setting."));
-    }
-
-  type = concat (prefix, tmp, (char *)NULL);
-}
-
-static void
-set_range_str (void)
-{
-  char *tmp, *pref = "";
-
-  if (range_mode == range_mode_auto)
-    pref = "auto; currently ";
-
-  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:
-      error (_("Unrecognized range check setting."));
-    }
-
-  if (range)
-    xfree (range);
-  range = concat (pref, tmp, (char *)NULL);
-}
-
-static void
-set_case_str (void)
-{
-   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."));
-   }
-
-   xfree (case_sensitive);
-   case_sensitive = concat (prefix, tmp, (char *)NULL);
-}
 
 /* Print out the current language settings: language, range and
    type checking.  If QUIETLY, print only what has changed.  */
@@ -1007,6 +898,15 @@ show_check (char *ignore, int from_tty)
 void
 add_language (const struct language_defn *lang)
 {
+  /* For the "set language" command.  */
+  static char **language_names = NULL;
+  /* For the "help set language" command.  */
+  static char *language_set_doc = NULL;
+
+  int i;
+  struct ui_file *tmp_stream;
+  long len;
+
   if (lang->la_magic != LANG_MAGIC)
     {
       fprintf_unfiltered (gdb_stderr, "Magic number of %s language struct wrong\n",
@@ -1027,6 +927,51 @@ add_language (const struct language_defn
 				 languages_allocsize * sizeof (*languages));
     }
   languages[languages_size++] = lang;
+
+  /* Build the language names array, to be used as enumeration in the
+     set language" enum command.  */
+  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;
+
+  /* Build the "help set language" docs.  */
+  tmp_stream = mem_fileopen ();
+
+  fprintf_unfiltered (tmp_stream, _("\
+Set the current source language.\n\
+The currently understood settings are:\n\n\
+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: i18n: for now assume that the human-readable name
+	 is just a capitalization of the internal name.  */
+      fprintf_unfiltered (tmp_stream, "%-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);
+    }
+
+  xfree (language_set_doc);
+  language_set_doc = ui_file_xstrdup (tmp_stream, &len);
+
+  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);
 }
 
 /* Iterate through all registered languages looking for and calling
@@ -1409,22 +1354,16 @@ language_lookup_primitive_type_by_name (
 void
 _initialize_language (void)
 {
-  struct cmd_list_element *command;
+  static const char *type_or_range_names[]
+    = { "on", "off", "warn", "auto", NULL };
+
+  static const char *case_sensitive_names[] = { "on", "off", "auto", NULL };
 
   language_gdbarch_data
     = gdbarch_data_register_post_init (language_gdbarch_post_init);
 
   /* GDB commands for language specific stuff */
 
-  command = add_setshow_string_noescape_cmd ("language", class_support,
-					     &language, _("\
-Set the current source language."), _("\
-Show the current source language."), NULL,
-					     set_language_command,
-					     show_language_command,
-					     &setlist, &showlist);
-  set_cmd_completer (command, language_completer);
-
   add_prefix_cmd ("check", no_class, set_check,
 		  _("Set the status of the type/range checker."),
 		  &setchecklist, "set check ", 0, &setlist);
@@ -1437,40 +1376,37 @@ Show the current source language."), NUL
   add_alias_cmd ("c", "check", no_class, 1, &showlist);
   add_alias_cmd ("ch", "check", no_class, 1, &showlist);
 
-  command =
-    add_setshow_string_noescape_cmd ("type", class_support,
-				     &type, _("\
+  add_setshow_enum_cmd ("type", class_support,
+			type_or_range_names,
+			&type, _("\
 Set type checking.  (on/warn/off/auto)"), _("\
 Show type checking.  (on/warn/off/auto)"), NULL,
-				     set_type_command,
-				     show_type_command,
-				     &setchecklist, &showchecklist);
-  set_cmd_completer (command, range_or_type_completer);
-
-  command =
-    add_setshow_string_noescape_cmd ("range", class_support,
-				     &range, _("\
+			set_type_command,
+			show_type_command,
+			&setchecklist, &showchecklist);
+
+  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);
-  set_cmd_completer (command, range_or_type_completer);
-
-  command =
-    add_setshow_string_noescape_cmd ("case-sensitive", class_support,
-				     &case_sensitive, _("\
+			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);
-  set_cmd_completer (command, case_completer);
+			set_case_command,
+			show_case_command,
+			&setlist, &showlist);
 
-  add_language (&unknown_language_defn);
-  add_language (&local_language_defn);
   add_language (&auto_language_defn);
+  add_language (&local_language_defn);
+  add_language (&unknown_language_defn);
 
   language = xstrdup ("auto");
   type = xstrdup ("auto");
Index: src/gdb/testsuite/gdb.base/default.exp
===================================================================
--- src.orig/gdb/testsuite/gdb.base/default.exp	2009-08-08 16:49:08.000000000 +0100
+++ src/gdb/testsuite/gdb.base/default.exp	2009-08-08 16:55:23.000000000 +0100
@@ -530,7 +530,7 @@ gdb_test "set history size" "Argument re
 #test set history
 gdb_test "set history" "\"set history\" must be followed by the name of a history subcommand.(\[^\r\n\]*\[\r\n\])+List of set history subcommands:(\[^\r\n\]*\[\r\n\])+set history expansion -- Set history expansion on command input(\[^\r\n\]*\[\r\n\])+set history filename -- Set the filename in which to record the command history(\[^\r\n\]*\[\r\n\])+set history save -- Set saving of the history record on exit(\[^\r\n\]*\[\r\n\])+set history size -- Set the size of the command history(\[^\r\n\]*\[\r\n\])+Type \"help set history\" followed by set history subcommand name for full documentation.(\[^\r\n\]*\[\r\n\])+Command name abbreviations are allowed if unambiguous." "set history"
 #test set language
-gdb_test "set language" "The currently understood settings are:(\[^\r\n\]*\[\r\n\])+local or auto  *Automatic setting based on source file(\[^\r\n\]*\[\r\n\])+c  *Use the C language(\[^\r\n\]*\[\r\n\])+c\[+\]+  *Use the C\[+\]+ language(\[^\r\n\]*\[\r\n\])+modula-2  *Use the Modula-2 language.*" "set language"
+gdb_test "set language" "Requires an argument. Valid arguments are auto, local, unknown, ada, c, c.., asm, minimal, fortran, objective-c, java, modula-2, pascal, scheme." "set language"
 #test set listsize
 gdb_test "set listsize" "Argument required .integer to set it to.*" "set listsize"
 #test set print "p" abbreviation
Index: src/gdb/testsuite/gdb.base/help.exp
===================================================================
--- src.orig/gdb/testsuite/gdb.base/help.exp	2009-08-08 16:49:30.000000000 +0100
+++ src/gdb/testsuite/gdb.base/help.exp	2009-08-08 16:56:07.000000000 +0100
@@ -418,7 +418,8 @@ test_prefix_command_help {"set history"}
     "Generic command for setting command history parameters\.\[\r\n\]+"
 }
 # test help set language
-gdb_test "help set language" "Set the current source language\." "help set language"
+gdb_test "help set language" "Set the current source language\.\[\r\n\]+The currently understood settings are:(\[^\r\n\]*\[\r\n\])+local or auto  *Automatic setting based on source file(\[^\r\n\]*\[\r\n\])+c  *Use the C language(\[^\r\n\]*\[\r\n\])+c\[+\]+  *Use the C\[+\]+ language(\[^\r\n\]*\[\r\n\])+modula-2  *Use the Modula-2 language.*" "help set language"
+
 # test help set listsize
 gdb_test "help set listsize" "Set number of source lines gdb will list by default\." "help set listsize"
 # test help set print "p" abbreviation


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]