| 1 |
|
| 2 | #ifndef _ALPHA_USER_H
|
| 3 | #define _ALPHA_USER_H
|
| 4 |
|
| 5 | #include <linux/sched.h>
|
| 6 | #include <linux/ptrace.h>
|
| 7 |
|
| 8 | #include <asm/page.h>
|
| 9 | #include <asm/reg.h>
|
| 10 |
|
| 11 | |
| 12 | * Core file format: The core file is written in such a way that gdb
|
| 13 | * can understand it and provide useful information to the user (under
|
| 14 | * linux we use the `trad-core' bfd, NOT the osf-core). The file contents
|
| 15 | * are as follows:
|
| 16 | *
|
| 17 | * upage: 1 page consisting of a user struct that tells gdb
|
| 18 | * what is present in the file. Directly after this is a
|
| 19 | * copy of the task_struct, which is currently not used by gdb,
|
| 20 | * but it may come in handy at some point. All of the registers
|
| 21 | * are stored as part of the upage. The upage should always be
|
| 22 | * only one page long.
|
| 23 | * data: The data segment follows next. We use current->end_text to
|
| 24 | * current->brk to pick up all of the user variables, plus any memory
|
| 25 | * that may have been sbrk'ed. No attempt is made to determine if a
|
| 26 | * page is demand-zero or if a page is totally unused, we just cover
|
| 27 | * the entire range. All of the addresses are rounded in such a way
|
| 28 | * that an integral number of pages is written.
|
| 29 | * stack: We need the stack information in order to get a meaningful
|
| 30 | * backtrace. We need to write the data from usp to
|
| 31 | * current->start_stack, so we round each of these in order to be able
|
| 32 | * to write an integer number of pages.
|
| 33 |
|
| 34 | struct user {
|
| 35 | unsigned long regs[EF_SIZE/8+32];
|
| 36 | size_t u_tsize;
|
| 37 | size_t u_dsize;
|
| 38 | size_t u_ssize;
|
| 39 | unsigned long start_code;
|
| 40 | unsigned long start_data;
|
| 41 | unsigned long start_stack;
|
| 42 | long int signal;
|
| 43 | unsigned long u_ar0;
|
| 44 | unsigned long magic;
|
| 45 | char u_comm[32];
|
| 46 | };
|
| 47 |
|
| 48 | #endif
|