structstd.debug.Dwarf.Section[src]

Fields

data: []const u8
virtual_address: ?usize = null
owned: bool

Functions

FunctionvirtualOffset[src]

pub fn virtualOffset(self: Section, base_address: usize) i64

Parameters

self: Section
base_address: usize

Source Code

Source code
pub fn virtualOffset(self: Section, base_address: usize) i64 {
    return if (self.virtual_address) |va|
        @as(i64, @intCast(base_address + va)) -
            @as(i64, @intCast(@intFromPtr(self.data.ptr)))
    else
        0;
}

Source Code

Source code
pub const Section = struct {
    data: []const u8,
    // Module-relative virtual address.
    // Only set if the section data was loaded from disk.
    virtual_address: ?usize = null,
    // If `data` is owned by this Dwarf.
    owned: bool,

    pub const Id = enum {
        debug_info,
        debug_abbrev,
        debug_str,
        debug_str_offsets,
        debug_line,
        debug_line_str,
        debug_ranges,
        debug_loclists,
        debug_rnglists,
        debug_addr,
        debug_names,
        debug_frame,
        eh_frame,
        eh_frame_hdr,
    };

    // For sections that are not memory mapped by the loader, this is an offset
    // from `data.ptr` to where the section would have been mapped. Otherwise,
    // `data` is directly backed by the section and the offset is zero.
    pub fn virtualOffset(self: Section, base_address: usize) i64 {
        return if (self.virtual_address) |va|
            @as(i64, @intCast(base_address + va)) -
                @as(i64, @intCast(@intFromPtr(self.data.ptr)))
        else
            0;
    }
}