aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2019-02-06 09:45:50 -0800
committerJohn Baldwin <jhb@FreeBSD.org>2019-02-06 09:45:50 -0800
commit424eb552c27a1574974d9052dff4ff252a7db22d (patch)
tree1ec7879ab93d0de60ebed3b5bfcd786e0a8af2a7
parent4249a53cce8651061092d666e5df06492cb91cf1 (diff)
downloadgdb-424eb552c27a1574974d9052dff4ff252a7db22d.zip
gdb-424eb552c27a1574974d9052dff4ff252a7db22d.tar.gz
gdb-424eb552c27a1574974d9052dff4ff252a7db22d.tar.bz2
Fix 'info proc cmdline' for native FreeBSD processes.
The kern.proc.args.<pid> sysctl returns the argv array as a packed array of arguments, each null terminated. To construct a complete command line, the arguments must be joined with spaces by converting the intermediate nul characters to spaces. Previously only the first argument was shown in cmdline output. Now, all arguments are shown. gdb/ChangeLog: * fbsd-nat.c (fbsd_fetch_cmdline): Join arguments with spaces.
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/fbsd-nat.c7
2 files changed, 11 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 0ce33f2..1ac3b55 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2019-02-06 John Baldwin <jhb@FreeBSD.org>
+
+ * fbsd-nat.c (fbsd_fetch_cmdline): Join arguments with spaces.
+
2019-02-05 Tom Tromey <tom@tromey.com>
* target.c (target_stack::unpush): Move assertion earlier.
diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c
index 712f9d3..184d639 100644
--- a/gdb/fbsd-nat.c
+++ b/gdb/fbsd-nat.c
@@ -231,6 +231,13 @@ fbsd_fetch_cmdline (pid_t pid)
if (sysctl (mib, 4, cmdline.get (), &len, NULL, 0) == -1)
return nullptr;
+ /* Join the arguments with spaces to form a single string. */
+ char *cp = cmdline.get ();
+ for (size_t i = 0; i < len - 1; i++)
+ if (cp[i] == '\0')
+ cp[i] = ' ';
+ cp[len - 1] = '\0';
+
return cmdline;
}