From owner-freebsd-bugs Sat Mar 11 22:30:02 1995 Return-Path: bugs-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id WAA07964 for bugs-outgoing; Sat, 11 Mar 1995 22:30:02 -0800 Received: (from gnats@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id WAA07957; Sat, 11 Mar 1995 22:30:01 -0800 Date: Sat, 11 Mar 1995 22:30:01 -0800 Message-Id: <199503120630.WAA07957@freefall.cdrom.com> From: dave@prlng.co.uk Reply-To: dave@prlng.co.uk To: freebsd-bugs Subject: gnu/240: Fix for gdb to read stack from core dump In-Reply-To: Your message of Sat, 11 Mar 1995 16:02:08 GMT <199503111602.QAA01388@severn.prolingua.co.uk> Sender: bugs-owner@FreeBSD.org Precedence: bulk >Number: 240 >Category: gnu >Synopsis: gdb does not correctly find the stack in a core dump >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs (FreeBSD bugs mailing list) >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sat Mar 11 22:30:01 1995 >Originator: Dave Matthews >Organization: Prolingua Ltd >Release: FreeBSD 2.0-RELEASE i386 >Environment: >Description: Gdb was using the wrong addresses for the location of the stack when examining a core dump, so it wasn't possible to see a proper stack trace. >How-To-Repeat: >Fix: Apply the diffs below. The previous values were right, I think, for older versions of FreeBSD, but these new ones seem correct for FreeBSD 2.0. diff -c /usr/src/gnu/usr.bin/gdb/bfd/sysdep.h{.ORIG,} *** /usr/src/gnu/usr.bin/gdb/bfd/sysdep.h.ORIG Thu Mar 2 19:45:51 1995 --- /usr/src/gnu/usr.bin/gdb/bfd/sysdep.h Thu Mar 2 21:14:02 1995 *************** *** 27,34 **** (u.u_kproc.kp_eproc.e_vm.vm_maxsaddr + MAXSSIZ), which should work on both BSDI and 386BSD, but that is believed not to work for BSD 4.4. */ ! #ifdef __bsdi__ /* This seems to be the right thing for BSDI. */ #define HOST_STACK_END_ADDR USRSTACK #else /* This seems to be the right thing for 386BSD release 0.1. */ --- 27,35 ---- (u.u_kproc.kp_eproc.e_vm.vm_maxsaddr + MAXSSIZ), which should work on both BSDI and 386BSD, but that is believed not to work for BSD 4.4. */ ! #if (defined(__bsdi__) | defined(__FreeBSD__)) /* This seems to be the right thing for BSDI. */ + /* ..and also for FreeBSD, at least FreeBSD > 2. */ #define HOST_STACK_END_ADDR USRSTACK #else /* This seems to be the right thing for 386BSD release 0.1. */ diff -c /usr/src/gnu/usr.bin/gdb/bfd/trad-core.c{.ORIG,} *** /usr/src/gnu/usr.bin/gdb/bfd/trad-core.c.ORIG Fri Jun 10 14:33:39 1994 --- /usr/src/gnu/usr.bin/gdb/bfd/trad-core.c Thu Mar 2 22:11:17 1995 *************** *** 192,198 **** --- 192,200 ---- #else core_datasec (abfd)->vma = HOST_TEXT_START_ADDR + (NBPG * u.u_tsize); #endif + #ifndef __FreeBSD__ /* a hack, but it works for FreeBSD !! */ + /* Actually, it's not needed for FreeBSD 2.0, only for older versions. */ #include /* this should really be in , but somebody forgot it */ #ifndef vm_page_size *************** *** 200,205 **** --- 202,209 ---- #endif #define HOST_STACK_START_ADDR trunc_page(u.u_kproc.kp_eproc.e_vm.vm_maxsaddr \ + MAXSSIZ - ctob(u.u_ssize)) + #endif + #ifdef HOST_STACK_START_ADDR core_stacksec (abfd)->vma = HOST_STACK_START_ADDR; #else >Audit-Trail: >Unformatted: