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]

[rfa?] Add frame_align(); Was: ARM stack alignment on hand calledfunctions


[mailing list changed]

The attached implements the theory. Doesn't show any regressions. Then again, I don't know if it fixes the reported problem either :-/

Kris?

Andrew
2002-11-27  Andrew Cagney  <cagney@redhat.com>

	* arm-tdep.c (arm_frame_align): New function.
	(arm_gdbarch_init): Set frame_align.

Index: arm-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/arm-tdep.c,v
retrieving revision 1.78
diff -u -r1.78 arm-tdep.c
--- arm-tdep.c	24 Nov 2002 18:23:37 -0000	1.78
+++ arm-tdep.c	27 Nov 2002 18:26:44 -0000
@@ -1279,6 +1279,15 @@
   return sp;
 }
 
+/* Ensure that the ARM's stack pointer has the correct alignment for a
+   new frame.  */
+static CORE_ADDR
+arm_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
+{
+  return (addr & -16);
+}
+
+
 /* Push an empty stack frame, to record the current PC, etc.  */
 
 static void
@@ -2857,6 +2866,7 @@
   set_gdbarch_frame_args_skip (gdbarch, 0);
   set_gdbarch_frame_init_saved_regs (gdbarch, arm_frame_init_saved_regs);
   set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame);
+  set_gdbarch_frame_align (gdbarch, arm_frame_align);
   set_gdbarch_pop_frame (gdbarch, arm_pop_frame);
 
   /* Address manipulation.  */

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