summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/ddb/db_access.c26
-rw-r--r--sys/ddb/db_examine.c37
-rw-r--r--sys/ddb/db_print.c7
-rw-r--r--sys/ddb/db_sym.c10
4 files changed, 39 insertions, 41 deletions
diff --git a/sys/ddb/db_access.c b/sys/ddb/db_access.c
index 58e67cbdb8d..23ab6e17ec2 100644
--- a/sys/ddb/db_access.c
+++ b/sys/ddb/db_access.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: db_access.c,v 1.5 1996/04/21 22:18:53 deraadt Exp $ */
+/* $OpenBSD: db_access.c,v 1.6 1997/07/06 23:09:23 niklas Exp $ */
/* $NetBSD: db_access.c,v 1.8 1994/10/09 08:37:35 mycroft Exp $ */
/*
@@ -42,28 +42,20 @@
* Access unaligned data items on aligned (longword)
* boundaries.
*/
-
-int db_extend[] = { /* table for sign-extending */
- 0,
- (int)0xFFFFFF80,
- (int)0xFFFF8000,
- (int)0xFF800000,
- (int)0x80000000
-};
-
db_expr_t
db_get_value(addr, size, is_signed)
db_addr_t addr;
- register size_t size;
+ size_t size;
boolean_t is_signed;
{
- char data[sizeof(int)];
- register db_expr_t value;
- register int i;
+ char data[sizeof(db_expr_t)];
+ db_expr_t value, extend;
+ int i;
db_read_bytes(addr, size, data);
value = 0;
+ extend = (~(db_expr_t)0) << (size * 8 - 1);
#if BYTE_ORDER == LITTLE_ENDIAN
for (i = size - 1; i >= 0; i--)
#else /* BYTE_ORDER == BIG_ENDIAN */
@@ -71,8 +63,8 @@ db_get_value(addr, size, is_signed)
#endif /* BYTE_ORDER */
value = (value << 8) + (data[i] & 0xFF);
- if (size < 4 && is_signed && (value & db_extend[size]) != 0)
- value |= db_extend[size];
+ if (size < sizeof(db_expr_t) && is_signed && (value & extend))
+ value |= extend;
return (value);
}
@@ -82,7 +74,7 @@ db_put_value(addr, size, value)
register size_t size;
register db_expr_t value;
{
- char data[sizeof(int)];
+ char data[sizeof(db_expr_t)];
register int i;
#if BYTE_ORDER == LITTLE_ENDIAN
diff --git a/sys/ddb/db_examine.c b/sys/ddb/db_examine.c
index 539686d7e43..825a8cdadba 100644
--- a/sys/ddb/db_examine.c
+++ b/sys/ddb/db_examine.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: db_examine.c,v 1.5 1996/08/04 01:27:45 niklas Exp $ */
+/* $OpenBSD: db_examine.c,v 1.6 1997/07/06 23:09:24 niklas Exp $ */
/* $NetBSD: db_examine.c,v 1.11 1996/03/30 22:30:07 christos Exp $ */
/*
@@ -47,7 +47,7 @@ char db_examine_format[TOK_STRING_SIZE] = "x";
/*
* Examine (print) data. Syntax is:
- * x/[bhl][cdiorsuxz]*
+ * x/[bhlq][cdiorsuxz]*
* For example, the command:
* x/bxxxx
* should print:
@@ -72,8 +72,7 @@ db_examine_cmd(addr, have_addr, count, modif)
void
db_examine(addr, fmt, count)
- register
- db_addr_t addr;
+ db_addr_t addr;
char * fmt; /* format string */
int count; /* repeat count */
{
@@ -107,38 +106,42 @@ db_examine(addr, fmt, count)
size = 4;
width = 12;
break;
+ case 'q': /* quad-word */
+ size = 8;
+ width = 20;
+ break;
case 'a': /* address */
- db_printf("= 0x%lx\n", addr);
+ db_printf("= 0x%lx\n", (long)addr);
break;
case 'r': /* signed, current radix */
value = db_get_value(addr, size, TRUE);
addr += size;
- db_printf("%-*r", width, value);
+ db_printf("%-*lr", width, (long)value);
break;
case 'x': /* unsigned hex */
value = db_get_value(addr, size, FALSE);
addr += size;
- db_printf("%-*x", width, value);
+ db_printf("%-*lx", width, (long)value);
break;
case 'z': /* signed hex */
value = db_get_value(addr, size, TRUE);
addr += size;
- db_printf("%-*z", width, value);
+ db_printf("%-*lz", width, (long)value);
break;
case 'd': /* signed decimal */
value = db_get_value(addr, size, TRUE);
addr += size;
- db_printf("%-*d", width, value);
+ db_printf("%-*ld", width, (long)value);
break;
case 'u': /* unsigned decimal */
value = db_get_value(addr, size, FALSE);
addr += size;
- db_printf("%-*u", width, value);
+ db_printf("%-*lu", width, (long)value);
break;
case 'o': /* unsigned octal */
value = db_get_value(addr, size, FALSE);
addr += size;
- db_printf("%-*o", width, value);
+ db_printf("%-*lo", width, value);
break;
case 'c': /* character */
value = db_get_value(addr, 1, FALSE);
@@ -199,22 +202,22 @@ db_print_cmd(addr, have_addr, count, modif)
db_printsym((db_addr_t)addr, DB_STGY_ANY);
break;
case 'r':
- db_printf("%11r", addr);
+ db_printf("%*r", sizeof(db_expr_t) * 2 * 6 / 5, addr);
break;
case 'x':
- db_printf("%8x", addr);
+ db_printf("%*x", sizeof(db_expr_t) * 2, addr);
break;
case 'z':
- db_printf("%8z", addr);
+ db_printf("%*z", sizeof(db_expr_t) * 2, addr);
break;
case 'd':
- db_printf("%11d", addr);
+ db_printf("%*d", sizeof(db_expr_t) * 2 * 6 / 5, addr);
break;
case 'u':
- db_printf("%11u", addr);
+ db_printf("%*u", sizeof(db_expr_t) * 2 * 6 / 5, addr);
break;
case 'o':
- db_printf("%16o", addr);
+ db_printf("%*o", sizeof(db_expr_t) * 2 * 4 / 3, addr);
break;
case 'c':
value = addr & 0xFF;
diff --git a/sys/ddb/db_print.c b/sys/ddb/db_print.c
index 0e55e096f7d..e2e6c17dd1a 100644
--- a/sys/ddb/db_print.c
+++ b/sys/ddb/db_print.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: db_print.c,v 1.4 1996/04/21 22:19:08 deraadt Exp $ */
+/* $OpenBSD: db_print.c,v 1.5 1997/07/06 23:09:24 niklas Exp $ */
/* $NetBSD: db_print.c,v 1.5 1996/02/05 01:57:11 christos Exp $ */
/*
@@ -60,12 +60,13 @@ db_show_regs(addr, have_addr, count, modif)
for (regp = db_regs; regp < db_eregs; regp++) {
db_read_variable(regp, &value);
- db_printf("%-12s%#10n", regp->name, value);
+ db_printf("%-12s%#*ln", regp->name, sizeof(db_expr_t) * 2 * 6 / 5,
+ (long)value);
db_find_xtrn_sym_and_offset((db_addr_t)value, &name, &offset);
if (name != 0 && offset <= db_maxoff && offset != value) {
db_printf("\t%s", name);
if (offset != 0)
- db_printf("+%#r", offset);
+ db_printf("+%#lr", (long)offset);
}
db_printf("\n");
}
diff --git a/sys/ddb/db_sym.c b/sys/ddb/db_sym.c
index d39bd76ea14..a52e70d7c8b 100644
--- a/sys/ddb/db_sym.c
+++ b/sys/ddb/db_sym.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: db_sym.c,v 1.19 1997/05/29 03:28:44 mickey Exp $ */
+/* $OpenBSD: db_sym.c,v 1.20 1997/07/06 23:09:25 niklas Exp $ */
/* $NetBSD: db_sym.c,v 1.12 1996/02/05 01:57:15 christos Exp $ */
/*
@@ -363,13 +363,15 @@ db_printsym(off, strategy)
if (d)
db_printf("+%#r", d);
if (strategy == DB_STGY_PROC) {
- if (db_line_at_pc(cursym, &filename, &linenum, off))
- db_printf(" [%s:%d]", filename, linenum);
+ if (db_line_at_pc(cursym, &filename, &linenum,
+ off))
+ db_printf(" [%s:%d]", filename,
+ linenum);
}
return;
}
}
- db_printf("%#n", off);
+ db_printf("%#ln", off);
return;
}