431556 Complete arm64 FADDP v8.2 instruction support
432102 Add support for DWARF5 as produced by GCC11
432161 Addition of arm64 v8.2 FADDP, FNEG and FSQRT
+432381 drd: Process STACK_REGISTER client requests
432672 vg_regtest: test-specific environment variables not reset between tests
432809 VEX should support REX.W + POPF
432861 PPC modsw and modsd give incorrect results for 1 mod 12
True);
}
+static void drd_register_stack(Addr start, Addr end)
+{
+ DrdThreadId drd_tid = DRD_(thread_get_running_tid)();
+
+ DRD_(thread_register_stack)(drd_tid, start, end);
+}
+
static
void drd_pre_thread_create(const ThreadId creator, const ThreadId created)
{
VG_(track_die_mem_munmap) (drd_stop_using_nonstack_mem);
VG_(track_die_mem_stack) (drd_stop_using_mem_stack);
VG_(track_die_mem_stack_signal) (drd_stop_using_mem_stack_signal);
+ VG_(track_register_stack) (drd_register_stack);
VG_(track_pre_deliver_signal) (drd_pre_deliver_signal);
VG_(track_post_deliver_signal) (drd_post_deliver_signal);
VG_(track_start_client_code) (drd_start_client_code);
DRD_(thread_delayed_delete)(drd_joinee);
}
+void DRD_(thread_register_stack)(DrdThreadId tid, Addr addr1, Addr addr2)
+{
+ tl_assert(0 <= (int)tid && tid < DRD_N_THREADS
+ && tid != DRD_INVALID_THREADID);
+ tl_assert(addr1 < addr2);
+ DRD_(g_threadinfo)[tid].stack_min = addr2;
+ DRD_(g_threadinfo)[tid].stack_min_min = addr2;
+ DRD_(g_threadinfo)[tid].stack_startup = addr2;
+ DRD_(g_threadinfo)[tid].stack_max = addr2;
+}
+
/**
* NPTL hack: NPTL allocates the 'struct pthread' on top of the stack,
* and accesses this data structure from multiple threads without locking.
void DRD_(thread_finished)(const DrdThreadId tid);
void DRD_(drd_thread_atfork_child)(const DrdThreadId tid);
void DRD_(thread_pre_cancel)(const DrdThreadId tid);
+void DRD_(thread_register_stack)(DrdThreadId tid, Addr addr1, Addr addr2);
void DRD_(thread_set_stack_startup)(const DrdThreadId tid,
const Addr stack_startup);
Addr DRD_(thread_get_stack_min)(const DrdThreadId tid);