cranelift_codegen

Struct MachTextSectionBuilder

Source
pub struct MachTextSectionBuilder<I: VCodeInst> { /* private fields */ }
Expand description

Implementation of the TextSectionBuilder trait backed by MachBuffer.

Note that MachBuffer was primarily written for intra-function references of jumps between basic blocks, but it’s also quite usable for entire text sections and resolving references between functions themselves. This builder interprets “blocks” as labeled functions for the purposes of resolving labels internally in the buffer.

Implementations§

Source§

impl<I: VCodeInst> MachTextSectionBuilder<I>

Source

pub fn new(num_funcs: usize) -> MachTextSectionBuilder<I>

Creates a new text section builder which will have num_funcs functions pushed into it.

Trait Implementations§

Source§

impl<I: VCodeInst> TextSectionBuilder for MachTextSectionBuilder<I>

Source§

fn append( &mut self, labeled: bool, func: &[u8], align: u32, ctrl_plane: &mut ControlPlane, ) -> u64

Appends data to the text section with the align specified. Read more
Source§

fn resolve_reloc( &mut self, offset: u64, reloc: Reloc, addend: Addend, target: usize, ) -> bool

Attempts to resolve a relocation for this function. Read more
Source§

fn force_veneers(&mut self)

A debug-only option which is used to for
Source§

fn write(&mut self, offset: u64, data: &[u8])

Write the data provided at offset, for example when resolving a relocation.
Source§

fn finish(&mut self, ctrl_plane: &mut ControlPlane) -> Vec<u8>

Completes this text section, filling out any final details, and returns the bytes of the text section.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.