aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2013-01-14 21:05:07 +0000
committerTom Tromey <tromey@redhat.com>2013-01-14 21:05:07 +0000
commit44478ab3404a5416c1864f8b47ad28eaca7bb0d9 (patch)
tree19712603f7ece0901405ea9f0598eff0b3f172dc /gdb
parent06d66ee9d97cf451db4bdd7952eca099bc171706 (diff)
downloadgdb-44478ab3404a5416c1864f8b47ad28eaca7bb0d9.zip
gdb-44478ab3404a5416c1864f8b47ad28eaca7bb0d9.tar.gz
gdb-44478ab3404a5416c1864f8b47ad28eaca7bb0d9.tar.bz2
* cli/cli-decode.c (add_setshow_string_noescape_cmd): Return the
set command. * command.h (add_setshow_string_noescape_cmd): Update. * corefile.c (set_gnutarget_command): Remove trailing whitespace. (complete_set_gnutarget): New function. (_initialize_core): Set the "set gnutarget" completer. gdb/testsuite * gdb.base/completion.exp: Add "set gnutarget" test.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/cli/cli-decode.c7
-rw-r--r--gdb/command.h21
-rw-r--r--gdb/corefile.c41
-rw-r--r--gdb/testsuite/ChangeLog4
-rw-r--r--gdb/testsuite/gdb.base/completion.exp3
6 files changed, 68 insertions, 17 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9173b57..a96fc8f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,14 @@
2013-01-14 Tom Tromey <tromey@redhat.com>
+ * cli/cli-decode.c (add_setshow_string_noescape_cmd): Return the
+ set command.
+ * command.h (add_setshow_string_noescape_cmd): Update.
+ * corefile.c (set_gnutarget_command): Remove trailing whitespace.
+ (complete_set_gnutarget): New function.
+ (_initialize_core): Set the "set gnutarget" completer.
+
+2013-01-14 Tom Tromey <tromey@redhat.com>
+
PR symtab/14442:
* c-typeprint.c (cp_type_print_method_args): Handle 'restrict'.
(c_type_print_modifier): Likewise.
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index 758b0ff..27d94bb 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -597,7 +597,7 @@ add_setshow_string_cmd (char *name, enum command_class class,
/* Add element named NAME to both the set and show command LISTs (the
list for set/show or some sublist thereof). */
-void
+struct cmd_list_element *
add_setshow_string_noescape_cmd (char *name, enum command_class class,
char **var,
const char *set_doc, const char *show_doc,
@@ -607,11 +607,14 @@ add_setshow_string_noescape_cmd (char *name, enum command_class class,
struct cmd_list_element **set_list,
struct cmd_list_element **show_list)
{
+ struct cmd_list_element *set_cmd;
+
add_setshow_cmd_full (name, class, var_string_noescape, var,
set_doc, show_doc, help_doc,
set_func, show_func,
set_list, show_list,
- NULL, NULL);
+ &set_cmd, NULL);
+ return set_cmd;
}
/* Add element named NAME to both the set and show command LISTs (the
diff --git a/gdb/command.h b/gdb/command.h
index 6809a62..17662b4 100644
--- a/gdb/command.h
+++ b/gdb/command.h
@@ -291,16 +291,17 @@ extern void add_setshow_string_cmd (char *name,
struct cmd_list_element **set_list,
struct cmd_list_element **show_list);
-extern void add_setshow_string_noescape_cmd (char *name,
- enum command_class class,
- char **var,
- const char *set_doc,
- const char *show_doc,
- const char *help_doc,
- cmd_sfunc_ftype *set_func,
- show_value_ftype *show_func,
- struct cmd_list_element **set_list,
- struct cmd_list_element **show_list);
+extern struct cmd_list_element *add_setshow_string_noescape_cmd
+ (char *name,
+ enum command_class class,
+ char **var,
+ const char *set_doc,
+ const char *show_doc,
+ const char *help_doc,
+ cmd_sfunc_ftype *set_func,
+ show_value_ftype *show_func,
+ struct cmd_list_element **set_list,
+ struct cmd_list_element **show_list);
extern void add_setshow_optional_filename_cmd (char *name,
enum command_class class,
diff --git a/gdb/corefile.c b/gdb/corefile.c
index e940e3c..b268d4c 100644
--- a/gdb/corefile.c
+++ b/gdb/corefile.c
@@ -34,6 +34,7 @@
#include "completer.h"
#include "exceptions.h"
#include "observer.h"
+#include "cli/cli-utils.h"
/* Local function declarations. */
@@ -419,12 +420,40 @@ static void
set_gnutarget_command (char *ignore, int from_tty,
struct cmd_list_element *c)
{
+ char *gend = gnutarget_string + strlen (gnutarget_string);
+
+ gend = remove_trailing_whitespace (gnutarget_string, gend);
+ *gend = '\0';
+
if (strcmp (gnutarget_string, "auto") == 0)
gnutarget = NULL;
else
gnutarget = gnutarget_string;
}
+/* A completion function for "set gnutarget". */
+
+static VEC (char_ptr) *
+complete_set_gnutarget (struct cmd_list_element *cmd, char *text, char *word)
+{
+ static const char **bfd_targets;
+
+ if (bfd_targets == NULL)
+ {
+ int last;
+
+ bfd_targets = bfd_target_list ();
+ for (last = 0; bfd_targets[last] != NULL; ++last)
+ ;
+
+ bfd_targets = xrealloc (bfd_targets, (last + 2) * sizeof (const char **));
+ bfd_targets[last] = "auto";
+ bfd_targets[last + 1] = NULL;
+ }
+
+ return complete_on_enum (bfd_targets, text, word);
+}
+
/* Set the gnutarget. */
void
set_gnutarget (char *newtarget)
@@ -447,14 +476,16 @@ No arg means have no core file. This command has been superseded by the\n\
set_cmd_completer (c, filename_completer);
- add_setshow_string_noescape_cmd ("gnutarget", class_files,
- &gnutarget_string, _("\
+ c = add_setshow_string_noescape_cmd ("gnutarget", class_files,
+ &gnutarget_string, _("\
Set the current BFD target."), _("\
Show the current BFD target."), _("\
Use `set gnutarget auto' to specify automatic detection."),
- set_gnutarget_command,
- show_gnutarget_string,
- &setlist, &showlist);
+ set_gnutarget_command,
+ show_gnutarget_string,
+ &setlist, &showlist);
+ set_cmd_completer (c, complete_set_gnutarget);
+
add_alias_cmd ("g", "gnutarget", class_files, 1, &setlist);
if (getenv ("GNUTARGET"))
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index e894bce..17da37a 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,9 @@
2013-01-14 Tom Tromey <tromey@redhat.com>
+ * gdb.base/completion.exp: Add "set gnutarget" test.
+
+2013-01-14 Tom Tromey <tromey@redhat.com>
+
* gdb.dwarf2/dw2-restrict.S: New file.
* gdb.dwarf2/dw2-restrict.c: New file.
* gdb.dwarf2/dw2-restrict.exp: New file.
diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp
index 566f5e0..8163a86 100644
--- a/gdb/testsuite/gdb.base/completion.exp
+++ b/gdb/testsuite/gdb.base/completion.exp
@@ -707,6 +707,9 @@ gdb_test "complete ptype struct some_" "ptype struct some_struct"
gdb_test "complete ptype enum some_" "ptype enum some_enum"
gdb_test "complete ptype union some_" "ptype union some_union"
+
+gdb_test "complete set gnutarget aut" "set gnutarget auto"
+
# Restore globals modified in this test...
set timeout $oldtimeout1