OSDN Git Service

It turns out that asm/reg.h is missing from the 2.6.x kernel headers,
authorEric Andersen <andersen@codepoet.org>
Fri, 23 Apr 2004 21:39:34 +0000 (21:39 -0000)
committerEric Andersen <andersen@codepoet.org>
Fri, 23 Apr 2004 21:39:34 +0000 (21:39 -0000)
which prevents libthread_db (used by gdb) from compiling.  Include a
copy within include/sys/user.h for mips, per what was done in glibc.

libc/sysdeps/linux/mips/sys/user.h

index 21f7b28..8b21ff2 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 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
    too much into it.  Don't use it for anything other than GDB unless
    you know what you are doing.  */
 
-#include <asm/reg.h>
+/* #include <asm/reg.h> */
+/* Instead of including the kernel header, that will vary depending on
+   whether the 32- or the 64-bit kernel is installed, we paste its
+   contents here.  Note that the fact that the file is inline here,
+   instead of included separately, doesn't change in any way the
+   licensing status of a program that includes user.h.  Since this is
+   for gdb alone, and gdb is GPLed, no surprises here.  */
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+/*
+ * Various register offset definitions for debuggers, core file
+ * examiners and whatnot.
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 1995, 1999 by Ralf Baechle
+ */
+#ifndef __ASM_MIPS_REG_H
+#define __ASM_MIPS_REG_H
+
+/*
+ * This defines/structures correspond to the register layout on stack -
+ * if the order here is changed, it needs to be updated in
+ * include/asm-mips/stackframe.h
+ */
+#define EF_REG0                        6
+#define EF_REG1                        7
+#define EF_REG2                        8
+#define EF_REG3                        9
+#define EF_REG4                        10
+#define EF_REG5                        11
+#define EF_REG6                        12
+#define EF_REG7                        13
+#define EF_REG8                        14
+#define EF_REG9                        15
+#define EF_REG10               16
+#define EF_REG11               17
+#define EF_REG12               18
+#define EF_REG13               19
+#define EF_REG14               20
+#define EF_REG15               21
+#define EF_REG16               22
+#define EF_REG17               23
+#define EF_REG18               24
+#define EF_REG19               25
+#define EF_REG20               26
+#define EF_REG21               27
+#define EF_REG22               28
+#define EF_REG23               29
+#define EF_REG24               30
+#define EF_REG25               31
+/*
+ * k0/k1 unsaved
+ */
+#define EF_REG28               34
+#define EF_REG29               35
+#define EF_REG30               36
+#define EF_REG31               37
+
+/*
+ * Saved special registers
+ */
+#define EF_LO                  38
+#define EF_HI                  39
+
+#define EF_CP0_EPC             40
+#define EF_CP0_BADVADDR                41
+#define EF_CP0_STATUS          42
+#define EF_CP0_CAUSE           43
+
+#define EF_SIZE                        180     /* size in bytes */
+
+#endif /* __ASM_MIPS_REG_H */
+
+#else /* _MIPS_SIM != _MIPS_SIM_ABI32 */
+
+/*
+ * Various register offset definitions for debuggers, core file
+ * examiners and whatnot.
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 1995, 1999 Ralf Baechle
+ * Copyright (C) 1995, 1999 Silicon Graphics
+ */
+#ifndef _ASM_REG_H
+#define _ASM_REG_H
+
+/*
+ * This defines/structures correspond to the register layout on stack -
+ * if the order here is changed, it needs to be updated in
+ * include/asm-mips/stackframe.h
+ */
+#define EF_REG0                         0
+#define EF_REG1                         1
+#define EF_REG2                         2
+#define EF_REG3                         3
+#define EF_REG4                         4
+#define EF_REG5                         5
+#define EF_REG6                         6
+#define EF_REG7                         7
+#define EF_REG8                         8
+#define EF_REG9                         9
+#define EF_REG10               10
+#define EF_REG11               11
+#define EF_REG12               12
+#define EF_REG13               13
+#define EF_REG14               14
+#define EF_REG15               15
+#define EF_REG16               16
+#define EF_REG17               17
+#define EF_REG18               18
+#define EF_REG19               19
+#define EF_REG20               20
+#define EF_REG21               21
+#define EF_REG22               22
+#define EF_REG23               23
+#define EF_REG24               24
+#define EF_REG25               25
+/*
+ * k0/k1 unsaved
+ */
+#define EF_REG28               28
+#define EF_REG29               29
+#define EF_REG30               30
+#define EF_REG31               31
+
+/*
+ * Saved special registers
+ */
+#define EF_LO                  32
+#define EF_HI                  33
+
+#define EF_CP0_EPC             34
+#define EF_CP0_BADVADDR                35
+#define EF_CP0_STATUS          36
+#define EF_CP0_CAUSE           37
+
+#define EF_SIZE                        304     /* size in bytes */
+
+#endif /* _ASM_REG_H */
+
+#endif /* _MIPS_SIM != _MIPS_SIM_ABI32 */
+
+#if _MIPS_SIM == _MIPS_SIM_ABI32
 
 struct user
 {
@@ -40,6 +187,24 @@ struct user
   char         u_comm[32];             /* user command name */
 };
 
+#else
+
+struct user {
+  __extension__ unsigned long  regs[EF_SIZE/8+64]; /* integer and fp regs */
+  __extension__ unsigned long  u_tsize;        /* text size (pages) */
+  __extension__ unsigned long  u_dsize;        /* data size (pages) */
+  __extension__ unsigned long  u_ssize;        /* stack size (pages) */
+  __extension__ unsigned long long start_code; /* text starting address */
+  __extension__ unsigned long long start_data; /* data starting address */
+  __extension__ unsigned long long start_stack;        /* stack starting address */
+  __extension__ long long      signal;         /* signal causing core dump */
+  __extension__ unsigned long long u_ar0;      /* help gdb find registers */
+  __extension__ unsigned long long magic;      /* identifies a core file */
+  char         u_comm[32];             /* user command name */
+};
+
+#endif
+
 #define PAGE_SHIFT             12
 #define PAGE_SIZE              (1UL << PAGE_SHIFT)
 #define PAGE_MASK              (~(PAGE_SIZE-1))