[AArch64] Make gdbserver register set selection dynamic
authorLuis Machado <luis.machado@linaro.org>
Fri, 29 Oct 2021 17:54:36 +0000 (14:54 -0300)
committerLuis Machado <luis.machado@linaro.org>
Wed, 3 Nov 2021 12:50:53 +0000 (09:50 -0300)
commit7fd8546853e3f0333ba8d8238413aba7eb45c69f
tree2714fa190e169b928e56618cfdaaaa45d32117b8
parent5fff6115feae7aaa23c0ae8d144e1c8418ee2ee1
[AArch64] Make gdbserver register set selection dynamic

The current register set selection mechanism for AArch64 is static, based
on a pre-populated array of register sets.

This means that we might potentially probe register sets that are not
available. This is OK if the kernel errors out during ptrace, but probing the
tag_ctl register, for example, does not result in a ptrace error if the kernel
supports the tagged address ABI but not MTE (PR 28355).

Making the register set selection dynamic, based on feature checks, solves
this and simplifies the code a bit. It allows us to list all of the register
sets only once, and pick and choose based on HWCAP/HWCAP2 or other properties.

I plan to backport this fix to GDB 11 as well.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=28355
gdb/arch/aarch64.h
gdbserver/linux-aarch64-low.cc