diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2025-10-12 02:36:40 +0200 |
|---|---|---|
| committer | Alex Rønne Petersen <alex@alexrp.com> | 2025-10-12 12:59:06 +0200 |
| commit | ea694bfdb762a4dd18654c73aaaaf1b917d99cc3 (patch) | |
| tree | 3aa1ecb92b5fc4a24e306a13368302c472e49d94 /lib/std | |
| parent | 9b4f2b40e36a2b59d0550e22f7b3fcfc06d70135 (diff) | |
| download | zig-ea694bfdb762a4dd18654c73aaaaf1b917d99cc3.tar.gz zig-ea694bfdb762a4dd18654c73aaaaf1b917d99cc3.zip | |
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.
Diffstat (limited to 'lib/std')
| -rw-r--r-- | lib/std/debug/cpu_context.zig | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/std/debug/cpu_context.zig b/lib/std/debug/cpu_context.zig index febe94cae6..dc77b41c9d 100644 --- a/lib/std/debug/cpu_context.zig +++ b/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 |
