* infrun.c (clear_proceed_status): Clean up stop_registers.
authorUlrich Weigand <uweigand@de.ibm.com>
Fri, 22 Jun 2007 12:38:04 +0000 (12:38 +0000)
committerUlrich Weigand <uweigand@de.ibm.com>
Fri, 22 Jun 2007 12:38:04 +0000 (12:38 +0000)
(normal_stop): Allocate regcache for stop_registers.
(struct inferior_status): Remove stop_registers member.
(save_inferior_status): Do not save stop_registers.
(restore_inferior_status): Do not restore stop_registers.
(discard_inferior_status): Do not discard stop_registers.
(build_infrun): Remove.
(_initialize_infrun): Do not swap stop_registers.

gdb/ChangeLog
gdb/infrun.c

index 8b73173..22ca54e 100644 (file)
@@ -1,5 +1,16 @@
 2007-06-22  Ulrich Weigand  <uweigand@de.ibm.com>
 
+       * infrun.c (clear_proceed_status): Clean up stop_registers.
+       (normal_stop): Allocate regcache for stop_registers.
+       (struct inferior_status): Remove stop_registers member.
+       (save_inferior_status): Do not save stop_registers.
+       (restore_inferior_status): Do not restore stop_registers.
+       (discard_inferior_status): Do not discard stop_registers.
+       (build_infrun): Remove.
+       (_initialize_infrun): Do not swap stop_registers.
+
+2007-06-22  Ulrich Weigand  <uweigand@de.ibm.com>
+
        * remote.c (remote_address_masked): If remote_address_size is zero,
        default to target address size.
        (build_remote_gdbarch_data): Remove.
index bad50a1..27d78b1 100644 (file)
@@ -632,6 +632,12 @@ clear_proceed_status (void)
   proceed_to_finish = 0;
   breakpoint_proceeded = 1;    /* We're about to proceed... */
 
+  if (stop_registers)
+    {
+      regcache_xfree (stop_registers);
+      stop_registers = NULL;
+    }
+
   /* Discard any remaining commands or status from previous stop.  */
   bpstat_clear (&stop_bpstat);
 }
@@ -3218,9 +3224,15 @@ Further execution is probably impossible.\n"));
   /* Save the function value return registers, if we care.
      We might be about to restore their previous contents.  */
   if (proceed_to_finish)
-    /* NB: The copy goes through to the target picking up the value of
-       all the registers.  */
-    regcache_cpy (stop_registers, get_current_regcache ());
+    {
+      /* This should not be necessary.  */
+      if (stop_registers)
+       regcache_xfree (stop_registers);
+
+      /* NB: The copy goes through to the target picking up the value of
+        all the registers.  */
+      stop_registers = regcache_dup (get_current_regcache ());
+    }
 
   if (stop_stack_dummy)
     {
@@ -3619,7 +3631,6 @@ struct inferior_status
   CORE_ADDR step_resume_break_address;
   int stop_after_trap;
   int stop_soon;
-  struct regcache *stop_registers;
 
   /* These are here because if call_function_by_hand has written some
      registers and then decides to call error(), we better not have changed
@@ -3675,8 +3686,6 @@ save_inferior_status (int restore_stack_info)
   inf_status->restore_stack_info = restore_stack_info;
   inf_status->proceed_to_finish = proceed_to_finish;
 
-  inf_status->stop_registers = regcache_dup_no_passthrough (stop_registers);
-
   inf_status->registers = regcache_dup (get_current_regcache ());
 
   inf_status->selected_frame_id = get_frame_id (get_selected_frame (NULL));
@@ -3724,10 +3733,6 @@ restore_inferior_status (struct inferior_status *inf_status)
   breakpoint_proceeded = inf_status->breakpoint_proceeded;
   proceed_to_finish = inf_status->proceed_to_finish;
 
-  /* FIXME: Is the restore of stop_registers always needed. */
-  regcache_xfree (stop_registers);
-  stop_registers = inf_status->stop_registers;
-
   /* The inferior can be gone if the user types "print exit(0)"
      (and perhaps other times).  */
   if (target_has_execution)
@@ -3778,7 +3783,6 @@ discard_inferior_status (struct inferior_status *inf_status)
   /* See save_inferior_status for info on stop_bpstat. */
   bpstat_clear (&inf_status->stop_bpstat);
   regcache_xfree (inf_status->registers);
-  regcache_xfree (inf_status->stop_registers);
   xfree (inf_status);
 }
 
@@ -3921,12 +3925,6 @@ save_inferior_ptid (void)
 }
 \f
 
-static void
-build_infrun (void)
-{
-  stop_registers = regcache_xmalloc (current_gdbarch);
-}
-
 void
 _initialize_infrun (void)
 {
@@ -3934,9 +3932,6 @@ _initialize_infrun (void)
   int numsigs;
   struct cmd_list_element *c;
 
-  DEPRECATED_REGISTER_GDBARCH_SWAP (stop_registers);
-  deprecated_register_gdbarch_swap (NULL, 0, build_infrun);
-
   add_info ("signals", signals_info, _("\
 What debugger does when program gets various signals.\n\
 Specify a signal as argument to print info on that signal only."));