Module Name: src Committed By: njoly Date: Wed Jun 13 11:45:18 UTC 2012
Modified Files: src/tests/lib/libc/gen: t_siginfo.c Log Message: Skip sigbus_adraln testcase on alpha unless global machdep.unaligned_sigbus sysctl is enabled. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/tests/lib/libc/gen/t_siginfo.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/gen/t_siginfo.c diff -u src/tests/lib/libc/gen/t_siginfo.c:1.17 src/tests/lib/libc/gen/t_siginfo.c:1.18 --- src/tests/lib/libc/gen/t_siginfo.c:1.17 Mon Apr 23 15:07:56 2012 +++ src/tests/lib/libc/gen/t_siginfo.c Wed Jun 13 11:45:17 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: t_siginfo.c,v 1.17 2012/04/23 15:07:56 martin Exp $ */ +/* $NetBSD: t_siginfo.c,v 1.18 2012/06/13 11:45:17 njoly Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,6 +31,7 @@ #include <sys/inttypes.h> #include <sys/resource.h> +#include <sys/sysctl.h> #include <sys/time.h> #include <sys/ucontext.h> #include <sys/wait.h> @@ -441,8 +442,21 @@ ATF_TC_HEAD(sigbus_adraln, tc) ATF_TC_BODY(sigbus_adraln, tc) { + const char *arch = atf_config_get("atf_arch"); struct sigaction sa; + if (strcmp(arch, "alpha") == 0) { + int rv, val; + size_t len = sizeof(val); + rv = sysctlbyname("machdep.unaligned_sigbus", &val, &len, + NULL, 0); + ATF_REQUIRE(rv == 0); + if (val == 0) + atf_tc_skip("SIGBUS signal not enabled for" + " unaligned accesses"); + + } + sa.sa_flags = SA_SIGINFO; sa.sa_sigaction = sigbus_action; sigemptyset(&sa.sa_mask); @@ -458,8 +472,7 @@ ATF_TC_BODY(sigbus_adraln, tc) addr = calloc(2, sizeof(int)); ATF_REQUIRE(addr != NULL); - if (strcmp(atf_config_get("atf_arch"), "i386") == 0 || - strcmp(atf_config_get("atf_arch"), "x86_64") == 0) { + if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) { if (system("cpuctl identify 0 | grep -q QEMU") == 0) { atf_tc_expect_fail("QEMU fails to trap unaligned " "accesses");