* breakpoint.c (break_command_really): Change return type to int.
authorPedro Alves <palves@redhat.com>
Fri, 12 Feb 2010 00:47:53 +0000 (00:47 +0000)
committerPedro Alves <palves@redhat.com>
Fri, 12 Feb 2010 00:47:53 +0000 (00:47 +0000)
Return false if no breakpoint was created, true otherwise.
(trace_command): Don't set the tracepoint count if no tracepoint
was created.
(ftrace_command): Ditto.
(create_tracepoint_from_upload): Bail out if the tracepoint wasn't
created in the breakpoints table.

gdb/ChangeLog
gdb/breakpoint.c

index 0cd8fd7..b3c083b 100644 (file)
@@ -1,3 +1,13 @@
+2010-02-12  Pedro Alves  <pedro@codesourcery.com>
+
+       * breakpoint.c (break_command_really): Change return type to int.
+       Return false if no breakpoint was created, true otherwise.
+       (trace_command): Don't set the tracepoint count if no tracepoint
+       was created.
+       (ftrace_command): Ditto.
+       (create_tracepoint_from_upload): Bail out if the tracepoint wasn't
+       created in the breakpoints table.
+
 2010-02-11  Jan Kratochvil  <jan.kratochvil@redhat.com>
            Ulrich Weigand  <uweigand@de.ibm.com>
 
index 4b2daf0..574ecdf 100644 (file)
@@ -6722,17 +6722,16 @@ find_condition_and_thread (char *tok, CORE_ADDR pc,
     }
 }
 
-/* Set a breakpoint.  This function is shared between
-   CLI and MI functions for setting a breakpoint.
-   This function has two major modes of operations,
-   selected by the PARSE_CONDITION_AND_THREAD parameter.
-   If non-zero, the function will parse arg, extracting
-   breakpoint location, address and thread. Otherwise,
-   ARG is just the location of breakpoint, with condition
-   and thread specified by the COND_STRING and THREAD
-   parameters.  */
+/* Set a breakpoint.  This function is shared between CLI and MI
+   functions for setting a breakpoint.  This function has two major
+   modes of operations, selected by the PARSE_CONDITION_AND_THREAD
+   parameter.  If non-zero, the function will parse arg, extracting
+   breakpoint location, address and thread. Otherwise, ARG is just the
+   location of breakpoint, with condition and thread specified by the
+   COND_STRING and THREAD parameters.  Returns true if any breakpoint
+   was created; false otherwise.  */
 
-static void
+static int
 break_command_really (struct gdbarch *gdbarch,
                      char *arg, char *cond_string, int thread,
                      int parse_condition_and_thread,
@@ -6793,7 +6792,7 @@ break_command_really (struct gdbarch *gdbarch,
             selects no, then simply return the error code.  */
          if (pending_break_support == AUTO_BOOLEAN_AUTO
              && !nquery ("Make breakpoint pending on future shared library load? "))
-           return;
+           return 0;
 
          /* At this point, either the user was queried about setting
             a pending breakpoint and selected yes, or pending
@@ -6811,7 +6810,7 @@ break_command_really (struct gdbarch *gdbarch,
        }
     default:
       if (!sals.nelts)
-       return;
+       return 0;
     }
 
   /* Create a chain of things that always need to be cleaned up. */
@@ -6923,6 +6922,8 @@ break_command_really (struct gdbarch *gdbarch,
 
   /* error call may happen here - have BKPT_CHAIN already discarded.  */
   update_global_location_list (1);
+
+  return 1;
 }
 
 /* Set a breakpoint. 
@@ -9789,33 +9790,33 @@ set_tracepoint_count (int num)
 void
 trace_command (char *arg, int from_tty)
 {
-  break_command_really (get_current_arch (),
-                       arg,
-                       NULL, 0, 1 /* parse arg */,
-                       0 /* tempflag */, 0 /* hardwareflag */,
-                       1 /* traceflag */,
-                       0 /* Ignore count */,
-                       pending_break_support, 
-                       NULL,
-                       from_tty,
-                       1 /* enabled */);
-  set_tracepoint_count (breakpoint_count);
+  if (break_command_really (get_current_arch (),
+                           arg,
+                           NULL, 0, 1 /* parse arg */,
+                           0 /* tempflag */, 0 /* hardwareflag */,
+                           1 /* traceflag */,
+                           0 /* Ignore count */,
+                           pending_break_support,
+                           NULL,
+                           from_tty,
+                           1 /* enabled */))
+    set_tracepoint_count (breakpoint_count);
 }
 
 void
 ftrace_command (char *arg, int from_tty)
 {
-  break_command_really (get_current_arch (),
-                       arg, 
-                       NULL, 0, 1 /* parse arg */,
-                       0 /* tempflag */, 1 /* hardwareflag */,
-                       1 /* traceflag */,
-                       0 /* Ignore count */,
-                       pending_break_support, 
-                       NULL,
-                       from_tty,
-                       1 /* enabled */);
-  set_tracepoint_count (breakpoint_count);
+  if (break_command_really (get_current_arch (),
+                           arg,
+                           NULL, 0, 1 /* parse arg */,
+                           0 /* tempflag */, 1 /* hardwareflag */,
+                           1 /* traceflag */,
+                           0 /* Ignore count */,
+                           pending_break_support,
+                           NULL,
+                           from_tty,
+                           1 /* enabled */))
+    set_tracepoint_count (breakpoint_count);
 }
 
 /* Given information about a tracepoint as recorded on a target (which
@@ -9829,24 +9830,27 @@ create_tracepoint_from_upload (struct uploaded_tp *utp)
 {
   char buf[100];
   struct breakpoint *tp;
-  
+
   /* In the absence of a source location, fall back to raw address.  */
   sprintf (buf, "*%s", paddress (get_current_arch(), utp->addr));
 
-  break_command_really (get_current_arch (),
-                       buf, 
-                       NULL, 0, 1 /* parse arg */,
-                       0 /* tempflag */,
-                       (utp->type == bp_fast_tracepoint) /* hardwareflag */,
-                       1 /* traceflag */,
-                       0 /* Ignore count */,
-                       pending_break_support, 
-                       NULL,
-                       0 /* from_tty */,
-                       utp->enabled /* enabled */);
+  if (!break_command_really (get_current_arch (),
+                            buf,
+                            NULL, 0, 1 /* parse arg */,
+                            0 /* tempflag */,
+                            (utp->type == bp_fast_tracepoint) /* hardwareflag */,
+                            1 /* traceflag */,
+                            0 /* Ignore count */,
+                            pending_break_support,
+                            NULL,
+                            0 /* from_tty */,
+                            utp->enabled /* enabled */))
+    return NULL;
+
   set_tracepoint_count (breakpoint_count);
   
-    tp = get_tracepoint (tracepoint_count);
+  tp = get_tracepoint (tracepoint_count);
+  gdb_assert (tp != NULL);
 
   if (utp->pass > 0)
     {