patches/glibc/2_9/510-sh-no-asm-user-header.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Mar 08 11:16:57 2009 +0000 (2009-03-08)
changeset 1246 aa674ae58972
permissions -rw-r--r--
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(+)
     1 2007-03-13  Mike Frysinger  <vapier@gentoo.org>
     2 
     3 	* sysdeps/unix/sysv/linux/sh/sys/user.h: Copy Linux's asm-sh/user.h.
     4 
     5 --- glibc-2_9/sysdeps/unix/sysv/linux/sh/sys/user.h
     6 +++ glibc-2_9/sysdeps/unix/sysv/linux/sh/sys/user.h
     7 @@ -19,10 +19,60 @@
     8  #ifndef _SYS_USER_H
     9  #define _SYS_USER_H	1
    10  
    11 -#include <features.h>
    12 +#include <unistd.h>
    13 +#include <asm/ptrace.h>
    14  
    15 -#include <asm/user.h>
    16 +/*
    17 + * Core file format: The core file is written in such a way that gdb
    18 + * can understand it and provide useful information to the user (under
    19 + * linux we use the `trad-core' bfd).  The file contents are as follows:
    20 + *
    21 + *  upage: 1 page consisting of a user struct that tells gdb
    22 + *	what is present in the file.  Directly after this is a
    23 + *	copy of the task_struct, which is currently not used by gdb,
    24 + *	but it may come in handy at some point.  All of the registers
    25 + *	are stored as part of the upage.  The upage should always be
    26 + *	only one page long.
    27 + *  data: The data segment follows next.  We use current->end_text to
    28 + *	current->brk to pick up all of the user variables, plus any memory
    29 + *	that may have been sbrk'ed.  No attempt is made to determine if a
    30 + *	page is demand-zero or if a page is totally unused, we just cover
    31 + *	the entire range.  All of the addresses are rounded in such a way
    32 + *	that an integral number of pages is written.
    33 + *  stack: We need the stack information in order to get a meaningful
    34 + *	backtrace.  We need to write the data from usp to
    35 + *	current->start_stack, so we round each of these in order to be able
    36 + *	to write an integer number of pages.
    37 + */
    38  
    39 -#undef start_thread
    40 +struct user_fpu_struct {
    41 +	unsigned long fp_regs[16];
    42 +	unsigned long xfp_regs[16];
    43 +	unsigned long fpscr;
    44 +	unsigned long fpul;
    45 +};
    46 +
    47 +struct user {
    48 +	struct pt_regs	regs;			/* entire machine state */
    49 +	struct user_fpu_struct fpu;	/* Math Co-processor registers  */
    50 +	int u_fpvalid;		/* True if math co-processor being used */
    51 +	size_t		u_tsize;		/* text size (pages) */
    52 +	size_t		u_dsize;		/* data size (pages) */
    53 +	size_t		u_ssize;		/* stack size (pages) */
    54 +	unsigned long	start_code;		/* text starting address */
    55 +	unsigned long	start_data;		/* data starting address */
    56 +	unsigned long	start_stack;		/* stack starting address */
    57 +	long int	signal;			/* signal causing core dump */
    58 +	struct regs *	u_ar0;			/* help gdb find registers */
    59 +	struct user_fpu_struct* u_fpstate;	/* Math Co-processor pointer */
    60 +	unsigned long	magic;			/* identifies a core file */
    61 +	char		u_comm[32];		/* user command name */
    62 +};
    63 +
    64 +#define NBPG			getpagesize()
    65 +#define UPAGES			1
    66 +#define HOST_TEXT_START_ADDR	(u.start_code)
    67 +#define HOST_DATA_START_ADDR	(u.start_data)
    68 +#define HOST_STACK_END_ADDR	(u.start_stack + u.u_ssize * NBPG)
    69  
    70  #endif  /* sys/user.h */