GDB: doc: Document Linux AArch64 support for Guarded Control Stacks

Add NEWS entry and new sections to the "Configuration-Specific Information"
and "Standard Target Features" parts of the manual.
This commit is contained in:
Thiago Jung Bauermann
2025-06-13 23:26:23 -03:00
parent 0b77c299b3
commit 0e3a331e41
2 changed files with 86 additions and 0 deletions

View File

@@ -48,6 +48,9 @@
* Add record full support for rv64gc architectures * Add record full support for rv64gc architectures
* Debugging Linux programs that use AArch64 Guarded Control Stacks is now
supported.
* New commands * New commands
maintenance check psymtabs maintenance check psymtabs

View File

@@ -26992,6 +26992,32 @@ information automatically from the core file, and will show one of the above
messages depending on whether the synchronous or asynchronous mode is selected. messages depending on whether the synchronous or asynchronous mode is selected.
@xref{Memory Tagging}. @xref{Memory}. @xref{Memory Tagging}. @xref{Memory}.
@subsubsection AArch64 Guarded Control Stack
@cindex Guarded Control Stack, AArch64
@cindex GCS, AArch64
When @value{GDBN} is debugging the AArch64 architecture, the program is
using the feature Guarded Control Stack (GCS), the operating system kernel
is Linux and it supports GCS, @value{GDBN} will make a couple of special
registers --- @code{gcs_features_enabled} and @code{gcs_features_locked}
--- available through the @code{org.gnu.gdb.aarch64.gcs.linux} feature.
These registers expose some options that can be controlled at runtime and
emulate the @code{prctl} option @code{PR_SET_SHADOW_STACK_STATUS}. For
further information, see the
@uref{https://www.kernel.org/doc/html/latest/arch/arm64/gcs.html,ignored,
documentation} in the Linux kernel.
Naturally the Guarded Control Stack pointer at EL0 is also available,
as the @code{gcspr} register.
To aid debugging, @value{GDBN} will note when SIGSEGV signals are generated
as a result of a Guarded Control Stack error:
@smallexample
Program received signal SIGSEGV, Segmentation fault
Guarded Control Stack error.
@end smallexample
@node x86 @node x86
@subsection x86 @subsection x86
@@ -49505,6 +49531,63 @@ of bytes.
Extra registers are allowed in this feature, but they will not affect Extra registers are allowed in this feature, but they will not affect
@value{GDBN}. @value{GDBN}.
@subsubsection AArch64 GCS registers feature
The @samp{org.gnu.gdb.aarch64.gcs} feature is optional. If present, it
means the target supports Guarded Control Stacks and must contain the
following register:
@itemize @minus
@item
@code{gcspr}, which points to the thread's Guarded Control Stack. It is 64
bits in size and has a type of @samp{data_ptr}.
@end itemize
The @samp{org.gnu.gdb.aarch64.gcs.linux} feature is optional. If present,
then the @samp{org.gnu.gdb.aarch64.gcs} feature must also be present. The
@samp{org.gnu.gdb.aarch64.gcs.linux} feature represents facilities provided
by the Linux kernel for GCS support and should contain the following:
@itemize @minus
@item
@code{gcs_features_enabled} shows the features currently enabled via the
prctl or ptrace system calls. It is represented as if it were a 64-bit
register with a custom flags type.
@item
@code{gcs_features_locked} shows the features currently locked via the
prctl or ptrace system calls. It is represented as if it were a 64-bit
register with a custom flags type.
@end itemize
The custom flags type allows GDB to print a human-friendly
representation of the contents of @code{gcs_features_enabled} and
@code{gcs_features_locked} and should contain:
@itemize @minus
@item
@code{PR_SHADOW_STACK_ENABLE}
@item
@code{PR_SHADOW_STACK_WRITE}
@item
@code{PR_SHADOW_STACK_PUSH}
@end itemize
For further information, see the
@uref{https://www.kernel.org/doc/html/latest/arch/arm64/gcs.html,ignored,
documentation} in the Linux kernel.
Extra registers are allowed in these features, but they will not affect
@value{GDBN}.
@node ARC Features @node ARC Features
@subsection ARC Features @subsection ARC Features
@cindex target descriptions, ARC Features @cindex target descriptions, ARC Features