[PATCH 04/10] Add netbsd_nat::pid_to_exec_file

Kamil Rytarowski
2020-09-02T18:00:11Z

gdb/ChangeLog:

* netbsd-nat.h (netbsd_nat::pid_to_exec_file): Add.
* netbsd-nat.c (netbsd_nat::pid_to_exec_file): Likewise.
---
gdb/ChangeLog | 5 +++++
gdb/nat/netbsd-nat.c | 18 ++++++++++++++++++
gdb/nat/netbsd-nat.h | 5 +++++
3 files changed, 28 insertions(+)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 053cce76b3f..2adfd3d79d1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2020-08-13 Kamil Rytarowski <n54@gmx.com>
+
+ * netbsd-nat.h (netbsd_nat::pid_to_exec_file): Add.
+ * netbsd-nat.c (netbsd_nat::pid_to_exec_file): Likewise.
+
2020-08-13 Kamil Rytarowski <n54@gmx.com>

* configure.nat (NATDEPFILES): Add nat/netbsd-nat.o when needed.
diff --git a/gdb/nat/netbsd-nat.c b/gdb/nat/netbsd-nat.c
index 2b5a4183e30..297188bb8b4 100644
--- a/gdb/nat/netbsd-nat.c
+++ b/gdb/nat/netbsd-nat.c
@@ -19,6 +19,24 @@

#include "nat/netbsd-nat.h"

+#include <sys/types.h>
+#include <sys/sysctl.h>
+
namespace netbsd_nat
{
+
+/* Return the executable file name of a process specified by PID. Returns the
+ string in a static buffer. */
+
+char *
+pid_to_exec_file (pid_t pid)
+{
+ static char buf[PATH_MAX];
+ int mib[4] = {CTL_KERN, KERN_PROC_ARGS, pid, KERN_PROC_PATHNAME};
+ size_t buflen = sizeof (buf);
+ if (::sysctl (mib, ARRAY_SIZE (mib), buf, &buflen, NULL, 0))
+ return NULL;
+ return buf;
+}
+
}
diff --git a/gdb/nat/netbsd-nat.h b/gdb/nat/netbsd-nat.h
index 5fa08746610..a5f664d95f4 100644
--- a/gdb/nat/netbsd-nat.h
+++ b/gdb/nat/netbsd-nat.h
@@ -20,8 +20,13 @@
#ifndef NAT_NETBSD_NAT_H
#define NAT_NETBSD_NAT_H

+#include <unistd.h>
+
namespace netbsd_nat
{
+
+extern char *pid_to_exec_file (pid_t pid);
+
}

#endif
--
2.28.0