0001
0002
0003
0004
0005
0006
0007
0008 #ifndef _LINUX_ELF_FDPIC_H
0009 #define _LINUX_ELF_FDPIC_H
0010
0011 #include <uapi/linux/elf-fdpic.h>
0012
0013
0014
0015
0016 struct elf_fdpic_params {
0017 struct elfhdr hdr;
0018 struct elf_phdr *phdrs;
0019 struct elf32_fdpic_loadmap *loadmap;
0020 unsigned long elfhdr_addr;
0021 unsigned long ph_addr;
0022 unsigned long map_addr;
0023 unsigned long entry_addr;
0024 unsigned long stack_size;
0025 unsigned long dynamic_addr;
0026 unsigned long load_addr;
0027 unsigned long flags;
0028 #define ELF_FDPIC_FLAG_ARRANGEMENT 0x0000000f
0029 #define ELF_FDPIC_FLAG_INDEPENDENT 0x00000000
0030 #define ELF_FDPIC_FLAG_HONOURVADDR 0x00000001
0031 #define ELF_FDPIC_FLAG_CONSTDISP 0x00000002
0032
0033 #define ELF_FDPIC_FLAG_CONTIGUOUS 0x00000003
0034 #define ELF_FDPIC_FLAG_EXEC_STACK 0x00000010
0035 #define ELF_FDPIC_FLAG_NOEXEC_STACK 0x00000020
0036 #define ELF_FDPIC_FLAG_EXECUTABLE 0x00000040
0037 #define ELF_FDPIC_FLAG_PRESENT 0x80000000
0038 };
0039
0040 #ifdef CONFIG_MMU
0041 extern void elf_fdpic_arch_lay_out_mm(struct elf_fdpic_params *exec_params,
0042 struct elf_fdpic_params *interp_params,
0043 unsigned long *start_stack,
0044 unsigned long *start_brk);
0045 #endif
0046
0047 #endif