update to glibc-2.28-151.el8.src.rpm
Signed-off-by: Liwei Ge <geliwei@openanolis.org>
This commit is contained in:
parent
ba6a26df65
commit
37da1d0798
284 changed files with 62546 additions and 13 deletions
64
glibc-rh1783303-18.patch
Normal file
64
glibc-rh1783303-18.patch
Normal file
|
@ -0,0 +1,64 @@
|
|||
commit 7b8481b330720d28c019a2e5994492a1923d5daa
|
||||
Author: Paul A. Clarke <pc@us.ibm.com>
|
||||
Date: Thu Sep 19 11:11:04 2019 -0500
|
||||
|
||||
[powerpc] No need to enter "Ignore Exceptions Mode"
|
||||
|
||||
Since at least POWER8, there is no performance advantage to entering
|
||||
"Ignore Exceptions Mode", and doing so conditionally requires
|
||||
- the conditional logic, and
|
||||
- a system call.
|
||||
|
||||
Make it a no-op for uses within glibc.
|
||||
|
||||
diff --git a/sysdeps/powerpc/fpu/fenv_private.h b/sysdeps/powerpc/fpu/fenv_private.h
|
||||
index 666fbfdd9fef7759..e09137e892a8e3f3 100644
|
||||
--- a/sysdeps/powerpc/fpu/fenv_private.h
|
||||
+++ b/sysdeps/powerpc/fpu/fenv_private.h
|
||||
@@ -23,6 +23,17 @@
|
||||
#include <fenv_libc.h>
|
||||
#include <fpu_control.h>
|
||||
|
||||
+#ifdef _ARCH_PWR8
|
||||
+/* There is no performance advantage to non-stop mode. */
|
||||
+/* The odd syntax here is to innocuously reference the given variables
|
||||
+ to prevent warnings about unused variables. */
|
||||
+#define __TEST_AND_BEGIN_NON_STOP(old, new) do {} while ((old) * (new) * 0 != 0)
|
||||
+#define __TEST_AND_END_NON_STOP(old, new) do {} while ((old) * (new) * 0 != 0)
|
||||
+#else
|
||||
+#define __TEST_AND_BEGIN_NON_STOP __TEST_AND_ENTER_NON_STOP
|
||||
+#define __TEST_AND_END_NON_STOP __TEST_AND_EXIT_NON_STOP
|
||||
+#endif
|
||||
+
|
||||
static __always_inline void
|
||||
libc_feholdexcept_setround_ppc (fenv_t *envp, int r)
|
||||
{
|
||||
@@ -30,7 +41,7 @@ libc_feholdexcept_setround_ppc (fenv_t *envp, int r)
|
||||
|
||||
old.fenv = *envp = fegetenv_register ();
|
||||
|
||||
- __TEST_AND_ENTER_NON_STOP (old.l, 0ULL);
|
||||
+ __TEST_AND_BEGIN_NON_STOP (old.l, 0ULL);
|
||||
|
||||
/* Clear everything and set the rounding mode. */
|
||||
new.l = r;
|
||||
@@ -49,8 +60,8 @@ __libc_femergeenv_ppc (const fenv_t *envp, unsigned long long old_mask,
|
||||
/* Merge bits while masking unwanted bits from new and old env. */
|
||||
new.l = (old.l & old_mask) | (new.l & new_mask);
|
||||
|
||||
- __TEST_AND_EXIT_NON_STOP (old.l, new.l);
|
||||
- __TEST_AND_ENTER_NON_STOP (old.l, new.l);
|
||||
+ __TEST_AND_END_NON_STOP (old.l, new.l);
|
||||
+ __TEST_AND_BEGIN_NON_STOP (old.l, new.l);
|
||||
|
||||
/* If requesting to keep status, replace control, and merge exceptions,
|
||||
and exceptions haven't changed, we can just set new control instead
|
||||
@@ -141,7 +152,7 @@ libc_feholdsetround_noex_ppc_ctx (struct rm_ctx *ctx, int r)
|
||||
ctx->env = old.fenv;
|
||||
if (__glibc_unlikely (new.l != old.l))
|
||||
{
|
||||
- __TEST_AND_ENTER_NON_STOP (old.l, 0ULL);
|
||||
+ __TEST_AND_BEGIN_NON_STOP (old.l, 0ULL);
|
||||
fesetenv_control (new.fenv);
|
||||
ctx->updated_status = true;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue