aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/arch/arm-get-next-pcs.c24
-rw-r--r--gdb/arch/arm-get-next-pcs.h3
-rw-r--r--gdb/arm-linux-tdep.c2
-rw-r--r--gdb/arm-tdep.c2
-rw-r--r--gdb/gdbserver/ChangeLog8
-rw-r--r--gdb/gdbserver/linux-arm-low.c4
-rw-r--r--gdb/gdbserver/linux-low.c4
-rw-r--r--gdb/gdbserver/linux-low.h2
9 files changed, 38 insertions, 21 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 8a4453c..099c10c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+2016-01-25 Yao Qi <yao.qi@linaro.org>
+
+ * arch/arm-get-next-pcs.c (thumb_deal_with_atomic_sequence_raw):
+ Remove argument pc. Get pc by regcache_read_pc. Callers updated.
+ (arm_deal_with_atomic_sequence_raw): Likewise.
+ (thumb_get_next_pcs_raw): Likewise.
+ (arm_get_next_pcs_raw): Likewise.
+ (arm_get_next_pcs): Remove argument pc. Callers updated.
+ * arch/arm-get-next-pcs.h (arm_get_next_pcs): Update declaration.
+
2016-01-25 Mark Wielaard <mjw@redhat.com>
* ada-lang.c (ada_evaluate_subexp): Add proper else block.
diff --git a/gdb/arch/arm-get-next-pcs.c b/gdb/arch/arm-get-next-pcs.c
index 6b8f38a..e840147 100644
--- a/gdb/arch/arm-get-next-pcs.c
+++ b/gdb/arch/arm-get-next-pcs.c
@@ -46,11 +46,11 @@ arm_get_next_pcs_ctor (struct arm_get_next_pcs *self,
added to the next_pcs list. */
static VEC (CORE_ADDR) *
-thumb_deal_with_atomic_sequence_raw (struct arm_get_next_pcs *self,
- CORE_ADDR pc)
+thumb_deal_with_atomic_sequence_raw (struct arm_get_next_pcs *self)
{
int byte_order_for_code = self->byte_order_for_code;
CORE_ADDR breaks[2] = {-1, -1};
+ CORE_ADDR pc = regcache_read_pc (self->regcache);
CORE_ADDR loc = pc;
unsigned short insn1, insn2;
int insn_count;
@@ -183,11 +183,11 @@ thumb_deal_with_atomic_sequence_raw (struct arm_get_next_pcs *self,
added to the next_pcs list. */
static VEC (CORE_ADDR) *
-arm_deal_with_atomic_sequence_raw (struct arm_get_next_pcs *self,
- CORE_ADDR pc)
+arm_deal_with_atomic_sequence_raw (struct arm_get_next_pcs *self)
{
int byte_order_for_code = self->byte_order_for_code;
CORE_ADDR breaks[2] = {-1, -1};
+ CORE_ADDR pc = regcache_read_pc (self->regcache);
CORE_ADDR loc = pc;
unsigned int insn;
int insn_count;
@@ -261,10 +261,11 @@ arm_deal_with_atomic_sequence_raw (struct arm_get_next_pcs *self,
/* Find the next possible PCs for thumb mode. */
static VEC (CORE_ADDR) *
-thumb_get_next_pcs_raw (struct arm_get_next_pcs *self, CORE_ADDR pc)
+thumb_get_next_pcs_raw (struct arm_get_next_pcs *self)
{
int byte_order = self->byte_order;
int byte_order_for_code = self->byte_order_for_code;
+ CORE_ADDR pc = regcache_read_pc (self->regcache);
unsigned long pc_val = ((unsigned long) pc) + 4; /* PC after prefetch */
unsigned short inst1;
CORE_ADDR nextpc = pc + 2; /* Default is next instruction. */
@@ -641,7 +642,7 @@ thumb_get_next_pcs_raw (struct arm_get_next_pcs *self, CORE_ADDR pc)
address in GDB and arm_addr_bits_remove in GDBServer. */
static VEC (CORE_ADDR) *
-arm_get_next_pcs_raw (struct arm_get_next_pcs *self, CORE_ADDR pc)
+arm_get_next_pcs_raw (struct arm_get_next_pcs *self)
{
int byte_order = self->byte_order;
int byte_order_for_code = self->byte_order_for_code;
@@ -650,6 +651,7 @@ arm_get_next_pcs_raw (struct arm_get_next_pcs *self, CORE_ADDR pc)
unsigned long status;
CORE_ADDR nextpc;
struct regcache *regcache = self->regcache;
+ CORE_ADDR pc = regcache_read_pc (self->regcache);
VEC (CORE_ADDR) *next_pcs = NULL;
pc_val = (unsigned long) pc;
@@ -904,21 +906,21 @@ arm_get_next_pcs_raw (struct arm_get_next_pcs *self, CORE_ADDR pc)
/* See arm-get-next-pcs.h. */
VEC (CORE_ADDR) *
-arm_get_next_pcs (struct arm_get_next_pcs *self, CORE_ADDR pc)
+arm_get_next_pcs (struct arm_get_next_pcs *self)
{
VEC (CORE_ADDR) *next_pcs = NULL;
if (self->ops->is_thumb (self))
{
- next_pcs = thumb_deal_with_atomic_sequence_raw (self, pc);
+ next_pcs = thumb_deal_with_atomic_sequence_raw (self);
if (next_pcs == NULL)
- next_pcs = thumb_get_next_pcs_raw (self, pc);
+ next_pcs = thumb_get_next_pcs_raw (self);
}
else
{
- next_pcs = arm_deal_with_atomic_sequence_raw (self, pc);
+ next_pcs = arm_deal_with_atomic_sequence_raw (self);
if (next_pcs == NULL)
- next_pcs = arm_get_next_pcs_raw (self, pc);
+ next_pcs = arm_get_next_pcs_raw (self);
}
return next_pcs;
diff --git a/gdb/arch/arm-get-next-pcs.h b/gdb/arch/arm-get-next-pcs.h
index 4a0fc16..7cb0858 100644
--- a/gdb/arch/arm-get-next-pcs.h
+++ b/gdb/arch/arm-get-next-pcs.h
@@ -57,7 +57,6 @@ void arm_get_next_pcs_ctor (struct arm_get_next_pcs *self,
struct regcache *regcache);
/* Find the next possible PCs after the current instruction executes. */
-VEC (CORE_ADDR) *arm_get_next_pcs (struct arm_get_next_pcs *self,
- CORE_ADDR pc);
+VEC (CORE_ADDR) *arm_get_next_pcs (struct arm_get_next_pcs *self);
#endif /* ARM_GET_NEXT_PCS_H */
diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c
index f6a831a..3421f3b 100644
--- a/gdb/arm-linux-tdep.c
+++ b/gdb/arm-linux-tdep.c
@@ -947,7 +947,7 @@ arm_linux_software_single_step (struct frame_info *frame)
1,
regcache);
- next_pcs = arm_get_next_pcs (&next_pcs_ctx, regcache_read_pc (regcache));
+ next_pcs = arm_get_next_pcs (&next_pcs_ctx);
for (i = 0; VEC_iterate (CORE_ADDR, next_pcs, i, pc); i++)
{
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index ccc2a03..5a2d490 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -6186,7 +6186,7 @@ arm_software_single_step (struct frame_info *frame)
0,
regcache);
- next_pcs = arm_get_next_pcs (&next_pcs_ctx, regcache_read_pc (regcache));
+ next_pcs = arm_get_next_pcs (&next_pcs_ctx);
for (i = 0; VEC_iterate (CORE_ADDR, next_pcs, i, pc); i++)
arm_insert_single_step_breakpoint (gdbarch, aspace, pc);
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 8c1677d..e511de9 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,5 +1,13 @@
2016-01-26 Yao Qi <yao.qi@linaro.org>
+ * linux-arm-low.c (arm_gdbserver_get_next_pcs): Remove argument pc.
+ * linux-low.c (install_software_single_step_breakpoints): Don't
+ call regcache_read_pc.
+ * linux-low.h (struct linux_target_ops) <get_next_pcs>: Remove
+ argument pc.
+
+2016-01-26 Yao Qi <yao.qi@linaro.org>
+
* linux-low.c (install_software_single_step_breakpoints): Call
regcache_read_pc instead of get_pc.
diff --git a/gdb/gdbserver/linux-arm-low.c b/gdb/gdbserver/linux-arm-low.c
index c4f43bb..0f62706 100644
--- a/gdb/gdbserver/linux-arm-low.c
+++ b/gdb/gdbserver/linux-arm-low.c
@@ -923,7 +923,7 @@ arm_arch_setup (void)
/* Fetch the next possible PCs after the current instruction executes. */
static VEC (CORE_ADDR) *
-arm_gdbserver_get_next_pcs (CORE_ADDR pc, struct regcache *regcache)
+arm_gdbserver_get_next_pcs (struct regcache *regcache)
{
struct arm_get_next_pcs next_pcs_ctx;
VEC (CORE_ADDR) *next_pcs = NULL;
@@ -936,7 +936,7 @@ arm_gdbserver_get_next_pcs (CORE_ADDR pc, struct regcache *regcache)
1,
regcache);
- next_pcs = arm_get_next_pcs (&next_pcs_ctx, pc);
+ next_pcs = arm_get_next_pcs (&next_pcs_ctx);
return next_pcs;
}
diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index b35b569..bce7580 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -4103,9 +4103,7 @@ install_software_single_step_breakpoints (struct lwp_info *lwp)
VEC (CORE_ADDR) *next_pcs = NULL;
struct cleanup *old_chain = make_cleanup (VEC_cleanup (CORE_ADDR), &next_pcs);
- pc = regcache_read_pc (regcache);
-
- next_pcs = (*the_low_target.get_next_pcs) (pc, regcache);
+ next_pcs = (*the_low_target.get_next_pcs) (regcache);
for (i = 0; VEC_iterate (CORE_ADDR, next_pcs, i, pc); ++i)
set_reinsert_breakpoint (pc);
diff --git a/gdb/gdbserver/linux-low.h b/gdb/gdbserver/linux-low.h
index 4845862..0d9eb40 100644
--- a/gdb/gdbserver/linux-low.h
+++ b/gdb/gdbserver/linux-low.h
@@ -154,7 +154,7 @@ struct linux_target_ops
const gdb_byte *(*sw_breakpoint_from_kind) (int kind, int *size);
/* Find the next possible PCs after the current instruction executes. */
- VEC (CORE_ADDR) *(*get_next_pcs) (CORE_ADDR pc, struct regcache *regcache);
+ VEC (CORE_ADDR) *(*get_next_pcs) (struct regcache *regcache);
int decr_pc_after_break;
int (*breakpoint_at) (CORE_ADDR pc);