aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog14
-rw-r--r--gdb/corelow.c3
-rw-r--r--gdb/exec.c2
-rw-r--r--gdb/target.c22
-rw-r--r--gdb/target.h4
-rw-r--r--gdb/testsuite/ChangeLog7
-rw-r--r--gdb/testsuite/gdb.base/completion.exp7
-rw-r--r--gdb/testsuite/gdb.trace/tfile.exp5
-rw-r--r--gdb/tracepoint.c3
9 files changed, 61 insertions, 6 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3b7926a..58251ed 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,17 @@
+2013-03-29 Yao Qi <yao@codesourcery.com>
+
+ * corelow.c: Include "completer.h".
+ (_initialize_corelow): Call add_target_with_completer with
+ argument 'filename_completer'.
+ * tracepoint.c: Likewise.
+ * exec.c (_initialize_exec): Likewise.
+ * target.c (add_target): Rename to ...
+ (add_target_with_completer): ... this. Call set_cmd_completer
+ if parameter completer is not NULL.
+ (add_target): New.
+ * target.h: Include "command.h".
+ (add_target_with_completer): Declare it.
+
2013-03-28 Joel Brobecker <brobecker@adacore.com>
* coffread.c (is_import_fixup_symbol): New function.
diff --git a/gdb/corelow.c b/gdb/corelow.c
index 77bab82..fa48941 100644
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
@@ -46,6 +46,7 @@
#include "progspace.h"
#include "objfiles.h"
#include "gdb_bfd.h"
+#include "completer.h"
#ifndef O_LARGEFILE
#define O_LARGEFILE 0
@@ -977,5 +978,5 @@ _initialize_corelow (void)
{
init_core_ops ();
- add_target (&core_ops);
+ add_target_with_completer (&core_ops, filename_completer);
}
diff --git a/gdb/exec.c b/gdb/exec.c
index f550194..3386b60 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -943,7 +943,7 @@ Show writing into executable and core files."), NULL,
show_write_files,
&setlist, &showlist);
- add_target (&exec_ops);
+ add_target_with_completer (&exec_ops, filename_completer);
}
static char *
diff --git a/gdb/target.c b/gdb/target.c
index 9193c97..24cc79d 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -384,11 +384,16 @@ target_has_execution_current (void)
return target_has_execution_1 (inferior_ptid);
}
-/* Add a possible target architecture to the list. */
+/* Add possible target architecture T to the list and add a new
+ command 'target T->to_shortname'. Set COMPLETER as the command's
+ completer if not NULL. */
void
-add_target (struct target_ops *t)
+add_target_with_completer (struct target_ops *t,
+ completer_ftype *completer)
{
+ struct cmd_list_element *c;
+
/* Provide default values for all "must have" methods. */
if (t->to_xfer_partial == NULL)
t->to_xfer_partial = default_xfer_partial;
@@ -431,7 +436,18 @@ Remaining arguments are interpreted by the target protocol. For more\n\
information on the arguments for a particular protocol, type\n\
`help target ' followed by the protocol name."),
&targetlist, "target ", 0, &cmdlist);
- add_cmd (t->to_shortname, no_class, t->to_open, t->to_doc, &targetlist);
+ c = add_cmd (t->to_shortname, no_class, t->to_open, t->to_doc,
+ &targetlist);
+ if (completer != NULL)
+ set_cmd_completer (c, completer);
+}
+
+/* Add a possible target architecture to the list. */
+
+void
+add_target (struct target_ops *t)
+{
+ add_target_with_completer (t, NULL);
}
/* See target.h. */
diff --git a/gdb/target.h b/gdb/target.h
index ee3fbff..4f8520c 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -63,6 +63,7 @@ struct expression;
#include "vec.h"
#include "gdb_signals.h"
#include "btrace.h"
+#include "command.h"
enum strata
{
@@ -1841,6 +1842,9 @@ int target_verify_memory (const gdb_byte *data,
extern void add_target (struct target_ops *);
+extern void add_target_with_completer (struct target_ops *t,
+ completer_ftype *completer);
+
/* Adds a command ALIAS for target T and marks it deprecated. This is useful
for maintaining backwards compatibility when renaming targets. */
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 9c835f2..20a19fc 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2013-03-29 Yao Qi <yao@codesourcery.com>
+
+ * gdb.base/completion.exp: Test completion of commands
+ "target core", "target tfile" and "target exec".
+ * gdb.trace/tfile.exp: Test completion of command
+ "target tfile".
+
2013-03-28 Joel Brobecker <brobecker@adacore.com>
* gdb.ada/win_fu_syms: New testcase.
diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp
index cddc548..7b664bf 100644
--- a/gdb/testsuite/gdb.base/completion.exp
+++ b/gdb/testsuite/gdb.base/completion.exp
@@ -713,6 +713,13 @@ gdb_test "complete set gnutarget aut" "set gnutarget auto"
gdb_test "complete set cp-abi aut" "set cp-abi auto"
+# Test that completion of commands 'target FOO' works well.
+
+foreach target_name { "core" "tfile" "exec" } {
+ gdb_test "complete target ${target_name} ./gdb.base/completion" \
+ "target ${target_name} ./gdb.base/completion\\.exp.*"
+}
+
# Restore globals modified in this test...
set timeout $oldtimeout1
diff --git a/gdb/testsuite/gdb.trace/tfile.exp b/gdb/testsuite/gdb.trace/tfile.exp
index 56e2a79..f259952 100644
--- a/gdb/testsuite/gdb.trace/tfile.exp
+++ b/gdb/testsuite/gdb.trace/tfile.exp
@@ -125,3 +125,8 @@ gdb_test \
gdb_test "interpreter-exec mi \"-trace-status\"" \
"\\^done,supported=\"file\",trace-file=\".*basic.tf\",running=\"0\",stop-reason=\"request\",frames=\"${decimal}\",frames-created=\"${decimal}\",buffer-size=\"${decimal}\",buffer-free=\"${decimal}\",disconnected=\".*\",circular=\".*\",user-name=\"\",notes=\"\",start-time=\".*\",stop-time=\".*\"" \
"-trace-status"
+
+# Test completion works well.
+
+gdb_test "target tfile basic\t" "Assuming tracepoint.*" \
+ "complete-command 'target tfile'"
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 9a2425b..009db82 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -54,6 +54,7 @@
#include "cli/cli-utils.h"
#include "probe.h"
#include "ctf.h"
+#include "completer.h"
/* readline include files */
#include "readline/readline.h"
@@ -5904,5 +5905,5 @@ Show the notes string to use for future tstop commands"), NULL,
init_tfile_ops ();
- add_target (&tfile_ops);
+ add_target_with_completer (&tfile_ops, filename_completer);
}