@@ -51,7 +51,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
5151 fn pthread_detach ( & mut self , thread : & OpTy < ' tcx , Provenance > ) -> InterpResult < ' tcx , i32 > {
5252 let this = self . eval_context_mut ( ) ;
5353
54- let thread_id = this. read_target_usize ( thread) ?;
54+ let thread_id = this. read_scalar ( thread) ? . to_int ( this . libc_ty_layout ( "pthread_t" ) . size ) ?;
5555 this. detach_thread (
5656 thread_id. try_into ( ) . expect ( "thread ID should fit in u32" ) ,
5757 /*allow_terminated_joined*/ false ,
@@ -64,7 +64,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
6464 let this = self . eval_context_mut ( ) ;
6565
6666 let thread_id = this. get_active_thread ( ) ;
67- Ok ( Scalar :: from_target_usize ( thread_id. into ( ) , this) )
67+ Ok ( Scalar :: from_uint ( thread_id. to_u32 ( ) , this. libc_ty_layout ( "pthread_t" ) . size ) )
6868 }
6969
7070 /// Set the name of the current thread. `max_name_len` is the maximal length of the name
@@ -77,7 +77,8 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
7777 ) -> InterpResult < ' tcx , Scalar < Provenance > > {
7878 let this = self . eval_context_mut ( ) ;
7979
80- let thread = ThreadId :: try_from ( thread. to_target_usize ( this) ?) . unwrap ( ) ;
80+ let thread = thread. to_int ( this. libc_ty_layout ( "pthread_t" ) . size ) ?;
81+ let thread = ThreadId :: try_from ( thread) . unwrap ( ) ;
8182 let name = name. to_pointer ( this) ?;
8283
8384 let name = this. read_c_str ( name) ?. to_owned ( ) ;
@@ -100,7 +101,8 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
100101 ) -> InterpResult < ' tcx , Scalar < Provenance > > {
101102 let this = self . eval_context_mut ( ) ;
102103
103- let thread = ThreadId :: try_from ( thread. to_target_usize ( this) ?) . unwrap ( ) ;
104+ let thread = thread. to_int ( this. libc_ty_layout ( "pthread_t" ) . size ) ?;
105+ let thread = ThreadId :: try_from ( thread) . unwrap ( ) ;
104106 let name_out = name_out. to_pointer ( this) ?;
105107 let len = len. to_target_usize ( this) ?;
106108
0 commit comments