diff --git a/ChangeLog b/ChangeLog index d9d679041a..fc7a34e350 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,36 @@ +2014-12-31 Joseph Myers + + [BZ #17748] + * include/fenv.h (__fegetenv): Use libm_hidden_proto. + * math/fegetenv.c (__fegetenv): Use libm_hidden_def. + * sysdeps/aarch64/fpu/fegetenv.c (fegetenv): Rename to __fegetenv + and define as weak alias of __fegetenv. Use libm_hidden_weak. + * sysdeps/alpha/fpu/fegetenv.c (__fegetenv): Use libm_hidden_def. + * sysdeps/arm/fegetenv.c (fegetenv): Rename to __fegetenv and + define as weak alias of __fegetenv. Use libm_hidden_weak. + * sysdeps/hppa/fpu/fegetenv.c (fegetenv): Likewise. + * sysdeps/i386/fpu/fegetenv.c (__fegetenv): Use libm_hidden_def. + * sysdeps/ia64/fpu/fegetenv.c (fegetenv): Rename to __fegetenv and + define as weak alias of __fegetenv. Use libm_hidden_weak. + * sysdeps/m68k/fpu/fegetenv.c (__fegetenv): Use libm_hidden_def. + * sysdeps/mips/fpu/fegetenv.c (fegetenv): Rename to __fegetenv and + define as weak alias of __fegetenv. Use libm_hidden_weak. + * sysdeps/powerpc/fpu/fegetenv.c (__fegetenv): Use + libm_hidden_def. + * sysdeps/powerpc/nofpu/fegetenv.c (__fegetenv): Likewise. + * sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c (__fegetenv): + Likewise. + * sysdeps/s390/fpu/fegetenv.c (fegetenv): Rename to __fegetenv and + define as weak alias of __fegetenv. Use libm_hidden_weak. + * sysdeps/sh/sh4/fpu/fegetenv.c (fegetenv): Likewise. + * sysdeps/sparc/fpu/fegetenv.c (__fegetenv): Use libm_hidden_def. + * sysdeps/tile/math_private.h (__fegetenv): New inline function. + * sysdeps/x86_64/fpu/fegetenv.c (fegetenv): Rename to __fegetenv + and define as weak alias of __fegetenv. Use libm_hidden_weak. + * sysdeps/generic/math_private.h (libc_feholdsetround_ctx): Use + __fegetenv instead of fegetenv. + (libc_feholdsetround_noex_ctx): Likewise. + 2014-12-31 Matthew Fortune * elf/elf.h (PT_MIPS_ABIFLAGS): Define. diff --git a/include/fenv.h b/include/fenv.h index 0cfbacd4ab..bc8f759e17 100644 --- a/include/fenv.h +++ b/include/fenv.h @@ -17,6 +17,7 @@ extern int __feupdateenv (const fenv_t *__envp); libm_hidden_proto (feraiseexcept) libm_hidden_proto (__feraiseexcept) libm_hidden_proto (fegetenv) +libm_hidden_proto (__fegetenv) libm_hidden_proto (fegetround) libm_hidden_proto (fesetenv) libm_hidden_proto (fesetround) diff --git a/math/fegetenv.c b/math/fegetenv.c index c031488b2f..39b843b08c 100644 --- a/math/fegetenv.c +++ b/math/fegetenv.c @@ -30,6 +30,7 @@ __fegetenv (fenv_t *envp) strong_alias (__fegetenv, __old_fegetenv) compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1); #endif +libm_hidden_def (__fegetenv) libm_hidden_ver (__fegetenv, fegetenv) versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2); diff --git a/sysdeps/aarch64/fpu/fegetenv.c b/sysdeps/aarch64/fpu/fegetenv.c index 4c88fbfa43..ae75f39ed7 100644 --- a/sysdeps/aarch64/fpu/fegetenv.c +++ b/sysdeps/aarch64/fpu/fegetenv.c @@ -20,7 +20,7 @@ #include int -fegetenv (fenv_t *envp) +__fegetenv (fenv_t *envp) { fpu_control_t fpcr; fpu_fpsr_t fpsr; @@ -30,4 +30,6 @@ fegetenv (fenv_t *envp) envp->__fpsr = fpsr; return 0; } -libm_hidden_def (fegetenv) +libm_hidden_def (__fegetenv) +weak_alias (__fegetenv, fegetenv) +libm_hidden_weak (fegetenv) diff --git a/sysdeps/alpha/fpu/fegetenv.c b/sysdeps/alpha/fpu/fegetenv.c index ef688f20a3..36baf411be 100644 --- a/sysdeps/alpha/fpu/fegetenv.c +++ b/sysdeps/alpha/fpu/fegetenv.c @@ -43,5 +43,6 @@ strong_alias (__fegetenv, __old_fegetenv) compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1); #endif +libm_hidden_def (__fegetenv) versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2); libm_hidden_ver(__fegetenv, fegetenv) diff --git a/sysdeps/arm/fegetenv.c b/sysdeps/arm/fegetenv.c index f390c0fdf7..ec38a5145d 100644 --- a/sysdeps/arm/fegetenv.c +++ b/sysdeps/arm/fegetenv.c @@ -22,7 +22,7 @@ int -fegetenv (fenv_t *envp) +__fegetenv (fenv_t *envp) { fpu_control_t fpscr; @@ -34,4 +34,6 @@ fegetenv (fenv_t *envp) envp->__cw = fpscr; return 0; } -libm_hidden_def (fegetenv) +libm_hidden_def (__fegetenv) +weak_alias (__fegetenv, fegetenv) +libm_hidden_weak (fegetenv) diff --git a/sysdeps/generic/math_private.h b/sysdeps/generic/math_private.h index 94c1e4a192..2b07f20a6f 100644 --- a/sysdeps/generic/math_private.h +++ b/sysdeps/generic/math_private.h @@ -598,7 +598,7 @@ libc_feholdsetround_ctx (struct rm_ctx *ctx, int round) if (__glibc_unlikely (round != get_rounding_mode ())) { ctx->updated_status = true; - fegetenv (&ctx->env); + __fegetenv (&ctx->env); fesetround (round); } } @@ -615,7 +615,7 @@ static __always_inline void libc_feholdsetround_noex_ctx (struct rm_ctx *ctx, int round) { /* Save exception flags and rounding mode. */ - fegetenv (&ctx->env); + __fegetenv (&ctx->env); /* Update rounding mode only if different. */ if (__glibc_unlikely (round != get_rounding_mode ())) diff --git a/sysdeps/hppa/fpu/fegetenv.c b/sysdeps/hppa/fpu/fegetenv.c index 7028fe4a22..ee7fa1677f 100644 --- a/sysdeps/hppa/fpu/fegetenv.c +++ b/sysdeps/hppa/fpu/fegetenv.c @@ -21,7 +21,7 @@ #include int -fegetenv (fenv_t *envp) +__fegetenv (fenv_t *envp) { unsigned long long buf[4], *bufptr = buf; @@ -32,4 +32,6 @@ fegetenv (fenv_t *envp) memcpy(envp, buf, sizeof (*envp)); return 0; } -libm_hidden_def (fegetenv) +libm_hidden_def (__fegetenv) +weak_alias (__fegetenv, fegetenv) +libm_hidden_weak (fegetenv) diff --git a/sysdeps/i386/fpu/fegetenv.c b/sysdeps/i386/fpu/fegetenv.c index 8c45b6b8cb..b578703fdf 100644 --- a/sysdeps/i386/fpu/fegetenv.c +++ b/sysdeps/i386/fpu/fegetenv.c @@ -44,5 +44,6 @@ strong_alias (__fegetenv, __old_fegetenv) compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1); #endif +libm_hidden_def (__fegetenv) libm_hidden_ver (__fegetenv, fegetenv) versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2); diff --git a/sysdeps/ia64/fpu/fegetenv.c b/sysdeps/ia64/fpu/fegetenv.c index d337dda0c2..8d46e23151 100644 --- a/sysdeps/ia64/fpu/fegetenv.c +++ b/sysdeps/ia64/fpu/fegetenv.c @@ -20,10 +20,12 @@ #include int -fegetenv (fenv_t *envp) +__fegetenv (fenv_t *envp) { __asm__ __volatile__ ("mov.m %0=ar.fpsr" : "=r" (*envp)); return 0; } -libm_hidden_def (fegetenv) +libm_hidden_def (__fegetenv) +weak_alias (__fegetenv, fegetenv) +libm_hidden_weak (fegetenv) diff --git a/sysdeps/m68k/fpu/fegetenv.c b/sysdeps/m68k/fpu/fegetenv.c index 7feac6426f..c31a5f5ece 100644 --- a/sysdeps/m68k/fpu/fegetenv.c +++ b/sysdeps/m68k/fpu/fegetenv.c @@ -40,5 +40,6 @@ strong_alias (__fegetenv, __old_fegetenv) compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1); #endif +libm_hidden_def (__fegetenv) libm_hidden_ver (__fegetenv, fegetenv) versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2); diff --git a/sysdeps/mips/fpu/fegetenv.c b/sysdeps/mips/fpu/fegetenv.c index b87d35f0de..d52c9de3dc 100644 --- a/sysdeps/mips/fpu/fegetenv.c +++ b/sysdeps/mips/fpu/fegetenv.c @@ -21,11 +21,13 @@ #include int -fegetenv (fenv_t *envp) +__fegetenv (fenv_t *envp) { _FPU_GETCW (*envp); /* Success. */ return 0; } -libm_hidden_def (fegetenv) +libm_hidden_def (__fegetenv) +weak_alias (__fegetenv, fegetenv) +libm_hidden_weak (fegetenv) diff --git a/sysdeps/powerpc/fpu/fegetenv.c b/sysdeps/powerpc/fpu/fegetenv.c index 3e552bc9c5..69c48de8bd 100644 --- a/sysdeps/powerpc/fpu/fegetenv.c +++ b/sysdeps/powerpc/fpu/fegetenv.c @@ -33,5 +33,6 @@ strong_alias (__fegetenv, __old_fegetenv) compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1); #endif +libm_hidden_def (__fegetenv) libm_hidden_ver (__fegetenv, fegetenv) versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2); diff --git a/sysdeps/powerpc/nofpu/fegetenv.c b/sysdeps/powerpc/nofpu/fegetenv.c index 8501a05b69..032778a94a 100644 --- a/sysdeps/powerpc/nofpu/fegetenv.c +++ b/sysdeps/powerpc/nofpu/fegetenv.c @@ -40,5 +40,6 @@ strong_alias (__fegetenv, __old_fegetenv) compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1); #endif +libm_hidden_def (__fegetenv) libm_hidden_ver (__fegetenv, fegetenv) versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2); diff --git a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c b/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c index 5faabe8246..67b0e5483c 100644 --- a/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c +++ b/sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c @@ -43,6 +43,7 @@ __fegetenv (fenv_t *envp) strong_alias (__fegetenv, __old_fegetenv) compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1); #endif +libm_hidden_def (__fegetenv) libm_hidden_ver (__fegetenv, fegetenv) versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2); diff --git a/sysdeps/s390/fpu/fegetenv.c b/sysdeps/s390/fpu/fegetenv.c index 7e68ceb30b..cfbc5ce43a 100644 --- a/sysdeps/s390/fpu/fegetenv.c +++ b/sysdeps/s390/fpu/fegetenv.c @@ -21,11 +21,13 @@ #include int -fegetenv (fenv_t *envp) +__fegetenv (fenv_t *envp) { _FPU_GETCW (envp->__fpc); /* Success. */ return 0; } -libm_hidden_def (fegetenv) +libm_hidden_def (__fegetenv) +weak_alias (__fegetenv, fegetenv) +libm_hidden_weak (fegetenv) diff --git a/sysdeps/sh/sh4/fpu/fegetenv.c b/sysdeps/sh/sh4/fpu/fegetenv.c index 2dc26967f0..c97cfbd6f8 100644 --- a/sysdeps/sh/sh4/fpu/fegetenv.c +++ b/sysdeps/sh/sh4/fpu/fegetenv.c @@ -20,7 +20,7 @@ #include int -fegetenv (fenv_t *envp) +__fegetenv (fenv_t *envp) { fpu_control_t temp; _FPU_GETCW (temp); @@ -29,4 +29,6 @@ fegetenv (fenv_t *envp) return 0; } -libm_hidden_def (fegetenv) +libm_hidden_def (__fegetenv) +weak_alias (__fegetenv, fegetenv) +libm_hidden_weak (fegetenv) diff --git a/sysdeps/sparc/fpu/fegetenv.c b/sysdeps/sparc/fpu/fegetenv.c index 55600d5bec..b9873595a4 100644 --- a/sysdeps/sparc/fpu/fegetenv.c +++ b/sysdeps/sparc/fpu/fegetenv.c @@ -33,5 +33,6 @@ strong_alias (__fegetenv, __old_fegetenv) compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1); #endif +libm_hidden_def (__fegetenv) libm_hidden_ver (__fegetenv, fegetenv) versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2); diff --git a/sysdeps/tile/math_private.h b/sysdeps/tile/math_private.h index 035a83fd37..70e4fb2060 100644 --- a/sysdeps/tile/math_private.h +++ b/sysdeps/tile/math_private.h @@ -30,6 +30,7 @@ #define feclearexcept(exc) ({ 0; }) #define fetestexcept(exc) ({ 0; }) extern inline int fegetenv (fenv_t *__e) { return 0; } +extern inline int __fegetenv (fenv_t *__e) { return 0; } extern inline int fesetenv (const fenv_t *__e) { return 0; } extern inline int feupdateenv (const fenv_t *__e) { return 0; } extern inline int fegetround (void) { return FE_TONEAREST; } diff --git a/sysdeps/x86_64/fpu/fegetenv.c b/sysdeps/x86_64/fpu/fegetenv.c index 0e0c269375..d150e8fc43 100644 --- a/sysdeps/x86_64/fpu/fegetenv.c +++ b/sysdeps/x86_64/fpu/fegetenv.c @@ -19,7 +19,7 @@ #include int -fegetenv (fenv_t *envp) +__fegetenv (fenv_t *envp) { __asm__ ("fnstenv %0\n" /* fnstenv changes the exception mask, so load back the @@ -30,4 +30,6 @@ fegetenv (fenv_t *envp) /* Success. */ return 0; } -libm_hidden_def (fegetenv) +libm_hidden_def (__fegetenv) +weak_alias (__fegetenv, fegetenv) +libm_hidden_weak (fegetenv)