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)
Sourcepub fn load(
bytes: &[u8],
loader: Arc<BuiltinProgram<C>>,
) -> Result<Self, ElfError>
pub fn load( bytes: &[u8], loader: Arc<BuiltinProgram<C>>, ) -> Result<Self, ElfError>
Fully loads an ELF
Sourcepub fn load_with_strict_parser(
bytes: &[u8],
loader: Arc<BuiltinProgram<C>>,
) -> Result<Self, ElfParserError>
pub fn load_with_strict_parser( bytes: &[u8], loader: Arc<BuiltinProgram<C>>, ) -> Result<Self, ElfParserError>
Loads an ELF without relocation
Sourcepub fn validate(
config: &Config,
elf: &Elf64<'_>,
elf_bytes: &[u8],
) -> Result<(), ElfError>
pub fn validate( config: &Config, elf: &Elf64<'_>, elf_bytes: &[u8], ) -> Result<(), ElfError>
Validates the ELF
Sourcepub fn parse_ro_sections<'a, S: IntoIterator<Item = (Option<&'a [u8]>, &'a Elf64Shdr)>>(
config: &Config,
sbpf_version: &SBPFVersion,
sections: S,
elf_bytes: &[u8],
) -> Result<Section, ElfError>
pub fn parse_ro_sections<'a, S: IntoIterator<Item = (Option<&'a [u8]>, &'a Elf64Shdr)>>( config: &Config, sbpf_version: &SBPFVersion, sections: S, elf_bytes: &[u8], ) -> Result<Section, ElfError>
Parses and concatenates the readonly data sections
Source§impl<C: ContextObject> Executable<C>
Static constructors for Executable
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