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

[PATCH v5 2/4] Breakpoint location parsing: always error instead of warning


It's odd that when parsing a breakpoint or location number, we error out
in most cases, but warn in others.

  (gdb) disable 1-
  bad breakpoint number at or near: '1-'
  (gdb) disable -1
  bad breakpoint number at or near: '-1'
  (gdb) disable .foo
  bad breakpoint number at or near: '.foo'
  (gdb) disable foo.1
  Bad breakpoint number 'foo.1'
  (gdb) disable 1.foo
  warning: bad breakpoint number at or near '1.foo'

This changes GDB to always error out.  It required touching one testcase
that expected the warning.

gdb/ChangeLog:
yyyy-mm-dd  Pedro Alves  <palves@redhat.com>

	* breakpoint.c (extract_bp_number_and_location): Change return
	type to void.  Throw error instead of warning.
	(enable_disable_command): Adjust.

gdb/testsuite/ChangeLog:
yyyy-mm-dd  Pedro Alves  <palves@redhat.com>

	* gdb.base/ena-dis-br.exp: Don't expect "warning:".
---
 gdb/breakpoint.c                      | 47 ++++++++++++++---------------------
 gdb/testsuite/gdb.base/ena-dis-br.exp |  6 ++---
 2 files changed, 22 insertions(+), 31 deletions(-)

diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 2c5a3a4..43a7d87 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -14255,7 +14255,7 @@ find_location_by_number (int bp_num, int loc_num)
 	 location number range.
 */
 
-static bool
+static void
 extract_bp_number_and_location (const std::string &arg,
 				std::pair<int, int> &bp_num_range,
 				std::pair<int, int> &bp_loc_range)
@@ -14297,10 +14297,7 @@ extract_bp_number_and_location (const std::string &arg,
 	  const char *ptls = bp_loc;
 	  bp_loc_range.first = get_number_trailer (&ptls, '\0');
 	  if (bp_loc_range.first == 0)
-	    {
-	      warning (_("bad breakpoint number at or near '%s'"), arg.c_str ());
-	      return false;
-	    }
+	    error (_("bad breakpoint number at or near '%s'"), arg.c_str ());
 	  bp_loc_range.second = bp_loc_range.first;
 	}
     }
@@ -14324,10 +14321,7 @@ extract_bp_number_and_location (const std::string &arg,
 	  const char *ptf = arg.c_str ();
 	  bp_num_range.first = get_number (&ptf);
 	  if (bp_num_range.first == 0)
-	    {
-	      warning (_("bad breakpoint number at or near '%s'"), arg.c_str ());
-	      return false;
-	    }
+	    error (_("bad breakpoint number at or near '%s'"), arg.c_str ());
 	  bp_num_range.second = bp_num_range.first;
 	}
       bp_loc_range.first = 0;
@@ -14336,8 +14330,6 @@ extract_bp_number_and_location (const std::string &arg,
 
   if (bp_num_range.first == 0 || bp_num_range.second == 0)
     error (_("bad breakpoint number at or near: '%s'"), arg.c_str ());
-
-  return true;
 }
 
 /* Enable or disable a breakpoint location BP_NUM.LOC_NUM.  ENABLE
@@ -14438,24 +14430,23 @@ enable_disable_command (const char *args, int from_tty, bool enable)
 	{
 	  std::pair<int, int> bp_num_range, bp_loc_range;
 
-	  if (extract_bp_number_and_location (num, bp_num_range, bp_loc_range))
+	  extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
+
+	  if (bp_loc_range.first == bp_loc_range.second
+	      && bp_loc_range.first == 0)
 	    {
-	      if (bp_loc_range.first == bp_loc_range.second
-		  && bp_loc_range.first == 0)
-		{
-		  /* Handle breakpoint ids with formats 'x' or 'x-z'.  */
-		  map_breakpoint_number_range (bp_num_range,
-					       enable
-					       ? enable_breakpoint
-					       : disable_breakpoint);
-		}
-	      else
-		{
-		  /* Handle breakpoint ids with formats 'x.y' or
-		     'x.y-z'.  */
-		  enable_disable_breakpoint_location_range
-		    (bp_num_range.first, bp_loc_range, enable);
-		}
+	      /* Handle breakpoint ids with formats 'x' or 'x-z'.  */
+	      map_breakpoint_number_range (bp_num_range,
+					   enable
+					   ? enable_breakpoint
+					   : disable_breakpoint);
+	    }
+	  else
+	    {
+	      /* Handle breakpoint ids with formats 'x.y' or
+		 'x.y-z'.  */
+	      enable_disable_breakpoint_location_range
+		(bp_num_range.first, bp_loc_range, enable);
 	    }
 	  num = extract_arg (&args);
 	}
diff --git a/gdb/testsuite/gdb.base/ena-dis-br.exp b/gdb/testsuite/gdb.base/ena-dis-br.exp
index 9b8d251..2bbb734 100644
--- a/gdb/testsuite/gdb.base/ena-dis-br.exp
+++ b/gdb/testsuite/gdb.base/ena-dis-br.exp
@@ -395,10 +395,10 @@ proc test_ena_dis_br { what } {
        }
     }
 
-    # Now enable(disable) $b4.1 fooobaar and
-    # it should give warning on fooobaar.
+    # Now enable(disable) '$b4.1 fooobaar'.  This should error on
+    # fooobaar.
     gdb_test "$what $b4.1 fooobaar" \
-       "warning: bad breakpoint number at or near 'fooobaar'" \
+       "bad breakpoint number at or near 'fooobaar'" \
        "$what \$b4.1 fooobar"
     set test1 "${what}d \$b4.1"
 
-- 
2.5.5


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