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] gdbarch software_single_step frame_info to regcache: sparc


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

commit cd76b525eda02c30c4412698a2ff309b975d417a
Author: Yao Qi <yao.qi@linaro.org>
Date:   Tue Nov 22 14:05:05 2016 +0000

    gdbarch software_single_step frame_info to regcache: sparc
    
    gdb:
    
    2016-11-22  Yao Qi  <yao.qi@linaro.org>
    
    	* sparc-tdep.c (sparc_analyze_control_transfer): Replace parameter
    	frame with regcache.  Call get_current_frame.
    	(sparc_software_single_step): Call get_regcache_arch instead of
    	get_frame_arch.  Call regcache_raw_get_unsigned instead of
    	get_frame_register_unsigned.

Diff:
---
 gdb/ChangeLog    |  8 ++++++++
 gdb/sparc-tdep.c | 17 ++++++++++-------
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 6663d4c..b3931c3 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
 2016-11-22  Yao Qi  <yao.qi@linaro.org>
 
+	* sparc-tdep.c (sparc_analyze_control_transfer): Replace parameter
+	frame with regcache.  Call get_current_frame.
+	(sparc_software_single_step): Call get_regcache_arch instead of
+	get_frame_arch.  Call regcache_raw_get_unsigned instead of
+	get_frame_register_unsigned.
+
+2016-11-22  Yao Qi  <yao.qi@linaro.org>
+
 	* nios2-tdep.c (nios2_get_next_pc): Replace parameter frame
 	with regcache.  Call regcache_raw_get_signed instead of
 	get_frame_register_unsigned.
diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c
index ea2435e..18b627d 100644
--- a/gdb/sparc-tdep.c
+++ b/gdb/sparc-tdep.c
@@ -1501,7 +1501,7 @@ sparc32_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
    software single-step mechanism.  */
 
 static CORE_ADDR
-sparc_analyze_control_transfer (struct frame_info *frame,
+sparc_analyze_control_transfer (struct regcache *regcache,
 				CORE_ADDR pc, CORE_ADDR *npc)
 {
   unsigned long insn = sparc_fetch_instruction (pc);
@@ -1552,8 +1552,11 @@ sparc_analyze_control_transfer (struct frame_info *frame,
     }
   else if (X_OP (insn) == 2 && X_OP3 (insn) == 0x3a)
     {
+      struct frame_info *frame = get_current_frame ();
+
       /* Trap instruction (TRAP).  */
-      return gdbarch_tdep (get_frame_arch (frame))->step_trap (frame, insn);
+      return gdbarch_tdep (get_regcache_arch (regcache))->step_trap (frame,
+								     insn);
     }
 
   /* FIXME: Handle DONE and RETRY instructions.  */
@@ -1602,19 +1605,19 @@ sparc_step_trap (struct frame_info *frame, unsigned long insn)
 static VEC (CORE_ADDR) *
 sparc_software_single_step (struct frame_info *frame)
 {
-  struct gdbarch *arch = get_frame_arch (frame);
+  struct regcache *regcache = get_current_regcache ();
+  struct gdbarch *arch = get_regcache_arch (regcache);
   struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
-  struct address_space *aspace = get_frame_address_space (frame);
   CORE_ADDR npc, nnpc;
 
   CORE_ADDR pc, orig_npc;
   VEC (CORE_ADDR) *next_pcs = NULL;
 
-  pc = get_frame_register_unsigned (frame, tdep->pc_regnum);
-  orig_npc = npc = get_frame_register_unsigned (frame, tdep->npc_regnum);
+  pc = regcache_raw_get_unsigned (regcache, tdep->pc_regnum);
+  orig_npc = npc = regcache_raw_get_unsigned (regcache, tdep->npc_regnum);
 
   /* Analyze the instruction at PC.  */
-  nnpc = sparc_analyze_control_transfer (frame, pc, &npc);
+  nnpc = sparc_analyze_control_transfer (regcache, pc, &npc);
   if (npc != 0)
     VEC_safe_push (CORE_ADDR, next_pcs, npc);


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