* infrun.c (normal_stop, proceed): Remove call to print_sys_errmsg
authorGrace Sainsbury <graces@redhat.com>
Fri, 23 Aug 2002 20:49:38 +0000 (20:49 +0000)
committerGrace Sainsbury <graces@redhat.com>
Fri, 23 Aug 2002 20:49:38 +0000 (20:49 +0000)
when breakpoints fail. Move general breakpoint error messages to
insert_breakpoints.
* breakpoint.c (insert_breakpoints): Change warnings when
breakpoints are nto inserted to specify the type. Remove call to
memory_error when hardware breakpoints can't be inserted. Remove
multiple calls to warning so all messages are sent to the user at
once.
(delete_breakpoints): Make insert error messsages more explicit.

gdb/ChangeLog
gdb/breakpoint.c
gdb/infrun.c

index 568b6d7e31e8be1c372a3dd4d73428836c0deaae..f6479c20af8f2a9fd7d8d2bce1bf50ec74f1ab3b 100644 (file)
@@ -1,3 +1,15 @@
+2002-08-23  Grace Sainsbury  <graces@redhat.com>
+
+       * infrun.c (normal_stop, proceed): Remove call to print_sys_errmsg
+       when breakpoints fail. Move general breakpoint error messages to
+       insert_breakpoints.  
+       * breakpoint.c (insert_breakpoints): Change warnings when
+       breakpoints are nto inserted to specify the type. Remove call to
+       memory_error when hardware breakpoints can't be inserted. Remove
+       multiple calls to warning so all messages are sent to the user at
+       once.
+       (delete_breakpoints): Make insert error messsages more explicit.
+
 2002-08-23  Daniel Jacobowitz  <drow@mvista.com>
 
        * ChangeLog: Move gdbserver entries after GDB 5.2 to
@@ -65,6 +77,7 @@
        i960-*-vxworks* obsolete.
        * MAINTAINERS: Note that the i960 is obsolete.
 
+>>>>>>> 1.3141
 2002-08-21  Corinna Vinschen  <vinschen@redhat.com
 
        * aix-thread.c (aix_thread_detach): Disable thread debugging on
        * config/mips/tm-mips.h (DEFAULT_MIPS_TYPE): Delete unused macro.
        * config/mips/tm-embed.h (DEFAULT_MIPS_TYPE): Delete unused macro.
 
+>>>>>>> 1.3134
 2002-08-21  Jim Blandy  <jimb@redhat.com>
 
        * valops.c (value_cast): Simplify and correct logic for doing a
        mips_push_dummy_frame, mips_pop_frame, mips_skip_prologue,
        mips_breakpoint_from_pc, mips_call_dummy_address): Make static.
 
+>>>>>>> 1.3128
 2002-08-19  Michael Snyder  <msnyder@redhat.com>
 
        * mips-tdep.c (mips_frame_num_args): New function.
index 30b878d9d673ce326eb80e79b71e7a45734b99ba..0f498af9957e37a40632062d4a702f8b6d8c7447 100644 (file)
@@ -715,10 +715,22 @@ insert_breakpoints (void)
   int return_val = 0;  /* return success code. */
   int val = 0;
   int disabled_breaks = 0;
+  int hw_breakpoint_error = 0;
+  int process_warning = 0;
 
   static char message1[] = "Error inserting catchpoint %d:\n";
   static char message[sizeof (message1) + 30];
 
+#ifdef ONE_PROCESS_WRITETEXT
+  process_warning = 1;
+#endif
+
+  struct ui_file *tmp_error_stream = mem_fileopen ();
+  make_cleanup_ui_file_delete (tmp_error_stream);
+
+  /* Explicitly mark the warning -- this will only be printed if
+     there was an error.  */
+  fprintf_unfiltered (tmp_error_stream, "Warning:\n");
 
   ALL_BREAKPOINTS_SAFE (b, temp)
   {
@@ -776,8 +788,9 @@ insert_breakpoints (void)
                    /* Set a software (trap) breakpoint at the LMA.  */
                    val = target_insert_breakpoint (addr, b->shadow_contents);
                    if (val != 0)
-                     warning ("overlay breakpoint %d failed: in ROM?", 
-                              b->number);
+                     fprintf_unfiltered (tmp_error_stream, 
+                                         "Overlay breakpoint %d failed: in ROM?", 
+                                         b->number);
                  }
              }
            /* Shall we set a breakpoint at the VMA? */
