db_trace.c (103646) | db_trace.c (104435) |
---|---|
1/* $FreeBSD: head/sys/powerpc/powerpc/db_trace.c 103646 2002-09-19 18:46:29Z jhb $ */ | 1/* $FreeBSD: head/sys/powerpc/powerpc/db_trace.c 104435 2002-10-04 01:19:18Z grehan $ */ |
2/* $NetBSD: db_trace.c,v 1.20 2002/05/13 20:30:09 matt Exp $ */ 3/* $OpenBSD: db_trace.c,v 1.3 1997/03/21 02:10:48 niklas Exp $ */ 4 5/* 6 * Mach Operating System 7 * Copyright (c) 1992 Carnegie Mellon University 8 * All Rights Reserved. 9 * --- 14 unchanged lines hidden (view full) --- 24 * Carnegie Mellon University 25 * Pittsburgh PA 15213-3890 26 * 27 * any improvements or extensions that they make and grant Carnegie Mellon 28 * the rights to redistribute these changes. 29 */ 30 31#include <sys/param.h> | 2/* $NetBSD: db_trace.c,v 1.20 2002/05/13 20:30:09 matt Exp $ */ 3/* $OpenBSD: db_trace.c,v 1.3 1997/03/21 02:10:48 niklas Exp $ */ 4 5/* 6 * Mach Operating System 7 * Copyright (c) 1992 Carnegie Mellon University 8 * All Rights Reserved. 9 * --- 14 unchanged lines hidden (view full) --- 24 * Carnegie Mellon University 25 * Pittsburgh PA 15213-3890 26 * 27 * any improvements or extensions that they make and grant Carnegie Mellon 28 * the rights to redistribute these changes. 29 */ 30 31#include <sys/param.h> |
32#include <sys/systm.h> |
|
32#include <sys/proc.h> 33#include <sys/user.h> 34 35#include <vm/vm.h> 36#include <vm/pmap.h> 37#include <vm/vm_extern.h> 38 39#include <machine/db_machdep.h> 40#include <machine/spr.h> 41#include <machine/trap.h> 42 43#include <ddb/ddb.h> 44#include <ddb/db_access.h> 45#include <ddb/db_sym.h> 46#include <ddb/db_variables.h> 47 48struct db_variable db_regs[] = { | 33#include <sys/proc.h> 34#include <sys/user.h> 35 36#include <vm/vm.h> 37#include <vm/pmap.h> 38#include <vm/vm_extern.h> 39 40#include <machine/db_machdep.h> 41#include <machine/spr.h> 42#include <machine/trap.h> 43 44#include <ddb/ddb.h> 45#include <ddb/db_access.h> 46#include <ddb/db_sym.h> 47#include <ddb/db_variables.h> 48 49struct db_variable db_regs[] = { |
49 { "r0", (long *)&ddb_regs.r[0], FCN_NULL }, 50 { "r1", (long *)&ddb_regs.r[1], FCN_NULL }, 51 { "r2", (long *)&ddb_regs.r[2], FCN_NULL }, 52 { "r3", (long *)&ddb_regs.r[3], FCN_NULL }, 53 { "r4", (long *)&ddb_regs.r[4], FCN_NULL }, 54 { "r5", (long *)&ddb_regs.r[5], FCN_NULL }, 55 { "r6", (long *)&ddb_regs.r[6], FCN_NULL }, 56 { "r7", (long *)&ddb_regs.r[7], FCN_NULL }, 57 { "r8", (long *)&ddb_regs.r[8], FCN_NULL }, 58 { "r9", (long *)&ddb_regs.r[9], FCN_NULL }, 59 { "r10", (long *)&ddb_regs.r[10], FCN_NULL }, 60 { "r11", (long *)&ddb_regs.r[11], FCN_NULL }, 61 { "r12", (long *)&ddb_regs.r[12], FCN_NULL }, 62 { "r13", (long *)&ddb_regs.r[13], FCN_NULL }, 63 { "r14", (long *)&ddb_regs.r[14], FCN_NULL }, 64 { "r15", (long *)&ddb_regs.r[15], FCN_NULL }, 65 { "r16", (long *)&ddb_regs.r[16], FCN_NULL }, 66 { "r17", (long *)&ddb_regs.r[17], FCN_NULL }, 67 { "r18", (long *)&ddb_regs.r[18], FCN_NULL }, 68 { "r19", (long *)&ddb_regs.r[19], FCN_NULL }, 69 { "r20", (long *)&ddb_regs.r[20], FCN_NULL }, 70 { "r21", (long *)&ddb_regs.r[21], FCN_NULL }, 71 { "r22", (long *)&ddb_regs.r[22], FCN_NULL }, 72 { "r23", (long *)&ddb_regs.r[23], FCN_NULL }, 73 { "r24", (long *)&ddb_regs.r[24], FCN_NULL }, 74 { "r25", (long *)&ddb_regs.r[25], FCN_NULL }, 75 { "r26", (long *)&ddb_regs.r[26], FCN_NULL }, 76 { "r27", (long *)&ddb_regs.r[27], FCN_NULL }, 77 { "r28", (long *)&ddb_regs.r[28], FCN_NULL }, 78 { "r29", (long *)&ddb_regs.r[29], FCN_NULL }, 79 { "r30", (long *)&ddb_regs.r[30], FCN_NULL }, 80 { "r31", (long *)&ddb_regs.r[31], FCN_NULL }, 81 { "iar", (long *)&ddb_regs.iar, FCN_NULL }, 82 { "msr", (long *)&ddb_regs.msr, FCN_NULL }, 83 { "lr", (long *)&ddb_regs.lr, FCN_NULL }, 84 { "ctr", (long *)&ddb_regs.ctr, FCN_NULL }, 85 { "cr", (long *)&ddb_regs.cr, FCN_NULL }, 86 { "xer", (long *)&ddb_regs.xer, FCN_NULL }, | 50 { "r0", &ddb_regs.r[0], FCN_NULL }, 51 { "r1", &ddb_regs.r[1], FCN_NULL }, 52 { "r2", &ddb_regs.r[2], FCN_NULL }, 53 { "r3", &ddb_regs.r[3], FCN_NULL }, 54 { "r4", &ddb_regs.r[4], FCN_NULL }, 55 { "r5", &ddb_regs.r[5], FCN_NULL }, 56 { "r6", &ddb_regs.r[6], FCN_NULL }, 57 { "r7", &ddb_regs.r[7], FCN_NULL }, 58 { "r8", &ddb_regs.r[8], FCN_NULL }, 59 { "r9", &ddb_regs.r[9], FCN_NULL }, 60 { "r10", &ddb_regs.r[10], FCN_NULL }, 61 { "r11", &ddb_regs.r[11], FCN_NULL }, 62 { "r12", &ddb_regs.r[12], FCN_NULL }, 63 { "r13", &ddb_regs.r[13], FCN_NULL }, 64 { "r14", &ddb_regs.r[14], FCN_NULL }, 65 { "r15", &ddb_regs.r[15], FCN_NULL }, 66 { "r16", &ddb_regs.r[16], FCN_NULL }, 67 { "r17", &ddb_regs.r[17], FCN_NULL }, 68 { "r18", &ddb_regs.r[18], FCN_NULL }, 69 { "r19", &ddb_regs.r[19], FCN_NULL }, 70 { "r20", &ddb_regs.r[20], FCN_NULL }, 71 { "r21", &ddb_regs.r[21], FCN_NULL }, 72 { "r22", &ddb_regs.r[22], FCN_NULL }, 73 { "r23", &ddb_regs.r[23], FCN_NULL }, 74 { "r24", &ddb_regs.r[24], FCN_NULL }, 75 { "r25", &ddb_regs.r[25], FCN_NULL }, 76 { "r26", &ddb_regs.r[26], FCN_NULL }, 77 { "r27", &ddb_regs.r[27], FCN_NULL }, 78 { "r28", &ddb_regs.r[28], FCN_NULL }, 79 { "r29", &ddb_regs.r[29], FCN_NULL }, 80 { "r30", &ddb_regs.r[30], FCN_NULL }, 81 { "r31", &ddb_regs.r[31], FCN_NULL }, 82 { "iar", &ddb_regs.iar, FCN_NULL }, 83 { "msr", &ddb_regs.msr, FCN_NULL }, 84 { "lr", &ddb_regs.lr, FCN_NULL }, 85 { "ctr", &ddb_regs.ctr, FCN_NULL }, 86 { "cr", &ddb_regs.cr, FCN_NULL }, 87 { "xer", &ddb_regs.xer, FCN_NULL }, |
87#ifdef PPC_IBM4XX | 88#ifdef PPC_IBM4XX |
88 { "dear", (long *)&ddb_regs.dear, FCN_NULL }, 89 { "esr", (long *)&ddb_regs.esr, FCN_NULL }, 90 { "pid", (long *)&ddb_regs.pid, FCN_NULL }, | 89 { "dear", &ddb_regs.dear, FCN_NULL }, 90 { "esr", &ddb_regs.esr, FCN_NULL }, 91 { "pid", &ddb_regs.pid, FCN_NULL }, |
91#endif 92}; 93struct db_variable *db_eregs = db_regs + sizeof (db_regs)/sizeof (db_regs[0]); 94 95extern int trapexit[]; 96extern int end[]; 97 98/* 99 * Frame tracing. 100 */ | 92#endif 93}; 94struct db_variable *db_eregs = db_regs + sizeof (db_regs)/sizeof (db_regs[0]); 95 96extern int trapexit[]; 97extern int end[]; 98 99/* 100 * Frame tracing. 101 */ |
101void 102db_stack_trace_print(addr, have_addr, count, modif, pr) 103 db_expr_t addr; 104 int have_addr; 105 db_expr_t count; 106 char *modif; 107 void (*pr) __P((const char *, ...)); | 102static void 103db_stack_trace_print(db_expr_t addr, int have_addr, db_expr_t count, 104 char *modif, void (*pr)(const char *, ...)) |
108{ 109 db_addr_t frame, lr, caller, *args; 110 db_addr_t fakeframe[2]; 111 db_expr_t diff; | 105{ 106 db_addr_t frame, lr, caller, *args; 107 db_addr_t fakeframe[2]; 108 db_expr_t diff; |
112 db_sym_t sym; 113 char *symname; | 109 c_db_sym_t sym; 110 const char *symname; |
114 boolean_t kernel_only = TRUE; 115 boolean_t trace_thread = FALSE; 116 boolean_t full = FALSE; 117 118 { 119 register char *cp = modif; 120 register char c; 121 --- 176 unchanged lines hidden --- | 111 boolean_t kernel_only = TRUE; 112 boolean_t trace_thread = FALSE; 113 boolean_t full = FALSE; 114 115 { 116 register char *cp = modif; 117 register char c; 118 --- 176 unchanged lines hidden --- |