move some rsp bits into rsp-low.h

This moves various low-level remote serial protocol bits into
common/rsp-low.[ch].

This is as close to a pure move as possible.  There are some
redundancies remaining but those will be dealt with in a subsequent
patch.

Note that the two variants of remote_escape_output disagreed on the
treatment of "*".  On the theory that quoting cannot hurt but the
absence possibly can, I chose the gdbserver variant to be the
canonical one.

2014-02-12  Tom Tromey  <tromey@redhat.com>

	* tracepoint.c: Include rsp-low.h.
	* remote.h (hex2bin, bin2hex, unpack_varlen_hex): Don't declare.
	* remote.c: Include rsp-low.h.
	(hexchars, ishex, unpack_varlen_hex, pack_nibble, pack_hex_byte)
	(fromhex, hex2bin, tohex, bin2hex, remote_escape_output)
	(remote_unescape_input): Move to common/rsp-low.c.
	* common/rsp-low.h: New file.
	* common/rsp-low.c: New file.
	* Makefile.in (SFILES): Add common/rsp-low.c.
	(HFILES_NO_SRCDIR): Add common/rsp-low.h.
	(COMMON_OBS): Add rsp-low.o.
	(rsp-low.o): New target.

2014-02-12  Tom Tromey  <tromey@redhat.com>

	* tracepoint.c: Include rsp-low.h.
	* server.c: Include rsp-low.h.
	* remote-utils.h (convert_ascii_to_int, convert_int_to_ascii)
	(unhexify, hexify, remote_escape_output, unpack_varlen_hex): Don't
	declare.
	* remote-utils.c: Include rsp-low.h.
	(fromhex, hexchars, ishex, unhexify, tohex, hexify)
	(remote_escape_output, remote_unescape_input, unpack_varlen_hex)
	(convert_int_to_ascii, convert_ascii_to_int): Move to
	common/rsp-low.c.
	* regcache.c: Include rsp-low.h.
	* ax.c: Include rsp-low.h.
	* Makefile.in (SFILES): Add common/rsp-low.c.
	(OBS): Add rsp-low.o.
	(rsp-low.o): New target.
This commit is contained in:
Tom Tromey
2014-01-18 14:32:47 -07:00
parent 01fd3ea573
commit 9c3d65319a
15 changed files with 400 additions and 447 deletions

70
gdb/common/rsp-low.h Normal file
View File

@ -0,0 +1,70 @@
/* Low-level RSP routines for GDB, the GNU debugger.
Copyright (C) 1988-2014 Free Software Foundation, Inc.
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef COMMON_RSP_LOW_H
#define COMMON_RSP_LOW_H
/* Convert hex digit A to a number, or throw an exception. */
extern int fromhex (int a);
/* Convert number NIB to a hex digit. */
extern int tohex (int nib);
extern char *pack_nibble (char *buf, int nibble);
extern char *pack_hex_byte (char *pkt, int byte);
extern char *unpack_varlen_hex (char *buff, ULONGEST *result);
extern int hex2bin (const char *hex, gdb_byte *bin, int count);
extern int unhexify (char *bin, const char *hex, int count);
extern void convert_ascii_to_int (const char *from, unsigned char *to, int n);
extern int bin2hex (const gdb_byte *bin, char *hex, int count);
extern int hexify (char *hex, const char *bin, int count);
extern void convert_int_to_ascii (const unsigned char *from, char *to, int n);
/* 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
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);
/* Convert BUFFER, escaped data LEN bytes long, into binary data
in OUT_BUF. Return the number of bytes written to OUT_BUF.
Raise an error if the total number of bytes exceeds OUT_MAXLEN.
This function reverses remote_escape_output. */
extern int remote_unescape_input (const gdb_byte *buffer, int len,
gdb_byte *out_buf, int out_maxlen);
#endif /* COMMON_RSP_LOW_H */