* config/arm/embed.mt (DEPRECATED_TM_FILE): Set to tm-arm.h.
authorUlrich Weigand <uweigand@de.ibm.com>
Wed, 16 May 2007 15:31:12 +0000 (15:31 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Wed, 16 May 2007 15:31:12 +0000 (15:31 +0000)
* config/arm/tm-embed.h: Delete file.

* arm-tdep.h (arm_software_single_step): Declare.
* arm-tdep.c (arm_software_single_step): Make global.
(arm_gdbarch_init): Move set_gdbarch_software_single_step call
from here to ...
* arm-linux-tdep.c (arm_linux_init_abi): ... here ...
* armnbsd-tdep.c (arm_netbsd_init_abi_common): ... here ...
* armobsd-tdep.c (armobsd_init_abi): ... here ...
* arm-wince-tdep.c (arm_wince_init_abi): ... and here.

* arm-tdep.c (ARM_LE_BREAKPOINT, ARM_BE_BREAKPOINT): No longer
allow defines to be overriden by TM file.
(THUMB_LE_BREAKPOINT, THUMB_BE_BREAKPOINT): Likewise.  Also,
change default to {0xbe,0xbe}.
* armobsd-tdep.c (arm_obsd_thumb_le_breakpoint,
arm_obsd_thumb_be_breakpoint): New global variables.
(armobsd_init_abi): Override tdep->thumb_breakpoint and
tdep->thumb_breakpoint_size.
* arm-wince-tdep.c (arm_wince_thumb_le_breakpoint): New variable.
(arm_wince_init_abi): Override tdep->thumb_breakpoint and
tdep->thumb_breakpoint_size.

* arm-tdep.c (arm_gdbarch_init): Add set_gdbarch_skip_trampoline_code.

gdb/ChangeLog
gdb/arm-linux-tdep.c
gdb/arm-tdep.c
gdb/arm-tdep.h
gdb/arm-wince-tdep.c
gdb/armnbsd-tdep.c
gdb/armobsd-tdep.c
gdb/config/arm/embed.mt
gdb/config/arm/tm-embed.h [deleted file]

index 29edcde81f9825d3aaba73b6579b45fcc3059a39..faf8d896633bc58cb64781059ace598b8ee42a9a 100644 (file)
@@ -1,3 +1,31 @@
+2007-05-16  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * config/arm/embed.mt (DEPRECATED_TM_FILE): Set to tm-arm.h.
+       * config/arm/tm-embed.h: Delete file.
+
+       * arm-tdep.h (arm_software_single_step): Declare.
+       * arm-tdep.c (arm_software_single_step): Make global.
+       (arm_gdbarch_init): Move set_gdbarch_software_single_step call
+       from here to ...
+       * arm-linux-tdep.c (arm_linux_init_abi): ... here ...
+       * armnbsd-tdep.c (arm_netbsd_init_abi_common): ... here ...
+       * armobsd-tdep.c (armobsd_init_abi): ... here ...
+       * arm-wince-tdep.c (arm_wince_init_abi): ... and here.
+
+       * arm-tdep.c (ARM_LE_BREAKPOINT, ARM_BE_BREAKPOINT): No longer
+       allow defines to be overriden by TM file.
+       (THUMB_LE_BREAKPOINT, THUMB_BE_BREAKPOINT): Likewise.  Also,
+       change default to {0xbe,0xbe}.
+       * armobsd-tdep.c (arm_obsd_thumb_le_breakpoint,
+       arm_obsd_thumb_be_breakpoint): New global variables.
+       (armobsd_init_abi): Override tdep->thumb_breakpoint and
+       tdep->thumb_breakpoint_size.
+       * arm-wince-tdep.c (arm_wince_thumb_le_breakpoint): New variable.
+       (arm_wince_init_abi): Override tdep->thumb_breakpoint and 
+       tdep->thumb_breakpoint_size.
+
+       * arm-tdep.c (arm_gdbarch_init): Add set_gdbarch_skip_trampoline_code.
+
 2007-05-16  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * NEWS: Mention removed "set mips stack-arg-size" and "set mips
index 6651f6649ebdf9622bfd2d11537f8b649139e479..c9b5296155646b5a15e50d3f6f68db23317ef117 100644 (file)
@@ -605,6 +605,9 @@ arm_linux_init_abi (struct gdbarch_info info,
   set_solib_svr4_fetch_link_map_offsets
     (gdbarch, svr4_ilp32_fetch_link_map_offsets);
 
+  /* Single stepping.  */
+  set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
+
   /* Shared library handling.  */
   set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
   set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver);
index 8a3a1f996f384c7fa577e0e5b45d443dc220fb6a..2cfb5c0281b477a981a92667324810db7c5a2871 100644 (file)
@@ -1904,7 +1904,7 @@ arm_get_next_pc (CORE_ADDR pc)
    single-step support.  We find the target of the coming instruction
    and breakpoint it.  */
 
-static int
+int
 arm_software_single_step (struct regcache *regcache)
 {
   /* NOTE: This may insert the wrong breakpoint instruction when
@@ -1989,21 +1989,10 @@ gdb_print_insn_arm (bfd_vma memaddr, disassemble_info *info)
    instruction to force a trap.  This can be handled by by the
    abi-specific code during establishment of the gdbarch vector.  */
 
-
-/* NOTE rearnsha 2002-02-18: for now we allow a non-multi-arch gdb to
-   override these definitions.  */
-#ifndef ARM_LE_BREAKPOINT
 #define ARM_LE_BREAKPOINT {0xFE,0xDE,0xFF,0xE7}
-#endif
-#ifndef ARM_BE_BREAKPOINT
 #define ARM_BE_BREAKPOINT {0xE7,0xFF,0xDE,0xFE}
-#endif
-#ifndef THUMB_LE_BREAKPOINT
-#define THUMB_LE_BREAKPOINT {0xfe,0xdf}
-#endif
-#ifndef THUMB_BE_BREAKPOINT
-#define THUMB_BE_BREAKPOINT {0xdf,0xfe}
-#endif
+#define THUMB_LE_BREAKPOINT {0xbe,0xbe}
+#define THUMB_BE_BREAKPOINT {0xbe,0xbe}
 
 static const char arm_default_arm_le_breakpoint[] = ARM_LE_BREAKPOINT;
 static const char arm_default_arm_be_breakpoint[] = ARM_BE_BREAKPOINT;
@@ -2939,6 +2928,9 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   /* Advance PC across function entry code.  */
   set_gdbarch_skip_prologue (gdbarch, arm_skip_prologue);
 
+  /* Skip trampolines.  */
+  set_gdbarch_skip_trampoline_code (gdbarch, arm_skip_stub);
+
   /* The stack grows downward.  */
   set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
 
@@ -2969,10 +2961,6 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   /* Returning results.  */
   set_gdbarch_return_value (gdbarch, arm_return_value);
 
-  /* Single stepping.  */
-  /* XXX For an RDI target we should ask the target if it can single-step.  */
-  set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
-
   /* Disassembly.  */
   set_gdbarch_print_insn (gdbarch, gdb_print_insn_arm);
 
index 6cc6b0e159e7e901fadfb47ae94ff670ed186bd7..29f23283629b296b2f56d3e70275d99393e311c4 100644 (file)
@@ -182,6 +182,8 @@ struct gdbarch_tdep
 #define LOWEST_PC (gdbarch_tdep (current_gdbarch)->lowest_pc)
 #endif
 
+int arm_software_single_step (struct regcache *);
+
 /* Functions exported from armbsd-tdep.h.  */
 
 /* Return the appropriate register set for the core section identified
index bfebef1aa4cd5d927ab9c37d559bcee2174f0264..db9cffe6d661d1a8825e4d1ac6b03231e411d328 100644 (file)
@@ -30,6 +30,7 @@
 #include "arm-tdep.h"
 
 static const char arm_wince_le_breakpoint[] = { 0x10, 0x00, 0x00, 0xe6 };
+static const char arm_wince_thumb_le_breakpoint[] = { 0xfe, 0xdf };
 
 /* Description of the longjmp buffer.  */
 #define ARM_WINCE_JB_ELEMENT_SIZE      INT_REGISTER_SIZE
@@ -42,6 +43,8 @@ arm_wince_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 
   tdep->arm_breakpoint = arm_wince_le_breakpoint;
   tdep->arm_breakpoint_size = sizeof (arm_wince_le_breakpoint);
+  tdep->thumb_breakpoint = arm_wince_thumb_le_breakpoint;
+  tdep->thumb_breakpoint_size = sizeof (arm_wince_thumb_le_breakpoint);
   tdep->struct_return = pcc_struct_return;
 
   tdep->fp_model = ARM_FLOAT_SOFT_VFP;
@@ -57,6 +60,9 @@ arm_wince_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 
   /* Shared library handling.  */
   set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
+
+  /* Single stepping.  */
+  set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
 }
 
 static enum gdb_osabi
index 5c298262646916d3e6d69e3fd131e283c474c442..a446bd77931d331c7b2dabf077c7de1af201b20b 100644 (file)
@@ -68,6 +68,9 @@ arm_netbsd_init_abi_common (struct gdbarch_info info,
 
   tdep->jb_pc = ARM_NBSD_JB_PC;
   tdep->jb_elt_size = ARM_NBSD_JB_ELEMENT_SIZE;
+
+  /* Single stepping.  */
+  set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
 }
   
 static void
index 87df203dbbe4f078010f34297377bbde5a832561..53e3d1654ae54ec6134103289f489edb4251d32c 100644 (file)
@@ -72,6 +72,10 @@ static const struct tramp_frame armobsd_sigframe =
 };
 \f
 
