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`.
This commit is contained in:
Andrew Burgess 2018-12-31 14:05:09 +00:00
parent 592d8c0a5d
commit 66644cd32b
2 changed files with 16 additions and 10 deletions

View File

@ -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.

View File

@ -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);
}