Lines Matching defs:elf

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