pub struct MachBufferFinalized {
pub nop_units: Vec<Vec<u8>>,
/* private fields */
}Expand description
A MachBuffer once emission is completed: holds generated code and records,
without fixups. This allows the type to be independent of the backend.
Fields§
§nop_units: Vec<Vec<u8>>The means by which to NOP out patchable call sites.
This allows a consumer of a MachBufferFinalized to disable
patchable call sites (which are enabled by default) without
specific knowledge of the target ISA.
Each entry is one form of nop, and these are required to be sorted in ascending-size order.
Implementations§
Source§impl MachBufferFinalized
impl MachBufferFinalized
Sourcepub fn apply_base_srcloc(&mut self, base_srcloc: SourceLoc)
pub fn apply_base_srcloc(&mut self, base_srcloc: SourceLoc)
Get a finalized machine buffer by applying the function’s base source location.
Source§impl MachBufferFinalized
impl MachBufferFinalized
Sourcepub fn get_srclocs_sorted(&self) -> &[MachSrcLoc]
pub fn get_srclocs_sorted(&self) -> &[MachSrcLoc]
Get a list of source location mapping tuples in sorted-by-start-offset order.
Get all debug tags, sorted by associated offset.
Sourcepub fn total_size(&self) -> CodeOffset
pub fn total_size(&self) -> CodeOffset
Get the total required size for the code.
Sourcepub fn stringify_code_bytes(&self) -> String
pub fn stringify_code_bytes(&self) -> String
Return the code in this mach buffer as a hex string for testing purposes.
Sourcepub fn data_mut(&mut self) -> &mut [u8] ⓘ
pub fn data_mut(&mut self) -> &mut [u8] ⓘ
Get a mutable slice of the code bytes, allowing patching post-passes.
Sourcepub fn user_stack_maps(&self) -> &[(CodeOffset, u32, UserStackMap)]
pub fn user_stack_maps(&self) -> &[(CodeOffset, u32, UserStackMap)]
Get the user stack map metadata for this code.
Sourcepub fn take_user_stack_maps(
&mut self,
) -> SmallVec<[(CodeOffset, u32, UserStackMap); 8]>
pub fn take_user_stack_maps( &mut self, ) -> SmallVec<[(CodeOffset, u32, UserStackMap); 8]>
Take this buffer’s user stack map metadata.
Sourcepub fn call_sites(&self) -> impl Iterator<Item = MachCallSiteItem<'_>> + '_
pub fn call_sites(&self) -> impl Iterator<Item = MachCallSiteItem<'_>> + '_
Get the list of call sites for this code, along with associated exception handlers.
Each item yielded by the returned iterator is a struct with:
- The call site metadata record, with a
ret_addrfield directly accessible and denoting the offset of the return address into this buffer’s code. - The slice of pairs of exception tags and code offsets denoting exception-handler entry points associated with this call site.
Sourcepub fn frame_layout(&self) -> Option<&MachBufferFrameLayout>
pub fn frame_layout(&self) -> Option<&MachBufferFrameLayout>
Get the frame layout, if known.
Sourcepub fn patchable_call_sites(
&self,
) -> impl Iterator<Item = &MachPatchableCallSite> + '_
pub fn patchable_call_sites( &self, ) -> impl Iterator<Item = &MachPatchableCallSite> + '_
Get the list of patchable call sites for this code.
Each location in the buffer contains the bytes for a call
instruction to the specified target. If the call is to be
patched out, the bytes in the region should be replaced with
those given in the MachBufferFinalized::nop array, repeated
as many times as necessary. (The length of the patchable
region is guaranteed to be an integer multiple of that NOP
unit size.)
Trait Implementations§
Source§impl Clone for MachBufferFinalized
impl Clone for MachBufferFinalized
Source§fn clone(&self) -> MachBufferFinalized
fn clone(&self) -> MachBufferFinalized
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MachBufferFinalized
impl Debug for MachBufferFinalized
Source§impl Deref for MachBufferFinalized
impl Deref for MachBufferFinalized
Source§impl DerefMut for MachBufferFinalized
impl DerefMut for MachBufferFinalized
Source§impl<'de> Deserialize<'de> for MachBufferFinalized
Available on crate feature enable-serde only.
impl<'de> Deserialize<'de> for MachBufferFinalized
enable-serde only.Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for MachBufferFinalized
impl PartialEq for MachBufferFinalized
Source§impl Serialize for MachBufferFinalized
Available on crate feature enable-serde only.
impl Serialize for MachBufferFinalized
enable-serde only.