[binutils-gdb] gdb/remote: Remove a cleanup in remote_check_symbols

Andrew Burgess aburgess@sourceware.org
Thu Jan 3 21:26:00 GMT 2019


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=66644cd32ba63e7fda70e455766b438631ec0b61

commit 66644cd32ba63e7fda70e455766b438631ec0b61
Author: Andrew Burgess <andrew.burgess@embecosm.com>
Date:   Mon Dec 31 14:05:09 2018 +0000

    gdb/remote: Remove a cleanup in remote_check_symbols
    
    Convert one of the variables that requires a cleanup from a 'char *'
    to a 'gdb::char_vector' in remote_target::remote_check_symbols.
    
    Tested on x86-64/Linux with target_board native-gdbserver and
    native-extended-gdbserver.
    
    gdb/ChangeLog:
    
    	* remote.c (remote_target::remote_check_symbols): Convert `msg` to
    	gdb::char_vector, remove cleanup, and update uses of `msg`.

Diff:
---
 gdb/ChangeLog |  5 +++++
 gdb/remote.c  | 21 +++++++++++----------
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7d5fc45..4850082 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2019-01-03  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* remote.c (remote_target::remote_check_symbols): Convert `msg` to
+	gdb::char_vector, remove cleanup, and update uses of `msg`.
+
 2019-01-03  Jim Wilson  <jimw@sifive.com>
 
 	* riscv-tdep.c (riscv_freg_feature): Drop s0 name from f8.
diff --git a/gdb/remote.c b/gdb/remote.c
index efed998..324ed46 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -4883,7 +4883,7 @@ init_all_packet_configs (void)
 void
 remote_target::remote_check_symbols ()
 {
-  char *msg, *reply, *tmp;
+  char *reply, *tmp;
   int end;
   long reply_size;
   struct cleanup *old_chain;
@@ -4905,10 +4905,9 @@ remote_target::remote_check_symbols ()
 
   /* Allocate a message buffer.  We can't reuse the input buffer in RS,
      because we need both at the same time.  */
-  msg = (char *) xmalloc (get_remote_packet_size ());
-  old_chain = make_cleanup (xfree, msg);
+  gdb::char_vector msg (get_remote_packet_size ());
   reply = (char *) xmalloc (get_remote_packet_size ());
-  make_cleanup (free_current_contents, &reply);
+  old_chain = make_cleanup (free_current_contents, &reply);
   reply_size = get_remote_packet_size ();
 
   /* Invite target to request symbol lookups.  */
@@ -4922,11 +4921,13 @@ remote_target::remote_check_symbols ()
       struct bound_minimal_symbol sym;
 
       tmp = &reply[8];
-      end = hex2bin (tmp, (gdb_byte *) msg, strlen (tmp) / 2);
+      end = hex2bin (tmp, reinterpret_cast <gdb_byte *> (msg.data ()),
+		     strlen (tmp) / 2);
       msg[end] = '\0';
-      sym = lookup_minimal_symbol (msg, NULL, NULL);
+      sym = lookup_minimal_symbol (msg.data (), NULL, NULL);
       if (sym.minsym == NULL)
-	xsnprintf (msg, get_remote_packet_size (), "qSymbol::%s", &reply[8]);
+	xsnprintf (msg.data (), get_remote_packet_size (), "qSymbol::%s",
+		   &reply[8]);
       else
 	{
 	  int addr_size = gdbarch_addr_bit (target_gdbarch ()) / 8;
@@ -4938,11 +4939,11 @@ remote_target::remote_check_symbols ()
 							 sym_addr,
 							 current_top_target ());
 
-	  xsnprintf (msg, get_remote_packet_size (), "qSymbol:%s:%s",
+	  xsnprintf (msg.data (), get_remote_packet_size (), "qSymbol:%s:%s",
 		     phex_nz (sym_addr, addr_size), &reply[8]);
 	}
-  
-      putpkt (msg);
+
+      putpkt (msg.data ());
       getpkt (&reply, &reply_size, 0);
     }



More information about the Gdb-cvs mailing list