[PATCH v7 00/13] GLIBC LoongArch PATCHES

WANG Xuerui i.swmail@xen0n.name
Sun Jul 24 09:49:11 GMT 2022


Hi,

On 7/19/22 09:20, caiyinyu wrote:
> <snip>
> 6. Test result: all passed (ifunc disable).
>
> Test with:
>    Linux-5.19-rc4, Binutils-2.38, and GCC-12.1.
>    glibc: https://github.com/loongson/glibc/tree/loongarch_2_36_upstream_v7
>
> Result (ifunc disable):
> XPASS: conform/UNIX98/ndbm.h/linknamespace
> XPASS: conform/XOPEN2K/ndbm.h/linknamespace
> XPASS: conform/XOPEN2K8/ndbm.h/linknamespace
> XPASS: conform/XPG42/ndbm.h/linknamespace
> UNSUPPORTED: crypt/cert
> UNSUPPORTED: elf/tst-env-setuid
> UNSUPPORTED: elf/tst-env-setuid-tunables
> XPASS: elf/tst-protected1a
> XPASS: elf/tst-protected1b
> UNSUPPORTED: elf/tst-valgrind-smoke
> UNSUPPORTED: misc/tst-adjtimex
> UNSUPPORTED: misc/tst-clock_adjtime
> UNSUPPORTED: misc/tst-ntp_adjtime
> UNSUPPORTED: misc/tst-pkey
> UNSUPPORTED: misc/tst-rseq
> UNSUPPORTED: misc/tst-rseq-disable
> UNSUPPORTED: nptl/test-cond-printers
> UNSUPPORTED: nptl/test-condattr-printers
> UNSUPPORTED: nptl/test-mutex-printers
> UNSUPPORTED: nptl/test-mutexattr-printers
> UNSUPPORTED: nptl/test-rwlock-printers
> UNSUPPORTED: nptl/test-rwlockattr-printers
> UNSUPPORTED: nptl/tst-pthread-gdb-attach
> UNSUPPORTED: nptl/tst-pthread-gdb-attach-static
> UNSUPPORTED: nptl/tst-rseq-nptl
> UNSUPPORTED: stdlib/tst-secure-getenv
> UNSUPPORTED: time/tst-clock_settime
> UNSUPPORTED: time/tst-settimeofday
> Summary of test results:
>     4535 PASS
>       22 UNSUPPORTED
>       12 XFAIL
>        6 XPASS

Thanks for your effort these days. I ran the test on Gentoo and this is 
what I have found out:

UNSUPPORTED: crypt/cert
FAIL: elf/check-abi-libc
FAIL: elf/ifuncmain1
FAIL: elf/ifuncmain1pic
FAIL: elf/ifuncmain1pie
FAIL: elf/ifuncmain1staticpic
FAIL: elf/ifuncmain1staticpie
FAIL: elf/ifuncmain1vis
FAIL: elf/ifuncmain1vispic
FAIL: elf/ifuncmain1vispie
FAIL: elf/ifuncmain2
FAIL: elf/ifuncmain2pic
FAIL: elf/ifuncmain3
FAIL: elf/ifuncmain4
FAIL: elf/ifuncmain5staticpic
FAIL: elf/ifuncmain6pie
FAIL: elf/ifuncmain7
FAIL: elf/ifuncmain7pic
FAIL: elf/ifuncmain7pie
FAIL: elf/ifuncmain9
FAIL: elf/ifuncmain9pic
FAIL: elf/ifuncmain9pie
UNSUPPORTED: elf/tst-env-setuid
UNSUPPORTED: elf/tst-env-setuid-tunables
FAIL: elf/tst-glibc-hwcaps-prepend-cache
FAIL: elf/tst-ifunc-textrel
FAIL: elf/tst-ldconfig-ld_so_conf-update
XPASS: elf/tst-protected1a
XPASS: elf/tst-protected1b
UNSUPPORTED: elf/tst-valgrind-smoke
FAIL: malloc/tst-free-errno-malloc-hugetlb1
UNSUPPORTED: misc/tst-adjtimex
UNSUPPORTED: misc/tst-clock_adjtime
UNSUPPORTED: misc/tst-ntp_adjtime
UNSUPPORTED: misc/tst-pkey
UNSUPPORTED: misc/tst-rseq
UNSUPPORTED: misc/tst-rseq-disable
FAIL: nptl/tst-pthread-gdb-attach
FAIL: nptl/tst-pthread-gdb-attach-static
UNSUPPORTED: nptl/tst-rseq-nptl
FAIL: nss/tst-nss-files-hosts-long
UNSUPPORTED: resolv/tst-resolv-ai_idn
UNSUPPORTED: resolv/tst-resolv-ai_idn-latin1
UNSUPPORTED: stdlib/tst-secure-getenv
UNSUPPORTED: time/tst-clock_settime
UNSUPPORTED: time/tst-settimeofday

Of these, the ifunc failures are "expected" by you, the 
elf/check-abi-libc diff is trivial (maybe you just didn't rebase as 
frequently):

--- ../sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist 2022-07-23 
14:45:57.490029442 +0800
+++ /home/xenon/src/glibc/build/libc.symlist    2022-07-24 
13:44:10.416642655 +0800
@@ -496 +496 @@ GLIBC_2.36 _mcount F
-GLIBC_2.36 _nl_default_dirname D 0x12
+GLIBC_2.36 _nl_default_dirname D 0x17
@@ -541,0 +542,3 @@ GLIBC_2.36 alphasort64 F
+GLIBC_2.36 arc4random F
+GLIBC_2.36 arc4random_buf F
+GLIBC_2.36 arc4random_uniform F

The others may need some love. Of course they're possibly because of my 
particular environment (Gentoo is a little bit different than "ordinary" 
distros like Debian/Fedora, and I already have to symlink the 
libgcc_s.so and libstdc++.so to pass the nptl tests at all).

Coming to code quality, there are obviously warts present, like the 
lingering uses of the name "x" for $r21 and apparent lack of assembly 
pseudo-insn sugar usages (e.g. no "move a, b" but always "or a, b, 
zero"; the code must be directly descended from an extremely early time 
when the assembler didn't have such support), but at this point these 
cosmetic concerns are better fixed after 2.36 to minimize churn prior to 
release. At a quick glance the ABI is looking good. (There is a certain 
"__x" in bits/setjmp.h meant to refer to r21, but __jmp_buf is not 
public API so I think we're safe here.)



More information about the Libc-alpha mailing list