@@ -172,48 +172,41 @@ fn main() {
172172 init_early_loggers ( ) ;
173173
174174 // Parse our arguments and split them across `rustc` and `miri`.
175- let mut validate = true ;
176- let mut stacked_borrows = true ;
177- let mut check_alignment = true ;
178- let mut communicate = false ;
179- let mut ignore_leaks = false ;
180- let mut seed: Option < u64 > = None ;
181- let mut tracked_pointer_tag: Option < miri:: PtrId > = None ;
182- let mut tracked_call_id: Option < miri:: CallId > = None ;
183- let mut tracked_alloc_id: Option < miri:: AllocId > = None ;
175+ let mut miri_config = miri:: MiriConfig :: default ( ) ;
184176 let mut rustc_args = vec ! [ ] ;
185- let mut crate_args = vec ! [ ] ;
186177 let mut after_dashdash = false ;
187- let mut excluded_env_vars = vec ! [ ] ;
188178 for arg in env:: args ( ) {
189179 if rustc_args. is_empty ( ) {
190180 // Very first arg: binary name.
191181 rustc_args. push ( arg) ;
192182 } else if after_dashdash {
193183 // Everything that comes after `--` is forwarded to the interpreted crate.
194- crate_args . push ( arg) ;
184+ miri_config . args . push ( arg) ;
195185 } else {
196186 match arg. as_str ( ) {
197187 "-Zmiri-disable-validation" => {
198- validate = false ;
188+ miri_config . validate = false ;
199189 }
200190 "-Zmiri-disable-stacked-borrows" => {
201- stacked_borrows = false ;
191+ miri_config . stacked_borrows = false ;
202192 }
203193 "-Zmiri-disable-alignment-check" => {
204- check_alignment = false ;
194+ miri_config. check_alignment = miri:: AlignmentCheck :: None ;
195+ }
196+ "-Zmiri-symbolic-alignment-check" => {
197+ miri_config. check_alignment = miri:: AlignmentCheck :: Symbolic ;
205198 }
206199 "-Zmiri-disable-isolation" => {
207- communicate = true ;
200+ miri_config . communicate = true ;
208201 }
209202 "-Zmiri-ignore-leaks" => {
210- ignore_leaks = true ;
203+ miri_config . ignore_leaks = true ;
211204 }
212205 "--" => {
213206 after_dashdash = true ;
214207 }
215208 arg if arg. starts_with ( "-Zmiri-seed=" ) => {
216- if seed. is_some ( ) {
209+ if miri_config . seed . is_some ( ) {
217210 panic ! ( "Cannot specify -Zmiri-seed multiple times!" ) ;
218211 }
219212 let seed_raw = hex:: decode ( arg. strip_prefix ( "-Zmiri-seed=" ) . unwrap ( ) )
@@ -234,10 +227,10 @@ fn main() {
234227
235228 let mut bytes = [ 0 ; 8 ] ;
236229 bytes[ ..seed_raw. len ( ) ] . copy_from_slice ( & seed_raw) ;
237- seed = Some ( u64:: from_be_bytes ( bytes) ) ;
230+ miri_config . seed = Some ( u64:: from_be_bytes ( bytes) ) ;
238231 }
239232 arg if arg. starts_with ( "-Zmiri-env-exclude=" ) => {
240- excluded_env_vars
233+ miri_config . excluded_env_vars
241234 . push ( arg. strip_prefix ( "-Zmiri-env-exclude=" ) . unwrap ( ) . to_owned ( ) ) ;
242235 }
243236 arg if arg. starts_with ( "-Zmiri-track-pointer-tag=" ) => {
@@ -249,7 +242,7 @@ fn main() {
249242 ) ,
250243 } ;
251244 if let Some ( id) = miri:: PtrId :: new ( id) {
252- tracked_pointer_tag = Some ( id) ;
245+ miri_config . tracked_pointer_tag = Some ( id) ;
253246 } else {
254247 panic ! ( "-Zmiri-track-pointer-tag requires a nonzero argument" ) ;
255248 }
@@ -263,7 +256,7 @@ fn main() {
263256 ) ,
264257 } ;
265258 if let Some ( id) = miri:: CallId :: new ( id) {
266- tracked_call_id = Some ( id) ;
259+ miri_config . tracked_call_id = Some ( id) ;
267260 } else {
268261 panic ! ( "-Zmiri-track-call-id requires a nonzero argument" ) ;
269262 }
@@ -276,7 +269,7 @@ fn main() {
276269 err
277270 ) ,
278271 } ;
279- tracked_alloc_id = Some ( miri:: AllocId ( id) ) ;
272+ miri_config . tracked_alloc_id = Some ( miri:: AllocId ( id) ) ;
280273 }
281274 _ => {
282275 // Forward to rustc.
@@ -287,19 +280,6 @@ fn main() {
287280 }
288281
289282 debug ! ( "rustc arguments: {:?}" , rustc_args) ;
290- debug ! ( "crate arguments: {:?}" , crate_args) ;
291- let miri_config = miri:: MiriConfig {
292- validate,
293- stacked_borrows,
294- check_alignment,
295- communicate,
296- ignore_leaks,
297- excluded_env_vars,
298- seed,
299- args : crate_args,
300- tracked_pointer_tag,
301- tracked_call_id,
302- tracked_alloc_id,
303- } ;
283+ debug ! ( "crate arguments: {:?}" , miri_config. args) ;
304284 run_compiler ( rustc_args, & mut MiriCompilerCalls { miri_config } )
305285}
0 commit comments