From 9d1fb17785b89eeefe98c1aa2f41596d5fbb29dc Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Sun, 13 Nov 2005 18:04:03 +0000 Subject: [PATCH] * linux-arm-low.c (arm_eabi_breakpoint): New variable. (arm_breakpoint_at): Recognize both breakpoints. (the_low_target): Use the correct breakpoint instruction. --- gdb/gdbserver/ChangeLog | 6 ++++++ gdb/gdbserver/linux-arm-low.c | 16 +++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 0c9a47c8283..ec1e152706f 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,9 @@ +2005-11-13 Daniel Jacobowitz + + * linux-arm-low.c (arm_eabi_breakpoint): New variable. + (arm_breakpoint_at): Recognize both breakpoints. + (the_low_target): Use the correct breakpoint instruction. + 2005-11-02 Daniel Jacobowitz * configure.srv (x86_64-*-linux*): Turn on thread_db support. diff --git a/gdb/gdbserver/linux-arm-low.c b/gdb/gdbserver/linux-arm-low.c index 7c23b17789a..643da0853a3 100644 --- a/gdb/gdbserver/linux-arm-low.c +++ b/gdb/gdbserver/linux-arm-low.c @@ -70,6 +70,12 @@ arm_set_pc (CORE_ADDR pc) static const unsigned long arm_breakpoint = 0xef9f0001; #define arm_breakpoint_len 4 +/* For new EABI binaries. We recognize it regardless of which ABI + is used for gdbserver, so single threaded debugging should work + OK, but for multi-threaded debugging we only insert the current + ABI's breakpoint instruction. For now at least. */ +static const unsigned long arm_eabi_breakpoint = 0xe7f001f0; + static int arm_breakpoint_at (CORE_ADDR where) { @@ -79,8 +85,12 @@ arm_breakpoint_at (CORE_ADDR where) if (insn == arm_breakpoint) return 1; + if (insn == arm_eabi_breakpoint) + return 1; + /* If necessary, recognize more trap instructions here. GDB only uses the - one. */ + two. */ + return 0; } @@ -102,7 +112,11 @@ struct linux_target_ops the_low_target = { arm_cannot_store_register, arm_get_pc, arm_set_pc, +#ifndef __ARM_EABI__ (const unsigned char *) &arm_breakpoint, +#else + (const unsigned char *) &arm_eabi_breakpoint, +#endif arm_breakpoint_len, arm_reinsert_addr, 0, -- 2.30.2