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