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);
926 struct elf_phdr *phdr;
935 phdr = params->phdrs;
936 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
940 if (base > phdr->p_vaddr)
941 base = phdr->p_vaddr;
942 if (top < phdr->p_vaddr + phdr->p_memsz)
943 top = phdr->p_vaddr + phdr->p_memsz;
956 phdr = params->phdrs;
957 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
961 seg->addr = maddr + (phdr->p_vaddr - base);
962 seg->p_vaddr = phdr->p_vaddr;
963 seg->p_memsz = phdr->p_memsz;
965 ret = read_code(file, seg->addr, phdr->p_offset,
966 phdr->p_filesz);
971 if (phdr->p_offset == 0)
975 if (phdr->p_filesz < phdr->p_memsz) {
976 if (clear_user((void *) (seg->addr + phdr->p_filesz),
977 phdr->p_memsz - phdr->p_filesz))
982 if (phdr->p_flags & PF_X) {
986 phdr->p_memsz;
990 mm->end_data = seg->addr + phdr->p_memsz;
1010 struct elf_phdr *phdr;
1021 phdr = params->phdrs;
1022 for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) {
1026 if (phdr->p_type != PT_LOAD)
1030 (unsigned long) phdr->p_vaddr,
1031 (unsigned long) phdr->p_offset,
1032 (unsigned long) phdr->p_filesz,
1033 (unsigned long) phdr->p_memsz);
1036 if (phdr->p_flags & PF_R) prot |= PROT_READ;
1037 if (phdr->p_flags & PF_W) prot |= PROT_WRITE;
1038 if (phdr->p_flags & PF_X) prot |= PROT_EXEC;
1050 maddr = phdr->p_vaddr;
1061 delta_vaddr = phdr->p_vaddr;
1064 maddr = load_addr + phdr->p_vaddr - delta_vaddr;
1080 disp = phdr->p_vaddr & ~PAGE_MASK;
1081 maddr = vm_mmap(file, maddr, phdr->p_memsz + disp, prot, flags,
1082 phdr->p_offset - disp);
1085 loop, phdr->p_memsz + disp, prot, flags,
1086 phdr->p_offset - disp, maddr);
1093 load_addr += PAGE_ALIGN(phdr->p_memsz + disp);
1096 seg->p_vaddr = phdr->p_vaddr;
1097 seg->p_memsz = phdr->p_memsz;
1100 if (phdr->p_offset == 0)
1117 excess = phdr->p_memsz - phdr->p_filesz;
1118 excess1 = PAGE_SIZE - ((maddr + phdr->p_filesz) & ~PAGE_MASK);
1122 unsigned long xaddr = maddr + phdr->p_filesz + excess1;
1140 loop, maddr + phdr->p_filesz, excess1);
1141 if (clear_user((void __user *) maddr + phdr->p_filesz,
1149 loop, maddr + phdr->p_filesz, excess);
1150 if (clear_user((void *) maddr + phdr->p_filesz, excess))
1156 if (phdr->p_flags & PF_X) {
1159 mm->end_code = maddr + phdr->p_memsz;
1163 mm->end_data = maddr + phdr->p_memsz;
1258 static inline void fill_elf_note_phdr(struct elf_phdr *phdr, int sz, loff_t offset)
1260 phdr->p_type = PT_NOTE;
1261 phdr->p_offset = offset;
1262 phdr->p_vaddr = 0;
1263 phdr->p_paddr = 0;
1264 phdr->p_filesz = sz;
1265 phdr->p_memsz = 0;
1266 phdr->p_flags = 0;
1267 phdr->p_align = 4;
1541 /* Write notes phdr entry */
1574 struct elf_phdr phdr;
1579 phdr.p_type = PT_LOAD;
1580 phdr.p_offset = offset;
1581 phdr.p_vaddr = meta->start;
1582 phdr.p_paddr = 0;
1583 phdr.p_filesz = meta->dump_size;
1584 phdr.p_memsz = sz;
1585 offset += phdr.p_filesz;
1586 phdr.p_flags = 0;
1588 phdr.p_flags |= PF_R;
1590 phdr.p_flags |= PF_W;
1592 phdr.p_flags |= PF_X;
1593 phdr.p_align = ELF_EXEC_PAGESIZE;
1595 if (!dump_emit(cprm, &phdr, sizeof(phdr)))