Lines Matching refs:P
117 get_saddrs(struct ps_prochandle *P, uintptr_t ehdr_start, uint_t *n) in get_saddrs() argument
122 if (P->status.pr_dmodel == PR_MODEL_ILP32) { in get_saddrs()
127 if (read_ehdr32(P, &ehdr, &phnum, ehdr_start) != 0) in get_saddrs()
133 if (Pread(P, &phdr, sizeof (phdr), a) != in get_saddrs()
155 if (read_ehdr64(P, &ehdr, &phnum, ehdr_start) != 0) in get_saddrs()
161 if (Pread(P, &phdr, sizeof (phdr), a) != in get_saddrs()
191 file_info_new(struct ps_prochandle *P, map_info_t *mptr) in file_info_new() argument
201 list_insert_tail(&P->file_head, fptr); in file_info_new()
207 P->num_files++; in file_info_new()
217 if ((fptr->file_saddrs = get_saddrs(P, mptr->map_pmap.pr_vaddr, in file_info_new()
221 mp = P->mappings; in file_info_new()
223 while (mp < P->mappings + P->map_count && i < fptr->file_nsaddrs) { in file_info_new()
263 file_info_free(struct ps_prochandle *P, file_info_t *fptr) in file_info_free() argument
266 list_remove(&P->file_head, fptr); in file_info_free()
306 P->num_files--; in file_info_free()
314 map_info_free(struct ps_prochandle *P, map_info_t *mptr) in map_info_free() argument
321 file_info_free(P, fptr); in map_info_free()
323 if (P->execname && mptr == P->map_exec) { in map_info_free()
324 free(P->execname); in map_info_free()
325 P->execname = NULL; in map_info_free()
327 if (P->auxv && (mptr == P->map_exec || mptr == P->map_ldso)) { in map_info_free()
328 free(P->auxv); in map_info_free()
329 P->auxv = NULL; in map_info_free()
330 P->nauxv = 0; in map_info_free()
332 if (mptr == P->map_exec) in map_info_free()
333 P->map_exec = NULL; in map_info_free()
334 if (mptr == P->map_ldso) in map_info_free()
335 P->map_ldso = NULL; in map_info_free()
346 struct ps_prochandle *P = cd; in map_iter() local
352 if ((mptr = Paddr2mptr(P, lop->rl_base)) == NULL) { in map_iter()
358 (fptr = file_info_new(P, mptr)) == NULL) { in map_iter()
366 file_info_free(P, fptr); in map_iter()
387 if (Pread_string(P, buf, sizeof (buf), lop->rl_nameaddr) > 0) { in map_iter()
395 if ((Pfindmap(P, mptr, buf, sizeof (buf)) != NULL) && in map_iter()
405 map_set(struct ps_prochandle *P, map_info_t *mptr, const char *lname) in map_set() argument
411 (fptr = file_info_new(P, mptr)) == NULL) in map_set()
418 file_info_free(P, fptr); in map_set()
434 if ((Pfindmap(P, mptr, buf, sizeof (buf)) != NULL) && in map_set()
440 load_static_maps(struct ps_prochandle *P) in load_static_maps() argument
447 if ((mptr = object_name_to_map(P, PR_LMID_EVERY, PR_OBJ_EXEC)) != NULL) in load_static_maps()
448 map_set(P, mptr, "a.out"); in load_static_maps()
454 if (Pgetauxval(P, AT_BASE) != -1L && in load_static_maps()
455 (mptr = object_name_to_map(P, PR_LMID_EVERY, PR_OBJ_LDSO)) != NULL) in load_static_maps()
456 map_set(P, mptr, "ld.so.1"); in load_static_maps()
460 Preadmaps(struct ps_prochandle *P, prmap_t **Pmapp, ssize_t *nmapp) in Preadmaps() argument
462 return (P->ops.pop_read_maps(P, Pmapp, nmapp, P->data)); in Preadmaps()
473 Pupdate_maps(struct ps_prochandle *P) in Pupdate_maps() argument
483 if (P->info_valid || P->state == PS_UNDEAD) in Pupdate_maps()
486 Preadauxvec(P); in Pupdate_maps()
488 if (Preadmaps(P, &Pmap, &nmap) != 0) in Pupdate_maps()
498 mptr = P->mappings; in Pupdate_maps()
501 oldmapcount = P->map_count; in Pupdate_maps()
527 if (P->map_exec == mptr) in Pupdate_maps()
528 P->map_exec = newp; in Pupdate_maps()
529 if (P->map_ldso == mptr) in Pupdate_maps()
530 P->map_ldso = newp; in Pupdate_maps()
545 map_info_free(P, mptr); in Pupdate_maps()
565 map_info_free(P, mptr); in Pupdate_maps()
571 if (P->mappings != NULL) in Pupdate_maps()
572 free(P->mappings); in Pupdate_maps()
573 P->mappings = newmap; in Pupdate_maps()
574 P->map_count = P->map_alloc = nmap; in Pupdate_maps()
575 P->info_valid = 1; in Pupdate_maps()
581 if (P->rap != NULL) in Pupdate_maps()
582 (void) rd_loadobj_iter(P->rap, map_iter, P); in Pupdate_maps()
590 Pupdate_syms(struct ps_prochandle *P) in Pupdate_syms() argument
594 Pupdate_maps(P); in Pupdate_syms()
596 for (fptr = list_head(&P->file_head); fptr != NULL; in Pupdate_syms()
597 fptr = list_next(&P->file_head, fptr)) { in Pupdate_syms()
598 Pbuild_file_symtab(P, fptr); in Pupdate_syms()
599 (void) Pbuild_file_ctf(P, fptr); in Pupdate_syms()
611 Prd_agent(struct ps_prochandle *P) in Prd_agent() argument
613 if (P->rap == NULL && P->state != PS_DEAD && P->state != PS_IDLE) { in Prd_agent()
614 Pupdate_maps(P); in Prd_agent()
615 if (P->num_files == 0) in Prd_agent()
616 load_static_maps(P); in Prd_agent()
618 if ((P->rap = rd_new(P)) != NULL) in Prd_agent()
619 (void) rd_loadobj_iter(P->rap, map_iter, P); in Prd_agent()
621 return (P->rap); in Prd_agent()
629 Paddr_to_text_map(struct ps_prochandle *P, uintptr_t addr) in Paddr_to_text_map() argument
633 if (!P->info_valid) in Paddr_to_text_map()
634 Pupdate_maps(P); in Paddr_to_text_map()
636 if ((mptr = Paddr2mptr(P, addr)) != NULL) { in Paddr_to_text_map()
637 file_info_t *fptr = build_map_symtab(P, mptr); in Paddr_to_text_map()
662 Paddr_to_map(struct ps_prochandle *P, uintptr_t addr) in Paddr_to_map() argument
666 if (!P->info_valid) in Paddr_to_map()
667 Pupdate_maps(P); in Paddr_to_map()
669 if ((mptr = Paddr2mptr(P, addr)) != NULL) in Paddr_to_map()
680 Plmid_to_map(struct ps_prochandle *P, Lmid_t lmid, const char *name) in Plmid_to_map() argument
687 if ((mptr = object_name_to_map(P, lmid, name)) != NULL) in Plmid_to_map()
694 Pname_to_map(struct ps_prochandle *P, const char *name) in Pname_to_map() argument
696 return (Plmid_to_map(P, PR_LMID_EVERY, name)); in Pname_to_map()
700 Paddr_to_loadobj(struct ps_prochandle *P, uintptr_t addr) in Paddr_to_loadobj() argument
704 if (!P->info_valid) in Paddr_to_loadobj()
705 Pupdate_maps(P); in Paddr_to_loadobj()
707 if ((mptr = Paddr2mptr(P, addr)) == NULL) in Paddr_to_loadobj()
714 (void) build_map_symtab(P, mptr); in Paddr_to_loadobj()
720 Plmid_to_loadobj(struct ps_prochandle *P, Lmid_t lmid, const char *name) in Plmid_to_loadobj() argument
727 if ((mptr = object_name_to_map(P, lmid, name)) == NULL) in Plmid_to_loadobj()
734 (void) build_map_symtab(P, mptr); in Plmid_to_loadobj()
740 Pname_to_loadobj(struct ps_prochandle *P, const char *name) in Pname_to_loadobj() argument
742 return (Plmid_to_loadobj(P, PR_LMID_EVERY, name)); in Pname_to_loadobj()
746 Pbuild_file_ctf(struct ps_prochandle *P, file_info_t *fptr) in Pbuild_file_ctf() argument
755 Pbuild_file_symtab(P, fptr); in Pbuild_file_ctf()
824 Paddr_to_ctf(struct ps_prochandle *P, uintptr_t addr) in Paddr_to_ctf() argument
829 if (!P->info_valid) in Paddr_to_ctf()
830 Pupdate_maps(P); in Paddr_to_ctf()
832 if ((mptr = Paddr2mptr(P, addr)) == NULL || in Paddr_to_ctf()
836 return (Pbuild_file_ctf(P, fptr)); in Paddr_to_ctf()
840 Plmid_to_ctf(struct ps_prochandle *P, Lmid_t lmid, const char *name) in Plmid_to_ctf() argument
855 if (P->state == PS_IDLE && name == PR_OBJ_EXEC && P->info_valid == 1 && in Plmid_to_ctf()
856 P->num_files == 1 && P->mappings == NULL) { in Plmid_to_ctf()
857 fptr = list_head(&P->file_head); in Plmid_to_ctf()
861 if ((mptr = object_name_to_map(P, lmid, name)) == NULL || in Plmid_to_ctf()
866 return (Pbuild_file_ctf(P, fptr)); in Plmid_to_ctf()
870 Pname_to_ctf(struct ps_prochandle *P, const char *name) in Pname_to_ctf() argument
872 return (Plmid_to_ctf(P, PR_LMID_EVERY, name)); in Pname_to_ctf()
876 Preadauxvec(struct ps_prochandle *P) in Preadauxvec() argument
878 if (P->auxv != NULL) { in Preadauxvec()
879 free(P->auxv); in Preadauxvec()
880 P->auxv = NULL; in Preadauxvec()
881 P->nauxv = 0; in Preadauxvec()
884 P->ops.pop_read_aux(P, &P->auxv, &P->nauxv, P->data); in Preadauxvec()
892 Pgetauxval(struct ps_prochandle *P, int type) in Pgetauxval() argument
896 if (P->auxv == NULL) in Pgetauxval()
897 Preadauxvec(P); in Pgetauxval()
899 if (P->auxv == NULL) in Pgetauxval()
902 for (auxv = P->auxv; auxv->a_type != AT_NULL; auxv++) { in Pgetauxval()
915 Pgetauxvec(struct ps_prochandle *P) in Pgetauxvec() argument
919 if (P->auxv == NULL) in Pgetauxvec()
920 Preadauxvec(P); in Pgetauxvec()
922 if (P->auxv == NULL) in Pgetauxvec()
925 return (P->auxv); in Pgetauxvec()
933 is_mapping_in_file(struct ps_prochandle *P, map_info_t *mptr, file_info_t *fptr) in is_mapping_in_file() argument
966 (fptr->file_saddrs = get_saddrs(P, in is_mapping_in_file()
987 build_map_symtab(struct ps_prochandle *P, map_info_t *mptr) in build_map_symtab() argument
993 Pbuild_file_symtab(P, fptr); in build_map_symtab()
1004 for (fptr = list_head(&P->file_head); fptr != NULL; in build_map_symtab()
1005 fptr = list_next(&P->file_head, fptr)) { in build_map_symtab()
1007 fptr->file_lo && is_mapping_in_file(P, mptr, fptr)) { in build_map_symtab()
1010 Pbuild_file_symtab(P, fptr); in build_map_symtab()
1022 if ((fptr = file_info_new(P, mptr)) == NULL) in build_map_symtab()
1025 if (P->map_ldso != mptr) { in build_map_symtab()
1026 if (P->rap != NULL) in build_map_symtab()
1027 (void) rd_loadobj_iter(P->rap, map_iter, P); in build_map_symtab()
1029 (void) Prd_agent(P); in build_map_symtab()
1045 Pbuild_file_symtab(P, fptr); in build_map_symtab()
1051 read_ehdr32(struct ps_prochandle *P, Elf32_Ehdr *ehdr, uint_t *phnum, in read_ehdr32() argument
1054 if (Pread(P, ehdr, sizeof (*ehdr), addr) != sizeof (*ehdr)) in read_ehdr32()
1074 Pread(P, &shdr0, sizeof (shdr0), addr + ehdr->e_shoff) != in read_ehdr32()
1086 read_dynamic_phdr32(struct ps_prochandle *P, const Elf32_Ehdr *ehdr, in read_dynamic_phdr32() argument
1093 if (Pread(P, phdr, sizeof (*phdr), a) != sizeof (*phdr)) in read_dynamic_phdr32()
1105 read_ehdr64(struct ps_prochandle *P, Elf64_Ehdr *ehdr, uint_t *phnum, in read_ehdr64() argument
1108 if (Pread(P, ehdr, sizeof (Elf64_Ehdr), addr) != sizeof (Elf64_Ehdr)) in read_ehdr64()
1128 Pread(P, &shdr0, sizeof (shdr0), addr + ehdr->e_shoff) != in read_ehdr64()
1140 read_dynamic_phdr64(struct ps_prochandle *P, const Elf64_Ehdr *ehdr, in read_dynamic_phdr64() argument
1147 if (Pread(P, phdr, sizeof (*phdr), a) != sizeof (*phdr)) in read_dynamic_phdr64()
1194 file_differs(struct ps_prochandle *P, Elf *elf, file_info_t *fptr) in file_differs() argument
1207 if ((Pcontent(P) & (CC_CONTENT_TEXT | CC_CONTENT_DATA)) != in file_differs()
1226 if (P->status.pr_dmodel == PR_MODEL_ILP32) in file_differs()
1229 else if (P->status.pr_dmodel == PR_MODEL_LP64) in file_differs()
1256 if (P->status.pr_dmodel == PR_MODEL_ILP32) { in file_differs()
1262 if (read_ehdr32(P, &ehdr, &phnum, addr) != 0 || in file_differs()
1263 read_dynamic_phdr32(P, &ehdr, phnum, &phdr, addr) != 0) in file_differs()
1271 if (Pread(P, dynp, phdr.p_filesz, phdr.p_vaddr) != in file_differs()
1291 } else if (P->status.pr_dmodel == PR_MODEL_LP64) { in file_differs()
1297 if (read_ehdr64(P, &ehdr, &phnum, addr) != 0 || in file_differs()
1298 read_dynamic_phdr64(P, &ehdr, phnum, &phdr, addr) != 0) in file_differs()
1306 if (Pread(P, dynp, phdr.p_filesz, phdr.p_vaddr) != in file_differs()
1337 fake_elf(struct ps_prochandle *P, file_info_t *fptr) in fake_elf() argument
1346 if ((Pcontent(P) & (CC_CONTENT_TEXT | CC_CONTENT_DATA)) != in fake_elf()
1352 if (P->status.pr_dmodel == PR_MODEL_ILP32) { in fake_elf()
1356 if ((read_ehdr32(P, &ehdr, &phnum, addr) != 0) || in fake_elf()
1357 read_dynamic_phdr32(P, &ehdr, phnum, &phdr, addr) != 0) in fake_elf()
1360 elf = fake_elf32(P, fptr, addr, &ehdr, phnum, &phdr); in fake_elf()
1366 if (read_ehdr64(P, &ehdr, &phnum, addr) != 0 || in fake_elf()
1367 read_dynamic_phdr64(P, &ehdr, phnum, &phdr, addr) != 0) in fake_elf()
1370 elf = fake_elf64(P, fptr, addr, &ehdr, phnum, &phdr); in fake_elf()
1580 build_fake_elf(struct ps_prochandle *P, file_info_t *fptr, GElf_Ehdr *ehdr, in build_fake_elf() argument
1587 if ((elf = fake_elf(P, fptr)) == NULL || in build_fake_elf()
1826 Pbuild_file_symtab(struct ps_prochandle *P, file_info_t *fptr) in Pbuild_file_symtab() argument
1860 if (P->state == PS_DEAD || P->state == PS_IDLE) { in Pbuild_file_symtab()
1884 procfs_path, (int)P->pid, fptr->file_pname); in Pbuild_file_symtab()
1894 if (_libproc_incore_elf || (P->flags & INCORE)) { in Pbuild_file_symtab()
1898 if ((elf = build_fake_elf(P, fptr, &ehdr, &nshdrs, &shdata)) == in Pbuild_file_symtab()
1906 if ((elf = build_fake_elf(P, fptr, &ehdr, &nshdrs, &shdata)) == in Pbuild_file_symtab()
1923 if ((elf = build_fake_elf(P, fptr, &ehdr, &nshdrs, &shdata)) == in Pbuild_file_symtab()
1927 } else if (file_differs(P, elf, fptr)) { in Pbuild_file_symtab()
1940 if ((newelf = build_fake_elf(P, fptr, &ehdr, &nshdrs, &shdata)) in Pbuild_file_symtab()
1953 if (fptr->file_rname != NULL && P->execname != NULL && in Pbuild_file_symtab()
1954 strcmp(fptr->file_rname, P->execname) == 0) { in Pbuild_file_symtab()
1957 free(P->execname); in Pbuild_file_symtab()
1958 P->execname = NULL; in Pbuild_file_symtab()
2357 Paddr2mptr(struct ps_prochandle *P, uintptr_t addr) in Paddr2mptr() argument
2360 int hi = P->map_count - 1; in Paddr2mptr()
2367 mp = &P->mappings[mid]; in Paddr2mptr()
2387 exec_map(struct ps_prochandle *P) in exec_map() argument
2395 for (i = 0, mptr = P->mappings; i < P->map_count; i++, mptr++) { in exec_map()
2441 object_to_map(struct ps_prochandle *P, Lmid_t lmid, const char *objname) in object_to_map() argument
2452 if (P->rap == NULL) in object_to_map()
2459 for (i = 0, mp = P->mappings; i < P->map_count; i++, mp++) { in object_to_map()
2486 for (i = 0, mp = P->mappings; i < P->map_count; i++, mp++) { in object_to_map()
2517 return (P->map_exec); in object_to_map()
2523 object_name_to_map(struct ps_prochandle *P, Lmid_t lmid, const char *name) in object_name_to_map() argument
2527 if (!P->info_valid) in object_name_to_map()
2528 Pupdate_maps(P); in object_name_to_map()
2530 if (P->map_exec == NULL && ((mptr = Paddr2mptr(P, in object_name_to_map()
2531 Pgetauxval(P, AT_ENTRY))) != NULL || (mptr = exec_map(P)) != NULL)) in object_name_to_map()
2532 P->map_exec = mptr; in object_name_to_map()
2534 if (P->map_ldso == NULL && (mptr = Paddr2mptr(P, in object_name_to_map()
2535 Pgetauxval(P, AT_BASE))) != NULL) in object_name_to_map()
2536 P->map_ldso = mptr; in object_name_to_map()
2539 mptr = P->map_exec; in object_name_to_map()
2541 mptr = P->map_ldso; in object_name_to_map()
2542 else if (Prd_agent(P) != NULL || P->state == PS_IDLE) in object_name_to_map()
2543 mptr = object_to_map(P, lmid, name); in object_name_to_map()
2790 struct ps_prochandle *P, in i_Pxlookup_by_addr() argument
2809 (void) Prd_agent(P); in i_Pxlookup_by_addr()
2811 if ((mptr = Paddr2mptr(P, addr)) == NULL || /* no such address */ in i_Pxlookup_by_addr()
2812 (fptr = build_map_symtab(P, mptr)) == NULL || /* no mapped file */ in i_Pxlookup_by_addr()
2859 Pxlookup_by_addr(struct ps_prochandle *P, uintptr_t addr, char *buf, in Pxlookup_by_addr() argument
2862 return (i_Pxlookup_by_addr(P, B_FALSE, addr, buf, bufsize, symp, sip)); in Pxlookup_by_addr()
2866 Pxlookup_by_addr_resolved(struct ps_prochandle *P, uintptr_t addr, char *buf, in Pxlookup_by_addr_resolved() argument
2869 return (i_Pxlookup_by_addr(P, B_TRUE, addr, buf, bufsize, symp, sip)); in Pxlookup_by_addr_resolved()
2873 Plookup_by_addr(struct ps_prochandle *P, uintptr_t addr, char *buf, in Plookup_by_addr() argument
2876 return (i_Pxlookup_by_addr(P, B_FALSE, addr, buf, size, symp, NULL)); in Plookup_by_addr()
2887 struct ps_prochandle *P, in Pxlookup_by_name() argument
2905 (void) Prd_agent(P); in Pxlookup_by_name()
2906 cnt = P->num_files; in Pxlookup_by_name()
2907 fptr = list_head(&P->file_head); in Pxlookup_by_name()
2910 if ((mptr = object_name_to_map(P, lmid, oname)) == NULL || in Pxlookup_by_name()
2911 (fptr = build_map_symtab(P, mptr)) == NULL) in Pxlookup_by_name()
2922 for (; cnt > 0; cnt--, fptr = list_next(&P->file_head, fptr)) { in Pxlookup_by_name()
2923 Pbuild_file_symtab(P, fptr); in Pxlookup_by_name()
2984 Plookup_by_name(struct ps_prochandle *P, const char *object, in Plookup_by_name() argument
2987 return (Pxlookup_by_name(P, PR_LMID_EVERY, object, symbol, symp, NULL)); in Plookup_by_name()
2994 i_Pmapping_iter(struct ps_prochandle *P, boolean_t lmresolve, in i_Pmapping_iter() argument
3004 (void) Prd_agent(P); in i_Pmapping_iter()
3006 for (i = 0, mptr = P->mappings; i < P->map_count; i++, mptr++) { in i_Pmapping_iter()
3020 Pmapping_iter(struct ps_prochandle *P, proc_map_f *func, void *cd) in Pmapping_iter() argument
3022 return (i_Pmapping_iter(P, B_FALSE, func, cd)); in Pmapping_iter()
3026 Pmapping_iter_resolved(struct ps_prochandle *P, proc_map_f *func, void *cd) in Pmapping_iter_resolved() argument
3028 return (i_Pmapping_iter(P, B_TRUE, func, cd)); in Pmapping_iter_resolved()
3035 i_Pobject_iter(struct ps_prochandle *P, boolean_t lmresolve, in i_Pobject_iter() argument
3042 (void) Prd_agent(P); /* create file_info_t's for all the mappings */ in i_Pobject_iter()
3043 Pupdate_maps(P); in i_Pobject_iter()
3045 for (fptr = list_head(&P->file_head); fptr != NULL; in i_Pobject_iter()
3046 fptr = list_next(&P->file_head, fptr)) { in i_Pobject_iter()
3062 if (!P->info_valid) in i_Pobject_iter()
3063 Pupdate_maps(P); in i_Pobject_iter()
3069 Pobject_iter(struct ps_prochandle *P, proc_map_f *func, void *cd) in Pobject_iter() argument
3071 return (i_Pobject_iter(P, B_FALSE, func, cd)); in Pobject_iter()
3075 Pobject_iter_resolved(struct ps_prochandle *P, proc_map_f *func, void *cd) in Pobject_iter_resolved() argument
3077 return (i_Pobject_iter(P, B_TRUE, func, cd)); in Pobject_iter_resolved()
3081 i_Pobjname(struct ps_prochandle *P, boolean_t lmresolve, uintptr_t addr, in i_Pobjname() argument
3088 (void) Prd_agent(P); in i_Pobjname()
3090 if ((mptr = Paddr2mptr(P, addr)) == NULL) in i_Pobjname()
3102 if (Pfindmap(P, mptr, buffer, bufsize) != NULL) in i_Pobjname()
3114 Pobjname(struct ps_prochandle *P, uintptr_t addr, in Pobjname() argument
3117 return (i_Pobjname(P, B_FALSE, addr, buffer, bufsize)); in Pobjname()
3129 Pobjname_resolved(struct ps_prochandle *P, uintptr_t addr, in Pobjname_resolved() argument
3132 return (i_Pobjname(P, B_TRUE, addr, buffer, bufsize)); in Pobjname_resolved()
3140 Plmid(struct ps_prochandle *P, uintptr_t addr, Lmid_t *lmidp) in Plmid() argument
3146 (void) Prd_agent(P); in Plmid()
3148 if ((mptr = Paddr2mptr(P, addr)) != NULL && in Plmid()
3163 Psymbol_iter_com(struct ps_prochandle *P, Lmid_t lmid, const char *object_name, in Psymbol_iter_com() argument
3182 if ((mptr = object_name_to_map(P, lmid, object_name)) == NULL) in Psymbol_iter_com()
3185 if ((fptr = build_map_symtab(P, mptr)) == NULL || /* no mapped file */ in Psymbol_iter_com()
3288 Pxsymbol_iter(struct ps_prochandle *P, Lmid_t lmid, const char *object_name, in Pxsymbol_iter() argument
3291 return (Psymbol_iter_com(P, lmid, object_name, which, mask, in Pxsymbol_iter()
3296 Psymbol_iter_by_lmid(struct ps_prochandle *P, Lmid_t lmid, in Psymbol_iter_by_lmid() argument
3299 return (Psymbol_iter_com(P, lmid, object_name, which, mask, in Psymbol_iter_by_lmid()
3304 Psymbol_iter(struct ps_prochandle *P, in Psymbol_iter() argument
3307 return (Psymbol_iter_com(P, PR_LMID_EVERY, object_name, which, mask, in Psymbol_iter()
3312 Psymbol_iter_by_addr(struct ps_prochandle *P, in Psymbol_iter_by_addr() argument
3315 return (Psymbol_iter_com(P, PR_LMID_EVERY, object_name, which, mask, in Psymbol_iter_by_addr()
3320 Psymbol_iter_by_name(struct ps_prochandle *P, in Psymbol_iter_by_name() argument
3323 return (Psymbol_iter_com(P, PR_LMID_EVERY, object_name, which, mask, in Psymbol_iter_by_name()
3331 Pplatform(struct ps_prochandle *P, char *s, size_t n) in Pplatform() argument
3333 return (P->ops.pop_platform(P, s, n, P->data)); in Pplatform()
3340 Puname(struct ps_prochandle *P, struct utsname *u) in Puname() argument
3342 return (P->ops.pop_uname(P, u, P->data)); in Puname()
3350 Pinitsym(struct ps_prochandle *P) in Pinitsym() argument
3352 P->num_files = 0; in Pinitsym()
3353 list_create(&P->file_head, sizeof (file_info_t), in Pinitsym()
3362 Preset_maps(struct ps_prochandle *P) in Preset_maps() argument
3366 if (P->rap != NULL) { in Preset_maps()
3367 rd_delete(P->rap); in Preset_maps()
3368 P->rap = NULL; in Preset_maps()
3371 if (P->execname != NULL) { in Preset_maps()
3372 free(P->execname); in Preset_maps()
3373 P->execname = NULL; in Preset_maps()
3376 if (P->auxv != NULL) { in Preset_maps()
3377 free(P->auxv); in Preset_maps()
3378 P->auxv = NULL; in Preset_maps()
3379 P->nauxv = 0; in Preset_maps()
3382 for (i = 0; i < P->map_count; i++) in Preset_maps()
3383 map_info_free(P, &P->mappings[i]); in Preset_maps()
3385 if (P->mappings != NULL) { in Preset_maps()
3386 free(P->mappings); in Preset_maps()
3387 P->mappings = NULL; in Preset_maps()
3389 P->map_count = P->map_alloc = 0; in Preset_maps()
3391 P->info_valid = 0; in Preset_maps()
3403 getenv_func(void *data, struct ps_prochandle *P, uintptr_t addr, in getenv_func() argument
3425 Pgetenv(struct ps_prochandle *P, const char *name, char *buf, size_t buflen) in Pgetenv() argument
3434 if (Penv_iter(P, getenv_func, &d) == 1) { in Pgetenv()
3453 Penv_iter(struct ps_prochandle *P, proc_env_f *func, void *data) in Penv_iter() argument
3483 if ((psp = Ppsinfo(P)) == NULL) in Penv_iter()
3488 if (Plookup_by_name(P, PR_OBJ_EXEC, "_environ", &sym) == 0) { in Penv_iter()
3489 if (P->status.pr_dmodel == PR_MODEL_NATIVE) { in Penv_iter()
3490 if (Pread(P, &envpoff, sizeof (envpoff), in Penv_iter()
3493 } else if (P->status.pr_dmodel == PR_MODEL_ILP32) { in Penv_iter()
3496 if (Pread(P, &envpoff32, sizeof (envpoff32), in Penv_iter()
3517 if (P->status.pr_dmodel == PR_MODEL_NATIVE) { in Penv_iter()
3518 if (Pread(P, envp, in Penv_iter()
3523 } else if (P->status.pr_dmodel == PR_MODEL_ILP32) { in Penv_iter()
3528 if (Pread(P, e32, sizeof (e32), envpoff) <= 0) { in Penv_iter()
3545 ret = Pread_string(P, buf, buflen, envoff); in Penv_iter()
3563 if ((ret = func(data, P, envoff, nameval)) != 0) in Penv_iter()
3566 envpoff += (P->status.pr_dmodel == PR_MODEL_LP64)? 8 : 4; in Penv_iter()