unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: libc-alpha@sourceware.org
Cc: Joseph Myers <josmyers@redhat.com>,
	Florian Weimer <fweimer@redhat.com>,
	"H . J . Lu" <hjl.tools@gmail.com>
Subject: [PATCH v2 00/10] Fix some libm static issues
Date: Wed, 27 Mar 2024 16:40:14 -0300	[thread overview]
Message-ID: <20240327194024.1409677-1-adhemerval.zanella@linaro.org> (raw)

Some recent math optimizations removed some symbols from the static
build and due to the limited static build check, along with
--disable-shared being broken for some time [1]; this issue has slipped
some releases.

Although the fix is straightforward, I added an extra framework to
enable static build for select math libraries using the generic type
framework (which autogenerated the tests for all supported types using
the C template files). I have not enabled it for all tests due to the
required extra size constraint, maybe a future
---enable-static-math-tests configure option could improve test
coverage.

As an experiment, I enabled static build for all autogenerated math
tests. This has uncovered some extra missing symbols on some ABIs, along
with some issues with implementation used on static for some ABIs.  On
x86_64/i686 it shows that the assembly optimizations for acos, log10,
log2, and ldbl-96 y0/y1 show some issues.

I tested this patchset on x86_64, i686, armhf, aarch64, and powerpc64le.
The powerpc64le shows some issues with the static linking, due to the
newly enabled tests (using gcc 13.1):

FAIL: math/test-float128-exp10-static
FAIL: math/test-float64x-exp10-static
FAIL: math/test-ibm128-acos-static
FAIL: math/test-ibm128-copysign-static
FAIL: math/test-ibm128-exp10-static
FAIL: math/test-ibm128-fmod-static
FAIL: math/test-ibm128-frexp-static
FAIL: math/test-ibm128-modf-static

I have not analyzed what is happening, but it might be due to the
'-mabi=ibmlongdouble' along with how libgcc.a was built (I saw some
issues on GCC bugzilla). One option could be XFAIL for now.

[1] https://sourceware.org/bugzilla/show_bug.cgi?id=20845

Adhemerval Zanella (10):
  math: Add support for auto static math tests
  math: Fix i386 and m68k fmod/fmodf on static build (BZ 31488)
  i386: Use generic fmod
  i386: Use generic fmodf
  math: Fix i386 and m68k exp10 on static build
  i386: Use generic exp10
  math: Fix isnanf128 static build
  math: Provided copysignf128 for static libm on alpha, s390, and
    sparcv9
  math: Provide frexpf128 for static libm on alpha, s390, and sparcv9
  math: Provide modf128 for static libm on alpha, s390, and sparcv9

 math/Makefile                               | 111 +++++++++++++++++++-
 math/test-double-static.h                   |   1 +
 math/test-float-static.h                    |   1 +
 math/test-float128-static.h                 |   1 +
 math/test-float32-static.h                  |   1 +
 math/test-float32x-static.h                 |   1 +
 math/test-float64-static.h                  |   1 +
 math/test-float64x-static.h                 |   1 +
 math/test-ibm128-static.h                   |   1 +
 math/test-ldouble-static.h                  |   1 +
 sysdeps/i386/fpu/Versions                   |   5 +
 sysdeps/i386/fpu/e_exp10.S                  |  51 ---------
 sysdeps/i386/fpu/e_exp10.c                  |   2 +
 sysdeps/i386/fpu/e_exp_data.c               |   1 -
 sysdeps/i386/fpu/e_fmod.S                   |  18 ----
 sysdeps/i386/fpu/e_fmod.c                   |   2 +
 sysdeps/i386/fpu/e_fmodf.S                  |  18 ----
 sysdeps/i386/fpu/e_fmodf.c                  |   2 +
 sysdeps/i386/fpu/math_err.c                 |   1 -
 sysdeps/i386/fpu/w_exp10_compat.c           |   3 -
 sysdeps/i386/fpu/w_fmod_compat.c            |  14 ---
 sysdeps/i386/fpu/w_fmodf_compat.c           |  14 ---
 sysdeps/ieee754/dbl-64/e_exp10.c            |   7 +-
 sysdeps/ieee754/dbl-64/e_fmod.c             |   5 +-
 sysdeps/ieee754/float128/float128_private.h |   2 +-
 sysdeps/ieee754/float128/s_isnanf128.c      |   4 +
 sysdeps/ieee754/flt-32/e_fmodf.c            |   5 +-
 sysdeps/ieee754/ldbl-64-128/s_copysignl.c   |   4 +-
 sysdeps/ieee754/ldbl-64-128/s_frexpl.c      |   4 +-
 sysdeps/ieee754/ldbl-64-128/s_modfl.c       |   4 +-
 sysdeps/ieee754/ldbl-opt/s_ldexpl.c         |   4 +-
 sysdeps/m68k/m680x0/fpu/w_exp10_compat.c    |   9 +-
 sysdeps/m68k/m680x0/fpu/w_fmod_compat.c     |   5 +-
 sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c    |   7 +-
 sysdeps/mach/hurd/i386/libm.abilist         |   3 +
 sysdeps/unix/sysv/linux/i386/libm.abilist   |   3 +
 36 files changed, 175 insertions(+), 142 deletions(-)
 create mode 100644 math/test-double-static.h
 create mode 100644 math/test-float-static.h
 create mode 100644 math/test-float128-static.h
 create mode 100644 math/test-float32-static.h
 create mode 100644 math/test-float32x-static.h
 create mode 100644 math/test-float64-static.h
 create mode 100644 math/test-float64x-static.h
 create mode 100644 math/test-ibm128-static.h
 create mode 100644 math/test-ldouble-static.h
 delete mode 100644 sysdeps/i386/fpu/e_exp10.S
 create mode 100644 sysdeps/i386/fpu/e_exp10.c
 delete mode 100644 sysdeps/i386/fpu/e_exp_data.c
 delete mode 100644 sysdeps/i386/fpu/e_fmod.S
 create mode 100644 sysdeps/i386/fpu/e_fmod.c
 delete mode 100644 sysdeps/i386/fpu/e_fmodf.S
 create mode 100644 sysdeps/i386/fpu/e_fmodf.c
 delete mode 100644 sysdeps/i386/fpu/math_err.c
 delete mode 100644 sysdeps/i386/fpu/w_exp10_compat.c
 delete mode 100644 sysdeps/i386/fpu/w_fmod_compat.c
 delete mode 100644 sysdeps/i386/fpu/w_fmodf_compat.c

