Commit ea694bfdb7

Alex Rønne Petersen <alex@alexrp.com>
2025-10-12 02:36:40
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.
1 parent 9b4f2b4
Changed files (1)
lib
std
lib/std/debug/cpu_context.zig
@@ -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