Date: Sat, 12 Jun 2004 06:55:53 GMT From: Marcel Moolenaar <marcel@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 54705 for review Message-ID: <200406120655.i5C6trOR090180@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=54705 Change 54705 by marcel@marcel_nfs on 2004/06/12 06:55:42 o Remove gdb_cpu_frame(). o Do not dereference the frame pointer. It's a kernel address. Use getreg() to fetch it from the core file. Affected files ... .. //depot/projects/gdb/usr.bin/kgdb/md_ia64.c#3 edit Differences ... ==== //depot/projects/gdb/usr.bin/kgdb/md_ia64.c#3 (text+ko) ==== @@ -44,14 +44,13 @@ #include "kgdb.h" -struct trapframe * -gdb_cpu_frame(struct thread *td) +static uint64_t +getreg(uint64_t *addr) { - struct trapframe *tf; + uint64_t val; - tf = malloc(sizeof(*tf)); - kvm_read(kvm, (uintptr_t)td->td_last_frame, tf, sizeof(*tf)); - return (tf); + kvm_read(kvm, (uintptr_t)addr, &val, sizeof(val)); + return (val); } void * @@ -59,6 +58,7 @@ { static uint64_t synth; struct trapframe *tf = curkthr->td_frame; + uint64_t bspstore; *regsz = gdb_cpu_regsz(regnum); switch (regnum) { @@ -126,10 +126,10 @@ * space, setup bspstore to point to the base of the * kernel stack. */ - synth = (tf->tf_special.bspstore >= IA64_RR_BASE(5)) ? - tf->tf_special.bspstore : (curkthr->td_kstack + - (tf->tf_special.bspstore & 0x1ffUL)); - synth += tf->tf_special.ndirty; + bspstore = getreg(&tf->tf_special.bspstore); + synth = (bspstore >= IA64_RR_BASE(5)) ? bspstore : + (curkthr->td_kstack + (bspstore & 0x1ffUL)); + synth += getreg(&tf->tf_special.ndirty); return (&synth); case 352: /* bspstore. */ /* @@ -137,9 +137,9 @@ * space, setup bacpstore to point to the base of the * kernel stack. */ - synth = (tf->tf_special.bspstore >= IA64_RR_BASE(5)) ? - tf->tf_special.bspstore : (curkthr->td_kstack + - (tf->tf_special.bspstore & 0x1ffUL)); + bspstore = getreg(&tf->tf_special.bspstore); + synth = (bspstore >= IA64_RR_BASE(5)) ? bspstore : + (curkthr->td_kstack + (bspstore & 0x1ffUL)); return (&synth); } return (NULL);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200406120655.i5C6trOR090180>