aboutsummaryrefslogtreecommitdiff
path: root/lib/std/debug/Dwarf/abi.zig
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2024-11-04 08:29:18 +0100
committerAlex Rønne Petersen <alex@alexrp.com>2024-11-04 08:29:42 +0100
commitaf71694dd946a88bf0db55e4513223e344bfde40 (patch)
treee3605ef12a6fb989ccdeb0a6d2e2c8c2bfb31cc0 /lib/std/debug/Dwarf/abi.zig
parent4049be90de6a557c1ab522363fddbb71d3ccdb18 (diff)
downloadzig-af71694dd946a88bf0db55e4513223e344bfde40.tar.gz
zig-af71694dd946a88bf0db55e4513223e344bfde40.zip
std.debug: Add handling for armeb, thumb, thumbeb, and aarch64_be.
Diffstat (limited to 'lib/std/debug/Dwarf/abi.zig')
-rw-r--r--lib/std/debug/Dwarf/abi.zig18
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/std/debug/Dwarf/abi.zig b/lib/std/debug/Dwarf/abi.zig
index 60fd10a794..e0a2a4858b 100644
--- a/lib/std/debug/Dwarf/abi.zig
+++ b/lib/std/debug/Dwarf/abi.zig
@@ -35,8 +35,8 @@ pub fn ipRegNum(arch: Arch) ?u8 {
return switch (arch) {
.x86 => 8,
.x86_64 => 16,
- .arm => 15,
- .aarch64 => 32,
+ .arm, .armeb, .thumb, .thumbeb => 15,
+ .aarch64, .aarch64_be => 32,
else => null,
};
}
@@ -47,8 +47,8 @@ pub fn fpRegNum(arch: Arch, reg_context: RegisterContext) u8 {
// (only in .eh_frame), and that is now the convention for MachO
.x86 => if (reg_context.eh_frame and reg_context.is_macho) 4 else 5,
.x86_64 => 6,
- .arm => 11,
- .aarch64 => 29,
+ .arm, .armeb, .thumb, .thumbeb => 11,
+ .aarch64, .aarch64_be => 29,
else => unreachable,
};
}
@@ -57,8 +57,8 @@ pub fn spRegNum(arch: Arch, reg_context: RegisterContext) u8 {
return switch (arch) {
.x86 => if (reg_context.eh_frame and reg_context.is_macho) 5 else 4,
.x86_64 => 7,
- .arm => 13,
- .aarch64 => 31,
+ .arm, .armeb, .thumb, .thumbeb => 13,
+ .aarch64, .aarch64_be => 31,
else => unreachable,
};
}
@@ -131,7 +131,7 @@ pub fn regBytes(
16 => mem.asBytes(&thread_context_ptr.Rip),
else => error.InvalidRegister,
},
- .aarch64 => switch (reg_number) {
+ .aarch64, .aarch64_be => switch (reg_number) {
0...30 => mem.asBytes(&thread_context_ptr.DUMMYUNIONNAME.X[reg_number]),
31 => mem.asBytes(&thread_context_ptr.Sp),
32 => mem.asBytes(&thread_context_ptr.Pc),
@@ -269,7 +269,7 @@ pub fn regBytes(
},
else => error.UnimplementedOs,
},
- .arm => switch (builtin.os.tag) {
+ .arm, .armeb, .thumb, .thumbeb => switch (builtin.os.tag) {
.linux => switch (reg_number) {
0 => mem.asBytes(&ucontext_ptr.mcontext.arm_r0),
1 => mem.asBytes(&ucontext_ptr.mcontext.arm_r1),
@@ -292,7 +292,7 @@ pub fn regBytes(
},
else => error.UnimplementedOs,
},
- .aarch64 => switch (builtin.os.tag) {
+ .aarch64, .aarch64_be => switch (builtin.os.tag) {
.macos, .ios, .watchos => switch (reg_number) {
0...28 => mem.asBytes(&ucontext_ptr.mcontext.ss.regs[reg_number]),
29 => mem.asBytes(&ucontext_ptr.mcontext.ss.fp),