diff options
author | Kamil Rytarowski <n54@gmx.com> | 2020-03-15 00:12:53 +0100 |
---|---|---|
committer | Kamil Rytarowski <n54@gmx.com> | 2020-03-17 10:22:51 +0100 |
commit | a2ecbe9fb7355698aad97841f9717cdfd7096d95 (patch) | |
tree | 1c4800fef54bcf454be4d6bfe0f8c31e12a1de04 | |
parent | 589902954da0d1dd140b33e578954746c9bfc374 (diff) | |
download | gdb-a2ecbe9fb7355698aad97841f9717cdfd7096d95.zip gdb-a2ecbe9fb7355698aad97841f9717cdfd7096d95.tar.gz gdb-a2ecbe9fb7355698aad97841f9717cdfd7096d95.tar.bz2 |
Rewrite nbsd_nat_target::pid_to_exec_file to sysctl(3)
procfs on NetBSD is optional and not recommended.
* nbsd-nat.c: Include <sys/types.h>, <sys/ptrace.h> and
<sys/sysctl.h>.
* nbsd-nat.c (nbsd_nat_target::pid_to_exec_file): Rewrite.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/nbsd-nat.c | 22 |
2 files changed, 16 insertions, 12 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3c92150..cb2e91b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2020-03-17 Kamil Rytarowski <n54@gmx.com> + + * nbsd-nat.c: Include <sys/types.h>, <sys/ptrace.h> and + <sys/sysctl.h>. + * nbsd-nat.c (nbsd_nat_target::pid_to_exec_file): Rewrite. + 2020-03-17 Tom de Vries <tdevries@suse.de> PR gdb/23710 diff --git a/gdb/nbsd-nat.c b/gdb/nbsd-nat.c index e7f91be..326bbe3 100644 --- a/gdb/nbsd-nat.c +++ b/gdb/nbsd-nat.c @@ -21,23 +21,21 @@ #include "nbsd-nat.h" +#include <sys/types.h> +#include <sys/ptrace.h> +#include <sys/sysctl.h> + /* Return the name of a file that can be opened to get the symbols for the child process identified by PID. */ char * nbsd_nat_target::pid_to_exec_file (int pid) { - ssize_t len; static char buf[PATH_MAX]; - char name[PATH_MAX]; - - 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; + size_t buflen; + int mib[4] = {CTL_KERN, KERN_PROC_ARGS, pid, KERN_PROC_PATHNAME}; + buflen = sizeof (buf); + if (sysctl (mib, ARRAY_SIZE (mib), buf, &buflen, NULL, 0)) + return NULL; + return buf; } |