@@ -125,39 +125,49 @@ impl fmt::Debug for Frame {
125
125
}
126
126
}
127
127
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
+ }
141
149
}
142
150
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;
150
154
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
+ }
154
159
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;
159
161
}
160
162
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
+
161
171
cfg_if:: cfg_if! {
162
172
// This needs to come first, to ensure that
163
173
// Miri takes priority over the host platform
0 commit comments