Skip to main content

EvalContextExt

Trait EvalContextExt 

Source
pub trait EvalContextExt<'tcx>: MiriInterpCxExt<'tcx> {
    // Provided methods
    fn getaddrinfo(
        &mut self,
        node: &OpTy<'tcx>,
        service: &OpTy<'tcx>,
        hints: &OpTy<'tcx>,
        res: &OpTy<'tcx>,
    ) -> InterpResult<'tcx, Scalar> { ... }
    fn freeaddrinfo(&mut self, res: &OpTy<'tcx>) -> InterpResult<'tcx> { ... }
    fn read_socket_address(
        &self,
        address: &OpTy<'tcx>,
        address_len: &OpTy<'tcx>,
        foreign_name: &'static str,
    ) -> InterpResult<'tcx, Result<SocketAddr, IoError>> { ... }
    fn write_socket_address(
        &mut self,
        address: &SocketAddr,
        address_ptr: Pointer,
        address_len_ptr: Pointer,
        foreign_name: &'static str,
    ) -> InterpResult<'tcx> { ... }
}

Provided Methods§

Source

fn getaddrinfo( &mut self, node: &OpTy<'tcx>, service: &OpTy<'tcx>, hints: &OpTy<'tcx>, res: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>

Source

fn freeaddrinfo(&mut self, res: &OpTy<'tcx>) -> InterpResult<'tcx>

Source

fn read_socket_address( &self, address: &OpTy<'tcx>, address_len: &OpTy<'tcx>, foreign_name: &'static str, ) -> InterpResult<'tcx, Result<SocketAddr, IoError>>

Attempt to turn an address and length operand into a standard library socket address.

Returns an IO error should the address length not match the address family length.

Source

fn write_socket_address( &mut self, address: &SocketAddr, address_ptr: Pointer, address_len_ptr: Pointer, foreign_name: &'static str, ) -> InterpResult<'tcx>

Attempt to write a standard library socket address into a pointer.

The address_len_ptr parameter serves both as input and output parameter. On input, it points to the size of the buffer address_ptr points to, and on output it points to the non-truncated size of the written address in the buffer pointed to by address_ptr.

If the address buffer doesn’t fit the whole address, the address is truncated to not overflow the buffer.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<'tcx> EvalContextExt<'tcx> for MiriInterpCx<'tcx>