]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
aarch64: fix a crash during maintenance print cooked-registers
authorKlaus Gerlicher <klaus.gerlicher@intel.com>
Mon, 3 Feb 2025 13:52:40 +0000 (13:52 +0000)
committerKlaus Gerlicher <klaus.gerlicher@intel.com>
Thu, 13 Feb 2025 11:04:48 +0000 (11:04 +0000)
On aarch64 with pauth enabled a crash when can be seen when
using "maintenance print cooked-registers".

This happens because the register dump code tries to read
a pseudo reg that is not handled here because it is supposedly
only used in unwinding.

Fix this by returning a zero value typed as a built-in uint64.

Approved-By: Luis Machado <luis.machado@arm.com>
gdb/aarch64-tdep.c

index 840f9877361f5a396c3ca5ef2d88499172353bac..6e712b12b8691c97654217f5e3af2654f47443b9 100644 (file)
@@ -3290,6 +3290,9 @@ aarch64_pseudo_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
     return aarch64_pseudo_read_value_1 (next_frame, pseudo_reg_num,
                                        pseudo_offset - AARCH64_SVE_V0_REGNUM);
 
+  if (tdep->has_pauth () && pseudo_reg_num == tdep->ra_sign_state_regnum)
+    return value::zero (builtin_type (gdbarch)->builtin_uint64, lval_register);
+
   gdb_assert_not_reached ("regnum out of bound");
 }