Hi Daniel, Thanks for your help. I also just found a posting by you from January explaining this. I tried it out, and it works like a dream. FWIW I've attached a patch I applied to glibc. Regards, Stuart Daniel Jacobowitz wrote: > > On Fri, Sep 13, 2002 at 11:07:15AM +0100, Stuart Hughes wrote: > > Hi, > > > > I've been trying to debug a simple multi-threaded test program using > > gdb, and it always fails as follows: > > > > [New Thread 1024 (LWP > > 39)] > > > > Program received signal SIGTRAP, Trace/breakpoint > > trap. > > [Switching to Thread 1024 (LWP > > 39)] > > warning: Warning: GDB can't find the start of the function at > > 0xffffffff. > > > > I've tried various different compilers, gdb, glibc version but the > > problem is the same. Note that I can debug non-threaded c/c++ programs > > without any problem. My environment is as follows: > > > > CPU: NEC VR5432 > > kernel: linux-2.4.10 + patches > > glibc: 2.2.3 + patches > > Not enough patches I'd bet. Glibc 2.2.3 had an incorrect size listed > for elf_gregset_t, and it was fixed in 2.2.5. That would cause this > problem. > > > gdb: 5.2/3 from CVS > > gcc: 3.1 (also tried 3.0.1) > > binutils: Version 2.11.90.0.25 > > > > Does anyone have any idea what is wrong and how to fix it. > > > > Regards, Stuart > > > > > > -- > Daniel Jacobowitz > MontaVista Software Debian GNU/Linux Developer
--- glibc-2.2.3/sysdeps/unix/sysv/linux/mips/sys/procfs.h.orig Fri Sep 13 14:26:42 2002 +++ glibc-2.2.3/sysdeps/unix/sysv/linux/mips/sys/procfs.h Fri Sep 13 14:26:54 2002 @@ -101,8 +101,8 @@ typedef void *psaddr_t; /* Register sets. Linux has different names. */ -typedef gregset_t prgregset_t; -typedef fpregset_t prfpregset_t; +typedef elf_gregset_t prgregset_t; +typedef elf_fpregset_t prfpregset_t; /* We don't have any differences between processes and threads, therefore habe only ine PID type. */