+/* Override default thumb breakpoints.  */
+static const char arm_obsd_thumb_le_breakpoint[] = {0xfe, 0xdf};
+static const char arm_obsd_thumb_be_breakpoint[] = {0xdf, 0xfe};
+
 static void
 armobsd_init_abi (struct gdbarch_info info,
                  struct gdbarch *gdbarch)
@@ -96,6 +100,23 @@ armobsd_init_abi (struct gdbarch_info info,
 
   /* OpenBSD/arm uses -fpcc-struct-return by default.  */
   tdep->struct_return = pcc_struct_return;
+
+  /* Single stepping.  */
+  set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
+
+  /* Breakpoints.  */
+  switch (info.byte_order)
+    {
+    case BFD_ENDIAN_BIG:
+      tdep->thumb_breakpoint = arm_obsd_thumb_be_breakpoint;
+      tdep->thumb_breakpoint_size = sizeof (arm_obsd_thumb_be_breakpoint);
+      break;
+
+    case BFD_ENDIAN_LITTLE:
+      tdep->thumb_breakpoint = arm_obsd_thumb_le_breakpoint;
+      tdep->thumb_breakpoint_size = sizeof (arm_obsd_thumb_le_breakpoint);
+      break;
+    }
 }
 \f
 
index 45f09c87b7d33f608fb3f66dbd6dd5977b4b46ec..1fe3524ea480b9c9767b8fcbd7e0df8778535e2d 100644 (file)
@@ -1,6 +1,6 @@
 # Target: ARM embedded system
 TDEPFILES= arm-tdep.o
