/* Assumption: stacks grow downward. */ static __inline__ void drd_start_using_mem_stack(const Addr a, const SizeT len) { thread_set_stack_min(thread_get_running_tid(), a - VG_STACK_REDZONE_SZB); drd_start_using_mem(a - VG_STACK_REDZONE_SZB, len + VG_STACK_REDZONE_SZB); }
static void drd_start_using_mem_stack_signal( const Addr a, const SizeT len, ThreadId tid_for_whom_the_signal_frame_is_being_constructed) { thread_set_vg_running_tid(VG_(get_running_tid)()); drd_start_using_mem(a, len); }
/** * Called by the core when the stack of a thread grows, to indicate that * the addresses in range [ a, a + len [ may now be used by the client. * Assumption: stacks grow downward. */ static __inline__ void drd_start_using_mem_stack2(const DrdThreadId tid, const Addr a, const SizeT len) { DRD_(thread_set_stack_min)(tid, a - VG_STACK_REDZONE_SZB); drd_start_using_mem(a - VG_STACK_REDZONE_SZB, len + VG_STACK_REDZONE_SZB, True); }
static void drd_start_using_mem_w_perms(const Addr a, const SizeT len, const Bool rr, const Bool ww, const Bool xx) { thread_set_vg_running_tid(VG_(get_running_tid)()); drd_start_using_mem(a, len); suppress_relocation_conflicts(a, len); }
static void drd_start_using_mem_w_perms(const Addr a, const SizeT len, const Bool rr, const Bool ww, const Bool xx, ULong di_handle) { DRD_(thread_set_vg_running_tid)(VG_(get_running_tid)()); drd_start_using_mem(a, len); DRD_(suppress_relocation_conflicts)(a, len); }
static void drd_start_using_mem_w_tid(const Addr a1, const SizeT len, ThreadId tid) { drd_start_using_mem(a1, len); }
static void drd_start_using_mem_w_ecu(const Addr a1, const SizeT len, UInt ec_uniq) { drd_start_using_mem(a1, len); }
/** * Callback function called by the Valgrind core before a stack area is * being used by a signal handler. * * @param[in] a Start of address range. * @param[in] len Address range length. * @param[in] tid Valgrind thread ID for whom the signal frame is being * constructed. */ static void drd_start_using_mem_stack_signal(const Addr a, const SizeT len, ThreadId tid) { DRD_(thread_set_vg_running_tid)(VG_(get_running_tid)()); drd_start_using_mem(a, len); }
/** * Discard all information DRD has about memory accesses and client objects * in the specified address range. */ void DRD_(clean_memory)(const Addr a1, const SizeT len) { const Bool is_stack_memory = DRD_(thread_address_on_any_stack)(a1); drd_stop_using_mem(a1, len, is_stack_memory); drd_start_using_mem(a1, len); }