* 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 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
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);
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
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;
/* 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);
/* 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);
#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
#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
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;
/* 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
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
};
\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)
/* 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
# 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
+++ /dev/null
-/* 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 */