Assume KERN_PROC_PATHNAME is present on FreeBSD hosts.
FreeBSD kernels have included this sysctl since 6.0 release. The most recent release without support is 5.5 which was released in May of 2006. Both the sysctl and the /proc/<pid>/exe file call the same function in the kernel to obtain the path (vn_fullpath). If the sysctl fails, the readlink call will also fail, so there is no need to keep the readlink fallback. gdb/ChangeLog: * fbsd-nat.c (fbsd_nat_target::pid_to_exec_file): Always use sysctl and remove procfs fallback.
This commit is contained in:
parent
5515f72973
commit
bcb1da7fb7
2 changed files with 5 additions and 13 deletions
|
@ -1,3 +1,8 @@
|
|||
2020-09-16 John Baldwin <jhb@FreeBSD.org>
|
||||
|
||||
* fbsd-nat.c (fbsd_nat_target::pid_to_exec_file): Always use
|
||||
sysctl and remove procfs fallback.
|
||||
|
||||
2020-09-16 John Baldwin <jhb@FreeBSD.org>
|
||||
|
||||
* fbsd-nat.c: Assume PT_LWPINFO is always defined.
|
||||
|
|
|
@ -53,11 +53,7 @@
|
|||
char *
|
||||
fbsd_nat_target::pid_to_exec_file (int pid)
|
||||
{
|
||||
ssize_t len;
|
||||
static char buf[PATH_MAX];
|
||||
char name[PATH_MAX];
|
||||
|
||||
#ifdef KERN_PROC_PATHNAME
|
||||
size_t buflen;
|
||||
int mib[4];
|
||||
|
||||
|
@ -71,15 +67,6 @@ fbsd_nat_target::pid_to_exec_file (int pid)
|
|||
for processes without an associated executable such as kernel
|
||||
processes. */
|
||||
return buflen == 0 ? NULL : buf;
|
||||
#endif
|
||||
|
||||
xsnprintf (name, PATH_MAX, "/proc/%d/exe", pid);
|
||||
len = readlink (name, buf, PATH_MAX - 1);
|
||||
if (len != -1)
|
||||
{
|
||||
buf[len] = '\0';
|
||||
return buf;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue