diff mbox

[RFA] Fix PR cli/18053

Message ID 1465289795-9415-1-git-send-email-tom@tromey.com
State New
Headers show

Commit Message

Tom Tromey June 7, 2016, 8:56 a.m. UTC
PR cli/18053 concerns a couple of minor bugs in the JIT debuginfo
support.  First, jit-reader-load should use filename completion and
support tilde expansion.  Second, the help for jit-reader-unload is
incorrect.  While working on this I also realized that
jit-reader-unload should use the no-op completer, so I've included
that as well.

Built and regtested on x86-64 Fedora 23.  A completer test for
jit-reader-load is included, but not a tilde-expansion test, as I
couldn't think of a reliable way to test that.

2016-06-07  Tom Tromey  <tom@tromey.com>

	PR cli/18053:
	* jit.c (jit_reader_load_command): Use tilde_expand.
	(_initialize_jit): Fix help for jit-reader-unload.  Set completer
	for new commands.

2016-06-07  Tom Tromey  <tom@tromey.com>

	PR cli/18053:
	* gdb.base/jit-so.exp (one_jit_test): Add jit-reader-load
	completion test.
---
 gdb/ChangeLog                     |  7 +++++++
 gdb/jit.c                         | 24 ++++++++++++++++++------
 gdb/testsuite/ChangeLog           |  6 ++++++
 gdb/testsuite/gdb.base/jit-so.exp |  7 +++++++
 4 files changed, 38 insertions(+), 6 deletions(-)

Comments

Yao Qi July 13, 2016, 8:05 a.m. UTC | #1
Tom Tromey <tom@tromey.com> writes:

> 2016-06-07  Tom Tromey  <tom@tromey.com>
>
> 	PR cli/18053:
> 	* jit.c (jit_reader_load_command): Use tilde_expand.
> 	(_initialize_jit): Fix help for jit-reader-unload.  Set completer
> 	for new commands.
>
> 2016-06-07  Tom Tromey  <tom@tromey.com>
>
> 	PR cli/18053:
> 	* gdb.base/jit-so.exp (one_jit_test): Add jit-reader-load
> 	completion test.

Patch is good to me.
diff mbox

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index af4ddcc..77616ba 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@ 
+2016-06-07  Tom Tromey  <tom@tromey.com>
+
+	PR cli/18053:
+	* jit.c (jit_reader_load_command): Use tilde_expand.
+	(_initialize_jit): Fix help for jit-reader-unload.  Set completer
+	for new commands.
+
 2016-06-02  Jon Turney  <jon.turney@dronecode.org.uk>
 
 	* windows-nat.c (handle_output_debug_string): Return type of
diff --git a/gdb/jit.c b/gdb/jit.c
index 9fd5ae6..39b310a 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -39,6 +39,8 @@ 
 #include "gdb-dlfcn.h"
 #include <sys/stat.h>
 #include "gdb_bfd.h"
+#include "readline/tilde.h"
+#include "completer.h"
 
 static const char *jit_reader_dir = NULL;
 
@@ -207,15 +209,19 @@  jit_reader_load_command (char *args, int from_tty)
 
   if (args == NULL)
     error (_("No reader name provided."));
+  args = tilde_expand (args);
+  prev_cleanup = make_cleanup (xfree, args);
 
   if (loaded_jit_reader != NULL)
     error (_("JIT reader already loaded.  Run jit-reader-unload first."));
 
   if (IS_ABSOLUTE_PATH (args))
-    so_name = xstrdup (args);
+    so_name = args;
   else
-    so_name = xstrprintf ("%s%s%s", jit_reader_dir, SLASH_STRING, args);
-  prev_cleanup = make_cleanup (xfree, so_name);
+    {
+      so_name = xstrprintf ("%s%s%s", jit_reader_dir, SLASH_STRING, args);
+      make_cleanup (xfree, so_name);
+    }
 
   loaded_jit_reader = jit_reader_load (so_name);
   do_cleanups (prev_cleanup);
@@ -1516,15 +1522,21 @@  _initialize_jit (void)
   jit_gdbarch_data = gdbarch_data_register_pre_init (jit_gdbarch_data_init);
   if (is_dl_available ())
     {
-      add_com ("jit-reader-load", no_class, jit_reader_load_command, _("\
+      struct cmd_list_element *c;
+
+      c = add_com ("jit-reader-load", no_class, jit_reader_load_command, _("\
 Load FILE as debug info reader and unwinder for JIT compiled code.\n\
 Usage: jit-reader-load FILE\n\
 Try to load file FILE as a debug info reader (and unwinder) for\n\
 JIT compiled code.  The file is loaded from " JIT_READER_DIR ",\n\
 relocated relative to the GDB executable if required."));
-      add_com ("jit-reader-unload", no_class, jit_reader_unload_command, _("\
+      set_cmd_completer (c, filename_completer);
+
+      c = add_com ("jit-reader-unload", no_class,
+		   jit_reader_unload_command, _("\
 Unload the currently loaded JIT debug info reader.\n\
-Usage: jit-reader-unload FILE\n\n\
+Usage: jit-reader-unload\n\n\
 Do \"help jit-reader-load\" for info on loading debug info readers."));
+      set_cmd_completer (c, noop_completer);
     }
 }
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 3b305a6..38646d8 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@ 
+2016-06-07  Tom Tromey  <tom@tromey.com>
+
+	PR cli/18053:
+	* gdb.base/jit-so.exp (one_jit_test): Add jit-reader-load
+	completion test.
+
 2016-06-02  Tom Tromey  <tom@tromey.com>
 
 	PR python/18984:
diff --git a/gdb/testsuite/gdb.base/jit-so.exp b/gdb/testsuite/gdb.base/jit-so.exp
index 0db3259..9fadd86 100644
--- a/gdb/testsuite/gdb.base/jit-so.exp
+++ b/gdb/testsuite/gdb.base/jit-so.exp
@@ -117,3 +117,10 @@  proc one_jit_test {count match_str} {
 
 one_jit_test 1 "${hex}  jit_function_0000"
 one_jit_test 2 "${hex}  jit_function_0000\[\r\n\]+${hex}  jit_function_0001"
+
+# We don't intend to load the .so as a JIT debuginfo reader, but we
+# need some handy file name for a completion test.
+gdb_test \
+    "complete jit-reader-load [standard_output_file ${solib_testfile}.s]" \
+    "jit-reader-load $solib_binfile" \
+    "test jit-reader-load filename completion"