Lines Matching refs:kpf

184 	kp_file_t *kpf = mdb_zalloc(sizeof (kp_file_t), UM_SLEEP);  in kp_file_create()  local
189 kpf->kpf_fio = kp_io_create(t, kpm); in kp_file_create()
190 kpf->kpf_map = kpm; in kp_file_create()
191 kpf->kpf_basename = strbasename(kpm->kpm_map.map_name); in kp_file_create()
192 kpf->kpf_file = mdb_gelf_create(kpf->kpf_fio, etype, GF_PROGRAM); in kp_file_create()
193 kpf->kpf_text_base = kpm->kpm_map.map_base; in kp_file_create()
196 kpf->kpf_dyn_base = kpf->kpf_text_base; in kp_file_create()
198 if (kpf->kpf_file == NULL) in kp_file_create()
205 kpf->kpf_text_base, &dyns, &dyns_sz) == RD_OK)) in kp_file_create()
206 mdb_gelf_dyns_set(kpf->kpf_file, dyns, dyns_sz); in kp_file_create()
208 kpf->kpf_dynsym = mdb_gelf_symtab_create_dynamic(kpf->kpf_file, in kp_file_create()
211 if (kpf->kpf_dynsym == NULL) in kp_file_create()
214 kpm->kpm_file = kpf; in kp_file_create()
217 kp->kp_file_tail->kpf_next = kpf; in kp_file_create()
219 kp->kp_file_head = kpf; in kp_file_create()
221 kp->kp_file_tail = kpf; in kp_file_create()
224 return (kpf); in kp_file_create()
227 if (kpf->kpf_file != NULL) in kp_file_create()
228 mdb_gelf_destroy(kpf->kpf_file); in kp_file_create()
230 mdb_io_destroy(kpf->kpf_fio); in kp_file_create()
231 mdb_free(kpf, sizeof (kp_file_t)); in kp_file_create()
236 kp_file_destroy(kp_file_t *kpf) in kp_file_destroy() argument
238 if (kpf->kpf_dynsym != NULL) in kp_file_destroy()
239 mdb_gelf_symtab_destroy(kpf->kpf_dynsym); in kp_file_destroy()
241 mdb_gelf_destroy(kpf->kpf_file); in kp_file_destroy()
242 mdb_free(kpf, sizeof (kp_file_t)); in kp_file_destroy()
260 kp_find_data(kp_data_t *kp, kp_file_t *kpf, const rd_loadobj_t *rlp) in kp_find_data() argument
262 GElf_Phdr *gpp = kpf->kpf_file->gf_phdrs; in kp_find_data()
263 size_t i, n = kpf->kpf_file->gf_npload; in kp_find_data()
271 kpf->kpf_data_base = gpp->p_vaddr; in kp_find_data()
272 if (kpf->kpf_map != kp->kp_map_exec) in kp_find_data()
273 kpf->kpf_data_base += rlp->rl_base; in kp_find_data()
282 if (kpf->kpf_data_base != 0) in kp_find_data()
283 return (kp_addr_to_kpmap(kp, kpf->kpf_data_base)); in kp_find_data()
292 kp_file_t *kpf; in kp_iter_mapping() local
313 if ((kpf = kpm->kpm_file) == NULL) { in kp_iter_mapping()
315 kpf = kp_file_create(t, kpm, ET_EXEC); in kp_iter_mapping()
317 kpf = kp_file_create(t, kpm, ET_DYN); in kp_iter_mapping()
319 if (kpf == NULL) in kp_iter_mapping()
322 kpf->kpf_basename = strbasename(kpm->kpm_map.map_name); in kp_iter_mapping()
324 if ((kpm = kp_find_data(kp, kpf, rlp)) != NULL) { in kp_iter_mapping()
326 kpf->kpf_basename, (void *)kpm->kpm_map.map_base); in kp_iter_mapping()
327 kpm->kpm_file = kpf; in kp_iter_mapping()
408 kp_file_t *kpf, *nkpf; in kp_destroy() local
418 for (kpf = kp->kp_file_head; kpf != NULL; kpf = nkpf) { in kp_destroy()
419 nkpf = kpf->kpf_next; in kp_destroy()
420 kp_file_destroy(kpf); in kp_destroy()
477 kp_file_t *kpf; in kp_name_to_kpmap() local
494 if ((kpf = kpm->kpm_file) != NULL) { in kp_name_to_kpmap()
496 strcmp(kpf->kpf_basename, name) == 0) in kp_name_to_kpmap()
497 return (kpf->kpf_map); in kp_name_to_kpmap()
508 if ((kpf = kpm->kpm_file) != NULL) { in kp_name_to_kpmap()
509 if (strncmp(kpf->kpf_basename, name, namelen) == 0 && in kp_name_to_kpmap()
510 kpf->kpf_basename[namelen] == '.') in kp_name_to_kpmap()
511 return (kpf->kpf_map); in kp_name_to_kpmap()
574 kp_file_t *kpf; in kp_lookup_by_name() local
590 kpf = kpm->kpm_file; in kp_lookup_by_name()
593 kpf = kp->kp_file_head; in kp_lookup_by_name()
604 for (; n > 0; n--, kpf = kpf->kpf_next) { in kp_lookup_by_name()
605 if (kpf->kpf_dynsym == NULL) in kp_lookup_by_name()
608 if (mdb_gelf_symtab_lookup_by_name(kpf->kpf_dynsym, in kp_lookup_by_name()
612 symp->st_value += kpf->kpf_dyn_base; in kp_lookup_by_name()
648 kp_file_t *kpf; in kp_lookup_by_addr() local
672 kpf = kp->kp_file_head; in kp_lookup_by_addr()
675 kpf = kpm->kpm_file; in kp_lookup_by_addr()
684 for (; n > 0; n--, kpf = kpf->kpf_next) { in kp_lookup_by_addr()
685 if (kpf->kpf_dynsym == NULL) in kp_lookup_by_addr()
688 if (mdb_gelf_symtab_lookup_by_addr(kpf->kpf_dynsym, in kp_lookup_by_addr()
689 addr - kpf->kpf_dyn_base, flags, buf, nbytes, in kp_lookup_by_addr()
693 symp->st_value += kpf->kpf_dyn_base; in kp_lookup_by_addr()
696 sym_kpf = kpf; in kp_lookup_by_addr()
701 sym_kpf = kpf; in kp_lookup_by_addr()
754 kp_symtab_iter(kp_file_t *kpf, uint_t type, const char *obj, in kp_symtab_iter() argument
757 if (kpf->kpf_dynsym != NULL) { in kp_symtab_iter()
763 arg.sym_adjust = kpf->kpf_dyn_base; in kp_symtab_iter()
764 arg.sym_info.sym_table = kpf->kpf_dynsym->gst_tabid; in kp_symtab_iter()
767 mdb_gelf_symtab_iter(kpf->kpf_dynsym, kp_symtab_func, &arg); in kp_symtab_iter()
777 kp_file_t *kpf = NULL; in kp_symbol_iter() local
783 kpf = kp->kp_map_exec->kpm_file; in kp_symbol_iter()
784 kp_symtab_iter(kpf, type, MDB_TGT_OBJ_EXEC, func, in kp_symbol_iter()
788 kpf = kp->kp_map_ldso->kpm_file; in kp_symbol_iter()
789 kp_symtab_iter(kpf, type, MDB_TGT_OBJ_RTLD, func, in kp_symbol_iter()
796 kpf = kp->kp_map_exec->kpm_file; in kp_symbol_iter()
801 kpf = kp->kp_map_ldso->kpm_file; in kp_symbol_iter()
806 kpf = kpm->kpm_file; in kp_symbol_iter()
812 if (kpf != NULL) in kp_symbol_iter()
813 kp_symtab_iter(kpf, type, object, func, private); in kp_symbol_iter()
836 kp_file_t *kpf; in kp_object_iter() local
838 for (kpf = kp->kp_file_head; kpf != NULL; kpf = kpf->kpf_next) { in kp_object_iter()
839 if (func(private, &kpf->kpf_map->kpm_map, in kp_object_iter()
840 kpf->kpf_map->kpm_map.map_name) != 0) in kp_object_iter()