aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp
diff options
context:
space:
mode:
authorJohn Brawn <john.brawn@arm.com>2024-08-04 13:27:12 +0100
committerGitHub <noreply@github.com>2024-08-04 13:27:12 +0100
commitb32aac4358c1f6639de7c453656cd74fbab75d71 (patch)
treedcef367ee6904712ea952d335277d6304131ef8b /llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp
parent2fe08ed35a968dcfd797cbd31ae56bb0b1447faf (diff)
downloadllvm-b32aac4358c1f6639de7c453656cd74fbab75d71.zip
llvm-b32aac4358c1f6639de7c453656cd74fbab75d71.tar.gz
llvm-b32aac4358c1f6639de7c453656cd74fbab75d71.tar.bz2
[libunwind] Add GCS support for AArch64 (#99335)
AArch64 GCS (Guarded Control Stack) is similar enough to CET that we can re-use the existing code that is guarded by _LIBUNWIND_USE_CET, so long as we also add defines to locate the GCS stack and pop the entries from it. We also need the jumpto function to exit using br instead of ret, to prevent it from popping the GCS stack. GCS support is enabled using the LIBUNWIND_ENABLE_GCS cmake option. This enables -mbranch-protection=standard, which enables GCS. For the places we need to use GCS instructions we use the target attribute, as there's not a command-line option to enable a specific architecture extension.
Diffstat (limited to 'llvm/lib/ToolDrivers/llvm-lib/LibDriver.cpp')
0 files changed, 0 insertions, 0 deletions