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.
+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.
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];
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;
}