* infcall.c (call_function_by_hand): Clean up use of local dummy_addr.
authorDoug Evans <dje@google.com>
Thu, 4 Dec 2008 21:41:00 +0000 (21:41 +0000)
committerDoug Evans <dje@google.com>
Thu, 4 Dec 2008 21:41:00 +0000 (21:41 +0000)
gdb/ChangeLog
gdb/infcall.c

index 8d06e3ff4503acd4688ee8cb0dc5886147a7379b..3bff9201caf3396cb8e1fc15a1463d9e0ece0687 100644 (file)
@@ -1,3 +1,7 @@
+2008-12-04  Doug Evans  <dje@google.com>
+
+       * infcall.c (call_function_by_hand): Clean up use of local dummy_addr.
+
 2008-12-02  Doug Evans  <dje@google.com>
 
        * infrun.c (handle_inferior_event): Remove redundant resetting of
index b2ca4855ccbd61bca589cefb4330fc057874edf7..d50bcca978ac96e46f0c4125dba2b659056e61eb 100644 (file)
@@ -310,7 +310,6 @@ struct value *
 call_function_by_hand (struct value *function, int nargs, struct value **args)
 {
   CORE_ADDR sp;
-  CORE_ADDR dummy_addr;
   struct type *values_type, *target_values_type;
   unsigned char struct_return = 0, lang_struct_return = 0;
   CORE_ADDR struct_addr = 0;
@@ -471,35 +470,26 @@ call_function_by_hand (struct value *function, int nargs, struct value **args)
   switch (gdbarch_call_dummy_location (gdbarch))
     {
     case ON_STACK:
-      /* "dummy_addr" is here just to keep old targets happy.  New
-        targets return that same information via "sp" and "bp_addr".  */
-      if (gdbarch_inner_than (gdbarch, 1, 2))
-       {
-         sp = push_dummy_code (gdbarch, sp, funaddr,
+      sp = push_dummy_code (gdbarch, sp, funaddr,
                                args, nargs, target_values_type,
                                &real_pc, &bp_addr, get_current_regcache ());
-         dummy_addr = sp;
-       }
-      else
-       {
-         dummy_addr = sp;
-         sp = push_dummy_code (gdbarch, sp, funaddr,
-                               args, nargs, target_values_type,
-                               &real_pc, &bp_addr, get_current_regcache ());
-       }
       break;
     case AT_ENTRY_POINT:
-      real_pc = funaddr;
-      dummy_addr = entry_point_address ();
-      /* Make certain that the address points at real code, and not a
-         function descriptor.  */
-      dummy_addr = gdbarch_convert_from_func_ptr_addr (gdbarch,
-                                                      dummy_addr,
-                                                      &current_target);
-      /* A call dummy always consists of just a single breakpoint, so
-         it's address is the same as the address of the dummy.  */
-      bp_addr = dummy_addr;
-      break;
+      {
+       CORE_ADDR dummy_addr;
+
+       real_pc = funaddr;
+       dummy_addr = entry_point_address ();
+       /* Make certain that the address points at real code, and not a
+          function descriptor.  */
+       dummy_addr = gdbarch_convert_from_func_ptr_addr (gdbarch,
+                                                        dummy_addr,
+                                                        &current_target);
+       /* A call dummy always consists of just a single breakpoint, so
+          its address is the same as the address of the dummy.  */
+       bp_addr = dummy_addr;
+       break;
+      }
     case AT_SYMBOL:
       /* Some executables define a symbol __CALL_DUMMY_ADDRESS whose
         address is the location where the breakpoint should be
@@ -507,6 +497,7 @@ call_function_by_hand (struct value *function, int nargs, struct value **args)
         this can be deleted - ON_STACK is a better option.  */
       {
        struct minimal_symbol *sym;
+       CORE_ADDR dummy_addr;
 
        sym = lookup_minimal_symbol ("__CALL_DUMMY_ADDRESS", NULL, NULL);
        real_pc = funaddr;