[RFA] Remove a cleanup from remote.c

Message ID 20180503190436.17404-1-tom@tromey.com
State New
Headers show
Series
  • [RFA] Remove a cleanup from remote.c
Related show

Commit Message

Tom Tromey May 3, 2018, 7:04 p.m.
This removes a cleanup from remote.c by using std::string to construct
the qSupported packet.

Tested by the buildbot.

ChangeLog
2018-05-03  Tom Tromey  <tom@tromey.com>

	* remote.c (remote_query_supported_append): Change type.
	(remote_check_symbols): Update.
---
 gdb/ChangeLog |  5 +++++
 gdb/remote.c  | 42 +++++++++++++++++++-----------------------
 2 files changed, 24 insertions(+), 23 deletions(-)

-- 
2.13.6

Comments

Pedro Alves May 4, 2018, 9:16 a.m. | #1
On 05/03/2018 08:04 PM, Tom Tromey wrote:
> This removes a cleanup from remote.c by using std::string to construct

> the qSupported packet.

> 

> Tested by the buildbot.

> 

> ChangeLog

> 2018-05-03  Tom Tromey  <tom@tromey.com>

> 

> 	* remote.c (remote_query_supported_append): Change type.

> 	(remote_check_symbols): Update.


OK.

Thanks,
Pedro Alves

Patch

diff --git a/gdb/remote.c b/gdb/remote.c
index 89cba54667..66099cfe16 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -4957,13 +4957,12 @@  register_remote_support_xml (const char *xml)
 #endif
 }
 
-static char *
-remote_query_supported_append (char *msg, const char *append)
+static void
+remote_query_supported_append (std::string *msg, const char *append)
 {
-  if (msg)
-    return reconcat (msg, msg, ";", append, (char *) NULL);
-  else
-    return xstrdup (append);
+  if (!msg->empty ())
+    msg->append (";");
+  msg->append (append);
 }
 
 static void
@@ -4984,48 +4983,45 @@  remote_query_supported (void)
   rs->buf[0] = 0;
   if (packet_support (PACKET_qSupported) != PACKET_DISABLE)
     {
-      char *q = NULL;
-      struct cleanup *old_chain = make_cleanup (free_current_contents, &q);
+      std::string q;
 
       if (packet_set_cmd_state (PACKET_multiprocess_feature) != AUTO_BOOLEAN_FALSE)
-	q = remote_query_supported_append (q, "multiprocess+");
+	remote_query_supported_append (&q, "multiprocess+");
 
       if (packet_set_cmd_state (PACKET_swbreak_feature) != AUTO_BOOLEAN_FALSE)
-	q = remote_query_supported_append (q, "swbreak+");
+	remote_query_supported_append (&q, "swbreak+");
       if (packet_set_cmd_state (PACKET_hwbreak_feature) != AUTO_BOOLEAN_FALSE)
-	q = remote_query_supported_append (q, "hwbreak+");
+	remote_query_supported_append (&q, "hwbreak+");
 
-      q = remote_query_supported_append (q, "qRelocInsn+");
+      remote_query_supported_append (&q, "qRelocInsn+");
 
       if (packet_set_cmd_state (PACKET_fork_event_feature)
 	  != AUTO_BOOLEAN_FALSE)
-	q = remote_query_supported_append (q, "fork-events+");
+	remote_query_supported_append (&q, "fork-events+");
       if (packet_set_cmd_state (PACKET_vfork_event_feature)
 	  != AUTO_BOOLEAN_FALSE)
-	q = remote_query_supported_append (q, "vfork-events+");
+	remote_query_supported_append (&q, "vfork-events+");
       if (packet_set_cmd_state (PACKET_exec_event_feature)
 	  != AUTO_BOOLEAN_FALSE)
-	q = remote_query_supported_append (q, "exec-events+");
+	remote_query_supported_append (&q, "exec-events+");
 
       if (packet_set_cmd_state (PACKET_vContSupported) != AUTO_BOOLEAN_FALSE)
-	q = remote_query_supported_append (q, "vContSupported+");
+	remote_query_supported_append (&q, "vContSupported+");
 
       if (packet_set_cmd_state (PACKET_QThreadEvents) != AUTO_BOOLEAN_FALSE)
-	q = remote_query_supported_append (q, "QThreadEvents+");
+	remote_query_supported_append (&q, "QThreadEvents+");
 
       if (packet_set_cmd_state (PACKET_no_resumed) != AUTO_BOOLEAN_FALSE)
-	q = remote_query_supported_append (q, "no-resumed+");
+	remote_query_supported_append (&q, "no-resumed+");
 
       /* Keep this one last to work around a gdbserver <= 7.10 bug in
 	 the qSupported:xmlRegisters=i386 handling.  */
       if (remote_support_xml != NULL
 	  && packet_support (PACKET_qXfer_features) != PACKET_DISABLE)
-	q = remote_query_supported_append (q, remote_support_xml);
-
-      q = reconcat (q, "qSupported:", q, (char *) NULL);
-      putpkt (q);
+	remote_query_supported_append (&q, remote_support_xml);
 
-      do_cleanups (old_chain);
+      q = "qSupported:" + q;
+      putpkt (q.c_str ());
 
       getpkt (&rs->buf, &rs->buf_size, 0);