diff options
author | Joseph Myers <joseph@codesourcery.com> | 2013-06-17 17:20:23 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2013-06-17 17:20:23 +0000 |
commit | 3023a72eb83751a23b01b6cb996fb81fe3abbcb6 (patch) | |
tree | 9dc05fe06ed6a8dd31c1809666bc0f568ea5fdab | |
parent | 12086fb4835639d1762622d80980a7500799b63e (diff) | |
download | glibc-3023a72eb83751a23b01b6cb996fb81fe3abbcb6.tar glibc-3023a72eb83751a23b01b6cb996fb81fe3abbcb6.tar.gz glibc-3023a72eb83751a23b01b6cb996fb81fe3abbcb6.tar.bz2 glibc-3023a72eb83751a23b01b6cb996fb81fe3abbcb6.zip |
Make ARM feenableexcept detect failure (bug 14907).
-rw-r--r-- | NEWS | 18 | ||||
-rw-r--r-- | ports/ChangeLog.arm | 6 | ||||
-rw-r--r-- | ports/sysdeps/arm/feenablxcpt.c | 12 |
3 files changed, 27 insertions, 9 deletions
@@ -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). diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm index 81792d2aa4..00f37892cd 100644 --- a/ports/ChangeLog.arm +++ b/ports/ChangeLog.arm @@ -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. diff --git a/ports/sysdeps/arm/feenablxcpt.c b/ports/sysdeps/arm/feenablxcpt.c index baad4320cc..e2e287b6e5 100644 --- a/ports/sysdeps/arm/feenablxcpt.c +++ b/ports/sysdeps/arm/feenablxcpt.c @@ -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; } |