@@ -810,22 +823,34 @@ insert_breakpoints (void)
                b->enable_state = bp_shlib_disabled;
                if (!disabled_breaks)
                  {
-                   target_terminal_ours_for_output ();
-                   warning ("Cannot insert breakpoint %d:", b->number);
-                   warning ("Temporarily disabling shared library breakpoints:");
+                   fprintf_unfiltered (tmp_error_stream, 
+                                       "Cannot insert breakpoint %d.\n", b->number);
+                   fprintf_unfiltered (tmp_error_stream, 
+                                       "Temporarily disabling shared library breakpoints:\n");
                  }
                disabled_breaks = 1;
-               warning ("breakpoint #%d ", b->number);
+               fprintf_unfiltered (tmp_error_stream, "breakpoint #%d\n", b->number);
              }
            else
 #endif
              {
-               target_terminal_ours_for_output ();
-               warning ("Cannot insert breakpoint %d:", b->number);
-#ifdef ONE_PROCESS_WRITETEXT
-               warning ("The same program may be running in another process.");
-#endif
-               memory_error (val, b->address);    /* which bombs us out */
+               process_warning = 1;
+               if (b->type == bp_hardware_breakpoint)
+                 {
+                   hw_breakpoint_error = 1;
+                   fprintf_unfiltered (tmp_error_stream, 
+                                       "Cannot insert hardware breakpoint %d.\n",
+                                       b->number);
+                 }
+               else
+                 {
+                   fprintf_unfiltered (tmp_error_stream, "Cannot insert breakpoint %d.\n", b->number);
+                   fprintf_filtered (tmp_error_stream, "Error accessing memory address ");
+                   print_address_numeric (b->address, 1, tmp_error_stream);
+                   fprintf_filtered (tmp_error_stream, ": %s.\n",
+                                     safe_strerror (val));
+                 }
+
              }
          }
        else
@@ -852,9 +877,13 @@ insert_breakpoints (void)
        if (val)
          {
            /* Couldn't set breakpoint for some reason */
-           target_terminal_ours_for_output ();
-           warning ("Cannot insert catchpoint %d; disabling it.",
-                    b->number);
+           fprintf_unfiltered (tmp_error_stream, 
+                               "Cannot insert catchpoint %d; disabling it.\n",
+                               b->number);
+           fprintf_filtered (tmp_error_stream, "Error accessing memory address ");
+           print_address_numeric (b->address, 1, tmp_error_stream);
+           fprintf_filtered (tmp_error_stream, ": %s.\n",
+                             safe_strerror (val));
            b->enable_state = bp_disabled;
          }
        else
@@ -876,9 +905,9 @@ insert_breakpoints (void)
            if (val == -1)
              {
                /* something went wrong */
-               target_terminal_ours_for_output ();
-               warning ("Cannot insert catchpoint %d; disabling it.",
-                        b->number);
+               fprintf_unfiltered (tmp_error_stream, 
+                                   "Cannot insert catchpoint %d; disabling it.\n",
+                                   b->number);
                b->enable_state = bp_disabled;
              }
          }
@@ -955,7 +984,7 @@ insert_breakpoints (void)
 
                        addr = VALUE_ADDRESS (v) + VALUE_OFFSET (v);
                        len = TYPE_LENGTH (VALUE_TYPE (v));
-                       type   = hw_write;
+                       type = hw_write;
                        if (b->type == bp_read_watchpoint)
                          type = hw_read;
                        else if (b->type == bp_access_watchpoint)
@@ -980,9 +1009,11 @@ insert_breakpoints (void)
               value chain brings us here.  */
            if (!b->inserted)
              {
+               process_warning = 1;
                remove_breakpoint (b, mark_uninserted);
-               warning ("Could not insert hardware watchpoint %d.",
-                        b->number);
+               hw_breakpoint_error = 1;
+               fprintf_unfiltered (tmp_error_stream,
+                                   "Cannot insert hardware watchpoint %d.\n", b->number);
                val = -1;
              }               
          }
