From patchwork Tue Aug 29 19:25:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 22403 Received: (qmail 84053 invoked by alias); 29 Aug 2017 19:25:39 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 83827 invoked by uid 89); 29 Aug 2017 19:25:34 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=H*Ad:U*tom, tromey X-HELO: gproxy5-pub.mail.unifiedlayer.com Received: from gproxy5-pub.mail.unifiedlayer.com (HELO gproxy5-pub.mail.unifiedlayer.com) (67.222.38.55) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 29 Aug 2017 19:25:32 +0000 Received: from cmgw3 (unknown [10.0.90.84]) by gproxy5.mail.unifiedlayer.com (Postfix) with ESMTP id 477A81406F2 for ; Tue, 29 Aug 2017 13:25:31 -0600 (MDT) Received: from box522.bluehost.com ([74.220.219.122]) by cmgw3 with id 37RU1w0082f2jeq017RXvc; Tue, 29 Aug 2017 13:25:31 -0600 X-Authority-Analysis: v=2.2 cv=F98nTupN c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=KeKAF7QvOSUA:10 a=zstS-IiYAAAA:8 a=0FD05c-RAAAA:8 a=7UFX3kuGO8CyTnSVABIA:9 a=ze0tPpi-rPB1oetp:21 a=fwTgRNTeZo51OmhW:21 a=4G6NA9xxw8l3yy4pmD5M:22 a=l1rpMCqCXRGZwUSuRcM3:22 Received: from 75-166-76-94.hlrn.qwest.net ([75.166.76.94]:36914 helo=bapiya.Home) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.87) (envelope-from ) id 1dmm8d-004DCm-Sy; Tue, 29 Aug 2017 13:25:27 -0600 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA 01/10] Return std::string from memory_error_message Date: Tue, 29 Aug 2017 13:25:15 -0600 Message-Id: <20170829192524.29971-2-tom@tromey.com> In-Reply-To: <20170829192524.29971-1-tom@tromey.com> References: <20170829192524.29971-1-tom@tromey.com> X-BWhitelist: no X-Exim-ID: 1dmm8d-004DCm-Sy X-Source-Sender: 75-166-76-94.hlrn.qwest.net (bapiya.Home) [75.166.76.94]:36914 X-Source-Auth: tom+tromey.com X-Email-Count: 2 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== X-Local-Domain: yes This changes memory_error_message to return a std::string and fixes up the callers. This removes some cleanups. ChangeLog 2017-08-29 Tom Tromey * valprint.c (val_print_string): Update. * gdbcore.h (memory_error_message): Return std::string. * corefile.c (memory_error_message): Return std::string. (memory_error): Update. * breakpoint.c (insert_bp_location): Update. --- gdb/ChangeLog | 8 ++++++++ gdb/breakpoint.c | 6 ++---- gdb/corefile.c | 16 +++++++--------- gdb/gdbcore.h | 8 ++++---- gdb/valprint.c | 7 ++----- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 926c966..7e3b7bf 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2017-08-29 Tom Tromey + + * valprint.c (val_print_string): Update. + * gdbcore.h (memory_error_message): Return std::string. + * corefile.c (memory_error_message): Return std::string. + (memory_error): Update. + * breakpoint.c (insert_bp_location): Update. + 2017-08-28 Simon Marchi PR gdb/21827 diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index ae09da4..e1fb6b5 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -2889,16 +2889,14 @@ insert_bp_location (struct bp_location *bl, { if (bp_err_message == NULL) { - char *message + std::string message = memory_error_message (TARGET_XFER_E_IO, bl->gdbarch, bl->address); - struct cleanup *old_chain = make_cleanup (xfree, message); fprintf_unfiltered (tmp_error_stream, "Cannot insert breakpoint %d.\n" "%s\n", - bl->owner->number, message); - do_cleanups (old_chain); + bl->owner->number, message.c_str ()); } else { diff --git a/gdb/corefile.c b/gdb/corefile.c index d9773cf..5631347 100644 --- a/gdb/corefile.c +++ b/gdb/corefile.c @@ -186,7 +186,7 @@ Use the \"file\" or \"exec-file\" command.")); } -char * +std::string memory_error_message (enum target_xfer_status err, struct gdbarch *gdbarch, CORE_ADDR memaddr) { @@ -195,11 +195,11 @@ memory_error_message (enum target_xfer_status err, case TARGET_XFER_E_IO: /* Actually, address between memaddr and memaddr + len was out of bounds. */ - return xstrprintf (_("Cannot access memory at address %s"), - paddress (gdbarch, memaddr)); + return string_printf (_("Cannot access memory at address %s"), + paddress (gdbarch, memaddr)); case TARGET_XFER_UNAVAILABLE: - return xstrprintf (_("Memory at address %s unavailable."), - paddress (gdbarch, memaddr)); + return string_printf (_("Memory at address %s unavailable."), + paddress (gdbarch, memaddr)); default: internal_error (__FILE__, __LINE__, "unhandled target_xfer_status: %s (%s)", @@ -213,12 +213,10 @@ memory_error_message (enum target_xfer_status err, void memory_error (enum target_xfer_status err, CORE_ADDR memaddr) { - char *str; enum errors exception = GDB_NO_ERROR; /* Build error string. */ - str = memory_error_message (err, target_gdbarch (), memaddr); - make_cleanup (xfree, str); + std::string str = memory_error_message (err, target_gdbarch (), memaddr); /* Choose the right error to throw. */ switch (err) @@ -232,7 +230,7 @@ memory_error (enum target_xfer_status err, CORE_ADDR memaddr) } /* Throw it. */ - throw_error (exception, ("%s"), str); + throw_error (exception, ("%s"), str.c_str ()); } /* Helper function. */ diff --git a/gdb/gdbcore.h b/gdb/gdbcore.h index 87f3dcd..a25a231 100644 --- a/gdb/gdbcore.h +++ b/gdb/gdbcore.h @@ -37,11 +37,11 @@ extern int have_core_file_p (void); extern void memory_error (enum target_xfer_status status, CORE_ADDR memaddr); -/* The string 'memory_error' would use as exception message. Space - for the result is malloc'd, caller must free. */ +/* The string 'memory_error' would use as exception message. */ -extern char *memory_error_message (enum target_xfer_status err, - struct gdbarch *gdbarch, CORE_ADDR memaddr); +extern std::string memory_error_message (enum target_xfer_status err, + struct gdbarch *gdbarch, + CORE_ADDR memaddr); /* Like target_read_memory, but report an error if can't read. */ diff --git a/gdb/valprint.c b/gdb/valprint.c index eef99b1..5b02e2f 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -2988,13 +2988,10 @@ val_print_string (struct type *elttype, const char *encoding, if (err != 0) { - char *str; - - str = memory_error_message (TARGET_XFER_E_IO, gdbarch, addr); - make_cleanup (xfree, str); + std::string str = memory_error_message (TARGET_XFER_E_IO, gdbarch, addr); fprintf_filtered (stream, ""); }