AArch64: Report tag violation error information
authorLuis Machado <luis.machado@linaro.org>
Mon, 15 Jun 2020 18:44:20 +0000 (15:44 -0300)
committerLuis Machado <luis.machado@linaro.org>
Wed, 24 Mar 2021 17:56:07 +0000 (14:56 -0300)
commitcf44c9fa1b94837b093752854370b9c2db531264
treece9e1af6df3ea2bca1d89937ec62dc4168c5aa00
parentb4a7d4fcfef4e0ca3c5de52efbaf33c1c98295eb
AArch64: Report tag violation error information

Whenever a memory tag violation occurs, we get a SIGSEGV. Additional
information can be obtained through the siginfo data structure.

For AArch64 the Linux kernel may expose the fault address and tag
information, if we have a synchronous event. Otherwise there is
no fault address available.

The synchronous event looks like this:

--
(gdb) continue
Continuing.

Program received signal SIGSEGV, Segmentation fault
Memory tag violation while accessing address 0x0500fffff7ff8000
Allocation tag 0x1.
Logical tag 0x5
--

The asynchronous event looks like this:

--
(gdb) continue
Continuing.

Program received signal SIGSEGV, Segmentation fault
Memory tag violation
Fault address unavailable.
--

gdb/ChangeLog:

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

* aarch64-linux-tdep.c
(aarch64_linux_report_signal_info): New function.
(aarch64_linux_init_abi): Register
aarch64_linux_report_signal_info as the report_signal_info hook.
* arch/aarch64-linux.h (SEGV_MTEAERR): Define.
(SEGV_MTESERR): Define.
gdb/ChangeLog
gdb/aarch64-linux-tdep.c
gdb/arch/aarch64-mte-linux.h