PowerPC: Fix __fe_mask_env export

This patch does not export __fe_mask_env anymore, only providing a
compatibility symbol. It fixes BZ#14143.
This commit is contained in:
Adhemerval Zanella 2013-11-13 06:45:19 -06:00
parent 50727aa76b
commit 7a2ad8cf39
7 changed files with 36 additions and 21 deletions

View File

@ -1,3 +1,18 @@
2013-11-13 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
[BZ #14143]
* sysdeps/powerpc/bits/fenv.h (__fe_nomask_env): Remove declaration.
(__fe_mask_env): Likewise.
* sysdeps/powerpc/fpu/fenv_libc.h (__fe_nomask_env): Remove
libm_hidden_proto and add function prototype.
(__fe_mask_env): Add function prototype.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c
(__fe_nomask_env): Add compat symbol for GLIBC_2.1.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c
(__fe_mask_env): Remove compiler warnings regarding ununsed variables.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c
(__fe_nomask_env): Add compat symbol for GLIBC_2.3.
2013-11-13 Marcus Shawcroft <marcus.shawcroft@linaro.org>
* elf/dl-lookup.c (_dl_lookup_symbol_x): If UNDEF_MAP is false

16
NEWS
View File

@ -10,14 +10,14 @@ Version 2.19
* The following bugs are resolved with this release:
156, 387, 431, 832, 2801, 7003, 9954, 10278, 11087, 13028, 13982, 13985,
14029, 14155, 14547, 14699, 14752, 14876, 14910, 15048, 15218, 15277,
15308, 15362, 15374, 15400, 15427, 15522, 15531, 15532, 15608, 15609,
15610, 15632, 15640, 15670, 15672, 15680, 15681, 15723, 15734, 15735,
15736, 15748, 15749, 15754, 15760, 15763, 15764, 15797, 15799, 15825,
15844, 15847, 15849, 15855, 15856, 15857, 15859, 15867, 15886, 15887,
15890, 15892, 15893, 15895, 15897, 15905, 15909, 15917, 15919, 15921,
15923, 15939, 15948, 15963, 15966, 15985, 15988, 16032, 16034, 16036,
16037, 16041, 16071, 16072, 16074, 16078, 16112, 16150, 16153.
14029, 14143, 14155, 14547, 14699, 14752, 14876, 14910, 15048, 15218,
15277, 15308, 15362, 15374, 15400, 15427, 15522, 15531, 15532, 15608,
15609, 15610, 15632, 15640, 15670, 15672, 15680, 15681, 15723, 15734,
15735, 15736, 15748, 15749, 15754, 15760, 15763, 15764, 15797, 15799,
15825, 15844, 15847, 15849, 15855, 15856, 15857, 15859, 15867, 15886,
15887, 15890, 15892, 15893, 15895, 15897, 15905, 15909, 15917, 15919,
15921, 15923, 15939, 15948, 15963, 15966, 15985, 15988, 16032, 16034,
16036, 16037, 16041, 16071, 16072, 16074, 16078, 16112, 16150, 16153.
* CVE-2012-4412 The strcoll implementation caches indices and rules for
large collation sequences to optimize multiple passes. This cache

View File

@ -153,15 +153,12 @@ extern const fenv_t __fe_enabled_env;
extern const fenv_t __fe_nonieee_env;
# define FE_NONIEEE_ENV (&__fe_nonieee_env)
__BEGIN_DECLS
/* Floating-point environment with all exceptions enabled. Note that
just evaluating this value does not change the processor exception mode.
Passing this mask to fesetenv will result in a prctl syscall to change
the MSR FE0/FE1 bits to "Precise Mode". On some processors this will
result in slower floating point execution. This will last until an
fenv or exception mask is installed that disables all FP exceptions. */
extern const fenv_t *__fe_nomask_env (void);
# define FE_NOMASK_ENV FE_ENABLED_ENV
/* Floating-point environment with all exceptions disabled. Note that
@ -169,9 +166,6 @@ extern const fenv_t *__fe_nomask_env (void);
Passing this mask to fesetenv will result in a prctl syscall to change
the MSR FE0/FE1 bits to "Ignore Exceptions Mode". On most processors
this allows the fastest possible floating point execution.*/
extern const fenv_t *__fe_mask_env (void);
# define FE_MASK_ENV FE_DFL_ENV
__END_DECLS
#endif

View File

@ -23,7 +23,9 @@
#include <ldsodefs.h>
#include <sysdep.h>
libm_hidden_proto (__fe_nomask_env)
extern const fenv_t *__fe_nomask_env (void);
extern const fenv_t *__fe_mask_env (void);
/* The sticky bits in the FPSCR indicating exceptions have occurred. */
#define FPSCR_STICKY_BITS ((FE_ALL_EXCEPT | FE_ALL_INVALID) & ~FE_INVALID)

View File

@ -23,6 +23,7 @@
#include <sysdep.h>
#include <sys/prctl.h>
#include <kernel-features.h>
#include <shlib-compat.h>
const fenv_t *
__fe_nomask_env (void)
@ -32,4 +33,6 @@ __fe_nomask_env (void)
return FE_ENABLED_ENV;
}
libm_hidden_def (__fe_nomask_env)
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_18)
compat_symbol (libm, __fe_nomask_env, __fe_nomask_env, GLIBC_2_1);
#endif

View File

@ -27,9 +27,8 @@ const fenv_t *
__fe_mask_env (void)
{
#if defined PR_SET_FPEXC && defined PR_FP_EXC_DISABLED
int result;
INTERNAL_SYSCALL_DECL (err);
result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED);
INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED);
#else
__set_errno (ENOSYS);
#endif

View File

@ -22,17 +22,19 @@
#include <sys/syscall.h>
#include <sys/prctl.h>
#include <kernel-features.h>
#include <shlib-compat.h>
const fenv_t *
__fe_nomask_env (void)
{
#if defined PR_SET_FPEXC && defined PR_FP_EXC_PRECISE
int result;
INTERNAL_SYSCALL_DECL (err);
result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
#else
__set_errno (ENOSYS);
#endif
return FE_ENABLED_ENV;
}
libm_hidden_def (__fe_nomask_env)
#if SHLIB_COMPAT (libm, GLIBC_2_3, GLIBC_2_18)
compat_symbol (libm, __fe_nomask_env, __fe_nomask_env, GLIBC_2_3);
#endif