readElfDebugInfo
Reads debug info from an ELF file, or the current binary if none in specified. If the required sections aren't present but a reference to external debug info is, then this this function will recurse to attempt to load the debug sections from an external file.
Function parameters
Parameters
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 readElfDebugInfo(
allocator: Allocator,
elf_filename: ?[]const u8,
build_id: ?[]const u8,
expected_crc: ?u32,
parent_sections: *Dwarf.SectionArray,
parent_mapped_mem: ?[]align(std.heap.page_size_min) const u8,
) !Dwarf.ElfModule {
nosuspend {
const elf_file = (if (elf_filename) |filename| blk: {
break :blk fs.cwd().openFile(filename, .{});
} else fs.openSelfExe(.{})) catch |err| switch (err) {
error.FileNotFound => return error.MissingDebugInfo,
else => return err,
};
const mapped_mem = try mapWholeFile(elf_file);
return Dwarf.ElfModule.load(
allocator,
mapped_mem,
build_id,
expected_crc,
parent_sections,
parent_mapped_mem,
elf_filename,
);
}
}