This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH v4 00/10] RISC-V glibc port for the 32-bit
- From: Zong Li <zongbox at gmail dot com>
- To: joseph at codesourcery dot com, palmer at dabbelt dot com, darius at bluespec dot com, andrew at sifive dot com, dj at redhat dot com, libc-alpha at sourceware dot org
- Cc: zong at andestech dot com, Zong Li <zongbox at gmail dot com>
- Date: Sat, 1 Dec 2018 11:10:43 +0800
- Subject: [PATCH v4 00/10] RISC-V glibc port for the 32-bit
This patchset contains the glibc port for the RISC-V 32-bit. In this version, we
collect the suggestions of previous version, use the same ULPs of hard-float and
soft-float both rv32 and rv64, and fixed failures about math cases as following:
The signal NaN problem is fixed in GCC:
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00356.html
The soft-fp problem had been fixed in Glibc and GCC:
https://sourceware.org/ml/libc-alpha/2018-11/msg00010.html
https://gcc.gnu.org/ml/gcc-patches/2018-11/msg00414.html
The necessary soft-fp functions for rv32 had been added in Glibc:
https://sourceware.org/ml/libc-alpha/2018-11/msg00009.html
We have less than 15 failures cases, these cases had been clarified on RV64 port
when released in glibc 2.27. The all *.out and *.test-result files of test result
as following:
https://github.com/andestech/glibc_test_result/blob/master/rv32_test_result.tar.gz
We ran the glibc test suite on Linux 4.19. Hope we could let the rv32 port enter
the mainline before code frozen and modify the Y2038 issue as soon before the
release date of glibc 2.29.
Very appreciate everyone who has helped review and fix issues.
Change in V4:
- Use same ulp files of hard-float both rv32 and rv64
- Re-generate the ABI list and ulp files
- Add fix-fp-int-convert-overflow.h file
Change in V3:
- Merge rv32/nofpu and rv64/nofpu directories
- Remove ulp files of nofpu of 32-bit
- Re-gen abilist for 2.29
- Change section to 2.29 in NEWS
Change in V2:
- Only include the ieee754/soft-fp path in rv32/nofpu/Implies.
- Add lack of implementation for 128 bit in soft-ft/op-8.h.
- Include the patch which fix the ld flags of tst-execstack-mod.so.
- Add the modification of URL of gcc's tarball.
Zong Li (10):
Documentation for the RISC-V 32-bit port
RISC-V: Support dynamic loader for the 32-bit
RISC-V: Add path of library directories for the 32-bit
RISC-V: The ABI implementation for the 32-bit
RISC-V: Hard float support for the 32 bit
RISC-V: Regenerate ULPs of RISC-V
RISC-V: Add ABI lists
RISC-V: Build Infastructure for the 32-bit
RISC-V: Fix llrint and llround missing exceptions on RV32
Add RISC-V 32-bit target to build-many-glibcs.py
ChangeLog | 47 +
NEWS | 6 +
README | 1 +
scripts/build-many-glibcs.py | 15 +
sysdeps/riscv/bits/wordsize.h | 4 +-
sysdeps/riscv/nofpu/libm-test-ulps | 24 +-
sysdeps/riscv/nptl/bits/pthreadtypes-arch.h | 25 +-
sysdeps/riscv/preconfigure | 6 +-
sysdeps/riscv/rv32/Implies-after | 1 +
sysdeps/riscv/rv32/fix-fp-int-convert-overflow.h | 38 +
sysdeps/riscv/rv32/rvd/Implies | 3 +
sysdeps/riscv/rv32/rvd/s_lrint.c | 31 +
sysdeps/riscv/rv32/rvd/s_lround.c | 31 +
sysdeps/riscv/rv32/rvf/Implies | 1 +
sysdeps/riscv/rv32/rvf/s_lrintf.c | 31 +
sysdeps/riscv/rv32/rvf/s_lroundf.c | 31 +
sysdeps/riscv/rv64/rvd/libm-test-ulps | 2206 -------------------
sysdeps/riscv/rv64/rvd/libm-test-ulps-name | 1 -
sysdeps/riscv/rvd/libm-test-ulps | 2224 ++++++++++++++++++++
sysdeps/riscv/rvd/libm-test-ulps-name | 1 +
sysdeps/riscv/sfp-machine.h | 27 +-
sysdeps/riscv/sys/asm.h | 5 +-
sysdeps/unix/sysv/linux/riscv/Makefile | 4 +-
sysdeps/unix/sysv/linux/riscv/configure | 39 +
sysdeps/unix/sysv/linux/riscv/configure.ac | 8 +
sysdeps/unix/sysv/linux/riscv/dl-cache.h | 15 +-
sysdeps/unix/sysv/linux/riscv/ldconfig.h | 2 +-
sysdeps/unix/sysv/linux/riscv/rv32/Implies | 3 +
sysdeps/unix/sysv/linux/riscv/rv32/c++-types.data | 67 +
.../unix/sysv/linux/riscv/rv32/jmp_buf-macros.h | 53 +
sysdeps/unix/sysv/linux/riscv/rv32/ld.abilist | 9 +
.../sysv/linux/riscv/rv32/libBrokenLocale.abilist | 1 +
sysdeps/unix/sysv/linux/riscv/rv32/libanl.abilist | 4 +
sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist | 2100 ++++++++++++++++++
.../unix/sysv/linux/riscv/rv32/libcrypt.abilist | 2 +
sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist | 9 +
sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist | 1021 +++++++++
sysdeps/unix/sysv/linux/riscv/rv32/libnsl.abilist | 120 ++
.../unix/sysv/linux/riscv/rv32/libpthread.abilist | 235 +++
.../unix/sysv/linux/riscv/rv32/libresolv.abilist | 79 +
sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist | 35 +
.../sysv/linux/riscv/rv32/libthread_db.abilist | 40 +
sysdeps/unix/sysv/linux/riscv/rv32/libutil.abilist | 6 +
sysdeps/unix/sysv/linux/riscv/rv32/lockf64.c | 70 +
sysdeps/unix/sysv/linux/riscv/shlib-versions | 10 +-
45 files changed, 6462 insertions(+), 2229 deletions(-)
create mode 100644 sysdeps/riscv/rv32/Implies-after
create mode 100644 sysdeps/riscv/rv32/fix-fp-int-convert-overflow.h
create mode 100644 sysdeps/riscv/rv32/rvd/Implies
create mode 100644 sysdeps/riscv/rv32/rvd/s_lrint.c
create mode 100644 sysdeps/riscv/rv32/rvd/s_lround.c
create mode 100644 sysdeps/riscv/rv32/rvf/Implies
create mode 100644 sysdeps/riscv/rv32/rvf/s_lrintf.c
create mode 100644 sysdeps/riscv/rv32/rvf/s_lroundf.c
delete mode 100644 sysdeps/riscv/rv64/rvd/libm-test-ulps
delete mode 100644 sysdeps/riscv/rv64/rvd/libm-test-ulps-name
create mode 100644 sysdeps/riscv/rvd/libm-test-ulps
create mode 100644 sysdeps/riscv/rvd/libm-test-ulps-name
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/Implies
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/c++-types.data
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/jmp_buf-macros.h
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/ld.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libBrokenLocale.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libanl.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libcrypt.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libdl.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libnsl.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libresolv.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/librt.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libthread_db.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/libutil.abilist
create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/lockf64.c
--
2.7.4