1951a39d68df598db08dfced8b4707755864a0492Ying Wang/**************************************************************************** 2951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 3951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 4951a39d68df598db08dfced8b4707755864a0492Ying Wang *** This header was automatically generated from a Linux kernel header 5951a39d68df598db08dfced8b4707755864a0492Ying Wang *** of the same name, to make information necessary for userspace to 6951a39d68df598db08dfced8b4707755864a0492Ying Wang *** call into the kernel available to libc. It contains only constants, 7951a39d68df598db08dfced8b4707755864a0492Ying Wang *** structures, and macros generated from the original header, and thus, 8951a39d68df598db08dfced8b4707755864a0492Ying Wang *** contains no copyrightable information. 9951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 10951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 11951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************/ 12951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _LINUX_ELF_H 13951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _LINUX_ELF_H 14951a39d68df598db08dfced8b4707755864a0492Ying Wang 15951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/types.h> 16951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/auxvec.h> 17951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/elf-em.h> 18951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/elf.h> 19951a39d68df598db08dfced8b4707755864a0492Ying Wang 20951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef elf_read_implies_exec 21951a39d68df598db08dfced8b4707755864a0492Ying Wang 22951a39d68df598db08dfced8b4707755864a0492Ying Wang#define elf_read_implies_exec(ex, have_pt_gnu_stack) 0 23951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 24951a39d68df598db08dfced8b4707755864a0492Ying Wang 25951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __u32 Elf32_Addr; 26951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __u16 Elf32_Half; 27951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __u32 Elf32_Off; 28951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __s32 Elf32_Sword; 29951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __u32 Elf32_Word; 30951a39d68df598db08dfced8b4707755864a0492Ying Wang 31951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __u64 Elf64_Addr; 32951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __u16 Elf64_Half; 33951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __s16 Elf64_SHalf; 34951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __u64 Elf64_Off; 35951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __s32 Elf64_Sword; 36951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __u32 Elf64_Word; 37951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __u64 Elf64_Xword; 38951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef __s64 Elf64_Sxword; 39951a39d68df598db08dfced8b4707755864a0492Ying Wang 40951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_NULL 0 41951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_LOAD 1 42951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_DYNAMIC 2 43951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_INTERP 3 44951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_NOTE 4 45951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_SHLIB 5 46951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_PHDR 6 47951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_TLS 7 48951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_LOOS 0x60000000 49951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_HIOS 0x6fffffff 50951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_LOPROC 0x70000000 51951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_HIPROC 0x7fffffff 52951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_GNU_EH_FRAME 0x6474e550 53951a39d68df598db08dfced8b4707755864a0492Ying Wang 54951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PT_GNU_STACK (PT_LOOS + 0x474e551) 55951a39d68df598db08dfced8b4707755864a0492Ying Wang 56951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ET_NONE 0 57951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ET_REL 1 58951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ET_EXEC 2 59951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ET_DYN 3 60951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ET_CORE 4 61951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ET_LOPROC 0xff00 62951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ET_HIPROC 0xffff 63951a39d68df598db08dfced8b4707755864a0492Ying Wang 64951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_NULL 0 65951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_NEEDED 1 66951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_PLTRELSZ 2 67951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_PLTGOT 3 68951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_HASH 4 69951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_STRTAB 5 70951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_SYMTAB 6 71951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_RELA 7 72951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_RELASZ 8 73951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_RELAENT 9 74951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_STRSZ 10 75951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_SYMENT 11 76951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_INIT 12 77951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_FINI 13 78951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_SONAME 14 79951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_RPATH 15 80951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_SYMBOLIC 16 81951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_REL 17 82951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_RELSZ 18 83951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_RELENT 19 84951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_PLTREL 20 85951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_DEBUG 21 86951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_TEXTREL 22 87951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_JMPREL 23 88951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_LOPROC 0x70000000 89951a39d68df598db08dfced8b4707755864a0492Ying Wang#define DT_HIPROC 0x7fffffff 90951a39d68df598db08dfced8b4707755864a0492Ying Wang 91951a39d68df598db08dfced8b4707755864a0492Ying Wang#define STB_LOCAL 0 92951a39d68df598db08dfced8b4707755864a0492Ying Wang#define STB_GLOBAL 1 93951a39d68df598db08dfced8b4707755864a0492Ying Wang#define STB_WEAK 2 94951a39d68df598db08dfced8b4707755864a0492Ying Wang 95951a39d68df598db08dfced8b4707755864a0492Ying Wang#define STT_NOTYPE 0 96951a39d68df598db08dfced8b4707755864a0492Ying Wang#define STT_OBJECT 1 97951a39d68df598db08dfced8b4707755864a0492Ying Wang#define STT_FUNC 2 98951a39d68df598db08dfced8b4707755864a0492Ying Wang#define STT_SECTION 3 99951a39d68df598db08dfced8b4707755864a0492Ying Wang#define STT_FILE 4 100951a39d68df598db08dfced8b4707755864a0492Ying Wang#define STT_COMMON 5 101951a39d68df598db08dfced8b4707755864a0492Ying Wang#define STT_TLS 6 102951a39d68df598db08dfced8b4707755864a0492Ying Wang 103951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_ST_BIND(x) ((x) >> 4) 104951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf) 105951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF32_ST_BIND(x) ELF_ST_BIND(x) 106951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF32_ST_TYPE(x) ELF_ST_TYPE(x) 107951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF64_ST_BIND(x) ELF_ST_BIND(x) 108951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF64_ST_TYPE(x) ELF_ST_TYPE(x) 109951a39d68df598db08dfced8b4707755864a0492Ying Wang 110951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct dynamic{ 111951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Sword d_tag; 112951a39d68df598db08dfced8b4707755864a0492Ying Wang union{ 113951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Sword d_val; 114951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Addr d_ptr; 115951a39d68df598db08dfced8b4707755864a0492Ying Wang } d_un; 116951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf32_Dyn; 117951a39d68df598db08dfced8b4707755864a0492Ying Wang 118951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct { 119951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Sxword d_tag; 120951a39d68df598db08dfced8b4707755864a0492Ying Wang union { 121951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Xword d_val; 122951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Addr d_ptr; 123951a39d68df598db08dfced8b4707755864a0492Ying Wang } d_un; 124951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf64_Dyn; 125951a39d68df598db08dfced8b4707755864a0492Ying Wang 126951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF32_R_SYM(x) ((x) >> 8) 127951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF32_R_TYPE(x) ((x) & 0xff) 128951a39d68df598db08dfced8b4707755864a0492Ying Wang 129951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF64_R_SYM(i) ((i) >> 32) 130951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF64_R_TYPE(i) ((i) & 0xffffffff) 131951a39d68df598db08dfced8b4707755864a0492Ying Wang 132951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf32_rel { 133951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Addr r_offset; 134951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word r_info; 135951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf32_Rel; 136951a39d68df598db08dfced8b4707755864a0492Ying Wang 137951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf64_rel { 138951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Addr r_offset; 139951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Xword r_info; 140951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf64_Rel; 141951a39d68df598db08dfced8b4707755864a0492Ying Wang 142951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf32_rela{ 143951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Addr r_offset; 144951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word r_info; 145951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Sword r_addend; 146951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf32_Rela; 147951a39d68df598db08dfced8b4707755864a0492Ying Wang 148951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf64_rela { 149951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Addr r_offset; 150951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Xword r_info; 151951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Sxword r_addend; 152951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf64_Rela; 153951a39d68df598db08dfced8b4707755864a0492Ying Wang 154951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf32_sym{ 155951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word st_name; 156951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Addr st_value; 157951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word st_size; 158951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char st_info; 159951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char st_other; 160951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Half st_shndx; 161951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf32_Sym; 162951a39d68df598db08dfced8b4707755864a0492Ying Wang 163951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf64_sym { 164951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Word st_name; 165951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char st_info; 166951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char st_other; 167951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Half st_shndx; 168951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Addr st_value; 169951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Xword st_size; 170951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf64_Sym; 171951a39d68df598db08dfced8b4707755864a0492Ying Wang 172951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EI_NIDENT 16 173951a39d68df598db08dfced8b4707755864a0492Ying Wang 174951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf32_hdr{ 175951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char e_ident[EI_NIDENT]; 176951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Half e_type; 177951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Half e_machine; 178951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word e_version; 179951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Addr e_entry; 180951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Off e_phoff; 181951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Off e_shoff; 182951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word e_flags; 183951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Half e_ehsize; 184951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Half e_phentsize; 185951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Half e_phnum; 186951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Half e_shentsize; 187951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Half e_shnum; 188951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Half e_shstrndx; 189951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf32_Ehdr; 190951a39d68df598db08dfced8b4707755864a0492Ying Wang 191951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf64_hdr { 192951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char e_ident[16]; 193951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Half e_type; 194951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Half e_machine; 195951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Word e_version; 196951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Addr e_entry; 197951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Off e_phoff; 198951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Off e_shoff; 199951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Word e_flags; 200951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Half e_ehsize; 201951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Half e_phentsize; 202951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Half e_phnum; 203951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Half e_shentsize; 204951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Half e_shnum; 205951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Half e_shstrndx; 206951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf64_Ehdr; 207951a39d68df598db08dfced8b4707755864a0492Ying Wang 208951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_R 0x4 209951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_W 0x2 210951a39d68df598db08dfced8b4707755864a0492Ying Wang#define PF_X 0x1 211951a39d68df598db08dfced8b4707755864a0492Ying Wang 212951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf32_phdr{ 213951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word p_type; 214951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Off p_offset; 215951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Addr p_vaddr; 216951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Addr p_paddr; 217951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word p_filesz; 218951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word p_memsz; 219951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word p_flags; 220951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word p_align; 221951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf32_Phdr; 222951a39d68df598db08dfced8b4707755864a0492Ying Wang 223951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf64_phdr { 224951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Word p_type; 225951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Word p_flags; 226951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Off p_offset; 227951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Addr p_vaddr; 228951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Addr p_paddr; 229951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Xword p_filesz; 230951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Xword p_memsz; 231951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Xword p_align; 232951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf64_Phdr; 233951a39d68df598db08dfced8b4707755864a0492Ying Wang 234951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_NULL 0 235951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_PROGBITS 1 236951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_SYMTAB 2 237951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_STRTAB 3 238951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_RELA 4 239951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_HASH 5 240951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_DYNAMIC 6 241951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_NOTE 7 242951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_NOBITS 8 243951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_REL 9 244951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_SHLIB 10 245951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_DYNSYM 11 246951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_NUM 12 247951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_LOPROC 0x70000000 248951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_HIPROC 0x7fffffff 249951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_LOUSER 0x80000000 250951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHT_HIUSER 0xffffffff 251951a39d68df598db08dfced8b4707755864a0492Ying Wang 252951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHF_WRITE 0x1 253951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHF_ALLOC 0x2 254951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHF_EXECINSTR 0x4 255951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHF_MASKPROC 0xf0000000 256951a39d68df598db08dfced8b4707755864a0492Ying Wang 257951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHN_UNDEF 0 258951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHN_LORESERVE 0xff00 259951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHN_LOPROC 0xff00 260951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHN_HIPROC 0xff1f 261951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHN_ABS 0xfff1 262951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHN_COMMON 0xfff2 263951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SHN_HIRESERVE 0xffff 264951a39d68df598db08dfced8b4707755864a0492Ying Wang 265951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct { 266951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word sh_name; 267951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word sh_type; 268951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word sh_flags; 269951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Addr sh_addr; 270951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Off sh_offset; 271951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word sh_size; 272951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word sh_link; 273951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word sh_info; 274951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word sh_addralign; 275951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word sh_entsize; 276951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf32_Shdr; 277951a39d68df598db08dfced8b4707755864a0492Ying Wang 278951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf64_shdr { 279951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Word sh_name; 280951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Word sh_type; 281951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Xword sh_flags; 282951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Addr sh_addr; 283951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Off sh_offset; 284951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Xword sh_size; 285951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Word sh_link; 286951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Word sh_info; 287951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Xword sh_addralign; 288951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Xword sh_entsize; 289951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf64_Shdr; 290951a39d68df598db08dfced8b4707755864a0492Ying Wang 291951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EI_MAG0 0 292951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EI_MAG1 1 293951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EI_MAG2 2 294951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EI_MAG3 3 295951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EI_CLASS 4 296951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EI_DATA 5 297951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EI_VERSION 6 298951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EI_OSABI 7 299951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EI_PAD 8 300951a39d68df598db08dfced8b4707755864a0492Ying Wang 301951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFMAG0 0x7f 302951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFMAG1 'E' 303951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFMAG2 'L' 304951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFMAG3 'F' 305951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFMAG "\177ELF" 306951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SELFMAG 4 307951a39d68df598db08dfced8b4707755864a0492Ying Wang 308951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFCLASSNONE 0 309951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFCLASS32 1 310951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFCLASS64 2 311951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFCLASSNUM 3 312951a39d68df598db08dfced8b4707755864a0492Ying Wang 313951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFDATANONE 0 314951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFDATA2LSB 1 315951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFDATA2MSB 2 316951a39d68df598db08dfced8b4707755864a0492Ying Wang 317951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EV_NONE 0 318951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EV_CURRENT 1 319951a39d68df598db08dfced8b4707755864a0492Ying Wang#define EV_NUM 2 320951a39d68df598db08dfced8b4707755864a0492Ying Wang 321951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFOSABI_NONE 0 322951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELFOSABI_LINUX 3 323951a39d68df598db08dfced8b4707755864a0492Ying Wang 324951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef ELF_OSABI 325951a39d68df598db08dfced8b4707755864a0492Ying Wang#define ELF_OSABI ELFOSABI_NONE 326951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 327951a39d68df598db08dfced8b4707755864a0492Ying Wang 328951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NT_PRSTATUS 1 329951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NT_PRFPREG 2 330951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NT_PRPSINFO 3 331951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NT_TASKSTRUCT 4 332951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NT_AUXV 6 333951a39d68df598db08dfced8b4707755864a0492Ying Wang#define NT_PRXFPREG 0x46e62b7f 334951a39d68df598db08dfced8b4707755864a0492Ying Wang 335951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf32_note { 336951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word n_namesz; 337951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word n_descsz; 338951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf32_Word n_type; 339951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf32_Nhdr; 340951a39d68df598db08dfced8b4707755864a0492Ying Wang 341951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct elf64_note { 342951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Word n_namesz; 343951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Word n_descsz; 344951a39d68df598db08dfced8b4707755864a0492Ying Wang Elf64_Word n_type; 345951a39d68df598db08dfced8b4707755864a0492Ying Wang} Elf64_Nhdr; 346951a39d68df598db08dfced8b4707755864a0492Ying Wang 347951a39d68df598db08dfced8b4707755864a0492Ying Wang#if ELF_CLASS == ELFCLASS32 348951a39d68df598db08dfced8b4707755864a0492Ying Wang 349951a39d68df598db08dfced8b4707755864a0492Ying Wang#define elfhdr elf32_hdr 350951a39d68df598db08dfced8b4707755864a0492Ying Wang#define elf_phdr elf32_phdr 351951a39d68df598db08dfced8b4707755864a0492Ying Wang#define elf_note elf32_note 352951a39d68df598db08dfced8b4707755864a0492Ying Wang 353951a39d68df598db08dfced8b4707755864a0492Ying Wang#else 354951a39d68df598db08dfced8b4707755864a0492Ying Wang 355951a39d68df598db08dfced8b4707755864a0492Ying Wang#define elfhdr elf64_hdr 356951a39d68df598db08dfced8b4707755864a0492Ying Wang#define elf_phdr elf64_phdr 357951a39d68df598db08dfced8b4707755864a0492Ying Wang#define elf_note elf64_note 358951a39d68df598db08dfced8b4707755864a0492Ying Wang 359951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 360951a39d68df598db08dfced8b4707755864a0492Ying Wang 361951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 362