From: Yury Norov <ynorov@caviumnetworks.com>
To: Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org>
Cc: GNU C Library <libc-alpha@sourceware.org>
Subject: Re: ILP32 for ARM64: testing with glibc testsuite
Date: Thu, 24 Nov 2016 05:16:00 -0000 [thread overview]
Message-ID: <20161124051539.GA5365@yury-N73SV> (raw)
In-Reply-To: <AE876380-19B7-415F-AB14-21FB40189CF6@linaro.org>
On Wed, Nov 16, 2016 at 03:25:40PM +0400, Maxim Kuvyrkov wrote:
> [Resending with trimmed CC: to avoid libc-alpha's spam filter]
>
> > On Nov 9, 2016, at 1:56 PM, Yury Norov <ynorov@caviumnetworks.com> wrote:
> >
> > On Mon, Nov 07, 2016 at 01:53:59PM +0530, Yury Norov wrote:
> >> Hi all,
> >>
> >> [add libc-alpha mail list]
> >>
> >> For libc-alpha: this is the part of LKML submission with latest
> >> patches for aarch64/ilp32.
> >> https://www.spinics.net/lists/arm-kernel/msg537846.html
> >>
> >> Glibc that I use has also included consolidation patches from Adhemerval
> >> Zanella and me that are still not in the glibc master. The full series is:
> >> https://github.com/norov/glibc/tree/ilp32-2.24-dev2
> >>
> >> Below is the results of glibc testsuite run for aarch64/lp64
> >> in different configurations. Column names meaning:
> >> kvgv: kernel is vanilla, glibc is vanilla;
> >> kdgv: kernel has ilp32 patches applied, but ilp32 is disabled in config;
> >> glibc is vanilla;
> >> kegv: kernel has ilp32 patches applied and ilp32 is enabled, glibc is vanilla;
> >> kege: kernel patches are applied and enabled, glibc patches are applied.
> >>
> >> Only different lines are shown. Full results are in attached archive.
>
> Hi Yury,
>
> The general requirement merging ILP32 glibc patches is that LP64 does not regress in any reasonable configuration. This means that there should be 0 regressions between kvgv and kvge -- i.e., glibc in LP64 mode with and without ILP32 patches does not regress on the vanilla kernel. The kvge configuration is not in your testing matrix, and I suggest you make sure it has no regressions before fixing the more "advanced" configuration of kege.
>
> Ideally, there should be no regressions between kvgv and kege configurations, but I don't consider this to a requirement for glibc acceptance of ILP32 patches, since any regressions between kvge and kege configurations are likely to be on the kernel side.
>
> Speculating on the kernel requirements for ILP32 kernel patchset, I think there should be 0 regressions between kvgv and kdgv configurations, where you have only 3 tests to investigate and fix.
>
> [I do appreciate that there are progressions in your results as well, but the glibc policy is that they do not offset regressions.]
>
> The above only concerns LP64 support in kernel and glibc.
>
> Regarding ILP32 runtime, my opinion is that it is acceptable for ILP32 to have extra failures compared to LP64, since these are not regressions, but, rather, failures of a new configuration. From a superficial glance is seems that ILP32 linknamespace support requires attention, as well as stack unwinding (judging from NPTL failures).
>
>
> --
> Maxim Kuvyrkov
> www.linaro.org
Hi Maxim, others,
From last email we have fixed major part of fails, and also tested
vanilla kernel with ilp32-enabled glibc, as Maxim asked (kvge column).
Source trees:
https://github.com/norov/glibc/tree/ilp32-2.24-dev5
https://github.com/norov/linux/tree/ilp32-4.9-rc4
Some fails analysis is below.
ILP32 LP64 kvge Vanilla
c++-types-check FAIL PASS PASS PASS
conform/ISO/stdio.h/linknamespace FAIL FAIL FAIL PASS
conform/ISO11/stdio.h/linknamespace FAIL FAIL FAIL PASS
conform/ISO99/stdio.h/linknamespace FAIL FAIL FAIL PASS
conform/POSIX/stdio.h/linknamespace FAIL FAIL FAIL PASS
conform/POSIX/sys/stat.h/linknamespace FAIL FAIL FAIL PASS
conform/UNIX98/stdio.h/linknamespace FAIL FAIL FAIL PASS
conform/XOPEN2K/stdio.h/linknamespace FAIL FAIL FAIL PASS
conform/XPG3/stdio.h/linknamespace FAIL FAIL FAIL PASS
conform/XPG4/stdio.h/linknamespace FAIL FAIL FAIL PASS
elf/check-localplt FAIL FAIL FAIL PASS
elf/tst-tls1 FAIL PASS PASS PASS
elf/tst-tls1-static FAIL PASS PASS PASS
elf/tst-tls2 FAIL PASS PASS PASS
elf/tst-tls2-static FAIL PASS PASS PASS
elf/tst-tls3 FAIL PASS PASS PASS
iconvdata/mtrace-tst-loading FAIL FAIL FAIL PASS
iconvdata/tst-loading FAIL FAIL FAIL PASS
io/check-installed-headers-c FAIL FAIL FAIL PASS
io/check-installed-headers-cxx FAIL FAIL FAIL PASS
localedata/mtrace-tst-leaks PASS FAIL FAIL PASS
localedata/tst-leaks PASS FAIL FAIL PASS
malloc/tst-malloc-backtrace PASS PASS PASS FAIL
malloc/tst-malloc-thread-exit PASS PASS PASS FAIL
malloc/tst-malloc-usable PASS PASS PASS FAIL
malloc/tst-mallocfork PASS PASS PASS FAIL
malloc/tst-mallocstate PASS PASS PASS FAIL
malloc/tst-mallopt PASS PASS PASS FAIL
malloc/tst-mcheck PASS PASS PASS FAIL
malloc/tst-memalign PASS PASS PASS FAIL
malloc/tst-obstack PASS PASS PASS FAIL
malloc/tst-posix_memalign PASS PASS PASS FAIL
malloc/tst-pvalloc PASS PASS PASS FAIL
malloc/tst-realloc PASS PASS PASS FAIL
malloc/tst-scratch_buffer PASS PASS PASS FAIL
malloc/tst-trim1 PASS PASS PASS FAIL
math/test-double PASS PASS PASS FAIL
math/test-double-finite PASS PASS PASS FAIL
math/test-idouble PASS PASS PASS FAIL
misc/tst-writev NA NA NA PASS
posix/tst-getaddrinfo4 PASS PASS FAIL PASS
posix/tst-getaddrinfo5 PASS PASS FAIL PASS
nptl/tst-cancel26 FAIL PASS PASS PASS
nptl/tst-cancel27 FAIL PASS PASS PASS
posix/tst-regex2 FAIL FAIL FAIL PASS
rt/tst-mqueue1 FAIL PASS PASS PASS
rt/tst-mqueue2 FAIL PASS PASS PASS
rt/tst-mqueue4 FAIL PASS PASS PASS
rt/tst-mqueue7 FAIL PASS PASS PASS
stdlib/tst-makecontext3 FAIL PASS PASS PASS
sunrpc/bug20790 PASS PASS NA NA
sysvipc/test-sysvmsg PASS PASS NA NA
sysvipc/test-sysvsem PASS PASS NA NA
sysvipc/test-sysvshm PASS PASS NA NA
Conform tests fail most probably because I have vanilla headers at
standard paths (/usr/include). Modified headers are under different
testing location. Steve also tested it, and he has modified headers at
/usr/include, and he doesn't see failures of conform tests. I don't
think that kernel or wrong ABI caused this regression. Most probably
it's configuration issue. I also think that glibc should take headers
from testing directory, not from standard paths. For me it's dangerous
to replace standard headers with untested ones. Is there some option
in glibc testsuite configuration to provide path to headers explicitly?
elf/* tests fail only in ILP32 mode. We tracked it down to the linker
problem that replaces accesses to TLS with direct address calculation
if possible, and does it wrong for ilp32. This is definitely a linker
problem, and ABI and kernel are not involved here.
iconvdata/mtrace-tst-loading, iconvdata/tst-loading, io/check-installed-headers-c
and io/check-installed-headers-cxx are most probably failing due to installed
headers, like conform tests.
localedata/mtrace-tst-leaks and localedata/tst-leaks fail only for me.
Steve has it passed. I'm not sure but it also looks like
configuration issue, or similar.
posix/tst-getaddrinfo4 and posix/tst-getaddrinfo5 check broken URLs.
We should investigate it, but I don't think it's ABI issue. Also, if I
run them manually, they return 0, which means they are passed, I
suppose.
nptl/tst-cancel26, nptl/tst-cancel27, rt/tst-mqueue1,2,4,7 are also looking
like the TLS issue.
posix/tst-regex2 and stdlib/tst-makecontext3 fail only for me, so it's
probably my local problem.
So, with all regressions still been in the list, major part is
looking like my local configuration problems. Others fail due to
linker wrong behavior. I don't see any obvious failures caused
by kernel or ABI errors.
Yury.
next prev parent reply other threads:[~2016-11-24 5:16 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1477081997-4770-1-git-send-email-ynorov@caviumnetworks.com>
2016-11-07 8:24 ` Yury Norov
2016-11-09 9:57 ` Yury Norov
2016-11-16 11:26 ` Maxim Kuvyrkov
2016-11-16 13:08 ` Yury Norov
2016-11-24 5:16 ` Yury Norov [this message]
2016-11-24 7:36 ` Florian Weimer
2016-11-24 9:00 ` Yury Norov
2016-11-24 9:06 ` Florian Weimer
2016-11-24 9:10 ` Andrew Pinski
2016-11-25 14:26 ` Ramana Radhakrishnan
2016-11-25 15:30 ` Yury Norov
[not found] ` <CC4F99A7-1FD2-486A-BD66-ED06F1B8BF50@linaro.org>
[not found] ` <1479419136.908.90.camel@caviumnetworks.com>
2016-12-05 10:02 ` Zhangjian (Bamvor)
2016-12-05 10:07 ` Andreas Schwab
2016-12-05 10:26 ` Zhangjian (Bamvor)
2016-12-06 5:29 ` Yury Norov
[not found] ` <1480966437.29811.23.camel@caviumnetworks.com>
2016-12-06 8:31 ` Andreas Schwab
[not found] ` <20161028124659.GA24131@yury-N73SV>
[not found] ` <cdf5cdf2-43af-6d7f-9e0c-72675fb83224@huawei.com>
[not found] ` <266952F2-53F5-4D5E-83F0-6C8203092F67@linaro.org>
[not found] ` <120041af-f4e9-5b6f-36dc-7d3535a1f01c@huawei.com>
2016-12-05 10:23 ` ILP32 for ARM64 - testing with lmbench Zhangjian (Bamvor)
[not found] ` <20161205141312.GC14429@e104818-lin.cambridge.arm.com>
2016-12-11 12:08 ` Yury Norov
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161124051539.GA5365@yury-N73SV \
--to=ynorov@caviumnetworks.com \
--cc=libc-alpha@sourceware.org \
--cc=maxim.kuvyrkov@linaro.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).