Module Name: src Committed By: riastradh Date: Sun Nov 11 01:26:08 UTC 2018
Modified Files: src/tests/kernel: Makefile h_segv.c Log Message: Use feenableexcept to trap fp exceptions, and trigger one, for SIGFPE. Not every CPU traps integer division by zero -- aarch64, powerpc, &c., just return zero. To generate a diff of this commit: cvs rdiff -u -r1.53 -r1.54 src/tests/kernel/Makefile cvs rdiff -u -r1.8 -r1.9 src/tests/kernel/h_segv.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/kernel/Makefile diff -u src/tests/kernel/Makefile:1.53 src/tests/kernel/Makefile:1.54 --- src/tests/kernel/Makefile:1.53 Wed Mar 14 02:13:47 2018 +++ src/tests/kernel/Makefile Sun Nov 11 01:26:08 2018 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.53 2018/03/14 02:13:47 kamil Exp $ +# $NetBSD: Makefile,v 1.54 2018/11/11 01:26:08 riastradh Exp $ NOMAN= # defined @@ -67,4 +67,6 @@ CPPFLAGS.t_subr_prf.c= -Wno-pointer-sign CLEANFILES+= t_subr_prf.c +LDADD.h_segv+= -lm + .include <bsd.test.mk> Index: src/tests/kernel/h_segv.c diff -u src/tests/kernel/h_segv.c:1.8 src/tests/kernel/h_segv.c:1.9 --- src/tests/kernel/h_segv.c:1.8 Sun Nov 11 01:26:00 2018 +++ src/tests/kernel/h_segv.c Sun Nov 11 01:26:08 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: h_segv.c,v 1.8 2018/11/11 01:26:00 riastradh Exp $ */ +/* $NetBSD: h_segv.c,v 1.9 2018/11/11 01:26:08 riastradh Exp $ */ /*- * Copyright (c) 2017 The NetBSD Foundation, Inc. @@ -29,13 +29,14 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__RCSID("$NetBSD: h_segv.c,v 1.8 2018/11/11 01:26:00 riastradh Exp $"); +__RCSID("$NetBSD: h_segv.c,v 1.9 2018/11/11 01:26:08 riastradh Exp $"); #include <sys/types.h> #include <sys/mman.h> #include <sys/ptrace.h> #include <err.h> +#include <fenv.h> #include <signal.h> #include <stdio.h> #include <stdlib.h> @@ -103,10 +104,12 @@ trigger_ill(void) static void trigger_fpe(void) { - volatile int a = getpid(); - volatile int b = strtol("0", NULL, 0); + volatile double a = getpid(); + volatile double b = strtol("0", NULL, 0); - usleep(a/b); + feenableexcept(FE_ALL_EXCEPT); + + usleep((int)(a/b)); } static void