Compiler

Struct Compiler 

Source
pub struct Compiler { /* private fields */ }
Expand description

The Compiler is the center piece of squid. It loads ELF files, runs passes and launches a backend to obtain a Runtime.

To obtain a Compiler instance, call Compiler::loader. Then you can run one or more passes with Compiler::run_pass before compiling the process image with Compiler::compile.

Implementations§

Source§

impl Compiler

Source

pub fn loader() -> Loader

Create a new Compiler by symbolically loading an ELF file and creating a process image. See the Loader for details about how the ELF-loader can be configured.

Source

pub fn run_pass<P>(&mut self, pass: &mut P) -> Result<(), P::Error>
where P: Pass,

Run a pass to inspect or modify the process image.

§Arguments
  1. pass: Anything that implements the Pass trait
Source

pub fn compile<'a, B: Backend>( self, backend: B, ) -> Result<B::Runtime, CompilerError<'a>>
where <B as Backend>::Error: 'a,

Compile the process image and create a Runtime. The type of the runtime is determined by the backend. Each backend can have its own runtime.

§Arguments
  1. backend: Anything that implements the Backend trait
Source

pub fn process_image(&self) -> &ProcessImage

Access the process image, which is the result of symbolically loading a binary

Source

pub fn event_pool(&self) -> &EventPool

Access the event pool, which manages all events that can be thrown at runtime

Trait Implementations§

Source§

impl Debug for Compiler

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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, 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.