From patchwork Tue Sep 12 18:57:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 22852 Received: (qmail 117039 invoked by alias); 12 Sep 2017 18:57:50 -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 116800 invoked by uid 89); 12 Sep 2017 18:57:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.8 required=5.0 tests=AWL, 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= 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, 12 Sep 2017 18:57:46 +0000 Received: from cmgw2 (unknown [10.0.90.83]) by gproxy5.mail.unifiedlayer.com (Postfix) with ESMTP id 3C80F140431 for ; Tue, 12 Sep 2017 12:57:45 -0600 (MDT) Received: from box522.bluehost.com ([74.220.219.122]) by cmgw2 with id 8ixh1w01B2f2jeq01ixk4F; Tue, 12 Sep 2017 12:57:45 -0600 X-Authority-Analysis: v=2.2 cv=dZfw5Tfe c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=2JCJgTwv5E4A:10 a=zstS-IiYAAAA:8 a=W-xXHtI-jCeyqohk46QA:9 a=C9k71aAyfXgAnYNX:21 a=MMk-xnY_YfTbMF9e:21 a=4G6NA9xxw8l3yy4pmD5M:22 Received: from 75-166-76-94.hlrn.qwest.net ([75.166.76.94]:46142 helo=bapiya.Home) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.87) (envelope-from ) id 1drqNR-001eRR-NE; Tue, 12 Sep 2017 12:57:41 -0600 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA 06/11] Change some gdb_* functions to use a std::string out parameter Date: Tue, 12 Sep 2017 12:57:31 -0600 Message-Id: <20170912185736.20436-7-tom@tromey.com> In-Reply-To: <20170912185736.20436-1-tom@tromey.com> References: <20170912185736.20436-1-tom@tromey.com> X-BWhitelist: no X-Exim-ID: 1drqNR-001eRR-NE X-Source-Sender: 75-166-76-94.hlrn.qwest.net (bapiya.Home) [75.166.76.94]:46142 X-Source-Auth: tom+tromey.com X-Email-Count: 7 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== X-Local-Domain: yes This changes a few gdb_* functions to use a std::string out parameter. Perhaps these functions should just go away entirely; I think they're vesitiges of a now-defunct libgdb plan. ChangeLog 2017-09-12 Tom Tromey * thread.c (gdb_list_thread_ids, gdb_thread_select): Change error_message to std::string. * mi/mi-main.c (mi_cmd_thread_select): Use std::string. (mi_cmd_thread_list_ids): Likewise. * gdb.h (gdb_breakpoint_query, gdb_thread_select) (gdb_list_thread_ids): Update. * exceptions.h (catch_exceptions_with_msg): Update. * exceptions.c (catch_exceptions_with_msg): Change error_message to std::string. * breakpoint.c (enum gdb_rc): Change error_message to std::string. --- gdb/ChangeLog | 14 ++++++++++++++ gdb/breakpoint.c | 2 +- gdb/exceptions.c | 11 +++-------- gdb/exceptions.h | 2 +- gdb/gdb.h | 6 +++--- gdb/mi/mi-main.c | 14 ++++---------- gdb/thread.c | 4 ++-- 7 files changed, 28 insertions(+), 25 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e1c409d..47632fa 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,19 @@ 2017-09-12 Tom Tromey + * thread.c (gdb_list_thread_ids, gdb_thread_select): Change + error_message to std::string. + * mi/mi-main.c (mi_cmd_thread_select): Use std::string. + (mi_cmd_thread_list_ids): Likewise. + * gdb.h (gdb_breakpoint_query, gdb_thread_select) + (gdb_list_thread_ids): Update. + * exceptions.h (catch_exceptions_with_msg): Update. + * exceptions.c (catch_exceptions_with_msg): Change error_message + to std::string. + * breakpoint.c (enum gdb_rc): Change error_message to + std::string. + +2017-09-12 Tom Tromey + * mi/mi-parse.c (mi_parse): Remove unused declaration. 2017-09-12 Tom Tromey diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 235dab4..4c58a8c 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -6750,7 +6750,7 @@ do_captured_breakpoint_query (struct ui_out *uiout, void *data) enum gdb_rc gdb_breakpoint_query (struct ui_out *uiout, int bnum, - char **error_message) + std::string *error_message) { struct captured_breakpoint_query_args args; diff --git a/gdb/exceptions.c b/gdb/exceptions.c index f9a80a0..0385bec 100644 --- a/gdb/exceptions.c +++ b/gdb/exceptions.c @@ -167,7 +167,7 @@ int catch_exceptions_with_msg (struct ui_out *func_uiout, catch_exceptions_ftype *func, void *func_args, - char **gdberrmsg, + std::string *gdberrmsg, return_mask mask) { struct gdb_exception exception = exception_none; @@ -206,13 +206,8 @@ catch_exceptions_with_msg (struct ui_out *func_uiout, /* If caller wants a copy of the low-level error message, make one. This is used in the case of a silent error whereby the caller may optionally want to issue the message. */ - if (gdberrmsg != NULL) - { - if (exception.message != NULL) - *gdberrmsg = xstrdup (exception.message); - else - *gdberrmsg = NULL; - } + if (gdberrmsg != NULL && exception.message != NULL) + *gdberrmsg = exception.message; return exception.reason; } return val; diff --git a/gdb/exceptions.h b/gdb/exceptions.h index b2cdee3..e1a517b 100644 --- a/gdb/exceptions.h +++ b/gdb/exceptions.h @@ -73,7 +73,7 @@ typedef void (catch_exception_ftype) (struct ui_out *ui_out, void *args); extern int catch_exceptions_with_msg (struct ui_out *uiout, catch_exceptions_ftype *func, void *func_args, - char **gdberrmsg, + std::string *gdberrmsg, return_mask mask); /* If CATCH_ERRORS_FTYPE throws an error, catch_errors() returns zero diff --git a/gdb/gdb.h b/gdb/gdb.h index ac1e683..9403823 100644 --- a/gdb/gdb.h +++ b/gdb/gdb.h @@ -45,14 +45,14 @@ enum gdb_rc { /* Print the specified breakpoint on GDB_STDOUT. (Eventually this function will ``print'' the object on ``output''). */ enum gdb_rc gdb_breakpoint_query (struct ui_out *uiout, int bnum, - char **error_message); + std::string *error_message); /* Switch thread and print notification. */ enum gdb_rc gdb_thread_select (struct ui_out *uiout, char *tidstr, - char **error_message); + std::string *error_message); /* Print a list of known thread ids. */ enum gdb_rc gdb_list_thread_ids (struct ui_out *uiout, - char **error_message); + std::string *error_message); #endif diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 0ee2605..d01f578 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -554,7 +554,7 @@ void mi_cmd_thread_select (const char *command, char **argv, int argc) { enum gdb_rc rc; - char *mi_error_message; + std::string mi_error_message; ptid_t previous_ptid = inferior_ptid; if (argc != 1) @@ -564,10 +564,7 @@ mi_cmd_thread_select (const char *command, char **argv, int argc) /* If thread switch did not succeed don't notify or print. */ if (rc == GDB_RC_FAIL) - { - make_cleanup (xfree, mi_error_message); - error ("%s", mi_error_message); - } + error ("%s", mi_error_message.c_str ()); print_selected_thread_frame (current_uiout, USER_SELECTED_THREAD | USER_SELECTED_FRAME); @@ -584,7 +581,7 @@ void mi_cmd_thread_list_ids (const char *command, char **argv, int argc) { enum gdb_rc rc; - char *mi_error_message; + std::string mi_error_message; if (argc != 0) error (_("-thread-list-ids: No arguments required.")); @@ -592,10 +589,7 @@ mi_cmd_thread_list_ids (const char *command, char **argv, int argc) rc = gdb_list_thread_ids (current_uiout, &mi_error_message); if (rc == GDB_RC_FAIL) - { - make_cleanup (xfree, mi_error_message); - error ("%s", mi_error_message); - } + error ("%s", mi_error_message.c_str ()); } void diff --git a/gdb/thread.c b/gdb/thread.c index 2539d43..a378c13 100644 --- a/gdb/thread.c +++ b/gdb/thread.c @@ -744,7 +744,7 @@ do_captured_list_thread_ids (struct ui_out *uiout, void *arg) /* Official gdblib interface function to get a list of thread ids and the total number. */ enum gdb_rc -gdb_list_thread_ids (struct ui_out *uiout, char **error_message) +gdb_list_thread_ids (struct ui_out *uiout, std::string *error_message) { if (catch_exceptions_with_msg (uiout, do_captured_list_thread_ids, NULL, error_message, RETURN_MASK_ALL) < 0) @@ -2056,7 +2056,7 @@ print_selected_thread_frame (struct ui_out *uiout, } enum gdb_rc -gdb_thread_select (struct ui_out *uiout, char *tidstr, char **error_message) +gdb_thread_select (struct ui_out *uiout, char *tidstr, std::string *error_message) { if (catch_exceptions_with_msg (uiout, do_captured_thread_select, tidstr, error_message, RETURN_MASK_ALL) < 0)