Mercurial > hvf > hvf-old
changeset 524:4e99f8fcd4b9
include: added 31-bit and 64-bit definitions of ELF program segment headers
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Mon, 25 Apr 2011 20:54:32 -0400 |
parents | b887ac39536d |
children | 42f3a76e6535 |
files | include/binfmt_elf.h |
diffstat | 1 files changed, 50 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/include/binfmt_elf.h Mon Apr 25 20:52:01 2011 -0400 +++ b/include/binfmt_elf.h Mon Apr 25 20:54:32 2011 -0400 @@ -73,6 +73,25 @@ #define SHT_LOUSER 0x80000000 #define SHT_HIUSER 0xffffffff +#define PT_NULL 0 +#define PT_LOAD 1 +#define PT_DYNAMIC 2 +#define PT_INTERP 3 +#define PT_NOTE 4 +#define PT_SHLIB 5 +#define PT_PHDR 6 +#define PT_TLS 7 +#define PT_LOOS 0x60000000 +#define PT_HIOS 0x6fffffff +#define PT_LOPROC 0x70000000 +#define PT_HIPROC 0x7fffffff + +#define PF_X 0x1 +#define PF_W 0x2 +#define PF_R 0x4 +#define PF_MASKOS 0x0ff00000 +#define PF_MAKSPROC 0xf0000000 + typedef u32 Elf32_Addr; typedef u32 Elf32_Off; typedef u16 Elf32_Half; @@ -165,4 +184,35 @@ Elf64_Shdr z; } Elf_Shdr; +/* + * ELF program header + */ +typedef struct { + Elf32_Word p_type; /* Segment type */ + Elf32_Off p_offset; /* Segment file offset */ + Elf32_Addr p_vaddr; /* Segment virt. addr */ + Elf32_Addr p_paddr; /* <undefined> */ + Elf32_Word p_filesz; /* Segment size in file */ + Elf32_Word p_memsz; /* Segment size in mem */ + Elf32_Word p_flags; /* Segment flags */ + Elf32_Word p_align; /* Segment alignment */ +} Elf32_Phdr; + +typedef struct { + Elf64_Word p_type; /* Segment type */ + Elf64_Word p_flags; /* Segment file offset */ + Elf64_Off p_offset; /* Segment virt. addr */ + Elf64_Addr p_vaddr; /* <undefined> */ + Elf64_Addr p_paddr; /* Segment size in file */ + Elf64_Xword p_filesz; /* Segment size in mem */ + Elf64_Xword p_memsz; /* Segment flags */ + Elf64_Xword p_align; /* Segment alignment */ +} Elf64_Phdr; + +/* combined header for easy pointer casting */ +typedef union { + Elf32_Phdr s390; + Elf64_Phdr z; +} Elf_Phdr; + #endif