Module Name: src
Committed By: ryo
Date: Tue Sep 10 09:32:05 UTC 2019
Modified Files:
src/share/man/man4: ddb.4
src/sys/ddb: db_examine.c
Log Message:
- examin/m displays with splitting by spaces as specified size
- add support 'q' modifier on all arch
- consider endianness
To generate a diff of this commit:
cvs rdiff -u -r1.186 -r1.187 src/share/man/man4/ddb.4
cvs rdiff -u -r1.38 -r1.39 src/sys/ddb/db_examine.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/share/man/man4/ddb.4
diff -u src/share/man/man4/ddb.4:1.186 src/share/man/man4/ddb.4:1.187
--- src/share/man/man4/ddb.4:1.186 Tue Sep 10 08:16:04 2019
+++ src/share/man/man4/ddb.4 Tue Sep 10 09:32:04 2019
@@ -1,4 +1,4 @@
-.\" $NetBSD: ddb.4,v 1.186 2019/09/10 08:16:04 ryo Exp $
+.\" $NetBSD: ddb.4,v 1.187 2019/09/10 09:32:04 ryo Exp $
.\"
.\" Copyright (c) 1997 - 2009 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -412,6 +412,8 @@ examine half-words (16 bits).
examine words (legacy
.Dq long ,
32 bits).
+.It Cm q
+examine quad-words (64 bits).
.It Cm L
examine long words (implementation dependent)
.It Cm a
Index: src/sys/ddb/db_examine.c
diff -u src/sys/ddb/db_examine.c:1.38 src/sys/ddb/db_examine.c:1.39
--- src/sys/ddb/db_examine.c:1.38 Tue Sep 10 08:16:05 2019
+++ src/sys/ddb/db_examine.c Tue Sep 10 09:32:05 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: db_examine.c,v 1.38 2019/09/10 08:16:05 ryo Exp $ */
+/* $NetBSD: db_examine.c,v 1.39 2019/09/10 09:32:05 ryo Exp $ */
/*
* Mach Operating System
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_examine.c,v 1.38 2019/09/10 08:16:05 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_examine.c,v 1.39 2019/09/10 09:32:05 ryo Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -101,13 +101,10 @@ db_examine(db_addr_t addr, char *fmt, in
size = 4;
width = 12;
break;
- case 'q':
- if (sizeof(db_expr_t) != sizeof(uint64_t)) {
- size = -1;
- db_error("q not supported\n");
- /*NOTREACHED*/
- }
- /* FALLTHROUGH */
+ case 'q': /* quad-word */
+ size = 8;
+ width = 16;
+ break;
case 'L': /* implementation maximum */
size = sizeof value;
width = 12 * (sizeof value / 4);
@@ -146,13 +143,19 @@ db_examine(db_addr_t addr, char *fmt, in
do {
for (i = 0; i < size; i++) {
value =
- db_get_value(addr+bytes, 1,
- false);
+#if BYTE_ORDER == LITTLE_ENDIAN
+ db_get_value(addr +
+ (bytes & ~(size - 1)) +
+ size - i - 1, 1, false);
+#else
+ db_get_value(addr + bytes,
+ 1, false);
+#endif
db_printf(
"%02" DDB_EXPR_FMT "x",
value);
bytes++;
- if (!(bytes % 4))
+ if (!(bytes % size))
db_printf(" ");
}
} while ((bytes != 16) && count--);