Module Name: src
Committed By: christos
Date: Wed Jun 1 00:47:16 UTC 2016
Modified Files:
src/usr.bin/kdump: kdump.c
Log Message:
Symbolic printing for mmap
To generate a diff of this commit:
cvs rdiff -u -r1.123 -r1.124 src/usr.bin/kdump/kdump.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/kdump/kdump.c
diff -u src/usr.bin/kdump/kdump.c:1.123 src/usr.bin/kdump/kdump.c:1.124
--- src/usr.bin/kdump/kdump.c:1.123 Sun Mar 27 17:51:20 2016
+++ src/usr.bin/kdump/kdump.c Tue May 31 20:47:16 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: kdump.c,v 1.123 2016/03/27 21:51:20 alnsn Exp $ */
+/* $NetBSD: kdump.c,v 1.124 2016/06/01 00:47:16 christos Exp $ */
/*-
* Copyright (c) 1988, 1993
@@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19
#if 0
static char sccsid[] = "@(#)kdump.c 8.4 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: kdump.c,v 1.123 2016/03/27 21:51:20 alnsn Exp $");
+__RCSID("$NetBSD: kdump.c,v 1.124 2016/06/01 00:47:16 christos Exp $");
#endif
#endif /* not lint */
@@ -48,6 +48,7 @@ __RCSID("$NetBSD: kdump.c,v 1.123 2016/0
#define _KMEMUSER /* To get the pseudo errors defined */
#include <sys/errno.h>
#undef _KMEMUSER
+#include <sys/mman.h>
#include <sys/time.h>
#include <sys/uio.h>
#include <sys/ktrace.h>
@@ -598,7 +599,43 @@ ktrsyscall(struct ktr_syscall *ktr)
ap += 2;
argcount -= 2;
c = ',';
-
+ } else if (strcmp(sys_name, "mmap") == 0 && argcount >= 6) {
+ char buf[1024];
+ putchar('(');
+ output_long((long)ap[0], !(decimal || small(ap[0])));
+ c = ',';
+ putchar(c);
+ output_long((long)ap[1], !(decimal || small(ap[1])));
+ putchar(c);
+ if (ap[2] == PROT_NONE) {
+ fputs("PROT_NONE", stdout);
+ } else {
+ const char *s = "";
+ c = 0;
+ if (ap[2] & PROT_READ) {
+ fputs("PROT_READ", stdout);
+ s = "|";
+ ap[2] &= ~PROT_READ;
+ }
+ if (ap[2] & PROT_WRITE) {
+ printf("%sPROT_WRITE", s);
+ ap[2] &= ~PROT_WRITE;
+ s = "|";
+ }
+ if (ap[2] & PROT_EXEC) {
+ printf("%sPROT_EXEC", s);
+ ap[2] &= ~PROT_EXEC;
+ s = "|";
+ }
+ if (ap[2]) {
+ printf("%s%#lx", s, (long)ap[2]);
+ }
+ }
+ snprintb(buf, sizeof(buf), MAP_FMT, ap[3]);
+ printf(",%s", buf);
+ ap += 4;
+ argcount -= 4;
+ c = ',';
} else if (strcmp(sys_name, "ptrace") == 0 && argcount >= 1) {
putchar('(');
if (strcmp(emul->name, "linux") == 0 ||