struct SrcLocCache [src]

Fields

line_table: LineTable
directories: []const FileEntry
files: []FileEntry
version: u16

Members

Source

pub const SrcLocCache = struct { line_table: LineTable, directories: []const FileEntry, files: []FileEntry, version: u16, pub const LineTable = std.AutoArrayHashMapUnmanaged(u64, LineEntry); pub const LineEntry = struct { line: u32, column: u32, /// Offset by 1 depending on whether Dwarf version is >= 5. file: u32, pub const invalid: LineEntry = .{ .line = undefined, .column = undefined, .file = std.math.maxInt(u32), }; pub fn isInvalid(le: LineEntry) bool { return le.file == invalid.file; } }; pub fn findSource(slc: *const SrcLocCache, address: u64) !LineEntry { const index = std.sort.upperBound(u64, slc.line_table.keys(), address, struct { fn order(context: u64, item: u64) std.math.Order { return std.math.order(context, item); } }.order); if (index == 0) return missing(); return slc.line_table.values()[index - 1]; } }