Fix nto,spu and win32 builds of GDBServer.
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.
This commit is contained in:
parent
2e6ee069ae
commit
fb78e89c56
|
@ -1,3 +1,15 @@
|
|||
2015-10-23 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2015-10-23 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
||||
|
||||
* linux-low.c (default_breakpoint_kind_from_pc): Move to target.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. */
|
||||
|
|
|
@ -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 ();
|
||||
}
|
||||
|
|
|
@ -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 ();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue