From: Antoine Tremblay <antoine.tremblay@ericsson.com>
To: <gdb-patches@sourceware.org>
Cc: Antoine Tremblay <antoine.tremblay@ericsson.com>
Subject: [PATCH 2/3] Fix nto,spu and win32 builds of GDBServer.
Date: Fri, 23 Oct 2015 17:02:00 -0000 [thread overview]
Message-ID: <1445543917-16839-3-git-send-email-antoine.tremblay@ericsson.com> (raw)
In-Reply-To: <1445543917-16839-1-git-send-email-antoine.tremblay@ericsson.com>
This patch fixes the build that was broken by :
https://sourceware.org/ml/gdb-patches/2015-10/msg00369.html
It implements the sw_breakpoint_from_kind operation on these targets and removes
the calls to set_breakpoint_data.
Compiliation tested on win32.
Not tested : nto, spu.
gdb/gdbserver/ChangeLog:
* nto-low.c (nto_sw_breakpoint_from_kind): New function.
(struct target_ops) <sw_breakpoint_from_kind>: Initialize.
(initialize_low): Remove set_breakpoint_data call.
* spu-low.c (spu_sw_breakpoint_from_kind): New function.
(struct target_ops) <sw_breakpoint_from_kind>: Iniitalize.
(initialize_low): Remove set_breakpoint_data call.
* win32-low.c (win32_sw_breakpoint_from_kind): New function.
(struct target_ops) <sw_breakpoint_from_kind>: Initialize.
(initialize_low): Remove set_breakpoint_data call.
---
gdb/gdbserver/nto-low.c | 47 +++++++++++++++++++++++++++++++++++++---
gdb/gdbserver/spu-low.c | 55 ++++++++++++++++++++++++++++++++++++++++++++---
gdb/gdbserver/win32-low.c | 35 ++++++++++++++++++++++++++----
3 files changed, 127 insertions(+), 10 deletions(-)
diff --git a/gdb/gdbserver/nto-low.c b/gdb/gdbserver/nto-low.c
index 97bd1e9..d72c465 100644
--- a/gdb/gdbserver/nto-low.c
+++ b/gdb/gdbserver/nto-low.c
@@ -921,6 +921,14 @@ nto_supports_non_stop (void)
return 0;
}
+/* Implementation of the target_ops method "sw_breakpoint_from_kind". */
+
+static const gdb_byte *
+nto_sw_breakpoint_from_kind (int kind, int *size)
+{
+ *size = the_low_target.breakpoint_len;
+ return the_low_target.breakpoint;
+}
static struct target_ops nto_target_ops = {
@@ -961,7 +969,42 @@ static struct target_ops nto_target_ops = {
NULL, /* xfer_siginfo */
nto_supports_non_stop,
NULL, /* async */
- NULL /* start_non_stop */
+ NULL, /* start_non_stop */
+ NULL, /* supports_multi_process */
+ NULL, /* supports_fork_events */
+ NULL, /* supports_vfork_events */
+ NULL, /* supports_exec_events */
+ NULL, /* handle_new_gdb_connection */
+ NULL, /* handle_monitor_command */
+ NULL, /* core_of_thread */
+ NULL, /* read_loadmap */
+ NULL, /* process_qsupported */
+ NULL, /* supports_tracepoints */
+ NULL, /* read_pc */
+ NULL, /* write_pc */
+ NULL, /* thread_stopped */
+ NULL, /* get_tib_address */
+ NULL, /* pause_all */
+ NULL, /* unpause_all */
+ NULL, /* stabilize_threads */
+ NULL, /* install_fast_tracepoint_jump_pad */
+ NULL, /* emit_ops */
+ NULL, /* supports_disable_randomization */
+ NULL, /* get_min_fast_tracepoint_insn_len */
+ NULL, /* qxfer_libraries_svr4 */
+ NULL, /* support_agent */
+ NULL, /* support_btrace */
+ NULL, /* enable_btrace */
+ NULL, /* disable_btrace */
+ NULL, /* read_btrace */
+ NULL, /* read_btrace_conf */
+ NULL, /* supports_range_stepping */
+ NULL, /* pid_to_exec_file */
+ NULL, /* multifs_open */
+ NULL, /* multifs_unlink */
+ NULL, /* multifs_readlink */
+ NULL, /* breakpoint_kind_from_pc */
+ nto_sw_breakpoint_from_kind,
};
@@ -975,8 +1018,6 @@ initialize_low (void)
TRACE ("%s\n", __func__);
set_target_ops (&nto_target_ops);
- set_breakpoint_data (the_low_target.breakpoint,
- the_low_target.breakpoint_len);
/* We use SIGUSR1 to gain control after we block waiting for a process.
We use sigwaitevent to wait. */
diff --git a/gdb/gdbserver/spu-low.c b/gdb/gdbserver/spu-low.c
index 074417a..89bed7a 100644
--- a/gdb/gdbserver/spu-low.c
+++ b/gdb/gdbserver/spu-low.c
@@ -56,6 +56,9 @@ int using_threads = 0;
void init_registers_spu (void);
extern const struct target_desc *tdesc_spu;
+/* Software breakpoint instruction. */
+static const gdb_byte breakpoint[] = { 0x00, 0x00, 0x3f, 0xff };
+
/* Fetch PPU register REGNO. */
static CORE_ADDR
fetch_ppc_register (int regno)
@@ -639,6 +642,15 @@ spu_request_interrupt (void)
syscall (SYS_tkill, lwpid_of (thr), SIGINT);
}
+/* Implementation of the target_ops method "sw_breakpoint_from_kind". */
+
+static const gdb_byte *
+spu_sw_breakpoint_from_kind (int kind, int *size)
+{
+ *size = sizeof breakpoint;
+ return breakpoint;
+}
+
static struct target_ops spu_target_ops = {
spu_create_inferior,
NULL, /* arch_setup */
@@ -673,14 +685,51 @@ static struct target_ops spu_target_ops = {
NULL,
spu_proc_xfer_spu,
hostio_last_error_from_errno,
+ NULL, /* qxfer_osdata */
+ NULL, /* qxfer_siginfo */
+ NULL, /* supports_non_stop */
+ NULL, /* async */
+ NULL, /* start_non_stop */
+ NULL, /* supports_multi_process */
+ NULL, /* supports_fork_events */
+ NULL, /* supports_vfork_events */
+ NULL, /* supports_exec_events */
+ NULL, /* handle_new_gdb_connection */
+ NULL, /* handle_monitor_command */
+ NULL, /* core_of_thread */
+ NULL, /* read_loadmap */
+ NULL, /* process_qsupported */
+ NULL, /* supports_tracepoints */
+ NULL, /* read_pc */
+ NULL, /* write_pc */
+ NULL, /* thread_stopped */
+ NULL, /* get_tib_address */
+ NULL, /* pause_all */
+ NULL, /* unpause_all */
+ NULL, /* stabilize_threads */
+ NULL, /* install_fast_tracepoint_jump_pad */
+ NULL, /* emit_ops */
+ NULL, /* supports_disable_randomization */
+ NULL, /* get_min_fast_tracepoint_insn_len */
+ NULL, /* qxfer_libraries_svr4 */
+ NULL, /* support_agent */
+ NULL, /* support_btrace */
+ NULL, /* enable_btrace */
+ NULL, /* disable_btrace */
+ NULL, /* read_btrace */
+ NULL, /* read_btrace_conf */
+ NULL, /* supports_range_stepping */
+ NULL, /* pid_to_exec_file */
+ NULL, /* multifs_open */
+ NULL, /* multifs_unlink */
+ NULL, /* multifs_readlink */
+ NULL, /* breakpoint_kind_from_pc */
+ spu_sw_breakpoint_from_kind,
};
void
initialize_low (void)
{
- static const unsigned char breakpoint[] = { 0x00, 0x00, 0x3f, 0xff };
-
set_target_ops (&spu_target_ops);
- set_breakpoint_data (breakpoint, sizeof breakpoint);
init_registers_spu ();
}
diff --git a/gdb/gdbserver/win32-low.c b/gdb/gdbserver/win32-low.c
index 550a8e9..6e33509 100644
--- a/gdb/gdbserver/win32-low.c
+++ b/gdb/gdbserver/win32-low.c
@@ -1783,6 +1783,15 @@ win32_get_tib_address (ptid_t ptid, CORE_ADDR *addr)
return 1;
}
+/* Implementation of the target_ops method "sw_breakpoint_from_kind". */
+
+static const gdb_byte *
+win32_sw_breakpoint_from_kind (int kind, int *size)
+{
+ *size = the_low_target.breakpoint_len;
+ return the_low_target.breakpoint;
+}
+
static struct target_ops win32_target_ops = {
win32_create_inferior,
NULL, /* arch_setup */
@@ -1839,7 +1848,28 @@ static struct target_ops win32_target_ops = {
NULL, /* read_pc */
NULL, /* write_pc */
NULL, /* thread_stopped */
- win32_get_tib_address
+ win32_get_tib_address,
+ NULL, /* pause_all */
+ NULL, /* unpause_all */
+ NULL, /* stabilize_threads */
+ NULL, /* install_fast_tracepoint_jump_pad */
+ NULL, /* emit_ops */
+ NULL, /* supports_disable_randomization */
+ NULL, /* get_min_fast_tracepoint_insn_len */
+ NULL, /* qxfer_libraries_svr4 */
+ NULL, /* support_agent */
+ NULL, /* support_btrace */
+ NULL, /* enable_btrace */
+ NULL, /* disable_btrace */
+ NULL, /* read_btrace */
+ NULL, /* read_btrace_conf */
+ NULL, /* supports_range_stepping */
+ NULL, /* pid_to_exec_file */
+ NULL, /* multifs_open */
+ NULL, /* multifs_unlink */
+ NULL, /* multifs_readlink */
+ NULL, /* breakpoint_kind_from_pc */
+ win32_sw_breakpoint_from_kind,
};
/* Initialize the Win32 backend. */
@@ -1847,8 +1877,5 @@ void
initialize_low (void)
{
set_target_ops (&win32_target_ops);
- if (the_low_target.breakpoint != NULL)
- set_breakpoint_data (the_low_target.breakpoint,
- the_low_target.breakpoint_len);
the_low_target.arch_setup ();
}
--
1.9.1
next prev parent reply other threads:[~2015-10-22 19:58 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-23 16:50 [PATCH 0/3] Fix nto, spu " Antoine Tremblay
2015-10-23 17:02 ` Antoine Tremblay [this message]
2015-10-23 17:09 ` [PATCH 3/3] Remove set_breakpoint_data definition in GDBServer Antoine Tremblay
2015-10-23 17:23 ` [PATCH 1/3] Refactor default_breakpoint_kind_from_pc to be used by all targets " Antoine Tremblay
2015-10-23 23:56 ` [PATCH 0/3] Fix nto, spu and win32 builds of GDBServer Pedro Alves
2015-10-25 2:31 ` Antoine Tremblay
2015-10-25 11:08 ` Aleksandar Ristovski
2015-10-25 2:42 ` Aleksandar Ristovski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1445543917-16839-3-git-send-email-antoine.tremblay@ericsson.com \
--to=antoine.tremblay@ericsson.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox