# HG changeset patch # User "Yann E. MORIN" # Date 1236511017 0 # Node ID aa674ae58972b20d2d62c51c095b2c70c5abf2d4 # Parent 96d74832c40bae45dfe21dc241530423347f5b51 Add two patches agains glibc-2_9 to (try to) build for SuperH. /trunk/patches/glibc/2_9/510-sh-no-asm-user-header.patch | 70 70 0 0 ++++++++++++++++++++++ /trunk/patches/glibc/2_9/520-sh-no-asm-elf-header.patch | 27 27 0 0 ++++++++ 2 files changed, 97 insertions(+) diff -r 96d74832c40b -r aa674ae58972 patches/glibc/2_9/510-sh-no-asm-user-header.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/glibc/2_9/510-sh-no-asm-user-header.patch Sun Mar 08 11:16:57 2009 +0000 @@ -0,0 +1,70 @@ +2007-03-13 Mike Frysinger + + * 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 ++#include ++#include + +-#include ++/* ++ * 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 -r 96d74832c40b -r aa674ae58972 patches/glibc/2_9/520-sh-no-asm-elf-header.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/glibc/2_9/520-sh-no-asm-elf-header.patch Sun Mar 08 11:16:57 2009 +0000 @@ -0,0 +1,27 @@ +2007-03-13 Mike Frysinger + + * 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 + #include + #include +-#include + + __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. */