This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Don't call set_gdbarch_cannot_step_breakpoint in aarch64_gdbarch_init


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e8ffc436d9d849eed52af64568d9f37aeaddbd9e

commit e8ffc436d9d849eed52af64568d9f37aeaddbd9e
Author: Yao Qi <yao.qi@linaro.org>
Date:   Fri Mar 20 10:15:21 2015 +0000

    Don't call set_gdbarch_cannot_step_breakpoint in aarch64_gdbarch_init
    
    Hi,
    I am looking at the following fails in aarch64-linux,
    
    stepi^M
    47        NOP; /* after permanent bp */^M
    (gdb) FAIL: gdb.base/bp-permanent.exp: always_inserted=off, sw_watchpoint=0: stepi signal with handler: single-step to handler
    
    the test expects GDB single step into signal handler, but GDB doesn't.
    The code in infrun.c:resume
    
          /* Most targets can step a breakpoint instruction, thus
    	 executing it normally.  But if this one cannot, just
    	 continue and we will hit it anyway.  */
          if (gdbarch_cannot_step_breakpoint (gdbarch))
    	step = 0;
    
    change the intended action from "step" to "continue".  The gdbarch method
    cannot_step_breakpoint isn't documented well, and I don't get much clue
    after explore the history.  However, from the comments above,
    aarch64-linux can step a breakpoint instruction, so don't need to call
    set_gdbarch_cannot_step_breakpoint.
    
    gdb:
    
    2015-03-20  Yao Qi  <yao.qi@linaro.org>
    
    	* aarch64-tdep.c (aarch64_gdbarch_init): Don't call
    	set_gdbarch_cannot_step_breakpoint.

Diff:
---
 gdb/ChangeLog      | 5 +++++
 gdb/aarch64-tdep.c | 1 -
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a8b8850..ad074c3 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-20  Yao Qi  <yao.qi@linaro.org>
+
+	* aarch64-tdep.c (aarch64_gdbarch_init): Don't call
+	set_gdbarch_cannot_step_breakpoint.
+
 2015-03-19  Pedro Alves  <palves@redhat.com>
 
 	* linux-nat.c (linux_resume_one_lwp): Rename to ...
diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c
index 472ce70..ddc9022 100644
--- a/gdb/aarch64-tdep.c
+++ b/gdb/aarch64-tdep.c
@@ -2698,7 +2698,6 @@ aarch64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   /* Breakpoint manipulation.  */
   set_gdbarch_breakpoint_from_pc (gdbarch, aarch64_breakpoint_from_pc);
-  set_gdbarch_cannot_step_breakpoint (gdbarch, 1);
   set_gdbarch_have_nonsteppable_watchpoint (gdbarch, 1);
   set_gdbarch_software_single_step (gdbarch, aarch64_software_single_step);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]