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. */
|