📄 glibc-2.3.2-mips-user.patch
字号:
--- libc/sysdeps/unix/sysv/linux/mips/sys/user.h 8 Feb 2002 16:21:00 -0000 1.1+++ libc/sysdeps/unix/sysv/linux/mips/sys/user.h 12 Apr 2003 09:13:13 -0000@@ -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@@ -23,7 +23,154 @@ 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 {@@ -39,6 +186,24 @@ struct user unsigned long magic; /* identifies a core file */ 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)--=-=-=-- Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/Red Hat GCC Developer aoliva@{redhat.com, gcc.gnu.org}CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org}Free Software Evangelist Professional serial bug killer--=-=-=--And the rediffed hunk:--- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ucontext.h.old 2004-05-30 07:23:32.000000000 -0700+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ucontext.h 2004-05-30 07:22:56.000000000 -0700@@ -29,43 +29,72 @@ #include <bits/sigcontext.h> -/* Type for general register. */-typedef unsigned long int greg_t;+/* Type for general register. Even in o32 we assume 64-bit registers,+ like the kernel. */+__extension__ typedef unsigned long long int greg_t; /* Number of general registers. */-#define NGREG 37-#define NFPREG 33+#define NGREG 32+#define NFPREG 32 /* Container for all general registers. */-/* gregset_t must be an array. The below declared array corresponds to:-typedef struct gregset {- greg_t g_regs[32];- greg_t g_hi;- greg_t g_lo;- greg_t g_pad[3];-} gregset_t; */ typedef greg_t gregset_t[NGREG]; /* Container for all FPU registers. */ typedef struct fpregset { union {- double fp_dregs[32];+ double fp_dregs[NFPREG]; struct { float _fp_fregs; unsigned int _fp_pad;- } fp_fregs[32];+ } fp_fregs[NFPREG]; } fp_r;- unsigned int fp_csr;- unsigned int fp_pad; } fpregset_t; /* Context to describe whole processor state. */+#if _MIPS_SIM == _MIPS_SIM_ABI32+/* Earlier versions of glibc for mips had an entirely different+ definition of mcontext_t, that didn't even resemble the+ corresponding kernel data structure. Since all legitimate uses of+ ucontext_t in glibc mustn't have accessed anything beyond+ uc_mcontext and, even then, taking a pointer to it, casting it to+ sigcontext_t, and accessing it as such, which is what it has always+ been, this can still be rectified. Fortunately, makecontext,+ [gs]etcontext et all have never been implemented. */ typedef struct {+ unsigned int regmask;+ unsigned int status;+ greg_t pc; gregset_t gregs; fpregset_t fpregs;+ unsigned int fp_owned;+ unsigned int fpc_csr;+ unsigned int fpc_eir;+ unsigned int used_math;+ unsigned int ssflags;+ greg_t mdhi;+ greg_t mdlo;+ unsigned int cause;+ unsigned int badvaddr; } mcontext_t;+#else+typedef struct+ {+ gregset_t gregs;+ fpregset_t fpregs;+ greg_t mdhi;+ greg_t mdlo;+ greg_t pc;+ unsigned int status;+ unsigned int fpc_csr;+ unsigned int fpc_eir;+ unsigned int used_math;+ unsigned int cause;+ unsigned int badvaddr;+ } mcontext_t;+#endif /* Userlevel context. */ typedef struct ucontext
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -