Lines Matching refs:phdr
141 struct elf32_phdr *phdr;
161 phdr = params->phdrs;
162 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
163 if (phdr->p_type != PT_GNU_STACK)
166 if (phdr->p_flags & PF_X)
171 params->stack_size = phdr->p_memsz;
186 struct elf_phdr *phdr;
229 phdr = exec_params.phdrs;
231 for (i = 0; i < exec_params.hdr.e_phnum; i++, phdr++) {
232 switch (phdr->p_type) {
235 if (phdr->p_filesz > PATH_MAX)
238 if (phdr->p_filesz < 2)
242 interpreter_name = kmalloc(phdr->p_filesz, GFP_KERNEL);
246 pos = phdr->p_offset;
248 phdr->p_filesz, &pos);
249 if (unlikely(retval != phdr->p_filesz)) {
256 if (interpreter_name[phdr->p_filesz - 1] != '\0')
291 exec_params.load_addr = phdr->p_vaddr;
744 struct elf32_phdr *phdr;
806 phdr = params->phdrs;
808 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
809 if (phdr->p_type != PT_LOAD)
812 if (phdr->p_offset > params->hdr.e_phoff ||
813 phdr->p_offset + phdr->p_filesz < stop)
818 if (phdr->p_vaddr >= seg->p_vaddr &&
819 phdr->p_vaddr + phdr->p_filesz <=
822 (phdr->p_vaddr - seg->p_vaddr) +
824 params->hdr.e_phoff - phdr->p_offset;
832 phdr = params->phdrs;
833 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
834 if (phdr->p_type != PT_DYNAMIC)
839 if (phdr->p_vaddr >= seg->p_vaddr &&
840 phdr->p_vaddr + phdr->p_memsz <=
846 (phdr->p_vaddr - seg->p_vaddr) +
852 if (phdr->p_memsz == 0 ||
853 phdr->p_memsz % sizeof(Elf32_Dyn) != 0)
856 tmp = phdr->p_memsz / sizeof(Elf32_Dyn);
927 struct elf32_phdr *phdr;
936 phdr = params->phdrs;
937 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
941 if (base > phdr->p_vaddr)
942 base = phdr->p_vaddr;
943 if (top < phdr->p_vaddr + phdr->p_memsz)
944 top = phdr->p_vaddr + phdr->p_memsz;
961 phdr = params->phdrs;
962 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
966 seg->addr = maddr + (phdr->p_vaddr - base);
967 seg->p_vaddr = phdr->p_vaddr;
968 seg->p_memsz = phdr->p_memsz;
970 ret = read_code(file, seg->addr, phdr->p_offset,
971 phdr->p_filesz);
976 if (phdr->p_offset == 0)
980 if (phdr->p_filesz < phdr->p_memsz) {
981 if (clear_user((void *) (seg->addr + phdr->p_filesz),
982 phdr->p_memsz - phdr->p_filesz))
987 if (phdr->p_flags & PF_X) {
991 phdr->p_memsz;
995 mm->end_data = seg->addr + phdr->p_memsz;
1015 struct elf32_phdr *phdr;
1026 phdr = params->phdrs;
1027 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
1031 if (phdr->p_type != PT_LOAD)
1035 (unsigned long) phdr->p_vaddr,
1036 (unsigned long) phdr->p_offset,
1037 (unsigned long) phdr->p_filesz,
1038 (unsigned long) phdr->p_memsz);
1041 if (phdr->p_flags & PF_R) prot |= PROT_READ;
1042 if (phdr->p_flags & PF_W) prot |= PROT_WRITE;
1043 if (phdr->p_flags & PF_X) prot |= PROT_EXEC;
1058 maddr = phdr->p_vaddr;
1069 delta_vaddr = phdr->p_vaddr;
1072 maddr = load_addr + phdr->p_vaddr - delta_vaddr;
1088 disp = phdr->p_vaddr & ~PAGE_MASK;
1089 maddr = vm_mmap(file, maddr, phdr->p_memsz + disp, prot, flags,
1090 phdr->p_offset - disp);
1093 loop, phdr->p_memsz + disp, prot, flags,
1094 phdr->p_offset - disp, maddr);
1101 load_addr += PAGE_ALIGN(phdr->p_memsz + disp);
1104 seg->p_vaddr = phdr->p_vaddr;
1105 seg->p_memsz = phdr->p_memsz;
1108 if (phdr->p_offset == 0)
1125 excess = phdr->p_memsz - phdr->p_filesz;
1126 excess1 = PAGE_SIZE - ((maddr + phdr->p_filesz) & ~PAGE_MASK);
1130 unsigned long xaddr = maddr + phdr->p_filesz + excess1;
1148 loop, maddr + phdr->p_filesz, excess1);
1149 if (clear_user((void __user *) maddr + phdr->p_filesz,
1157 loop, maddr + phdr->p_filesz, excess);
1158 if (clear_user((void *) maddr + phdr->p_filesz, excess))
1164 if (phdr->p_flags & PF_X) {
1167 mm->end_code = maddr + phdr->p_memsz;
1171 mm->end_data = maddr + phdr->p_memsz;
1277 static inline void fill_elf_note_phdr(struct elf_phdr *phdr, int sz, loff_t offset)
1279 phdr->p_type = PT_NOTE;
1280 phdr->p_offset = offset;
1281 phdr->p_vaddr = 0;
1282 phdr->p_paddr = 0;
1283 phdr->p_filesz = sz;
1284 phdr->p_memsz = 0;
1285 phdr->p_flags = 0;
1286 phdr->p_align = 0;
1559 /* Write notes phdr entry */
1592 struct elf_phdr phdr;
1597 phdr.p_type = PT_LOAD;
1598 phdr.p_offset = offset;
1599 phdr.p_vaddr = meta->start;
1600 phdr.p_paddr = 0;
1601 phdr.p_filesz = meta->dump_size;
1602 phdr.p_memsz = sz;
1603 offset += phdr.p_filesz;
1604 phdr.p_flags = 0;
1606 phdr.p_flags |= PF_R;
1608 phdr.p_flags |= PF_W;
1610 phdr.p_flags |= PF_X;
1611 phdr.p_align = ELF_EXEC_PAGESIZE;
1613 if (!dump_emit(cprm, &phdr, sizeof(phdr)))