-DEPRECATED_TM_FILE= tm-embed.h
+DEPRECATED_TM_FILE= tm-arm.h
 
 SIM_OBS = remote-sim.o
 SIM = ../sim/arm/libsim.a
diff --git a/gdb/config/arm/tm-embed.h b/gdb/config/arm/tm-embed.h
deleted file mode 100644 (file)
index baaecf5..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Definitions to target GDB to ARM embedded systems.
-   Copyright 1986, 1987, 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2007 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#ifndef TM_ARMEMBED_H
-#define TM_ARMEMBED_H
-
-/* Include the common ARM definitions. */
-#include "arm/tm-arm.h"
-
-/* The remote stub should be able to single-step. */
-#undef SOFTWARE_SINGLE_STEP_P
-#define SOFTWARE_SINGLE_STEP_P() 0
-
-/* The first 0x20 bytes are the trap vectors.  */
-#undef LOWEST_PC
-#define LOWEST_PC      0x20
-
-/* Override defaults.  */
-
-#undef THUMB_LE_BREAKPOINT
-#define THUMB_LE_BREAKPOINT {0xbe,0xbe}       
-#undef THUMB_BE_BREAKPOINT
-#define THUMB_BE_BREAKPOINT {0xbe,0xbe}       
-
-/* Functions for dealing with Thumb call thunks.  */
-#define SKIP_TRAMPOLINE_CODE(pc)               arm_skip_stub (pc)
-extern int arm_in_call_stub (CORE_ADDR pc, char *name);
-extern CORE_ADDR arm_skip_stub (CORE_ADDR pc);
-
-#endif /* TM_ARMEMBED_H */