This is the mail archive of the gdb@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]

Re: rs6000-tdep


On 14-Jul-2000, Steven Johnson wrote:

>Each problem is quite
>significant and i can't see how it could have ever compiled anywhere
>with these problems.

Yup, my AIX multi-arch changes a few weeks ago broke powerpc-eabi.  Could
you try the appended patch?

>On another note, there used to be an extensive list of register names
>defined for varients of the PowerPC architecture, for example all of the
>SPR registers specific to the MPC860, etc.

They're still in rs6000-tdep.c.  I tried to make them available via the
generic multi-arch "set architecture" command, but I haven't been able to
test them on various PowerPC variants, so it's possible that there's some
breakage.

Kevin, is it okay to commit this powerpc-eabi patch?

Nick Duffek
nsd@redhat.com

[patch follows]

Index: ppcbug-rom.c
===================================================================
RCS file: /cvs/src/src/gdb/ppcbug-rom.c,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 ppcbug-rom.c
--- ppcbug-rom.c	1999/09/08 23:59:24	1.1.1.3
+++ ppcbug-rom.c	2000/07/07 17:08:10
@@ -104,7 +104,7 @@
  * registers either. So, typing "info reg sp" becomes an "A7".
  */
 
-static char *ppcbug_regnames[NUM_REGS] =
+static char *ppcbug_regnames[] =
 {
   "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
   "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
Index: gdb/rs6000-tdep.c
===================================================================
diff -up gdb/rs6000-tdep.c gdb/rs6000-tdep.c
--- gdb/rs6000-tdep.c	Tue Jun 20 21:19:07 2000
+++ gdb/rs6000-tdep.c	Tue Jun 20 21:17:27 2000
@@ -56,9 +56,6 @@
 #define SIG_FRAME_LR_OFFSET 108
 #define SIG_FRAME_FP_OFFSET 284
 
-/* Default offset from SP where the LR is stored */
-#define	DEFAULT_LR_SAVE 8
-
 /* To be used by skip_prologue. */
 
 struct rs6000_framedata
@@ -2048,7 +2045,7 @@ rs6000_gdbarch_init (struct gdbarch_info
   set_gdbarch_call_dummy_breakpoint_offset_p (gdbarch, 1);
   set_gdbarch_call_dummy_breakpoint_offset (gdbarch, 0);
   set_gdbarch_call_dummy_start_offset (gdbarch, 0);
-  set_gdbarch_pc_in_call_dummy (gdbarch, rs6000_pc_in_call_dummy);
+  set_gdbarch_pc_in_call_dummy (gdbarch, generic_pc_in_call_dummy);
   set_gdbarch_call_dummy_p (gdbarch, 1);
   set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 0);
   set_gdbarch_get_saved_register (gdbarch, generic_get_saved_register);
Index: gdb/config/rs6000/tm-rs6000.h
===================================================================
diff -up gdb/config/rs6000/tm-rs6000.h gdb/config/rs6000/tm-rs6000.h
--- gdb/config/rs6000/tm-rs6000.h	Tue Jun 20 21:19:13 2000
+++ gdb/config/rs6000/tm-rs6000.h	Tue Jun 20 21:18:24 2000
@@ -94,6 +94,9 @@ extern void aix_process_linenos (void);
 	      prev->next ? FRAME_SAVED_PC (prev->next) : read_pc ());
 #define INIT_FRAME_PC(fromleaf, prev)	/* nothing */
 
+/* Default offset from SP where the LR is stored */
+#define	DEFAULT_LR_SAVE 8
+
 /* Usually a function pointer's representation is simply the address
    of the function. On the RS/6000 however, a function pointer is
    represented by a pointer to a TOC entry. This TOC entry contains
Index: gdb/config/powerpc/tm-ppc-eabi.h
===================================================================
diff -up gdb/config/powerpc/tm-ppc-eabi.h gdb/config/powerpc/tm-ppc-eabi.h
--- gdb/config/powerpc/tm-ppc-eabi.h	Tue Jun 20 21:19:23 2000
+++ gdb/config/powerpc/tm-ppc-eabi.h	Tue Jun 20 21:17:58 2000
@@ -30,8 +30,6 @@
 #undef	DEFAULT_LR_SAVE
 #define	DEFAULT_LR_SAVE 4	/* eabi saves LR at 4 off of SP */
 
-#define GDB_TARGET_POWERPC
-
 #undef PC_LOAD_SEGMENT
 #undef PROCESS_LINENUMBER_HOOK
 
@@ -42,38 +40,6 @@
 #define ELF_OBJECT_FORMAT 1
 
 #define TARGET_BYTE_ORDER_SELECTABLE_P 1
-
-/* return true if a given `pc' value is in `call dummy' function. */
-/* FIXME: This just checks for the end of the stack, which is broken
-   for things like stepping through gcc nested function stubs.  */
-#undef PC_IN_CALL_DUMMY
-
-/* generic dummy frame stuff */
-
-
-
-/* target-specific dummy_frame stuff */
-
-extern struct frame_info *rs6000_pop_frame (struct frame_info *frame);
-
-extern CORE_ADDR ppc_push_return_address (CORE_ADDR, CORE_ADDR);
-
-#undef PUSH_DUMMY_FRAME
-#define PUSH_DUMMY_FRAME             generic_push_dummy_frame ()
-
-#define PUSH_RETURN_ADDRESS(PC, SP)      ppc_push_return_address (PC, SP)
-
-/* override the standard get_saved_register function with 
-   one that takes account of generic CALL_DUMMY frames */
-#define GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval) \
-      generic_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
-
-#define USE_GENERIC_DUMMY_FRAMES 1
-#define CALL_DUMMY_BREAKPOINT_OFFSET (0)
-#define CALL_DUMMY_LOCATION          AT_ENTRY_POINT
-#define CALL_DUMMY_ADDRESS()         entry_point_address ()
-#undef CALL_DUMMY_START_OFFSET
-#define CALL_DUMMY_START_OFFSET      0
 
 /* The value of symbols of type N_SO and N_FUN maybe null when 
    it shouldn't be. */

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