From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8650 invoked by alias); 29 Nov 2007 18:56:50 -0000 Received: (qmail 8639 invoked by uid 22791); 29 Nov 2007 18:56:49 -0000 X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (65.74.133.4) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 29 Nov 2007 18:56:43 +0000 Received: (qmail 2384 invoked from network); 29 Nov 2007 18:56:41 -0000 Received: from unknown (HELO 172.16.unknown.plus.ru) (vladimir@127.0.0.2) by mail.codesourcery.com with ESMTPA; 29 Nov 2007 18:56:41 -0000 From: Vladimir Prus Date: Thu, 29 Nov 2007 18:56:00 -0000 Subject: [RFA] Make insert_breakpoints return void. To: gdb-patches@sources.redhat.com X-TUID: eb9a082df7733e42 X-Length: 2806 X-UID: 77 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200711292156.37219.vladimir@codesourcery.com> Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2007-11/txt/msg00552.txt.bz2 The insert_breakpoints function has 'int' as return type, and even tries to return something, but will never manage to -- because on the way to returning non-zero value it will always through an exception. This patch adjust the prototype to match the actual behaviour. OK? - Volodya * breakpoint.h (insert_breakpoints): Change return type to void. * breakpoint.c (insert_breakpoints): Change return type to void. Rename local return_val variable to error. * infrun.c (keep_going): Instead of checking return value from insert_breakpoints, catch exception. --- gdb/breakpoint.c | 9 ++++----- gdb/breakpoint.h | 2 +- gdb/infrun.c | 7 ++++++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 49958e6..0f96997 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -1220,11 +1220,11 @@ in which its expression is valid.\n"), Both return zero if successful, or an `errno' value if could not write the inferior. */ -int +void insert_breakpoints (void) { struct bp_location *b, *temp; - int return_val = 0; /* return success code. */ + int error = 0; int val = 0; int disabled_breaks = 0; int hw_breakpoint_error = 0; @@ -1265,10 +1265,10 @@ insert_breakpoints (void) &disabled_breaks, &process_warning, &hw_breakpoint_error); if (val) - return_val = val; + error = val; } - if (return_val) + if (error) { /* If a hardware breakpoint or watchpoint was inserted, add a message about possibly exhausted resources. */ @@ -1286,7 +1286,6 @@ You may have requested too many hardware breakpoints/watchpoints.\n"); target_terminal_ours_for_output (); error_stream (tmp_error_stream); } - return return_val; } int diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 4b84502..56b9a6e 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -717,7 +717,7 @@ extern void awatch_command_wrapper (char *, int); extern void rwatch_command_wrapper (char *, int); extern void tbreak_command (char *, int); -extern int insert_breakpoints (void); +extern void insert_breakpoints (void); extern int remove_breakpoints (void); diff --git a/gdb/infrun.c b/gdb/infrun.c index ad1de6b..62d6d1e 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -2948,9 +2948,14 @@ keep_going (struct execution_control_state *ecs) if (!ecs->another_trap) { + struct gdb_exception e; /* Stop stepping when inserting breakpoints has failed. */ - if (insert_breakpoints () != 0) + TRY_CATCH (e, RETURN_MASK_ERROR) + { + insert_breakpoints (); + } + if (e.reason < 0) { stop_stepping (ecs); return; -- 1.5.3.5