From 5b834a0a5da717c7d1a8d539623e75f07a474e32 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 15 Oct 2014 20:18:32 +0100 Subject: [PATCH] thread.c: cleanup breakpoint deletion A little refactoring to reduce duplicate code. gdb/ 2014-10-15 Pedro Alves * thread.c (delete_thread_breakpoint): New function. (delete_step_resume_breakpoint) (delete_exception_resume_breakpoint): Use it. (delete_at_next_stop): New function. (clear_thread_inferior_resources): Use delete_at_next_stop. --- gdb/ChangeLog | 8 ++++++++ gdb/thread.c | 49 +++++++++++++++++++++++++++++-------------------- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 98f76514cce..e7108abfcc9 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2014-10-15 Pedro Alves + + * thread.c (delete_thread_breakpoint): New function. + (delete_step_resume_breakpoint) + (delete_exception_resume_breakpoint): Use it. + (delete_at_next_stop): New function. + (clear_thread_inferior_resources): Use delete_at_next_stop. + 2014-10-15 Pedro Alves * breakpoint.c (regular_breakpoint_inserted_here_p): Inline ... diff --git a/gdb/thread.c b/gdb/thread.c index 25538d7d438..82c67607bd3 100644 --- a/gdb/thread.c +++ b/gdb/thread.c @@ -91,23 +91,42 @@ inferior_thread (void) return tp; } -void -delete_step_resume_breakpoint (struct thread_info *tp) +/* Delete the breakpoint pointed at by BP_P, if there's one. */ + +static void +delete_thread_breakpoint (struct breakpoint **bp_p) { - if (tp && tp->control.step_resume_breakpoint) + if (*bp_p != NULL) { - delete_breakpoint (tp->control.step_resume_breakpoint); - tp->control.step_resume_breakpoint = NULL; + delete_breakpoint (*bp_p); + *bp_p = NULL; } } +void +delete_step_resume_breakpoint (struct thread_info *tp) +{ + if (tp != NULL) + delete_thread_breakpoint (&tp->control.step_resume_breakpoint); +} + void delete_exception_resume_breakpoint (struct thread_info *tp) { - if (tp && tp->control.exception_resume_breakpoint) + if (tp != NULL) + delete_thread_breakpoint (&tp->control.exception_resume_breakpoint); +} + +/* Delete the breakpoint pointed at by BP_P at the next stop, if + there's one. */ + +static void +delete_at_next_stop (struct breakpoint **bp) +{ + if (*bp != NULL) { - delete_breakpoint (tp->control.exception_resume_breakpoint); - tp->control.exception_resume_breakpoint = NULL; + (*bp)->disposition = disp_del_at_next_stop; + *bp = NULL; } } @@ -118,18 +137,8 @@ clear_thread_inferior_resources (struct thread_info *tp) but not any user-specified thread-specific breakpoints. We can not delete the breakpoint straight-off, because the inferior might not be stopped at the moment. */ - if (tp->control.step_resume_breakpoint) - { - tp->control.step_resume_breakpoint->disposition = disp_del_at_next_stop; - tp->control.step_resume_breakpoint = NULL; - } - - if (tp->control.exception_resume_breakpoint) - { - tp->control.exception_resume_breakpoint->disposition - = disp_del_at_next_stop; - tp->control.exception_resume_breakpoint = NULL; - } + delete_at_next_stop (&tp->control.step_resume_breakpoint); + delete_at_next_stop (&tp->control.exception_resume_breakpoint); delete_longjmp_breakpoint_at_next_stop (tp->num); -- 2.30.2