Refactor infrun a bit.
authorPedro Alves <palves@redhat.com>
Wed, 9 Jul 2008 22:33:16 +0000 (22:33 +0000)
committerPedro Alves <palves@redhat.com>
Wed, 9 Jul 2008 22:33:16 +0000 (22:33 +0000)
* infrun.c (currently_stepping): Take a struct
thread_stepping_state instead of an execution_control_state.
(struct thread_stepping_state): New, split from
execution_control_state.
(gtss, tss): New globals.
(proceed): Clear the stepping state, set previous_inferior_ptid
and clear infwait state.
(init_wait_for_inferior): Clear the stepping state,
previous_inferior_ptid and infwait state.
(waiton_ptid, infwait_state): New, split from
execution_control_state.
(struct execution_control_state): Members that persist through
events moved out to either struct thred_stepping_state or made
global.  Deleted unneeded wp, saved_inferior_ptid, tmpstatus.
(wait_for_inferior, fetch_inferior_event): Use local
execution_control_state.  Update to execution_control_state split.
(init_execution_control_state): Adjust.
(init_thread_stepping_state): New, extracted from
init_execution_control_state.
(context_switch): Take a ptid instead of an
execution_control_state.
(context_switch_to): Adjust.
(adjust_pc_after_break): Adjust.
(init_infwait_state): New.
(handle_inferior_event): Adjust.

gdb/ChangeLog
gdb/infrun.c

index e4ead4c63bad2d2f0ecfa65c4f3525fed9b56a39..19cb5b9040449995fac010380ec99b7849169c01 100644 (file)
@@ -1,3 +1,33 @@
+2008-07-09  Pedro Alves  <pedro@codesourcery.com>
+
+       Refactor infrun a bit.
+
+       * infrun.c (currently_stepping): Take a struct
+       thread_stepping_state instead of an execution_control_state.
+       (struct thread_stepping_state): New, split from
+       execution_control_state.
+       (gtss, tss): New globals.
+       (proceed): Clear the stepping state, set previous_inferior_ptid
+       and clear infwait state.
+       (init_wait_for_inferior): Clear the stepping state,
+       previous_inferior_ptid and infwait state.
+       (waiton_ptid, infwait_state): New, split from
+       execution_control_state.
+       (struct execution_control_state): Members that persist through
+       events moved out to either struct thred_stepping_state or made
+       global.  Deleted unneeded wp, saved_inferior_ptid, tmpstatus.
+       (wait_for_inferior, fetch_inferior_event): Use local
+       execution_control_state.  Update to execution_control_state split.
+       (init_execution_control_state): Adjust.
+       (init_thread_stepping_state): New, extracted from
+       init_execution_control_state.
+       (context_switch): Take a ptid instead of an
+       execution_control_state.
+       (context_switch_to): Adjust.
+       (adjust_pc_after_break): Adjust.
+       (init_infwait_state): New.
+       (handle_inferior_event): Adjust.
+
 2008-07-09  Pedro Alves  <pedro@codesourcery.com>
            Vladimir Prus  <vladimir@codesourcery.com>
 
index 457c0a0da0c52f42e31ea208891f6348244bdbe0..09f1f6b1b107d86aeec06f4f4074d818b0997640 100644 (file)
@@ -72,9 +72,9 @@ static int follow_fork (void);
 static void set_schedlock_func (char *args, int from_tty,
                                struct cmd_list_element *c);
 
-struct execution_control_state;
+struct thread_stepping_state;
 
-static int currently_stepping (struct execution_control_state *ecs);
+static int currently_stepping (struct thread_stepping_state *tss);
 
 static void xdb_handle_command (char *args, int from_tty);
 
@@ -288,7 +288,28 @@ static struct breakpoint *step_resume_breakpoint = NULL;
 static ptid_t target_last_wait_ptid;
 static struct target_waitstatus target_last_waitstatus;
 
