Lines Matching refs:elf
112 _elf_slide(Elf * elf) in _elf_slide() argument
114 NOTE(ASSUMING_PROTECTED(*elf)) in _elf_slide()
115 Elf *par = elf->ed_parent; in _elf_slide()
118 register char *src = elf->ed_ident; in _elf_slide()
127 if (elf->ed_ident[EI_CLASS] == ELFCLASS64) in _elf_slide()
131 if ((sz = (size_t)(src - (char *)elf->ed_image) % szof) == 0) in _elf_slide()
134 elf->ed_ident -= sz; in _elf_slide()
135 elf->ed_memoff -= sz; in _elf_slide()
136 elf->ed_armem->m_slide = sz; in _elf_slide()
137 if (_elf_vm(par, elf->ed_memoff, sz + elf->ed_fsz) != OK_YES) in _elf_slide()
145 if ((elf->ed_vm == 0) && ((elf->ed_myflags & EDF_WRITE) == 0) && in _elf_slide()
146 ((elf->ed_myflags & EDF_MPROTECT) == 0)) { in _elf_slide()
147 if (mprotect((char *)elf->ed_image, elf->ed_imagesz, in _elf_slide()
152 elf->ed_myflags |= EDF_MPROTECT; in _elf_slide()
155 if (memmove((void *)dst, (const void *)src, elf->ed_fsz) != (void *)dst) in _elf_slide()
163 _elf_cook(Elf * elf) in _elf_cook() argument
165 NOTE(ASSUMING_PROTECTED(*elf)) in _elf_cook()
168 if (elf->ed_kind != ELF_K_ELF) in _elf_cook()
171 if ((elf->ed_status == ES_COOKED) || in _elf_cook()
172 ((elf->ed_myflags & EDF_READ) == 0)) in _elf_cook()
178 if (elf->ed_status == ES_FRESH && _elf_slide(elf) != 0) in _elf_cook()
181 if (elf->ed_status == ES_FROZEN) in _elf_cook()
193 if (elf->ed_ident[EI_CLASS] == ELFCLASS32) { in _elf_cook()
194 if (_elf32_ehdr(elf, inplace) != 0) in _elf_cook()
196 if (_elf32_phdr(elf, inplace) != 0) in _elf_cook()
198 if (_elf32_shdr(elf, inplace) != 0) in _elf_cook()
200 elf->ed_class = ELFCLASS32; in _elf_cook()
201 } else if (elf->ed_ident[EI_CLASS] == ELFCLASS64) { in _elf_cook()
202 if (_elf64_ehdr(elf, inplace) != 0) in _elf_cook()
204 if (_elf64_phdr(elf, inplace) != 0) in _elf_cook()
206 if (_elf64_shdr(elf, inplace) != 0) in _elf_cook()
208 elf->ed_class = ELFCLASS64; in _elf_cook()
215 if (elf->ed_myflags & EDF_PHALLOC) { in _elf_cook()
216 elf->ed_myflags &= ~EDF_PHALLOC; in _elf_cook()
217 free(elf->ed_phdr); in _elf_cook()
219 elf->ed_phdr = 0; in _elf_cook()
221 if (elf->ed_myflags & EDF_EHALLOC) { in _elf_cook()
222 elf->ed_myflags &= ~EDF_EHALLOC; in _elf_cook()
223 free(elf->ed_ehdr); in _elf_cook()
225 elf->ed_ehdr = 0; in _elf_cook()
234 Elf * elf = s->s_elf; in _elf_cookscn() local
236 if (elf->ed_class == ELFCLASS32) { in _elf_cookscn()
238 } else if (elf->ed_class == ELFCLASS64) { in _elf_cookscn()