Module Name: src Committed By: kamil Date: Tue Oct 1 22:26:38 UTC 2019
Modified Files: src/tests/lib/libc/sys: t_ptrace_wait.c Log Message: Merge PT_GET_PROCESS_STATE checks into traceme_raise ATF ptrace tests Assert that PT_GET_PROCESS_STATE for !child and !lwp events returns non-error and zeroed struct ptrace_state. These checks are not really special to traceme_raise, it's just an opportunity to reuse them in an existing tests without writing a dedicated one. This behavior is needed to maintain in 3rd party software (GDB). To generate a diff of this commit: cvs rdiff -u -r1.132 -r1.133 src/tests/lib/libc/sys/t_ptrace_wait.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/lib/libc/sys/t_ptrace_wait.c diff -u src/tests/lib/libc/sys/t_ptrace_wait.c:1.132 src/tests/lib/libc/sys/t_ptrace_wait.c:1.133 --- src/tests/lib/libc/sys/t_ptrace_wait.c:1.132 Tue Oct 1 21:13:30 2019 +++ src/tests/lib/libc/sys/t_ptrace_wait.c Tue Oct 1 22:26:38 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: t_ptrace_wait.c,v 1.132 2019/10/01 21:13:30 kamil Exp $ */ +/* $NetBSD: t_ptrace_wait.c,v 1.133 2019/10/01 22:26:38 kamil Exp $ */ /*- * Copyright (c) 2016, 2017, 2018, 2019 The NetBSD Foundation, Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: t_ptrace_wait.c,v 1.132 2019/10/01 21:13:30 kamil Exp $"); +__RCSID("$NetBSD: t_ptrace_wait.c,v 1.133 2019/10/01 22:26:38 kamil Exp $"); #include <sys/param.h> #include <sys/types.h> @@ -140,7 +140,10 @@ traceme_raise(int sigval) int status; #endif + ptrace_state_t state, zero_state; + const int slen = sizeof(state); struct ptrace_siginfo info; + memset(&zero_state, 0, sizeof(zero_state)); memset(&info, 0, sizeof(info)); DPRINTF("Before forking process PID=%d\n", getpid()); @@ -170,6 +173,9 @@ traceme_raise(int sigval) switch (sigval) { case SIGKILL: validate_status_signaled(status, sigval, 0); + SYSCALL_REQUIRE( + ptrace(PT_GET_PROCESS_STATE, child, &state, slen) == -1); + break; default: validate_status_stopped(status, sigval); @@ -188,6 +194,11 @@ traceme_raise(int sigval) ATF_REQUIRE_EQ(info.psi_siginfo.si_signo, sigval); ATF_REQUIRE_EQ(info.psi_siginfo.si_code, SI_LWP); + DPRINTF("Assert that PT_GET_PROCESS_STATE returns non-error"); + SYSCALL_REQUIRE( + ptrace(PT_GET_PROCESS_STATE, child, &state, slen) != -1); + ATF_REQUIRE(memcmp(&state, &zero_state, slen) == 0); + DPRINTF("Before resuming the child process where it left off " "and without signal to be sent\n"); SYSCALL_REQUIRE(ptrace(PT_CONTINUE, child, (void *)1, 0) != -1);