-struct execution_control_state ecss;
+/* Context-switchable data.  */
+struct thread_stepping_state
+{
+  /* Should we step over breakpoint next time keep_going
+     is called?  */
+  int stepping_over_breakpoint;
+  struct symtab_and_line sal;
+  int current_line;
+  struct symtab *current_symtab;
+  int step_after_step_resume_breakpoint;
+  int stepping_through_solib_after_catch;
+  bpstat stepping_through_solib_catchpoints;
+};
+
+struct thread_stepping_state gtss;
+struct thread_stepping_state *tss = &gtss;
+
+static void context_switch (ptid_t ptid);
+
+void init_thread_stepping_state (struct thread_stepping_state *tss);
+
+void init_infwait_state (void);
 
 /* This is used to remember when a fork, vfork or exec event
    was caught by a catchpoint, and thus the event is to be
@@ -1338,6 +1359,10 @@ init_wait_for_inferior (void)
 
   target_last_wait_ptid = minus_one_ptid;
 
+  init_thread_stepping_state (tss);
+  previous_inferior_ptid = null_ptid;
+  init_infwait_state ();
+
   displaced_step_clear ();
 }
 
@@ -1368,33 +1393,23 @@ enum inferior_stop_reason
   SIGNAL_RECEIVED
 };
 
-/* This structure contains what used to be local variables in
-   wait_for_inferior.  Probably many of them can return to being
-   locals in handle_inferior_event.  */
+/* The PTID we'll do a target_wait on.*/
+ptid_t waiton_ptid;
+
+/* Current inferior wait state.  */
+enum infwait_states infwait_state;
 
+/* Data to be passed around while handling an event.  This data is
+   discarded between events.  */
 struct execution_control_state
 {
+  ptid_t ptid;
   struct target_waitstatus ws;
-  struct target_waitstatus *wp;
-  /* Should we step over breakpoint next time keep_going 
-     is called?  */
-  int stepping_over_breakpoint;
   int random_signal;
   CORE_ADDR stop_func_start;
   CORE_ADDR stop_func_end;
   char *stop_func_name;
-  struct symtab_and_line sal;
-  int current_line;
-  struct symtab *current_symtab;
-  ptid_t ptid;
-  ptid_t saved_inferior_ptid;
-  int step_after_step_resume_breakpoint;
-  int stepping_through_solib_after_catch;
-  bpstat stepping_through_solib_catchpoints;
   int new_thread_event;
-  struct target_waitstatus tmpstatus;
-  enum infwait_states infwait_state;
-  ptid_t waiton_ptid;
   int wait_some_more;
 };
 
@@ -1431,6 +1446,7 @@ void
 wait_for_inferior (int treat_exec_as_sigtrap)
 {
   struct cleanup *old_cleanups;
+  struct execution_control_state ecss;
   struct execution_control_state *ecs;
 
   if (debug_infrun)
@@ -1442,9 +1458,13 @@ wait_for_inferior (int treat_exec_as_sigtrap)
                               &step_resume_breakpoint);
 
   ecs = &ecss;
+  memset (ecs, 0, sizeof (*ecs));
+
+    /* Fill in with reasonable starting values.  */
+  init_thread_stepping_state (tss);
 
-  /* Fill in with reasonable starting values.  */
-  init_execution_control_state (ecs);
+    /* Reset to normal state.  */
+  init_infwait_state ();
 
   /* We'll update this if & when we switch to a new thread. */
   previous_inferior_ptid = inferior_ptid;
