Date: Wed, 4 Nov 2009 15:06:17 -0800 (PST) From: "Dorr H. Clark" <dclark@engr.scu.edu> To: freebsd-stable@freebsd.org Cc: freebsd-hackers@freebsd.org, freebsd-bugs@freebsd.org Subject: gdb/libkvm problem - can someone explain this? Message-ID: <Pine.GSO.4.21.0911041504420.29358-100000@nova32.dc.engr.scu.edu> In-Reply-To: <Pine.GSO.4.21.0910271711580.17024-100000@nova46.dc.engr.scu.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
With FreeBSD 4.x, gdb -k is able to read and interpret the last 4 bytes of a page (4k) boundary. In BSD 6.x/7.x/8.x using the kgdb program, if one issues the kgdb command: (gdb) x /x 0xcbed8ffd An "invalid address" error is returned. However, if one issues the command: (gdb) x /10x 0xcbed8ff0 it is able to read the memory (and past) just fine. The following patch returns the usr/src/lib/libkvm/kvm_i386.c behavior closer to the BSD4.x version and seems to remedy this situation. @@ -289,11 +289,13 @@ #define PG_FRAME4M (~PAGE4M_MASK) pde_pa = ((u_long)pde & PG_FRAME4M) + (va & PAGE4M_MASK); s = _kvm_pa2off(kd, pde_pa, &ofs); +#if 0 if (s < sizeof pde) { _kvm_syserr(kd, kd->program, "_kvm_vatop: pde_pa not found"); goto invalid; } +#endif *pa = ofs; return (NBPDR - (va & PAGE4M_MASK)); } Does anyone see any problem or have any comments about this? Paul Lai Engineer Dorr H. Clark Advisor Graduate School of Engineering Santa Clara University Santa Clara, CA. http://www.cse.scu.edu/~dclark/coen_284_FreeBSD/libkvm_problem.txt
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.21.0911041504420.29358-100000>