Make ARM feenableexcept detect failure (bug 14907).
authorJoseph Myers <joseph@codesourcery.com>
Mon, 17 Jun 2013 17:20:23 +0000 (17:20 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Mon, 17 Jun 2013 17:20:23 +0000 (17:20 +0000)
NEWS
ports/ChangeLog.arm
ports/sysdeps/arm/feenablxcpt.c

diff --git a/NEWS b/NEWS
index 63f2892..be21e29 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -12,15 +12,15 @@ Version 2.18
   2546, 2560, 5159, 6809, 10060, 10062, 10357, 10686, 11120, 11561, 12387,
   12515, 12723, 13550, 13889, 13951, 13988, 14142, 14176, 14200, 14256,
   14280, 14293, 14317, 14327, 14478, 14496, 14582, 14686, 14812, 14888,
-  14894, 14908, 14909, 14920, 14952, 14964, 14981, 14982, 14985, 14991,
-  14994, 14996, 15000, 15003, 15006, 15007, 15014, 15020, 15023, 15036,
-  15054, 15055, 15062, 15078, 15084, 15085, 15086, 15100, 15160, 15214,
-  15221, 15232, 15234, 15283, 15285, 15287, 15304, 15305, 15307, 15309,
-  15327, 15330, 15335, 15336, 15337, 15339, 15342, 15346, 15359, 15361,
-  15366, 15380, 15381, 15394, 15395, 15405, 15406, 15409, 15416, 15418,
-  15419, 15423, 15424, 15426, 15429, 15431, 15432, 15441, 15442, 15448,
-  15465, 15480, 15485, 15488, 15490, 15492, 15493, 15497, 15506, 15529,
-  15536, 15553, 15577, 15583, 15618, 15627, 15631.
+  14894, 14907, 14908, 14909, 14920, 14952, 14964, 14981, 14982, 14985,
+  14991, 14994, 14996, 15000, 15003, 15006, 15007, 15014, 15020, 15023,
+  15036, 15054, 15055, 15062, 15078, 15084, 15085, 15086, 15100, 15160,
+  15214, 15221, 15232, 15234, 15283, 15285, 15287, 15304, 15305, 15307,
+  15309, 15327, 15330, 15335, 15336, 15337, 15339, 15342, 15346, 15359,
+  15361, 15366, 15380, 15381, 15394, 15395, 15405, 15406, 15409, 15416,
+  15418, 15419, 15423, 15424, 15426, 15429, 15431, 15432, 15441, 15442,
+  15448, 15465, 15480, 15485, 15488, 15490, 15492, 15493, 15497, 15506,
+  15529, 15536, 15553, 15577, 15583, 15618, 15627, 15631.
 
 * CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
   #15078).
index 81792d2..00f3789 100644 (file)
@@ -1,3 +1,9 @@
+2013-06-17  Joseph Myers  <joseph@codesourcery.com>
+
+       [BZ #14907]
+       * sysdeps/arm/feenablxcpt.c (feenableexcept): Test whether all
+       requested exception traps were enabled and return -1 if not.
+
 2013-06-15  Siddhesh Poyarekar  <siddhesh@redhat.com>
 
        * sysdeps/unix/sysv/linux/arm/nptl/libpthread.abilist: Update.
index baad432..e2e287b 100644 (file)
@@ -39,6 +39,18 @@ feenableexcept (int excepts)
 
       _FPU_SETCW(new_exc);
 
+      if (excepts != 0)
+       {
+         /* VFPv3 and VFPv4 do not support trapping exceptions, so
+            test whether the relevant bits were set and fail if
+            not.  */
+         unsigned int temp;
+         _FPU_GETCW (temp);
+         if ((temp & (excepts << FE_EXCEPT_SHIFT))
+             != (excepts << FE_EXCEPT_SHIFT))
+           return -1;
+       }
+
       return old_exc;
     }