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] Power/PowerPC targets: Eliminate DEFAULT_LR_SAVE.


I've just committed the patch below.  It eliminates the DEFAULT_LR_SAVE
macro.

	* ppc-tdep.h (struct gdbarch_tdep): Add new member ``lr_frame_offset''.
	* rs6000-tdep.c (rs6000_frame_saved_pc): Use ``lr_frame_offset''
	from tdep struct instead of DEFAULT_LR_SAVE.
	(rs6000_gdbarch_init): Initialize ``lr_frame_offset''.
	* config/powerpc/tm-ppc-eabi.h (DEFAULT_LR_SAVE): Delete.
	* config/rs6000/tm-rs6000.h (DEFAULT_LR_SAVE): Delete.

Index: ppc-tdep.h
===================================================================
RCS file: /cvs/src/src/gdb/ppc-tdep.h,v
retrieving revision 1.8
diff -u -p -r1.8 ppc-tdep.h
--- ppc-tdep.h	11 Apr 2002 19:08:56 -0000	1.8
+++ ppc-tdep.h	12 Apr 2002 19:36:03 -0000
@@ -67,6 +67,8 @@ struct gdbarch_tdep
     int ppc_mq_regnum;		/* Multiply/Divide extension register */
     int ppc_vr0_regnum;		/* First AltiVec register */
     int ppc_vrsave_regnum;	/* Last AltiVec register */
+    int lr_frame_offset;	/* Offset to ABI specific location where
+                                   link register is saved.  */
 };
 
 #endif
Index: rs6000-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/rs6000-tdep.c,v
retrieving revision 1.53
diff -u -p -r1.53 rs6000-tdep.c
--- rs6000-tdep.c	12 Apr 2002 17:12:24 -0000	1.53
+++ rs6000-tdep.c	12 Apr 2002 19:36:08 -0000
@@ -1319,7 +1319,8 @@ rs6000_frame_saved_pc (struct frame_info
 {
   CORE_ADDR func_start;
   struct rs6000_framedata fdata;
-  int wordsize = TDEP->wordsize;
+  struct gdbarch_tdep *tdep = TDEP;
+  int wordsize = tdep->wordsize;
 
   if (fi->signal_handler_caller)
     return read_memory_addr (fi->frame + SIG_FRAME_PC_OFFSET, wordsize);
@@ -1342,7 +1343,7 @@ rs6000_frame_saved_pc (struct frame_info
 	return read_memory_addr (fi->next->frame + SIG_FRAME_LR_OFFSET,
 				 wordsize);
       else
-	return read_memory_addr (FRAME_CHAIN (fi) + DEFAULT_LR_SAVE,
+	return read_memory_addr (FRAME_CHAIN (fi) + tdep->lr_frame_offset,
 				 wordsize);
     }
 
@@ -2585,7 +2586,15 @@ rs6000_gdbarch_init (struct gdbarch_info
 	break;
       }   
 
-  /* Calculate byte offsets in raw register array. */
+  /* Set lr_frame_offset.  */
+  if (wordsize == 8)
+    tdep->lr_frame_offset = 16;
+  else if (sysv_abi)
+    tdep->lr_frame_offset = 4;
+  else
+    tdep->lr_frame_offset = 8;
+
+  /* Calculate byte offsets in raw register array.  */
   tdep->regoff = xmalloc (v->nregs * sizeof (int));
   for (i = off = 0; i < v->nregs; i++)
     {
Index: config/powerpc/tm-ppc-eabi.h
===================================================================
RCS file: /cvs/src/src/gdb/config/powerpc/tm-ppc-eabi.h,v
retrieving revision 1.9
diff -u -p -r1.9 tm-ppc-eabi.h
--- config/powerpc/tm-ppc-eabi.h	9 Apr 2002 00:53:28 -0000	1.9
+++ config/powerpc/tm-ppc-eabi.h	12 Apr 2002 19:36:09 -0000
@@ -28,9 +28,6 @@
 #undef SOFTWARE_SINGLE_STEP_P
 #define SOFTWARE_SINGLE_STEP_P() 0
 
-#undef	DEFAULT_LR_SAVE
-#define	DEFAULT_LR_SAVE 4	/* eabi saves LR at 4 off of SP */
-
 #undef PROCESS_LINENUMBER_HOOK
 
 #undef TEXT_SEGMENT_BASE
Index: config/rs6000/tm-rs6000.h
===================================================================
RCS file: /cvs/src/src/gdb/config/rs6000/tm-rs6000.h,v
retrieving revision 1.15
diff -u -p -r1.15 tm-rs6000.h
--- config/rs6000/tm-rs6000.h	16 Dec 2001 00:59:58 -0000	1.15
+++ config/rs6000/tm-rs6000.h	12 Apr 2002 19:36:09 -0000
@@ -93,9 +93,6 @@ 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
-
 /* Flag for machine-specific stuff in shared files.  FIXME */
 #define IBM6000_TARGET
 


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