template <class Loader>

struct StartupLoadModule

Defined at line 70 of file ../../sdk/lib/ld/startup-load.h

Public Methods

void StartupLoadModule<Loader> ()

Defined at line 81 of file ../../sdk/lib/ld/startup-load.h

void StartupLoadModule<Loader> (StartupLoadModule<Loader> && )

Defined at line 83 of file ../../sdk/lib/ld/startup-load.h

template <typename... LoaderArgs>
void StartupLoadModule<Loader> (const elfldltl::Soname<> & name, LoaderArgs &&... loader_args)

Defined at line 86 of file ../../sdk/lib/ld/startup-load.h

template <typename... LoaderArgs>
void StartupLoadModule<Loader> (const elfldltl::Soname<> & name, LoaderArgs &&... loader_args)

Defined at line 86 of file ../../sdk/lib/ld/startup-load.h

template <class Allocator, typename... LoaderArgs>
StartupLoadModule<Loader> * New (Diagnostics & diag, Allocator & allocator, const elfldltl::Soname<> & name, LoaderArgs &&... loader_args)

This uses the given scratch allocator to create a new module object.

Defined at line 91 of file ../../sdk/lib/ld/startup-load.h

template <class Allocator, typename... LoaderArgs>
StartupLoadModule<Loader> * New (Diagnostics & diag, Allocator & allocator, const elfldltl::Soname<> & name, LoaderArgs &&... loader_args)

This uses the given scratch allocator to create a new module object.

Defined at line 91 of file ../../sdk/lib/ld/startup-load.h

template <class ScratchAllocator, class Allocator, class File, class... PhdrObservers>
StartupLoadResult Load (Diagnostics & diag, ScratchAllocator & scratch, Allocator & allocator, File && file, uint32_t symbolizer_modid, size_type & max_tls_modid, PhdrObservers &&... phdr_observers)

Read the file and use Loader::Load on it. If at least partially

successful, this uses the given initial-exec allocator to set up the

passive ABI module in this->module(). The allocator only guarantees two

mutable allocations at a time, so the caller must then promptly splice it

into the link_map list before the next Load call allocates the next one.

The scratch allocator is used for data only needed during startup, such as

the program headers read from the file.

Defined at line 108 of file ../../sdk/lib/ld/startup-load.h

template <class ScratchAllocator, class Allocator, class File, class... PhdrObservers>
StartupLoadResult Load (Diagnostics & diag, ScratchAllocator & scratch, Allocator & allocator, File && file, uint32_t symbolizer_modid, size_type & max_tls_modid, PhdrObservers &&... phdr_observers)

Read the file and use Loader::Load on it. If at least partially

successful, this uses the given initial-exec allocator to set up the

passive ABI module in this->module(). The allocator only guarantees two

mutable allocations at a time, so the caller must then promptly splice it

into the link_map list before the next Load call allocates the next one.

The scratch allocator is used for data only needed during startup, such as

the program headers read from the file.

Defined at line 108 of file ../../sdk/lib/ld/startup-load.h

void set_dynamic (std::span<const Dyn> dynamic)

If a module is constructed manually rather than by Load, this points it at

its PT_DYNAMIC segment in memory.

Defined at line 166 of file ../../sdk/lib/ld/startup-load.h

void set_dynamic (std::span<const Dyn> dynamic)

If a module is constructed manually rather than by Load, this points it at

its PT_DYNAMIC segment in memory.

Defined at line 166 of file ../../sdk/lib/ld/startup-load.h

void Relocate (Diagnostics & diag, const List & modules)

Defined at line 168 of file ../../sdk/lib/ld/startup-load.h

void CommitAndProtectRelro (Diagnostics & diag)

Since later failures will be fatal anyway, we can go ahead and commit the

mappings so the Loader destructor won't unmap the module. Transferring

ownership of the mappings and ending the lifetime of the Loader object is

part of preparing to apply RELRO protections. But we have no need to hold

onto the Loader::Relro capability any longer.

Defined at line 180 of file ../../sdk/lib/ld/startup-load.h

List MakeList ()

Defined at line 184 of file ../../sdk/lib/ld/startup-load.h

auto & memory ()

This is only valid until CommitAndProtectRelro() is called.

Defined at line 191 of file ../../sdk/lib/ld/startup-load.h

template <typename ScratchAllocator, typename InitialExecAllocator, typename GetDepFile, typename... LoaderArgs>
void LinkModules (Diagnostics & diag, ScratchAllocator & scratch, InitialExecAllocator & initial_exec, StartupLoadModule<Loader> * main_executable, GetDepFile && get_dep_file, StartupBootstrap & bootstrap, size_t executable_needed_count, LoaderArgs &&... loader_args)

Defined at line 195 of file ../../sdk/lib/ld/startup-load.h

template <typename ScratchAllocator, typename InitialExecAllocator, typename GetDepFile, typename... LoaderArgs>
void LinkModules (Diagnostics & diag, ScratchAllocator & scratch, InitialExecAllocator & initial_exec, StartupLoadModule<Loader> * main_executable, GetDepFile && get_dep_file, StartupBootstrap & bootstrap, size_t executable_needed_count, LoaderArgs &&... loader_args)

Defined at line 195 of file ../../sdk/lib/ld/startup-load.h