]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
gdb/aarch64: record/replay support for LRCPC3
authorEzra Sitorus <ezra.sitorus@arm.com>
Mon, 1 Jun 2026 22:36:46 +0000 (23:36 +0100)
committerEzra Sitorus <ezra.sitorus@arm.com>
Mon, 1 Jun 2026 22:36:46 +0000 (23:36 +0100)
commitec6bbd2e0cb4d141db9048b0b5d5c0bcaa66c284
treec160a1a499b0cc4a532be70c8d70c4014e0ad38a
parent56d1cb796fa05735d71b7a5a29d73642b70fc96e
gdb/aarch64: record/replay support for LRCPC3

FEAT_LRCPC3 introduces various load/store instructions with release
consistency for cases where ordering is required. This patch teaches GDB
to decode these instructions for recording and reversing.

The gdb.reverse/aarch64-lrcpc3.exp testcase verifies that the
instructions are recorded and correctly reversed. In particular, there
are some interesting cases to note:
* ldapur/stlur are SIMD instructions, but are not decoded in the simd
  function.
* There are writeback cases to cover too. These were taken from the
  binutils testcases: gas/testsuite/gas/aarch64/rcpc3.s.

The full testsuite was done on aarch64-none-linux-gnu without LRCPC3.
The gdb.arch and gdb.reverse tests were run on Shrinkwrap with LRCPC3
support.

Please note:
1) There is no support for LRCPC and LRCPC2 instructions
2) LRCPC3 is gated with +rcpc3 in GCC/binutils and LLVM.

Approved-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
gdb/aarch64-tdep.c
gdb/testsuite/gdb.reverse/aarch64-lrcpc3.c [new file with mode: 0644]
gdb/testsuite/gdb.reverse/aarch64-lrcpc3.exp [new file with mode: 0644]
gdb/testsuite/lib/gdb.exp