aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog26
-rw-r--r--sysdeps/ia64/fpu/fraiseexcpt.c1
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h11
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sys/procfs.h14
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sys/ptrace.h24
5 files changed, 71 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 78eb0838ef..755665d0ec 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,29 @@
+2003-10-09 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/ia64/fpu/fraiseexcpt.c: Don't include <asm/fpu.h>.
+
+2003-10-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Don't include
+ <asm/fpu.h>.
+ (struct ia64_fpreg): New definition.
+
+ * sysdeps/unix/sysv/linux/ia64/sys/procfs.h: Don't include
+ <asm/elf.h>.
+ (ELF_NGREG): New.
+ (ELF_NFPREG): Likewise.
+ (elf_greg_t): Likewise.
+ (elf_gregset_t): Likewise.
+ (elf_fpreg_t): Likewise.
+ (elf_fpregset_t): Likewise.
+
+2003-10-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/unix/sysv/linux/ia64/sys/ptrace.h: Include
+ <sys/ucontext.h>.
+ (__ptrace_request): Add PTRACE_GETREGS and PTRACE_SETREGS.
+ (pt_all_user_regs): New.
+
2003-10-10 Simon Josefsson <jas@extundo.com>
* argp/argp-namefrob.h [!_LIBC]: Include mempcpy.h, strcase.h,
diff --git a/sysdeps/ia64/fpu/fraiseexcpt.c b/sysdeps/ia64/fpu/fraiseexcpt.c
index 862b2b8c50..3086ded812 100644
--- a/sysdeps/ia64/fpu/fraiseexcpt.c
+++ b/sysdeps/ia64/fpu/fraiseexcpt.c
@@ -23,7 +23,6 @@
#include <math.h>
#include <signal.h>
#include <unistd.h>
-#include <asm/fpu.h>
int
feraiseexcept (int excepts)
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h b/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h
index 74c60e024d..61eb67c075 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jes Sorensen <jes@linuxcare.com>, July 2000
@@ -24,9 +24,16 @@
#ifndef _BITS_SIGCONTEXT_H
#define _BITS_SIGCONTEXT_H 1
-#include <asm/fpu.h>
#include <bits/sigstack.h>
+struct ia64_fpreg
+ {
+ union
+ {
+ unsigned long bits[2];
+ } u;
+ } __attribute__ ((aligned (16)));
+
struct sigcontext
{
unsigned long int sc_flags; /* see manifest constants above */
diff --git a/sysdeps/unix/sysv/linux/ia64/sys/procfs.h b/sysdeps/unix/sysv/linux/ia64/sys/procfs.h
index 0e0a1411a5..b5196b997c 100644
--- a/sysdeps/unix/sysv/linux/ia64/sys/procfs.h
+++ b/sysdeps/unix/sysv/linux/ia64/sys/procfs.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2003 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
@@ -29,7 +29,6 @@
#include <sys/types.h>
#include <sys/ucontext.h>
#include <sys/user.h>
-#include <asm/elf.h>
__BEGIN_DECLS
@@ -40,6 +39,17 @@ struct elf_siginfo
int si_errno; /* Errno. */
};
+/* We really need just 72 but let's leave some headroom... */
+#define ELF_NGREG 128
+/* f0 and f1 could be omitted, but so what... */
+#define ELF_NFPREG 128
+
+typedef unsigned long elf_greg_t;
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+typedef struct ia64_fpreg elf_fpreg_t;
+typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
+
typedef elf_greg_t greg_t;
typedef elf_gregset_t gregset_t;
typedef elf_fpregset_t fpregset_t;
diff --git a/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h b/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
index de1f0af6b6..986c4b2d33 100644
--- a/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
@@ -21,6 +21,7 @@
#define _SYS_PTRACE_H 1
#include <features.h>
+#include <sys/ucontext.h>
__BEGIN_DECLS
@@ -90,11 +91,34 @@ enum __ptrace_request
PTRACE_DETACH = 17,
#define PT_DETACH PTRACE_DETACH
+ /* Get all registers (pt_all_user_regs) in one shot */
+ PTRACE_GETREGS = 18,
+#define PT_GETREGS PTRACE_GETREGS
+
+ /* Set all registers (pt_all_user_regs) in one shot */
+ PTRACE_SETREGS = 19,
+#define PT_SETREGS PTRACE_SETREGS
+
/* Continue and stop at the next (return from) syscall. */
PTRACE_SYSCALL = 24
#define PT_SYSCALL PTRACE_SYSCALL
};
+/* pt_all_user_regs is used for PTRACE_GETREGS/PTRACE_SETREGS. */
+struct pt_all_user_regs
+ {
+ unsigned long nat;
+ unsigned long cr_iip;
+ unsigned long cfm;
+ unsigned long cr_ipsr;
+ unsigned long pr;
+
+ unsigned long gr[32];
+ unsigned long br[8];
+ unsigned long ar[128];
+ struct ia64_fpreg fr[128];
+ };
+
/* Perform process tracing functions. REQUEST is one of the values
above, and determines the action to be taken.
For all requests except PTRACE_TRACEME, PID specifies the process to be