unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: "H.J. Lu" <hjl.tools@gmail.com>
To: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
Cc: Florian Weimer <fweimer@redhat.com>,
	Joseph Myers <josmyers@redhat.com>,
	libc-alpha@sourceware.org
Subject: Re: [PATCH v2 1/6] math: Add support for auto static math tests
Date: Mon, 25 Mar 2024 07:25:40 -0700	[thread overview]
Message-ID: <CAMe9rOo1zZagS9uKUheJW+4=SzQD7+J93HHeb6PxMxtropF2zA@mail.gmail.com> (raw)
In-Reply-To: <1ab96a85-a66c-45f7-9786-863cd37e5497@linaro.org>

On Mon, Mar 25, 2024 at 7:13 AM Adhemerval Zanella Netto
<adhemerval.zanella@linaro.org> wrote:
>
>
>
> On 25/03/24 10:34, H.J. Lu wrote:
> > On Fri, Mar 22, 2024 at 10:46 AM Adhemerval Zanella Netto
> > <adhemerval.zanella@linaro.org> wrote:
> >>
> >>
> >>
> >> On 22/03/24 12:51, Florian Weimer wrote:
> >>> * Adhemerval Zanella Netto:
> >>>
> >>>> On 22/03/24 03:46, Florian Weimer wrote:
> >>>>> * Joseph Myers:
> >>>>>
> >>>>>> On Thu, 21 Mar 2024, Adhemerval Zanella wrote:
> >>>>>>
> >>>>>>> It basically copy the already in place rules for dynamic tests
> >>>>>>> for auto-generated math tests for all support types.  To avoid
> >>>>>>> the need to duplicate .inc files, a .SECONDEXPANSION rules is
> >>>>>>> adeed for the gen-libm-test.py generation.
> >>>>>>
> >>>>>> Running the autogenerated tests seems overly complicated when the goal is
> >>>>>> simply to verify that linking a call succeeds.
> >>>>>
> >>>>> Right.  And I would prefer if we could mark compat/otherwise non-static
> >>>>> symbols in the ABI lists and use those for testing static linking.
> >>>>>
> >>>>
> >>>> That was my first approach, but then as an experiment I enabled static
> >>>> build for most of math tests and unexpectedly it has shows some failures
> >>>> on x86_64:
> >>>>
> >>>> FAIL: math/test-float64x-acos
> >>>> FAIL: math/test-float64x-log10
> >>>> FAIL: math/test-float64x-log2
> >>>> FAIL: math/test-float64x-y0
> >>>> FAIL: math/test-float64x-y1
> >>>> FAIL: math/test-ldouble-acos
> >>>> FAIL: math/test-ldouble-log10
> >>>> FAIL: math/test-ldouble-log2
> >>>> FAIL: math/test-ldouble-y0
> >>>> FAIL: math/test-ldouble-y1
> >>>>
> >>>> $ cat math/test-float64x-acos.out
> >>>> testing _Float64x (without inline functions)
> >>>> Failure: acos (max_value): Exception "Overflow" set
> >>>> Failure: acos (-max_value): Exception "Overflow" set
> >>>> Failure: acos_downward (max_value): Exception "Overflow" set
> >>>> Failure: acos_downward (-max_value): Exception "Overflow" set
> >>>> Failure: acos_towardzero (max_value): Exception "Overflow" set
> >>>> Failure: acos_towardzero (-max_value): Exception "Overflow" set
> >>>> Failure: acos_upward (max_value): Exception "Overflow" set
> >>>> Failure: acos_upward (-max_value): Exception "Overflow" set
> >>>>
> >
> > This new static test only checks link failure.  It doesn't check if the static
> > implementation is correct.  We may not have more functional coverage
> > for static libm in the first static libm test patch.  But the first new static
> > libm tests should least expose one static libm failure on x86-64.
>
> The first patch is just a framework so we can selective add new static
> tests, I haven't hook all of the autogenerated tests because this would
> add more cpu and disk usage.
>
> And the test added on libm-test-funcs-*-static rules does check for
> the implementation, using the default math skeleton test (including
> ulp, rounding, exceptions, etc).
>
> >
> >>>> My plan was to eventually track down what might be happening here, and
> >>>> the currently autogenerated tests gave me a nice scaffolding to add coverage
> >>>> tests.
> >>>
> >>> Interesting.  On the other hand, getting --disable-shared to work and
> >>> just run the *entire* test suite could provide value, too.  The last
> >>> time we discussed this we weren't sure if we had static-specific
> >>> failures, but your example shows that we do.
> >>>
> >>
> >> The main problem imho is --disable-shared is essentially a maintainer
> >> option. Although some installed programs will be static linked, it is
> >> really useful on checking if static linking is really working as expected.
> >>
> >> And it also requires *another* build and check iteration, which duplicates
> >> the work required in most cases (since static libraries are still built
> >> on default for --enable-shared).  I tried to help a coworker on support the
> >> --disable-shared and I recall another potential issues was the resulting
> >> disk usage (and thus build requirements) was quite high due glibc poor
> >> organization on static build requirements.
> >>
> >> There also another complication where we will need to constantly add
> >> $(build-shared) and duplicate the CI work to ensure both configure
> >> builds are ok.
> >>
> >> So I really think we should phase-out --disable-shared and work towards
> >> on add more static build tests.
> >
> > Agreed.  We should add one static libm functional test to each libm
> > functional test.  With this, the static libm link tests won't be needed.
>
> For this patchset only added the required one to check for symbols that
> there were some regression with recent fixes. But it should be doable to
> hook all tests for all symbols, although it would require some more Makefile
> rules to hook the tgmath ones.

