diff options
Diffstat (limited to 'include/linux/elf.h')
| -rw-r--r-- | include/linux/elf.h | 41 | 
1 files changed, 39 insertions, 2 deletions
diff --git a/include/linux/elf.h b/include/linux/elf.h index 0cc4d55151b..4d608014753 100644 --- a/include/linux/elf.h +++ b/include/linux/elf.h @@ -50,6 +50,28 @@ typedef __s64	Elf64_Sxword;  #define PT_GNU_STACK	(PT_LOOS + 0x474e551) +/* + * Extended Numbering + * + * If the real number of program header table entries is larger than + * or equal to PN_XNUM(0xffff), it is set to sh_info field of the + * section header at index 0, and PN_XNUM is set to e_phnum + * field. Otherwise, the section header at index 0 is zero + * initialized, if it exists. + * + * Specifications are available in: + * + * - Sun microsystems: Linker and Libraries. + *   Part No: 817-1984-17, September 2008. + *   URL: http://docs.sun.com/app/docs/doc/817-1984 + * + * - System V ABI AMD64 Architecture Processor Supplement + *   Draft Version 0.99., + *   May 11, 2009. + *   URL: http://www.x86-64.org/ + */ +#define PN_XNUM 0xffff +  /* These constants define the different elf file types */  #define ET_NONE   0  #define ET_REL    1 @@ -286,7 +308,7 @@ typedef struct elf64_phdr {  #define SHN_COMMON	0xfff2  #define SHN_HIRESERVE	0xffff -typedef struct { +typedef struct elf32_shdr {    Elf32_Word	sh_name;    Elf32_Word	sh_type;    Elf32_Word	sh_flags; @@ -349,7 +371,11 @@ typedef struct elf64_shdr {  #define ELF_OSABI ELFOSABI_NONE  #endif -/* Notes used in ET_CORE */ +/* + * Notes used in ET_CORE. Architectures export some of the arch register sets + * using the corresponding note types via the PTRACE_GETREGSET and + * PTRACE_SETREGSET requests. + */  #define NT_PRSTATUS	1  #define NT_PRFPREG	2  #define NT_PRPSINFO	3 @@ -361,7 +387,14 @@ typedef struct elf64_shdr {  #define NT_PPC_VSX	0x102		/* PowerPC VSX registers */  #define NT_386_TLS	0x200		/* i386 TLS slots (struct user_desc) */  #define NT_386_IOPERM	0x201		/* x86 io permission bitmap (1=deny) */ +#define NT_X86_XSTATE	0x202		/* x86 extended state using xsave */  #define NT_S390_HIGH_GPRS	0x300	/* s390 upper register halves */ +#define NT_S390_TIMER	0x301		/* s390 timer register */ +#define NT_S390_TODCMP	0x302		/* s390 TOD clock comparator register */ +#define NT_S390_TODPREG	0x303		/* s390 TOD programmable register */ +#define NT_S390_CTRS	0x304		/* s390 control registers */ +#define NT_S390_PREFIX	0x305		/* s390 prefix register */ +#define NT_S390_LAST_BREAK	0x306	/* s390 breaking event address */  /* Note header in a PT_NOTE section */ @@ -384,16 +417,20 @@ typedef struct elf64_note {  extern Elf32_Dyn _DYNAMIC [];  #define elfhdr		elf32_hdr  #define elf_phdr	elf32_phdr +#define elf_shdr	elf32_shdr  #define elf_note	elf32_note  #define elf_addr_t	Elf32_Off +#define Elf_Half	Elf32_Half  #else  extern Elf64_Dyn _DYNAMIC [];  #define elfhdr		elf64_hdr  #define elf_phdr	elf64_phdr +#define elf_shdr	elf64_shdr  #define elf_note	elf64_note  #define elf_addr_t	Elf64_Off +#define Elf_Half	Elf64_Half  #endif  |