aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDJ Delorie <dj@delorie.com>2016-08-15 23:47:06 -0400
committerDJ Delorie <dj@delorie.com>2016-08-15 23:47:06 -0400
commit275d577540a54d9fe3a7ae4ac1c73810cd2ee7e5 (patch)
tree101b9415600ccd7241a83c965572fadee3e5e5d9
parent528795b01909b0c41ec3049fa115a107c8898a20 (diff)
parent9e2ff6c9cc54c0b4402b8d49e4abe7000fde7617 (diff)
downloadglibc-275d577540a54d9fe3a7ae4ac1c73810cd2ee7e5.zip
glibc-275d577540a54d9fe3a7ae4ac1c73810cd2ee7e5.tar.gz
glibc-275d577540a54d9fe3a7ae4ac1c73810cd2ee7e5.tar.bz2
Merge branch 'master' into dj/malloc
-rw-r--r--ChangeLog15
-rw-r--r--localedata/ChangeLog7
-rw-r--r--localedata/locales/et_EE4
-rw-r--r--math/test-fexcept.c33
-rw-r--r--sysdeps/powerpc/fpu/fsetexcptflg.c1
-rw-r--r--sysdeps/unix/sysv/linux/arm/setcontext.S7
6 files changed, 63 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 15bd364..62f60dc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2016-08-15 Andreas Schwab <schwab@suse.de>
+
+ [BZ #20435]
+ * sysdeps/unix/sysv/linux/arm/setcontext.S (__startcontext): Mark
+ as .cantunwind.
+
+2016-08-12 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/powerpc/fpu/fsetexcptflg.c (__fesetexceptflag): Add
+ comment from fraiseexcpt.c.
+
+ * math/test-fexcept.c (feraiseexcept_exact): New function.
+ (test_set): Call feraiseexcept_exact instead of feraiseexcept.
+ (test_except): Likewise.
+
2016-08-10 Joseph Myers <joseph@codesourcery.com>
[BZ #20455]
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index 9aedf51..1ce824d 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,10 @@
+2016-08-15 Märt Põder <tramm@p6drad-teel.net>
+
+ [BZ #20459]
+ * locales/et_EE (n_cs_precedes, p_cs_precedes): Adjust to
+ Requirements of information technology in Estonian language and
+ cultural environment.
+
2016-08-10 Martin Pitt <martin.pitt@ubuntu.com>
[BZ #9842]
diff --git a/localedata/locales/et_EE b/localedata/locales/et_EE
index 096cdd5..83115c6 100644
--- a/localedata/locales/et_EE
+++ b/localedata/locales/et_EE
@@ -2141,9 +2141,9 @@ positive_sign ""
negative_sign "<U002D>"
int_frac_digits 2
frac_digits 2
-p_cs_precedes 1
+p_cs_precedes 0
p_sep_by_space 1
-n_cs_precedes 1
+n_cs_precedes 0
n_sep_by_space 1
p_sign_posn 1
n_sign_posn 1
diff --git a/math/test-fexcept.c b/math/test-fexcept.c
index 5e181a1..36d14c5 100644
--- a/math/test-fexcept.c
+++ b/math/test-fexcept.c
@@ -20,6 +20,35 @@
#include <stdio.h>
#include <math-tests.h>
+/* Like feraiseexcept, but raise exactly the specified exceptions EXC,
+ without possibly raising "inexact" together with "overflow" or
+ "underflow" as permitted by ISO C. (This is not used with traps
+ enabled, so side-effects from raising and then clearing "inexact"
+ are irrelevant.) */
+
+static int
+feraiseexcept_exact (int exc)
+{
+#ifdef FE_INEXACT
+ int mask = 0;
+#ifdef FE_OVERFLOW
+ mask |= FE_OVERFLOW;
+#endif
+#ifdef FE_UNDERFLOW
+ mask |= FE_UNDERFLOW;
+#endif
+ if ((exc & FE_INEXACT) != 0
+ || (exc & mask) == 0
+ || fetestexcept (FE_INEXACT) != 0)
+ return feraiseexcept (exc);
+ int ret = feraiseexcept (exc);
+ feclearexcept (FE_INEXACT);
+ return ret;
+#else
+ return feraiseexcept (exc);
+#endif
+}
+
static int
test_set (int initial, const fexcept_t *saved, int mask, int expected)
{
@@ -28,7 +57,7 @@ test_set (int initial, const fexcept_t *saved, int mask, int expected)
printf ("Testing set: initial exceptions %x, mask %x, expected %x\n",
(unsigned int) initial, (unsigned int) mask,
(unsigned int) expected);
- int ret = feraiseexcept (initial);
+ int ret = feraiseexcept_exact (initial);
if (ret != 0)
{
puts ("feraiseexcept failed");
@@ -81,7 +110,7 @@ test_except (int exc, const char *exc_name)
return result;
}
- ret = feraiseexcept (exc);
+ ret = feraiseexcept_exact (exc);
if (ret == 0)
printf ("feraiseexcept (%s) succeeded\n", exc_name);
else
diff --git a/sysdeps/powerpc/fpu/fsetexcptflg.c b/sysdeps/powerpc/fpu/fsetexcptflg.c
index cb440d5..70dd07c 100644
--- a/sysdeps/powerpc/fpu/fsetexcptflg.c
+++ b/sysdeps/powerpc/fpu/fsetexcptflg.c
@@ -36,6 +36,7 @@ __fesetexceptflag (const fexcept_t *flagp, int excepts)
excepts_mask |= FE_ALL_INVALID;
n.l = ((u.l & ~excepts_mask)
| (flag & FPSCR_STICKY_BITS)
+ /* Turn FE_INVALID into FE_INVALID_SOFTWARE. */
| (flag >> ((31 - FPSCR_VX) - (31 - FPSCR_VXSOFT))
& FE_INVALID_SOFTWARE));
diff --git a/sysdeps/unix/sysv/linux/arm/setcontext.S b/sysdeps/unix/sysv/linux/arm/setcontext.S
index 603e508..d1f168f 100644
--- a/sysdeps/unix/sysv/linux/arm/setcontext.S
+++ b/sysdeps/unix/sysv/linux/arm/setcontext.S
@@ -86,12 +86,19 @@ weak_alias(__setcontext, setcontext)
/* Called when a makecontext() context returns. Start the
context in R4 or fall through to exit(). */
+ /* Unwind descriptors are looked up based on PC - 2, so we have to
+ make sure to mark the instruction preceding the __startcontext
+ label as .cantunwind. */
+ .fnstart
+ .cantunwind
+ nop
ENTRY(__startcontext)
movs r0, r4
bne PLTJMP(__setcontext)
@ New context was 0 - exit
b PLTJMP(HIDDEN_JUMPTARGET(exit))
+ .fnend
END(__startcontext)
#ifdef PIC