Lines Matching defs:ph

129 elf_placedynexec(struct exec_package *epp, Elf_Ehdr *eh, Elf_Phdr *ph)
135 if (ph[i].p_type == PT_LOAD && ph[i].p_align > align)
136 align = ph[i].p_align;
148 ph[i].p_vaddr += offset;
328 const Elf_Phdr *ph, Elf_Addr *addr, u_long *size, int flags)
340 *addr = ph->p_vaddr;
342 if (ph->p_align > 1) {
346 diff = ph->p_vaddr - ELF_TRUNC(ph->p_vaddr, ph->p_align);
347 if (*addr - diff != ELF_TRUNC(*addr, ph->p_align)) {
350 (uintptr_t)ELF_TRUNC(*addr, ph->p_align));
361 vmprot |= (ph->p_flags & PF_R) ? VM_PROT_READ : 0;
362 vmprot |= (ph->p_flags & PF_W) ? VM_PROT_WRITE : 0;
363 vmprot |= (ph->p_flags & PF_X) ? VM_PROT_EXECUTE : 0;
369 offset = ph->p_offset - diff;
370 *size = ph->p_filesz + diff;
371 msize = ph->p_memsz + diff;
373 if (ph->p_align >= PAGE_SIZE) {
374 if ((ph->p_flags & PF_W) != 0) {
389 NEW_VMCMD2(vcset, ph->p_align < PAGE_SIZE ?
426 Elf_Phdr *ph = NULL;
501 ph = kmem_alloc(phsize, KM_SLEEP);
503 error = exec_read(l, vp, eh.e_phoff, ph, phsize, IO_NODELOCKED);
515 if (*last == ELF_LINK_ADDR && (ph->p_vaddr & 0xffff0000) == 0)
531 if (ph[i].p_type == PT_LOAD) {
532 u_long psize = ph[i].p_vaddr + ph[i].p_memsz;
534 base_ph = &ph[i];
563 switch (ph[i].p_type) {
575 base_ph = &ph[i];
578 addr = ph[i].p_vaddr;
580 addr = ELF_TRUNC(addr, ph[i].p_align);
582 addr = ELF_ROUND(addr, ph[i].p_align);
586 u_long base = trunc_page(ph[i].p_vaddr);
600 addr = ph[i].p_vaddr - base_ph->p_vaddr;
603 last_ph = &ph[i];
604 if ((error = elf_load_psection(vcset, vp, &ph[i], &addr,
612 if (eh.e_entry >= ph[i].p_vaddr &&
613 eh.e_entry < (ph[i].p_vaddr + size)) {
625 kmem_free(ph, phsize);
634 if (ph != NULL)
635 kmem_free(ph, phsize);
653 Elf_Phdr *ph, *pp;
694 ph = kmem_alloc(phsize, KM_SLEEP);
696 error = exec_read(l, epp->ep_vp, eh->e_phoff, ph, phsize,
707 pp = &ph[i];
755 if (is_dyn && (error = elf_placedynexec(epp, eh, ph)) != 0) {
767 switch (ph[i].p_type) {
770 epp->ep_vp, &ph[i], &addr, &size, VMCMD_FIXED))
781 if (ph[i].p_flags & PF_X) {
792 if (ph[i].p_offset == 0) {
793 computed_phdr = ph[i].p_vaddr + eh->e_phoff;
806 phdr = ph[i].p_vaddr;
887 kmem_free(ph, phsize);
894 kmem_free(ph, phsize);
904 Elf_Phdr *ph;
918 ph = kmem_alloc(phsize, KM_SLEEP);
919 error = exec_read(l, epp->ep_vp, eh->e_phoff, ph, phsize,
929 if (ph[i].p_type != PT_NOTE ||
930 ph[i].p_filesz > ELF_MAXNOTESIZE)
933 nlen = ph[i].p_filesz;
934 error = exec_read(l, epp->ep_vp, ph[i].p_offset, nbuf, nlen,
979 kmem_free(ph, phsize);