Struct wasmer_compiler::object::module::ObjectMetadataBuilder
source · pub struct ObjectMetadataBuilder {
placeholder_data: Vec<u8>,
metadata_length: u64,
section_offset: u64,
num_function_pointers: u64,
num_trampolines: u64,
num_dynamic_function_trampoline_pointers: u64,
endianness: Endianness,
pointer_width: PointerWidth,
}
Expand description
ObjectMetadataBuilder builds serialized module metadata include in an object. In addition, it also relies on information from ModuleInfo to build a table of function pointers, trmampolines and dynamic function trampoline pointers. ObjectMetadataBuilder takes care of setting up relocations, so a linker can automatically fill in actuall addesses of all relavant functions. There is no need to piece the information together in the glue C file.
Fields§
§placeholder_data: Vec<u8>
§metadata_length: u64
§section_offset: u64
§num_function_pointers: u64
§num_trampolines: u64
§num_dynamic_function_trampoline_pointers: u64
§endianness: Endianness
§pointer_width: PointerWidth
Implementations§
source§impl ObjectMetadataBuilder
impl ObjectMetadataBuilder
sourcepub fn new(
metadata: &ModuleMetadata,
triple: &Triple,
) -> Result<Self, ObjectError>
pub fn new( metadata: &ModuleMetadata, triple: &Triple, ) -> Result<Self, ObjectError>
Creates a new FunctionRelocsBuilder
sourcepub fn set_section_offset(&mut self, offset: u64)
pub fn set_section_offset(&mut self, offset: u64)
Sets section offset used in relocations
sourcepub fn placeholder_data(&self) -> &[u8] ⓘ
pub fn placeholder_data(&self) -> &[u8] ⓘ
Placeholder data for emit_data call
sourcepub fn pointer_bytes(&self) -> u64
pub fn pointer_bytes(&self) -> u64
Bytes of a pointer for target architecture
sourcepub fn setup_function_pointer(
&self,
obj: &mut Object<'_>,
index: usize,
symbol_id: SymbolId,
) -> Result<(), ObjectError>
pub fn setup_function_pointer( &self, obj: &mut Object<'_>, index: usize, symbol_id: SymbolId, ) -> Result<(), ObjectError>
Sets up relocation for a function pointer
sourcepub fn setup_trampoline(
&self,
obj: &mut Object<'_>,
index: usize,
symbol_id: SymbolId,
) -> Result<(), ObjectError>
pub fn setup_trampoline( &self, obj: &mut Object<'_>, index: usize, symbol_id: SymbolId, ) -> Result<(), ObjectError>
Sets up relocation for a trampoline
sourcepub fn setup_dynamic_function_trampoline_pointer(
&self,
obj: &mut Object<'_>,
index: usize,
symbol_id: SymbolId,
) -> Result<(), ObjectError>
pub fn setup_dynamic_function_trampoline_pointer( &self, obj: &mut Object<'_>, index: usize, symbol_id: SymbolId, ) -> Result<(), ObjectError>
Sets up relocation for a dynamic function trampoline pointer
fn function_pointers_start_offset(&self) -> u64
fn trampolines_start_offset(&self) -> u64
fn dynamic_function_trampoline_pointers_start_offset(&self) -> u64
fn serialize_value(&self, value: u64) -> Vec<u8> ⓘ
Auto Trait Implementations§
impl Freeze for ObjectMetadataBuilder
impl RefUnwindSafe for ObjectMetadataBuilder
impl Send for ObjectMetadataBuilder
impl Sync for ObjectMetadataBuilder
impl Unpin for ObjectMetadataBuilder
impl UnwindSafe for ObjectMetadataBuilder
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§impl<T> Pointee for T
impl<T> Pointee for T
source§impl<T> Upcastable for T
impl<T> Upcastable for T
source§fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
upcast ref
source§fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
upcast mut ref