6.0.3 added -g and -r options to the mod command, but they can't be used
together. This patch allows "-r -g" or "-rg" or "-Srg" etc.
crash-6.0.3> mod -r -g -S /usr/lib/debug/lib/modules/3.1.4-clim-3-amd64
mod: invalid option -- 'g'
Usage:
mod -s module [objfile] | -d module | -S [directory] | -D | -r | -R | -o | -g
Enter "help mod" for details.
Still working on the flaky module symbol problem...
Bob Montgomery
--- kernel.c.orig 2012-02-06 15:53:13.000000000 -0700
+++ kernel.c 2012-02-06 17:26:16.000000000 -0700
@@ -3103,25 +3103,42 @@ cmd_mod(void)
continue;
if (STREQ(args[c], "-g")) {
+ int ct = c;
pc->curcmd_flags |= MOD_SECTIONS;
- while (c < argcnt) {
- args[c] = args[c+1];
- c++;
+ while (ct < argcnt) {
+ args[ct] = args[ct+1];
+ ct++;
}
argcnt--;
+ c--;
} else if (STREQ(args[c], "-r")) {
+ int ct = c;
pc->curcmd_flags |= MOD_READNOW;
- while (c < argcnt) {
- args[c] = args[c+1];
- c++;
+ while (ct < argcnt) {
+ args[ct] = args[ct+1];
+ ct++;
}
argcnt--;
- } else if ((p = strstr(args[c], "g"))) {
- pc->curcmd_flags |= MOD_SECTIONS;
- shift_string_left(p, 1);
- } else if ((p = strstr(args[c], "r"))) {
- pc->curcmd_flags |= MOD_READNOW;
- shift_string_left(p, 1);
+ c--;
+ } else {
+ if ((p = strstr(args[c], "g"))) {
+ pc->curcmd_flags |= MOD_SECTIONS;
+ shift_string_left(p, 1);
+ }
+ if ((p = strstr(args[c], "r"))) {
+ pc->curcmd_flags |= MOD_READNOW;
+ shift_string_left(p, 1);
+ }
+ /* if I've removed everything but the '-', toss it */
+ if (STREQ(args[c], "-")) {
+ int ct = c;
+ while (ct < argcnt) {
+ args[ct] = args[ct+1];
+ ct++;
+ }
+ argcnt--;
+ c--;
+ }
}
}
--
Crash-utility mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/crash-utility