+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>
* regcache.c (new_register_cache): Return NULL if the register
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)
{
write_enn (own_buf);
return 0;
}
- new_argv[0] = strdup (program_argv[0]);
+ /* We can reuse the old args. We don't need this then. */
+ free (new_argv);
}
-
- /* Free the old argv. */
- if (program_argv)
+ else
{
- for (pp = program_argv; *pp != NULL; pp++)
- free (*pp);
- free (program_argv);
+ /* Free the old argv. */
+ if (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);
if (*status == 'T')