New target methods for memory tagging support
authorLuis Machado <luis.machado@linaro.org>
Fri, 19 Jun 2020 20:31:23 +0000 (17:31 -0300)
committerLuis Machado <luis.machado@linaro.org>
Wed, 24 Mar 2021 17:47:05 +0000 (14:47 -0300)
commitdbe692af2d1814100748b18a5dd70214e8611107
treec5f5e256ce4084fb482161faede8e647960742ba
parent9a182d0461cc34912da51f445a242b392389edd6
New target methods for memory tagging support

This patch starts adding some of the generic pieces to accomodate memory
tagging.

We have three new target methods:

- supports_memory_tagging: Checks if the target supports memory tagging. This
  defaults to false for targets that don't support memory tagging.

- fetch_memtags: Fetches the allocation tags associated with a particular
  memory range [address, address + length).

  The default is to return 0 without returning any tags. This should only
  be called if memory tagging is supported.

- store_memtags: Stores a set of allocation tags for a particular memory
  range [address, address + length).

  The default is to return 0. This should only
  be called if memory tagging is supported.

gdb/ChangeLog:

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

* remote.c (remote_target) <supports_memory_tagging>: New method
override.
<fetch_memtags>: New method override.
<store_memtags>: New method override.
(remote_target::supports_memory_tagging): New method.
(remote_target::fetch_memtags): New method.
(remote_target::store_memtags): New method.
* target-delegates.c: Regenerate.
* target.h (struct target_ops) <supports_memory_tagging>: New virtual
method.
<fetch_memtags>: New virtual method.
<store_memtags>: New virtual method.
(target_supports_memory_tagging): Define.
(target_fetch_memtags): Define.
(target_store_memtags): Define.
* target-debug.h (target_debug_print_size_t)
(target_debug_print_const_gdb_byte_vector_r)
(target_debug_print_gdb_byte_vector_r): New functions.
gdb/ChangeLog
gdb/remote.c
gdb/target-debug.h
gdb/target-delegates.c
gdb/target.h