authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-14 23:18:20+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-15 13:59:17+02:00
logf21a78b5a31b13d5b6bb84c23c4a35e64402d0e0
tree323eae3c35e580119e8758a52c64f2246512ff61
parent0ace906477d0dd1d6e7cb4a02180fc6c09684870
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.debug.SelfInfo.Elf: don't support DWARF unwinding for Hexagon and PowerPC

As for SPARC, FP-based unwinding is superior on these.

1 files changed, 4 insertions(+), 16 deletions(-)

lib/std/debug/SelfInfo/Elf.zig+4-16
...@@ -94,28 +94,22 @@ pub const can_unwind: bool = s: {...@@ -94,28 +94,22 @@ pub const can_unwind: bool = s: {
94 // Notably, we are yet to support unwinding on ARM. There, unwinding is not done through94 // Notably, we are yet to support unwinding on ARM. There, unwinding is not done through
95 // `.eh_frame`, but instead with the `.ARM.exidx` section, which has a different format.95 // `.eh_frame`, but instead with the `.ARM.exidx` section, which has a different format.
96 const archs: []const std.Target.Cpu.Arch = switch (builtin.target.os.tag) {96 const archs: []const std.Target.Cpu.Arch = switch (builtin.target.os.tag) {
97 // Not supported yet: arm, m68k, sparc6497 // Not supported yet: arm, m68k
98 .haiku => &.{98 .haiku => &.{
99 .aarch64,99 .aarch64,
100 .powerpc,
101 .riscv64,100 .riscv64,
102 .x86,101 .x86,
103 .x86_64,102 .x86_64,
104 },103 },
105 // Not supported yet: arc, arm/armeb/thumb/thumbeb, csky, m68k, or1k, sparc/sparc64, xtensa104 // Not supported yet: arc, arm/armeb/thumb/thumbeb, csky, m68k, or1k, xtensa
106 .linux => &.{105 .linux => &.{
107 .aarch64,106 .aarch64,
108 .aarch64_be,107 .aarch64_be,
109 .hexagon,
110 .loongarch64,108 .loongarch64,
111 .mips,109 .mips,
112 .mipsel,110 .mipsel,
113 .mips64,111 .mips64,
114 .mips64el,112 .mips64el,
115 .powerpc,
116 .powerpcle,
117 .powerpc64,
118 .powerpc64le,
119 .riscv32,113 .riscv32,
120 .riscv64,114 .riscv64,
121 .s390x,115 .s390x,
...@@ -134,28 +128,23 @@ pub const can_unwind: bool = s: {...@@ -134,28 +128,23 @@ pub const can_unwind: bool = s: {
134 // Not supported yet: arm128 // Not supported yet: arm
135 .freebsd => &.{129 .freebsd => &.{
136 .aarch64,130 .aarch64,
137 .powerpc64,
138 .powerpc64le,
139 .riscv64,131 .riscv64,
140 .x86_64,132 .x86_64,
141 },133 },
142 // Not supported yet: arm/armeb, m68k, mips64/mips64el, sparc/sparc64134 // Not supported yet: arm/armeb, m68k, mips64/mips64el
143 .netbsd => &.{135 .netbsd => &.{
144 .aarch64,136 .aarch64,
145 .aarch64_be,137 .aarch64_be,
146 .mips,138 .mips,
147 .mipsel,139 .mipsel,
148 .powerpc,
149 .x86,140 .x86,
150 .x86_64,141 .x86_64,
151 },142 },
152 // Not supported yet: arm, sparc64143 // Not supported yet: arm
153 .openbsd => &.{144 .openbsd => &.{
154 .aarch64,145 .aarch64,
155 .mips64,146 .mips64,
156 .mips64el,147 .mips64el,
157 .powerpc,
158 .powerpc64,
159 .riscv64,148 .riscv64,
160 .x86,149 .x86,
161 .x86_64,150 .x86_64,
...@@ -165,7 +154,6 @@ pub const can_unwind: bool = s: {...@@ -165,7 +154,6 @@ pub const can_unwind: bool = s: {
165 .x86,154 .x86,
166 .x86_64,155 .x86_64,
167 },156 },
168 // Not supported yet: sparc64
169 .solaris => &.{157 .solaris => &.{
170 .x86_64,158 .x86_64,
171 },159 },