Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Andrew STUBBS <andrew.stubbs@st.com>
To: GDB Patches <gdb-patches@sourceware.org>
Subject: [PATCH] Don't give spurious warnings when using thread specific breakpoints
Date: Wed, 11 Oct 2006 13:44:00 -0000	[thread overview]
Message-ID: <452CF534.4060209@st.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 501 bytes --]

When creating a thread specific breakpoint GDB will warn about other 
breakpoints set on the same address even when they are specific to 
another thread.

The attached patch prevents it warning about breakpoints from other 
threads. When a non-thread specific breakpoint is created, or already 
exists, the warning is still given, but is annotated with the thread 
information. When not using thread specific breakpoints the behaviour 
should remain unaltered.

:ADDPATCH breakpoint.c:

Andrew Stubbs

[-- Attachment #2: threadbreak.patch --]
[-- Type: text/plain, Size: 2742 bytes --]

2006-10-11  Andrew Stubbs  <andrew.stubbs@st.com>

	* breakpoint.c (describe_other_breakpoints): Add thread parameter.
	Only display breakpoints set on the same thread or globally.
	Annotate display with thread number where appropriate.

Index: src/gdb/breakpoint.c
===================================================================
--- src.orig/gdb/breakpoint.c	2006-10-11 14:23:37.000000000 +0100
+++ src/gdb/breakpoint.c	2006-10-11 14:29:25.000000000 +0100
@@ -102,7 +102,7 @@ static void breakpoint_adjustment_warnin
 static CORE_ADDR adjust_breakpoint_address (CORE_ADDR bpaddr,
                                             enum bptype bptype);
 
-static void describe_other_breakpoints (CORE_ADDR, asection *);
+static void describe_other_breakpoints (CORE_ADDR, asection *, int thread);
 
 static void breakpoints_info (char *, int);
 
@@ -3781,13 +3781,14 @@ maintenance_info_breakpoints (char *bnum
 /* Print a message describing any breakpoints set at PC.  */
 
 static void
-describe_other_breakpoints (CORE_ADDR pc, asection *section)
+describe_other_breakpoints (CORE_ADDR pc, asection *section, int thread)
 {
   int others = 0;
   struct breakpoint *b;
 
   ALL_BREAKPOINTS (b)
-    if (b->loc->address == pc)	/* address match / overlay match */
+    if (b->loc->address == pc	/* address match / overlay match */
+	&& (thread == -1 || b->thread == -1 || b->thread == thread))
       if (!b->pending && (!overlay_debugging || b->loc->section == section))
 	others++;
   if (others > 0)
@@ -3797,12 +3798,17 @@ describe_other_breakpoints (CORE_ADDR pc
       else /* if (others == ???) */
 	printf_filtered (_("Note: breakpoints "));
       ALL_BREAKPOINTS (b)
-	if (b->loc->address == pc)	/* address match / overlay match */
+	if (b->loc->address == pc	/* address match / overlay match */
+	    && (thread == -1 || b->thread == -1 || b->thread == thread))
 	  if (!b->pending && (!overlay_debugging || b->loc->section == section))
 	    {
 	      others--;
-	      printf_filtered ("%d%s%s ",
-			       b->number,
+	      printf_filtered ("%d", b->number);
+	      if (b->thread == -1 && thread != -1)
+		printf_filtered (" (all threads)");
+	      else if (b->thread != -1)
+		printf_filtered (" (thread %d)", b->thread);
+	      printf_filtered ("%s%s ",
 			       ((b->enable_state == bp_disabled || 
 				 b->enable_state == bp_shlib_disabled || 
 				 b->enable_state == bp_call_disabled) 
@@ -4959,7 +4965,7 @@ create_breakpoints (struct symtabs_and_l
 	struct symtab_and_line sal = sals.sals[i];
 
 	if (from_tty)
-	  describe_other_breakpoints (sal.pc, sal.section);
+	  describe_other_breakpoints (sal.pc, sal.section, thread);
 	
 	b = set_raw_breakpoint (sal, type);
 	set_breakpoint_count (breakpoint_count + 1);

             reply	other threads:[~2006-10-11 13:44 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-11 13:44 Andrew STUBBS [this message]
2006-10-11 13:55 ` Daniel Jacobowitz
2006-10-11 14:46   ` Andrew STUBBS
2006-10-11 20:45     ` Daniel Jacobowitz
2006-10-11 22:12       ` Mark Kettenis
2006-10-11 22:14       ` Joel Brobecker
2006-10-18 12:01       ` Andrew STUBBS
2006-10-18 14:14         ` Daniel Jacobowitz
2006-10-18 15:12           ` Andrew STUBBS
2006-10-18 19:47             ` Eli Zaretskii
2006-10-18 20:21               ` Andreas Schwab
2006-10-19  4:17                 ` Eli Zaretskii
2006-10-19  9:47               ` Andrew STUBBS
2006-10-20  6:10                 ` Eli Zaretskii
2006-10-20 14:29                   ` Daniel Jacobowitz
2006-10-20 17:42                     ` Eli Zaretskii
2006-10-20 17:47                       ` Daniel Jacobowitz
2006-10-20 18:03                         ` Eli Zaretskii
2006-10-20 18:07                           ` Daniel Jacobowitz
2006-10-20 18:11                             ` Eli Zaretskii
2006-10-19 13:28             ` Daniel Jacobowitz
2006-10-19 15:59               ` Andrew STUBBS
2006-10-18 19:22           ` Eli Zaretskii
2006-10-11 22:06   ` Mark Kettenis
2006-10-12 10:45     ` Andrew STUBBS

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=452CF534.4060209@st.com \
    --to=andrew.stubbs@st.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox