[PATCH 22/22] [GDBserver] Multi-process + multi-arch: QNX NTO

Pedro Alves
2013-05-30T12:16:16Z

This adjusts the QNX NTO port to new interfaces.

Completely untested.

2012-05-30 Pedro Alves <palves@redhat.com>

* nto-low.c (nto_tdesc): New global.
(do_attach): Set the new process'es tdesc.
* nto-low.h (struct target_desc): Forward declare.
(nto_tdesc): Declare.
* nto-x86-low.c (tdesc_i386): Declare.
(nto_x86_arch_setup): Set `nto_tdesc'.
---
gdb/gdbserver/nto-low.c | 6 +++++-
gdb/gdbserver/nto-low.h | 6 ++++++
gdb/gdbserver/nto-x86-low.c | 2 ++
3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/gdb/gdbserver/nto-low.c b/gdb/gdbserver/nto-low.c
index 5e4c60d..3670133 100644
--- a/gdb/gdbserver/nto-low.c
+++ b/gdb/gdbserver/nto-low.c
@@ -35,6 +35,8 @@
extern int using_threads;
int using_threads = 1;

+const struct target_desc *nto_tdesc;
+
static void
nto_trace (const char *fmt, ...)
{
@@ -203,11 +205,13 @@ do_attach (pid_t pid)
&& (status.flags & _DEBUG_FLAG_STOPPED))
{
ptid_t ptid;
+ struct process_info *proc;

kill (pid, SIGCONT);
ptid = ptid_build (status.pid, status.tid, 0);
the_low_target.arch_setup ();
- add_process (status.pid, 1);
+ proc = add_process (status.pid, 1);
+ proc->tdesc = nto_tdesc;
TRACE ("Adding thread: pid=%d tid=%ld\n", status.pid,
ptid_get_lwp (ptid));
nto_find_new_threads (&nto_inferior);
diff --git a/gdb/gdbserver/nto-low.h b/gdb/gdbserver/nto-low.h
index 2c450b7..1cc8f22 100644
--- a/gdb/gdbserver/nto-low.h
+++ b/gdb/gdbserver/nto-low.h
@@ -19,6 +19,8 @@
#ifndef NTO_LOW_H
#define NTO_LOW_H

+struct target_desc;
+
enum regset_type
{
NTO_REG_GENERAL,
@@ -40,5 +42,9 @@ struct nto_target_ops

extern struct nto_target_ops the_low_target;

+/* The inferior's target description. This is a global because the
+ LynxOS ports support neither bi-arch nor multi-process. */
+extern const struct target_desc *nto_tdesc;
+
#endif

diff --git a/gdb/gdbserver/nto-x86-low.c b/gdb/gdbserver/nto-x86-low.c
index 9163880..c9cb004 100644
--- a/gdb/gdbserver/nto-x86-low.c
+++ b/gdb/gdbserver/nto-x86-low.c
@@ -28,6 +28,7 @@
/* Definition auto generated from reg-i386.dep. */
extern void init_registers_i386 ();
extern struct reg *regs_i386;
+extern const struct target_desc *tdesc_i386;

const unsigned char x86_breakpoint[] = { 0xCC };
#define x86_breakpoint_len 1
@@ -91,6 +92,7 @@ nto_x86_arch_setup (void)
{
init_registers_i386 ();
the_low_target.num_regs = 16;
+ nto_tdesc = tdesc_i386;
}

struct nto_target_ops the_low_target =