Lines Matching defs:km

98 kt_load_module(kt_data_t *kt, mdb_tgt_t *t, kt_module_t *km)
100 km->km_data = mdb_alloc(km->km_datasz, UM_SLEEP);
102 (void) mdb_tgt_vread(t, km->km_data, km->km_datasz, km->km_symspace_va);
104 km->km_symbuf = (void *)
105 KT_RELOC_BUF(km->km_symtab_va, km->km_symspace_va, km->km_data);
107 km->km_strtab = (char *)
108 KT_RELOC_BUF(km->km_strtab_va, km->km_symspace_va, km->km_data);
110 km->km_symtab = mdb_gelf_symtab_create_raw(&kt->k_file->gf_ehdr,
111 &km->km_symtab_hdr, km->km_symbuf,
112 &km->km_strtab_hdr, km->km_strtab, MDB_TGT_SYMTAB);
126 kt_module_t *km;
233 km = mdb_zalloc(sizeof (kt_module_t), UM_SLEEP);
234 km->km_name = strdup(name);
236 (void) mdb_nv_insert(&kt->k_modules, km->km_name, NULL,
237 (uintptr_t)km, MDB_NV_EXTNAME);
239 km->km_datasz = kmod.symsize;
240 km->km_symspace_va = (uintptr_t)kmod.symspace;
241 km->km_symtab_va = (uintptr_t)kmod.symtbl;
242 km->km_strtab_va = (uintptr_t)kmod.strings;
243 km->km_symtab_hdr = symhdr;
244 km->km_strtab_hdr = strhdr;
245 km->km_text_va = (uintptr_t)kmod.text;
246 km->km_text_size = kmod.text_size;
247 km->km_data_va = (uintptr_t)kmod.data;
248 km->km_data_size = kmod.data_size;
249 km->km_bss_va = (uintptr_t)kmod.bss;
250 km->km_bss_size = kmod.bss_size;
253 km->km_ctf_va = (uintptr_t)kmod.ctfdata;
254 km->km_ctf_size = kmod.ctfsize;
262 mdb_list_append(&kt->k_modlist, km);
267 kt_load_module(kt, t, km);
540 kt_module_t *km;
542 for (km = mdb_list_next(&kt->k_modlist); km; km = mdb_list_next(km)) {
543 if (strcmp(name, km->km_name) == 0)
544 return (km);
834 kt_module_t *km, kmod;
847 km = &kmod;
852 km = &kmod;
864 km = mdb_nv_get_cookie(v);
867 if (km->km_symtab == NULL)
868 kt_load_module(kt, t, km);
871 for (; n > 0; n--, km = mdb_list_next(km)) {
872 if (mdb_gelf_symtab_lookup_by_name(km->km_symtab, name,
890 kt_module_t *km = &kmods[0]; /* Point km at first fake module */
900 km->km_symtab = mdb.m_prsym;
903 km->km_list.ml_next = (mdb_list_t *)(km + 1);
904 km = mdb_list_next(km);
905 km->km_symtab = kt->k_symtab;
909 km->km_list.ml_next = (mdb_list_t *)(km + 1);
910 km = mdb_list_next(km);
911 km->km_symtab = kt->k_dynsym;
914 km->km_list.ml_next = mdb_list_next(&kt->k_modlist);
915 kmods_end = km;
924 for (km = &kmods[0]; km != NULL; km = mdb_list_next(km)) {
925 if (km->km_symtab == NULL && addr >= km->km_text_va &&
926 addr < km->km_text_va + km->km_text_size)
927 kt_load_module(kt, t, km);
929 if (mdb_gelf_symtab_lookup_by_addr(km->km_symtab, addr,
935 sym_km = km;
940 sym_km = km;
1013 kt_module_t *km;
1035 km = mdb_nv_get_cookie(v);
1037 if (km->km_symtab == NULL)
1038 kt_load_module(kt, t, km);
1040 if (km->km_symtab != NULL)
1041 kt_symtab_iter(km->km_symtab, type,
1042 km->km_name, cb, data);
1056 km = mdb_nv_get_cookie(v);
1058 if (km->km_symtab == NULL)
1059 kt_load_module(kt, t, km);
1061 symtab = km->km_symtab;
1117 kt_module_to_map(kt_module_t *km, mdb_map_t *map)
1119 (void) strncpy(map->map_name, km->km_name, MDB_TGT_MAPSZ);
1121 map->map_base = km->km_text_va;
1122 map->map_size = km->km_text_size;
1132 kt_module_t *km;
1135 for (km = mdb_list_next(&kt->k_modlist); km; km = mdb_list_next(km)) {
1136 if (func(private, kt_module_to_map(km, &m), km->km_name) == -1)
1147 kt_module_t *km;
1149 for (km = mdb_list_next(&kt->k_modlist); km; km = mdb_list_next(km)) {
1150 if (addr - km->km_text_va < km->km_text_size ||
1151 addr - km->km_data_va < km->km_data_size ||
1152 addr - km->km_bss_va < km->km_bss_size)
1153 return (kt_module_to_map(km, &kt->k_map));
1164 kt_module_t *km;
1177 if ((km = kt_module_by_name(kt, name)) != NULL)
1178 return (kt_module_to_map(km, &m));
1185 kt_load_ctfdata(mdb_tgt_t *t, kt_module_t *km)
1190 if (km->km_ctfp != NULL)
1191 return (km->km_ctfp);
1193 if (km->km_ctf_va == NULL) {
1198 if (km->km_symtab == NULL)
1199 kt_load_module(t->t_data, t, km);
1201 if ((km->km_ctf_buf = mdb_alloc(km->km_ctf_size, UM_NOSLEEP)) == NULL) {
1203 "information", km->km_name);
1207 if (mdb_tgt_vread(t, km->km_ctf_buf, km->km_ctf_size,
1208 km->km_ctf_va) != km->km_ctf_size) {
1210 (ulong_t)km->km_ctf_size, km->km_name,
1211 (void *)km->km_ctf_va);
1212 mdb_free(km->km_ctf_buf, km->km_ctf_size);
1213 km->km_ctf_buf = NULL;
1217 if ((km->km_ctfp = mdb_ctf_bufopen((const void *)km->km_ctf_buf,
1218 km->km_ctf_size, km->km_symbuf, &km->km_symtab_hdr,
1219 km->km_strtab, &km->km_strtab_hdr, &err)) == NULL) {
1220 mdb_free(km->km_ctf_buf, km->km_ctf_size);
1221 km->km_ctf_buf = NULL;
1227 (ulong_t)km->km_ctf_size, km->km_name);
1229 if (ctf_parent_name(km->km_ctfp) != NULL) {
1233 ctf_parent_name(km->km_ctfp))) == NULL) {
1235 "loaded\n", km->km_name,
1236 ctf_parent_name(km->km_ctfp));
1245 if (pm->km_ctfp != NULL && ctf_import(km->km_ctfp,
1248 "%s: %s\n", km->km_name,
1249 ctf_errmsg(ctf_errno(km->km_ctfp)));
1254 return (km->km_ctfp);
1261 kt_module_t *km;
1263 for (km = mdb_list_next(&kt->k_modlist); km; km = mdb_list_next(km)) {
1264 if (addr - km->km_text_va < km->km_text_size ||
1265 addr - km->km_data_va < km->km_data_size ||
1266 addr - km->km_bss_va < km->km_bss_size)
1267 return (kt_load_ctfdata(t, km));
1278 kt_module_t *km;
1285 if ((km = kt_module_by_name(kt, name)) != NULL)
1286 return (kt_load_ctfdata(t, km));
1324 kt_module_t *km, *nkm;
1344 for (km = mdb_list_next(&kt->k_modlist); km; km = nkm) {
1345 if (km->km_symtab)
1346 mdb_gelf_symtab_destroy(km->km_symtab);
1348 if (km->km_data)
1349 mdb_free(km->km_data, km->km_datasz);
1351 if (km->km_ctfp)
1352 ctf_close(km->km_ctfp);
1354 if (km->km_ctf_buf != NULL)
1355 mdb_free(km->km_ctf_buf, km->km_ctf_size);
1357 nkm = mdb_list_next(km);
1358 strfree(km->km_name);
1359 mdb_free(km, sizeof (kt_module_t));