@@ -305,8 +305,8 @@ fn main() {
305
305
_ => { }
306
306
}
307
307
}
308
- } else {
309
- // This arm is executed when cargo-miri runs `cargo rustc` with the `RUSTC ` env var set to itself:
308
+ } else if let Some ( "rustc" ) = std :: env :: args ( ) . nth ( 1 ) . as_ref ( ) . map ( AsRef :: as_ref ) {
309
+ // This arm is executed when cargo-miri runs `cargo rustc` with the `RUSTC_WRAPPER ` env var set to itself:
310
310
// Dependencies get dispatched to rustc, the final test/binary to miri.
311
311
312
312
let home = option_env ! ( "RUSTUP_HOME" ) . or ( option_env ! ( "MULTIRUST_HOME" ) ) ;
@@ -332,11 +332,11 @@ fn main() {
332
332
333
333
// this conditional check for the --sysroot flag is there so users can call `cargo-miri` directly
334
334
// without having to pass --sysroot or anything
335
+ let rustc_args = std:: env:: args ( ) . skip ( 2 ) ;
335
336
let mut args: Vec < String > = if std:: env:: args ( ) . any ( |s| s == "--sysroot" ) {
336
- std :: env :: args ( ) . skip ( 1 ) . collect ( )
337
+ rustc_args . collect ( )
337
338
} else {
338
- std:: env:: args ( )
339
- . skip ( 1 )
339
+ rustc_args
340
340
. chain ( Some ( "--sysroot" . to_owned ( ) ) )
341
341
. chain ( Some ( sys_root) )
342
342
. collect ( )
@@ -365,6 +365,8 @@ fn main() {
365
365
Err ( ref e) if miri_enabled => panic ! ( "error during miri run: {:?}" , e) ,
366
366
Err ( ref e) => panic ! ( "error during rustc call: {:?}" , e) ,
367
367
}
368
+ } else {
369
+ eprintln ! ( "Unexpected call: Must be called with either `miri` or `rustc` as first argument." )
368
370
}
369
371
}
370
372
@@ -389,7 +391,7 @@ where
389
391
let path = std:: env:: current_exe ( ) . expect ( "current executable path invalid" ) ;
390
392
let exit_status = Command :: new ( "cargo" )
391
393
. args ( & args)
392
- . env ( "RUSTC " , path)
394
+ . env ( "RUSTC_WRAPPER " , path)
393
395
. spawn ( )
394
396
. expect ( "could not run cargo" )
395
397
. wait ( )
0 commit comments