Module Name: src Committed By: mlelstv Date: Tue Jan 31 21:17:57 UTC 2012
Modified Files: src/sys/arch/m68k/include: db_machdep.h src/sys/arch/m68k/m68k: db_disasm.c db_interface.c db_trace.c src/usr.sbin/crash: Makefile Log Message: Enable build of crash(8) for m86k platforms. To generate a diff of this commit: cvs rdiff -u -r1.30 -r1.31 src/sys/arch/m68k/include/db_machdep.h cvs rdiff -u -r1.38 -r1.39 src/sys/arch/m68k/m68k/db_disasm.c cvs rdiff -u -r1.34 -r1.35 src/sys/arch/m68k/m68k/db_interface.c cvs rdiff -u -r1.56 -r1.57 src/sys/arch/m68k/m68k/db_trace.c cvs rdiff -u -r1.15 -r1.16 src/usr.sbin/crash/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/m68k/include/db_machdep.h diff -u src/sys/arch/m68k/include/db_machdep.h:1.30 src/sys/arch/m68k/include/db_machdep.h:1.31 --- src/sys/arch/m68k/include/db_machdep.h:1.30 Thu May 26 15:34:13 2011 +++ src/sys/arch/m68k/include/db_machdep.h Tue Jan 31 21:17:57 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: db_machdep.h,v 1.30 2011/05/26 15:34:13 joerg Exp $ */ +/* $NetBSD: db_machdep.h,v 1.31 2012/01/31 21:17:57 mlelstv Exp $ */ /* * Mach Operating System @@ -32,6 +32,12 @@ #ifndef _M68K_DB_MACHDEP_H_ #define _M68K_DB_MACHDEP_H_ +#if !defined(_KERNEL) && !defined(_STANDALONE) +#include <stddef.h> +#include <stdbool.h> +#include <string.h> +#endif /* _KERNEL || _STANDALONE */ + #include <sys/types.h> /* Index: src/sys/arch/m68k/m68k/db_disasm.c diff -u src/sys/arch/m68k/m68k/db_disasm.c:1.38 src/sys/arch/m68k/m68k/db_disasm.c:1.39 --- src/sys/arch/m68k/m68k/db_disasm.c:1.38 Wed Feb 21 22:59:46 2007 +++ src/sys/arch/m68k/m68k/db_disasm.c Tue Jan 31 21:17:57 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: db_disasm.c,v 1.38 2007/02/21 22:59:46 thorpej Exp $ */ +/* $NetBSD: db_disasm.c,v 1.39 2012/01/31 21:17:57 mlelstv Exp $ */ /* * Copyright (c) 1994 Christian E. Hopps @@ -63,10 +63,12 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: db_disasm.c,v 1.38 2007/02/21 22:59:46 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: db_disasm.c,v 1.39 2012/01/31 21:17:57 mlelstv Exp $"); #include <sys/param.h> +#ifdef _KERNEL #include <sys/systm.h> +#endif #include <machine/db_machdep.h> @@ -168,6 +170,9 @@ static const char *const dregs[8] = {"d0 static const char *const fpregs[8] = { "fp0","fp1","fp2","fp3","fp4","fp5","fp6","fp7" }; static const char *const fpcregs[3] = { "fpiar", "fpsr", "fpcr" }; +#ifndef _KERNEL +static const char hexdigits[] = "0123456789abcdef"; +#endif /* * Disassemble intruction at location ``loc''. Index: src/sys/arch/m68k/m68k/db_interface.c diff -u src/sys/arch/m68k/m68k/db_interface.c:1.34 src/sys/arch/m68k/m68k/db_interface.c:1.35 --- src/sys/arch/m68k/m68k/db_interface.c:1.34 Thu Feb 22 17:09:44 2007 +++ src/sys/arch/m68k/m68k/db_interface.c Tue Jan 31 21:17:57 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: db_interface.c,v 1.34 2007/02/22 17:09:44 thorpej Exp $ */ +/* $NetBSD: db_interface.c,v 1.35 2012/01/31 21:17:57 mlelstv Exp $ */ /* * Mach Operating System @@ -31,9 +31,11 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.34 2007/02/22 17:09:44 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.35 2012/01/31 21:17:57 mlelstv Exp $"); +#ifdef _KERNEL_OPT #include "opt_ddb.h" +#endif #include <sys/param.h> #include <sys/proc.h> @@ -49,12 +51,14 @@ __KERNEL_RCSID(0, "$NetBSD: db_interface #include <ddb/db_command.h> #include <ddb/db_sym.h> +#ifdef _KERNEL #include <ddb/db_extern.h> - +#endif int db_active = 0; db_regs_t ddb_regs; +#ifdef _KERNEL static void kdbprinttrap(int, int); /* @@ -155,3 +159,4 @@ cpu_Debugger(void) __asm ("trap #15"); } +#endif Index: src/sys/arch/m68k/m68k/db_trace.c diff -u src/sys/arch/m68k/m68k/db_trace.c:1.56 src/sys/arch/m68k/m68k/db_trace.c:1.57 --- src/sys/arch/m68k/m68k/db_trace.c:1.56 Thu Jul 1 02:38:27 2010 +++ src/sys/arch/m68k/m68k/db_trace.c Tue Jan 31 21:17:57 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: db_trace.c,v 1.56 2010/07/01 02:38:27 rmind Exp $ */ +/* $NetBSD: db_trace.c,v 1.57 2012/01/31 21:17:57 mlelstv Exp $ */ /* * Mach Operating System @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.56 2010/07/01 02:38:27 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.57 2012/01/31 21:17:57 mlelstv Exp $"); #include <sys/param.h> #include <sys/proc.h> @@ -39,7 +39,6 @@ __KERNEL_RCSID(0, "$NetBSD: db_trace.c,v #include <ddb/db_output.h> #include <ddb/db_access.h> #include <ddb/db_sym.h> -#include <ddb/db_extern.h> #include <ddb/db_variables.h> /* @@ -49,26 +48,26 @@ static int db_var_short(const struct db_ const struct db_variable db_regs[] = { /* D0-D7 */ - { "d0", (long *)&ddb_regs.tf_regs[0], FCN_NULL }, - { "d1", (long *)&ddb_regs.tf_regs[1], FCN_NULL }, - { "d2", (long *)&ddb_regs.tf_regs[2], FCN_NULL }, - { "d3", (long *)&ddb_regs.tf_regs[3], FCN_NULL }, - { "d4", (long *)&ddb_regs.tf_regs[4], FCN_NULL }, - { "d5", (long *)&ddb_regs.tf_regs[5], FCN_NULL }, - { "d6", (long *)&ddb_regs.tf_regs[6], FCN_NULL }, - { "d7", (long *)&ddb_regs.tf_regs[7], FCN_NULL }, + { "d0", (long *)&ddb_regs.tf_regs[0], FCN_NULL, NULL }, + { "d1", (long *)&ddb_regs.tf_regs[1], FCN_NULL, NULL }, + { "d2", (long *)&ddb_regs.tf_regs[2], FCN_NULL, NULL }, + { "d3", (long *)&ddb_regs.tf_regs[3], FCN_NULL, NULL }, + { "d4", (long *)&ddb_regs.tf_regs[4], FCN_NULL, NULL }, + { "d5", (long *)&ddb_regs.tf_regs[5], FCN_NULL, NULL }, + { "d6", (long *)&ddb_regs.tf_regs[6], FCN_NULL, NULL }, + { "d7", (long *)&ddb_regs.tf_regs[7], FCN_NULL, NULL }, /* A0-A7 */ - { "a0", (long *)&ddb_regs.tf_regs[8+0], FCN_NULL }, - { "a1", (long *)&ddb_regs.tf_regs[8+1], FCN_NULL }, - { "a2", (long *)&ddb_regs.tf_regs[8+2], FCN_NULL }, - { "a3", (long *)&ddb_regs.tf_regs[8+3], FCN_NULL }, - { "a4", (long *)&ddb_regs.tf_regs[8+4], FCN_NULL }, - { "a5", (long *)&ddb_regs.tf_regs[8+5], FCN_NULL }, - { "a6", (long *)&ddb_regs.tf_regs[8+6], FCN_NULL }, - { "sp", (long *)&ddb_regs.tf_regs[8+7], FCN_NULL }, + { "a0", (long *)&ddb_regs.tf_regs[8+0], FCN_NULL, NULL }, + { "a1", (long *)&ddb_regs.tf_regs[8+1], FCN_NULL, NULL }, + { "a2", (long *)&ddb_regs.tf_regs[8+2], FCN_NULL, NULL }, + { "a3", (long *)&ddb_regs.tf_regs[8+3], FCN_NULL, NULL }, + { "a4", (long *)&ddb_regs.tf_regs[8+4], FCN_NULL, NULL }, + { "a5", (long *)&ddb_regs.tf_regs[8+5], FCN_NULL, NULL }, + { "a6", (long *)&ddb_regs.tf_regs[8+6], FCN_NULL, NULL }, + { "sp", (long *)&ddb_regs.tf_regs[8+7], FCN_NULL, NULL }, /* misc. */ - { "pc", (long *)&ddb_regs.tf_pc, FCN_NULL }, - { "sr", (long *)&ddb_regs.tf_sr, db_var_short } + { "pc", (long *)&ddb_regs.tf_pc, FCN_NULL, NULL }, + { "sr", (long *)&ddb_regs.tf_sr, db_var_short, NULL } }; const struct db_variable * const db_eregs = db_regs + sizeof(db_regs)/sizeof(db_regs[0]); @@ -107,9 +106,11 @@ struct stackpos { }; static void findentry(struct stackpos *, void (*)(const char *, ...)); +#ifdef _KERNEL static void findregs(struct stackpos *, db_addr_t); static int nextframe(struct stackpos *, struct pcb *, int, void (*)(const char *, ...)); +#endif static void stacktop(db_regs_t *, struct stackpos *, void (*)(const char *, ...)); @@ -174,6 +175,7 @@ static struct nlist * trampsym = 0; static struct nlist * funcsym = 0; #endif +#ifdef _KERNEL static int nextframe(struct stackpos *sp, struct pcb *pcb, int kerneltrace, void (*pr)(const char *, ...)) @@ -222,10 +224,11 @@ nextframe(struct stackpos *sp, struct pc } else findentry(sp, pr); - if (sp->k_fp == 0 || oldfp == sp->k_fp) + if (sp->k_fp == 0 || oldfp == (db_addr_t)sp->k_fp) return 0; return sp->k_fp; } +#endif static void findentry(struct stackpos *sp, void (*pr)(const char *, ...)) @@ -239,19 +242,6 @@ findentry(struct stackpos *sp, void (*pr int instruc; int val; db_addr_t addr, nextword; - label_t db_jmpbuf; - label_t *savejmp; - - savejmp = db_recover; - db_recover = &db_jmpbuf; - if (setjmp(&db_jmpbuf)) { - /* oops -- we touched something we ought not to have */ - /* cannot trace caller of "start" */ - sp->k_entry = MAXINT; - sp->k_nargs = 0; - db_recover = savejmp; - return; - } addr = get(sp->k_fp + FR_SAVPC, DSP); if (addr == 0) { @@ -259,14 +249,11 @@ findentry(struct stackpos *sp, void (*pr /* cannot trace caller of "start" */ sp->k_entry = MAXINT; sp->k_nargs = 0; - db_recover = savejmp; return; } instruc = get(addr - 6, ISP); nextword = get(addr - 4, ISP); - db_recover = savejmp; - if ((instruc & HIWORD) == (JSR | LONGBIT)) { /* longword offset here */ sp->k_caller = addr - 6; @@ -328,6 +315,7 @@ findentry(struct stackpos *sp, void (*pr sp->k_nargs = val / 4; } +#ifdef _KERNEL /* * Look at the procedure prolog of the current called procedure. * Figure out which registers we saved, and where they are @@ -390,6 +378,7 @@ findregs(struct stackpos *sp, db_addr_t } /* else no registers saved */ } +#endif /* * Frame tracing. @@ -436,6 +425,7 @@ db_stack_trace_print(db_expr_t addr, boo (*pr)("trace: pid %d ", p->p_pid); } else { (*pr)("trace: pid %d ", (int)addr); +#ifdef _KERNEL p = proc_find_raw(addr); if (p == NULL) { (*pr)("not found\n"); @@ -443,6 +433,10 @@ db_stack_trace_print(db_expr_t addr, boo } l = LIST_FIRST(&p->p_lwps); KASSERT(l != NULL); +#else + (*pr)("no proc_find_raw() in crash\n"); + return; +#endif } (*pr)("lid %d ", l->l_lid); pcb = lwp_getpcb(l); @@ -550,6 +544,7 @@ db_stack_trace_print(db_expr_t addr, boo else (*pr)(") + %lx\n", val); +#if _KERNEL /* * Stop tracing if frame ptr no longer points into kernel * stack. @@ -559,5 +554,6 @@ db_stack_trace_print(db_expr_t addr, boo break; if (nextframe(&pos, pcb, kernel_only, pr) == 0) break; +#endif } } Index: src/usr.sbin/crash/Makefile diff -u src/usr.sbin/crash/Makefile:1.15 src/usr.sbin/crash/Makefile:1.16 --- src/usr.sbin/crash/Makefile:1.15 Wed Jan 18 09:35:48 2012 +++ src/usr.sbin/crash/Makefile Tue Jan 31 21:17:57 2012 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.15 2012/01/18 09:35:48 skrll Exp $ +# $NetBSD: Makefile,v 1.16 2012/01/31 21:17:57 mlelstv Exp $ PROG= crash MAN= crash.8 @@ -14,7 +14,8 @@ DPADD+= ${LIBUTIL} ${LIBKVM} ${LIBEDIT} .if ${MACHINE} == "amd64" \ || ${MACHINE} == "hp700" \ || ${MACHINE} == "i386" \ - || ${MACHINE} == "sparc64" + || ${MACHINE} == "sparc64" \ + || ${MACHINE_ARCH} == "m68k" REALCRASH=yes .else REALCRASH=no @@ -57,6 +58,13 @@ SRCS+= db_trace.c db_machdep.c SRCS+= db_trace.c db_interface.c . endif +. if ${MACHINE_ARCH} == "m68k" +MACHINE_FAMILY = m68k +.PATH: ${S}/arch/m68k/m68k +CPPFLAGS+= -I${S}/arch +SRCS+= db_trace.c db_interface.c +. endif + # crash main source SRCS+= crash.c