stack trace on crash
This commit is contained in:
parent
e99ed4c957
commit
ef31ebbf26
|
@ -2906,6 +2906,13 @@ _esigcode:
|
||||||
#endif
|
#endif
|
||||||
#define ALTENTRY(x) .globl _##x; _##x:
|
#define ALTENTRY(x) .globl _##x; _##x:
|
||||||
|
|
||||||
|
/*
|
||||||
|
* getfp() - get stack frame pointer
|
||||||
|
*/
|
||||||
|
ENTRY(getfp)
|
||||||
|
retl
|
||||||
|
mov %fp, %o0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* copyinstr(fromaddr, toaddr, maxlength, &lencopied)
|
* copyinstr(fromaddr, toaddr, maxlength, &lencopied)
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: machdep.c,v 1.34 1994/11/20 20:54:29 deraadt Exp $ */
|
/* $NetBSD: machdep.c,v 1.35 1994/11/23 07:00:10 deraadt Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1992, 1993
|
* Copyright (c) 1992, 1993
|
||||||
|
@ -791,10 +791,13 @@ dumpsys()
|
||||||
register int (*dump) __P((dev_t, daddr_t, caddr_t, int));
|
register int (*dump) __P((dev_t, daddr_t, caddr_t, int));
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
if (dumpdev == NODEV)
|
|
||||||
return;
|
|
||||||
/* copy registers to memory */
|
/* copy registers to memory */
|
||||||
snapshot(cpcb);
|
snapshot(cpcb);
|
||||||
|
stackdump();
|
||||||
|
|
||||||
|
if (dumpdev == NODEV)
|
||||||
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For dumps during autoconfiguration,
|
* For dumps during autoconfiguration,
|
||||||
* if dump device has already configured...
|
* if dump device has already configured...
|
||||||
|
@ -863,6 +866,26 @@ dumpsys()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* get the fp and dump the stack as best we can. don't leave the
|
||||||
|
* current stack page
|
||||||
|
*/
|
||||||
|
stackdump()
|
||||||
|
{
|
||||||
|
struct frame *fp = (struct frame *)getfp(), *sfp;
|
||||||
|
|
||||||
|
sfp = fp;
|
||||||
|
printf("Frame pointer is at 0x%x\n", fp);
|
||||||
|
printf("Call traceback:\n");
|
||||||
|
while (fp && ((u_long)fp >> PGSHIFT) == ((u_long)sfp >> PGSHIFT)) {
|
||||||
|
printf(" pc = %x args = (%x, %x, %x, %x, %x, %x) fp = %x\n",
|
||||||
|
fp->fr_pc, fp->fr_arg[0], fp->fr_arg[1], fp->fr_arg[2],
|
||||||
|
fp->fr_arg[3], fp->fr_arg[4], fp->fr_arg[5], fp->fr_arg[6],
|
||||||
|
fp->fr_fp);
|
||||||
|
fp = fp->fr_fp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int bt2pmt[] = {
|
int bt2pmt[] = {
|
||||||
PMAP_OBIO,
|
PMAP_OBIO,
|
||||||
PMAP_OBIO,
|
PMAP_OBIO,
|
||||||
|
|
Loading…
Reference in New Issue