Lines Matching refs:progtab

102 	Elf_progent	*progtab;  member
266 if (ef->progtab[i].name != NULL && ( in link_elf_protect()
268 strcmp(ef->progtab[i].name, VNET_SETNAME) == 0 || in link_elf_protect()
270 strcmp(ef->progtab[i].name, DPCPU_SETNAME) == 0)) in link_elf_protect()
273 segstart = trunc_page((vm_offset_t)ef->progtab[i].addr); in link_elf_protect()
274 segend = round_page((vm_offset_t)ef->progtab[i].addr + in link_elf_protect()
275 ef->progtab[i].size); in link_elf_protect()
277 if ((ef->progtab[i].flags & SHF_WRITE) != 0) in link_elf_protect()
279 if ((ef->progtab[i].flags & SHF_EXECINSTR) != 0) in link_elf_protect()
442 ef->progtab = malloc(ef->nprogtab * sizeof(*ef->progtab), in link_elf_link_preload()
450 if ((ef->nprogtab != 0 && ef->progtab == NULL) || in link_elf_link_preload()
491 ef->progtab[pb].addr = (void *)shdr[i].sh_addr; in link_elf_link_preload()
493 ef->progtab[pb].name = "<<PROGBITS>>"; in link_elf_link_preload()
496 ef->progtab[pb].name = "<<UNWIND>>"; in link_elf_link_preload()
499 ef->progtab[pb].name = "<<INIT_ARRAY>>"; in link_elf_link_preload()
501 ef->progtab[pb].name = "<<FINI_ARRAY>>"; in link_elf_link_preload()
503 ef->progtab[pb].name = "<<NOBITS>>"; in link_elf_link_preload()
504 ef->progtab[pb].size = shdr[i].sh_size; in link_elf_link_preload()
505 ef->progtab[pb].flags = shdr[i].sh_flags; in link_elf_link_preload()
506 ef->progtab[pb].sec = i; in link_elf_link_preload()
508 ef->progtab[pb].name = in link_elf_link_preload()
510 if (ef->progtab[pb].name != NULL && in link_elf_link_preload()
511 !strcmp(ef->progtab[pb].name, DPCPU_SETNAME)) { in link_elf_link_preload()
524 memcpy(dpcpu, ef->progtab[pb].addr, in link_elf_link_preload()
525 ef->progtab[pb].size); in link_elf_link_preload()
527 ef->progtab[pb].addr = dpcpu; in link_elf_link_preload()
529 } else if (ef->progtab[pb].name != NULL && in link_elf_link_preload()
530 !strcmp(ef->progtab[pb].name, VNET_SETNAME)) { in link_elf_link_preload()
543 memcpy(vnet_data, ef->progtab[pb].addr, in link_elf_link_preload()
544 ef->progtab[pb].size); in link_elf_link_preload()
546 ef->progtab[pb].addr = vnet_data; in link_elf_link_preload()
548 } else if ((ef->progtab[pb].name != NULL && in link_elf_link_preload()
549 strcmp(ef->progtab[pb].name, ".ctors") == 0) || in link_elf_link_preload()
556 lf->ctors_addr = ef->progtab[pb].addr; in link_elf_link_preload()
559 } else if ((ef->progtab[pb].name != NULL && in link_elf_link_preload()
560 strcmp(ef->progtab[pb].name, ".dtors") == 0) || in link_elf_link_preload()
567 lf->dtors_addr = ef->progtab[pb].addr; in link_elf_link_preload()
577 es->st_value += (Elf_Addr)ef->progtab[pb].addr; in link_elf_link_preload()
864 ef->progtab = malloc(ef->nprogtab * sizeof(*ef->progtab), in link_elf_load_file()
1024 ef->progtab[pb].name = in link_elf_load_file()
1026 if (!strcmp(ef->progtab[pb].name, ".ctors") || in link_elf_load_file()
1038 } else if (!strcmp(ef->progtab[pb].name, in link_elf_load_file()
1053 ef->progtab[pb].name = "<<PROGBITS>>"; in link_elf_load_file()
1056 ef->progtab[pb].name = "<<UNWIND>>"; in link_elf_load_file()
1059 ef->progtab[pb].name = "<<NOBITS>>"; in link_elf_load_file()
1060 if (ef->progtab[pb].name != NULL && in link_elf_load_file()
1061 !strcmp(ef->progtab[pb].name, DPCPU_SETNAME)) { in link_elf_load_file()
1062 ef->progtab[pb].addr = in link_elf_load_file()
1064 if (ef->progtab[pb].addr == NULL) { in link_elf_load_file()
1073 else if (ef->progtab[pb].name != NULL && in link_elf_load_file()
1074 !strcmp(ef->progtab[pb].name, VNET_SETNAME)) { in link_elf_load_file()
1075 ef->progtab[pb].addr = in link_elf_load_file()
1077 if (ef->progtab[pb].addr == NULL) { in link_elf_load_file()
1087 ef->progtab[pb].addr = in link_elf_load_file()
1089 if (ef->progtab[pb].addr == NULL) { in link_elf_load_file()
1093 ef->progtab[pb].size = shdr[i].sh_size; in link_elf_load_file()
1094 ef->progtab[pb].flags = shdr[i].sh_flags; in link_elf_load_file()
1095 ef->progtab[pb].sec = i; in link_elf_load_file()
1102 ef->progtab[pb].addr, in link_elf_load_file()
1113 if (ef->progtab[pb].addr != (void *)mapbase && in link_elf_load_file()
1114 !strcmp(ef->progtab[pb].name, DPCPU_SETNAME)) in link_elf_load_file()
1115 dpcpu_copy(ef->progtab[pb].addr, in link_elf_load_file()
1118 else if (ef->progtab[pb].addr != in link_elf_load_file()
1120 !strcmp(ef->progtab[pb].name, VNET_SETNAME)) in link_elf_load_file()
1121 vnet_data_copy(ef->progtab[pb].addr, in link_elf_load_file()
1125 bzero(ef->progtab[pb].addr, shdr[i].sh_size); in link_elf_load_file()
1132 es->st_value += (Elf_Addr)ef->progtab[pb].addr; in link_elf_load_file()
1260 if (ef->progtab) { in link_elf_unload_file()
1262 if (ef->progtab[i].size == 0) in link_elf_unload_file()
1264 if (ef->progtab[i].name == NULL) in link_elf_unload_file()
1266 if (!strcmp(ef->progtab[i].name, DPCPU_SETNAME)) in link_elf_unload_file()
1267 dpcpu_free(ef->progtab[i].addr, in link_elf_unload_file()
1268 ef->progtab[i].size); in link_elf_unload_file()
1270 else if (!strcmp(ef->progtab[i].name, VNET_SETNAME)) in link_elf_unload_file()
1271 vnet_data_free(ef->progtab[i].addr, in link_elf_unload_file()
1272 ef->progtab[i].size); in link_elf_unload_file()
1279 free(ef->progtab, M_LINKER); in link_elf_unload_file()
1294 free(ef->progtab, M_LINKER); in link_elf_unload_file()
1327 if (sec == ef->progtab[i].sec) { in findbase()
1328 base = (Elf_Addr)ef->progtab[i].addr; in findbase()
1564 if ((strncmp(ef->progtab[i].name, "set_", 4) == 0) && in link_elf_lookup_set()
1565 strcmp(ef->progtab[i].name + 4, name) == 0) { in link_elf_lookup_set()
1566 start = (void **)ef->progtab[i].addr; in link_elf_lookup_set()
1567 stop = (void **)((char *)ef->progtab[i].addr + in link_elf_lookup_set()
1568 ef->progtab[i].size); in link_elf_lookup_set()
1752 if (strcmp(ef->progtab[i].name, linkset_name) == 0) { in link_elf_fix_link_set()
1753 startp = (Elf_Addr)ef->progtab[i].addr; in link_elf_fix_link_set()
1754 stopp = (Elf_Addr)(startp + ef->progtab[i].size); in link_elf_fix_link_set()