@@ -125,39 +125,49 @@ 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 {
130- use core:: ffi:: c_void;
131- use core:: sync:: atomic:: { AtomicUsize , Ordering :: SeqCst } ;
132-
133- static IMAGE_BASE : AtomicUsize = AtomicUsize :: new ( 0 ) ;
134-
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 ) ;
128+ #[ cfg( all( target_env = "sgx" , target_vendor = "fortanix" , not( miri) ) ) ]
129+ mod sgx_image_base {
130+
131+ #[ cfg( not( feature = "std" ) ) ]
132+ pub ( crate ) mod imp {
133+ use core:: ffi:: c_void;
134+ use core:: sync:: atomic:: { AtomicUsize , Ordering :: SeqCst } ;
135+
136+ static IMAGE_BASE : AtomicUsize = AtomicUsize :: new ( 0 ) ;
137+
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+ }
145+
146+ pub ( crate ) fn get_image_base ( ) -> * mut c_void {
147+ IMAGE_BASE . load ( SeqCst ) as _
148+ }
141149 }
142150
143- pub ( crate ) fn get_image_base ( ) -> * mut c_void {
144- IMAGE_BASE . load ( SeqCst ) as _
145- }
146- }
147-
148- #[ cfg( all( target_env = "sgx" , target_vendor = "fortanix" , not( feature = "std" ) ) ) ]
149- pub use self :: sgx_no_std_image_base:: set_image_base;
151+ #[ cfg( feature = "std" ) ]
152+ mod imp {
153+ use core:: ffi:: c_void;
150154
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;
155+ pub ( crate ) fn get_image_base ( ) -> * mut c_void {
156+ std:: os:: fortanix_sgx:: mem:: image_base ( ) as _
157+ }
158+ }
154159
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 _
160+ pub ( crate ) use imp:: get_image_base;
159161}
160162
163+ #[ cfg( all(
164+ target_env = "sgx" ,
165+ target_vendor = "fortanix" ,
166+ not( feature = "std" ) ,
167+ not( miri)
168+ ) ) ]
169+ pub use sgx_image_base:: imp:: set_image_base;
170+
161171cfg_if:: cfg_if! {
162172 // This needs to come first, to ensure that
163173 // Miri takes priority over the host platform
0 commit comments