AArch64 SVE register infos and core file support
authorMuhammad Omair Javaid <omair.javaid@linaro.org>
Wed, 8 Jul 2020 01:44:12 +0000 (06:44 +0500)
committerMuhammad Omair Javaid <omair.javaid@linaro.org>
Mon, 20 Jul 2020 12:21:16 +0000 (17:21 +0500)
commit7e017de0ad62dfd3f373354fc47b0e39c0fef657
treec1175de188a09ee862d628d7cef20d607722b9ce
parentebbdecdd57160fb4816b365f79c1185d68a94c0f
AArch64 SVE register infos and core file support

Summary:
This patch adds support for AArch64 SVE register infos description and
core file register access.

AArch64 SVE is a an optional extension of Arm v8.3-a architecture. It
has introduced 32 new vector registers Z, 16 predicate P registers and FFR
predicate register. These registers have fixed names but can dynamically
be configured to different size based on underlying OS configuration.

This patch adds register info struct that describes SVE register infos and
also provides RegisterContextPOSIXCore_arm64 routines to access SVE registers.

This patch also introduces a mechanism to configure SVE register sizes and
offsets at startup before exchanging register information across gdb-remote.

TestLinuxCore.py has been updated to include testing of SVE core files.

Reviewers: labath, clayborg, jankratochvil, jasonmolenda, rengolin

Reviewed By: labath

Subscribers: tschuett, kristof.beyls, danielkiss, lldb-commits

Differential Revision: https://reviews.llvm.org/D77047
12 files changed:
lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm64.cpp
lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_arm64.h
lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.cpp
lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h
lldb/source/Plugins/Process/Utility/RegisterInfos_arm64_sve.h [new file with mode: 0644]
lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm64.cpp
lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm64.h
lldb/source/Plugins/Process/elf-core/RegisterUtilities.h
lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py
lldb/test/API/functionalities/postmortem/elf-core/linux-aarch64-sve-fpsimd.core [new file with mode: 0644]
lldb/test/API/functionalities/postmortem/elf-core/linux-aarch64-sve-full.core [new file with mode: 0644]
lldb/test/API/functionalities/postmortem/elf-core/linux-aarch64-sve.c [new file with mode: 0644]