From 124e13d9e753ef307d6fe478e2cd6dd738de1a0f Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Thu, 18 Jun 2015 13:12:39 -0400 Subject: remote: consider addressable unit size when reading/writing memory Adapt code in remote.c to take into account addressable unit size when reading/writing memory. A few variables are renamed and suffixed with _bytes or _units. This way, it's more obvious if there is any place where we add or compare values of different kinds (which would be a mistake). gdb/ChangeLog: * common/rsp-low.c (needs_escaping): New. (remote_escape_output): Add unit_size parameter. Refactor to support multi-byte addressable units. Rename parameters. * common/rsp-low.h (remote_escape_output): Add unit_size parameter and rename others. Update doc. * remote.c (align_for_efficient_write): New. (remote_write_bytes_aux): Add unit_size parameter and use it. Rename some variables. Update doc. (remote_xfer_partial): Get unit size and use it. (remote_read_bytes_1): Add unit_size parameter and use it. Rename some variables. Update doc. (remote_write_bytes): Same. (remote_xfer_live_readonly_partial): Same. (remote_read_bytes): Same. (remote_flash_write): Update call to remote_write_bytes_aux. (remote_write_qxfer): Update call to remote_escape_output. (remote_search_memory): Same. (remote_hostio_pwrite): Same. gdb/gdbserver/ChangeLog: * server.c (write_qxfer_response): Update call to remote_escape_output. --- gdb/common/rsp-low.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'gdb/common/rsp-low.h') diff --git a/gdb/common/rsp-low.h b/gdb/common/rsp-low.h index d62f67e..f45d0ae 100644 --- a/gdb/common/rsp-low.h +++ b/gdb/common/rsp-low.h @@ -59,17 +59,17 @@ extern int hex2bin (const char *hex, gdb_byte *bin, int count); extern int bin2hex (const gdb_byte *bin, char *hex, int count); -/* Convert BUFFER, binary data at least LEN bytes long, into escaped - binary data in OUT_BUF. Set *OUT_LEN to the length of the data - encoded in OUT_BUF, and return the number of bytes in OUT_BUF - (which may be more than *OUT_LEN due to escape characters). The - total number of bytes in the output buffer will be at most - OUT_MAXLEN. This function properly escapes '*', and so is suitable +/* Convert BUFFER, binary data at least LEN_UNITS addressable memory units + long, into escaped binary data in OUT_BUF. Only copy memory units that fit + completely in OUT_BUF. Set *OUT_LEN_UNITS to the number of units from + BUFFER successfully encoded in OUT_BUF, and return the number of bytes used + in OUT_BUF. The total number of bytes in the output buffer will be at most + OUT_MAXLEN_BYTES. This function properly escapes '*', and so is suitable for the server side as well as the client. */ -extern int remote_escape_output (const gdb_byte *buffer, int len, - gdb_byte *out_buf, int *out_len, - int out_maxlen); +extern int remote_escape_output (const gdb_byte *buffer, int len_units, + int unit_size, gdb_byte *out_buf, + int *out_len_units, int out_maxlen_bytes); /* Convert BUFFER, escaped data LEN bytes long, into binary data in OUT_BUF. Return the number of bytes written to OUT_BUF. -- cgit v1.1