[target.'cfg(any(all(target_arch = "wasm32", not(target_os = "emscripten")), all(target_vendor = "fortanix", target_env = "sgx")))'.dependencies]
dlmalloc = { version = "0.1", features = ['rustc-dep-of-std'] }
-[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies]
-mach = { version = "0.3.2", default-features = false, features = ['rustc-dep-of-std'] }
-
[target.x86_64-fortanix-unknown-sgx.dependencies]
fortanix-sgx-abi = { version = "0.3.2", features = ['rustc-dep-of-std'] }
#[allow(unused_extern_crates)]
extern crate libc;
-#[cfg(any(target_os = "macos", target_os = "ios"))]
-#[allow(unused_extern_crates)]
-extern crate mach;
-
// We always need an unwinder currently for backtraces
#[doc(masked)]
#[allow(unused_extern_crates)]
t: Timespec::zero(),
};
+ #[repr(C)]
+ #[derive(Copy, Clone)]
+ struct mach_timebase_info {
+ numer: u32,
+ denom: u32,
+ }
+ type mach_timebase_info_t = *mut mach_timebase_info;
+ type kern_return_t = libc::c_int;
+
impl Instant {
pub fn now() -> Instant {
- Instant { t: unsafe { mach::mach_time::mach_absolute_time() } }
+ extern "C" {
+ fn mach_absolute_time() -> u64;
+ }
+ Instant { t: unsafe { mach_absolute_time() } }
}
pub const fn zero() -> Instant {
Some(mul_div_u64(nanos, info.denom as u64, info.numer as u64))
}
- fn info() -> mach::mach_time::mach_timebase_info {
- static mut INFO: mach::mach_time::mach_timebase_info
- = mach::mach_time::mach_timebase_info {
+ fn info() -> mach_timebase_info {
+ static mut INFO: mach_timebase_info = mach_timebase_info {
numer: 0,
denom: 0,
};
// ... otherwise learn for ourselves ...
let mut info = mem::zeroed();
- mach::mach_time::mach_timebase_info(&mut info);
+ extern "C" {
+ fn mach_timebase_info(info: mach_timebase_info_t)
+ -> kern_return_t;
+ }
+
+ mach_timebase_info(&mut info);
// ... and attempt to be the one thread that stores it globally for
// all other threads
"bytesize", // Apache-2.0, cargo
"im-rc", // MPL-2.0+, cargo
"adler32", // BSD-3-Clause AND Zlib, cargo dep that isn't used
- "fortanix-sgx-abi", // MPL-2.0+, libstd but only for `sgx` target
"constant_time_eq", // CC0-1.0, rustfmt
"utf8parse", // Apache-2.0 OR MIT, cargo via strip-ansi-escapes
"vte", // Apache-2.0 OR MIT, cargo via strip-ansi-escapes
"sized-chunks", // MPL-2.0+, cargo via im-rc
+ // FIXME: this dependency violates the documentation comment above:
+ "fortanix-sgx-abi", // MPL-2.0+, libstd but only for `sgx` target
];
/// Which crates to check against the whitelist?