This is the mail archive of the gdb@sourceware.org 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]

Re: Questionable breakpoint stepping code


On Tuesday 27 November 2007 22:32:43 Joel Brobecker wrote:
> > I would recommend asking someone with access to HP-UX (I think Mark
> > Kettenis and Joel both do) to test the patch.  I don't think the error
> > will trigger...
> 
> I have been away for a week and I still a bit overwhelmed by my email
> backlog that caused me to miss the patch. But if Volodya sends me the
> patch again, I'll give it a whirl.

Thanks Joel!
Here's the patch.

- Volodya
   
        * infrun.c (handle_inferior_event): If
        we failed to remove breakpoints, error,
        don't try to increment PC by hand.
---
 gdb/infrun.c |   19 +------------------
 1 files changed, 1 insertions(+), 18 deletions(-)

diff --git a/gdb/infrun.c b/gdb/infrun.c
index ad1de6b..b92d0de 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -1745,24 +1745,7 @@ handle_inferior_event (struct execution_control_state *ecs)
             process until the child exits (well, okay, not
             then either :-) or execs. */
          if (remove_status != 0)
-           {
-             /* FIXME!  This is obviously non-portable! */
-             write_pc_pid (stop_pc + 4, ecs->ptid);
-             /* We need to restart all the threads now,
-              * unles we're running in scheduler-locked mode. 
-              * Use currently_stepping to determine whether to 
-              * step or continue.
-              */
-             /* FIXME MVS: is there any reason not to call resume()? */
-             if (scheduler_mode == schedlock_on)
-               target_resume (ecs->ptid,
-                              currently_stepping (ecs), TARGET_SIGNAL_0);
-             else
-               target_resume (RESUME_ALL,
-                              currently_stepping (ecs), TARGET_SIGNAL_0);
-             prepare_to_wait (ecs);
-             return;
-           }
+           error (_("Cannot step over breakpoint hit in wrong thread"));
          else
            {                   /* Single step */
              if (!ptid_equal (inferior_ptid, ecs->ptid))
-- 
1.5.3.5


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