Lines Matching refs:phdr

141 	struct elf_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;
748 struct elf_phdr *phdr;
805 phdr = params->phdrs;
807 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
808 if (phdr->p_type != PT_LOAD)
811 if (phdr->p_offset > params->hdr.e_phoff ||
812 phdr->p_offset + phdr->p_filesz < stop)
817 if (phdr->p_vaddr >= seg->p_vaddr &&
818 phdr->p_vaddr + phdr->p_filesz <=
821 (phdr->p_vaddr - seg->p_vaddr) +
823 params->hdr.e_phoff - phdr->p_offset;
831 phdr = params->phdrs;
832 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
833 if (phdr->p_type != PT_DYNAMIC)
838 if (phdr->p_vaddr >= seg->p_vaddr &&
839 phdr->p_vaddr + phdr->p_memsz <=
845 (phdr->p_vaddr - seg->p_vaddr) +
851 if (phdr->p_memsz == 0 ||
852 phdr->p_memsz % sizeof(Elf_Dyn) != 0)
855 tmp = phdr->p_memsz / sizeof(Elf_Dyn);
928 struct elf_phdr *phdr;
937 phdr = params->phdrs;
938 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
942 if (base > phdr->p_vaddr)
943 base = phdr->p_vaddr;
944 if (top < phdr->p_vaddr + phdr->p_memsz)
945 top = phdr->p_vaddr + phdr->p_memsz;
958 phdr = params->phdrs;
959 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
963 seg->addr = maddr + (phdr->p_vaddr - base);
964 seg->p_vaddr = phdr->p_vaddr;
965 seg->p_memsz = phdr->p_memsz;
967 ret = read_code(file, seg->addr, phdr->p_offset,
968 phdr->p_filesz);
973 if (phdr->p_offset == 0)
977 if (phdr->p_filesz < phdr->p_memsz) {
978 if (clear_user((void *) (seg->addr + phdr->p_filesz),
979 phdr->p_memsz - phdr->p_filesz))
984 if (phdr->p_flags & PF_X) {
988 phdr->p_memsz;
992 mm->end_data = seg->addr + phdr->p_memsz;
1012 struct elf_phdr *phdr;
1023 phdr = params->phdrs;
1024 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
1028 if (phdr->p_type != PT_LOAD)
1032 (unsigned long) phdr->p_vaddr,
1033 (unsigned long) phdr->p_offset,
1034 (unsigned long) phdr->p_filesz,
1035 (unsigned long) phdr->p_memsz);
1038 if (phdr->p_flags & PF_R) prot |= PROT_READ;
1039 if (phdr->p_flags & PF_W) prot |= PROT_WRITE;
1040 if (phdr->p_flags & PF_X) prot |= PROT_EXEC;
1052 maddr = phdr->p_vaddr;
1063 delta_vaddr = phdr->p_vaddr;
1066 maddr = load_addr + phdr->p_vaddr - delta_vaddr;
1082 disp = phdr->p_vaddr & ~PAGE_MASK;
1083 maddr = vm_mmap(file, maddr, phdr->p_memsz + disp, prot, flags,
1084 phdr->p_offset - disp);
1087 loop, (unsigned long long) phdr->p_memsz + disp,
1088 prot, flags, (unsigned long long) phdr->p_offset - disp,
1096 load_addr += PAGE_ALIGN(phdr->p_memsz + disp);
1099 seg->p_vaddr = phdr->p_vaddr;
1100 seg->p_memsz = phdr->p_memsz;
1103 if (phdr->p_offset == 0)
1120 excess = phdr->p_memsz - phdr->p_filesz;
1121 excess1 = PAGE_SIZE - ((maddr + phdr->p_filesz) & ~PAGE_MASK);
1125 unsigned long xaddr = maddr + phdr->p_filesz + excess1;
1143 loop, maddr + phdr->p_filesz, excess1);
1144 if (clear_user((void __user *) maddr + phdr->p_filesz,
1152 (unsigned long long) maddr + phdr->p_filesz,
1154 if (clear_user((void *) maddr + phdr->p_filesz, excess))
1160 if (phdr->p_flags & PF_X) {
1163 mm->end_code = maddr + phdr->p_memsz;
1167 mm->end_data = maddr + phdr->p_memsz;
1262 static inline void fill_elf_note_phdr(struct elf_phdr *phdr, int sz, loff_t offset)
1264 phdr->p_type = PT_NOTE;
1265 phdr->p_offset = offset;
1266 phdr->p_vaddr = 0;
1267 phdr->p_paddr = 0;
1268 phdr->p_filesz = sz;
1269 phdr->p_memsz = 0;
1270 phdr->p_flags = 0;
1271 phdr->p_align = 4;
1545 /* Write notes phdr entry */
1578 struct elf_phdr phdr;
1583 phdr.p_type = PT_LOAD;
1584 phdr.p_offset = offset;
1585 phdr.p_vaddr = meta->start;
1586 phdr.p_paddr = 0;
1587 phdr.p_filesz = meta->dump_size;
1588 phdr.p_memsz = sz;
1589 offset += phdr.p_filesz;
1590 phdr.p_flags = 0;
1592 phdr.p_flags |= PF_R;
1594 phdr.p_flags |= PF_W;
1596 phdr.p_flags |= PF_X;
1597 phdr.p_align = ELF_EXEC_PAGESIZE;
1599 if (!dump_emit(cprm, &phdr, sizeof(phdr)))