aboutsummaryrefslogtreecommitdiff
path: root/gdbserver
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2023-09-27 18:04:34 +0100
committerAndrew Burgess <aburgess@redhat.com>2023-10-06 13:02:36 +0100
commitf9089d2f7b7d164e6747dc85fb683975119d3bff (patch)
treecce0d295784ac38d7c73561053f3175d4d07d863 /gdbserver
parent67e6945b7e3a5c1577d19b9d83ee9be86c0a8424 (diff)
downloadgdb-f9089d2f7b7d164e6747dc85fb683975119d3bff.zip
gdb-f9089d2f7b7d164e6747dc85fb683975119d3bff.tar.gz
gdb-f9089d2f7b7d164e6747dc85fb683975119d3bff.tar.bz2
gdbserver: cleanup in handle_v_run
After the previous commit there is now a redundant string copy in handle_v_run, this commit cleans that up. There should be no functional change after this commit. During review I was pointed to this older series: https://inbox.sourceware.org/gdb-patches/20211022071933.3478427-1-m.weghorn@posteo.de/ which also includes this fix as part of a larger set of changes. I'm giving a Co-Authored-By credit to the author of that original series. I believe this smaller fix brings some benefits on its own, though the original series does offer additional improvements. Once this is merged I'll take a look at rebasing and resubmitting the original series. Co-Authored-By: Michael Weghorn <m.weghorn@posteo.de> Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdbserver')
-rw-r--r--gdbserver/server.cc24
1 files changed, 5 insertions, 19 deletions
diff --git a/gdbserver/server.cc b/gdbserver/server.cc
index 84b8712..e02cdb8 100644
--- a/gdbserver/server.cc
+++ b/gdbserver/server.cc
@@ -2989,33 +2989,19 @@ handle_v_run (char *own_buf)
}
else
{
+ /* The length of the decoded argument. */
size_t len = (next_p - p) / 2;
- /* ARG is the unquoted argument received via the RSP. */
+
+ /* Buffer to decode the argument into. */
char *arg = (char *) xmalloc (len + 1);
- /* FULL_ARGS will contain the quoted version of ARG. */
- char *full_arg = (char *) xmalloc ((len + 1) * 2);
- /* These are pointers used to navigate the strings above. */
- char *tmp_arg = arg;
- char *tmp_full_arg = full_arg;
hex2bin (p, (gdb_byte *) arg, len);
arg[len] = '\0';
- while (*tmp_arg != '\0')
- {
- *tmp_full_arg = *tmp_arg;
- ++tmp_full_arg;
- ++tmp_arg;
- }
-
- /* Finish FULL_ARG and push it into the vector containing
- the argv. */
- *tmp_full_arg = '\0';
if (i == 0)
- new_program_name = full_arg;
+ new_program_name = arg;
else
- new_argv.push_back (full_arg);
- xfree (arg);
+ new_argv.push_back (arg);
}
if (*next_p == '\0')
break;