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>
|
||||
|
||||
Global renaming of find_thread_pid to find_thread_ptid.
|
||||
|
|
|
@ -3008,6 +3008,12 @@ linux_start_non_stop (int nonstop)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
linux_supports_multi_process (void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static struct target_ops linux_target_ops = {
|
||||
linux_create_inferior,
|
||||
linux_attach,
|
||||
|
@ -3045,6 +3051,7 @@ static struct target_ops linux_target_ops = {
|
|||
linux_supports_non_stop,
|
||||
linux_async,
|
||||
linux_start_non_stop,
|
||||
linux_supports_multi_process
|
||||
};
|
||||
|
||||
static void
|
||||
|
|
|
@ -1074,9 +1074,13 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
|
|||
p != NULL;
|
||||
p = strtok (NULL, ";"))
|
||||
{
|
||||
/* Record if GDB knows about multiprocess support. */
|
||||
if (strcmp (p, "multiprocess+") == 0)
|
||||
multi_process = 1;
|
||||
{
|
||||
/* GDB supports and wants multi-process support if
|
||||
possible. */
|
||||
if (target_supports_multi_process ())
|
||||
multi_process = 1;
|
||||
}
|
||||
}
|
||||
|
||||
sprintf (own_buf, "PacketSize=%x;QPassSignals+", PBUFSIZ - 1);
|
||||
|
@ -1106,7 +1110,8 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
|
|||
if (the_target->qxfer_osdata != NULL)
|
||||
strcat (own_buf, ";qXfer:osdata:read+");
|
||||
|
||||
strcat (own_buf, ";multiprocess+");
|
||||
if (target_supports_multi_process ())
|
||||
strcat (own_buf, ";multiprocess+");
|
||||
|
||||
if (target_supports_non_stop ())
|
||||
strcat (own_buf, ";QNonStop+");
|
||||
|
|
|
@ -275,6 +275,9 @@ struct target_ops
|
|||
/* Switch to non-stop (1) or all-stop (0) mode. Return 0 on
|
||||
success, -1 otherwise. */
|
||||
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;
|
||||
|
@ -311,6 +314,10 @@ void set_target_ops (struct target_ops *);
|
|||
#define target_async(enable) \
|
||||
(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. */
|
||||
|
||||
int start_non_stop (int nonstop);
|
||||
|
|
Loading…
Reference in New Issue