diff options
author | Tom Tromey <tromey@redhat.com> | 2014-01-18 14:32:47 -0700 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2014-02-12 09:59:14 -0700 |
commit | 9c3d65319a230a106392e4b67c8c89c8f5e2929f (patch) | |
tree | 857987f9c4847e816d518f3641ba091d07a768e4 /gdb/common/rsp-low.h | |
parent | 01fd3ea573324b8248efbb236d994420641e3d32 (diff) | |
download | gdb-9c3d65319a230a106392e4b67c8c89c8f5e2929f.zip gdb-9c3d65319a230a106392e4b67c8c89c8f5e2929f.tar.gz gdb-9c3d65319a230a106392e4b67c8c89c8f5e2929f.tar.bz2 |
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.
Diffstat (limited to 'gdb/common/rsp-low.h')
-rw-r--r-- | gdb/common/rsp-low.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/gdb/common/rsp-low.h b/gdb/common/rsp-low.h new file mode 100644 index 0000000..161c4a2 --- /dev/null +++ b/gdb/common/rsp-low.h @@ -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 */ |