This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug math/6803] scalb(), scalbln(), scalbn() do not set errno on overflow/underflow


https://sourceware.org/bugzilla/show_bug.cgi?id=6803

--- Comment #9 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  da2f4f2dd5c07e1949f81a5ee23f880e891e3a82 (commit)
      from  bb95a72318e747ce8854e161cc590e67ac17f4f9 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=da2f4f2dd5c07e1949f81a5ee23f880e891e3a82

commit da2f4f2dd5c07e1949f81a5ee23f880e891e3a82
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Wed Sep 16 21:11:00 2015 +0000

    Make scalbn set errno (bug 6803).

    As noted in bug 6803, scalbn fails to set errno on overflow and
    underflow.  This patch fixes this by making scalbn an alias of ldexp,
    which has exactly the same semantics (for floating-point types with
    radix 2) and already has wrappers that deal with setting errno,
    instead of an alias of the internal __scalbn (which ldexp calls).

    Notes:

    * Where compat symbols were defined for scalbn functions, I didn't
      change what they point to (to keep the patch minimal), so such
      compat symbols continue to go directly to the non-errno-setting
      functions.

    * Mike, I didn't do anything with the IA64 versions of these
      functions, where I think both the ldexp and scalbn functions already
      deal with setting errno.  As a cleanup (not needed to fix this bug)
      however you might want to make those functions into aliases for
      IA64; there is no need for them to be separate function
      implementations at all.

    * This concludes the fix for bug 6803 since the scalb and scalbln
      cases of that bug were fixed some time ago.

    Tested for x86_64, x86, mips64 and powerpc.

        [BZ #6803]
        * math/s_ldexp.c (scalbn): Define as weak alias of __ldexp.
        [NO_LONG_DOUBLE] (scalbnl): Define as weak alias of __ldexp.
        * math/s_ldexpf.c (scalbnf): Define as weak alias of __ldexpf.
        * math/s_ldexpl.c (scalbnl): Define as weak alias of __ldexpl.
        * sysdeps/i386/fpu/s_scalbn.S (scalbn): Remove alias.
        * sysdeps/i386/fpu/s_scalbnf.S (scalbnf): Likewise.
        * sysdeps/i386/fpu/s_scalbnl.S (scalbnl): Likewise.
        * sysdeps/ieee754/dbl-64/s_scalbn.c (scalbn): Likewise.
        [NO_LONG_DOUBLE] (scalbnl): Likewise.
        * sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c (scalbn):
        Likewise.
        [NO_LONG_DOUBLE] (scalbnl): Likewise.
        * sysdeps/ieee754/flt-32/s_scalbnf.c (scalbnf): Likewise.
        * sysdeps/ieee754/ldbl-128/s_scalbnl.c (scalbnl): Likewise.
        * sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c (scalbnl): Remove
        long_double_symbol calls.
        * sysdeps/ieee754/ldbl-64-128/s_scalbnl.c (scalbnl): Likewise.
        * sysdeps/ieee754/ldbl-opt/s_ldexpl.c (__ldexpl_2): Define as
        strong alias of __ldexpl.
        (scalbnl): Define using long_double_symbol.
        * sysdeps/m68k/m680x0/fpu/s_scalbn.c (__CONCATX(scalbn,suffix)):
        Remove alias.
        * sysdeps/sparc/sparc64/soft-fp/s_scalbnl.c (scalbnl): Likewise.
        * sysdeps/x86_64/fpu/s_scalbnl.S (scalbnl): Likewise.
        * math/libm-test.inc (scalbn_test_data): Add errno expectations.
        (scalbln_test_data): Add more errno expectations.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                     |   30 +++++
 NEWS                                          |   14 ++--
 math/libm-test.inc                            |  144 ++++++++++++------------
 math/s_ldexp.c                                |    2 +
 math/s_ldexpf.c                               |    1 +
 math/s_ldexpl.c                               |    1 +
 sysdeps/i386/fpu/s_scalbn.S                   |    1 -
 sysdeps/i386/fpu/s_scalbnf.S                  |    1 -
 sysdeps/i386/fpu/s_scalbnl.S                  |    1 -
 sysdeps/ieee754/dbl-64/s_scalbn.c             |    2 -
 sysdeps/ieee754/dbl-64/wordsize-64/s_scalbn.c |    2 -
 sysdeps/ieee754/flt-32/s_scalbnf.c            |    1 -
 sysdeps/ieee754/ldbl-128/s_scalbnl.c          |    1 -
 sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c       |    5 -
 sysdeps/ieee754/ldbl-64-128/s_scalbnl.c       |    5 -
 sysdeps/ieee754/ldbl-opt/s_ldexpl.c           |    3 +
 sysdeps/m68k/m680x0/fpu/s_scalbn.c            |    1 -
 sysdeps/sparc/sparc64/soft-fp/s_scalbnl.c     |    2 -
 sysdeps/x86_64/fpu/s_scalbnl.S                |    1 -
 19 files changed, 116 insertions(+), 102 deletions(-)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]