Lines Matching refs:ef
190 static int relocate_file(elf_file_t ef);
211 link_elf_protect_range(elf_file_t ef, vm_offset_t start, vm_offset_t end, in link_elf_protect_range() argument
216 KASSERT(start <= end && start >= (vm_offset_t)ef->address && in link_elf_protect_range()
217 end <= round_page((vm_offset_t)ef->address + ef->lf.size), in link_elf_protect_range()
223 if (ef->preloaded) { in link_elf_protect_range()
243 link_elf_protect(elf_file_t ef) in link_elf_protect() argument
255 gapprot = ef->preloaded ? VM_PROT_RW : VM_PROT_READ; in link_elf_protect()
257 start = end = (vm_offset_t)ef->address; in link_elf_protect()
259 for (i = 0; i < ef->nprogtab; i++) { in link_elf_protect()
264 if (ef->progtab[i].name != NULL && ( in link_elf_protect()
266 strcmp(ef->progtab[i].name, VNET_SETNAME) == 0 || in link_elf_protect()
268 strcmp(ef->progtab[i].name, DPCPU_SETNAME) == 0)) in link_elf_protect()
271 segstart = trunc_page((vm_offset_t)ef->progtab[i].addr); in link_elf_protect()
272 segend = round_page((vm_offset_t)ef->progtab[i].addr + in link_elf_protect()
273 ef->progtab[i].size); in link_elf_protect()
275 if ((ef->progtab[i].flags & SHF_WRITE) != 0) in link_elf_protect()
277 if ((ef->progtab[i].flags & SHF_EXECINSTR) != 0) in link_elf_protect()
287 link_elf_protect_range(ef, start, end, prot); in link_elf_protect()
288 link_elf_protect_range(ef, end, segstart, gapprot); in link_elf_protect()
299 link_elf_protect_range(ef, start, segstart, prot); in link_elf_protect()
311 link_elf_protect_range(ef, start, segstart, prot); in link_elf_protect()
312 link_elf_protect_range(ef, segstart, end, in link_elf_protect()
328 link_elf_protect_range(ef, start, end, prot); in link_elf_protect()
329 link_elf_protect_range(ef, end, in link_elf_protect()
330 round_page((vm_offset_t)ef->address + ef->lf.size), gapprot); in link_elf_protect()
342 elf_file_t ef; in link_elf_link_preload() local
372 ef = (elf_file_t)lf; in link_elf_link_preload()
373 ef->preloaded = 1; in link_elf_link_preload()
374 ef->address = *(caddr_t *)baseptr; in link_elf_link_preload()
387 ef->e_shdr = shdr; in link_elf_link_preload()
404 ef->nprogtab++; in link_elf_link_preload()
417 ef->nreltab++; in link_elf_link_preload()
422 ef->nrelatab++; in link_elf_link_preload()
428 if (ef->nprogtab == 0 || symstrindex < 0 || in link_elf_link_preload()
439 if (ef->nprogtab != 0) in link_elf_link_preload()
440 ef->progtab = malloc(ef->nprogtab * sizeof(*ef->progtab), in link_elf_link_preload()
442 if (ef->nreltab != 0) in link_elf_link_preload()
443 ef->reltab = malloc(ef->nreltab * sizeof(*ef->reltab), in link_elf_link_preload()
445 if (ef->nrelatab != 0) in link_elf_link_preload()
446 ef->relatab = malloc(ef->nrelatab * sizeof(*ef->relatab), in link_elf_link_preload()
448 if ((ef->nprogtab != 0 && ef->progtab == NULL) || in link_elf_link_preload()
449 (ef->nreltab != 0 && ef->reltab == NULL) || in link_elf_link_preload()
450 (ef->nrelatab != 0 && ef->relatab == NULL)) { in link_elf_link_preload()
464 (Elf_Addr)ef->address; in link_elf_link_preload()
467 ef->ddbsymcnt = shdr[symtabindex].sh_size / sizeof(Elf_Sym); in link_elf_link_preload()
468 ef->ddbsymtab = (Elf_Sym *)shdr[symtabindex].sh_addr; in link_elf_link_preload()
469 ef->ddbstrcnt = shdr[symstrindex].sh_size; in link_elf_link_preload()
470 ef->ddbstrtab = (char *)shdr[symstrindex].sh_addr; in link_elf_link_preload()
471 ef->shstrcnt = shdr[shstrindex].sh_size; in link_elf_link_preload()
472 ef->shstrtab = (char *)shdr[shstrindex].sh_addr; in link_elf_link_preload()
489 ef->progtab[pb].addr = (void *)shdr[i].sh_addr; in link_elf_link_preload()
491 ef->progtab[pb].name = "<<PROGBITS>>"; in link_elf_link_preload()
494 ef->progtab[pb].name = "<<UNWIND>>"; in link_elf_link_preload()
497 ef->progtab[pb].name = "<<INIT_ARRAY>>"; in link_elf_link_preload()
499 ef->progtab[pb].name = "<<FINI_ARRAY>>"; in link_elf_link_preload()
501 ef->progtab[pb].name = "<<NOBITS>>"; in link_elf_link_preload()
502 ef->progtab[pb].size = shdr[i].sh_size; in link_elf_link_preload()
503 ef->progtab[pb].flags = shdr[i].sh_flags; in link_elf_link_preload()
504 ef->progtab[pb].sec = i; in link_elf_link_preload()
505 if (ef->shstrtab && shdr[i].sh_name != 0) in link_elf_link_preload()
506 ef->progtab[pb].name = in link_elf_link_preload()
507 ef->shstrtab + shdr[i].sh_name; in link_elf_link_preload()
508 if (ef->progtab[pb].name != NULL && in link_elf_link_preload()
509 !strcmp(ef->progtab[pb].name, DPCPU_SETNAME)) { in link_elf_link_preload()
522 memcpy(dpcpu, ef->progtab[pb].addr, in link_elf_link_preload()
523 ef->progtab[pb].size); in link_elf_link_preload()
525 ef->progtab[pb].addr = dpcpu; in link_elf_link_preload()
527 } else if (ef->progtab[pb].name != NULL && in link_elf_link_preload()
528 !strcmp(ef->progtab[pb].name, VNET_SETNAME)) { in link_elf_link_preload()
541 memcpy(vnet_data, ef->progtab[pb].addr, in link_elf_link_preload()
542 ef->progtab[pb].size); in link_elf_link_preload()
544 ef->progtab[pb].addr = vnet_data; in link_elf_link_preload()
546 } else if ((ef->progtab[pb].name != NULL && in link_elf_link_preload()
547 strcmp(ef->progtab[pb].name, ".ctors") == 0) || in link_elf_link_preload()
554 lf->ctors_addr = ef->progtab[pb].addr; in link_elf_link_preload()
557 } else if ((ef->progtab[pb].name != NULL && in link_elf_link_preload()
558 strcmp(ef->progtab[pb].name, ".dtors") == 0) || in link_elf_link_preload()
565 lf->dtors_addr = ef->progtab[pb].addr; in link_elf_link_preload()
571 for (j = 0; j < ef->ddbsymcnt; j++) { in link_elf_link_preload()
572 es = &ef->ddbsymtab[j]; in link_elf_link_preload()
575 es->st_value += (Elf_Addr)ef->progtab[pb].addr; in link_elf_link_preload()
582 ef->reltab[rl].rel = (Elf_Rel *)shdr[i].sh_addr; in link_elf_link_preload()
583 ef->reltab[rl].nrel = shdr[i].sh_size / sizeof(Elf_Rel); in link_elf_link_preload()
584 ef->reltab[rl].sec = shdr[i].sh_info; in link_elf_link_preload()
590 ef->relatab[ra].rela = (Elf_Rela *)shdr[i].sh_addr; in link_elf_link_preload()
591 ef->relatab[ra].nrela = in link_elf_link_preload()
593 ef->relatab[ra].sec = shdr[i].sh_info; in link_elf_link_preload()
598 if (pb != ef->nprogtab) { in link_elf_link_preload()
603 if (rl != ef->nreltab) { in link_elf_link_preload()
608 if (ra != ef->nrelatab) { in link_elf_link_preload()
619 link_elf_protect_range(ef, (vm_offset_t)ef->address, in link_elf_link_preload()
620 round_page((vm_offset_t)ef->address + ef->lf.size), VM_PROT_ALL); in link_elf_link_preload()
678 elf_file_t ef; in link_elf_link_preload_finish() local
681 ef = (elf_file_t)lf; in link_elf_link_preload_finish()
682 error = relocate_file(ef); in link_elf_link_preload_finish()
699 link_elf_protect(ef); in link_elf_link_preload_finish()
720 elf_file_t ef; in link_elf_load_file() local
798 ef = (elf_file_t) lf; in link_elf_load_file()
799 ef->nprogtab = 0; in link_elf_load_file()
800 ef->e_shdr = 0; in link_elf_load_file()
801 ef->nreltab = 0; in link_elf_load_file()
802 ef->nrelatab = 0; in link_elf_load_file()
812 ef->e_shdr = shdr; in link_elf_load_file()
840 ef->nprogtab++; in link_elf_load_file()
854 ef->nreltab++; in link_elf_load_file()
859 ef->nrelatab++; in link_elf_load_file()
865 if (ef->nprogtab == 0) { in link_elf_load_file()
885 if (ef->nprogtab != 0) in link_elf_load_file()
886 ef->progtab = malloc(ef->nprogtab * sizeof(*ef->progtab), in link_elf_load_file()
888 if (ef->nreltab != 0) in link_elf_load_file()
889 ef->reltab = malloc(ef->nreltab * sizeof(*ef->reltab), in link_elf_load_file()
891 if (ef->nrelatab != 0) in link_elf_load_file()
892 ef->relatab = malloc(ef->nrelatab * sizeof(*ef->relatab), in link_elf_load_file()
901 ef->ddbsymcnt = shdr[symtabindex].sh_size / sizeof(Elf_Sym); in link_elf_load_file()
902 ef->ddbsymtab = malloc(shdr[symtabindex].sh_size, M_LINKER, M_WAITOK); in link_elf_load_file()
903 error = vn_rdwr(UIO_READ, nd->ni_vp, (void *)ef->ddbsymtab, in link_elf_load_file()
915 ef->ddbstrcnt = shdr[symstrindex].sh_size; in link_elf_load_file()
916 ef->ddbstrtab = malloc(shdr[symstrindex].sh_size, M_LINKER, M_WAITOK); in link_elf_load_file()
917 error = vn_rdwr(UIO_READ, nd->ni_vp, ef->ddbstrtab, in link_elf_load_file()
933 ef->shstrcnt = shdr[shstrindex].sh_size; in link_elf_load_file()
934 ef->shstrtab = malloc(shdr[shstrindex].sh_size, M_LINKER, in link_elf_load_file()
936 error = vn_rdwr(UIO_READ, nd->ni_vp, ef->shstrtab, in link_elf_load_file()
976 ef->object = vm_pager_allocate(OBJT_PHYS, NULL, round_page(mapsize), in link_elf_load_file()
978 if (ef->object == NULL) { in link_elf_load_file()
983 vm_object_color(ef->object, 0); in link_elf_load_file()
998 error = vm_map_find(kernel_map, ef->object, 0, &mapbase, in link_elf_load_file()
1002 vm_object_deallocate(ef->object); in link_elf_load_file()
1003 ef->object = NULL; in link_elf_load_file()
1018 lf->address = ef->address = (caddr_t)mapbase; in link_elf_load_file()
1045 if (ef->shstrtab != NULL && shdr[i].sh_name != 0) { in link_elf_load_file()
1046 ef->progtab[pb].name = in link_elf_load_file()
1047 ef->shstrtab + shdr[i].sh_name; in link_elf_load_file()
1048 if (!strcmp(ef->progtab[pb].name, ".ctors") || in link_elf_load_file()
1060 } else if (!strcmp(ef->progtab[pb].name, in link_elf_load_file()
1075 ef->progtab[pb].name = "<<PROGBITS>>"; in link_elf_load_file()
1078 ef->progtab[pb].name = "<<UNWIND>>"; in link_elf_load_file()
1081 ef->progtab[pb].name = "<<NOBITS>>"; in link_elf_load_file()
1082 if (ef->progtab[pb].name != NULL && in link_elf_load_file()
1083 !strcmp(ef->progtab[pb].name, DPCPU_SETNAME)) { in link_elf_load_file()
1084 ef->progtab[pb].addr = in link_elf_load_file()
1086 if (ef->progtab[pb].addr == NULL) { in link_elf_load_file()
1095 else if (ef->progtab[pb].name != NULL && in link_elf_load_file()
1096 !strcmp(ef->progtab[pb].name, VNET_SETNAME)) { in link_elf_load_file()
1097 ef->progtab[pb].addr = in link_elf_load_file()
1099 if (ef->progtab[pb].addr == NULL) { in link_elf_load_file()
1109 ef->progtab[pb].addr = in link_elf_load_file()
1111 if (ef->progtab[pb].addr == NULL) { in link_elf_load_file()
1115 ef->progtab[pb].size = shdr[i].sh_size; in link_elf_load_file()
1116 ef->progtab[pb].flags = shdr[i].sh_flags; in link_elf_load_file()
1117 ef->progtab[pb].sec = i; in link_elf_load_file()
1124 ef->progtab[pb].addr, in link_elf_load_file()
1135 if (ef->progtab[pb].addr != (void *)mapbase && in link_elf_load_file()
1136 !strcmp(ef->progtab[pb].name, DPCPU_SETNAME)) in link_elf_load_file()
1137 dpcpu_copy(ef->progtab[pb].addr, in link_elf_load_file()
1140 else if (ef->progtab[pb].addr != in link_elf_load_file()
1142 !strcmp(ef->progtab[pb].name, VNET_SETNAME)) in link_elf_load_file()
1143 vnet_data_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 for (j = 0; j < ef->ddbsymcnt; j++) { in link_elf_load_file()
1151 es = &ef->ddbsymtab[j]; in link_elf_load_file()
1154 es->st_value += (Elf_Addr)ef->progtab[pb].addr; in link_elf_load_file()
1162 ef->reltab[rl].rel = malloc(shdr[i].sh_size, M_LINKER, in link_elf_load_file()
1164 ef->reltab[rl].nrel = shdr[i].sh_size / sizeof(Elf_Rel); in link_elf_load_file()
1165 ef->reltab[rl].sec = shdr[i].sh_info; in link_elf_load_file()
1167 (void *)ef->reltab[rl].rel, in link_elf_load_file()
1182 ef->relatab[ra].rela = malloc(shdr[i].sh_size, M_LINKER, in link_elf_load_file()
1184 ef->relatab[ra].nrela = in link_elf_load_file()
1186 ef->relatab[ra].sec = shdr[i].sh_info; in link_elf_load_file()
1188 (void *)ef->relatab[ra].rela, in link_elf_load_file()
1202 if (pb != ef->nprogtab) { in link_elf_load_file()
1207 if (rl != ef->nreltab) { in link_elf_load_file()
1212 if (ra != ef->nrelatab) { in link_elf_load_file()
1217 if (mapbase != (vm_offset_t)ef->address + mapsize) { in link_elf_load_file()
1221 (u_long)mapbase, ef->address, (u_long)mapsize, in link_elf_load_file()
1222 (u_long)(vm_offset_t)ef->address + mapsize); in link_elf_load_file()
1240 error = relocate_file(ef); in link_elf_load_file()
1256 link_elf_protect(ef); in link_elf_load_file()
1274 elf_file_t ef = (elf_file_t) file; in link_elf_unload_file() local
1282 if (ef->progtab) { in link_elf_unload_file()
1283 for (i = 0; i < ef->nprogtab; i++) { in link_elf_unload_file()
1284 if (ef->progtab[i].size == 0) in link_elf_unload_file()
1286 if (ef->progtab[i].name == NULL) in link_elf_unload_file()
1288 if (!strcmp(ef->progtab[i].name, DPCPU_SETNAME)) in link_elf_unload_file()
1289 dpcpu_free(ef->progtab[i].addr, in link_elf_unload_file()
1290 ef->progtab[i].size); in link_elf_unload_file()
1292 else if (!strcmp(ef->progtab[i].name, VNET_SETNAME)) in link_elf_unload_file()
1293 vnet_data_free(ef->progtab[i].addr, in link_elf_unload_file()
1294 ef->progtab[i].size); in link_elf_unload_file()
1298 if (ef->preloaded) { in link_elf_unload_file()
1299 free(ef->reltab, M_LINKER); in link_elf_unload_file()
1300 free(ef->relatab, M_LINKER); in link_elf_unload_file()
1301 free(ef->progtab, M_LINKER); in link_elf_unload_file()
1302 free(ef->ctftab, M_LINKER); in link_elf_unload_file()
1303 free(ef->ctfoff, M_LINKER); in link_elf_unload_file()
1304 free(ef->typoff, M_LINKER); in link_elf_unload_file()
1310 for (i = 0; i < ef->nreltab; i++) in link_elf_unload_file()
1311 free(ef->reltab[i].rel, M_LINKER); in link_elf_unload_file()
1312 for (i = 0; i < ef->nrelatab; i++) in link_elf_unload_file()
1313 free(ef->relatab[i].rela, M_LINKER); in link_elf_unload_file()
1314 free(ef->reltab, M_LINKER); in link_elf_unload_file()
1315 free(ef->relatab, M_LINKER); in link_elf_unload_file()
1316 free(ef->progtab, M_LINKER); in link_elf_unload_file()
1318 if (ef->object != NULL) in link_elf_unload_file()
1319 vm_map_remove(kernel_map, (vm_offset_t)ef->address, in link_elf_unload_file()
1320 (vm_offset_t)ef->address + ptoa(ef->object->size)); in link_elf_unload_file()
1321 free(ef->e_shdr, M_LINKER); in link_elf_unload_file()
1322 free(ef->ddbsymtab, M_LINKER); in link_elf_unload_file()
1323 free(ef->ddbstrtab, M_LINKER); in link_elf_unload_file()
1324 free(ef->shstrtab, M_LINKER); in link_elf_unload_file()
1325 free(ef->ctftab, M_LINKER); in link_elf_unload_file()
1326 free(ef->ctfoff, M_LINKER); in link_elf_unload_file()
1327 free(ef->typoff, M_LINKER); in link_elf_unload_file()
1331 symbol_name(elf_file_t ef, Elf_Size r_info) in symbol_name() argument
1336 ref = ef->ddbsymtab + ELF_R_SYM(r_info); in symbol_name()
1337 return ef->ddbstrtab + ref->st_name; in symbol_name()
1343 findbase(elf_file_t ef, int sec) in findbase() argument
1348 for (i = 0; i < ef->nprogtab; i++) { in findbase()
1349 if (sec == ef->progtab[i].sec) { in findbase()
1350 base = (Elf_Addr)ef->progtab[i].addr; in findbase()
1358 relocate_file1(elf_file_t ef, bool ifuncs) in relocate_file1() argument
1371 for (i = 0; i < ef->nreltab; i++) { in relocate_file1()
1372 rel = ef->reltab[i].rel; in relocate_file1()
1374 link_elf_error(ef->lf.filename, "lost a reltab!"); in relocate_file1()
1377 rellim = rel + ef->reltab[i].nrel; in relocate_file1()
1378 base = findbase(ef, ef->reltab[i].sec); in relocate_file1()
1380 link_elf_error(ef->lf.filename, "lost base for reltab"); in relocate_file1()
1385 if (symidx >= ef->ddbsymcnt) in relocate_file1()
1387 sym = ef->ddbsymtab + symidx; in relocate_file1()
1394 if (elf_reloc(&ef->lf, base, rel, ELF_RELOC_REL, in relocate_file1()
1396 symname = symbol_name(ef, rel->r_info); in relocate_file1()
1405 for (i = 0; i < ef->nrelatab; i++) { in relocate_file1()
1406 rela = ef->relatab[i].rela; in relocate_file1()
1408 link_elf_error(ef->lf.filename, "lost a relatab!"); in relocate_file1()
1411 relalim = rela + ef->relatab[i].nrela; in relocate_file1()
1412 base = findbase(ef, ef->relatab[i].sec); in relocate_file1()
1414 link_elf_error(ef->lf.filename, in relocate_file1()
1420 if (symidx >= ef->ddbsymcnt) in relocate_file1()
1422 sym = ef->ddbsymtab + symidx; in relocate_file1()
1429 if (elf_reloc(&ef->lf, base, rela, ELF_RELOC_RELA, in relocate_file1()
1431 symname = symbol_name(ef, rela->r_info); in relocate_file1()
1444 elf_obj_cleanup_globals_cache(ef); in relocate_file1()
1450 relocate_file(elf_file_t ef) in relocate_file() argument
1454 error = relocate_file1(ef, false); in relocate_file()
1456 error = relocate_file1(ef, true); in relocate_file()
1464 elf_file_t ef = (elf_file_t)lf; in link_elf_lookup_symbol1() local
1469 for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { in link_elf_lookup_symbol1()
1470 strp = ef->ddbstrtab + symp->st_name; in link_elf_lookup_symbol1()
1501 elf_file_t ef; in link_elf_symbol_values1() local
1505 ef = (elf_file_t) lf; in link_elf_symbol_values1()
1508 if (es >= ef->ddbsymtab && es < (ef->ddbsymtab + ef->ddbsymcnt)) { in link_elf_symbol_values1()
1511 symval->name = ef->ddbstrtab + es->st_name; in link_elf_symbol_values1()
1541 elf_file_t ef = (elf_file_t)lf; in link_elf_search_symbol() local
1549 for (i = 0, es = ef->ddbsymtab; i < ef->ddbsymcnt; i++, es++) { in link_elf_search_symbol()
1580 elf_file_t ef = (elf_file_t)lf; in link_elf_lookup_set() local
1585 for (i = 0; i < ef->nprogtab; i++) { in link_elf_lookup_set()
1586 if ((strncmp(ef->progtab[i].name, "set_", 4) == 0) && in link_elf_lookup_set()
1587 strcmp(ef->progtab[i].name + 4, name) == 0) { in link_elf_lookup_set()
1588 start = (void **)ef->progtab[i].addr; in link_elf_lookup_set()
1589 stop = (void **)((char *)ef->progtab[i].addr + in link_elf_lookup_set()
1590 ef->progtab[i].size); in link_elf_lookup_set()
1608 elf_file_t ef = (elf_file_t)file; in link_elf_each_function_name() local
1613 for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { in link_elf_each_function_name()
1617 error = callback(ef->ddbstrtab + symp->st_name, opaque); in link_elf_each_function_name()
1630 elf_file_t ef = (elf_file_t)file; in link_elf_each_function_nameval() local
1635 for (i = 0, symp = ef->ddbsymtab; i < ef->ddbsymcnt; i++, symp++) { in link_elf_each_function_nameval()
1651 elf_obj_cleanup_globals_cache(elf_file_t ef) in elf_obj_cleanup_globals_cache() argument
1656 for (i = 0; i < ef->ddbsymcnt; i++) { in elf_obj_cleanup_globals_cache()
1657 sym = ef->ddbsymtab + i; in elf_obj_cleanup_globals_cache()
1675 elf_file_t ef = (elf_file_t)lf; in elf_obj_lookup() local
1681 if (symidx >= ef->ddbsymcnt) { in elf_obj_lookup()
1686 sym = ef->ddbsymtab + symidx; in elf_obj_lookup()
1707 symbol = ef->ddbstrtab + sym->st_name; in elf_obj_lookup()
1744 link_elf_fix_link_set(elf_file_t ef) in link_elf_fix_link_set() argument
1756 symidx < ef->ddbsymcnt; symidx++) { in link_elf_fix_link_set()
1757 sym = ef->ddbsymtab + symidx; in link_elf_fix_link_set()
1761 sym_name = ef->ddbstrtab + sym->st_name; in link_elf_fix_link_set()
1773 for (i = 0; i < ef->nprogtab; i++) { in link_elf_fix_link_set()
1774 if (strcmp(ef->progtab[i].name, linkset_name) == 0) { in link_elf_fix_link_set()
1775 startp = (Elf_Addr)ef->progtab[i].addr; in link_elf_fix_link_set()
1776 stopp = (Elf_Addr)(startp + ef->progtab[i].size); in link_elf_fix_link_set()
1780 if (i == ef->nprogtab) in link_elf_fix_link_set()
1791 elf_file_t ef = (elf_file_t)lf; in link_elf_reloc_local() local
1801 link_elf_fix_link_set(ef); in link_elf_reloc_local()
1804 for (i = 0; i < ef->nreltab; i++) { in link_elf_reloc_local()
1805 rel = ef->reltab[i].rel; in link_elf_reloc_local()
1807 link_elf_error(ef->lf.filename, "lost a reltab"); in link_elf_reloc_local()
1810 rellim = rel + ef->reltab[i].nrel; in link_elf_reloc_local()
1811 base = findbase(ef, ef->reltab[i].sec); in link_elf_reloc_local()
1813 link_elf_error(ef->lf.filename, "lost base for reltab"); in link_elf_reloc_local()
1818 if (symidx >= ef->ddbsymcnt) in link_elf_reloc_local()
1820 sym = ef->ddbsymtab + symidx; in link_elf_reloc_local()
1834 for (i = 0; i < ef->nrelatab; i++) { in link_elf_reloc_local()
1835 rela = ef->relatab[i].rela; in link_elf_reloc_local()
1837 link_elf_error(ef->lf.filename, "lost a relatab!"); in link_elf_reloc_local()
1840 relalim = rela + ef->relatab[i].nrela; in link_elf_reloc_local()
1841 base = findbase(ef, ef->relatab[i].sec); in link_elf_reloc_local()
1843 link_elf_error(ef->lf.filename, "lost base for reltab"); in link_elf_reloc_local()
1848 if (symidx >= ef->ddbsymcnt) in link_elf_reloc_local()
1850 sym = ef->ddbsymtab + symidx; in link_elf_reloc_local()
1868 elf_file_t ef = (elf_file_t)lf; in link_elf_symtab_get() local
1870 *symtab = ef->ddbsymtab; in link_elf_symtab_get()
1873 return (ef->ddbsymcnt); in link_elf_symtab_get()
1879 elf_file_t ef = (elf_file_t)lf; in link_elf_strtab_get() local
1881 *strtab = ef->ddbstrtab; in link_elf_strtab_get()
1884 return (ef->ddbstrcnt); in link_elf_strtab_get()