The first patch should just add the functional tests for the missing static
libm functions with Makefile changes which can be extended to cover
other libm functions.

> I don't have a strong opinion in fact, and I am ok on changing to Joseph's
> suggestion to check minimal tests to check for static linking support.



-- 
H.J.

  reply	other threads:[~2024-03-25 14:26 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-21 16:43 [PATCH v2 0/6] Math static build fixes Adhemerval Zanella
2024-03-21 16:43 ` [PATCH v2 1/6] math: Add support for auto static math tests Adhemerval Zanella
2024-03-21 23:35   ` Joseph Myers
2024-03-22  6:46     ` Florian Weimer
2024-03-22 14:14       ` Adhemerval Zanella Netto
2024-03-22 15:51         ` Florian Weimer
2024-03-22 17:46           ` Adhemerval Zanella Netto
2024-03-25 13:34             ` H.J. Lu
2024-03-25 14:13               ` Adhemerval Zanella Netto
2024-03-25 14:25                 ` H.J. Lu [this message]
2024-03-25 14:29                   ` Adhemerval Zanella Netto
2024-03-25 14:52                     ` H.J. Lu
2024-03-25 17:41                       ` Adhemerval Zanella Netto
2024-03-26 13:40                         ` H.J. Lu
2024-03-26 17:37                           ` Joseph Myers
2024-03-26 17:55                             ` Adhemerval Zanella Netto
2024-03-26 17:59                               ` H.J. Lu
2024-03-21 16:43 ` [PATCH v2 2/6] math: Fix i386 and m68k fmod/fmodf on static build (BZ 31488) Adhemerval Zanella
2024-03-21 16:43 ` [PATCH v2 3/6] i386: Use generic fmod Adhemerval Zanella
2024-03-21 16:43 ` [PATCH v2 4/6] i386: Use generic fmodf Adhemerval Zanella
2024-03-21 16:43 ` [PATCH v2 5/6] math: Fix i386 and m68k exp10 on static build Adhemerval Zanella
2024-03-21 16:43 ` [PATCH v2 6/6] i386: Use generic exp10 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='CAMe9rOo1zZagS9uKUheJW+4=SzQD7+J93HHeb6PxMxtropF2zA@mail.gmail.com' \
    --to=hjl.tools@gmail.com \
    --cc=adhemerval.zanella@linaro.org \
    --cc=fweimer@redhat.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).