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");