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


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

re: <linux/ptrace.h> vs. <sys/ptrace.h>


Geoff Keating wrote:

> It might be worth checking for each port whether this non-program
> compiles:
> 
> #include <sys/user.h>
> #include <sys/ptrace.h>
> 
> I have sent in a patch to fix it for ppc, but there might be problems
> on alpha, arm, m68k, and mips.  
> 
> To fix, you need to write a <sys/user.h> that does not include
> <linux/ptrace.h>.
> 

I checked this out on the ARM port.  It fails.  Attached is a patch.



1999-01-05 Scott Bambrough  <scottb@corelcomputer.com>

        * sysdeps/unix/sysv/linux/arm/sys/user.h : New file.  Fixes problem
        on ARM platforms with programs that include <sys/user.h> and 
        <sys/ptrace.h>.  Solution suggested by Geoff Keating earlier with 
        fix for same problem on the PowerPC platform.
diff -uNr gnusrc/glibc-2.0.108/sysdeps/unix/sysv/linux/arm/sys/user.h projects/glibc-2.0.108/sysdeps/unix/sysv/linux/arm/sys/user.h
--- gnusrc/glibc-2.0.108/sysdeps/unix/sysv/linux/arm/sys/user.h	Wed Dec 31 19:00:00 1969
+++ projects/glibc-2.0.108/sysdeps/unix/sysv/linux/arm/sys/user.h	Mon Dec 21 12:05:22 1998
@@ -0,0 +1,66 @@
+/* Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_USER_H
+#define _SYS_USER_H	1
+
+#include <features.h>
+
+/* <sys/ptrace.h> and <linux/ptrace.h> both define the PTRACE_* macros.
+   This leads to compilation problems with programs which include both
+   user.h and ptrace.h (eg: GDB).  Do not include <linux/ptrace.h> here. */
+//#include <asm/page.h>
+#include <asm/ptrace.h>
+
+struct user_fp {
+   struct fp_reg {
+      unsigned int sign1:1;
+      unsigned int unused:15;
+      unsigned int sign2:1;
+      unsigned int exponent:14;
+      unsigned int j:1;
+      unsigned int mantissa1:31;
+      unsigned int mantissa0:32;
+   } fpregs[8];
+   unsigned int fpsr:32;
+   unsigned int fpcr:32;
+};
+
+struct user {
+	struct pt_regs regs;		/* General registers */
+	int u_fpvalid;			/* True if math co-processor being used. */
+
+	unsigned long int u_tsize;	/* Text segment size (pages). */
+	unsigned long int u_dsize;	/* Data segment size (pages). */
+	unsigned long int u_ssize;	/* Stack segment size (pages). */
+
+	unsigned long start_code;	/* Starting virtual address of text. */
+	unsigned long start_stack;	/* Starting virtual address of stack. */
+
+	long int signal;     		/* Signal that caused the core dump. */
+	int reserved;			/* No longer used */
+	struct pt_regs *u_ar0;		/* help gdb to find the general registers. */
+
+	unsigned long magic;		/* uniquely identify a core file */
+	char u_comm[32];		/* User command that was responsible */
+	int u_debugreg[8];
+	struct user_fp u_fp;		/* Floating point registers */
+	struct user_fp_struct *u_fp0;	/* help gdb to find the FP registers. */
+};
+
+#endif  /* sys/user.h */

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