Lines Matching refs:elf
92 _elf_prepscn(Elf *elf, size_t cnt) in _elf_prepscn() argument
94 NOTE(ASSUMING_PROTECTED(*elf)) in _elf_prepscn()
106 elf->ed_scntabsz = cnt; in _elf_prepscn()
108 elf->ed_hdscn = s; in _elf_prepscn()
111 s->s_elf = elf; in _elf_prepscn()
113 s->s_index = s - elf->ed_hdscn; in _elf_prepscn()
126 elf->ed_tlscn = --s; in _elf_prepscn()
135 s = elf->ed_hdscn; in _elf_prepscn()
148 Elf * elf; in _elf_cookscn()
166 elf = s->s_elf; in _elf_cookscn()
172 d->db_data.d_version = elf->ed_version; in _elf_cookscn()
174 d->db_data.d_type = _elf_mtype(elf, sh->sh_type, work); in _elf_cookscn()
177 fsz = elf_fsize(d->db_data.d_type, 1, elf->ed_version); in _elf_cookscn()
178 msz = _elf_msize(d->db_data.d_type, elf->ed_version); in _elf_cookscn()
219 _elf_ehdr(Elf * elf, int inplace) in _elf_ehdr() argument
221 NOTE(ASSUMING_PROTECTED(*elf)) in _elf_ehdr()
225 fsz = elf_fsize(ELF_T_EHDR, 1, elf->ed_version); in _elf_ehdr()
226 if (fsz > elf->ed_fsz) { in _elf_ehdr()
235 elf->ed_ehdr = (Ehdr *)elf->ed_ident; in _elf_ehdr()
236 elf->ed_status = ES_COOKED; in _elf_ehdr()
238 elf->ed_ehdr = malloc(sizeof (Ehdr)); in _elf_ehdr()
239 if (elf->ed_ehdr == 0) { in _elf_ehdr()
243 elf->ed_myflags |= EDF_EHALLOC; in _elf_ehdr()
252 src.d_buf = (Elf_Void *)elf->ed_ident; in _elf_ehdr()
255 src.d_version = elf->ed_version; in _elf_ehdr()
256 dst.d_buf = (Elf_Void *)elf->ed_ehdr; in _elf_ehdr()
260 if ((_elf_vm(elf, (size_t)0, fsz) != OK_YES) || in _elf_ehdr()
261 (elf_xlatetom(&dst, &src, elf->ed_encode) == 0)) { in _elf_ehdr()
262 if (elf->ed_myflags & EDF_EHALLOC) { in _elf_ehdr()
263 elf->ed_myflags &= ~EDF_EHALLOC; in _elf_ehdr()
264 free(elf->ed_ehdr); in _elf_ehdr()
266 elf->ed_ehdr = 0; in _elf_ehdr()
270 if (((Ehdr*)elf->ed_ehdr)->e_ident[EI_CLASS] != ELFCLASS) { in _elf_ehdr()
272 if (elf->ed_myflags & EDF_EHALLOC) { in _elf_ehdr()
273 elf->ed_myflags &= ~EDF_EHALLOC; in _elf_ehdr()
274 free(elf->ed_ehdr); in _elf_ehdr()
276 elf->ed_ehdr = 0; in _elf_ehdr()
280 if (((Ehdr*)elf->ed_ehdr)->e_version != elf->ed_version) { in _elf_ehdr()
282 if (elf->ed_myflags & EDF_EHALLOC) { in _elf_ehdr()
283 elf->ed_myflags &= ~EDF_EHALLOC; in _elf_ehdr()
284 free(elf->ed_ehdr); in _elf_ehdr()
286 elf->ed_ehdr = 0; in _elf_ehdr()
296 _elf_phdr(Elf * elf, int inplace) in _elf_phdr() argument
298 NOTE(ASSUMING_PROTECTED(*elf)) in _elf_phdr()
301 Ehdr * eh = elf->ed_ehdr; /* must be present */ in _elf_phdr()
307 fsz = elf_fsize(ELF_T_PHDR, 1, elf->ed_version); in _elf_phdr()
317 (elf->ed_fsz <= eh->e_phoff) || in _elf_phdr()
318 (elf->ed_fsz - eh->e_phoff < fsz)) { in _elf_phdr()
324 elf->ed_phdr = (Elf_Void *)(elf->ed_ident + eh->e_phoff); in _elf_phdr()
325 elf->ed_status = ES_COOKED; in _elf_phdr()
327 if ((elf->ed_phdr = malloc(msz)) == 0) { in _elf_phdr()
331 elf->ed_myflags |= EDF_PHALLOC; in _elf_phdr()
333 src.d_buf = (Elf_Void *)(elf->ed_ident + eh->e_phoff); in _elf_phdr()
336 src.d_version = elf->ed_version; in _elf_phdr()
337 dst.d_buf = elf->ed_phdr; in _elf_phdr()
340 if ((_elf_vm(elf, (size_t)eh->e_phoff, fsz) != OK_YES) || in _elf_phdr()
341 (elf_xlatetom(&dst, &src, elf->ed_encode) == 0)) { in _elf_phdr()
342 if (elf->ed_myflags & EDF_PHALLOC) { in _elf_phdr()
343 elf->ed_myflags &= ~EDF_PHALLOC; in _elf_phdr()
344 free(elf->ed_phdr); in _elf_phdr()
346 elf->ed_phdr = 0; in _elf_phdr()
349 elf->ed_phdrsz = msz; in _elf_phdr()
356 _elf_shdr(Elf * elf, int inplace) in _elf_shdr() argument
358 NOTE(ASSUMING_PROTECTED(*elf)) in _elf_shdr()
362 register Ehdr *eh = elf->ed_ehdr; /* must be present */ in _elf_shdr()
367 fsz = elf_fsize(ELF_T_SHDR, 1, elf->ed_version); in _elf_shdr()
381 (elf->ed_fsz <= eh->e_shoff) || in _elf_shdr()
382 (elf->ed_fsz - eh->e_shoff < fsz)) { in _elf_shdr()
386 src.d_buf = (Elf_Void *)(elf->ed_ident + eh->e_shoff); in _elf_shdr()
389 src.d_version = elf->ed_version; in _elf_shdr()
393 if ((_elf_vm(elf, (size_t)eh->e_shoff, fsz) != OK_YES) || in _elf_shdr()
394 (elf_xlatetom(&dst, &src, elf->ed_encode) == 0)) { in _elf_shdr()
403 (elf->ed_fsz <= eh->e_shoff) || in _elf_shdr()
404 (elf->ed_fsz - eh->e_shoff < fsz)) { in _elf_shdr()
412 elf->ed_shdr = (Shdr *)(elf->ed_ident + eh->e_shoff); in _elf_shdr()
413 elf->ed_status = ES_COOKED; in _elf_shdr()
415 if ((elf->ed_shdr = malloc(msz)) == 0) { in _elf_shdr()
419 elf->ed_myflags |= EDF_SHALLOC; in _elf_shdr()
421 src.d_buf = (Elf_Void *)(elf->ed_ident + eh->e_shoff); in _elf_shdr()
424 src.d_version = elf->ed_version; in _elf_shdr()
425 dst.d_buf = (Elf_Void *)elf->ed_shdr; in _elf_shdr()
428 if ((_elf_vm(elf, (size_t)eh->e_shoff, fsz) != OK_YES) || in _elf_shdr()
429 (elf_xlatetom(&dst, &src, elf->ed_encode) == 0) || in _elf_shdr()
430 (_elf_prepscn(elf, scncnt) != OK_YES)) { in _elf_shdr()
431 if (elf->ed_myflags & EDF_SHALLOC) { in _elf_shdr()
432 elf->ed_myflags &= ~EDF_SHALLOC; in _elf_shdr()
433 free(elf->ed_shdr); in _elf_shdr()
435 elf->ed_shdr = 0; in _elf_shdr()