Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom Tromey <tom@tromey.com>
To: gdb-patches@sourceware.org
Cc: Tom Tromey <tom@tromey.com>
Subject: [RFA 06/11] Change some gdb_* functions to use a std::string out parameter
Date: Tue, 12 Sep 2017 18:57:00 -0000	[thread overview]
Message-ID: <20170912185736.20436-7-tom@tromey.com> (raw)
In-Reply-To: <20170912185736.20436-1-tom@tromey.com>

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  <tom@tromey.com>

	* 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  <tom@tromey.com>
 
+	* 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  <tom@tromey.com>
+
 	* mi/mi-parse.c (mi_parse): Remove unused declaration.
 
 2017-09-12  Tom Tromey  <tom@tromey.com>
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)
-- 
2.9.4


  parent reply	other threads:[~2017-09-12 18:57 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-12 18:57 more cleanup removal, particularly in MI Tom Tromey
2017-09-12 18:57 ` [RFA 10/11] Use a std::vector for ada_exceptions_list Tom Tromey
2017-09-28 10:20   ` Pedro Alves
2017-09-12 18:57 ` [RFA 02/11] Remove cleanups from mi_cmd_break_insert_1 Tom Tromey
2017-09-28  9:24   ` Pedro Alves
2017-09-28 19:57     ` Tom Tromey
2017-09-29  1:40     ` Tom Tromey
2017-09-29 10:21       ` Pedro Alves
2017-09-12 18:57 ` [RFA 04/11] Don't copy a string in mi_cmd_disassemble Tom Tromey
2017-09-28  9:40   ` Pedro Alves
2017-09-12 18:57 ` [RFA 05/11] Remove unused declaration Tom Tromey
2017-09-28  9:40   ` Pedro Alves
2017-09-12 18:57 ` Tom Tromey [this message]
2017-09-28  9:42   ` [RFA 06/11] Change some gdb_* functions to use a std::string out parameter Pedro Alves
2017-09-28 19:58     ` Tom Tromey
2017-09-12 18:57 ` [RFA 11/11] Change captured_mi_execute_command to use scoped_restore Tom Tromey
2017-09-28 10:35   ` Pedro Alves
2017-09-12 18:57 ` [RFA 08/11] Use string and unique_xmalloc_ptr in mi-main.c Tom Tromey
2017-09-28  9:57   ` Pedro Alves
2017-09-29  1:42     ` Tom Tromey
2017-09-29 10:23       ` Pedro Alves
2017-09-12 18:57 ` [RFA 07/11] Use gdb::byte_vector in mi_cmd_data_write_memory_bytes Tom Tromey
2017-09-28  9:46   ` Pedro Alves
2017-09-12 18:57 ` [RFA 09/11] Use std::set in mi-main.c Tom Tromey
2017-09-28 10:10   ` Pedro Alves
2017-10-02 13:05     ` Simon Marchi
2017-10-03 11:21   ` Simon Marchi
2017-10-03 11:39     ` Tom Tromey
2017-09-12 18:59 ` [RFA 01/11] Remove make_cleanup_defer_target_commit_resume Tom Tromey
2017-09-28  9:17   ` Pedro Alves
2017-09-12 19:03 ` [RFA 03/11] Remove cleanups from mi-cmd-var.c Tom Tromey
2017-09-28  9:36   ` Pedro Alves
2017-09-29  1:40     ` Tom Tromey
2017-09-29 10:22       ` Pedro Alves
2017-09-23 16:15 ` more cleanup removal, particularly in MI Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170912185736.20436-7-tom@tromey.com \
    --to=tom@tromey.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox