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]

[commit] When push_dummy_call, ignore FIX_CALL_DUMMY


Another tweak to make upgrading easier. When push_dummy_call is available ignore all the old FIX_CALL_DUMMY code - calling it makes no sense.

committed,
Andrew
2004-02-23  Andrew Cagney  <cagney@redhat.com>

	* infcall.c (legacy_push_dummy_code): Don't call deprecated
	FIX_CALL_DUMMY when push_dummy_call is available.
	(call_function_by_hand, push_dummy_code): Ditto.

Index: infcall.c
===================================================================
RCS file: /cvs/src/src/gdb/infcall.c,v
retrieving revision 1.38
diff -u -r1.38 infcall.c
--- infcall.c	14 Feb 2004 17:01:00 -0000	1.38
+++ infcall.c	23 Feb 2004 16:26:49 -0000
@@ -275,18 +275,21 @@
      DUMMY_ADDR is pretty messed up.  It comes from constant tinkering
      with the values.  Instead a DEPRECATED_FIX_CALL_DUMMY replacement
      (PUSH_DUMMY_BREAKPOINT?) should just do everything.  */
+  if (!gdbarch_push_dummy_call_p (current_gdbarch))
+    {
 #ifdef GDB_TARGET_IS_HPPA
-  (*real_pc) = DEPRECATED_FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs,
-					  args, value_type, using_gcc);
+      (*real_pc) = DEPRECATED_FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs,
+					      args, value_type, using_gcc);
 #else
-  if (DEPRECATED_FIX_CALL_DUMMY_P ())
-    {
-      /* gdb_assert (CALL_DUMMY_LOCATION == ON_STACK) true?  */
-      DEPRECATED_FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
-				 value_type, using_gcc);
-    }
-  (*real_pc) = start_sp;
+      if (DEPRECATED_FIX_CALL_DUMMY_P ())
+	{
+	  /* gdb_assert (CALL_DUMMY_LOCATION == ON_STACK) true?  */
+	  DEPRECATED_FIX_CALL_DUMMY (dummy1, start_sp, funaddr, nargs, args,
+				     value_type, using_gcc);
+	}
+      (*real_pc) = start_sp;
 #endif
+    }
   /* Yes, the offset is applied to the real_pc and not the dummy addr.
      Ulgh!  Blame the HP/UX target.  */
   (*bp_addr) = (*real_pc) + DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET;
@@ -348,7 +351,8 @@
   if (gdbarch_push_dummy_code_p (gdbarch))
     return gdbarch_push_dummy_code (gdbarch, sp, funaddr, using_gcc,
 				    args, nargs, value_type, real_pc, bp_addr);
-  else if (DEPRECATED_FIX_CALL_DUMMY_P ())
+  else if (DEPRECATED_FIX_CALL_DUMMY_P ()
+	   && !gdbarch_push_dummy_call_p (gdbarch))
     return legacy_push_dummy_code (gdbarch, sp, funaddr, using_gcc,
 				   args, nargs, value_type, real_pc, bp_addr);
   else    
@@ -546,7 +550,8 @@
 	}
       break;
     case AT_ENTRY_POINT:
-      if (DEPRECATED_FIX_CALL_DUMMY_P ())
+      if (DEPRECATED_FIX_CALL_DUMMY_P ()
+	  && !gdbarch_push_dummy_call_p (current_gdbarch))
 	{
 	  /* Sigh.  Some targets use DEPRECATED_FIX_CALL_DUMMY to
              shove extra stuff onto the stack or into registers.  That

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