@@ -1462,9 +1482,9 @@ wait_for_inferior (int treat_exec_as_sigtrap)
   while (1)
     {
       if (deprecated_target_wait_hook)
-       ecs->ptid = deprecated_target_wait_hook (ecs->waiton_ptid, ecs->wp);
+       ecs->ptid = deprecated_target_wait_hook (waiton_ptid, &ecs->ws);
       else
-       ecs->ptid = target_wait (ecs->waiton_ptid, ecs->wp);
+       ecs->ptid = target_wait (waiton_ptid, &ecs->ws);
 
       if (treat_exec_as_sigtrap && ecs->ws.kind == TARGET_WAITKIND_EXECD)
         {
@@ -1494,12 +1514,17 @@ wait_for_inferior (int treat_exec_as_sigtrap)
 void
 fetch_inferior_event (void *client_data)
 {
+  struct execution_control_state ecss;
   struct execution_control_state *ecs = &ecss;
 
+  memset (ecs, 0, sizeof (*ecs));
+
   if (!ecs->wait_some_more)
     {
       /* Fill in with reasonable starting values.  */
-      init_execution_control_state (ecs);
+      init_thread_stepping_state (tcs);
+
+      init_infwait_state ();
 
       /* We'll update this if & when we switch to a new thread. */
       previous_inferior_ptid = inferior_ptid;
@@ -1517,9 +1542,9 @@ fetch_inferior_event (void *client_data)
 
   if (deprecated_target_wait_hook)
     ecs->ptid =
-      deprecated_target_wait_hook (ecs->waiton_ptid, ecs->wp);
+      deprecated_target_wait_hook (waiton_ptid, &ecs->ws);
   else
-    ecs->ptid = target_wait (ecs->waiton_ptid, ecs->wp);
+    ecs->ptid = target_wait (waiton_ptid, &ecs->ws);
 
   /* Now figure out what to do with the result of the result.  */
   handle_inferior_event (ecs);
@@ -1542,17 +1567,21 @@ fetch_inferior_event (void *client_data)
 void
 init_execution_control_state (struct execution_control_state *ecs)
 {
-  ecs->stepping_over_breakpoint = 0;
   ecs->random_signal = 0;
-  ecs->step_after_step_resume_breakpoint = 0;
-  ecs->stepping_through_solib_after_catch = 0;
-  ecs->stepping_through_solib_catchpoints = NULL;
-  ecs->sal = find_pc_line (prev_pc, 0);
-  ecs->current_line = ecs->sal.line;
-  ecs->current_symtab = ecs->sal.symtab;
-  ecs->infwait_state = infwait_normal_state;
-  ecs->waiton_ptid = pid_to_ptid (-1);
-  ecs->wp = &(ecs->ws);
+}
+
+/* Clear context switchable stepping state.  */
+
+void
+init_thread_stepping_state (struct thread_stepping_state *tss)
+{
+  tss->stepping_over_breakpoint = 0;
+  tss->step_after_step_resume_breakpoint = 0;
+  tss->stepping_through_solib_after_catch = 0;
+  tss->stepping_through_solib_catchpoints = NULL;
+  tss->sal = find_pc_line (prev_pc, 0);
+  tss->current_line = tss->sal.line;
+  tss->current_symtab = tss->sal.symtab;
 }
 
 /* Return the cached copy of the last pid/waitstatus returned by
@@ -1576,7 +1605,7 @@ nullify_last_target_wait_ptid (void)
 /* Switch thread contexts, maintaining "infrun state". */
 
 static void
-context_switch (struct execution_control_state *ecs)
+context_switch (ptid_t ptid)
 {
   /* Caution: it may happen that the new thread (or the old one!)
      is not in the thread list.  In this case we must not attempt
@@ -1589,20 +1618,20 @@ context_switch (struct execution_control_state *ecs)
       fprintf_unfiltered (gdb_stdlog, "infrun: Switching context from %s ",
                          target_pid_to_str (inferior_ptid));
       fprintf_unfiltered (gdb_stdlog, "to %s\n",
-                         target_pid_to_str (ecs->ptid));
+                         target_pid_to_str (ptid));
     }
 
-  if (in_thread_list (inferior_ptid) && in_thread_list (ecs->ptid))
+  if (in_thread_list (inferior_ptid) && in_thread_list (ptid))
     {                          /* Perform infrun state context switch: */
       /* Save infrun state for the old thread.  */
       save_infrun_state (inferior_ptid, prev_pc,
                         stepping_over_breakpoint, step_resume_breakpoint,
                         step_range_start,
                         step_range_end, &step_frame_id,
-                        ecs->stepping_over_breakpoint,
-                        ecs->stepping_through_solib_after_catch,
-                        ecs->stepping_through_solib_catchpoints,
-                        ecs->current_line, ecs->current_symtab,
+                        tss->stepping_over_breakpoint,
+                        tss->stepping_through_solib_after_catch,
+                        tss->stepping_through_solib_catchpoints,
+                        tss->current_line, tss->current_symtab,
                         cmd_continuation, intermediate_continuation,
                         proceed_to_finish,
                         step_over_calls,
@@ -1612,14 +1641,14 @@ context_switch (struct execution_control_state *ecs)
                         stop_bpstat);
 
       /* Load infrun state for the new thread.  */
-      load_infrun_state (ecs->ptid, &prev_pc,
+      load_infrun_state (ptid, &prev_pc,
                         &stepping_over_breakpoint, &step_resume_breakpoint,
                         &step_range_start,
                         &step_range_end, &step_frame_id,
-                        &ecs->stepping_over_breakpoint,
-                        &ecs->stepping_through_solib_after_catch,
-                        &ecs->stepping_through_solib_catchpoints,
-                        &ecs->current_line, &ecs->current_symtab,
+                        &tss->stepping_over_breakpoint,
+                        &tss->stepping_through_solib_after_catch,
+                        &tss->stepping_through_solib_catchpoints,
+                        &tss->current_line, &tss->current_symtab,
                         &cmd_continuation, &intermediate_continuation,
                         &proceed_to_finish,
                         &step_over_calls,
@@ -1629,7 +1658,7 @@ context_switch (struct execution_control_state *ecs)
                         &stop_bpstat);
     }
 
-  switch_to_thread (ecs->ptid);
+  switch_to_thread (ptid);
 }
 
 /* Context switch to thread PTID.  */
@@ -1641,8 +1670,7 @@ context_switch_to (ptid_t ptid)
   /* Context switch to the new thread. */
   if (!ptid_equal (ptid, inferior_ptid))
     {
-      ecss.ptid = ptid;
-      context_switch (&ecss);
+      context_switch (ptid);
     }
   return current_ptid;
 }
@@ -1715,12 +1743,19 @@ adjust_pc_after_break (struct execution_control_state *ecs)
 
       if (singlestep_breakpoints_inserted_p
          || !ptid_equal (ecs->ptid, inferior_ptid)
-         || !currently_stepping (ecs)
+         || !currently_stepping (tss)
          || prev_pc == breakpoint_pc)
        regcache_write_pc (regcache, breakpoint_pc);
     }
 }
 
+void
+init_infwait_state (void)
+{
+  waiton_ptid = pid_to_ptid (-1);
+  infwait_state = infwait_normal_state;
+}
+
 /* Given an execution control state that has been freshly filled in
    by an event from the inferior, figure out what it means and take
    appropriate action.  */
@@ -1736,20 +1771,20 @@ handle_inferior_event (struct execution_control_state *ecs)
 
   /* Cache the last pid/waitstatus. */
   target_last_wait_ptid = ecs->ptid;
-  target_last_waitstatus = *ecs->wp;
+  target_last_waitstatus = ecs->ws;
 
   /* Always clear state belonging to the previous time we stopped.  */
   stop_stack_dummy = 0;
 
   adjust_pc_after_break (ecs);
 
-  switch (ecs->infwait_state)
+  switch (infwait_state)
     {
     case infwait_thread_hop_state:
       if (debug_infrun)
         fprintf_unfiltered (gdb_stdlog, "infrun: infwait_thread_hop_state\n");
       /* Cancel the waiton_ptid. */
-      ecs->waiton_ptid = pid_to_ptid (-1);
+      waiton_ptid = pid_to_ptid (-1);
       break;
 
     case infwait_normal_state:
@@ -1780,7 +1815,7 @@ handle_inferior_event (struct execution_control_state *ecs)
     default:
       internal_error (__FILE__, __LINE__, _("bad switch"));
     }
-  ecs->infwait_state = infwait_normal_state;
+  infwait_state = infwait_normal_state;
 
   reinit_frame_cache ();
 
@@ -1929,7 +1964,7 @@ handle_inferior_event (struct execution_control_state *ecs)
 
       if (!ptid_equal (ecs->ptid, inferior_ptid))
        {
-         context_switch (ecs);
+         context_switch (ecs->ptid);
          reinit_frame_cache ();
        }
 
@@ -1963,17 +1998,23 @@ handle_inferior_event (struct execution_control_state *ecs)
       xfree (pending_follow.execd_pathname);
 
       stop_pc = regcache_read_pc (get_thread_regcache (ecs->ptid));
-      ecs->saved_inferior_ptid = inferior_ptid;
-      inferior_ptid = ecs->ptid;
 
-      stop_bpstat = bpstat_stop_status (stop_pc, ecs->ptid);
+      {
+       /* The breakpoints module may need to touch the inferior's
+          memory.  Switch to the (stopped) event ptid
+          momentarily.  */
+       ptid_t saved_inferior_ptid = inferior_ptid;
+       inferior_ptid = ecs->ptid;
 
-      ecs->random_signal = !bpstat_explains_signal (stop_bpstat);
-      inferior_ptid = ecs->saved_inferior_ptid;
+       stop_bpstat = bpstat_stop_status (stop_pc, ecs->ptid);
+
+       ecs->random_signal = !bpstat_explains_signal (stop_bpstat);
+       inferior_ptid = saved_inferior_ptid;
+      }
 
       if (!ptid_equal (ecs->ptid, inferior_ptid))
        {
-         context_switch (ecs);
+         context_switch (ecs->ptid);
          reinit_frame_cache ();
        }
 
@@ -2090,8 +2131,7 @@ handle_inferior_event (struct execution_control_state *ecs)
 
          ecs->random_signal = 0;
 
-         ecs->ptid = saved_singlestep_ptid;
-         context_switch (ecs);
+         context_switch (saved_singlestep_ptid);
          if (deprecated_context_hook)
            deprecated_context_hook (pid_to_thread_id (ecs->ptid));
 
@@ -2251,12 +2291,12 @@ handle_inferior_event (struct execution_control_state *ecs)
          else
            {                   /* Single step */
              if (!ptid_equal (inferior_ptid, ecs->ptid))
-               context_switch (ecs);
-             ecs->waiton_ptid = ecs->ptid;
-             ecs->wp = &(ecs->ws);
-             ecs->stepping_over_breakpoint = 1;
+               context_switch (ecs->ptid);
+
+             waiton_ptid = ecs->ptid;
+             infwait_state = infwait_thread_hop_state;
 
-             ecs->infwait_state = infwait_thread_hop_state;
+             tss->stepping_over_breakpoint = 1;
              keep_going (ecs);
              registers_changed ();
              return;
@@ -2278,7 +2318,7 @@ handle_inferior_event (struct execution_control_state *ecs)
       if (debug_infrun)
        fprintf_unfiltered (gdb_stdlog, "infrun: context switch\n");
 
-      context_switch (ecs);
+      context_switch (ecs->ptid);
 
       if (deprecated_context_hook)
        deprecated_context_hook (pid_to_thread_id (ecs->ptid));
@@ -2327,11 +2367,11 @@ handle_inferior_event (struct execution_control_state *ecs)
        remove_breakpoints ();
       registers_changed ();
       target_resume (ecs->ptid, 1, TARGET_SIGNAL_0);   /* Single step */
-      ecs->waiton_ptid = ecs->ptid;
+      waiton_ptid = ecs->ptid;
       if (HAVE_STEPPABLE_WATCHPOINT)
-       ecs->infwait_state = infwait_step_watch_state;
+       infwait_state = infwait_step_watch_state;
       else
-       ecs->infwait_state = infwait_nonstep_watch_state;
+       infwait_state = infwait_nonstep_watch_state;
       prepare_to_wait (ecs);
       return;
     }
@@ -2345,7 +2385,7 @@ handle_inferior_event (struct execution_control_state *ecs)
                            &ecs->stop_func_start, &ecs->stop_func_end);
   ecs->stop_func_start
     += gdbarch_deprecated_function_start_offset (current_gdbarch);
