This is the mail archive of the
libc-hacker@cygnus.com
mailing list for the glibc project.
re: <linux/ptrace.h> vs. <sys/ptrace.h>
- To: libc-hacker@cygnus.com
- Subject: re: <linux/ptrace.h> vs. <sys/ptrace.h>
- From: Scott Bambrough <scottb@corelcomputer.com>
- Date: Tue, 05 Jan 1999 10:02:26 -0500
- Organization: Corel Computer Corporation
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 */