diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c index d3b02d4b1..c86691dee 100644 --- a/coregrind/m_syswrap/syswrap-generic.c +++ b/coregrind/m_syswrap/syswrap-generic.c @@ -5275,7 +5275,10 @@ PRE(sys_sigaltstack) PRE_REG_READ2(int, "sigaltstack", const vki_stack_t *, ss, vki_stack_t *, oss); if (ARG1 != 0) { - PRE_MEM_READ( "sigaltstack(ss)", ARG1, sizeof(vki_stack_t) ); + const vki_stack_t *ss = (vki_stack_t *)ARG1; + PRE_MEM_READ( "sigaltstack(ss)", (Addr)&ss->ss_sp, sizeof(ss->ss_sp) ); + PRE_MEM_READ( "sigaltstack(ss)", (Addr)&ss->ss_flags, sizeof(ss->ss_flags) ); + PRE_MEM_READ( "sigaltstack(ss)", (Addr)&ss->ss_size, sizeof(ss->ss_size) ); } if (ARG2 != 0) { PRE_MEM_WRITE( "sigaltstack(oss)", ARG2, sizeof(vki_stack_t) );