Lines Matching refs:ef

199 static int	relocate_file(elf_file_t ef);
220 link_elf_protect_range(elf_file_t ef, vm_offset_t start, vm_offset_t end, in link_elf_protect_range() argument
225 KASSERT(start <= end && start >= (vm_offset_t)ef->address && in link_elf_protect_range()
226 end <= round_page((vm_offset_t)ef->address + ef->lf.size), in link_elf_protect_range()
232 if (ef->preloaded) { in link_elf_protect_range()
252 link_elf_protect(elf_file_t ef) in link_elf_protect() argument
264 gapprot = ef->preloaded ? VM_PROT_RW : VM_PROT_READ; in link_elf_protect()
266 start = end = (vm_offset_t)ef->address; in link_elf_protect()
268 for (i = 0; i < ef->nprogtab; i++) { in link_elf_protect()
273 if (ef->progtab[i].name != NULL && ( in link_elf_protect()
275 strcmp(ef->progtab[i].name, VNET_SETNAME) == 0 || in link_elf_protect()
277 strcmp(ef->progtab[i].name, DPCPU_SETNAME) == 0)) in link_elf_protect()
280 segstart = trunc_page((vm_offset_t)ef->progtab[i].addr); in link_elf_protect()
281 segend = round_page((vm_offset_t)ef->progtab[i].addr + in link_elf_protect()
282 ef->progtab[i].size); in link_elf_protect()
284 if ((ef->progtab[i].flags & SHF_WRITE) != 0) in link_elf_protect()
286 if ((ef->progtab[i].flags & SHF_EXECINSTR) != 0) in link_elf_protect()
296 link_elf_protect_range(ef, start, end, prot); in link_elf_protect()
297 link_elf_protect_range(ef, end, segstart, gapprot); in link_elf_protect()
308 link_elf_protect_range(ef, start, segstart, prot); in link_elf_protect()
320 link_elf_protect_range(ef, start, segstart, prot); in link_elf_protect()
321 link_elf_protect_range(ef, segstart, end, in link_elf_protect()
337 link_elf_protect_range(ef, start, end, prot); in link_elf_protect()
338 link_elf_protect_range(ef, end, in link_elf_protect()
339 round_page((vm_offset_t)ef->address + ef->lf.size), gapprot); in link_elf_protect()
351 elf_file_t ef; in link_elf_link_preload() local
378 ef = (elf_file_t)lf; in link_elf_link_preload()
379 ef->preloaded = 1; in link_elf_link_preload()
380 ef->address = *(caddr_t *)baseptr; in link_elf_link_preload()
393 ef->e_shdr = shdr; in link_elf_link_preload()
410 ef->nprogtab++; in link_elf_link_preload()
423 ef->nreltab++; in link_elf_link_preload()
428 ef->nrelatab++; in link_elf_link_preload()
434 if (ef->nprogtab == 0 || symstrindex < 0 || in link_elf_link_preload()
445 if (ef->nprogtab != 0) in link_elf_link_preload()
446 ef->progtab = malloc(ef->nprogtab * sizeof(*ef->progtab), in link_elf_link_preload()
448 if (ef->nreltab != 0) in link_elf_link_preload()
449 ef->reltab = malloc(ef->nreltab * sizeof(*ef->reltab), in link_elf_link_preload()
451 if (ef->nrelatab != 0) in link_elf_link_preload()
452 ef->relatab = malloc(ef->nrelatab * sizeof(*ef->relatab), in link_elf_link_preload()
454 if ((ef->nprogtab != 0 && ef->progtab == NULL) || in link_elf_link_preload()
455 (ef->nreltab != 0 && ef->reltab == NULL) || in link_elf_link_preload()
456 (ef->nrelatab != 0 && ef->relatab == NULL)) { in link_elf_link_preload()
470 (Elf_Addr)ef->address; in link_elf_link_preload()
473 ef->ddbsymcnt = shdr[symtabindex].sh_size / sizeof(Elf_Sym); in link_elf_link_preload()
474 ef->ddbsymtab = (Elf_Sym *)shdr[symtabindex].sh_addr; in link_elf_link_preload()
475 ef->ddbstrcnt = shdr[symstrindex].sh_size; in link_elf_link_preload()
476 ef->ddbstrtab = (char *)shdr[symstrindex].sh_addr; in link_elf_link_preload()
477 ef->shstrcnt = shdr[shstrindex].sh_size; in link_elf_link_preload()
478 ef->shstrtab = (char *)shdr[shstrindex].sh_addr; in link_elf_link_preload()
495 ef->progtab[pb].addr = (void *)shdr[i].sh_addr; in link_elf_link_preload()
497 ef->progtab[pb].name = "<<PROGBITS>>"; in link_elf_link_preload()
500 ef->progtab[pb].name = "<<UNWIND>>"; in link_elf_link_preload()
503 ef->progtab[pb].name = "<<INIT_ARRAY>>"; in link_elf_link_preload()
505 ef->progtab[pb].name = "<<FINI_ARRAY>>"; in link_elf_link_preload()
507 ef->progtab[pb].name = "<<NOBITS>>"; in link_elf_link_preload()
508 ef->progtab[pb].size = shdr[i].sh_size; in link_elf_link_preload()
509 ef->progtab[pb].flags = shdr[i].sh_flags; in link_elf_link_preload()
510 ef->progtab[pb].sec = i; in link_elf_link_preload()
511 if (ef->shstrtab && shdr[i].sh_name != 0) in link_elf_link_preload()
512 ef->progtab[pb].name = in link_elf_link_preload()
513 ef->shstrtab + shdr[i].sh_name; in link_elf_link_preload()
514 if (ef->progtab[pb].name != NULL && in link_elf_link_preload()
515 !strcmp(ef->progtab[pb].name, DPCPU_SETNAME)) { in link_elf_link_preload()
528 memcpy(dpcpu, ef->progtab[pb].addr, in link_elf_link_preload()
529 ef->progtab[pb].size); in link_elf_link_preload()
531 ef->progtab[pb].addr = dpcpu; in link_elf_link_preload()
533 } else if (ef->progtab[pb].name != NULL && in link_elf_link_preload()
534 !strcmp(ef->progtab[pb].name, VNET_SETNAME)) { in link_elf_link_preload()
547 memcpy(vnet_data, ef->progtab[pb].addr, in link_elf_link_preload()
548 ef->progtab[pb].size); in link_elf_link_preload()
549 ef->progtab[pb].addr = vnet_data; in link_elf_link_preload()
550 vnet_save_init(ef->progtab[pb].addr, in link_elf_link_preload()
551 ef->progtab[pb].size); in link_elf_link_preload()
553 } else if ((ef->progtab[pb].name != NULL && in link_elf_link_preload()
554 strcmp(ef->progtab[pb].name, ".ctors") == 0) || in link_elf_link_preload()
561 lf->ctors_addr = ef->progtab[pb].addr; in link_elf_link_preload()
564 } else if ((ef->progtab[pb].name != NULL && in link_elf_link_preload()
565 strcmp(ef->progtab[pb].name, ".dtors") == 0) || in link_elf_link_preload()
572 lf->dtors_addr = ef->progtab[pb].addr; in link_elf_link_preload()
578 for (j = 0; j < ef->ddbsymcnt; j++) { in link_elf_link_preload()
579 es = &ef->ddbsymtab[j]; in link_elf_link_preload()
582 es->st_value += (Elf_Addr)ef->progtab[pb].addr; in link_elf_link_preload()
589 ef->reltab[rl].rel = (Elf_Rel *)shdr[i].sh_addr; in link_elf_link_preload()
590 ef->reltab[rl].nrel = shdr[i].sh_size / sizeof(Elf_Rel); in link_elf_link_preload()
591 ef->reltab[rl].sec = shdr[i].sh_info; in link_elf_link_preload()
597 ef->relatab[ra].rela = (Elf_Rela *)shdr[i].sh_addr; in link_elf_link_preload()
598 ef->relatab[ra].nrela = in link_elf_link_preload()
600 ef->relatab[ra].sec = shdr[i].sh_info; in link_elf_link_preload()
605 if (pb != ef->nprogtab) { in link_elf_link_preload()
610 if (rl != ef->nreltab) { in link_elf_link_preload()
615 if (ra != ef->nrelatab) { in link_elf_link_preload()
626 link_elf_protect_range(ef, (vm_offset_t)ef->address, in link_elf_link_preload()
627 round_page((vm_offset_t)ef->address + ef->lf.size), VM_PROT_ALL); in link_elf_link_preload()
685 elf_file_t ef; in link_elf_link_preload_finish() local
688 ef = (elf_file_t)lf; in link_elf_link_preload_finish()
689 error = relocate_file(ef); in link_elf_link_preload_finish()
706 link_elf_protect(ef); in link_elf_link_preload_finish()
727 elf_file_t ef; in link_elf_load_file() local
805 ef = (elf_file_t) lf; in link_elf_load_file()
806 ef->nprogtab = 0; in link_elf_load_file()
807 ef->e_shdr = 0; in link_elf_load_file()
808 ef->nreltab = 0; in link_elf_load_file()
809 ef->nrelatab = 0; in link_elf_load_file()
819 ef->e_shdr = shdr; in link_elf_load_file()
847 ef->nprogtab++; in link_elf_load_file()
861 ef->nreltab++; in link_elf_load_file()
866 ef->nrelatab++; in link_elf_load_file()
872 if (ef->nprogtab == 0) { in link_elf_load_file()
892 if (ef->nprogtab != 0) in link_elf_load_file()
893 ef->progtab = malloc(ef->nprogtab * sizeof(*ef->progtab), in link_elf_load_file()
895 if (ef->nreltab != 0) in link_elf_load_file()
896 ef->reltab = malloc(ef->nreltab * sizeof(*ef->reltab), in link_elf_load_file()
898 if (ef->nrelatab != 0) in link_elf_load_file()
899 ef->relatab = malloc(ef->nrelatab * sizeof(*ef->relatab), in link_elf_load_file()
908 ef->ddbsymcnt = shdr[symtabindex].sh_size / sizeof(Elf_Sym); in link_elf_load_file()
909 ef->ddbsymtab = malloc(shdr[symtabindex].sh_size, M_LINKER, M_WAITOK); in link_elf_load_file()
910 error = vn_rdwr(UIO_READ, nd->ni_vp, (void *)ef->ddbsymtab, in link_elf_load_file()
922 ef->ddbstrcnt = shdr[symstrindex].sh_size; in link_elf_load_file()
923 ef->ddbstrtab = malloc(shdr[symstrindex].sh_size, M_LINKER, M_WAITOK); in link_elf_load_file()
924 error = vn_rdwr(UIO_READ, nd->ni_vp, ef->ddbstrtab, in link_elf_load_file()
940 ef->shstrcnt = shdr[shstrindex].sh_size; in link_elf_load_file()
941 ef->shstrtab = malloc(shdr[shstrindex].sh_size, M_LINKER, in link_elf_load_file()
943 error = vn_rdwr(UIO_READ, nd->ni_vp, ef->shstrtab, in link_elf_load_file()
983 ef->object = vm_pager_allocate(OBJT_PHYS, NULL, round_page(mapsize), in link_elf_load_file()
985 if (ef->object == NULL) { in link_elf_load_file()
990 vm_object_color(ef->object, 0); in link_elf_load_file()
1005 error = vm_map_find(kernel_map, ef->object, 0, &mapbase, in link_elf_load_file()
1009 vm_object_deallocate(ef->object); in link_elf_load_file()
1010 ef->object = NULL; in link_elf_load_file()
1025 lf->address = ef->address = (caddr_t)mapbase; in link_elf_load_file()
1052 if (ef->shstrtab != NULL && shdr[i].sh_name != 0) { in link_elf_load_file()
1053 ef->progtab[pb].name = in link_elf_load_file()
1054 ef->shstrtab + shdr[i].sh_name; in link_elf_load_file()
1055 if (!strcmp(ef->progtab[pb].name, ".ctors") || in link_elf_load_file()
1067 } else if (!strcmp(ef->progtab[pb].name, in link_elf_load_file()
1082 ef->progtab[pb].name = "<<PROGBITS>>"; in link_elf_load_file()
1085 ef->progtab[pb].name = "<<UNWIND>>"; in link_elf_load_file()
1088 ef->progtab[pb].name = "<<NOBITS>>"; in link_elf_load_file()
1089 if (ef->progtab[pb].name != NULL && in link_elf_load_file()
1090 !strcmp(ef->progtab[pb].name, DPCPU_SETNAME)) { in link_elf_load_file()
1091 ef->progtab[pb].addr = in link_elf_load_file()
1093 if (ef->progtab[pb].addr == NULL) { in link_elf_load_file()
1102 else if (ef->progtab[pb].name != NULL && in link_elf_load_file()
1103 !strcmp(ef->progtab[pb].name, VNET_SETNAME)) { in link_elf_load_file()
1104 ef->progtab[pb].addr = in link_elf_load_file()
1106 if (ef->progtab[pb].addr == NULL) { in link_elf_load_file()
1116 ef->progtab[pb].addr = in link_elf_load_file()
1118 if (ef->progtab[pb].addr == NULL) { in link_elf_load_file()
1122 ef->progtab[pb].size = shdr[i].sh_size; in link_elf_load_file()
1123 ef->progtab[pb].flags = shdr[i].sh_flags; in link_elf_load_file()
1124 ef->progtab[pb].sec = i; in link_elf_load_file()
1131 ef->progtab[pb].addr, in link_elf_load_file()
1142 if (ef->progtab[pb].addr != (void *)mapbase && in link_elf_load_file()
1143 !strcmp(ef->progtab[pb].name, DPCPU_SETNAME)) in link_elf_load_file()
1144 dpcpu_copy(ef->progtab[pb].addr, in link_elf_load_file()
1147 bzero(ef->progtab[pb].addr, shdr[i].sh_size); in link_elf_load_file()
1150 if (ef->progtab[pb].addr != (void *)mapbase && in link_elf_load_file()
1151 strcmp(ef->progtab[pb].name, VNET_SETNAME) == 0) in link_elf_load_file()
1152 vnet_save_init(ef->progtab[pb].addr, in link_elf_load_file()
1153 ef->progtab[pb].size); in link_elf_load_file()
1156 for (j = 0; j < ef->ddbsymcnt; j++) { in link_elf_load_file()
1157 es = &ef->ddbsymtab[j]; in link_elf_load_file()
1160 es->st_value += (Elf_Addr)ef->progtab[pb].addr; in link_elf_load_file()
1168 ef->reltab[rl].rel = malloc(shdr[i].sh_size, M_LINKER, in link_elf_load_file()
1170 ef->reltab[rl].nrel = shdr[i].sh_size / sizeof(Elf_Rel); in link_elf_load_file()
1171 ef->reltab[rl].sec = shdr[i].sh_info; in link_elf_load_file()
1173 (void *)ef->reltab[rl].rel, in link_elf_load_file()
1188 ef->relatab[ra].rela = malloc(shdr[i].sh_size, M_LINKER, in link_elf_load_file()
1190 ef->relatab[ra].nrela = in link_elf_load_file()
1192 ef->relatab[ra].sec = shdr[i].sh_info; in link_elf_load_file()
1194 (void *)ef->relatab[ra].rela, in link_elf_load_file()
1208 if (pb != ef->nprogtab) { in link_elf_load_file()
1213 if (rl != ef->nreltab) { in link_elf_load_file()
1218 if (ra != ef->nrelatab) { in link_elf_load_file()
1223 if (mapbase != (vm_offset_t)ef->address + mapsize) { in link_elf_load_file()
1227 (u_long)mapbase, ef->address, (u_long)mapsize, in link_elf_load_file()
1228 (u_long)(vm_offset_t)ef->address + mapsize); in link_elf_load_file()
1246 error = relocate_file(ef); in link_elf_load_file()
1262 link_elf_protect(ef); in link_elf_load_file()
1280 elf_file_t ef = (elf_file_t) file; in link_elf_unload_file() local
1288 if (ef->progtab) { in link_elf_unload_file()
1289 for (i = 0; i < ef->nprogtab; i++) { in link_elf_unload_file()
1290 if (ef->progtab[i].size == 0) in link_elf_unload_file()
1292 if (ef->progtab[i].name == NULL) in link_elf_unload_file()
1294 if (!strcmp(ef->progtab[i].name, DPCPU_SETNAME)) in link_elf_unload_file()
1295 dpcpu_free(ef->progtab[i].addr, in link_elf_unload_file()
1296 ef->progtab[i].size); in link_elf_unload_file()
1298 else if (!strcmp(ef->progtab[i].name, VNET_SETNAME)) in link_elf_unload_file()
1299 vnet_data_free(ef->progtab[i].addr, in link_elf_unload_file()
1300 ef->progtab[i].size); in link_elf_unload_file()
1304 if (ef->preloaded) { in link_elf_unload_file()
1305 free(ef->reltab, M_LINKER); in link_elf_unload_file()
1306 free(ef->relatab, M_LINKER); in link_elf_unload_file()
1307 free(ef->progtab, M_LINKER); in link_elf_unload_file()
1308 free(ef->ctftab, M_LINKER); in link_elf_unload_file()
1309 free(ef->ctfoff, M_LINKER); in link_elf_unload_file()
1310 free(ef->typoff, M_LINKER); in link_elf_unload_file()
1316 for (i = 0; i < ef->nreltab; i++) in link_elf_unload_file()
1317 free(ef->reltab[i].rel, M_LINKER); in link_elf_unload_file()
1318 for (i = 0; i < ef->nrelatab; i++) in link_elf_unload_file()
1319 free(ef->relatab[i].rela, M_LINKER); in link_elf_unload_file()
1320 free(ef->reltab, M_LINKER); in link_elf_unload_file()
1321 free(ef->relatab, M_LINKER); in link_elf_unload_file()
1322 free(ef->progtab, M_LINKER); in link_elf_unload_file()
1324 if (ef->object != NULL) in link_elf_unload_file()
1325 vm_map_remove(kernel_map, (vm_offset_t)ef->address, in link_elf_unload_file()
1326 (vm_offset_t)ef->address + ptoa(ef->object->size)); in link_elf_unload_file()
1327 free(ef->e_shdr, M_LINKER); in link_elf_unload_file()
1328 free(ef->ddbsymtab, M_LINKER); in link_elf_unload_file()
1329 free(ef->ddbstrtab, M_LINKER); in link_elf_unload_file()
1330 free(ef->shstrtab, M_LINKER); in link_elf_unload_file()
1331 free(ef->ctftab, M_LINKER); in link_elf_unload_file()
1332 free(ef->ctfoff, M_LINKER); in link_elf_unload_file()
1333 free(ef->typoff, M_LINKER); in link_elf_unload_file()
1337 symbol_name(elf_file_t ef, Elf_Size r_info) in symbol_name() argument
1342 ref = ef->ddbsymtab + ELF_R_SYM(r_info); in symbol_name()
1343 return ef->ddbstrtab + ref->st_name; in symbol_name()
1349 findbase(elf_file_t ef, int sec) in findbase() argument
1354 for (i = 0; i < ef->nprogtab; i++) { in findbase()
1355 if (sec == ef->progtab[i].sec) { in findbase()
1356 base = (Elf_Addr)ef->progtab[i].addr; in findbase()
1364 relocate_file1(elf_file_t ef, bool ifuncs) in relocate_file1() argument
1377 for (i = 0; i < ef->nreltab; i++) { in relocate_file1()
1378 rel = ef->reltab[i].rel; in relocate_file1()
1380 link_elf_error(ef->lf.filename, "lost a reltab!"); in relocate_file1()
1383 rellim = rel + ef->reltab[i].nrel; in relocate_file1()
1384 base = findbase(ef, ef->reltab[i].sec); in relocate_file1()
1386 link_elf_error(ef->lf.filename, "lost base for reltab"); in relocate_file1()
1391 if (symidx >= ef->ddbsymcnt) in relocate_file1()
1393 sym = ef->ddbsymtab + symidx; in relocate_file1()
1400 if (elf_reloc(&ef->lf, base, rel, ELF_RELOC_REL, in relocate_file1()
1402 symname = symbol_name(ef, rel->r_info); in relocate_file1()
1411 for (i = 0; i < ef->nrelatab; i++) { in relocate_file1()
1412 rela = ef->relatab[i].rela; in relocate_file1()
1414 link_elf_error(ef->lf.filename, "lost a relatab!"); in relocate_file1()
1417 relalim = rela + ef->relatab[i].nrela; in relocate_file1()
1418 base = findbase(ef, ef->relatab[i].sec); in relocate_file1()
1420 link_elf_error(ef->lf.filename, in relocate_file1()
1426 if (symidx >= ef->ddbsymcnt) in relocate_file1()
1428 sym = ef->ddbsymtab + symidx; in relocate_file1()
1435 if (elf_reloc(&ef->lf, base, rela, ELF_RELOC_RELA, in relocate_file1()
1437 symname = symbol_name(ef, rela->r_info); in relocate_file1()
1450 elf_obj_cleanup_globals_cache(ef); in relocate_file1()
1456 relocate_file(elf_file_t ef) in relocate_file() argument
1460 error = relocate_file1(ef, false); in relocate_file()
1462 error = relocate_file1(ef, true); in relocate_file()
1470 elf_file_t ef = (elf_file_t)lf; in link_elf_lookup_symbol1() local
1475 for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { in link_elf_lookup_symbol1()
1476 strp = ef->ddbstrtab + symp->st_name; in link_elf_lookup_symbol1()
1517 elf_file_t ef; in link_elf_symbol_values1() local
1521 ef = (elf_file_t) lf; in link_elf_symbol_values1()
1524 if (es >= ef->ddbsymtab && es < (ef->ddbsymtab + ef->ddbsymcnt)) { in link_elf_symbol_values1()
1527 symval->name = ef->ddbstrtab + es->st_name; in link_elf_symbol_values1()
1557 elf_file_t ef = (elf_file_t)lf; in link_elf_search_symbol() local
1565 for (i = 0, es = ef->ddbsymtab; i < ef->ddbsymcnt; i++, es++) { in link_elf_search_symbol()
1596 elf_file_t ef = (elf_file_t)lf; in link_elf_lookup_set() local
1601 for (i = 0; i < ef->nprogtab; i++) { in link_elf_lookup_set()
1602 if ((strncmp(ef->progtab[i].name, "set_", 4) == 0) && in link_elf_lookup_set()
1603 strcmp(ef->progtab[i].name + 4, name) == 0) { in link_elf_lookup_set()
1604 start = (void **)ef->progtab[i].addr; in link_elf_lookup_set()
1605 stop = (void **)((char *)ef->progtab[i].addr + in link_elf_lookup_set()
1606 ef->progtab[i].size); in link_elf_lookup_set()
1624 elf_file_t ef = (elf_file_t)file; in link_elf_each_function_name() local
1629 for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { in link_elf_each_function_name()
1633 error = callback(ef->ddbstrtab + symp->st_name, opaque); in link_elf_each_function_name()
1646 elf_file_t ef = (elf_file_t)file; in link_elf_each_function_nameval() local
1651 for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { in link_elf_each_function_nameval()
1667 elf_obj_cleanup_globals_cache(elf_file_t ef) in elf_obj_cleanup_globals_cache() argument
1672 for (i = 0; i < ef->ddbsymcnt; i++) { in elf_obj_cleanup_globals_cache()
1673 sym = ef->ddbsymtab + i; in elf_obj_cleanup_globals_cache()
1691 elf_file_t ef = (elf_file_t)lf; in elf_obj_lookup() local
1697 if (symidx >= ef->ddbsymcnt) { in elf_obj_lookup()
1702 sym = ef->ddbsymtab + symidx; in elf_obj_lookup()
1723 symbol = ef->ddbstrtab + sym->st_name; in elf_obj_lookup()
1760 link_elf_fix_link_set(elf_file_t ef) in link_elf_fix_link_set() argument
1772 symidx < ef->ddbsymcnt; symidx++) { in link_elf_fix_link_set()
1773 sym = ef->ddbsymtab + symidx; in link_elf_fix_link_set()
1777 sym_name = ef->ddbstrtab + sym->st_name; in link_elf_fix_link_set()
1789 for (i = 0; i < ef->nprogtab; i++) { in link_elf_fix_link_set()
1790 if (strcmp(ef->progtab[i].name, linkset_name) == 0) { in link_elf_fix_link_set()
1791 startp = (Elf_Addr)ef->progtab[i].addr; in link_elf_fix_link_set()
1792 stopp = (Elf_Addr)(startp + ef->progtab[i].size); in link_elf_fix_link_set()
1796 if (i == ef->nprogtab) in link_elf_fix_link_set()
1807 elf_file_t ef = (elf_file_t)lf; in link_elf_reloc_local() local
1817 link_elf_fix_link_set(ef); in link_elf_reloc_local()
1820 for (i = 0; i < ef->nreltab; i++) { in link_elf_reloc_local()
1821 rel = ef->reltab[i].rel; in link_elf_reloc_local()
1823 link_elf_error(ef->lf.filename, "lost a reltab"); in link_elf_reloc_local()
1826 rellim = rel + ef->reltab[i].nrel; in link_elf_reloc_local()
1827 base = findbase(ef, ef->reltab[i].sec); in link_elf_reloc_local()
1829 link_elf_error(ef->lf.filename, "lost base for reltab"); in link_elf_reloc_local()
1834 if (symidx >= ef->ddbsymcnt) in link_elf_reloc_local()
1836 sym = ef->ddbsymtab + symidx; in link_elf_reloc_local()
1850 for (i = 0; i < ef->nrelatab; i++) { in link_elf_reloc_local()
1851 rela = ef->relatab[i].rela; in link_elf_reloc_local()
1853 link_elf_error(ef->lf.filename, "lost a relatab!"); in link_elf_reloc_local()
1856 relalim = rela + ef->relatab[i].nrela; in link_elf_reloc_local()
1857 base = findbase(ef, ef->relatab[i].sec); in link_elf_reloc_local()
1859 link_elf_error(ef->lf.filename, "lost base for reltab"); in link_elf_reloc_local()
1864 if (symidx >= ef->ddbsymcnt) in link_elf_reloc_local()
1866 sym = ef->ddbsymtab + symidx; in link_elf_reloc_local()
1884 elf_file_t ef = (elf_file_t)lf; in link_elf_symtab_get() local
1886 *symtab = ef->ddbsymtab; in link_elf_symtab_get()
1889 return (ef->ddbsymcnt); in link_elf_symtab_get()
1895 elf_file_t ef = (elf_file_t)lf; in link_elf_strtab_get() local
1897 *strtab = ef->ddbstrtab; in link_elf_strtab_get()
1900 return (ef->ddbstrcnt); in link_elf_strtab_get()
1907 elf_file_t ef = (elf_file_t) lf; in link_elf_propagate_vnets() local
1909 if (ef->progtab) { in link_elf_propagate_vnets()
1910 for (int i = 0; i < ef->nprogtab; i++) { in link_elf_propagate_vnets()
1911 if (ef->progtab[i].size == 0) in link_elf_propagate_vnets()
1913 if (ef->progtab[i].name == NULL) in link_elf_propagate_vnets()
1915 if (strcmp(ef->progtab[i].name, VNET_SETNAME) == 0) { in link_elf_propagate_vnets()
1916 vnet_data_copy(ef->progtab[i].addr, in link_elf_propagate_vnets()
1917 ef->progtab[i].size); in link_elf_propagate_vnets()