This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[ping] [rfc/rfa] Remove config/arm/tm-embed.h TM file


Hello Richard,

here's an updated version of
http://sourceware.org/ml/gdb-patches/2007-04/msg00185.html
against current mainline.

Is this OK?  I'd like to get this in to make progress with eliminating
TM files, in particular those that override gdbarch macros ...

Bye,
Ulrich


diff -urNp gdb-orig/gdb/arm-linux-tdep.c gdb-head/gdb/arm-linux-tdep.c
--- gdb-orig/gdb/arm-linux-tdep.c	2007-04-13 02:20:31.000000000 +0200
+++ gdb-head/gdb/arm-linux-tdep.c	2007-05-05 01:03:40.103534339 +0200
@@ -605,6 +605,9 @@ arm_linux_init_abi (struct gdbarch_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);
diff -urNp gdb-orig/gdb/armnbsd-tdep.c gdb-head/gdb/armnbsd-tdep.c
--- gdb-orig/gdb/armnbsd-tdep.c	2007-04-13 02:20:31.000000000 +0200
+++ gdb-head/gdb/armnbsd-tdep.c	2007-05-05 01:03:40.107533766 +0200
@@ -68,6 +68,9 @@ arm_netbsd_init_abi_common (struct gdbar
 
   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
diff -urNp gdb-orig/gdb/armobsd-tdep.c gdb-head/gdb/armobsd-tdep.c
--- gdb-orig/gdb/armobsd-tdep.c	2007-04-13 02:20:31.000000000 +0200
+++ gdb-head/gdb/armobsd-tdep.c	2007-05-05 01:03:40.111533192 +0200
@@ -72,6 +72,10 @@ static const struct tramp_frame armobsd_
 };
 
 
+/* 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 in
 
   /* 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;
+    }
 }
 
 
diff -urNp gdb-orig/gdb/arm-tdep.c gdb-head/gdb/arm-tdep.c
--- gdb-orig/gdb/arm-tdep.c	2007-05-05 00:37:51.080438239 +0200
+++ gdb-head/gdb/arm-tdep.c	2007-05-05 01:04:16.136823128 +0200
@@ -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, dis
    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 in
   /* 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 in
   /* 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);
 
diff -urNp gdb-orig/gdb/arm-tdep.h gdb-head/gdb/arm-tdep.h
--- gdb-orig/gdb/arm-tdep.h	2007-05-05 00:37:51.085437522 +0200
+++ gdb-head/gdb/arm-tdep.h	2007-05-05 01:04:31.735981362 +0200
@@ -187,6 +187,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
diff -urNp gdb-orig/gdb/arm-wince-tdep.c gdb-head/gdb/arm-wince-tdep.c
--- gdb-orig/gdb/arm-wince-tdep.c	2007-04-13 02:20:39.000000000 +0200
+++ gdb-head/gdb/arm-wince-tdep.c	2007-05-05 01:03:40.144528460 +0200
@@ -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 
 
   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 
 
   /* 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
diff -urNp gdb-orig/gdb/config/arm/embed.mt gdb-head/gdb/config/arm/embed.mt
--- gdb-orig/gdb/config/arm/embed.mt	2007-04-13 02:20:39.000000000 +0200
+++ gdb-head/gdb/config/arm/embed.mt	2007-05-05 01:03:40.148527886 +0200
@@ -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 -urNp gdb-orig/gdb/config/arm/tm-embed.h gdb-head/gdb/config/arm/tm-embed.h
--- gdb-orig/gdb/config/arm/tm-embed.h	2007-04-13 02:20:39.000000000 +0200
+++ gdb-head/gdb/config/arm/tm-embed.h	1970-01-01 01:00:00.000000000 +0100
@@ -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 */

-- 
  Dr. Ulrich Weigand
  GNU Toolchain for Linux on System z and Cell BE
  Ulrich.Weigand@de.ibm.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]