message: Use fmap2 to support passing an address.
diff: use core::{mem, ptr, result::Result as CoreResult, slice};
  use syscall::{
  self,
  - data::{Map, Stat as redox_stat, StatVfs as redox_statvfs, TimeSpec as redox_timespec},
  + data::{Map2, Stat as redox_stat, StatVfs as redox_statvfs, TimeSpec as redox_timespec},
  PtraceEvent, Result,
  };
  @@ -658,19 +658,20 @@ impl Pal for Sys {
  }
  unsafe fn mmap(
  - _addr: *mut c_void,
  + addr: *mut c_void,
  len: usize,
  prot: c_int,
  flags: c_int,
  fildes: c_int,
  off: off_t,
  ) -> *mut c_void {
  - let map = Map {
  + let map = Map2 {
  offset: off as usize,
  size: len,
  flags: syscall::MapFlags::from_bits_truncate(
  ((prot as usize) << 16) | ((flags as usize) & 0xFFFF),
  ),
  + address: addr as usize,
  };
  if flags & MAP_ANON == MAP_ANON {
  @@ -682,13 +683,13 @@ impl Pal for Sys {
  return !0 as *mut c_void;
  }
  - let addr = e(syscall::fmap(fd, &map)) as *mut c_void;
  + let addr = e(syscall::fmap2(fd, &map)) as *mut c_void;
  let _ = syscall::close(fd);
  addr
  } else {
  - e(syscall::fmap(fildes as usize, &map)) as *mut c_void
  + e(syscall::fmap2(fildes as usize, &map)) as *mut c_void
  }
  }
  