@@ -194,7 +194,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx> for EvalContext<'a, 'mir, '
194
194
195
195
match & link_name[ ..] {
196
196
"malloc" => {
197
- let size = self . value_to_scalar ( args[ 0 ] ) ?. to_u64 ( ) ?;
197
+ let size = self . value_to_scalar ( args[ 0 ] ) ?. to_usize ( self ) ?;
198
198
if size == 0 {
199
199
self . write_null ( dest, dest_ty) ?;
200
200
} else {
@@ -221,7 +221,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx> for EvalContext<'a, 'mir, '
221
221
//
222
222
// libc::syscall(NR_GETRANDOM, buf.as_mut_ptr(), buf.len(), GRND_NONBLOCK)
223
223
// is called if a `HashMap` is created the regular way.
224
- match self . value_to_scalar ( args[ 0 ] ) ?. to_u64 ( ) ? {
224
+ match self . value_to_scalar ( args[ 0 ] ) ?. to_usize ( self ) ? {
225
225
318 | 511 => {
226
226
return err ! ( Unimplemented (
227
227
"miri does not support random number generators" . to_owned( ) ,
@@ -293,7 +293,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx> for EvalContext<'a, 'mir, '
293
293
"memcmp" => {
294
294
let left = self . into_ptr ( args[ 0 ] . value ) ?;
295
295
let right = self . into_ptr ( args[ 1 ] . value ) ?;
296
- let n = Size :: from_bytes ( self . value_to_scalar ( args[ 2 ] ) ?. to_u64 ( ) ?) ;
296
+ let n = Size :: from_bytes ( self . value_to_scalar ( args[ 2 ] ) ?. to_usize ( self ) ?) ;
297
297
298
298
let result = {
299
299
let left_bytes = self . memory . read_bytes ( left, n) ?;
@@ -317,7 +317,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx> for EvalContext<'a, 'mir, '
317
317
"memrchr" => {
318
318
let ptr = self . into_ptr ( args[ 0 ] . value ) ?;
319
319
let val = self . value_to_scalar ( args[ 1 ] ) ?. to_bytes ( ) ? as u8 ;
320
- let num = self . value_to_scalar ( args[ 2 ] ) ?. to_u64 ( ) ?;
320
+ let num = self . value_to_scalar ( args[ 2 ] ) ?. to_usize ( self ) ?;
321
321
if let Some ( idx) = self . memory . read_bytes ( ptr, Size :: from_bytes ( num) ) ?. iter ( ) . rev ( ) . position (
322
322
|& c| c == val,
323
323
)
@@ -332,7 +332,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx> for EvalContext<'a, 'mir, '
332
332
"memchr" => {
333
333
let ptr = self . into_ptr ( args[ 0 ] . value ) ?;
334
334
let val = self . value_to_scalar ( args[ 1 ] ) ?. to_bytes ( ) ? as u8 ;
335
- let num = self . value_to_scalar ( args[ 2 ] ) ?. to_u64 ( ) ?;
335
+ let num = self . value_to_scalar ( args[ 2 ] ) ?. to_usize ( self ) ?;
336
336
if let Some ( idx) = self . memory . read_bytes ( ptr, Size :: from_bytes ( num) ) ?. iter ( ) . position (
337
337
|& c| c == val,
338
338
)
@@ -457,7 +457,7 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx> for EvalContext<'a, 'mir, '
457
457
}
458
458
459
459
"sysconf" => {
460
- let name = self . value_to_scalar ( args[ 0 ] ) ?. to_u64 ( ) ?;
460
+ let name = self . value_to_scalar ( args[ 0 ] ) ?. to_usize ( self ) ?;
461
461
462
462
trace ! ( "sysconf() called with name {}" , name) ;
463
463
// cache the sysconf integers via miri's global cache
@@ -646,8 +646,8 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx> for EvalContext<'a, 'mir, '
646
646
match & path[ ..] {
647
647
// Allocators are magic. They have no MIR, even when the rest of libstd does.
648
648
"alloc::alloc::::__rust_alloc" => {
649
- let size = self . value_to_scalar ( args[ 0 ] ) ?. to_u64 ( ) ?;
650
- let align = self . value_to_scalar ( args[ 1 ] ) ?. to_u64 ( ) ?;
649
+ let size = self . value_to_scalar ( args[ 0 ] ) ?. to_usize ( self ) ?;
650
+ let align = self . value_to_scalar ( args[ 1 ] ) ?. to_usize ( self ) ?;
651
651
if size == 0 {
652
652
return err ! ( HeapAllocZeroBytes ) ;
653
653
}
@@ -660,8 +660,8 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx> for EvalContext<'a, 'mir, '
660
660
self . write_scalar ( dest, Scalar :: Ptr ( ptr) , dest_ty) ?;
661
661
}
662
662
"alloc::alloc::::__rust_alloc_zeroed" => {
663
- let size = self . value_to_scalar ( args[ 0 ] ) ?. to_u64 ( ) ?;
664
- let align = self . value_to_scalar ( args[ 1 ] ) ?. to_u64 ( ) ?;
663
+ let size = self . value_to_scalar ( args[ 0 ] ) ?. to_usize ( self ) ?;
664
+ let align = self . value_to_scalar ( args[ 1 ] ) ?. to_usize ( self ) ?;
665
665
if size == 0 {
666
666
return err ! ( HeapAllocZeroBytes ) ;
667
667
}
@@ -676,8 +676,8 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx> for EvalContext<'a, 'mir, '
676
676
}
677
677
"alloc::alloc::::__rust_dealloc" => {
678
678
let ptr = self . into_ptr ( args[ 0 ] . value ) ?. to_ptr ( ) ?;
679
- let old_size = self . value_to_scalar ( args[ 1 ] ) ?. to_u64 ( ) ?;
680
- let align = self . value_to_scalar ( args[ 2 ] ) ?. to_u64 ( ) ?;
679
+ let old_size = self . value_to_scalar ( args[ 1 ] ) ?. to_usize ( self ) ?;
680
+ let align = self . value_to_scalar ( args[ 2 ] ) ?. to_usize ( self ) ?;
681
681
if old_size == 0 {
682
682
return err ! ( HeapAllocZeroBytes ) ;
683
683
}
@@ -692,9 +692,9 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx> for EvalContext<'a, 'mir, '
692
692
}
693
693
"alloc::alloc::::__rust_realloc" => {
694
694
let ptr = self . into_ptr ( args[ 0 ] . value ) ?. to_ptr ( ) ?;
695
- let old_size = self . value_to_scalar ( args[ 1 ] ) ?. to_u64 ( ) ?;
696
- let align = self . value_to_scalar ( args[ 2 ] ) ?. to_u64 ( ) ?;
697
- let new_size = self . value_to_scalar ( args[ 3 ] ) ?. to_u64 ( ) ?;
695
+ let old_size = self . value_to_scalar ( args[ 1 ] ) ?. to_usize ( self ) ?;
696
+ let align = self . value_to_scalar ( args[ 2 ] ) ?. to_usize ( self ) ?;
697
+ let new_size = self . value_to_scalar ( args[ 3 ] ) ?. to_usize ( self ) ?;
698
698
if old_size == 0 || new_size == 0 {
699
699
return err ! ( HeapAllocZeroBytes ) ;
700
700
}
0 commit comments