[5/6] Remove stop_registers

Message ID 20150508202152.15830.73823.stgit@host1.jankratochvil.net
State New, archived
Headers

Commit Message

Jan Kratochvil May 8, 2015, 8:21 p.m. UTC
  Hi,

now stop_registers are no longer used and it can be removed.

I am not much sure what 'proceed_to_finish' really means now so I make a wild
guess while updating comments about it.


Jan


gdb/ChangeLog
2015-05-08  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdbthread.h (struct thread_control_state): Update comment for
	proceed_to_finish.
	* infcall.c (run_inferior_call): Update comment about
	proceed_to_finish.
	* infcmd.c (get_return_value): Update comment about stop_registers.
	(finish_forward): Update comment about proceed_to_finish.
	* infrun.c (stop_registers): Remove.
	(clear_proceed_status, normal_stop): Remove stop_registers handling.
	* infrun.h (stop_registers): Remove.
---
 gdb/gdbthread.h |    2 +-
 gdb/infcall.c   |    2 +-
 gdb/infcmd.c    |    4 ++--
 gdb/infrun.c    |   27 ---------------------------
 gdb/infrun.h    |    7 -------
 5 files changed, 4 insertions(+), 38 deletions(-)
  

Comments

Pedro Alves May 13, 2015, 1:10 p.m. UTC | #1
I'll comment on patch #4 once I grok it fully, but meanwhile...

> --- a/gdb/infcmd.c
> +++ b/gdb/infcmd.c
> @@ -1519,7 +1519,7 @@ get_return_value (struct value *function, struct type *value_type,
>    struct value *value;
>    struct cleanup *cleanup = make_cleanup (null_cleanup, NULL);
>  
> -  /* If stop_registers were not saved, use the current registers.  */
> +  /* If were not saved, use the current registers.  */

A word after "If" is missing, I guess:

"If registers were not saved, ..."

Otherwise looks fine.

This variable should probably be renamed and its comments
further clarified, but what you have is good already.  We can
do that separately.

Thanks,
Pedro Alves
  
Jan Kratochvil May 13, 2015, 6:55 p.m. UTC | #2
On Wed, 13 May 2015 15:10:15 +0200, Pedro Alves wrote:
> > -  /* If stop_registers were not saved, use the current registers.  */
> > +  /* If were not saved, use the current registers.  */
> 
> A word after "If" is missing, I guess:
> 
> "If registers were not saved, ..."

Yes, done.


> Otherwise looks fine.

Checked in:
	46c03469b37d2ccb6a1eaa3ea4e21c57d07246fc


Jan
  

Patch

diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h
index ff7cec2..0926f5f 100644
--- a/gdb/gdbthread.h
+++ b/gdb/gdbthread.h
@@ -118,7 +118,7 @@  struct thread_control_state
   int trap_expected;
 
   /* Nonzero if the thread is being proceeded for a "finish" command
-     or a similar situation when stop_registers should be saved.  */
+     or a similar situation when return value should be printed.  */
   int proceed_to_finish;
 
   /* Nonzero if the thread is being proceeded for an inferior function
diff --git a/gdb/infcall.c b/gdb/infcall.c
index 9707861..849f500 100644
--- a/gdb/infcall.c
+++ b/gdb/infcall.c
@@ -398,7 +398,7 @@  run_inferior_call (struct thread_info *call_thread, CORE_ADDR real_pc)
 
   disable_watchpoints_before_interactive_call_start ();
 
-  /* We want stop_registers, please...  */
+  /* We want to print return value, please...  */
   call_thread->control.proceed_to_finish = 1;
 
   TRY
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index f8874d3..5df8e0f 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -1519,7 +1519,7 @@  get_return_value (struct value *function, struct type *value_type,
   struct value *value;
   struct cleanup *cleanup = make_cleanup (null_cleanup, NULL);
 
-  /* If stop_registers were not saved, use the current registers.  */
+  /* If were not saved, use the current registers.  */
   if (dtor_data != NULL)
     stop_regs = call_function_by_hand_dtor_get (dtor_data);
   else
@@ -1786,7 +1786,7 @@  finish_forward (struct symbol *function, struct frame_info *frame)
   set_longjmp_breakpoint (tp, frame_id);
   make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
 
-  /* We want stop_registers, please...  */
+  /* We want to print return value, please...  */
   tp->control.proceed_to_finish = 1;
   cargs = xmalloc (sizeof (*cargs));
 
diff --git a/gdb/infrun.c b/gdb/infrun.c
index a4f0b9f..71cf208 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -353,13 +353,6 @@  show_stop_on_solib_events (struct ui_file *file, int from_tty,
 
 int stop_after_trap;
 
-/* Save register contents here when executing a "finish" command or are
-   about to pop a stack dummy frame, if-and-only-if proceed_to_finish is set.
-   Thus this contains the return value from the called function (assuming
-   values are returned in a register).  */
-
-struct regcache *stop_registers;
-
 /* Nonzero after stop if current stack frame should be printed.  */
 
 static int stop_print_frame;
@@ -2505,12 +2498,6 @@  clear_proceed_status (int step)
   clear_step_over_info ();
 
   observer_notify_about_to_proceed ();
-
-  if (stop_registers)
-    {
-      regcache_xfree (stop_registers);
-      stop_registers = NULL;
-    }
 }
 
 /* Returns true if TP is still stopped at a breakpoint that needs
@@ -6697,20 +6684,6 @@  normal_stop (void)
 	print_stop_event (&last);
     }
 
-  /* Save the function value return registers, if we care.
-     We might be about to restore their previous contents.  */
-  if (inferior_thread ()->control.proceed_to_finish
-      && execution_direction != EXEC_REVERSE)
-    {
-      /* 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 == STOP_STACK_DUMMY)
     {
       /* Pop the empty frame that contains the stack dummy.
diff --git a/gdb/infrun.h b/gdb/infrun.h
index 1f09e41..75bb075 100644
--- a/gdb/infrun.h
+++ b/gdb/infrun.h
@@ -73,13 +73,6 @@  enum exec_direction_kind
    compatible with make_cleanup_restore_integer.  */
 extern int execution_direction;
 
-/* Save register contents here when executing a "finish" command or
-   are about to pop a stack dummy frame, if-and-only-if
-   proceed_to_finish is set.  Thus this contains the return value from
-   the called function (assuming values are returned in a
-   register).  */
-extern struct regcache *stop_registers;
-
 extern void start_remote (int from_tty);
 
 /* Clear out all variables saying what to do when inferior is