@@ -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