130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _UAPI_LINUX_ELFCORE_H 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _UAPI_LINUX_ELFCORE_H 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/signal.h> 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/time.h> 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/ptrace.h> 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/elf.h> 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/fs.h> 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct elf_siginfo 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng{ 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int si_signo; /* signal number */ 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int si_code; /* extra code */ 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int si_errno; /* errno */ 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef __KERNEL__ 2030692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef elf_greg_t greg_t; 2130692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef elf_gregset_t gregset_t; 2230692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef elf_fpregset_t fpregset_t; 2330692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef elf_fpxregset_t fpxregset_t; 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NGREG ELF_NGREG 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Definitions to generate Intel SVR4-like core files. 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * These mostly have the same names as the SVR4 types with "elf_" 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * tacked on the front to prevent clashes with linux definitions, 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * and the typedef forms have been avoided. This is mostly like 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * the SVR4 structure, but more Linuxy, with things that Linux does 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * not support and which gdb doesn't really use excluded. 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Fields present but not used are marked with "XXX". 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 3630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct elf_prstatus 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng{ 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#if 0 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng long pr_flags; /* XXX Process flags */ 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng short pr_why; /* XXX Reason for process halt */ 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng short pr_what; /* XXX More detailed reason */ 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct elf_siginfo pr_info; /* Info associated with signal */ 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng short pr_cursig; /* Current signal */ 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned long pr_sigpend; /* Set of pending signals */ 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned long pr_sighold; /* Set of held signals */ 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#if 0 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct sigaltstack pr_altstack; /* Alternate stack info */ 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct sigaction pr_action; /* Signal action for current sig */ 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng pid_t pr_pid; 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng pid_t pr_ppid; 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng pid_t pr_pgrp; 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng pid_t pr_sid; 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct timeval pr_utime; /* User time */ 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct timeval pr_stime; /* System time */ 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct timeval pr_cutime; /* Cumulative user time */ 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct timeval pr_cstime; /* Cumulative system time */ 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#if 0 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng long pr_instr; /* Current instruction */ 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng elf_gregset_t pr_reg; /* GP registers */ 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifdef CONFIG_BINFMT_ELF_FDPIC 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* When using FDPIC, the loadmap addresses need to be communicated 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * to GDB in order for GDB to do the necessary relocations. The 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * fields (below) used to communicate this information are placed 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * immediately after ``pr_reg'', so that the loadmap addresses may 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * be viewed as part of the register set if so desired. 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned long pr_exec_fdpic_loadmap; 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned long pr_interp_fdpic_loadmap; 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int pr_fpvalid; /* True if math co-processor being used. */ 7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ELF_PRARGSZ (80) /* Number of chars for args */ 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct elf_prpsinfo 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng{ 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char pr_state; /* numeric process state */ 8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char pr_sname; /* char for pr_state */ 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char pr_zomb; /* zombie */ 8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char pr_nice; /* nice val */ 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned long pr_flag; /* flags */ 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __kernel_uid_t pr_uid; 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __kernel_gid_t pr_gid; 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng pid_t pr_pid, pr_ppid, pr_pgrp, pr_sid; 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* Lots missing */ 8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char pr_fname[16]; /* filename of executable */ 9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char pr_psargs[ELF_PRARGSZ]; /* initial part of arg list */ 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef __KERNEL__ 9430692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef struct elf_prstatus prstatus_t; 9530692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef struct elf_prpsinfo prpsinfo_t; 9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define PRARGSZ ELF_PRARGSZ 9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif 9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _UAPI_LINUX_ELFCORE_H */ 101