supportsUnwinding
Tells whether unwinding for this target is implemented here in the Zig standard library.
See also Dwarf.abi.supportsUnwinding which tells whether Dwarf supports
unwinding on that target in theory.
Function parameters
Parameters
- target:*const std.Target
How is this different than `Module` when the host is Windows?
Types
- WindowsModule
- How is this different than `Module` when the host is Windows?
- VirtualMachine
- This is a virtual machine that runs DWARF call frame instructions.
Functions in this namespace
Functions
- readElfDebugInfo
- Reads debug info from an ELF file, or the current binary if none in specified.
- unwindFrameMachO
- Unwind a frame using MachO compact unwind info (from __unwind_info).
- stripInstructionPtrAuthCode
- Some platforms use pointer authentication - the upper bits of instruction pointers contain a signature.
- unwindFrameDwarf
- Unwind a stack frame using DWARF unwinding info, updating the register context.
- supportsUnwinding
- Tells whether unwinding for this target is *implemented* here in the Zig
Error sets in this namespace
Error Sets
Tells whether unwinding for the host is implemented.
Values
- supports_unwinding
- Tells whether unwinding for the host is implemented.
Source
Implementation
pub fn supportsUnwinding(target: *const std.Target) bool {
return switch (target.cpu.arch) {
.x86 => switch (target.os.tag) {
.linux, .netbsd, .solaris, .illumos => true,
else => false,
},
.x86_64 => switch (target.os.tag) {
.linux, .netbsd, .freebsd, .openbsd, .macos, .ios, .solaris, .illumos => true,
else => false,
},
.arm, .armeb, .thumb, .thumbeb => switch (target.os.tag) {
.linux => true,
else => false,
},
.aarch64, .aarch64_be => switch (target.os.tag) {
.linux, .netbsd, .freebsd, .macos, .ios => true,
else => false,
},
// Unwinding is possible on other targets but this implementation does
// not support them...yet!
else => false,
};
}