The mod command won't do filename completion.
Sometimes I set up a big ugly directory path for mod -S by starting with
the dir command, using its filename completion to get the modules
directory, and then command-line editing the dir command into a mod -S
command before executing it. Ahem.
This hacky patch allows crash to tell gdb that "mod" is a command that
should get filename completion. It's pretty un-smart filename
completion, e.g. doesn't know that sometimes it should be selecting from
a list of modules instead of filenames, etc. And it messes with the
separation of crash and gdb.
But mod -S <tab><tab> seems to work.
It does change the behavior of "crash> gdb help mod" and "crash> gdb
mod".
Bob Montgomery
--- defs.h.orig 2009-11-02 14:45:57.000000000 -0700
+++ defs.h 2009-11-02 14:18:23.000000000 -0700
@@ -4649,6 +4649,7 @@ extern int gdb_main(int, char **);
#endif
extern int have_partial_symbols(void);
extern int have_full_symbols(void);
+extern void crashcmd_filename_completion(char *);
#if defined(X86) || defined(X86_64) || defined(IA64)
#define XEN_HYPERVISOR_ARCH
--- gdb_interface.c.orig 2009-11-02 14:46:09.000000000 -0700
+++ gdb_interface.c 2009-11-02 14:18:23.000000000 -0700
@@ -181,6 +181,7 @@ gdb_session_init(void)
gdb_disassemble_from_exec = 0;
#endif
+ crashcmd_filename_completion("mod");
pc->flags |= GDB_INIT; /* set here so gdb_interface will work */
req = (struct gnu_request *)GETBUF(sizeof(struct gnu_request));
--- gdb-6.1.patch.orig 2009-11-02 14:49:30.000000000 -0700
+++ gdb-6.1.patch 2009-11-02 14:49:14.000000000 -0700
@@ -11763,3 +11763,23 @@ diff -urp gdb-6.1.orig/gdb/ChangeLog gdb
#endif /* VI_MODE */
if (rl_editing_mode == emacs_mode)
+
+--- gdb-6.1/gdb/cli/cli-cmds.c.orig 2009-11-02 14:46:42.000000000 -0700
++++ gdb-6.1/gdb/cli/cli-cmds.c 2009-11-02 14:44:24.000000000 -0700
+@@ -1307,3 +1307,16 @@ With no argument, show definitions of al
+ &setlist),
+ &showlist);
+ }
++
++void
++crashcmd_no_func(char *p, int i)
++{
++}
++
++void
++crashcmd_filename_completion(char *cmd)
++{
++ struct cmd_list_element *c;
++ c = add_cmd(cmd, no_class, crashcmd_no_func, "", &cmdlist);
++ set_cmd_completer (c, filename_completer);
++}
--
Crash-utility mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/crash-utility