kernel - ddb: Print raw instruction pointers in ddb backtrace.
[dragonfly.git] / sys / platform / pc32 / i386 / db_trace.c
index 355be8a..6654ad3 100644 (file)
@@ -24,7 +24,6 @@
  * rights to redistribute these changes.
  *
  * $FreeBSD: src/sys/i386/i386/db_trace.c,v 1.35.2.3 2002/02/21 22:31:25 silby Exp $
- * $DragonFly: src/sys/platform/pc32/i386/db_trace.c,v 1.18 2007/02/02 15:57:51 corecode Exp $
  */
 
 #include <sys/param.h>
@@ -87,7 +86,7 @@ struct db_variable db_regs[] = {
        { "dr6",        NULL,                db_dr6 },
        { "dr7",        NULL,                db_dr7 },
 };
-struct db_variable *db_eregs = db_regs + sizeof(db_regs)/sizeof(db_regs[0]);
+struct db_variable *db_eregs = db_regs + NELEM(db_regs);
 
 /*
  * Stack trace.
@@ -164,6 +163,7 @@ db_print_stack_entry(const char *name, int narg, char **argnp, int *argp,
        }
        db_printf(") at ");
        db_printsym(callpc, DB_STGY_PROC);
+        db_printf(" %p ",  (void*) callpc);
        db_printf("\n");
 }
 
@@ -274,7 +274,7 @@ db_stack_trace_cmd(db_expr_t addr, boolean_t have_addr, db_expr_t count,
                        frame = (struct i386_frame *)(SP_REGS(&ddb_regs) - 4);
                callpc = PC_REGS(&ddb_regs);
        } else if (!INKERNEL(addr)) {
-#if needswork
+#if 0 /* needswork */
                pid = (addr % 16) + ((addr >> 4) % 16) * 10 +
                    ((addr >> 8) % 16) * 100 + ((addr >> 12) % 16) * 1000 +
                    ((addr >> 16) % 16) * 10000;
@@ -293,12 +293,12 @@ db_stack_trace_cmd(db_expr_t addr, boolean_t have_addr, db_expr_t count,
                        struct proc *p;
                        struct pcb *pcb;
 
-                       p = pfind(pid);
+                       p = pfindn(pid);
                        if (p == NULL) {
                                db_printf("pid %d not found\n", pid);
                                return;
                        }
-                       if ((p->p_flag & P_SWAPPEDOUT)) {
+                       if ((p->p_flags & P_SWAPPEDOUT)) {
                                db_printf("pid %d swapped out\n", pid);
                                return;
                        }
@@ -435,12 +435,12 @@ db_stack_trace_cmd(db_expr_t addr, boolean_t have_addr, db_expr_t count,
 }
 
 void
-print_backtrace(void)
+print_backtrace(int count)
 {
        register_t  ebp;
 
        __asm __volatile("movl %%ebp, %0" : "=r" (ebp));
-       db_stack_trace_cmd(ebp, 1, -1, NULL);
+       db_stack_trace_cmd(ebp, 1, count, NULL);
 }
 
 #define DB_DRX_FUNC(reg)                                               \