-  ecs->stepping_over_breakpoint = 0;
+  tss->stepping_over_breakpoint = 0;
   bpstat_clear (&stop_bpstat);
   stop_step = 0;
   stop_print_frame = 1;
@@ -2355,7 +2395,7 @@ handle_inferior_event (struct execution_control_state *ecs)
   if (stop_signal == TARGET_SIGNAL_TRAP
       && stepping_over_breakpoint
       && gdbarch_single_step_through_delay_p (current_gdbarch)
-      && currently_stepping (ecs))
+      && currently_stepping (tss))
     {
       /* We're trying to step off a breakpoint.  Turns out that we're
         also on an instruction that needs to be stepped multiple
@@ -2371,7 +2411,7 @@ handle_inferior_event (struct execution_control_state *ecs)
        {
          /* The user issued a continue when stopped at a breakpoint.
             Set up for another trap and get out of here.  */
-         ecs->stepping_over_breakpoint = 1;
+         tss->stepping_over_breakpoint = 1;
          keep_going (ecs);
          return;
        }
@@ -2383,15 +2423,15 @@ handle_inferior_event (struct execution_control_state *ecs)
             case, don't decide that here, just set 
             ecs->stepping_over_breakpoint, making sure we 
             single-step again before breakpoints are re-inserted.  */
