diff --git a/lib/libproc/_libproc.h b/lib/libproc/_libproc.h index 4797c56012d8..e29d56c60d63 100644 --- a/lib/libproc/_libproc.h +++ b/lib/libproc/_libproc.h @@ -72,7 +72,7 @@ struct proc_handle { struct map_info *mappings; /* File mappings for proc. */ size_t maparrsz; /* Map array size. */ size_t nmappings; /* Number of mappings. */ - prmap_t *exec_map; /* Executable text mapping. */ + size_t exec_map; /* Executable text mapping index. */ lwpstatus_t lwps; /* Process status. */ struct procstat *procstat; /* libprocstat handle. */ char execpath[PATH_MAX]; /* Path to program executable. */ diff --git a/lib/libproc/proc_rtld.c b/lib/libproc/proc_rtld.c index 7774a3e48423..9016be8392f6 100644 --- a/lib/libproc/proc_rtld.c +++ b/lib/libproc/proc_rtld.c @@ -62,7 +62,7 @@ map_iter(const rd_loadobj_t *lop, void *arg) rdl2prmap(lop, &mapping->map); if (strcmp(lop->rdl_path, phdl->execpath) == 0 && (lop->rdl_prot & RD_RDL_X) != 0) - phdl->exec_map = &mapping->map; + phdl->exec_map = phdl->nmappings; file = NULL; if (lop->rdl_path[0] != '\0') { diff --git a/lib/libproc/proc_sym.c b/lib/libproc/proc_sym.c index da6c150e2a40..02c85f5908af 100644 --- a/lib/libproc/proc_sym.c +++ b/lib/libproc/proc_sym.c @@ -511,7 +511,8 @@ _proc_name2map(struct proc_handle *p, const char *name) return (&p->mappings[i]); } if (strcmp(name, "a.out") == 0) - return (_proc_addr2map(p, p->exec_map->pr_vaddr)); + return (_proc_addr2map(p, + p->mappings[p->exec_map].map.pr_vaddr)); return (NULL); }