* server.c (handle_v_run): If GDB didn't specify an argv, use the

whole argv from the last run, not just argv[0].
This commit is contained in:
Pedro Alves 2008-10-10 14:06:05 +00:00
parent 8a9629d090
commit 9b710a4294
2 changed files with 21 additions and 8 deletions

View file

@ -1,3 +1,8 @@
2008-10-10 Pedro Alves <pedro@codesourcery.com>
* server.c (handle_v_run): If GDB didn't specify an argv, use the
whole argv from the last run, not just argv[0].
2008-09-08 Pedro Alves <pedro@codesourcery.com> 2008-09-08 Pedro Alves <pedro@codesourcery.com>
* regcache.c (new_register_cache): Return NULL if the register * regcache.c (new_register_cache): Return NULL if the register

View file

@ -1096,23 +1096,31 @@ handle_v_run (char *own_buf, char *status, int *signal)
if (new_argv[0] == NULL) if (new_argv[0] == NULL)
{ {
/* GDB didn't specify a program to run. Try to use the argv
from the last run: either from the last vRun with a non-empty
argv, or from what the user specified if gdbserver was
started as: `gdbserver :1234 PROG ARGS'. */
if (program_argv == NULL) if (program_argv == NULL)
{ {
write_enn (own_buf); write_enn (own_buf);
return 0; return 0;
} }
new_argv[0] = strdup (program_argv[0]); /* We can reuse the old args. We don't need this then. */
free (new_argv);
} }
else
/* Free the old argv. */
if (program_argv)
{ {
for (pp = program_argv; *pp != NULL; pp++) /* Free the old argv. */
free (*pp); if (program_argv)
free (program_argv); {
for (pp = program_argv; *pp != NULL; pp++)
free (*pp);
free (program_argv);
}
program_argv = new_argv;
} }
program_argv = new_argv;
*signal = start_inferior (program_argv, status); *signal = start_inferior (program_argv, status);
if (*status == 'T') if (*status == 'T')