-         ecs->stepping_over_breakpoint = 1;
+         tss->stepping_over_breakpoint = 1;
        }
     }
 
   /* Look at the cause of the stop, and decide what to do.
      The alternatives are:
-     1) break; to really stop and return to the debugger,
-     2) drop through to start up again
-     (set ecs->stepping_over_breakpoint to 1 to single step once)
+     1) stop_stepping and return; to really stop and return to the debugger,
+     2) keep_going and return to start up again
+     (set tss->stepping_over_breakpoint to 1 to single step once)
      3) set ecs->random_signal to 1, and the decision between 1 and 2
      will be made according to the signal handling tables.  */
 
@@ -2552,7 +2592,7 @@ process_event_stop_test:
                                 "breakpoint\n");
 
          insert_step_resume_breakpoint_at_frame (get_current_frame ());
-         ecs->step_after_step_resume_breakpoint = 1;
+         tss->step_after_step_resume_breakpoint = 1;
          keep_going (ecs);
          return;
        }
@@ -2616,7 +2656,7 @@ process_event_stop_test:
          fprintf_unfiltered (gdb_stdlog,
                              "infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME\n");
 
-       ecs->stepping_over_breakpoint = 1;
+       tss->stepping_over_breakpoint = 1;
 
        if (!gdbarch_get_longjmp_target_p (current_gdbarch)
            || !gdbarch_get_longjmp_target (current_gdbarch,
@@ -2656,7 +2696,7 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n");
       case BPSTAT_WHAT_SINGLE:
         if (debug_infrun)
          fprintf_unfiltered (gdb_stdlog, "infrun: BPSTAT_WHAT_SINGLE\n");
-       ecs->stepping_over_breakpoint = 1;
+       tss->stepping_over_breakpoint = 1;
        /* Still need to check other stuff, at least the case
           where we are stepping and step out of the right range.  */
        break;
@@ -2710,13 +2750,13 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n");
              bpstat_find_step_resume_breakpoint (stop_bpstat);
          }
        delete_step_resume_breakpoint (&step_resume_breakpoint);
-       if (ecs->step_after_step_resume_breakpoint)
+       if (tss->step_after_step_resume_breakpoint)
          {
            /* Back when the step-resume breakpoint was inserted, we
               were trying to single-step off a breakpoint.  Go back
               to doing that.  */
-           ecs->step_after_step_resume_breakpoint = 0;
-           ecs->stepping_over_breakpoint = 1;
+           tss->step_after_step_resume_breakpoint = 0;
+           tss->stepping_over_breakpoint = 1;
            keep_going (ecs);
            return;
          }
@@ -2791,19 +2831,19 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n");
                 friends) until we reach non-dld code.  At that point,
                 we can stop stepping. */
              bpstat_get_triggered_catchpoints (stop_bpstat,
-                                               &ecs->
+                                               &tss->
                                                stepping_through_solib_catchpoints);
