From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20556 invoked by alias); 21 Aug 2002 18:26:30 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 20549 invoked from network); 21 Aug 2002 18:26:29 -0000 Received: from unknown (HELO tomago.toronto.redhat.com) (216.138.202.10) by sources.redhat.com with SMTP; 21 Aug 2002 18:26:29 -0000 Received: (from graces@localhost) by tomago.toronto.redhat.com (8.11.6/8.11.6) id g7LIQSE10473 for gdb-patches@sources.redhat.com; Wed, 21 Aug 2002 14:26:28 -0400 Date: Wed, 21 Aug 2002 11:26:00 -0000 From: Grace Sainsbury To: gdb-patches@sources.redhat.com Subject: breakpoint error messages Message-ID: <20020821142627.A10117@tomago.toronto.redhat.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="45Z9DzgjV8m4Oswq" Content-Disposition: inline User-Agent: Mutt/1.2.5.1i X-SW-Source: 2002-08/txt/msg00667.txt.bz2 --45Z9DzgjV8m4Oswq Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 878 I changed insert_breakpoints to collect all the warning messages from failed inserts and print them with an error after trying the whole queue. This changes the functionality slightly -- the old code stopped after the first failed insert of a breakpoint. I also changed the error messages to be more explicit about hardware breakpoints. ok? grace 2002-08-21 Grace Sainsbury * 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 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. --45Z9DzgjV8m4Oswq Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=patch Content-length: 7007 Index: breakpoint.c =================================================================== RCS file: /cvs/src/src/gdb/breakpoint.c,v retrieving revision 1.81 diff -u -r1.81 breakpoint.c --- breakpoint.c 20 Aug 2002 20:03:35 -0000 1.81 +++ breakpoint.c 21 Aug 2002 18:16:45 -0000 @@ -715,10 +715,13 @@ int return_val = 0; /* return success code. */ int val = 0; int disabled_breaks = 0; - + int hw_breakpoint_error = 0; + static char message1[] = "Error inserting catchpoint %d:\n"; static char message[sizeof (message1) + 30]; + struct ui_file *tmp_error_stream = mem_fileopen (); + make_cleanup_ui_file_delete (tmp_error_stream); ALL_BREAKPOINTS_SAFE (b, temp) { @@ -776,8 +779,9 @@ /* 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 +814,29 @@ 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 */ + 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); + } + } } else @@ -852,9 +863,9 @@ 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); b->enable_state = bp_disabled; } else @@ -876,9 +887,9 @@ 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 +966,7 @@ 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) @@ -981,8 +992,9 @@ if (!b->inserted) { 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 +1041,7 @@ } 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 +1050,25 @@ 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 breakpoints:\n" + "You may have requested too many hardware breakpoints/watchpoints."); + } +#ifdef ONE_PROCESS_WRITETEXT + fprintf_unfiltered (tmp_error_stream,"The same program may be running in another process.\n"); +#endif + target_terminal_ours_for_output (); + error_stream (tmp_error_stream); + } return return_val; } - int remove_breakpoints (void) { @@ -6681,11 +6706,24 @@ else val = target_insert_breakpoint (b->address, b->shadow_contents); + /* If there wat an error in the insert, print a pessage 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:", b->number); + } + else + { + fprintf_unfiltered (tmp_error_stream, + "Cannot insert breakpoint %d:", b->number); + } 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: infrun.c =================================================================== RCS file: /cvs/src/src/gdb/infrun.c,v retrieving revision 1.68 diff -u -r1.68 infrun.c --- infrun.c 20 Aug 2002 23:01:29 -0000 1.68 +++ infrun.c 21 Aug 2002 18:16:47 -0000 @@ -990,16 +990,9 @@ 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; } @@ -3378,16 +3371,6 @@ DECR_PC_AFTER_BREAK */ 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) { --45Z9DzgjV8m4Oswq--