diff --git a/lib/std/debug/SelfInfo/Elf.zig b/lib/std/debug/SelfInfo/Elf.zig index 9e8153555f4a68dfde3996328263aee2dd39d582..4e7fba60796adbb2f78a53b795aed5724eecd096 100644 --- a/lib/std/debug/SelfInfo/Elf.zig +++ b/lib/std/debug/SelfInfo/Elf.zig @@ -92,12 +92,10 @@ pub fn getModuleSlide(si: *SelfInfo, io: Io, address: usize) Error!usize { } pub const can_unwind: bool = s: { - // Notably, we are yet to support unwinding on ARM. There, unwinding is not done through - // `.eh_frame`, but instead with the `.ARM.exidx` section, which has a different format. const archs: []const std.Target.Cpu.Arch = switch (builtin.target.os.tag) { - // Not supported yet: arm .haiku => &.{ .aarch64, + .arm, .riscv64, .x86, .x86_64, @@ -106,12 +104,14 @@ pub const can_unwind: bool = s: { .x86, .x86_64, }, - // Not supported yet: arm/armeb/thumb/thumbeb, hppa, hppa64, microblaze/microblazeel + // Not supported yet: hppa, hppa64, microblaze/microblazeel, sh/sheb .linux => &.{ .aarch64, .aarch64_be, .alpha, .arc, + .arm, + .armeb, .csky, .loongarch32, .loongarch64, @@ -124,6 +124,8 @@ pub const can_unwind: bool = s: { .riscv32, .riscv64, .s390x, + .thumb, + .thumbeb, .x86, .x86_64, }, @@ -136,18 +138,20 @@ pub const can_unwind: bool = s: { .dragonfly => &.{ .x86_64, }, - // Not supported yet: arm .freebsd => &.{ .aarch64, + .arm, .riscv64, .x86, .x86_64, }, - // Not supported yet: arm/armeb, hppa, mips64/mips64el, sh/sheb + // Not supported yet: hppa, mips64/mips64el, sh/sheb .netbsd => &.{ .aarch64, .aarch64_be, .alpha, + .arm, + .armeb, .m68k, .mips, .mipsel, @@ -156,9 +160,10 @@ pub const can_unwind: bool = s: { .x86, .x86_64, }, - // Not supported yet: arm, hppa, sh + // Not supported yet: hppa, sh .openbsd => &.{ .aarch64, + .arm, .m88k, .mips64, .mips64el, diff --git a/test/src/StackTrace.zig b/test/src/StackTrace.zig index 9beb8904607bbf550c3080fe4e34a9cd617b28c0..0022e5b9b616671a0a0d4809a8d648dc14cc3988 100644 --- a/test/src/StackTrace.zig +++ b/test/src/StackTrace.zig @@ -72,6 +72,8 @@ fn addCaseTarget( .mips64el, .sh, .sheb, + .xtensa, + .xtensaeb, => .useless, .hexagon, .powerpc, @@ -87,8 +89,7 @@ fn addCaseTarget( const supports_unwind_tables = switch (target.result.os.tag) { // x86-windows just has no way to do stack unwinding other then using frame pointers. .windows => target.result.cpu.arch != .x86, - // We do not yet implement support for the AArch32 exception table section `.ARM.exidx`. - else => !target.result.cpu.arch.isArm(), + else => true, }; const use_llvm_vals: []const bool = if (both_backends) &.{ true, false } else &.{true};