This is the mail archive of the gdb-patches@sources.redhat.com 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]

[PATCH] ARM: Add Thumb and ARM-be breakpoints for NetBSD


This patch adds some more breakpoints for NetBSD to permit debugging of
Big-endian ARM and Thumb code.

R.

2004-08-23  Richard Earnshaw  <rearnsha@arm.com>

        * armnbsd-tdep.c (arm_nbsd_arm_be_breakpoint): Define.
        (arm_nbsd_thumb_[lb]e_breakpoint): Define.
        (arm_netbsd_init_abi_common): Register them.


Index: armnbsd-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/armnbsd-tdep.c,v
retrieving revision 1.12
diff -p -r1.12 armnbsd-tdep.c
*** armnbsd-tdep.c	8 May 2004 17:33:23 -0000	1.12
--- armnbsd-tdep.c	23 Aug 2004 10:23:46 -0000
***************
*** 35,40 ****
--- 35,43 ----
  /* For compatibility with previous implemenations of GDB on arm/NetBSD,
     override the default little-endian breakpoint.  */
  static const char arm_nbsd_arm_le_breakpoint[] = {0x11, 0x00, 0x00, 0xe6};
+ static const char arm_nbsd_arm_be_breakpoint[] = {0xe6, 0x00, 0x00, 0x11};
+ static const char arm_nbsd_thumb_le_breakpoint[] = {0xfe, 0xde};
+ static const char arm_nbsd_thumb_be_breakpoint[] = {0xde, 0xfe};
  
  static int
  arm_netbsd_aout_in_solib_call_trampoline (CORE_ADDR pc, char *name)
*************** arm_netbsd_init_abi_common (struct gdbar
*** 52,59 ****
    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
  
    tdep->lowest_pc = 0x8000;
!   tdep->arm_breakpoint = arm_nbsd_arm_le_breakpoint;
!   tdep->arm_breakpoint_size = sizeof (arm_nbsd_arm_le_breakpoint);
  
    tdep->jb_pc = ARM_NBSD_JB_PC;
    tdep->jb_elt_size = ARM_NBSD_JB_ELEMENT_SIZE;
--- 55,80 ----
    struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
  
    tdep->lowest_pc = 0x8000;
!   switch (info.byte_order)
!     {
!     case BFD_ENDIAN_LITTLE:
!       tdep->arm_breakpoint = arm_nbsd_arm_le_breakpoint;
!       tdep->thumb_breakpoint = arm_nbsd_thumb_le_breakpoint;
!       tdep->arm_breakpoint_size = sizeof (arm_nbsd_arm_le_breakpoint);
!       tdep->thumb_breakpoint_size = sizeof (arm_nbsd_thumb_le_breakpoint);
!       break;
! 
!     case BFD_ENDIAN_BIG:
!       tdep->arm_breakpoint = arm_nbsd_arm_be_breakpoint;
!       tdep->thumb_breakpoint = arm_nbsd_thumb_be_breakpoint;
!       tdep->arm_breakpoint_size = sizeof (arm_nbsd_arm_be_breakpoint);
!       tdep->thumb_breakpoint_size = sizeof (arm_nbsd_thumb_be_breakpoint);
!       break;
! 
!     default:
!       internal_error (__FILE__, __LINE__,
! 		      "arm_gdbarch_init: bad byte order for float format");
!     }
  
    tdep->jb_pc = ARM_NBSD_JB_PC;
    tdep->jb_elt_size = ARM_NBSD_JB_ELEMENT_SIZE;

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