From 6dfb9460caf3466b23b2a24c7ac91ebbb0747226 Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Tue, 16 May 2017 18:42:44 +0000 Subject: [PATCH] Skip tests depending on coredumps if coredumps are disabled via kern.coredump. The kern.coredump sysctl can be set to 0 to disable coredumps. Skip the 'status_coredump' and 'wait6_coredumped' tests if this sysctl is set to 0 rather than reporting a failure. Submitted by: brooks Reviewed by: ngie Obtained from: CheriBSD Sponsored by: DARPA / AFRL Differential Revision: https://reviews.freebsd.org/D10665 --- contrib/atf/atf-c/detail/process_test.c | 11 +++++++++++ contrib/netbsd-tests/lib/libc/sys/t_wait.c | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/contrib/atf/atf-c/detail/process_test.c b/contrib/atf/atf-c/detail/process_test.c index 5ae5565b6a2b..82a911df68cd 100644 --- a/contrib/atf/atf-c/detail/process_test.c +++ b/contrib/atf/atf-c/detail/process_test.c @@ -26,6 +26,9 @@ #include "atf-c/detail/process.h" #include +#ifdef __FreeBSD__ +#include +#endif #include #include #include @@ -667,6 +670,14 @@ ATF_TC_BODY(status_coredump, tc) atf_tc_skip("Cannot unlimit the core file size; check limits " "manually"); +#ifdef __FreeBSD__ + int coredump_enabled; + size_t ce_len = sizeof(coredump_enabled); + if (sysctlbyname("kern.coredump", &coredump_enabled, &ce_len, NULL, + 0) == 0 && !coredump_enabled) + atf_tc_skip("Coredumps disabled"); +#endif + const int rawstatus = fork_and_wait_child(child_sigquit); atf_process_status_t s; RE(atf_process_status_init(&s, rawstatus)); diff --git a/contrib/netbsd-tests/lib/libc/sys/t_wait.c b/contrib/netbsd-tests/lib/libc/sys/t_wait.c index 91bbaf1f3dd1..ce060da8937e 100644 --- a/contrib/netbsd-tests/lib/libc/sys/t_wait.c +++ b/contrib/netbsd-tests/lib/libc/sys/t_wait.c @@ -31,6 +31,10 @@ #include __RCSID("$NetBSD: t_wait.c,v 1.8 2017/01/13 19:28:55 christos Exp $"); +#ifdef __FreeBSD__ +#include +#include +#endif #include #include @@ -147,6 +151,14 @@ ATF_TC_BODY(wait6_coredumped, tc) pid_t pid; static const struct rlimit rl = { RLIM_INFINITY, RLIM_INFINITY }; +#ifdef __FreeBSD__ + int coredump_enabled; + size_t ce_len = sizeof(coredump_enabled); + if (sysctlbyname("kern.coredump", &coredump_enabled, &ce_len, NULL, + 0) == 0 && !coredump_enabled) + atf_tc_skip("Coredumps disabled"); +#endif + switch (pid = fork()) { case 0: ATF_REQUIRE(setrlimit(RLIMIT_CORE, &rl) == 0);