@@ -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+
161169cfg_if:: cfg_if! {
162170 // This needs to come first, to ensure that
163171 // Miri takes priority over the host platform
0 commit comments