* sysdeps/unix/sysv/linux/mips/sys/procfs.h: Don't include
authoraj <aj>
Fri, 8 Feb 2002 16:21:00 +0000 (16:21 +0000)
committeraj <aj>
Fri, 8 Feb 2002 16:21:00 +0000 (16:21 +0000)
<signal.h>, <sys/ucontext.h> nor <asm/elf.h>. Updated for gdb.

* sysdeps/unix/sysv/linux/mips/sys/user.h: New.

sysdeps/unix/sysv/linux/mips/sys/procfs.h
sysdeps/unix/sysv/linux/mips/sys/user.h [new file with mode: 0644]

index 76dd2bb..a21652e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1999, 2000, 2002 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
    used on Linux.  */
 
 #include <features.h>
-#include <signal.h>
 #include <sys/time.h>
 #include <sys/types.h>
-#include <sys/ucontext.h>
 #include <sys/user.h>
-#include <asm/elf.h>
+
+/* ELF register definitions */
+#define ELF_NGREG      45
+#define ELF_NFPREG     33
+
+typedef unsigned long elf_greg_t;
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+typedef double elf_fpreg_t;
+typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
 
 __BEGIN_DECLS
 
@@ -50,19 +57,10 @@ struct elf_siginfo
    marked with "XXX".  */
 struct elf_prstatus
   {
-#if 0
-    long int pr_flags;                 /* XXX Process flags.  */
-    short int pr_why;                  /* XXX Reason for process halt.  */
-    short int pr_what;                 /* XXX More detailed reason.  */
-#endif
     struct elf_siginfo pr_info;                /* Info associated with signal.  */
     short int pr_cursig;               /* Current signal.  */
     unsigned long int pr_sigpend;      /* Set of pending signals.  */
     unsigned long int pr_sighold;      /* Set of held signals.  */
-#if 0
-    struct sigaltstack pr_altstack;    /* Alternate stack info.  */
-    struct sigaction pr_action;                /* Signal action for current sig.  */
-#endif
     __pid_t pr_pid;
     __pid_t pr_ppid;
     __pid_t pr_pgrp;
@@ -71,9 +69,6 @@ struct elf_prstatus
     struct timeval pr_stime;           /* System time.  */
     struct timeval pr_cutime;          /* Cumulative user time.  */
     struct timeval pr_cstime;          /* Cumulative system time.  */
-#if 0
-    long int pr_instr;                 /* Current instruction.  */
-#endif
     elf_gregset_t pr_reg;              /* GP registers.  */
     int pr_fpvalid;                    /* True if math copro being used.  */
   };
@@ -101,8 +96,8 @@ struct elf_prpsinfo
 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.  */
diff --git a/sysdeps/unix/sysv/linux/mips/sys/user.h b/sysdeps/unix/sysv/linux/mips/sys/user.h
new file mode 100644 (file)
index 0000000..21f7b28
--- /dev/null
@@ -0,0 +1,52 @@
+/* Copyright (C) 2002 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; 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
+
+/* The whole purpose of this file is for GDB and GDB only.  Don't read
+   too much into it.  Don't use it for anything other than GDB unless
+   you know what you are doing.  */
+
+#include <asm/reg.h>
+
+struct user
+{
+  unsigned long        regs[EF_SIZE/4+64];     /* integer and fp regs */
+  size_t       u_tsize;                /* text size (pages) */
+  size_t       u_dsize;                /* data size (pages) */
+  size_t       u_ssize;                /* stack size (pages) */
+  unsigned long        start_code;             /* text starting address */
+  unsigned long        start_data;             /* data starting address */
+  unsigned long        start_stack;            /* stack starting address */
+  long int     signal;                 /* signal causing core dump */
+  void*                u_ar0;                  /* help gdb find registers */
+  unsigned long        magic;                  /* identifies a core file */
+  char         u_comm[32];             /* user command name */
+};
+
+#define PAGE_SHIFT             12
+#define PAGE_SIZE              (1UL << PAGE_SHIFT)
+#define PAGE_MASK              (~(PAGE_SIZE-1))
+#define NBPG                   PAGE_SIZE
+#define UPAGES                 1
+#define HOST_TEXT_START_ADDR   (u.start_code)
+#define HOST_DATA_START_ADDR   (u.start_data)
+#define HOST_STACK_END_ADDR    (u.start_stack + u.u_ssize * NBPG)
+
+#endif /* _SYS_USER_H */