Skip to content

Commit cef68fc

Browse files
committed
Fix deny(unused) of an unused import with SGX + Miri
1 parent 7b7c103 commit cef68fc

File tree

2 files changed

+33
-25
lines changed

2 files changed

+33
-25
lines changed

src/backtrace/libunwind.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ impl Frame {
4848
// the address here, which could be later mapped to correct function.
4949
#[cfg(all(target_env = "sgx", target_vendor = "fortanix"))]
5050
{
51-
let image_base = super::get_image_base();
51+
let image_base = super::sgx_image_base::get_image_base();
5252
ip = usize::wrapping_sub(ip as usize, image_base as _) as _;
5353
}
5454
ip

src/backtrace/mod.rs

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -125,39 +125,47 @@ impl fmt::Debug for Frame {
125125
}
126126
}
127127

128-
#[cfg(all(target_env = "sgx", target_vendor = "fortanix", not(feature = "std")))]
129-
mod sgx_no_std_image_base {
128+
#[cfg(all(target_env = "sgx", target_vendor = "fortanix", not(miri)))]
129+
mod sgx_image_base {
130130
use core::ffi::c_void;
131-
use core::sync::atomic::{AtomicUsize, Ordering::SeqCst};
132131

133-
static IMAGE_BASE: AtomicUsize = AtomicUsize::new(0);
132+
#[cfg(not(feature = "std"))]
133+
pub(crate) mod imp {
134+
use core::sync::atomic::{AtomicUsize, Ordering::SeqCst};
134135

135-
/// Set the image base address. This is only available for Fortanix SGX
136-
/// target when the `std` feature is not enabled. This can be used in the
137-
/// standard library to set the correct base address.
138-
#[doc(hidden)]
139-
pub fn set_image_base(base_addr: *mut c_void) {
140-
IMAGE_BASE.store(base_addr as _, SeqCst);
141-
}
136+
static IMAGE_BASE: AtomicUsize = AtomicUsize::new(0);
142137

143-
pub(crate) fn get_image_base() -> *mut c_void {
144-
IMAGE_BASE.load(SeqCst) as _
145-
}
146-
}
138+
/// Set the image base address. This is only available for Fortanix SGX
139+
/// target when the `std` feature is not enabled. This can be used in the
140+
/// standard library to set the correct base address.
141+
#[doc(hidden)]
142+
pub fn set_image_base(base_addr: *mut c_void) {
143+
IMAGE_BASE.store(base_addr as _, SeqCst);
144+
}
147145

148-
#[cfg(all(target_env = "sgx", target_vendor = "fortanix", not(feature = "std")))]
149-
pub use self::sgx_no_std_image_base::set_image_base;
146+
pub(crate) fn get_image_base() -> *mut c_void {
147+
IMAGE_BASE.load(SeqCst) as _
148+
}
149+
}
150150

151-
#[cfg(all(target_env = "sgx", target_vendor = "fortanix", not(feature = "std")))]
152-
#[deny(unused)]
153-
pub(crate) use self::sgx_no_std_image_base::get_image_base;
151+
#[cfg(feature = "std")]
152+
mod imp {
153+
pub(crate) fn get_image_base() -> *mut c_void {
154+
std::os::fortanix_sgx::mem::image_base() as _
155+
}
156+
}
154157

155-
#[cfg(all(target_env = "sgx", target_vendor = "fortanix", feature = "std"))]
156-
#[deny(unused)]
157-
pub(crate) fn get_image_base() -> *mut c_void {
158-
std::os::fortanix_sgx::mem::image_base() as _
158+
pub(crate) use imp::get_image_base;
159159
}
160160

161+
#[cfg(all(
162+
target_env = "sgx",
163+
target_vendor = "fortanix",
164+
not(feature = "std"),
165+
not(miri)
166+
))]
167+
pub use sgx_image_base::imp::set_image_base;
168+
161169
cfg_if::cfg_if! {
162170
// This needs to come first, to ensure that
163171
// Miri takes priority over the host platform

0 commit comments

Comments
 (0)