diff options
author | Richard Earnshaw <richard.earnshaw@arm.com> | 2002-02-15 16:12:24 +0000 |
---|---|---|
committer | Richard Earnshaw <richard.earnshaw@arm.com> | 2002-02-15 16:12:24 +0000 |
commit | 66e810cd098c57a4483f33cedc272486506eb485 (patch) | |
tree | 4f63c94878bbbe7303466f05708c5915015e2c33 /gdb/config | |
parent | 97e03143bb83533b4cf4fcd9d283b05722b4c128 (diff) | |
download | gdb-66e810cd098c57a4483f33cedc272486506eb485.zip gdb-66e810cd098c57a4483f33cedc272486506eb485.tar.gz gdb-66e810cd098c57a4483f33cedc272486506eb485.tar.bz2 |
* arm-tdep.h (struct gdbarch_tdep): Add fields for breakpoint
descriptions.
* arm-tdep.c (arm_default_arm_le_breakpoint)
(arm_default_arm_be_breakpoint, arm_default_thumb_le_breakpoint)
(arm_default_thumb_be_breakpoint): New. Initialize them from
traditional breakpoint defines.
(arm_breakpoint_from_pc): Use new gdbarch_tdep entries.
(arm_gdbarch_init): Initialize new breakpoint variables.
* arm-linux-tdep.c (arm_linux_arm_le_breakpoint): New.
(arm_linux_init_abi): Initialize linux-specific breakpoint.
* armnbsd-tdep.c (arm_nbsd_arm_le_breakpoint): New.
(arm_netbsd_aout_init_abi, arm_netbsd_elf_init_abi): Split common
code out to ...
(arm_netbsd_init_abi_common): ... here; new function.
* config/arm/tm-arm.h (ARM_LE_BREAKPOINT, ARM_BE_BREAKPOINT)
(THUMB_LE_BREAKPOINT, THUMB_BE_BREAKPOINT): Delete.
* config/arm/tm-linux.h (ARM_LE_BREAKPOINT): Delete.
* config/arm/tm-nbsd.h (ARM_LE_BREAKPOINT): Delete.
Diffstat (limited to 'gdb/config')
-rw-r--r-- | gdb/config/arm/tm-arm.h | 35 | ||||
-rw-r--r-- | gdb/config/arm/tm-linux.h | 10 | ||||
-rw-r--r-- | gdb/config/arm/tm-nbsd.h | 5 |
3 files changed, 0 insertions, 50 deletions
diff --git a/gdb/config/arm/tm-arm.h b/gdb/config/arm/tm-arm.h index 77cae55..6f48b60b 100644 --- a/gdb/config/arm/tm-arm.h +++ b/gdb/config/arm/tm-arm.h @@ -26,41 +26,6 @@ #define GDB_MULTI_ARCH 1 #endif -/* The following define instruction sequences that will cause ARM - cpu's to take an undefined instruction trap. These are used to - signal a breakpoint to GDB. - - The newer ARMv4T cpu's are capable of operating in ARM or Thumb - modes. A different instruction is required for each mode. The ARM - cpu's can also be big or little endian. Thus four different - instructions are needed to support all cases. - - Note: ARMv4 defines several new instructions that will take the - undefined instruction trap. ARM7TDMI is nominally ARMv4T, but does - not in fact add the new instructions. The new undefined - instructions in ARMv4 are all instructions that had no defined - behaviour in earlier chips. There is no guarantee that they will - raise an exception, but may be treated as NOP's. In practice, it - may only safe to rely on instructions matching: - - 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 - 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 - C C C C 0 1 1 x x x x x x x x x x x x x x x x x x x x 1 x x x x - - Even this may only true if the condition predicate is true. The - following use a condition predicate of ALWAYS so it is always TRUE. - - There are other ways of forcing a breakpoint. ARM Linux, RISC iX, - and NetBSD will all use a software interrupt rather than an - undefined instruction to force a trap. This can be handled by - redefining some or all of the following in a target dependent - fashion. */ - -#define ARM_LE_BREAKPOINT {0xFE,0xDE,0xFF,0xE7} -#define ARM_BE_BREAKPOINT {0xE7,0xFF,0xDE,0xFE} -#define THUMB_LE_BREAKPOINT {0xfe,0xdf} -#define THUMB_BE_BREAKPOINT {0xdf,0xfe} - /* Specify that for the native compiler variables for a particular lexical context are listed after the beginning LBRAC instead of before in the executables list of symbols. */ diff --git a/gdb/config/arm/tm-linux.h b/gdb/config/arm/tm-linux.h index 7e3a80c..aa3fa52 100644 --- a/gdb/config/arm/tm-linux.h +++ b/gdb/config/arm/tm-linux.h @@ -34,16 +34,6 @@ extern struct link_map_offsets *arm_linux_svr4_fetch_link_map_offsets (void); #define SVR4_FETCH_LINK_MAP_OFFSETS() arm_linux_svr4_fetch_link_map_offsets () -/* Under ARM Linux the traditional way of performing a breakpoint is to - execute a particular software interrupt, rather than use a particular - undefined instruction to provoke a trap. Upon exection of the software - interrupt the kernel stops the inferior with a SIGTRAP, and wakes the - debugger. Since ARM Linux is little endian, and doesn't support Thumb - at the moment we redefined ARM_LE_BREAKPOINT to use the correct software - interrupt. */ -#undef ARM_LE_BREAKPOINT -#define ARM_LE_BREAKPOINT {0x01,0x00,0x9f,0xef} - #undef CALL_DUMMY_WORDS #define CALL_DUMMY_WORDS arm_linux_call_dummy_words extern LONGEST arm_linux_call_dummy_words[]; diff --git a/gdb/config/arm/tm-nbsd.h b/gdb/config/arm/tm-nbsd.h index c55cc5a..4dfc329 100644 --- a/gdb/config/arm/tm-nbsd.h +++ b/gdb/config/arm/tm-nbsd.h @@ -42,11 +42,6 @@ get_longjmp_target (CORE_ADDR *); #define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR) -/* For compatibility with previous implemenations of GDB on arm/NetBSD, - override the default little-endian breakpoint. */ -#undef ARM_LE_BREAKPOINT -#define ARM_LE_BREAKPOINT {0x11, 0x00, 0x00, 0xe6} - /* By convention, NetBSD uses the "other" register names. */ #define DEFAULT_REGISTER_NAMES additional_register_names |