summaryrefslogtreecommitdiff
path: root/patches
diff options
context:
space:
mode:
Diffstat (limited to 'patches')
-rw-r--r--patches/glibc/2_9/510-sh-no-asm-user-header.patch70
-rw-r--r--patches/glibc/2_9/520-sh-no-asm-elf-header.patch27
2 files changed, 97 insertions, 0 deletions
diff --git a/patches/glibc/2_9/510-sh-no-asm-user-header.patch b/patches/glibc/2_9/510-sh-no-asm-user-header.patch
new file mode 100644
index 0000000..78d5aca
--- /dev/null
+++ b/patches/glibc/2_9/510-sh-no-asm-user-header.patch
@@ -0,0 +1,70 @@
+2007-03-13 Mike Frysinger <vapier@gentoo.org>
+
+ * sysdeps/unix/sysv/linux/sh/sys/user.h: Copy Linux's asm-sh/user.h.
+
+--- glibc-2_9/sysdeps/unix/sysv/linux/sh/sys/user.h
++++ glibc-2_9/sysdeps/unix/sysv/linux/sh/sys/user.h
+@@ -19,10 +19,60 @@
+ #ifndef _SYS_USER_H
+ #define _SYS_USER_H 1
+
+-#include <features.h>
++#include <unistd.h>
++#include <asm/ptrace.h>
+
+-#include <asm/user.h>
++/*
++ * Core file format: The core file is written in such a way that gdb
++ * can understand it and provide useful information to the user (under
++ * linux we use the `trad-core' bfd). The file contents are as follows:
++ *
++ * upage: 1 page consisting of a user struct that tells gdb
++ * what is present in the file. Directly after this is a
++ * copy of the task_struct, which is currently not used by gdb,
++ * but it may come in handy at some point. All of the registers
++ * are stored as part of the upage. The upage should always be
++ * only one page long.
++ * data: The data segment follows next. We use current->end_text to
++ * current->brk to pick up all of the user variables, plus any memory
++ * that may have been sbrk'ed. No attempt is made to determine if a
++ * page is demand-zero or if a page is totally unused, we just cover
++ * the entire range. All of the addresses are rounded in such a way
++ * that an integral number of pages is written.
++ * stack: We need the stack information in order to get a meaningful
++ * backtrace. We need to write the data from usp to
++ * current->start_stack, so we round each of these in order to be able
++ * to write an integer number of pages.
++ */
+
+-#undef start_thread
++struct user_fpu_struct {
++ unsigned long fp_regs[16];
++ unsigned long xfp_regs[16];
++ unsigned long fpscr;
++ unsigned long fpul;
++};
++
++struct user {
++ struct pt_regs regs; /* entire machine state */
++ struct user_fpu_struct fpu; /* Math Co-processor registers */
++ int u_fpvalid; /* True if math co-processor being used */
++ 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 */
++ struct regs * u_ar0; /* help gdb find registers */
++ struct user_fpu_struct* u_fpstate; /* Math Co-processor pointer */
++ unsigned long magic; /* identifies a core file */
++ char u_comm[32]; /* user command name */
++};
++
++#define NBPG getpagesize()
++#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 */
diff --git a/patches/glibc/2_9/520-sh-no-asm-elf-header.patch b/patches/glibc/2_9/520-sh-no-asm-elf-header.patch
new file mode 100644
index 0000000..2fceb48
--- /dev/null
+++ b/patches/glibc/2_9/520-sh-no-asm-elf-header.patch
@@ -0,0 +1,27 @@
+2007-03-13 Mike Frysinger <vapier@gentoo.org>
+
+ * sysdeps/unix/sysv/linux/sh/sys/procfs.h: Copy Linux's asm-sh/elf.h types.
+
+--- glibc-2_9/sysdeps/unix/sysv/linux/sh/sys/procfs.h
++++ glibc-2_9/sysdeps/unix/sysv/linux/sh/sys/procfs.h
+@@ -29,10 +29,19 @@
+ #include <sys/types.h>
+ #include <sys/ucontext.h>
+ #include <sys/user.h>
+-#include <asm/elf.h>
+
+ __BEGIN_DECLS
+
++/*
++ * ELF register definitions...
++ */
++typedef unsigned long elf_greg_t;
++
++#define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
++typedef elf_greg_t elf_gregset_t[ELF_NGREG];
++
++typedef struct user_fpu_struct elf_fpregset_t;
++
+ struct elf_siginfo
+ {
+ int si_signo; /* Signal number. */