Fix invalid profile for command-completer in remote-sim.c

The profile of command completers has been change to returna VEC
of char_ptr.  Most completers were updated, except the one in
remote-sim.c.

Unfortunately, to make things a little more difficult, the meat of
the completer is actually implemented in the sim, were VECs are not
available.  This patch thus translates the returned array into a VEC,
and then returns that VEC.

gdb/ChangeLog:

        * remote-sim.c (sim_command_completer): Change type of return
        value to "VEC (char_ptr) *".  Adjust implementation accordingly.
This commit is contained in:
Joel Brobecker 2012-06-14 18:17:37 +00:00
parent 1d1702fcaa
commit 3437086597
2 changed files with 19 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2012-06-13 Joel Brobecker <brobecker@adacore.com>
* remote-sim.c (sim_command_completer): Change type of return
value to "VEC (char_ptr) *". Adjust implementation accordingly.
2012-06-13 Mark Kettenis <kettenis@gnu.org>
Jan Kratochvil <jan.kratochvil@redhat.com>

View File

@ -1198,16 +1198,28 @@ simulator_command (char *args, int from_tty)
registers_changed ();
}
static char **
static VEC (char_ptr) *
sim_command_completer (struct cmd_list_element *ignore, char *text, char *word)
{
struct sim_inferior_data *sim_data;
char **tmp;
int i;
VEC (char_ptr) *result;
sim_data = inferior_data (current_inferior (), sim_inferior_data_key);
if (sim_data == NULL || sim_data->gdbsim_desc == NULL)
return NULL;
return sim_complete_command (sim_data->gdbsim_desc, text, word);
tmp = sim_complete_command (sim_data->gdbsim_desc, text, word);
if (tmp == NULL)
return NULL;
/* Transform the array into a VEC, and then free the array. */
for (i = 0; tmp[i] != NULL; i++)
VEC_safe_push (char_ptr, result, tmp[i]);
xfree (tmp);
return result;
}
/* Check to see if a thread is still alive. */