yann@1246: 2007-03-13 Mike Frysinger yann@1246: yann@1246: * sysdeps/unix/sysv/linux/sh/sys/user.h: Copy Linux's asm-sh/user.h. yann@1246: yann@1246: --- glibc-2_9/sysdeps/unix/sysv/linux/sh/sys/user.h yann@1246: +++ glibc-2_9/sysdeps/unix/sysv/linux/sh/sys/user.h yann@1246: @@ -19,10 +19,60 @@ yann@1246: #ifndef _SYS_USER_H yann@1246: #define _SYS_USER_H 1 yann@1246: yann@1246: -#include yann@1246: +#include yann@1246: +#include yann@1246: yann@1246: -#include yann@1246: +/* yann@1246: + * Core file format: The core file is written in such a way that gdb yann@1246: + * can understand it and provide useful information to the user (under yann@1246: + * linux we use the `trad-core' bfd). The file contents are as follows: yann@1246: + * yann@1246: + * upage: 1 page consisting of a user struct that tells gdb yann@1246: + * what is present in the file. Directly after this is a yann@1246: + * copy of the task_struct, which is currently not used by gdb, yann@1246: + * but it may come in handy at some point. All of the registers yann@1246: + * are stored as part of the upage. The upage should always be yann@1246: + * only one page long. yann@1246: + * data: The data segment follows next. We use current->end_text to yann@1246: + * current->brk to pick up all of the user variables, plus any memory yann@1246: + * that may have been sbrk'ed. No attempt is made to determine if a yann@1246: + * page is demand-zero or if a page is totally unused, we just cover yann@1246: + * the entire range. All of the addresses are rounded in such a way yann@1246: + * that an integral number of pages is written. yann@1246: + * stack: We need the stack information in order to get a meaningful yann@1246: + * backtrace. We need to write the data from usp to yann@1246: + * current->start_stack, so we round each of these in order to be able yann@1246: + * to write an integer number of pages. yann@1246: + */ yann@1246: yann@1246: -#undef start_thread yann@1246: +struct user_fpu_struct { yann@1246: + unsigned long fp_regs[16]; yann@1246: + unsigned long xfp_regs[16]; yann@1246: + unsigned long fpscr; yann@1246: + unsigned long fpul; yann@1246: +}; yann@1246: + yann@1246: +struct user { yann@1246: + struct pt_regs regs; /* entire machine state */ yann@1246: + struct user_fpu_struct fpu; /* Math Co-processor registers */ yann@1246: + int u_fpvalid; /* True if math co-processor being used */ yann@1246: + size_t u_tsize; /* text size (pages) */ yann@1246: + size_t u_dsize; /* data size (pages) */ yann@1246: + size_t u_ssize; /* stack size (pages) */ yann@1246: + unsigned long start_code; /* text starting address */ yann@1246: + unsigned long start_data; /* data starting address */ yann@1246: + unsigned long start_stack; /* stack starting address */ yann@1246: + long int signal; /* signal causing core dump */ yann@1246: + struct regs * u_ar0; /* help gdb find registers */ yann@1246: + struct user_fpu_struct* u_fpstate; /* Math Co-processor pointer */ yann@1246: + unsigned long magic; /* identifies a core file */ yann@1246: + char u_comm[32]; /* user command name */ yann@1246: +}; yann@1246: + yann@1246: +#define NBPG getpagesize() yann@1246: +#define UPAGES 1 yann@1246: +#define HOST_TEXT_START_ADDR (u.start_code) yann@1246: +#define HOST_DATA_START_ADDR (u.start_data) yann@1246: +#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) yann@1246: yann@1246: #endif /* sys/user.h */