Go to file
Luis Machado 2c2e7f87a8 Add GDB-side remote target support for memory tagging
This patch adds memory tagging support to GDB's remote side, with
packet string checks, new packet support and an implementation of
the two new tags methods fetch_memtags and store_memtags.

GDBserver needs to know how to read/write allocation tags, since that is
done via ptrace.  It doesn't need to know about logical tags.

The new packets are:

qMemTags:<address>,<length>:<type>
--

Reads tags of the specified type from the address range
[<address>, <address + length>)

QMemTags:<address>,<length>:<type>:<uninterpreted tag bytes>
--
Writes the tags of specified type represented by the uninterpreted bytes to
the address range [<address>, <address + length>).

The interpretation of what to do with the tag bytes is up to the arch-specific
code.

Note that these new packets consider the case of packet size overflow as an
error, given the common use case is to read/write only a few memory tags at
a time.  Having to use a couple new packets for multi-part transfers wouldn't
make sense for the little use it would have.

gdb/ChangeLog:

2021-03-24  Luis Machado  <luis.machado@linaro.org>

	* remote.c (PACKET_memory_tagging_feature): New enum.
	(remote_memory_tagging_p): New function.
	(remote_protocol_features): New "memory-tagging" entry.
	(remote_target::remote_query_supported): Handle memory tagging
	support.
	(remote_target::supports_memory_tagging): Implement.
	(create_fetch_memtags_request, parse_fetch_memtags_reply)
	(create_store_memtags_request): New functions.
	(remote_target::fetch_memtags): Implement.
	(remote_target::store_memtags): Implement.
	(_initialize_remote): Add new "memory-tagging-feature"
	config command.
2021-03-24 14:48:25 -03:00
bfd Automatic date update in version.in 2021-03-24 00:00:06 +00:00
binutils Add startswith function and use it instead of CONST_STRNEQ. 2021-03-22 11:01:43 +01:00
config GCC_CET_HOST_FLAGS: Check if host supports multi-byte NOPs 2021-03-18 08:02:46 -07:00
contrib Import mklog.py from gcc repo 2020-09-25 10:24:44 -04:00
cpu Add Changelog entries and NEWS entries for 2.36 branch 2021-01-09 10:40:28 +00:00
elfcpp Add DWARF 5 support in gold. 2021-03-19 13:55:35 -07:00
etc Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
gas x86: derive opcode length from opcode value 2021-03-24 08:33:33 +01:00
gdb Add GDB-side remote target support for memory tagging 2021-03-24 14:48:25 -03:00
gdbserver gdbserver: convert the global dll list into a process_info field 2021-03-22 09:18:04 +01:00
gdbsupport Provide an inline startswith function in bfd.h 2021-03-21 23:00:32 +10:30
gnulib gnulib: update to 776af40e0 2021-02-05 13:35:20 -05:00
gold Use stdout when printing object file names for -t option. 2021-03-19 18:41:12 -07:00
gprof Regen Makefile.in for jobserver.m4 aclocal.m4 dependency 2021-01-13 22:06:02 +10:30
include elf: Rename EM_INTEL205 to EM_INTELGT 2021-03-19 05:58:46 -07:00
intl intl: turn LIBINTL into -L / -l form 2021-02-10 15:26:57 +00:00
ld Add startswith function and use it instead of CONST_STRNEQ. 2021-03-22 11:01:43 +01:00
libctf Provide an inline startswith function in bfd.h 2021-03-21 23:00:32 +10:30
libdecnumber Run autoreconf -vf throughout 2020-07-29 16:03:55 -04:00
libiberty GCC_CET_HOST_FLAGS: Check if host supports multi-byte NOPs 2021-03-18 08:02:46 -07:00
opcodes x86: derive opcode length from opcode value 2021-03-24 08:33:33 +01:00
readline Fix Readline 8.1 build on mingw 2021-03-02 13:42:37 -07:00
sim sim: rename BUILD_LDFLAGS to LDFLAGS_FOR_BUILD 2021-03-13 11:21:13 -05:00
texinfo
zlib GCC: Check if AR works with --plugin and rc 2021-01-11 16:26:51 -08:00
.cvsignore
.gitattributes
.gitignore Add gnu global outputs to .gitignore 2020-12-02 10:00:27 -05:00
ar-lib
ChangeLog Add install dependencies for ld -> bfd and libctf -> bfd 2021-03-18 12:40:40 +00:00
compile
config-ml.in
config.guess Update config.sub and config.guess 2021-01-05 15:55:59 +10:30
config.rpath
config.sub config.sub update broke powerpc-eabivle 2021-01-07 08:56:28 +10:30
configure Remove arm-symbianelf 2021-02-09 23:36:16 +10:30
configure.ac Remove arm-symbianelf 2021-02-09 23:36:16 +10:30
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4 GCC: Check if AR works with --plugin and rc 2021-01-11 16:26:51 -08:00
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS Move gdbserver to top level 2020-02-07 08:42:25 -07:00
Makefile.def Add install dependencies for ld -> bfd and libctf -> bfd 2021-03-18 12:40:40 +00:00
Makefile.in Add install dependencies for ld -> bfd and libctf -> bfd 2021-03-18 12:40:40 +00:00
Makefile.tpl Add missing changes to Makefile.tpl 2021-02-28 04:39:38 -08:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
multilib.am Merge autoconf / automake update changes from GCC. 2018-10-31 17:10:56 +00:00
README
README-maintainer-mode
setup.com
src-release.sh src-release: fix indentation 2021-01-12 18:19:20 -05:00
symlink-tree
test-driver
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.