From 1aafd4da217bfefde7152bd8b99ee4a6a590aee0 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Fri, 11 May 2007 12:44:34 +0000 Subject: [PATCH] * breakpoint.c (single_step_breakpoint_inserted_here_p): New function. (breakpoint_inserted_here_p): Call it. (software_breakpoint_inserted_here_p): Likewise. --- gdb/ChangeLog | 6 ++++++ gdb/breakpoint.c | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 16d9c4842f6..fa244ec0908 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2007-05-11 Ulrich Weigand + + * breakpoint.c (single_step_breakpoint_inserted_here_p): New function. + (breakpoint_inserted_here_p): Call it. + (software_breakpoint_inserted_here_p): Likewise. + 2007-05-10 Ulrich Weigand * inf-ptrace.c (inf_ptrace_register_u_offset): Adapt parameter list. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 23b5f1d8b8b..176a17cdbe5 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -202,6 +202,8 @@ static void tcatch_command (char *arg, int from_tty); static void ep_skip_leading_whitespace (char **s); +static int single_step_breakpoint_inserted_here_p (CORE_ADDR pc); + /* Prototypes for exported functions. */ /* If FALSE, gdb will not use hardware support for watchpoints, even @@ -1841,6 +1843,10 @@ breakpoint_inserted_here_p (CORE_ADDR pc) } } + /* Also check for software single-step breakpoints. */ + if (single_step_breakpoint_inserted_here_p (pc)) + return 1; + return 0; } @@ -1872,6 +1878,10 @@ software_breakpoint_inserted_here_p (CORE_ADDR pc) } } + /* Also check for software single-step breakpoints. */ + if (single_step_breakpoint_inserted_here_p (pc)) + return 1; + return 0; } @@ -7951,6 +7961,23 @@ remove_single_step_breakpoints (void) } } +/* Check whether a software single-step breakpoint is inserted at PC. */ + +static int +single_step_breakpoint_inserted_here_p (CORE_ADDR pc) +{ + int i; + + for (i = 0; i < 2; i++) + { + struct bp_target_info *bp_tgt = single_step_breakpoints[i]; + if (bp_tgt && bp_tgt->placed_address == pc) + return 1; + } + + return 0; +} + /* This help string is used for the break, hbreak, tbreak and thbreak commands. It is defined as a macro to prevent duplication. -- 2.30.2