Skip to documentation
SLOP

tiny.tldr.loadExecutable

Reference tiny.tldr loadExecutable

Defined in tiny.tldr.

Called byCallstest sourcelib.tldr.src.loadtest: load executable maps entry func...test sourcelib.tldr.src.loadtest: load executable runs linked cal...tiny.sysmemoryprotecttiny.sysmemoryreserveAddressSpacetiny.sysmemoryunmapprivate sourcelib.tldr.src.loadcopyLoadSegmentsprivate sourcelib.tldr.src.loadentryAddress+3 moretiny.tldrloadExecutable
Static calls · unresolved targets: 0 · external targets: 5.

Source

Source: lib/tldr/src/load.zig:54

zig
pub fn loadExecutable(    allocator: std.mem.Allocator,    inputs: []const model.Input,    options: model.LinkOptions,) LoadError!LoadedImage {    if (builtin.cpu.arch != .x86_64) return error.UnsupportedArchitecture;    var probe_options = loadOptions(options);    probe_options.image_base = 0;    var probe = try linker.link(allocator, inputs, probe_options);    defer probe.deinit(allocator);    const probe_span = try imageSpan(probe.bytes);    const memory_len = try probe_span.byteCount();    const mapping = try memory.reserveAddressSpace(memory_len);    errdefer memory.unmap(mapping);    var mapped_options = loadOptions(options);    const mapping_address: u64 = @intCast(@intFromPtr(mapping.ptr));    if (mapping_address < probe_span.start) return error.InvalidRange;    mapped_options.image_base = mapping_address - probe_span.start;    var linked = try linker.link(allocator, inputs, mapped_options);    defer linked.deinit(allocator);    const mapped_span = try imageSpan(linked.bytes);    if (mapped_span.start != mapping_address) return error.InvalidRange;    if (try mapped_span.byteCount() > mapping.len) return error.InvalidRange;    try memory.protect(mapping, .{ .read = true, .write = true });    @memset(mapping, 0);    try copyLoadSegments(mapping, linked.bytes, mapped_span);    try protectLoadSegments(mapping, linked.bytes, mapped_span);    const entry_address = try entryAddress(linked.bytes, mapped_span);    return .{        .memory = mapping,        .entry_address = entry_address,    };}

Source: lib/tldr/src/root.zig:81

zig
pub const loadExecutable = loader.loadExecutable;

Complete call list

8 direct calls.

Audit

Definitions1
Public names1
Members0
Version26.7.0
Revisiondaab053ee433