pub trait EvalContextExt<'tcx>: MiriInterpCxExt<'tcx> {
Show 34 methods
// Provided methods
fn open(
&mut self,
dirfd: Option<&OpTy<'tcx>>,
path_raw: &OpTy<'tcx>,
flag: &OpTy<'tcx>,
varargs: Varargs<'tcx, '_>,
) -> InterpResult<'tcx, Scalar> { ... }
fn lseek(
&mut self,
fd_num: i32,
offset: i128,
whence: i32,
dest: &MPlaceTy<'tcx>,
) -> InterpResult<'tcx> { ... }
fn unlink(&mut self, path_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar> { ... }
fn symlink(
&mut self,
target_op: &OpTy<'tcx>,
linkpath_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn linkat(
&mut self,
oldfd_op: &OpTy<'tcx>,
oldpath_op: &OpTy<'tcx>,
newfd_op: &OpTy<'tcx>,
newpath_op: &OpTy<'tcx>,
flags_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn stat(
&mut self,
path_op: &OpTy<'tcx>,
buf_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn lstat(
&mut self,
path_op: &OpTy<'tcx>,
buf_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn fstat(
&mut self,
fd_op: &OpTy<'tcx>,
buf_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn fstatat(
&mut self,
dirfd_op: &OpTy<'tcx>,
path_op: &OpTy<'tcx>,
buf_op: &OpTy<'tcx>,
flags_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn linux_statx(
&mut self,
dirfd_op: &OpTy<'tcx>,
pathname_op: &OpTy<'tcx>,
flags_op: &OpTy<'tcx>,
mask_op: &OpTy<'tcx>,
statxbuf_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn chmod(
&mut self,
path_op: &OpTy<'tcx>,
mode_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn fchmod(
&mut self,
fd_op: &OpTy<'tcx>,
mode_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn rename(
&mut self,
oldpath_op: &OpTy<'tcx>,
newpath_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn mkdir(
&mut self,
path_op: &OpTy<'tcx>,
mode_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn rmdir(&mut self, path_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar> { ... }
fn opendir(&mut self, name_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar> { ... }
fn readdir(
&mut self,
dirp_op: &OpTy<'tcx>,
dest: &MPlaceTy<'tcx>,
buf_type: &'static str,
) -> InterpResult<'tcx> { ... }
fn dirfd(
&mut self,
dirp_op: &OpTy<'tcx>,
dest: &MPlaceTy<'tcx>,
) -> InterpResult<'tcx> { ... }
fn closedir(&mut self, dirp_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar> { ... }
fn ftruncate64(
&mut self,
fd_num: i32,
length: i128,
) -> InterpResult<'tcx, Scalar> { ... }
fn posix_fallocate(
&mut self,
fd_num: i32,
offset: i64,
len: i64,
) -> InterpResult<'tcx, Scalar> { ... }
fn linux_fallocate(
&mut self,
fd: i32,
mode: i32,
offset: i64,
size: i64,
) -> InterpResult<'tcx, Scalar> { ... }
fn fallocate_impl(
&self,
fd_num: i32,
offset: i64,
len: i64,
) -> InterpResult<'tcx, Result<(), IoError>> { ... }
fn fsync(&mut self, fd_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar> { ... }
fn ffullsync_fd(&mut self, fd_num: i32) -> InterpResult<'tcx, Scalar> { ... }
fn fdatasync(&mut self, fd_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar> { ... }
fn futimens(
&mut self,
fd_op: &OpTy<'tcx>,
times_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn utimensat(
&mut self,
dirfd_op: &OpTy<'tcx>,
path_op: &OpTy<'tcx>,
times_op: &OpTy<'tcx>,
flags_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn linux_sync_file_range(
&mut self,
fd_op: &OpTy<'tcx>,
offset_op: &OpTy<'tcx>,
nbytes_op: &OpTy<'tcx>,
flags_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn readlink(
&mut self,
pathname_op: &OpTy<'tcx>,
buf_op: &OpTy<'tcx>,
bufsize_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, i64> { ... }
fn isatty(&mut self, miri_fd: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar> { ... }
fn realpath(
&mut self,
path_op: &OpTy<'tcx>,
processed_path_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn mkstemp(
&mut self,
template_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar> { ... }
fn linux_copy_file_range(
&mut self,
fd_in_op: &OpTy<'tcx>,
off_in_op: &OpTy<'tcx>,
fd_out_op: &OpTy<'tcx>,
off_out_op: &OpTy<'tcx>,
len_op: &OpTy<'tcx>,
flags_op: &OpTy<'tcx>,
dest: &MPlaceTy<'tcx>,
) -> InterpResult<'tcx> { ... }
}Provided Methods§
fn open( &mut self, dirfd: Option<&OpTy<'tcx>>, path_raw: &OpTy<'tcx>, flag: &OpTy<'tcx>, varargs: Varargs<'tcx, '_>, ) -> InterpResult<'tcx, Scalar>
fn lseek( &mut self, fd_num: i32, offset: i128, whence: i32, dest: &MPlaceTy<'tcx>, ) -> InterpResult<'tcx>
fn unlink(&mut self, path_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar>
fn symlink( &mut self, target_op: &OpTy<'tcx>, linkpath_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn linkat( &mut self, oldfd_op: &OpTy<'tcx>, oldpath_op: &OpTy<'tcx>, newfd_op: &OpTy<'tcx>, newpath_op: &OpTy<'tcx>, flags_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn stat( &mut self, path_op: &OpTy<'tcx>, buf_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn lstat( &mut self, path_op: &OpTy<'tcx>, buf_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn fstat( &mut self, fd_op: &OpTy<'tcx>, buf_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn fstatat( &mut self, dirfd_op: &OpTy<'tcx>, path_op: &OpTy<'tcx>, buf_op: &OpTy<'tcx>, flags_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn linux_statx( &mut self, dirfd_op: &OpTy<'tcx>, pathname_op: &OpTy<'tcx>, flags_op: &OpTy<'tcx>, mask_op: &OpTy<'tcx>, statxbuf_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn chmod( &mut self, path_op: &OpTy<'tcx>, mode_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn fchmod( &mut self, fd_op: &OpTy<'tcx>, mode_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn rename( &mut self, oldpath_op: &OpTy<'tcx>, newpath_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn mkdir( &mut self, path_op: &OpTy<'tcx>, mode_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn rmdir(&mut self, path_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar>
fn opendir(&mut self, name_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar>
fn readdir( &mut self, dirp_op: &OpTy<'tcx>, dest: &MPlaceTy<'tcx>, buf_type: &'static str, ) -> InterpResult<'tcx>
fn dirfd( &mut self, dirp_op: &OpTy<'tcx>, dest: &MPlaceTy<'tcx>, ) -> InterpResult<'tcx>
fn closedir(&mut self, dirp_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar>
fn ftruncate64( &mut self, fd_num: i32, length: i128, ) -> InterpResult<'tcx, Scalar>
Sourcefn posix_fallocate(
&mut self,
fd_num: i32,
offset: i64,
len: i64,
) -> InterpResult<'tcx, Scalar>
fn posix_fallocate( &mut self, fd_num: i32, offset: i64, len: i64, ) -> InterpResult<'tcx, Scalar>
NOTE: According to the man page of possix_fallocate, it returns the error code instead
of setting errno.
fn linux_fallocate( &mut self, fd: i32, mode: i32, offset: i64, size: i64, ) -> InterpResult<'tcx, Scalar>
Sourcefn fallocate_impl(
&self,
fd_num: i32,
offset: i64,
len: i64,
) -> InterpResult<'tcx, Result<(), IoError>>
fn fallocate_impl( &self, fd_num: i32, offset: i64, len: i64, ) -> InterpResult<'tcx, Result<(), IoError>>
Shared logic between posix_fallocate and linux_fallocate.
fn fsync(&mut self, fd_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar>
fn ffullsync_fd(&mut self, fd_num: i32) -> InterpResult<'tcx, Scalar>
fn fdatasync(&mut self, fd_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar>
Sourcefn futimens(
&mut self,
fd_op: &OpTy<'tcx>,
times_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar>
fn futimens( &mut self, fd_op: &OpTy<'tcx>, times_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
futimens(fd, times): set fd’s access/modification times. times is [atime, mtime], or
NULL to set both to now.
Sourcefn utimensat(
&mut self,
dirfd_op: &OpTy<'tcx>,
path_op: &OpTy<'tcx>,
times_op: &OpTy<'tcx>,
flags_op: &OpTy<'tcx>,
) -> InterpResult<'tcx, Scalar>
fn utimensat( &mut self, dirfd_op: &OpTy<'tcx>, path_op: &OpTy<'tcx>, times_op: &OpTy<'tcx>, flags_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
utimensat(dirfd, path, times, flags): like futimens, but for the file at path. With
AT_SYMLINK_NOFOLLOW, a symlink at path is updated itself rather than its target.
fn linux_sync_file_range( &mut self, fd_op: &OpTy<'tcx>, offset_op: &OpTy<'tcx>, nbytes_op: &OpTy<'tcx>, flags_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn readlink( &mut self, pathname_op: &OpTy<'tcx>, buf_op: &OpTy<'tcx>, bufsize_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, i64>
fn isatty(&mut self, miri_fd: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar>
fn realpath( &mut self, path_op: &OpTy<'tcx>, processed_path_op: &OpTy<'tcx>, ) -> InterpResult<'tcx, Scalar>
fn mkstemp(&mut self, template_op: &OpTy<'tcx>) -> InterpResult<'tcx, Scalar>
Sourcefn linux_copy_file_range(
&mut self,
fd_in_op: &OpTy<'tcx>,
off_in_op: &OpTy<'tcx>,
fd_out_op: &OpTy<'tcx>,
off_out_op: &OpTy<'tcx>,
len_op: &OpTy<'tcx>,
flags_op: &OpTy<'tcx>,
dest: &MPlaceTy<'tcx>,
) -> InterpResult<'tcx>
fn linux_copy_file_range( &mut self, fd_in_op: &OpTy<'tcx>, off_in_op: &OpTy<'tcx>, fd_out_op: &OpTy<'tcx>, off_out_op: &OpTy<'tcx>, len_op: &OpTy<'tcx>, flags_op: &OpTy<'tcx>, dest: &MPlaceTy<'tcx>, ) -> InterpResult<'tcx>
Only supports null offset pointers, i.e. copying from and advancing the file positions.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".