* 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.
This commit is contained in:
parent
bb63802a4f
commit
190dce0965
9 changed files with 70 additions and 67 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -72,6 +72,10 @@ static const struct tramp_frame armobsd_sigframe =
|
|||
};
|
||||
|
||||
|
||||
/* 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
Loading…
Reference in a new issue