|
From: <sv...@va...> - 2009-02-26 21:21:50
|
Author: njn
Date: 2009-02-26 21:21:38 +0000 (Thu, 26 Feb 2009)
New Revision: 9278
Log:
Merge r9275 (port faultstatus to ppc) from the trunk.
Modified:
branches/DARWIN/none/tests/faultstatus.c
Modified: branches/DARWIN/none/tests/faultstatus.c
===================================================================
--- branches/DARWIN/none/tests/faultstatus.c 2009-02-26 21:19:25 UTC (rev 9277)
+++ branches/DARWIN/none/tests/faultstatus.c 2009-02-26 21:21:38 UTC (rev 9278)
@@ -9,6 +9,19 @@
#include <sys/mman.h>
#include <unistd.h>
+/*
+ * Division by zero triggers a SIGFPE on x86 and x86_64,
+ * but not on the PowerPC architecture.
+ */
+#if defined(__powerpc__)
+#define DIVISION_BY_ZERO_TRIGGERS_FPE 0
+#define DIVISION_BY_ZERO_SI_CODE SI_TKILL
+#else
+#define DIVISION_BY_ZERO_TRIGGERS_FPE 1
+#define DIVISION_BY_ZERO_SI_CODE FPE_INTDIV
+#endif
+
+
struct test {
void (*test)(void);
int sig;
@@ -93,6 +106,9 @@
volatile int v = 44/zero();
(void)v;
+#if DIVISION_BY_ZERO_TRIGGERS_FPE == 0
+ raise(SIGFPE);
+#endif
}
int main()
@@ -125,7 +141,7 @@
T(1, SIGSEGV, SEGV_MAPERR, BADADDR),
T(2, SIGSEGV, SEGV_ACCERR, mapping),
T(3, SIGBUS, BUS_ADRERR, &mapping[FILESIZE+10]),
- T(4, SIGFPE, FPE_INTDIV, 0),
+ T(4, SIGFPE, DIVISION_BY_ZERO_SI_CODE, 0),
#undef T
};
|