2009-06-19 Aleksandar Ristovski <aristovski@qnx.com>
Pedro Alves <pedro@codesourcery.com> * target.h (struct target_ops) <supports_multi_process>: New callback. (target_supports_multi_process): New. * server.c (handle_query): Even if GDB reports support, only enable multi-process if the target also supports it. Report multi-process support only if the target backend supports it. * linux-low.c (linux_supports_multi_process): New function. (linux_target_ops): Install it as target_supports_multi_process callback.
This commit is contained in:
parent
5e7c27a607
commit
cf8fd78b38
|
@ -1,3 +1,16 @@
|
||||||
|
2009-06-19 Aleksandar Ristovski <aristovski@qnx.com>
|
||||||
|
Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
|
* target.h (struct target_ops) <supports_multi_process>: New
|
||||||
|
callback.
|
||||||
|
(target_supports_multi_process): New.
|
||||||
|
* server.c (handle_query): Even if GDB reports support, only
|
||||||
|
enable multi-process if the target also supports it. Report
|
||||||
|
multi-process support only if the target backend supports it.
|
||||||
|
* linux-low.c (linux_supports_multi_process): New function.
|
||||||
|
(linux_target_ops): Install it as target_supports_multi_process
|
||||||
|
callback.
|
||||||
|
|
||||||
2009-05-24 Doug Evans <dje@google.com>
|
2009-05-24 Doug Evans <dje@google.com>
|
||||||
|
|
||||||
Global renaming of find_thread_pid to find_thread_ptid.
|
Global renaming of find_thread_pid to find_thread_ptid.
|
||||||
|
|
|
@ -3008,6 +3008,12 @@ linux_start_non_stop (int nonstop)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
linux_supports_multi_process (void)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static struct target_ops linux_target_ops = {
|
static struct target_ops linux_target_ops = {
|
||||||
linux_create_inferior,
|
linux_create_inferior,
|
||||||
linux_attach,
|
linux_attach,
|
||||||
|
@ -3045,6 +3051,7 @@ static struct target_ops linux_target_ops = {
|
||||||
linux_supports_non_stop,
|
linux_supports_non_stop,
|
||||||
linux_async,
|
linux_async,
|
||||||
linux_start_non_stop,
|
linux_start_non_stop,
|
||||||
|
linux_supports_multi_process
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -1074,10 +1074,14 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
|
||||||
p != NULL;
|
p != NULL;
|
||||||
p = strtok (NULL, ";"))
|
p = strtok (NULL, ";"))
|
||||||
{
|
{
|
||||||
/* Record if GDB knows about multiprocess support. */
|
|
||||||
if (strcmp (p, "multiprocess+") == 0)
|
if (strcmp (p, "multiprocess+") == 0)
|
||||||
|
{
|
||||||
|
/* GDB supports and wants multi-process support if
|
||||||
|
possible. */
|
||||||
|
if (target_supports_multi_process ())
|
||||||
multi_process = 1;
|
multi_process = 1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sprintf (own_buf, "PacketSize=%x;QPassSignals+", PBUFSIZ - 1);
|
sprintf (own_buf, "PacketSize=%x;QPassSignals+", PBUFSIZ - 1);
|
||||||
|
|
||||||
|
@ -1106,6 +1110,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
|
||||||
if (the_target->qxfer_osdata != NULL)
|
if (the_target->qxfer_osdata != NULL)
|
||||||
strcat (own_buf, ";qXfer:osdata:read+");
|
strcat (own_buf, ";qXfer:osdata:read+");
|
||||||
|
|
||||||
|
if (target_supports_multi_process ())
|
||||||
strcat (own_buf, ";multiprocess+");
|
strcat (own_buf, ";multiprocess+");
|
||||||
|
|
||||||
if (target_supports_non_stop ())
|
if (target_supports_non_stop ())
|
||||||
|
|
|
@ -275,6 +275,9 @@ struct target_ops
|
||||||
/* Switch to non-stop (1) or all-stop (0) mode. Return 0 on
|
/* Switch to non-stop (1) or all-stop (0) mode. Return 0 on
|
||||||
success, -1 otherwise. */
|
success, -1 otherwise. */
|
||||||
int (*start_non_stop) (int);
|
int (*start_non_stop) (int);
|
||||||
|
|
||||||
|
/* Returns true if the target supports multi-process debugging. */
|
||||||
|
int (*supports_multi_process) (void);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct target_ops *the_target;
|
extern struct target_ops *the_target;
|
||||||
|
@ -311,6 +314,10 @@ void set_target_ops (struct target_ops *);
|
||||||
#define target_async(enable) \
|
#define target_async(enable) \
|
||||||
(the_target->async ? (*the_target->async) (enable) : 0)
|
(the_target->async ? (*the_target->async) (enable) : 0)
|
||||||
|
|
||||||
|
#define target_supports_multi_process() \
|
||||||
|
(the_target->supports_multi_process ? \
|
||||||
|
(*the_target->supports_multi_process) () : 0)
|
||||||
|
|
||||||
/* Start non-stop mode, returns 0 on success, -1 on failure. */
|
/* Start non-stop mode, returns 0 on success, -1 on failure. */
|
||||||
|
|
||||||
int start_non_stop (int nonstop);
|
int start_non_stop (int nonstop);
|
||||||
|
|
Loading…
Reference in New Issue