Lines Matching defs:ef

66 #define VECTX_HANDLE(ef) (ef)->vctx
68 #define VECTX_HANDLE(ef) (ef)->fd
71 static int __elfN(obj_loadimage)(struct preloaded_file *mp, elf_file_t ef,
73 static int __elfN(obj_lookup_set)(struct preloaded_file *mp, elf_file_t ef,
75 static int __elfN(obj_reloc_ptr)(struct preloaded_file *mp, elf_file_t ef,
78 elf_file_t ef);
79 static Elf_Addr __elfN(obj_symaddr)(struct elf_file *ef, Elf_Size symidx);
91 struct elf_file ef;
97 bzero(&ef, sizeof(struct elf_file));
104 if ((ef.fd = open(filename, O_RDONLY)) == -1)
110 ef.vctx = vectx_open(ef.fd, filename, 0L, NULL, &verror, __func__);
113 close(ef.fd);
114 free(ef.vctx);
120 hdr = &ef.hdr;
121 bytes_read = VECTX_READ(VECTX_HANDLE(&ef), hdr, sizeof(*hdr));
149 if (verify_file(ef.fd, filename, bytes_read, VE_MUST, __func__) < 0) {
184 fp->f_size = __elfN(obj_loadimage)(fp, &ef, dest);
202 if (!err && ef.vctx) {
205 verror = vectx_close(ef.vctx, VE_MUST, __func__);
212 close(ef.fd);
213 if (ef.e_shdr != NULL)
214 free(ef.e_shdr);
224 __elfN(obj_loadimage)(struct preloaded_file *fp, elf_file_t ef, uint64_t off)
233 hdr = &ef->hdr;
234 ef->off = (vm_offset_t)off;
238 shdr = alloc_pread(VECTX_HANDLE(ef), (off_t)hdr->e_shoff, shdrbytes);
244 ef->e_shdr = shdr;
279 ef->symtabindex = i;
288 lastaddr = roundup(lastaddr, shdr[ef->symtabindex].sh_addralign);
289 shdr[ef->symtabindex].sh_addr = (Elf_Addr)lastaddr;
290 lastaddr += shdr[ef->symtabindex].sh_size;
292 symstrindex = shdr[ef->symtabindex].sh_link;
310 ef->shstrindex = hdr->e_shstrndx;
311 lastaddr = roundup(lastaddr, shdr[ef->shstrindex].sh_addralign);
312 shdr[ef->shstrindex].sh_addr = (Elf_Addr)lastaddr;
313 lastaddr += shdr[ef->shstrindex].sh_size;
359 if (kern_pread(VECTX_HANDLE(ef), (vm_offset_t)cshdr->sh_addr,
369 res = __elfN(obj_parse_modmetadata)(fp, ef);
395 __elfN(obj_parse_modmetadata)(struct preloaded_file *fp, elf_file_t ef)
407 if (__elfN(obj_lookup_set)(fp, ef, "modmetadata_set", &p, &p_stop,
414 error = __elfN(obj_reloc_ptr)(fp, ef, p, &v, sizeof(v));
419 error = __elfN(obj_reloc_ptr)(fp, ef, v, &md64, sizeof(md64));
428 error = __elfN(obj_reloc_ptr)(fp, ef, v, &md, sizeof(md));
467 __elfN(obj_lookup_set)(struct preloaded_file *fp, elf_file_t ef,
476 hdr = &ef->hdr;
477 shdr = ef->e_shdr;
478 shstrtab = shdr[ef->shstrindex].sh_addr;
505 __elfN(obj_reloc_ptr)(struct preloaded_file *mp, elf_file_t ef, Elf_Addr p,
516 hdr = &ef->hdr;
517 shdr = ef->e_shdr;
537 error = __elfN(reloc)(ef, __elfN(obj_symaddr),
550 error = __elfN(reloc)(ef, __elfN(obj_symaddr),
563 __elfN(obj_symaddr)(struct elf_file *ef, Elf_Size symidx)
568 if (symidx >= ef->e_shdr[ef->symtabindex].sh_size / sizeof(Elf_Sym))
570 COPYOUT(ef->e_shdr[ef->symtabindex].sh_addr + symidx * sizeof(Elf_Sym),
572 if (sym.st_shndx == SHN_UNDEF || sym.st_shndx >= ef->hdr.e_shnum)
574 base = ef->e_shdr[sym.st_shndx].sh_addr;