From b4ebe72b1be436d812ac758247ba6553b0d574c5 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Thu, 30 Aug 2018 09:04:57 +0200 Subject: [PATCH] stack address functions for macOS --- src/fn_call.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/fn_call.rs b/src/fn_call.rs index d16e024db47d..167703c0f04c 100644 --- a/src/fn_call.rs +++ b/src/fn_call.rs @@ -544,16 +544,21 @@ impl<'a, 'mir, 'tcx: 'mir + 'a> EvalContextExt<'tcx, 'mir> for EvalContext<'a, ' // Determining stack base address "pthread_attr_init" | "pthread_attr_destroy" | "pthread_attr_get_np" | - "pthread_getattr_np" | "pthread_self" => { + "pthread_getattr_np" | "pthread_self" | "pthread_get_stacksize_np" => { self.write_null(dest)?; } "pthread_attr_getstack" => { // second argument is where we are supposed to write the stack size let ptr = self.ref_to_mplace(self.read_value(args[1])?)?; - self.write_scalar(Scalar::from_int(0x80000, args[1].layout.size), ptr.into())?; + let stackaddr = Scalar::from_int(0x80000, args[1].layout.size); // just any address + self.write_scalar(stackaddr, ptr.into())?; // return 0 self.write_null(dest)?; } + "pthread_get_stackaddr_np" => { + let stackaddr = Scalar::from_int(0x80000, dest.layout.size); // just any address + self.write_scalar(stackaddr, dest)?; + } // Stub out calls for condvar, mutex and rwlock to just return 0 "pthread_mutexattr_init" | "pthread_mutexattr_settype" | "pthread_mutex_init" |