]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix 64-bit elf register definitions and provide 32-bit variants of structures
authorUlrich Drepper <drepper@redhat.com>
Tue, 21 May 2002 02:17:06 +0000 (02:17 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 21 May 2002 02:17:06 +0000 (02:17 +0000)
during 64-bit builds.

sysdeps/unix/sysv/linux/sparc/sys/procfs.h

index e5d35f524a95650bb970c1eb845eb84fd4296fbb..2827b1ec333215c74b63795bab78bfd43a3b464f 100644 (file)
@@ -35,7 +35,7 @@ __BEGIN_DECLS
 
 #if __WORDSIZE == 64
 
-#define ELF_NGREG              20
+#define ELF_NGREG              36
 
 typedef struct
   {
@@ -139,6 +139,73 @@ typedef __pid_t lwpid_t;
 typedef struct elf_prstatus prstatus_t;
 typedef struct elf_prpsinfo prpsinfo_t;
 
+#if __WORDSIZE == 64
+
+/* Provide 32-bit variants so that BFD can read 32-bit
+   core files.  */
+#define ELF_NGREG32            38
+typedef struct
+  {
+    union
+      {
+       unsigned int    pr_regs[32];
+       double          pr_dregs[16];
+      }                        pr_fr;
+    unsigned int       __unused;
+    unsigned int       pr_fsr;
+    unsigned char      pr_qcnt;
+    unsigned char      pr_q_entrysize;
+    unsigned char      pr_en;
+    unsigned int       pr_q[64];
+  } elf_fpregset_t32;
+
+typedef unsigned int elf_greg_t32;
+typedef elf_greg_t32 elf_gregset_t32[ELF_NGREG32];
+
+struct elf_prstatus32
+  {
+    struct elf_siginfo pr_info;                /* Info associated with signal.  */
+    short int pr_cursig;               /* Current signal.  */
+    unsigned int pr_sigpend;   /* Set of pending signals.  */
+    unsigned int pr_sighold;   /* Set of held signals.  */
+    __pid_t pr_pid;
+    __pid_t pr_ppid;
+    __pid_t pr_pgrp;
+    __pid_t pr_sid;
+    struct
+      {
+       int tv_sec, tv_usec;
+      } pr_utime,                      /* User time.  */
+        pr_stime,                      /* System time.  */
+        pr_cutime,                     /* Cumulative user time.  */
+        pr_cstime;                     /* Cumulative system time.  */
+    elf_gregset_t32 pr_reg;            /* GP registers.  */
+    int pr_fpvalid;                    /* True if math copro being used.  */
+  };
+
+struct elf_prpsinfo32
+  {
+    char pr_state;                     /* Numeric process state.  */
+    char pr_sname;                     /* Char for pr_state.  */
+    char pr_zomb;                      /* Zombie.  */
+    char pr_nice;                      /* Nice val.  */
+    unsigned int pr_flag;              /* Flags.  */
+    unsigned short int pr_uid;
+    unsigned short int pr_gid;
+    int pr_pid, pr_ppid, pr_pgrp, pr_sid;
+    /* Lots missing */
+    char pr_fname[16];                 /* Filename of executable.  */
+    char pr_psargs[ELF_PRARGSZ];       /* Initial part of arg list.  */
+  };
+
+typedef elf_gregset_t32 prgregset32_t;
+typedef elf_fpregset_t32 prfpregset32_t;
+
+typedef struct elf_prstatus32 prstatus32_t;
+typedef struct elf_prpsinfo32 prpsinfo32_t;
+
+#endif  /* sparc64 */
+
 __END_DECLS
 
 #endif /* sys/procfs.h */