From: Bart Van Assche Date: Mon, 15 Feb 2021 04:08:52 +0000 (-0800) Subject: core: Pass stack change user requests on to tools X-Git-Tag: VALGRIND_3_17_0~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dc29ef72df49d88fa1c0866d362803f920a6e2d5;p=thirdparty%2Fvalgrind.git core: Pass stack change user requests on to tools Since DRD tracks the lowest and highest stack address that has been used, it needs to know about stack registration events. Hence pass on stack registration events to tools. --- diff --git a/coregrind/m_scheduler/scheduler.c b/coregrind/m_scheduler/scheduler.c index 77f78ebbc7..dc22dca176 100644 --- a/coregrind/m_scheduler/scheduler.c +++ b/coregrind/m_scheduler/scheduler.c @@ -2050,6 +2050,7 @@ void do_client_request ( ThreadId tid ) case VG_USERREQ__STACK_REGISTER: { UWord sid = VG_(register_stack)((Addr)arg[1], (Addr)arg[2]); SET_CLREQ_RETVAL( tid, sid ); + VG_TRACK(register_stack, (Addr)arg[1], (Addr)arg[2]); break; } case VG_USERREQ__STACK_DEREGISTER: { diff --git a/coregrind/m_tooliface.c b/coregrind/m_tooliface.c index efa991debf..cbafe47c52 100644 --- a/coregrind/m_tooliface.c +++ b/coregrind/m_tooliface.c @@ -438,6 +438,8 @@ DEF0(track_die_mem_stack, Addr, SizeT) DEF0(track_ban_mem_stack, Addr, SizeT) +DEF0(track_register_stack, Addr, Addr) + DEF0(track_pre_mem_read, CorePart, ThreadId, const HChar*, Addr, SizeT) DEF0(track_pre_mem_read_asciiz, CorePart, ThreadId, const HChar*, Addr) DEF0(track_pre_mem_write, CorePart, ThreadId, const HChar*, Addr, SizeT) diff --git a/coregrind/pub_core_tooliface.h b/coregrind/pub_core_tooliface.h index 4da8cd29e9..5f75d49972 100644 --- a/coregrind/pub_core_tooliface.h +++ b/coregrind/pub_core_tooliface.h @@ -226,6 +226,8 @@ typedef struct { void (*track_ban_mem_stack)(Addr, SizeT); + void (*track_register_stack)(Addr, Addr); + void (*track_pre_mem_read) (CorePart, ThreadId, const HChar*, Addr, SizeT); void (*track_pre_mem_read_asciiz)(CorePart, ThreadId, const HChar*, Addr); void (*track_pre_mem_write) (CorePart, ThreadId, const HChar*, Addr, SizeT); diff --git a/include/pub_tool_tooliface.h b/include/pub_tool_tooliface.h index c7eef06eb1..62c9969612 100644 --- a/include/pub_tool_tooliface.h +++ b/include/pub_tool_tooliface.h @@ -609,6 +609,9 @@ void VG_(track_die_mem_stack) (void(*f)(Addr a, SizeT len)); /* Used for redzone at end of thread stacks */ void VG_(track_ban_mem_stack) (void(*f)(Addr a, SizeT len)); +/* Used to report VG_USERREQ__STACK_REGISTER client requests */ +void VG_(track_register_stack) (void(*f)(Addr start, Addr end)); + /* These ones occur around syscalls, signal handling, etc */ void VG_(track_pre_mem_read) (void(*f)(CorePart part, ThreadId tid, const HChar* s, Addr a, SizeT size));