public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [rfc, spu] Don't call set_gdbarch_cannot_step_breakpoint in spu_gdbarch_init
@ 2015-03-17 14:52 Yao Qi
  2015-03-20 17:48 ` Pedro Alves
  0 siblings, 1 reply; 9+ messages in thread
From: Yao Qi @ 2015-03-17 14:52 UTC (permalink / raw)
  To: gdb-patches

From: Yao Qi <yao.qi@linaro.org>

Nowadays, in infrun.c:resume, the setting to 'step' variable is like:

  if (use_displaced_stepping (gdbarch)
      && tp->control.trap_expected
      && sig == GDB_SIGNAL_0
      && !current_inferior ()->waiting_for_vfork_done)
    {
    }
  /* Do we need to do it the hard way, w/temp breakpoints?  */
  else if (step)
    step = maybe_software_singlestep (gdbarch, pc); <-- [1]

  ...

  if (execution_direction != EXEC_REVERSE
      && step && breakpoint_inserted_here_p (aspace, pc))
    {
      ...
      if (gdbarch_cannot_step_breakpoint (gdbarch)) <-- [2]
        step = 0;
    }

spu doesn't have displaced stepping and uses software single step,
so 'step' is set to zero in [1], and [2] becomes unreachable as a
result.  So don't have to call set_gdbarch_cannot_step_breakpoint
in spu_gdbarch_init.

On the other hand, we either have hardware single step or software
single step, do we still need gdbarch method cannot_step_breakpoint?
CANNOT_STEP_BREAKPOINT was introduced in 1993 by commit
cef4c2e7a5f2d3426a8255f74b6c7f4e795fd9a4 for alpha OSF/1 native
support.

I don't have spu machine to test this patch.

gdb:

2015-03-17  Yao Qi  <yao.qi@linaro.org>

	* spu-tdep.c (spu_gdbarch_init): Don't call
	set_gdbarch_cannot_step_breakpoint.
---
 gdb/spu-tdep.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c
index 36ad312..870cf32 100644
--- a/gdb/spu-tdep.c
+++ b/gdb/spu-tdep.c
@@ -2794,7 +2794,6 @@ spu_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_decr_pc_after_break (gdbarch, 4);
   set_gdbarch_breakpoint_from_pc (gdbarch, spu_breakpoint_from_pc);
   set_gdbarch_memory_remove_breakpoint (gdbarch, spu_memory_remove_breakpoint);
-  set_gdbarch_cannot_step_breakpoint (gdbarch, 1);
   set_gdbarch_software_single_step (gdbarch, spu_software_single_step);
   set_gdbarch_get_longjmp_target (gdbarch, spu_get_longjmp_target);
 
-- 
1.9.1

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-04-08 15:06 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-17 14:52 [rfc, spu] Don't call set_gdbarch_cannot_step_breakpoint in spu_gdbarch_init Yao Qi
2015-03-20 17:48 ` Pedro Alves
2015-04-01 20:35   ` Peter Schauer
2015-04-02  8:58     ` Pedro Alves
2015-04-02  9:09       ` Peter Schauer
2015-04-02  9:38         ` Pedro Alves
2015-04-02 12:44       ` Yao Qi
2015-04-07 12:45       ` Ulrich Weigand
2015-04-08 15:06         ` Yao Qi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).