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 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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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, U> TryFrom<U> for Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.