Struct solana_rbpf::elf::Executable
source · pub struct Executable<C: ContextObject> { /* private fields */ }
Expand description
Elf loader/relocator
Implementations§
source§impl<C: ContextObject> Executable<C>
impl<C: ContextObject> Executable<C>
sourcepub fn get_config(&self) -> &Config
pub fn get_config(&self) -> &Config
Get the configuration settings
sourcepub fn get_sbpf_version(&self) -> &SBPFVersion
pub fn get_sbpf_version(&self) -> &SBPFVersion
Get the executable sbpf_version
sourcepub fn get_text_bytes(&self) -> (u64, &[u8])
pub fn get_text_bytes(&self) -> (u64, &[u8])
Get the .text section virtual address and bytes
sourcepub fn get_ro_section(&self) -> &[u8] ⓘ
pub fn get_ro_section(&self) -> &[u8] ⓘ
Get the concatenated read-only sections (including the text section)
sourcepub fn get_ro_region(&self) -> MemoryRegion
pub fn get_ro_region(&self) -> MemoryRegion
Get a memory region that can be used to access the merged readonly section
sourcepub fn get_entrypoint_instruction_offset(&self) -> usize
pub fn get_entrypoint_instruction_offset(&self) -> usize
Get the entry point offset into the text section
sourcepub fn get_loader(&self) -> &Arc<BuiltinProgram<C>>
pub fn get_loader(&self) -> &Arc<BuiltinProgram<C>>
Get the loader built-in program
sourcepub fn get_compiled_program(&self) -> Option<&JitProgram>
pub fn get_compiled_program(&self) -> Option<&JitProgram>
Get the JIT compiled program
sourcepub fn jit_compile(&mut self) -> Result<(), EbpfError>
pub fn jit_compile(&mut self) -> Result<(), EbpfError>
JIT compile the executable
sourcepub fn get_function_registry(&self) -> &FunctionRegistry<usize>
pub fn get_function_registry(&self) -> &FunctionRegistry<usize>
Get the function registry
sourcepub fn new_from_text_bytes(
text_bytes: &[u8],
loader: Arc<BuiltinProgram<C>>,
sbpf_version: SBPFVersion,
function_registry: FunctionRegistry<usize>,
) -> Result<Self, ElfError>
pub fn new_from_text_bytes( text_bytes: &[u8], loader: Arc<BuiltinProgram<C>>, sbpf_version: SBPFVersion, function_registry: FunctionRegistry<usize>, ) -> Result<Self, ElfError>
Create from raw text section bytes (list of instructions)
source§impl<C: ContextObject> Executable<C>
impl<C: ContextObject> Executable<C>
Static constructors for Executable
sourcepub fn from_elf(
elf_bytes: &[u8],
loader: Arc<BuiltinProgram<C>>,
) -> Result<Self, EbpfError>
pub fn from_elf( elf_bytes: &[u8], loader: Arc<BuiltinProgram<C>>, ) -> Result<Self, EbpfError>
Creates an executable from an ELF file
sourcepub fn from_text_bytes(
text_bytes: &[u8],
loader: Arc<BuiltinProgram<C>>,
sbpf_version: SBPFVersion,
function_registry: FunctionRegistry<usize>,
) -> Result<Self, EbpfError>
pub fn from_text_bytes( text_bytes: &[u8], loader: Arc<BuiltinProgram<C>>, sbpf_version: SBPFVersion, function_registry: FunctionRegistry<usize>, ) -> Result<Self, EbpfError>
Creates an executable from machine code
Trait Implementations§
source§impl<C: Debug + ContextObject> Debug for Executable<C>
impl<C: Debug + ContextObject> Debug for Executable<C>
source§impl<C: PartialEq + ContextObject> PartialEq for Executable<C>
impl<C: PartialEq + ContextObject> PartialEq for Executable<C>
impl<C: ContextObject> StructuralPartialEq for Executable<C>
Auto Trait Implementations§
impl<C> Freeze for Executable<C>
impl<C> RefUnwindSafe for Executable<C>
impl<C> Send for Executable<C>
impl<C> Sync for Executable<C>
impl<C> Unpin for Executable<C>
impl<C> !UnwindSafe for Executable<C>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more