@@ -1029,8 +1060,7 @@ insert_breakpoints (void)
          }
        if (val < 0)
          {
-           target_terminal_ours_for_output ();
-           warning ("Cannot insert catchpoint %d.", b->number);
+           fprintf_unfiltered (tmp_error_stream, "Cannot insert catchpoint %d.", b->number);
          }
        else
          b->inserted = 1;
@@ -1039,11 +1069,26 @@ insert_breakpoints (void)
          return_val = val;     /* remember failure */
       }
   }
+  
+  if (return_val) 
+    {
+      /* If a hardware breakpoint or watchpoint was inserted, add a
+         message about possibly exhausted resources.  */
+      if (hw_breakpoint_error)  
+       {
+         fprintf_unfiltered (tmp_error_stream, "Could not insert hardware breakpoints:\n" 
+                             "You may have requested too many hardware breakpoints/watchpoints.\n");
+       }
 
+      if (process_warning)
+       fprintf_unfiltered (tmp_error_stream,"The same program may be running in another process.");
+
+      target_terminal_ours_for_output ();
+      error_stream (tmp_error_stream);
+    }
   return return_val;
 }
 
-
 int
 remove_breakpoints (void)
 {
@@ -6681,11 +6726,32 @@ delete_breakpoint (struct breakpoint *bpt)
          else
            val = target_insert_breakpoint (b->address, b->shadow_contents);
 
+         /* If there was an error in the insert, print a message, then stop execution.  */
          if (val != 0)
            {
+             struct ui_file *tmp_error_stream = mem_fileopen ();
+             make_cleanup_ui_file_delete (tmp_error_stream);
+            
+
+             if (b->type == bp_hardware_breakpoint)
+               {
+                 fprintf_unfiltered (tmp_error_stream, 
+                                       "Cannot insert hardware breakpoint %d.\n"
+                                     "You may have requested too many hardware breakpoints.\n",
+                                       b->number);
+                 }
+               else
+                 {
+                   fprintf_unfiltered (tmp_error_stream, "Cannot insert breakpoint %d.\n", b->number);
+                   fprintf_filtered (tmp_error_stream, "Error accessing memory address ");
+                   print_address_numeric (b->address, 1, tmp_error_stream);
+                   fprintf_filtered (tmp_error_stream, ": %s.\n",
+                                     safe_strerror (val));
+                 }
+             
+             fprintf_unfiltered (tmp_error_stream,"The same program may be running in another process.");
              target_terminal_ours_for_output ();
-             warning ("Cannot insert breakpoint %d:", b->number);
-             memory_error (val, b->address);   /* which bombs us out */
+             error_stream(tmp_error_stream); 
            }
          else
            b->inserted = 1;
index 70fa5343c180c3a99a018db1b5b331f0a4566264..0777bdebc05cd628ddac8f15df1e8a1d56ed358a 100644 (file)
@@ -990,16 +990,9 @@ proceed (CORE_ADDR addr, enum target_signal siggnal, int step)
     trap_expected = 1;
   else
     {
-      int temp = insert_breakpoints ();
-      if (temp)
-       {
-         print_sys_errmsg ("insert_breakpoints", temp);
-         error ("Cannot insert breakpoints.\n\
-The same program may be running in another process,\n\
-or you may have requested too many hardware\n\
-breakpoints and/or watchpoints.\n");
-       }
-
+      insert_breakpoints ();
+      /* If we get here there was no call to error() in 
+        insert breakpoints -- so they were inserted.  */
       breakpoints_inserted = 1;
     }
 
@@ -3379,16 +3372,6 @@ normal_stop (void)
   if (target_has_execution && get_current_frame ())
     (get_current_frame ())->pc = read_pc ();
 
-  if (breakpoints_failed)
-    {
-      target_terminal_ours_for_output ();
-      print_sys_errmsg ("While inserting breakpoints", breakpoints_failed);
-      printf_filtered ("Stopped; cannot insert breakpoints.\n\
-The same program may be running in another process,\n\
-or you may have requested too many hardware breakpoints\n\
-and/or watchpoints.\n");
-    }
-
   if (target_has_execution && breakpoints_inserted)
     {
       if (remove_breakpoints ())
This page took 0.038078 seconds and 4 git commands to generate.