From 9852c492bd1c33290056351227ed7f314ff045c3 Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Fri, 29 Mar 2013 15:21:23 +0000 Subject: [PATCH] gdb/ 2013-03-29 Yao Qi * 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. gdb/testsuite: 2013-03-29 Yao Qi * 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". --- gdb/ChangeLog | 14 ++++++++++++++ gdb/corelow.c | 3 ++- gdb/exec.c | 2 +- gdb/target.c | 22 +++++++++++++++++++--- gdb/target.h | 4 ++++ gdb/testsuite/ChangeLog | 7 +++++++ gdb/testsuite/gdb.base/completion.exp | 7 +++++++ gdb/testsuite/gdb.trace/tfile.exp | 5 +++++ gdb/tracepoint.c | 3 ++- 9 files changed, 61 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3b7926adb1b..58251edd439 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,17 @@ +2013-03-29 Yao Qi + + * 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 * coffread.c (is_import_fixup_symbol): New function. diff --git a/gdb/corelow.c b/gdb/corelow.c index 77bab82fa8a..fa489410d99 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 f550194b18f..3386b60d186 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 9193c97ea14..24cc79d4c06 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 ee3fbff4b0c..4f8520cee9b 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 9c835f2efa5..20a19fc0770 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2013-03-29 Yao Qi + + * 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 * gdb.ada/win_fu_syms: New testcase. diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp index cddc54898ad..7b664bfc256 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 56e2a799041..f259952640e 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 9a2425b5215..009db82c901 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); } -- 2.30.2