This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Does today's gdb compile on Linux?


On Tue, Jan 18, 2000 at 12:31:56PM -0700, Kevin Buettner wrote:
> On Jan 18, 10:47am, H . J . Lu wrote:
> > On Tue, Jan 18, 2000 at 11:43:06AM -0700, Kevin Buettner wrote:
> > > On Jan 18, 10:05am, H . J . Lu wrote:
> > > 
> > > > I cannot get today's gdb in CVS to compile on Linux/ia32. It failed on
> > > > i386-linux-nat.c:
> > > > 
> > > > /work/gnu/import/gdb/gdb/i386-linux-nat.c: In function `supply_fpregset':
> > > > /work/gnu/import/gdb/gdb/i386-linux-nat.c:215: request for member `st_space' in
> > > > something not a structure or union
> > > > /work/gnu/import/gdb/gdb/i386-linux-nat.c:217: request for member `cwd' in
> > > > something not a structure or union
> > > > /work/gnu/import/gdb/gdb/i386-linux-nat.c:218: request for member `swd' in
> > > > something not a structure or union
> > > > /work/gnu/import/gdb/gdb/i386-linux-nat.c:219: request for member `twd' in
> > > > something not a structure or union
> > > > /work/gnu/import/gdb/gdb/i386-linux-nat.c:220: request for member `fip' in
> > > > 
> > > > Any ideas?
> > > 
> > > It looks to me like HAVE_PTRACE_GETXFPREGS is getting defined in config.h
> > > when it shouldn't be.
> > 
> > I don't think so.
> > 
> > # grep HAVE_PTRACE_GETXFPREGS config.h
> > /* #undef HAVE_PTRACE_GETXFPREGS */
> 
> My mistake.  I was looking at the wrong section of code.
> 
> i386-linux-nat.c compiles okay for me.
> 
> On my system (a RH6.0 box with few upgrades), I see the following in
> <sys/procfs.h>:
> 
>     typedef elf_fpregset_t fpregset_t;
> 
> In <sys/elf.h>, I see:
> 
>     typedef struct user_fpregs_struct elf_fpregset_t;
> 
> And in <sys/user.h>, I see
> 
>     struct user_fpregs_struct
>     {
>       long cwd;
>       long swd;
>       long twd;
>       long fip;
>       long fcs;
>       long foo;
>       long fos;
>       long st_space [20];
>     };
> 
> Is your system set up differently?
> 
> Kevin

It turned out that the bug was in the current glibc 2.1.3 in CVS.
Ulrich, gregset_t and fpregset_t in <sys/ucontext.h> are different
from the ones in <sys/procfs.h>. The ones in <sys/procfs.h> are used
by gdb and the ptrace system call. They have different sizes and layout
from the ones in <sys/ucontext.h>.



-- 
H.J. Lu (hjl@gnu.org)
---
Tue Jan 18 13:19:14 2000 H.J. Lu  <hjl@gnu.org>

	* sysdeps/unix/sysv/linux/i386/sys/procfs.h: Undo the change
	on 1999-11-02 by Ulrich Drepper  <drepper@cygnus.com>.

Index: sysdeps/unix/sysv/linux/i386/sys/procfs.h
===================================================================
RCS file: /work/cvs/gnu/glibc-2.1/sysdeps/unix/sysv/linux/i386/sys/procfs.h,v
retrieving revision 1.1.1.2
diff -u -p -r1.1.1.2 procfs.h
--- sysdeps/unix/sysv/linux/i386/sys/procfs.h	1999/11/27 18:42:39	1.1.1.2
+++ sysdeps/unix/sysv/linux/i386/sys/procfs.h	2000/01/18 21:31:19
@@ -27,7 +27,6 @@
 #include <signal.h>
 #include <sys/time.h>
 #include <sys/types.h>
-#include <sys/ucontext.h>
 #include <sys/user.h>
 #include <sys/elf.h>
 
@@ -40,6 +39,10 @@ struct elf_siginfo
     int si_errno;			/* Errno.  */
   };
 
+typedef elf_greg_t greg_t;
+typedef elf_gregset_t gregset_t;
+typedef elf_fpregset_t fpregset_t;
+#define NGREG ELF_NGREG
 
 /* Definitions to generate Intel SVR4-like core files.  These mostly
    have the same names as the SVR4 types with "elf_" tacked on the


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]