std.debug.cpu_context: consider arm and aarch64 reserved register ranges unsupported

If these ever get allocated, it's most likely going to be for things that don't
matter to us anyway, so completely abandoning DWARF unwinding just because we
see these doesn't seem justified. We will still do so if we're actually asked to
read from such a register, which is the only actually problematic case; see
c23a5ccd19 for more details.
This commit is contained in:
Alex Rønne Petersen 2025-10-12 02:36:40 +02:00
parent 9b4f2b40e3
commit ea694bfdb7

View File

@ -322,6 +322,7 @@ const Arm = struct {
131 => return error.UnsupportedRegister, // SPSR_ABT
132 => return error.UnsupportedRegister, // SPSR_UND
133 => return error.UnsupportedRegister, // SPSR_SVC
134...142 => return error.UnsupportedRegister, // Reserved
143 => return error.UnsupportedRegister, // RA_AUTH_CODE
144...150 => return error.UnsupportedRegister, // R8_USR - R14_USR
151...157 => return error.UnsupportedRegister, // R8_FIQ - R14_FIQ
@ -329,12 +330,16 @@ const Arm = struct {
160...161 => return error.UnsupportedRegister, // R13_ABT - R14_ABT
162...163 => return error.UnsupportedRegister, // R13_UND - R14_UND
164...165 => return error.UnsupportedRegister, // R13_SVC - R14_SVC
166...191 => return error.UnsupportedRegister, // Reserved
192...199 => return error.UnsupportedRegister, // wC0 - wC7
200...255 => return error.UnsupportedRegister, // Reserved
256...287 => return error.UnsupportedRegister, // D0 - D31
288...319 => return error.UnsupportedRegister, // Reserved for FP/NEON
320 => return error.UnsupportedRegister, // TPIDRURO
321 => return error.UnsupportedRegister, // TPIDRURW
322 => return error.UnsupportedRegister, // TPIDPR
323 => return error.UnsupportedRegister, // HTPIDPR
324...8191 => return error.UnsupportedRegister, // Reserved
8192...16383 => return error.UnsupportedRegister, // Unspecified vendor co-processor register
else => return error.InvalidRegister,
@ -393,6 +398,7 @@ const Aarch64 = extern struct {
37 => return error.UnsupportedRegister, // TPIDR_EL1
38 => return error.UnsupportedRegister, // TPIDR_EL2
39 => return error.UnsupportedRegister, // TPIDR_EL3
40...45 => return error.UnsupportedRegister, // Reserved
46 => return error.UnsupportedRegister, // VG
47 => return error.UnsupportedRegister, // FFR
48...63 => return error.UnsupportedRegister, // P0 - P15