-             ecs->stepping_through_solib_after_catch = 1;
+             tss->stepping_through_solib_after_catch = 1;
 
              /* Be sure to lift all breakpoints, so the inferior does
                 actually step past this point... */
-             ecs->stepping_over_breakpoint = 1;
+             tss->stepping_over_breakpoint = 1;
              break;
            }
          else
            {
              /* We want to step over this breakpoint, then keep going.  */
-             ecs->stepping_over_breakpoint = 1;
+             tss->stepping_over_breakpoint = 1;
              break;
            }
        }
@@ -2826,7 +2866,7 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n");
   /* Are we stepping to get the inferior out of the dynamic linker's
      hook (and possibly the dld itself) after catching a shlib
      event?  */
-  if (ecs->stepping_through_solib_after_catch)
+  if (tss->stepping_through_solib_after_catch)
     {
 #if defined(SOLIB_ADD)
       /* Have we reached our destination?  If not, keep going. */
@@ -2834,7 +2874,7 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n");
        {
           if (debug_infrun)
            fprintf_unfiltered (gdb_stdlog, "infrun: stepping in dynamic linker\n");
-         ecs->stepping_over_breakpoint = 1;
+         tss->stepping_over_breakpoint = 1;
          keep_going (ecs);
          return;
        }
@@ -2843,10 +2883,10 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n");
         fprintf_unfiltered (gdb_stdlog, "infrun: step past dynamic linker\n");
       /* Else, stop and report the catchpoint(s) whose triggering
          caused us to begin stepping. */
-      ecs->stepping_through_solib_after_catch = 0;
+      tss->stepping_through_solib_after_catch = 0;
       bpstat_clear (&stop_bpstat);
-      stop_bpstat = bpstat_copy (ecs->stepping_through_solib_catchpoints);
-      bpstat_clear (&ecs->stepping_through_solib_catchpoints);
+      stop_bpstat = bpstat_copy (tss->stepping_through_solib_catchpoints);
+      bpstat_clear (&tss->stepping_through_solib_catchpoints);
       stop_print_frame = 1;
       stop_stepping (ecs);
       return;
@@ -3081,14 +3121,14 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n");
        }
     }
 