-- 
2.34.1


             reply	other threads:[~2024-03-27 19:41 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-27 19:40 Adhemerval Zanella [this message]
2024-03-27 19:40 ` [PATCH v2 01/10] math: Add support for auto static math tests Adhemerval Zanella
2024-03-27 19:40 ` [PATCH v2 02/10] math: Fix i386 and m68k fmod/fmodf on static build (BZ 31488) Adhemerval Zanella
2024-03-27 19:40 ` [PATCH v2 03/10] i386: Use generic fmod Adhemerval Zanella
2024-03-27 19:55   ` H.J. Lu
2024-03-27 20:37     ` Adhemerval Zanella Netto
2024-03-27 21:38       ` H.J. Lu
2024-03-28 14:11         ` Adhemerval Zanella Netto
2024-03-28 14:51           ` H.J. Lu
2024-03-28 15:14             ` Adhemerval Zanella Netto
     [not found]               ` <CAMe9rOqhQDA-zk=+oTvdoPpq=rGEhtan0couaZ3Z_fxeFpa=7A@mail.gmail.com>
     [not found]                 ` <9bf7af32-afa3-439c-84c0-76e76b220e44@linaro.org>
     [not found]                   ` <CAMe9rOqTcmRc9mvguQnDRFb=BTjZJ5CptxjtPjtBGoB-a5mc6Q@mail.gmail.com>
     [not found]                     ` <0e4733a3-d569-4a73-b2d3-001cc6c3d751@linaro.org>
2024-03-28 16:00                       ` H.J. Lu
2024-03-28 18:22                         ` Adhemerval Zanella Netto
2024-03-28 18:38                           ` Joseph Myers
2024-03-28 19:37                             ` Adhemerval Zanella Netto
2024-03-28 19:57                               ` H.J. Lu
2024-03-27 19:40 ` [PATCH v2 04/10] i386: Use generic fmodf Adhemerval Zanella
2024-03-27 19:55   ` H.J. Lu
2024-03-27 19:40 ` [PATCH v2 05/10] math: Fix i386 and m68k exp10 on static build Adhemerval Zanella
2024-03-27 19:57   ` H.J. Lu
2024-03-27 20:39     ` Adhemerval Zanella Netto
2024-03-27 20:55       ` Joseph Myers
2024-03-27 19:40 ` [PATCH v2 06/10] i386: Use generic exp10 Adhemerval Zanella
2024-03-27 20:14   ` H.J. Lu
2024-03-27 19:40 ` [PATCH v2 07/10] math: Fix isnanf128 static build Adhemerval Zanella
2024-03-27 19:40 ` [PATCH v2 08/10] math: Provided copysignf128 for static libm on alpha, s390, and sparcv9 Adhemerval Zanella
2024-03-27 19:40 ` [PATCH v2 09/10] math: Provide frexpf128 " Adhemerval Zanella
2024-03-27 19:40 ` [PATCH v2 10/10] math: Provide modf128 " Adhemerval Zanella

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/libc/involved.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240327194024.1409677-1-adhemerval.zanella@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=fweimer@redhat.com \
    --cc=hjl.tools@gmail.com \
    --cc=josmyers@redhat.com \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).