Lines Matching full:ef

200 static int	relocate_file(elf_file_t ef);
221 link_elf_protect_range(elf_file_t ef, vm_offset_t start, vm_offset_t end, in link_elf_protect_range() argument
226 KASSERT(start <= end && start >= (vm_offset_t)ef->address && in link_elf_protect_range()
227 end <= round_page((vm_offset_t)ef->address + ef->lf.size), in link_elf_protect_range()
233 if (ef->preloaded) { in link_elf_protect_range()
253 link_elf_protect(elf_file_t ef) in link_elf_protect() argument
265 gapprot = ef->preloaded ? VM_PROT_RW : VM_PROT_READ; in link_elf_protect()
267 start = end = (vm_offset_t)ef->address; in link_elf_protect()
269 for (i = 0; i < ef->nprogtab; i++) { in link_elf_protect()
274 if (ef->progtab[i].name != NULL && ( in link_elf_protect()
276 strcmp(ef->progtab[i].name, VNET_SETNAME) == 0 || in link_elf_protect()
278 strcmp(ef->progtab[i].name, DPCPU_SETNAME) == 0)) in link_elf_protect()
281 segstart = trunc_page((vm_offset_t)ef->progtab[i].addr); in link_elf_protect()
282 segend = round_page((vm_offset_t)ef->progtab[i].addr + in link_elf_protect()
283 ef->progtab[i].size); in link_elf_protect()
285 if ((ef->progtab[i].flags & SHF_WRITE) != 0) in link_elf_protect()
287 if ((ef->progtab[i].flags & SHF_EXECINSTR) != 0) in link_elf_protect()
297 link_elf_protect_range(ef, start, end, prot); in link_elf_protect()
298 link_elf_protect_range(ef, end, segstart, gapprot); in link_elf_protect()
309 link_elf_protect_range(ef, start, segstart, prot); in link_elf_protect()
321 link_elf_protect_range(ef, start, segstart, prot); in link_elf_protect()
322 link_elf_protect_range(ef, segstart, end, in link_elf_protect()
338 link_elf_protect_range(ef, start, end, prot); in link_elf_protect()
339 link_elf_protect_range(ef, end, in link_elf_protect()
340 round_page((vm_offset_t)ef->address + ef->lf.size), gapprot); in link_elf_protect()
352 elf_file_t ef; in link_elf_link_preload() local
379 ef = (elf_file_t)lf; in link_elf_link_preload()
380 ef->preloaded = 1; in link_elf_link_preload()
381 ef->address = *(caddr_t *)baseptr; in link_elf_link_preload()
394 ef->e_shdr = shdr; in link_elf_link_preload()
411 ef->nprogtab++; in link_elf_link_preload()
424 ef->nreltab++; in link_elf_link_preload()
429 ef->nrelatab++; in link_elf_link_preload()
435 if (ef->nprogtab == 0 || symstrindex < 0 || in link_elf_link_preload()
446 if (ef->nprogtab != 0) in link_elf_link_preload()
447 ef->progtab = malloc(ef->nprogtab * sizeof(*ef->progtab), in link_elf_link_preload()
449 if (ef->nreltab != 0) in link_elf_link_preload()
450 ef->reltab = malloc(ef->nreltab * sizeof(*ef->reltab), in link_elf_link_preload()
452 if (ef->nrelatab != 0) in link_elf_link_preload()
453 ef->relatab = malloc(ef->nrelatab * sizeof(*ef->relatab), in link_elf_link_preload()
455 if ((ef->nprogtab != 0 && ef->progtab == NULL) || in link_elf_link_preload()
456 (ef->nreltab != 0 && ef->reltab == NULL) || in link_elf_link_preload()
457 (ef->nrelatab != 0 && ef->relatab == NULL)) { in link_elf_link_preload()
471 (Elf_Addr)ef->address; in link_elf_link_preload()
474 ef->ddbsymcnt = shdr[symtabindex].sh_size / sizeof(Elf_Sym); in link_elf_link_preload()
475 ef->ddbsymtab = (Elf_Sym *)shdr[symtabindex].sh_addr; in link_elf_link_preload()
476 ef->ddbstrcnt = shdr[symstrindex].sh_size; in link_elf_link_preload()
477 ef->ddbstrtab = (char *)shdr[symstrindex].sh_addr; in link_elf_link_preload()
478 ef->shstrcnt = shdr[shstrindex].sh_size; in link_elf_link_preload()
479 ef->shstrtab = (char *)shdr[shstrindex].sh_addr; in link_elf_link_preload()
496 ef->progtab[pb].addr = ef->progtab[pb].origaddr = in link_elf_link_preload()
499 ef->progtab[pb].name = "<<PROGBITS>>"; in link_elf_link_preload()
502 ef->progtab[pb].name = "<<UNWIND>>"; in link_elf_link_preload()
505 ef->progtab[pb].name = "<<INIT_ARRAY>>"; in link_elf_link_preload()
507 ef->progtab[pb].name = "<<FINI_ARRAY>>"; in link_elf_link_preload()
509 ef->progtab[pb].name = "<<NOBITS>>"; in link_elf_link_preload()
510 ef->progtab[pb].size = shdr[i].sh_size; in link_elf_link_preload()
511 ef->progtab[pb].flags = shdr[i].sh_flags; in link_elf_link_preload()
512 ef->progtab[pb].sec = i; in link_elf_link_preload()
513 if (ef->shstrtab && shdr[i].sh_name != 0) in link_elf_link_preload()
514 ef->progtab[pb].name = in link_elf_link_preload()
515 ef->shstrtab + shdr[i].sh_name; in link_elf_link_preload()
516 if (ef->progtab[pb].name != NULL && in link_elf_link_preload()
517 !strcmp(ef->progtab[pb].name, DPCPU_SETNAME)) { in link_elf_link_preload()
530 memcpy(dpcpu, ef->progtab[pb].addr, in link_elf_link_preload()
531 ef->progtab[pb].size); in link_elf_link_preload()
533 ef->progtab[pb].addr = dpcpu; in link_elf_link_preload()
535 } else if (ef->progtab[pb].name != NULL && in link_elf_link_preload()
536 !strcmp(ef->progtab[pb].name, VNET_SETNAME)) { in link_elf_link_preload()
549 memcpy(vnet_data, ef->progtab[pb].addr, in link_elf_link_preload()
550 ef->progtab[pb].size); in link_elf_link_preload()
551 ef->progtab[pb].addr = vnet_data; in link_elf_link_preload()
552 vnet_save_init(ef->progtab[pb].addr, in link_elf_link_preload()
553 ef->progtab[pb].size); in link_elf_link_preload()
555 } else if ((ef->progtab[pb].name != NULL && in link_elf_link_preload()
556 strcmp(ef->progtab[pb].name, ".ctors") == 0) || in link_elf_link_preload()
563 lf->ctors_addr = ef->progtab[pb].addr; in link_elf_link_preload()
566 } else if ((ef->progtab[pb].name != NULL && in link_elf_link_preload()
567 strcmp(ef->progtab[pb].name, ".dtors") == 0) || in link_elf_link_preload()
574 lf->dtors_addr = ef->progtab[pb].addr; in link_elf_link_preload()
580 for (j = 0; j < ef->ddbsymcnt; j++) { in link_elf_link_preload()
581 es = &ef->ddbsymtab[j]; in link_elf_link_preload()
584 es->st_value += (Elf_Addr)ef->progtab[pb].addr; in link_elf_link_preload()
591 ef->reltab[rl].rel = (Elf_Rel *)shdr[i].sh_addr; in link_elf_link_preload()
592 ef->reltab[rl].nrel = shdr[i].sh_size / sizeof(Elf_Rel); in link_elf_link_preload()
593 ef->reltab[rl].sec = shdr[i].sh_info; in link_elf_link_preload()
599 ef->relatab[ra].rela = (Elf_Rela *)shdr[i].sh_addr; in link_elf_link_preload()
600 ef->relatab[ra].nrela = in link_elf_link_preload()
602 ef->relatab[ra].sec = shdr[i].sh_info; in link_elf_link_preload()
607 if (pb != ef->nprogtab) { in link_elf_link_preload()
612 if (rl != ef->nreltab) { in link_elf_link_preload()
617 if (ra != ef->nrelatab) { in link_elf_link_preload()
628 link_elf_protect_range(ef, (vm_offset_t)ef->address, in link_elf_link_preload()
629 round_page((vm_offset_t)ef->address + ef->lf.size), VM_PROT_ALL); in link_elf_link_preload()
687 elf_file_t ef; in link_elf_link_preload_finish() local
690 ef = (elf_file_t)lf; in link_elf_link_preload_finish()
691 error = relocate_file(ef); in link_elf_link_preload_finish()
708 link_elf_protect(ef); in link_elf_link_preload_finish()
729 elf_file_t ef; in link_elf_load_file() local
807 ef = (elf_file_t) lf; in link_elf_load_file()
808 ef->nprogtab = 0; in link_elf_load_file()
809 ef->e_shdr = 0; in link_elf_load_file()
810 ef->nreltab = 0; in link_elf_load_file()
811 ef->nrelatab = 0; in link_elf_load_file()
821 ef->e_shdr = shdr; in link_elf_load_file()
849 ef->nprogtab++; in link_elf_load_file()
863 ef->nreltab++; in link_elf_load_file()
868 ef->nrelatab++; in link_elf_load_file()
874 if (ef->nprogtab == 0) { in link_elf_load_file()
894 if (ef->nprogtab != 0) in link_elf_load_file()
895 ef->progtab = malloc(ef->nprogtab * sizeof(*ef->progtab), in link_elf_load_file()
897 if (ef->nreltab != 0) in link_elf_load_file()
898 ef->reltab = malloc(ef->nreltab * sizeof(*ef->reltab), in link_elf_load_file()
900 if (ef->nrelatab != 0) in link_elf_load_file()
901 ef->relatab = malloc(ef->nrelatab * sizeof(*ef->relatab), in link_elf_load_file()
910 ef->ddbsymcnt = shdr[symtabindex].sh_size / sizeof(Elf_Sym); in link_elf_load_file()
911 ef->ddbsymtab = malloc(shdr[symtabindex].sh_size, M_LINKER, M_WAITOK); in link_elf_load_file()
912 error = vn_rdwr(UIO_READ, nd->ni_vp, (void *)ef->ddbsymtab, in link_elf_load_file()
924 ef->ddbstrcnt = shdr[symstrindex].sh_size; in link_elf_load_file()
925 ef->ddbstrtab = malloc(shdr[symstrindex].sh_size, M_LINKER, M_WAITOK); in link_elf_load_file()
926 error = vn_rdwr(UIO_READ, nd->ni_vp, ef->ddbstrtab, in link_elf_load_file()
942 ef->shstrcnt = shdr[shstrindex].sh_size; in link_elf_load_file()
943 ef->shstrtab = malloc(shdr[shstrindex].sh_size, M_LINKER, in link_elf_load_file()
945 error = vn_rdwr(UIO_READ, nd->ni_vp, ef->shstrtab, in link_elf_load_file()
985 ef->object = vm_pager_allocate(OBJT_PHYS, NULL, round_page(mapsize), in link_elf_load_file()
987 if (ef->object == NULL) { in link_elf_load_file()
992 vm_object_color(ef->object, 0); in link_elf_load_file()
1007 error = vm_map_find(kernel_map, ef->object, 0, &mapbase, in link_elf_load_file()
1011 vm_object_deallocate(ef->object); in link_elf_load_file()
1012 ef->object = NULL; in link_elf_load_file()
1027 lf->address = ef->address = (caddr_t)mapbase; in link_elf_load_file()
1054 if (ef->shstrtab != NULL && shdr[i].sh_name != 0) { in link_elf_load_file()
1055 ef->progtab[pb].name = in link_elf_load_file()
1056 ef->shstrtab + shdr[i].sh_name; in link_elf_load_file()
1057 if (!strcmp(ef->progtab[pb].name, ".ctors") || in link_elf_load_file()
1069 } else if (!strcmp(ef->progtab[pb].name, in link_elf_load_file()
1084 ef->progtab[pb].name = "<<PROGBITS>>"; in link_elf_load_file()
1087 ef->progtab[pb].name = "<<UNWIND>>"; in link_elf_load_file()
1090 ef->progtab[pb].name = "<<NOBITS>>"; in link_elf_load_file()
1091 if (ef->progtab[pb].name != NULL && in link_elf_load_file()
1092 !strcmp(ef->progtab[pb].name, DPCPU_SETNAME)) { in link_elf_load_file()
1093 ef->progtab[pb].origaddr = in link_elf_load_file()
1095 ef->progtab[pb].addr = in link_elf_load_file()
1097 if (ef->progtab[pb].addr == NULL) { in link_elf_load_file()
1106 else if (ef->progtab[pb].name != NULL && in link_elf_load_file()
1107 !strcmp(ef->progtab[pb].name, VNET_SETNAME)) { in link_elf_load_file()
1108 ef->progtab[pb].origaddr = in link_elf_load_file()
1110 ef->progtab[pb].addr = in link_elf_load_file()
1112 if (ef->progtab[pb].addr == NULL) { in link_elf_load_file()
1122 ef->progtab[pb].addr = in link_elf_load_file()
1124 if (ef->progtab[pb].addr == NULL) { in link_elf_load_file()
1128 ef->progtab[pb].size = shdr[i].sh_size; in link_elf_load_file()
1129 ef->progtab[pb].flags = shdr[i].sh_flags; in link_elf_load_file()
1130 ef->progtab[pb].sec = i; in link_elf_load_file()
1137 ef->progtab[pb].addr, in link_elf_load_file()
1148 if (ef->progtab[pb].addr != (void *)mapbase && in link_elf_load_file()
1149 !strcmp(ef->progtab[pb].name, DPCPU_SETNAME)) in link_elf_load_file()
1150 dpcpu_copy(ef->progtab[pb].addr, in link_elf_load_file()
1153 bzero(ef->progtab[pb].addr, shdr[i].sh_size); in link_elf_load_file()
1156 if (ef->progtab[pb].addr != (void *)mapbase && in link_elf_load_file()
1157 strcmp(ef->progtab[pb].name, VNET_SETNAME) == 0) in link_elf_load_file()
1158 vnet_save_init(ef->progtab[pb].addr, in link_elf_load_file()
1159 ef->progtab[pb].size); in link_elf_load_file()
1162 for (j = 0; j < ef->ddbsymcnt; j++) { in link_elf_load_file()
1163 es = &ef->ddbsymtab[j]; in link_elf_load_file()
1166 es->st_value += (Elf_Addr)ef->progtab[pb].addr; in link_elf_load_file()
1174 ef->reltab[rl].rel = malloc(shdr[i].sh_size, M_LINKER, in link_elf_load_file()
1176 ef->reltab[rl].nrel = shdr[i].sh_size / sizeof(Elf_Rel); in link_elf_load_file()
1177 ef->reltab[rl].sec = shdr[i].sh_info; in link_elf_load_file()
1179 (void *)ef->reltab[rl].rel, in link_elf_load_file()
1194 ef->relatab[ra].rela = malloc(shdr[i].sh_size, M_LINKER, in link_elf_load_file()
1196 ef->relatab[ra].nrela = in link_elf_load_file()
1198 ef->relatab[ra].sec = shdr[i].sh_info; in link_elf_load_file()
1200 (void *)ef->relatab[ra].rela, in link_elf_load_file()
1214 if (pb != ef->nprogtab) { in link_elf_load_file()
1219 if (rl != ef->nreltab) { in link_elf_load_file()
1224 if (ra != ef->nrelatab) { in link_elf_load_file()
1229 if (mapbase != (vm_offset_t)ef->address + mapsize) { in link_elf_load_file()
1233 (u_long)mapbase, ef->address, (u_long)mapsize, in link_elf_load_file()
1234 (u_long)(vm_offset_t)ef->address + mapsize); in link_elf_load_file()
1252 error = relocate_file(ef); in link_elf_load_file()
1268 link_elf_protect(ef); in link_elf_load_file()
1286 elf_file_t ef = (elf_file_t) file; in link_elf_unload_file() local
1294 if (ef->progtab) { in link_elf_unload_file()
1295 for (i = 0; i < ef->nprogtab; i++) { in link_elf_unload_file()
1296 if (ef->progtab[i].size == 0) in link_elf_unload_file()
1298 if (ef->progtab[i].name == NULL) in link_elf_unload_file()
1300 if (!strcmp(ef->progtab[i].name, DPCPU_SETNAME)) in link_elf_unload_file()
1301 dpcpu_free(ef->progtab[i].addr, in link_elf_unload_file()
1302 ef->progtab[i].size); in link_elf_unload_file()
1304 else if (!strcmp(ef->progtab[i].name, VNET_SETNAME)) in link_elf_unload_file()
1305 vnet_data_free(ef->progtab[i].addr, in link_elf_unload_file()
1306 ef->progtab[i].size); in link_elf_unload_file()
1310 if (ef->preloaded) { in link_elf_unload_file()
1311 free(ef->reltab, M_LINKER); in link_elf_unload_file()
1312 free(ef->relatab, M_LINKER); in link_elf_unload_file()
1313 free(ef->progtab, M_LINKER); in link_elf_unload_file()
1314 free(ef->ctftab, M_LINKER); in link_elf_unload_file()
1315 free(ef->ctfoff, M_LINKER); in link_elf_unload_file()
1316 free(ef->typoff, M_LINKER); in link_elf_unload_file()
1322 for (i = 0; i < ef->nreltab; i++) in link_elf_unload_file()
1323 free(ef->reltab[i].rel, M_LINKER); in link_elf_unload_file()
1324 for (i = 0; i < ef->nrelatab; i++) in link_elf_unload_file()
1325 free(ef->relatab[i].rela, M_LINKER); in link_elf_unload_file()
1326 free(ef->reltab, M_LINKER); in link_elf_unload_file()
1327 free(ef->relatab, M_LINKER); in link_elf_unload_file()
1328 free(ef->progtab, M_LINKER); in link_elf_unload_file()
1330 if (ef->object != NULL) in link_elf_unload_file()
1331 vm_map_remove(kernel_map, (vm_offset_t)ef->address, in link_elf_unload_file()
1332 (vm_offset_t)ef->address + ptoa(ef->object->size)); in link_elf_unload_file()
1333 free(ef->e_shdr, M_LINKER); in link_elf_unload_file()
1334 free(ef->ddbsymtab, M_LINKER); in link_elf_unload_file()
1335 free(ef->ddbstrtab, M_LINKER); in link_elf_unload_file()
1336 free(ef->shstrtab, M_LINKER); in link_elf_unload_file()
1337 free(ef->ctftab, M_LINKER); in link_elf_unload_file()
1338 free(ef->ctfoff, M_LINKER); in link_elf_unload_file()
1339 free(ef->typoff, M_LINKER); in link_elf_unload_file()
1343 symbol_name(elf_file_t ef, Elf_Size r_info) in symbol_name() argument
1348 ref = ef->ddbsymtab + ELF_R_SYM(r_info); in symbol_name()
1349 return ef->ddbstrtab + ref->st_name; in symbol_name()
1355 findbase(elf_file_t ef, int sec) in findbase() argument
1360 for (i = 0; i < ef->nprogtab; i++) { in findbase()
1361 if (sec == ef->progtab[i].sec) { in findbase()
1362 base = (Elf_Addr)ef->progtab[i].addr; in findbase()
1370 relocate_file1(elf_file_t ef, bool ifuncs) in relocate_file1() argument
1383 for (i = 0; i < ef->nreltab; i++) { in relocate_file1()
1384 rel = ef->reltab[i].rel; in relocate_file1()
1386 link_elf_error(ef->lf.filename, "lost a reltab!"); in relocate_file1()
1389 rellim = rel + ef->reltab[i].nrel; in relocate_file1()
1390 base = findbase(ef, ef->reltab[i].sec); in relocate_file1()
1392 link_elf_error(ef->lf.filename, "lost base for reltab"); in relocate_file1()
1397 if (symidx >= ef->ddbsymcnt) in relocate_file1()
1399 sym = ef->ddbsymtab + symidx; in relocate_file1()
1406 if (elf_reloc(&ef->lf, base, rel, ELF_RELOC_REL, in relocate_file1()
1408 symname = symbol_name(ef, rel->r_info); in relocate_file1()
1417 for (i = 0; i < ef->nrelatab; i++) { in relocate_file1()
1418 rela = ef->relatab[i].rela; in relocate_file1()
1420 link_elf_error(ef->lf.filename, "lost a relatab!"); in relocate_file1()
1423 relalim = rela + ef->relatab[i].nrela; in relocate_file1()
1424 base = findbase(ef, ef->relatab[i].sec); in relocate_file1()
1426 link_elf_error(ef->lf.filename, in relocate_file1()
1432 if (symidx >= ef->ddbsymcnt) in relocate_file1()
1434 sym = ef->ddbsymtab + symidx; in relocate_file1()
1441 if (elf_reloc(&ef->lf, base, rela, ELF_RELOC_RELA, in relocate_file1()
1443 symname = symbol_name(ef, rela->r_info); in relocate_file1()
1456 elf_obj_cleanup_globals_cache(ef); in relocate_file1()
1462 relocate_file(elf_file_t ef) in relocate_file() argument
1466 error = relocate_file1(ef, false); in relocate_file()
1468 error = relocate_file1(ef, true); in relocate_file()
1476 elf_file_t ef = (elf_file_t)lf; in link_elf_lookup_symbol1() local
1481 for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { in link_elf_lookup_symbol1()
1482 strp = ef->ddbstrtab + symp->st_name; in link_elf_lookup_symbol1()
1545 elf_file_t ef; in link_elf_symbol_values1() local
1550 ef = (elf_file_t) lf; in link_elf_symbol_values1()
1553 if (es >= ef->ddbsymtab && es < (ef->ddbsymtab + ef->ddbsymcnt)) { in link_elf_symbol_values1()
1556 symval->name = ef->ddbstrtab + es->st_name; in link_elf_symbol_values1()
1588 elf_file_t ef = (elf_file_t)lf; in link_elf_search_symbol() local
1596 for (i = 0, es = ef->ddbsymtab; i < ef->ddbsymcnt; i++, es++) { in link_elf_search_symbol()
1627 elf_file_t ef = (elf_file_t)lf; in link_elf_lookup_set() local
1632 for (i = 0; i < ef->nprogtab; i++) { in link_elf_lookup_set()
1633 if ((strncmp(ef->progtab[i].name, "set_", 4) == 0) && in link_elf_lookup_set()
1634 strcmp(ef->progtab[i].name + 4, name) == 0) { in link_elf_lookup_set()
1635 start = (void **)ef->progtab[i].addr; in link_elf_lookup_set()
1636 stop = (void **)((char *)ef->progtab[i].addr + in link_elf_lookup_set()
1637 ef->progtab[i].size); in link_elf_lookup_set()
1655 elf_file_t ef = (elf_file_t)file; in link_elf_each_function_name() local
1660 for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { in link_elf_each_function_name()
1664 error = callback(ef->ddbstrtab + symp->st_name, opaque); in link_elf_each_function_name()
1677 elf_file_t ef = (elf_file_t)file; in link_elf_each_function_nameval() local
1682 for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { in link_elf_each_function_nameval()
1698 elf_obj_cleanup_globals_cache(elf_file_t ef) in elf_obj_cleanup_globals_cache() argument
1703 for (i = 0; i < ef->ddbsymcnt; i++) { in elf_obj_cleanup_globals_cache()
1704 sym = ef->ddbsymtab + i; in elf_obj_cleanup_globals_cache()
1722 elf_file_t ef = (elf_file_t)lf; in elf_obj_lookup() local
1728 if (symidx >= ef->ddbsymcnt) { in elf_obj_lookup()
1733 sym = ef->ddbsymtab + symidx; in elf_obj_lookup()
1754 symbol = ef->ddbstrtab + sym->st_name; in elf_obj_lookup()
1791 link_elf_fix_link_set(elf_file_t ef) in link_elf_fix_link_set() argument
1803 symidx < ef->ddbsymcnt; symidx++) { in link_elf_fix_link_set()
1804 sym = ef->ddbsymtab + symidx; in link_elf_fix_link_set()
1808 sym_name = ef->ddbstrtab + sym->st_name; in link_elf_fix_link_set()
1820 for (i = 0; i < ef->nprogtab; i++) { in link_elf_fix_link_set()
1821 if (strcmp(ef->progtab[i].name, linkset_name) == 0) { in link_elf_fix_link_set()
1822 startp = (Elf_Addr)ef->progtab[i].addr; in link_elf_fix_link_set()
1823 stopp = (Elf_Addr)(startp + ef->progtab[i].size); in link_elf_fix_link_set()
1827 if (i == ef->nprogtab) in link_elf_fix_link_set()
1838 elf_file_t ef = (elf_file_t)lf; in link_elf_reloc_local() local
1848 link_elf_fix_link_set(ef); in link_elf_reloc_local()
1851 for (i = 0; i < ef->nreltab; i++) { in link_elf_reloc_local()
1852 rel = ef->reltab[i].rel; in link_elf_reloc_local()
1854 link_elf_error(ef->lf.filename, "lost a reltab"); in link_elf_reloc_local()
1857 rellim = rel + ef->reltab[i].nrel; in link_elf_reloc_local()
1858 base = findbase(ef, ef->reltab[i].sec); in link_elf_reloc_local()
1860 link_elf_error(ef->lf.filename, "lost base for reltab"); in link_elf_reloc_local()
1865 if (symidx >= ef->ddbsymcnt) in link_elf_reloc_local()
1867 sym = ef->ddbsymtab + symidx; in link_elf_reloc_local()
1881 for (i = 0; i < ef->nrelatab; i++) { in link_elf_reloc_local()
1882 rela = ef->relatab[i].rela; in link_elf_reloc_local()
1884 link_elf_error(ef->lf.filename, "lost a relatab!"); in link_elf_reloc_local()
1887 relalim = rela + ef->relatab[i].nrela; in link_elf_reloc_local()
1888 base = findbase(ef, ef->relatab[i].sec); in link_elf_reloc_local()
1890 link_elf_error(ef->lf.filename, "lost base for reltab"); in link_elf_reloc_local()
1895 if (symidx >= ef->ddbsymcnt) in link_elf_reloc_local()
1897 sym = ef->ddbsymtab + symidx; in link_elf_reloc_local()
1915 elf_file_t ef = (elf_file_t)lf; in link_elf_symtab_get() local
1917 *symtab = ef->ddbsymtab; in link_elf_symtab_get()
1920 return (ef->ddbsymcnt); in link_elf_symtab_get()
1926 elf_file_t ef = (elf_file_t)lf; in link_elf_strtab_get() local
1928 *strtab = ef->ddbstrtab; in link_elf_strtab_get()
1931 return (ef->ddbstrcnt); in link_elf_strtab_get()
1938 elf_file_t ef = (elf_file_t) lf; in link_elf_propagate_vnets() local
1940 if (ef->progtab) { in link_elf_propagate_vnets()
1941 for (int i = 0; i < ef->nprogtab; i++) { in link_elf_propagate_vnets()
1942 if (ef->progtab[i].size == 0) in link_elf_propagate_vnets()
1944 if (ef->progtab[i].name == NULL) in link_elf_propagate_vnets()
1946 if (strcmp(ef->progtab[i].name, VNET_SETNAME) == 0) { in link_elf_propagate_vnets()
1947 vnet_data_copy(ef->progtab[i].addr, in link_elf_propagate_vnets()
1948 ef->progtab[i].size); in link_elf_propagate_vnets()