Lines Matching refs:phdr
328 Elf32_Phdr *phdr; /* program header */ in read_elf32() local
386 phdr = (Elf32_Phdr *)(allphdrs + elfhdrp->e_phentsize * i); in read_elf32()
387 if (phdr->p_type != PT_NOTE) in read_elf32()
391 phdr->p_filesz); in read_elf32()
393 if ((note_buf = kmem_alloc(phdr->p_filesz, 0)) == NULL) in read_elf32()
396 dprintf("seeking to 0x%x\n", phdr->p_offset); in read_elf32()
397 if (lseek(fd, phdr->p_offset, 0) == -1) in read_elf32()
401 phdr->p_filesz, (void *)nhdr); in read_elf32()
404 if (xread(fd, (caddr_t)nhdr, phdr->p_filesz) != phdr->p_filesz) in read_elf32()
432 } while (offset < phdr->p_filesz); in read_elf32()
434 kmem_free(note_buf, phdr->p_filesz); in read_elf32()
444 phdr = (Elf32_Phdr *)(allphdrs + elfhdrp->e_phentsize * i); in read_elf32()
449 phdr->p_offset, phdr->p_vaddr); in read_elf32()
451 phdr->p_memsz, phdr->p_filesz); in read_elf32()
453 if (phdr->p_type == PT_LOAD) { in read_elf32()
455 dprintf("seeking to 0x%x\n", phdr->p_offset); in read_elf32()
456 if (lseek(fd, phdr->p_offset, 0) == -1) in read_elf32()
459 if (phdr->p_flags == (PF_R | PF_W) && in read_elf32()
460 phdr->p_vaddr == 0) { in read_elf32()
472 kmem_alloc(phdr->p_memsz, 0)) == NULL) in read_elf32()
478 phdr->p_vaddr = (Elf32_Addr)loadaddr; in read_elf32()
481 printf("0x%x+", phdr->p_filesz); in read_elf32()
486 loadaddr = phdr->p_vaddr; in read_elf32()
489 size = roundup(phdr->p_memsz + off, in read_elf32()
494 size = phdr->p_memsz; in read_elf32()
500 if (phdr->p_flags & PF_W) in read_elf32()
501 dhdr = phdr; in read_elf32()
503 thdr = phdr; in read_elf32()
528 if ((phdr->p_vaddr == phdr->p_paddr) && in read_elf32()
554 phdr->p_filesz, loadaddr); in read_elf32()
558 phdr->p_filesz) != phdr->p_filesz) in read_elf32()
562 if (phdr->p_memsz > phdr->p_filesz) { in read_elf32()
563 loadaddr += phdr->p_filesz; in read_elf32()
567 phdr->p_memsz - phdr->p_filesz); in read_elf32()
571 phdr->p_memsz - phdr->p_filesz); in read_elf32()
575 phdr->p_memsz - phdr->p_filesz); in read_elf32()
579 if (phdr->p_flags & PF_X) { in read_elf32()
581 (caddr_t)(uintptr_t)phdr->p_vaddr, in read_elf32()
582 phdr->p_memsz); in read_elf32()
584 } else if (phdr->p_type == PT_INTERP) { in read_elf32()
589 if (lseek(fd, phdr->p_offset, 0) == -1) { in read_elf32()
595 if (xread(fd, dlname, phdr->p_filesz) != in read_elf32()
596 phdr->p_filesz || in read_elf32()
597 dlname[phdr->p_filesz - 1] != '\0') in read_elf32()
599 } else if (phdr->p_type == PT_DYNAMIC) { in read_elf32()
600 dynamic = phdr->p_vaddr; in read_elf32()
708 kmem_free(nhdr, phdr->p_filesz); in read_elf32()
727 Elf64_Phdr *phdr; /* program header */ in read_elf64() local
786 phdr = (Elf64_Phdr *)(allphdrs + elfhdrp->e_phentsize * i); in read_elf64()
787 if (phdr->p_type != PT_NOTE) in read_elf64()
791 (u_longlong_t)phdr->p_filesz); in read_elf64()
793 if ((note_buf = kmem_alloc(phdr->p_filesz, 0)) == NULL) in read_elf64()
797 (u_longlong_t)phdr->p_offset); in read_elf64()
798 if (lseek(fd, phdr->p_offset, 0) == -1) in read_elf64()
802 (u_longlong_t)phdr->p_filesz, (void *)nhdr); in read_elf64()
805 if (xread(fd, (caddr_t)nhdr, phdr->p_filesz) != phdr->p_filesz) in read_elf64()
833 } while (offset < phdr->p_filesz); in read_elf64()
835 kmem_free(note_buf, phdr->p_filesz); in read_elf64()
845 phdr = (Elf64_Phdr *)(allphdrs + elfhdrp->e_phentsize * i); in read_elf64()
850 (u_longlong_t)phdr->p_offset, in read_elf64()
851 (u_longlong_t)phdr->p_vaddr); in read_elf64()
853 (u_longlong_t)phdr->p_memsz, in read_elf64()
854 (u_longlong_t)phdr->p_filesz); in read_elf64()
856 phdr->p_type, phdr->p_flags); in read_elf64()
858 if (phdr->p_type == PT_LOAD) { in read_elf64()
861 (u_longlong_t)phdr->p_offset); in read_elf64()
862 if (lseek(fd, phdr->p_offset, 0) == -1) in read_elf64()
865 if (phdr->p_flags == (PF_R | PF_W) && in read_elf64()
866 phdr->p_vaddr == 0) { in read_elf64()
879 (ADDR_XTND(kmem_alloc(phdr->p_memsz, 0)))) in read_elf64()
883 kmem_alloc(phdr->p_memsz, 0)) == NULL) in read_elf64()
891 phdr->p_vaddr = loadaddr; in read_elf64()
895 (u_longlong_t)phdr->p_filesz); in read_elf64()
900 loadaddr = phdr->p_vaddr; in read_elf64()
903 size = roundup(phdr->p_memsz + off, in read_elf64()
908 size = phdr->p_memsz; in read_elf64()
914 if (phdr->p_flags & PF_W) in read_elf64()
915 dhdr = phdr; in read_elf64()
917 thdr = phdr; in read_elf64()
943 (u_longlong_t)phdr->p_filesz, in read_elf64()
947 loadaddr, phdr->p_filesz) != phdr->p_filesz) in read_elf64()
951 if (phdr->p_memsz > phdr->p_filesz) { in read_elf64()
952 loadaddr += phdr->p_filesz; in read_elf64()
956 (u_longlong_t)(phdr->p_memsz - in read_elf64()
957 phdr->p_filesz)); in read_elf64()
961 phdr->p_memsz - phdr->p_filesz); in read_elf64()
965 (u_longlong_t)(phdr->p_memsz - in read_elf64()
966 phdr->p_filesz)); in read_elf64()
970 if (phdr->p_flags & PF_X) in read_elf64()
972 phdr->p_vaddr, phdr->p_memsz); in read_elf64()
974 } else if (phdr->p_type == PT_INTERP) { in read_elf64()
979 if (lseek(fd, phdr->p_offset, 0) == -1) { in read_elf64()
985 if (xread(fd, dlname, phdr->p_filesz) != in read_elf64()
986 phdr->p_filesz || in read_elf64()
987 dlname[phdr->p_filesz - 1] != '\0') in read_elf64()
989 } else if (phdr->p_type == PT_DYNAMIC) { in read_elf64()
990 dynamic = phdr->p_vaddr; in read_elf64()
1089 kmem_free(nhdr, phdr->p_filesz); in read_elf64()