@@ -277,7 +277,7 @@ pub trait EvalContextExt<'a, 'mir, 'tcx: 'a+'mir>: crate::MiriEvalContextExt<'a,
277
277
278
278
"memrchr" => {
279
279
let ptr = this. read_scalar ( args[ 0 ] ) ?. not_undef ( ) ?;
280
- let val = this. read_scalar ( args[ 1 ] ) ?. to_bytes ( ) ? as u8 ;
280
+ let val = this. read_scalar ( args[ 1 ] ) ?. to_i32 ( ) ? as u8 ;
281
281
let num = this. read_scalar ( args[ 2 ] ) ?. to_usize ( this) ?;
282
282
if let Some ( idx) = this. memory ( ) . read_bytes ( ptr, Size :: from_bytes ( num) ) ?
283
283
. iter ( ) . rev ( ) . position ( |& c| c == val)
@@ -291,7 +291,7 @@ pub trait EvalContextExt<'a, 'mir, 'tcx: 'a+'mir>: crate::MiriEvalContextExt<'a,
291
291
292
292
"memchr" => {
293
293
let ptr = this. read_scalar ( args[ 0 ] ) ?. not_undef ( ) ?;
294
- let val = this. read_scalar ( args[ 1 ] ) ?. to_bytes ( ) ? as u8 ;
294
+ let val = this. read_scalar ( args[ 1 ] ) ?. to_i32 ( ) ? as u8 ;
295
295
let num = this. read_scalar ( args[ 2 ] ) ?. to_usize ( this) ?;
296
296
if let Some ( idx) = this. memory ( ) . read_bytes ( ptr, Size :: from_bytes ( num) ) ?. iter ( ) . position (
297
297
|& c| c == val,
@@ -379,9 +379,9 @@ pub trait EvalContextExt<'a, 'mir, 'tcx: 'a+'mir>: crate::MiriEvalContextExt<'a,
379
379
}
380
380
381
381
"write" => {
382
- let fd = this. read_scalar ( args[ 0 ] ) ?. to_bytes ( ) ?;
382
+ let fd = this. read_scalar ( args[ 0 ] ) ?. to_i32 ( ) ?;
383
383
let buf = this. read_scalar ( args[ 1 ] ) ?. not_undef ( ) ?;
384
- let n = this. read_scalar ( args[ 2 ] ) ?. to_bytes ( ) ? as u64 ;
384
+ let n = this. read_scalar ( args[ 2 ] ) ?. to_usize ( & * this . tcx ) ? ;
385
385
trace ! ( "Called write({:?}, {:?}, {:?})" , fd, buf, n) ;
386
386
let result = if fd == 1 || fd == 2 {
387
387
// stdout/stderr
@@ -489,18 +489,18 @@ pub trait EvalContextExt<'a, 'mir, 'tcx: 'a+'mir>: crate::MiriEvalContextExt<'a,
489
489
this. write_null ( dest) ?;
490
490
}
491
491
"pthread_key_delete" => {
492
- let key = this. read_scalar ( args[ 0 ] ) ?. to_bytes ( ) ?;
492
+ let key = this. read_scalar ( args[ 0 ] ) ?. to_bits ( args [ 0 ] . layout . size ) ?;
493
493
this. machine . tls . delete_tls_key ( key) ?;
494
494
// Return success (0)
495
495
this. write_null ( dest) ?;
496
496
}
497
497
"pthread_getspecific" => {
498
- let key = this. read_scalar ( args[ 0 ] ) ?. to_bytes ( ) ?;
498
+ let key = this. read_scalar ( args[ 0 ] ) ?. to_bits ( args [ 0 ] . layout . size ) ?;
499
499
let ptr = this. machine . tls . load_tls ( key) ?;
500
500
this. write_scalar ( ptr, dest) ?;
501
501
}
502
502
"pthread_setspecific" => {
503
- let key = this. read_scalar ( args[ 0 ] ) ?. to_bytes ( ) ?;
503
+ let key = this. read_scalar ( args[ 0 ] ) ?. to_bits ( args [ 0 ] . layout . size ) ?;
504
504
let new_ptr = this. read_scalar ( args[ 1 ] ) ?. not_undef ( ) ?;
505
505
this. machine . tls . store_tls ( key, new_ptr) ?;
506
506
@@ -586,12 +586,12 @@ pub trait EvalContextExt<'a, 'mir, 'tcx: 'a+'mir>: crate::MiriEvalContextExt<'a,
586
586
this. write_scalar ( Scalar :: from_uint ( key, dest. layout . size ) , dest) ?;
587
587
}
588
588
"TlsGetValue" => {
589
- let key = this. read_scalar ( args[ 0 ] ) ?. to_bytes ( ) ?;
589
+ let key = this. read_scalar ( args[ 0 ] ) ?. to_bits ( args [ 0 ] . layout . size ) ?;
590
590
let ptr = this. machine . tls . load_tls ( key) ?;
591
591
this. write_scalar ( ptr, dest) ?;
592
592
}
593
593
"TlsSetValue" => {
594
- let key = this. read_scalar ( args[ 0 ] ) ?. to_bytes ( ) ?;
594
+ let key = this. read_scalar ( args[ 0 ] ) ?. to_bits ( args [ 0 ] . layout . size ) ?;
595
595
let new_ptr = this. read_scalar ( args[ 1 ] ) ?. not_undef ( ) ?;
596
596
this. machine . tls . store_tls ( key, new_ptr) ?;
597
597
0 commit comments