X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/blobdiff_plain/c36bd8130d0f62a8100ba285df15fa44fc0c7e86..4c0200b9e8504a2303980359a3736d871f3a8949:/gnu/usr.bin/gdb/kgdb/kgdb.c diff --git a/gnu/usr.bin/gdb/kgdb/kgdb.c b/gnu/usr.bin/gdb/kgdb/kgdb.c index 77ad5c50c9..48fa27a12d 100644 --- a/gnu/usr.bin/gdb/kgdb/kgdb.c +++ b/gnu/usr.bin/gdb/kgdb/kgdb.c @@ -83,7 +83,7 @@ usage(void) { fprintf(stderr, - "usage: %s [-afqv] [-d crashdir] [-c core | -n dumpnr | -r device]\n" + "usage: %s [-afqtv] [-d crashdir] [-c core | -n dumpnr | -r device]\n" "\t[kernel [core]]\n", getprogname()); exit(1); } @@ -99,18 +99,18 @@ kernel_from_dumpnr(int nr) /* * If there's a kernel image right here in the crash directory, then - * use it. The kernel image is either called kernel. or is in a - * subdirectory kernel. and called kernel. The latter allows us + * use it. The kernel image is either called kern. or is in a + * subdirectory kern. and called kernel. The latter allows us * to collect the modules in the same place. */ - snprintf(path, sizeof(path), "%s/kernel.%d", crashdir, nr); + snprintf(path, sizeof(path), "%s/kern.%d", crashdir, nr); if (stat(path, &st) == 0) { if (S_ISREG(st.st_mode)) { kernel = strdup(path); return; } if (S_ISDIR(st.st_mode)) { - snprintf(path, sizeof(path), "%s/kernel.%d/kernel", + snprintf(path, sizeof(path), "%s/kern.%d/kernel", crashdir, nr); if (stat(path, &st) == 0 && S_ISREG(st.st_mode)) { kernel = strdup(path); @@ -129,7 +129,7 @@ kernel_from_dumpnr(int nr) snprintf(path, sizeof(path), "%s/info.%d", crashdir, nr); info = fopen(path, "r"); if (info == NULL) { - warn(path); + warn("%s", path); return; } while (fgets(path, sizeof(path), info) != NULL) { @@ -226,11 +226,13 @@ kgdb_dmesg(void) return; bufp = kgdb_parse("msgbufp->msg_ptr"); size = (int)kgdb_parse("msgbufp->msg_size"); + if (bufp == 0 || size == 0) + return; rseq = (int)kgdb_parse("msgbufp->msg_bufr"); wseq = (int)kgdb_parse("msgbufp->msg_bufx"); rseq = MSGBUF_SEQ_TO_POS(size, rseq); wseq = MSGBUF_SEQ_TO_POS(size, wseq); - if (bufp == 0 || size == 0 || rseq == wseq) + if (rseq == wseq) return; printf("\nUnread portion of the kernel message buffer:\n"); @@ -324,6 +326,8 @@ main(int argc, char *argv[]) argv[a] = "-q"; else if (strcmp(s, "fullname") == 0) argv[a] = "-f"; + else if (strcmp(s, "tui-mode") == 0) + argv[a] = "-t"; } } @@ -333,8 +337,9 @@ main(int argc, char *argv[]) args.interpreter_p = INTERP_CONSOLE; args.argv = malloc(sizeof(char *)); args.argv[0] = argv[0]; + add_arg(&args, "--kernel"); - while ((ch = getopt(argc, argv, "ac:d:fn:qr:vw")) != -1) { + while ((ch = getopt(argc, argv, "ac:d:fn:qr:tvw")) != -1) { switch (ch) { case 'a': annotation_level++; @@ -376,6 +381,12 @@ main(int argc, char *argv[]) } remote = strdup(optarg); break; + case 't': + args.interpreter_p = INTERP_TUI; + add_arg(&args, "-tui"); + quiet = 1; + add_arg(&args, "-q"); + break; case 'v': /* increase verbosity. */ verbose++; break; @@ -409,7 +420,7 @@ main(int argc, char *argv[]) if (dumpnr >= 0) { snprintf(path, sizeof(path), "%s/vmcore.%d", crashdir, dumpnr); if (stat(path, &st) == -1) - err(1, path); + err(1, "%s", path); if (!S_ISREG(st.st_mode)) errx(1, "%s: not a regular file", path); vmcore = strdup(path);