| ... | @@ -92,12 +92,10 @@ pub fn getModuleSlide(si: *SelfInfo, io: Io, address: usize) Error!usize { | ... | @@ -92,12 +92,10 @@ pub fn getModuleSlide(si: *SelfInfo, io: Io, address: usize) Error!usize { |
| 92 | } | 92 | } |
| 93 | | 93 | |
| 94 | pub const can_unwind: bool = s: { | 94 | pub const can_unwind: bool = s: { |
| 95 | // Notably, we are yet to support unwinding on ARM. There, unwinding is not done through | | |
| 96 | // `.eh_frame`, but instead with the `.ARM.exidx` section, which has a different format. | | |
| 97 | const archs: []const std.Target.Cpu.Arch = switch (builtin.target.os.tag) { | 95 | const archs: []const std.Target.Cpu.Arch = switch (builtin.target.os.tag) { |
| 98 | // Not supported yet: arm | | |
| 99 | .haiku => &.{ | 96 | .haiku => &.{ |
| 100 | .aarch64, | 97 | .aarch64, |
| | 98 | .arm, |
| 101 | .riscv64, | 99 | .riscv64, |
| 102 | .x86, | 100 | .x86, |
| 103 | .x86_64, | 101 | .x86_64, |
| ... | @@ -106,12 +104,14 @@ pub const can_unwind: bool = s: { | ... | @@ -106,12 +104,14 @@ pub const can_unwind: bool = s: { |
| 106 | .x86, | 104 | .x86, |
| 107 | .x86_64, | 105 | .x86_64, |
| 108 | }, | 106 | }, |
| 109 | // Not supported yet: arm/armeb/thumb/thumbeb, hppa, hppa64, microblaze/microblazeel | 107 | // Not supported yet: hppa, hppa64, microblaze/microblazeel, sh/sheb |
| 110 | .linux => &.{ | 108 | .linux => &.{ |
| 111 | .aarch64, | 109 | .aarch64, |
| 112 | .aarch64_be, | 110 | .aarch64_be, |
| 113 | .alpha, | 111 | .alpha, |
| 114 | .arc, | 112 | .arc, |
| | 113 | .arm, |
| | 114 | .armeb, |
| 115 | .csky, | 115 | .csky, |
| 116 | .loongarch32, | 116 | .loongarch32, |
| 117 | .loongarch64, | 117 | .loongarch64, |
| ... | @@ -124,6 +124,8 @@ pub const can_unwind: bool = s: { | ... | @@ -124,6 +124,8 @@ pub const can_unwind: bool = s: { |
| 124 | .riscv32, | 124 | .riscv32, |
| 125 | .riscv64, | 125 | .riscv64, |
| 126 | .s390x, | 126 | .s390x, |
| | 127 | .thumb, |
| | 128 | .thumbeb, |
| 127 | .x86, | 129 | .x86, |
| 128 | .x86_64, | 130 | .x86_64, |
| 129 | }, | 131 | }, |
| ... | @@ -136,18 +138,20 @@ pub const can_unwind: bool = s: { | ... | @@ -136,18 +138,20 @@ pub const can_unwind: bool = s: { |
| 136 | .dragonfly => &.{ | 138 | .dragonfly => &.{ |
| 137 | .x86_64, | 139 | .x86_64, |
| 138 | }, | 140 | }, |
| 139 | // Not supported yet: arm | | |
| 140 | .freebsd => &.{ | 141 | .freebsd => &.{ |
| 141 | .aarch64, | 142 | .aarch64, |
| | 143 | .arm, |
| 142 | .riscv64, | 144 | .riscv64, |
| 143 | .x86, | 145 | .x86, |
| 144 | .x86_64, | 146 | .x86_64, |
| 145 | }, | 147 | }, |
| 146 | // Not supported yet: arm/armeb, hppa, mips64/mips64el, sh/sheb | 148 | // Not supported yet: hppa, mips64/mips64el, sh/sheb |
| 147 | .netbsd => &.{ | 149 | .netbsd => &.{ |
| 148 | .aarch64, | 150 | .aarch64, |
| 149 | .aarch64_be, | 151 | .aarch64_be, |
| 150 | .alpha, | 152 | .alpha, |
| | 153 | .arm, |
| | 154 | .armeb, |
| 151 | .m68k, | 155 | .m68k, |
| 152 | .mips, | 156 | .mips, |
| 153 | .mipsel, | 157 | .mipsel, |
| ... | @@ -156,9 +160,10 @@ pub const can_unwind: bool = s: { | ... | @@ -156,9 +160,10 @@ pub const can_unwind: bool = s: { |
| 156 | .x86, | 160 | .x86, |
| 157 | .x86_64, | 161 | .x86_64, |
| 158 | }, | 162 | }, |
| 159 | // Not supported yet: arm, hppa, sh | 163 | // Not supported yet: hppa, sh |
| 160 | .openbsd => &.{ | 164 | .openbsd => &.{ |
| 161 | .aarch64, | 165 | .aarch64, |
| | 166 | .arm, |
| 162 | .m88k, | 167 | .m88k, |
| 163 | .mips64, | 168 | .mips64, |
| 164 | .mips64el, | 169 | .mips64el, |