-  ecs->sal = find_pc_line (stop_pc, 0);
+  tss->sal = find_pc_line (stop_pc, 0);
 
   /* NOTE: tausq/2004-05-24: This if block used to be done before all
      the trampoline processing logic, however, there are some trampolines 
      that have no names, so we should do trampoline handling first.  */
   if (step_over_calls == STEP_OVER_UNDEBUGGABLE
       && ecs->stop_func_name == NULL
-      && ecs->sal.line == 0)
+      && tss->sal.line == 0)
     {
       if (debug_infrun)
         fprintf_unfiltered (gdb_stdlog, "infrun: stepped into undebuggable function\n");
@@ -3134,7 +3174,7 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n");
       return;
     }
 
-  if (ecs->sal.line == 0)
+  if (tss->sal.line == 0)
     {
       /* We have no line number information.  That means to stop
          stepping (does this always happen right after one instruction,
@@ -3148,9 +3188,9 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n");
       return;
     }
 
-  if ((stop_pc == ecs->sal.pc)
-      && (ecs->current_line != ecs->sal.line
-         || ecs->current_symtab != ecs->sal.symtab))
+  if ((stop_pc == tss->sal.pc)
+      && (tss->current_line != tss->sal.line
+         || tss->current_symtab != tss->sal.symtab))
     {
       /* We are at the start of a different line.  So stop.  Note that
          we don't stop if we step into the middle of a different line.
@@ -3171,11 +3211,11 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n");
      new line in mid-statement, we continue stepping.  This makes
      things like for(;;) statements work better.)  */
 
-  step_range_start = ecs->sal.pc;
-  step_range_end = ecs->sal.end;
+  step_range_start = tss->sal.pc;
+  step_range_end = tss->sal.end;
   step_frame_id = get_frame_id (get_current_frame ());
-  ecs->current_line = ecs->sal.line;
-  ecs->current_symtab = ecs->sal.symtab;
+  tss->current_line = tss->sal.line;
+  tss->current_symtab = tss->sal.symtab;
 
   /* In the case where we just stepped out of a function into the
      middle of a line of the caller, continue stepping, but
@@ -3212,11 +3252,11 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n");
 /* Are we in the middle of stepping?  */
 
 static int
-currently_stepping (struct execution_control_state *ecs)
+currently_stepping (struct thread_stepping_state *tss)
 {
   return (((step_range_end && step_resume_breakpoint == NULL)
           || stepping_over_breakpoint)
-         || ecs->stepping_through_solib_after_catch
+         || tss->stepping_through_solib_after_catch
          || bpstat_should_step ());
 }
 
@@ -3234,17 +3274,17 @@ step_into_function (struct execution_control_state *ecs)
     ecs->stop_func_start = gdbarch_skip_prologue
                             (current_gdbarch, ecs->stop_func_start);
 
-  ecs->sal = find_pc_line (ecs->stop_func_start, 0);
+  tss->sal = find_pc_line (ecs->stop_func_start, 0);
   /* Use the step_resume_break to step until the end of the prologue,
      even if that involves jumps (as it seems to on the vax under
      4.2).  */
   /* If the prologue ends in the middle of a source line, continue to
      the end of that source line (if it is still within the function).
      Otherwise, just go to end of prologue.  */
-  if (ecs->sal.end
-      && ecs->sal.pc != ecs->stop_func_start
-      && ecs->sal.end < ecs->stop_func_end)
-    ecs->stop_func_start = ecs->sal.end;
+  if (tss->sal.end
+      && tss->sal.pc != ecs->stop_func_start
+      && tss->sal.end < ecs->stop_func_end)
+    ecs->stop_func_start = tss->sal.end;
 
   /* Architectures which require breakpoint adjustment might not be able
      to place a breakpoint at the computed address.  If so, the test
@@ -3421,7 +3461,7 @@ keep_going (struct execution_control_state *ecs)
       /* We took a signal (which we are supposed to pass through to
          the inferior, else we'd have done a break above) and we
          haven't yet gotten our trap.  Simply continue.  */
-      resume (currently_stepping (ecs), stop_signal);
+      resume (currently_stepping (tss), stop_signal);
     }
   else
     {
@@ -3438,7 +3478,7 @@ keep_going (struct execution_control_state *ecs)
         already inserted breakpoints.  Therefore, we don't
         care if breakpoints were already inserted, or not.  */
       
-      if (ecs->stepping_over_breakpoint)
+      if (tss->stepping_over_breakpoint)
        {
          if (! use_displaced_stepping (current_gdbarch))
            /* Since we can't do a displaced step, we have to remove
@@ -3462,7 +3502,7 @@ keep_going (struct execution_control_state *ecs)
            }
        }
 
-      stepping_over_breakpoint = ecs->stepping_over_breakpoint;
+      stepping_over_breakpoint = tss->stepping_over_breakpoint;
 
       /* Do not deliver SIGNAL_TRAP (except when the user explicitly
          specifies that such a signal should be delivered to the
@@ -3480,7 +3520,7 @@ keep_going (struct execution_control_state *ecs)
        stop_signal = TARGET_SIGNAL_0;
 
 
-      resume (currently_stepping (ecs), stop_signal);
+      resume (currently_stepping (tss), stop_signal);
     }
 
   prepare_to_wait (ecs);
@@ -3495,7 +3535,7 @@ prepare_to_wait (struct execution_control_state *ecs)
 {
   if (debug_infrun)
     fprintf_unfiltered (gdb_stdlog, "infrun: prepare_to_wait\n");
-  if (ecs->infwait_state == infwait_normal_state)
+  if (infwait_state == infwait_normal_state)
     {
       overlay_cache_invalid = 1;
 
@@ -3506,8 +3546,7 @@ prepare_to_wait (struct execution_control_state *ecs)
          as part of their normal status mechanism. */
 
       registers_changed ();
-      ecs->waiton_ptid = pid_to_ptid (-1);
-      ecs->wp = &(ecs->ws);
+      waiton_ptid = pid_to_ptid (-1);
     }
   /* This is the old end of the while loop.  Let everybody know we
      want to wait for the inferior some more and get called again
This page took 0.042018 seconds and 4 git commands to generate.