@@ -26,33 +26,33 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
2626 }
2727 "unsetenv" => {
2828 let result = this. unsetenv ( args[ 0 ] ) ?;
29- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
29+ this. write_scalar ( Scalar :: from_i32 ( result) , dest) ?;
3030 }
3131 "setenv" => {
3232 let result = this. setenv ( args[ 0 ] , args[ 1 ] ) ?;
33- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
33+ this. write_scalar ( Scalar :: from_i32 ( result) , dest) ?;
3434 }
3535 "getcwd" => {
3636 let result = this. getcwd ( args[ 0 ] , args[ 1 ] ) ?;
3737 this. write_scalar ( result, dest) ?;
3838 }
3939 "chdir" => {
4040 let result = this. chdir ( args[ 0 ] ) ?;
41- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
41+ this. write_scalar ( Scalar :: from_i32 ( result) , dest) ?;
4242 }
4343
4444 // File related shims
4545 "open" | "open64" => {
4646 let result = this. open ( args[ 0 ] , args[ 1 ] ) ?;
47- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
47+ this. write_scalar ( Scalar :: from_i32 ( result) , dest) ?;
4848 }
4949 "fcntl" => {
5050 let result = this. fcntl ( args[ 0 ] , args[ 1 ] , args. get ( 2 ) . cloned ( ) ) ?;
51- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
51+ this. write_scalar ( Scalar :: from_i32 ( result) , dest) ?;
5252 }
5353 "read" => {
5454 let result = this. read ( args[ 0 ] , args[ 1 ] , args[ 2 ] ) ?;
55- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
55+ this. write_scalar ( Scalar :: from_machine_isize ( result, this ) , dest) ?;
5656 }
5757 "write" => {
5858 let fd = this. read_scalar ( args[ 0 ] ) ?. to_i32 ( ) ?;
@@ -85,35 +85,36 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
8585 this. write ( args[ 0 ] , args[ 1 ] , args[ 2 ] ) ?
8686 } ;
8787 // Now, `result` is the value we return back to the program.
88- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
88+ this. write_scalar ( Scalar :: from_machine_isize ( result, this ) , dest) ?;
8989 }
9090 "unlink" => {
9191 let result = this. unlink ( args[ 0 ] ) ?;
92- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
92+ this. write_scalar ( Scalar :: from_i32 ( result) , dest) ?;
9393 }
9494 "symlink" => {
9595 let result = this. symlink ( args[ 0 ] , args[ 1 ] ) ?;
96- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
96+ this. write_scalar ( Scalar :: from_i32 ( result) , dest) ?;
9797 }
9898 "rename" => {
9999 let result = this. rename ( args[ 0 ] , args[ 1 ] ) ?;
100- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
100+ this. write_scalar ( Scalar :: from_i32 ( result) , dest) ?;
101101 }
102102 "mkdir" => {
103103 let result = this. mkdir ( args[ 0 ] , args[ 1 ] ) ?;
104- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
104+ this. write_scalar ( Scalar :: from_i32 ( result) , dest) ?;
105105 }
106106 "rmdir" => {
107107 let result = this. rmdir ( args[ 0 ] ) ?;
108- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
108+ this. write_scalar ( Scalar :: from_i32 ( result) , dest) ?;
109109 }
110110 "closedir" => {
111111 let result = this. closedir ( args[ 0 ] ) ?;
112- this. write_scalar ( Scalar :: from_int ( result, dest . layout . size ) , dest) ?;
112+ this. write_scalar ( Scalar :: from_i32 ( result) , dest) ?;
113113 }
114114 "lseek" | "lseek64" => {
115115 let result = this. lseek64 ( args[ 0 ] , args[ 1 ] , args[ 2 ] ) ?;
116- this. write_scalar ( Scalar :: from_int ( result, dest. layout . size ) , dest) ?;
116+ // "lseek" is only used on macOS which is 64bit-only, so `i64` always works.
117+ this. write_scalar ( Scalar :: from_i64 ( result) , dest) ?;
117118 }
118119
119120 // Allocation
@@ -165,8 +166,8 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
165166 let name = this. read_scalar ( args[ 0 ] ) ?. to_i32 ( ) ?;
166167
167168 let sysconfs = & [
168- ( "_SC_PAGESIZE" , Scalar :: from_int ( PAGE_SIZE , dest . layout . size ) ) ,
169- ( "_SC_NPROCESSORS_ONLN" , Scalar :: from_int ( NUM_CPUS , dest . layout . size ) ) ,
169+ ( "_SC_PAGESIZE" , Scalar :: from_int ( PAGE_SIZE , this . pointer_size ( ) ) ) ,
170+ ( "_SC_NPROCESSORS_ONLN" , Scalar :: from_int ( NUM_CPUS , this . pointer_size ( ) ) ) ,
170171 ] ;
171172 let mut result = None ;
172173 for & ( sysconf_name, value) in sysconfs {
0 commit comments