+2016-01-14 Yao Qi <yao.qi@linaro.org>
+
+ * arch/arm-get-next-pcs.c (arm_get_next_pcs_ctor): Change
+ argument arm_thumb2_breakpoint to has_thumb2_breakpoint.
+ (thumb_get_next_pcs_raw): Check has_thumb2_breakpoint
+ instead.
+ * arch/arm-get-next-pcs.h (struct arm_get_next_pcs)
+ <arm_thumb2_breakpoint>: Remove.
+ <has_thumb2_breakpoint>: New field.
+ (arm_get_next_pcs_ctor): Update declaration.
+ * arm-linux-tdep.c (arm_linux_software_single_step): Pass
+ 1 to arm_get_next_pcs_ctor.
+ * arm-tdep.c (arm_software_single_step): Pass 0 to
+ arm_get_next_pcs_ctor.
+
2016-01-13 Ulrich Weigand <uweigand@de.ibm.com>
* MAINTAINERS: Add Andreas Arnez as s390 target maintainer.
struct arm_get_next_pcs_ops *ops,
int byte_order,
int byte_order_for_code,
- const gdb_byte *arm_thumb2_breakpoint,
+ int has_thumb2_breakpoint,
struct regcache *regcache)
{
self->ops = ops;
self->byte_order = byte_order;
self->byte_order_for_code = byte_order_for_code;
- self->arm_thumb2_breakpoint = arm_thumb2_breakpoint;
+ self->has_thumb2_breakpoint = has_thumb2_breakpoint;
self->regcache = regcache;
}
flags, affecting the execution of further instructions, we may
need to set two breakpoints. */
- if (self->arm_thumb2_breakpoint != NULL)
+ if (self->has_thumb2_breakpoint)
{
if ((inst1 & 0xff00) == 0xbf00 && (inst1 & 0x000f) != 0)
{
int byte_order;
/* Byte order for code. */
int byte_order_for_code;
- /* Thumb2 breakpoint instruction. */
- const gdb_byte *arm_thumb2_breakpoint;
+ /* Whether the target has 32-bit thumb-2 breakpoint defined or
+ not. */
+ int has_thumb2_breakpoint;
/* Registry cache. */
struct regcache *regcache;
};
struct arm_get_next_pcs_ops *ops,
int byte_order,
int byte_order_for_code,
- const gdb_byte *arm_thumb2_breakpoint,
+ int has_thumb2_breakpoint,
struct regcache *regcache);
/* Find the next possible PCs after the current instruction executes. */
&arm_linux_get_next_pcs_ops,
gdbarch_byte_order (gdbarch),
gdbarch_byte_order_for_code (gdbarch),
- gdbarch_tdep (gdbarch)->thumb2_breakpoint,
+ 1,
regcache);
next_pcs = arm_get_next_pcs (&next_pcs_ctx, regcache_read_pc (regcache));
&arm_get_next_pcs_ops,
gdbarch_byte_order (gdbarch),
gdbarch_byte_order_for_code (gdbarch),
- gdbarch_tdep (gdbarch)->thumb2_breakpoint,
+ 0,
regcache);
next_pcs = arm_get_next_pcs (&next_pcs_ctx, regcache_read_pc (regcache));
+2016-01-14 Yao Qi <yao.qi@linaro.org>
+
+ * linux-aarch32-low.c (thumb2_breakpoint): Make it static.
+ * linux-aarch32-low.h (thumb2_breakpoint): Remove declaration.
+ * linux-arm-low.c (arm_gdbserver_get_next_pcs): Pass 1 to
+ arm_get_next_pcs_ctor.
+
2016-01-12 Josh Stone <jistone@redhat.com>
Philippe Waroquiers <philippe.waroquiers@skynet.be>
#define arm_breakpoint_len 4
static const unsigned short thumb_breakpoint = 0xde01;
#define thumb_breakpoint_len 2
-const unsigned short thumb2_breakpoint[] = { 0xf7f0, 0xa000 };
+static const unsigned short thumb2_breakpoint[] = { 0xf7f0, 0xa000 };
#define thumb2_breakpoint_len 4
/* Some older versions of GNU/Linux and Android do not define
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-extern const unsigned short thumb2_breakpoint[];
-
extern struct regs_info regs_info_aarch32;
void arm_fill_gregset (struct regcache *regcache, void *buf);
/* Byte order is ignored assumed as host. */
0,
0,
- (const gdb_byte *) &thumb2_breakpoint,
+ 1,
regcache);
next_pcs = arm_get_next_pcs (&next_pcs_ctx, pc);