public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 00/18] glibc port for 32-bit RISC-V (RV32)
@ 2020-04-02 16:29 Alistair Francis
  2020-04-02 16:29 ` [PATCH 01/18] RISC-V: Use 64-bit time_t and off_t for RV32 and RV64 Alistair Francis
                   ` (8 more replies)
  0 siblings, 9 replies; 16+ messages in thread
From: Alistair Francis @ 2020-04-02 16:29 UTC (permalink / raw)
  To: libc-alpha; +Cc: alistair23, Alistair Francis

This patch set contains the glibc port for 32-bit RISC-V.

This is based on the original work from Zong Li [1] and has been
updated to use a 64-bit time_t.

This requires a 5.4+ kernel and all of the testing has been done using
the 5.4 stable kernel.

Nothing fails when running ./scripts/build-many-glibcs.py (for all
targets) on my x86-64 machine.

This is the current list of tests that fail when running inside QEMU RV32
system emulation on the 5.4 kernel:

FAIL: elf/tst-ldconfig-ld_so_conf-update
FAIL: io/tst-lockf
FAIL: misc/test-errno-linux
FAIL: nss/tst-nss-files-hosts-long
FAIL: resolv/tst-resolv-res_init-thread
FAIL: stdio-common/bug22
FAIL: stdlib/tst-strfrom
FAIL: stdlib/tst-strfrom-locale
FAIL: sysvipc/test-sysvmsg

---Links---
1: https://sourceware.org/ml/libc-alpha/2018-07/msg00892.html

The latest version of my work can be found here: https://github.com/alistair23/glibc/tree/alistair/rv32.next

This specific version can be found here: https://github.com/alistair23/glibc/tree/alistair/rv32.1

---Changelog---
v1:
 - Update based from feedback on RFCv6
 - Improve test passing
     - There are only 9 tests failing now
 - Rebase on Lukasz's work
 - Send only the RV32 specific patches (other patches are already merged
   or on the list)
RFC v6:
 - Rebase on top of accetpted patches
 - Fix issues so that the tests actually run
RFC v5:
 - Hopefully finally get the correct layout for the *64 syscalls
 - Sort out the Changelog
RFC v4:
 - Continue to fix things that weren't working
 - Update the coding style to match glibc
 - Update the __ASSUME_TIME64_SYSCALLS work to better match Lukasz's
 work
RFC v3:
 - Remove all "Hack" patches
 - Incorporate upstream comments
 - Ensure we don't break RV64
 - Lot's more testing and fixes
RFC v2:
 - Add Lukasz's patches
 - Update the non HACK syscalls after feedback
 - define __ASSUME_TIME64_SYSCALLS and __ASSUME_RLIM64_SYSCALLS
 - Remove lockf64.c
 - Other smaller changes from RFC v1

Alistair Francis (9):
  RISC-V: Use 64-bit time_t and off_t for RV32 and RV64
  RISC-V: Define __NR_* as __NR_*_time64/64 for 32-bit
  RISC-V: Add support for 32-bit vDSO calls
  RISC-V: Add socket-constants.h for RV32
  RISC-V: Add arch-syscall.h for RV32
  RISC-V: nptl: update default pthread-offsets.h
  RISC-V: Add ABI lists
  RISC-V: Add the RV32 libm-test-ulps
  riscv32: Specify the arch_minimum_kernel as 5.4

Zong Li (9):
  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 32-bit
  RISC-V: Hard float support for 32-bit
  RISC-V: Fix llrint and llround missing exceptions on RV32
  RISC-V: Build Infastructure for 32-bit
  RISC-V: Add rv32 path to RTLDLIST in ldd
  Documentation for the RISC-V 32-bit port
  Add RISC-V 32-bit target to build-many-glibcs.py

 NEWS                                          |    6 +
 README                                        |    1 +
 scripts/build-many-glibcs.py                  |   15 +
 sysdeps/riscv/bits/wordsize.h                 |    4 +-
 sysdeps/riscv/nptl/bits/pthreadtypes-arch.h   |   10 +-
 sysdeps/riscv/nptl/bits/struct_rwlock.h       |   27 +-
 sysdeps/riscv/nptl/pthread-offsets.h          |   13 +-
 sysdeps/riscv/preconfigure                    |    6 +-
 sysdeps/riscv/rv32/Implies-after              |    1 +
 .../riscv/rv32/fix-fp-int-convert-overflow.h  |   38 +
 sysdeps/riscv/rv32/rvd/Implies                |    3 +
 sysdeps/riscv/rv32/rvd/libm-test-ulps         | 1397 +++++++++++
 sysdeps/riscv/rv32/rvd/libm-test-ulps-name    |    1 +
 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/sfp-machine.h                   |   27 +-
 sysdeps/riscv/sys/asm.h                       |    5 +-
 sysdeps/unix/sysv/linux/riscv/Makefile        |    4 +-
 .../unix/sysv/linux/riscv/bits/environments.h |   85 +
 .../sysv/linux/riscv/bits/socket-constants.h  |   46 +
 sysdeps/unix/sysv/linux/riscv/bits/time64.h   |   36 +
 sysdeps/unix/sysv/linux/riscv/bits/timesize.h |   22 +
 sysdeps/unix/sysv/linux/riscv/c++-types.data  |   67 +
 sysdeps/unix/sysv/linux/riscv/configure       |   43 +
 sysdeps/unix/sysv/linux/riscv/configure.ac    |   12 +
 sysdeps/unix/sysv/linux/riscv/dl-cache.h      |   17 +-
 .../unix/sysv/linux/riscv/jmp_buf-macros.h    |   53 +
 sysdeps/unix/sysv/linux/riscv/kernel_stat.h   |   23 +
 sysdeps/unix/sysv/linux/riscv/ld.abilist      |    5 +
 sysdeps/unix/sysv/linux/riscv/ldconfig.h      |    2 +-
 sysdeps/unix/sysv/linux/riscv/ldd-rewrite.sed |    2 +-
 .../sysv/linux/riscv/libBrokenLocale.abilist  |    1 +
 sysdeps/unix/sysv/linux/riscv/libanl.abilist  |    4 +
 sysdeps/unix/sysv/linux/riscv/libc.abilist    | 2095 +++++++++++++++++
 .../unix/sysv/linux/riscv/libcrypt.abilist    |    2 +
 sysdeps/unix/sysv/linux/riscv/libdl.abilist   |    9 +
 sysdeps/unix/sysv/linux/riscv/libm.abilist    |  940 ++++++++
 .../unix/sysv/linux/riscv/libpthread.abilist  |  217 ++
 .../unix/sysv/linux/riscv/libresolv.abilist   |   79 +
 sysdeps/unix/sysv/linux/riscv/librt.abilist   |   35 +
 .../sysv/linux/riscv/libthread_db.abilist     |   40 +
 sysdeps/unix/sysv/linux/riscv/libutil.abilist |    6 +
 sysdeps/unix/sysv/linux/riscv/rv32/Implies    |    3 +
 .../unix/sysv/linux/riscv/rv32/arch-syscall.h |  283 +++
 sysdeps/unix/sysv/linux/riscv/shlib-versions  |   10 +-
 sysdeps/unix/sysv/linux/riscv/sysdep.h        |   80 +-
 49 files changed, 5875 insertions(+), 25 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/libm-test-ulps
 create mode 100644 sysdeps/riscv/rv32/rvd/libm-test-ulps-name
 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
 create mode 100644 sysdeps/unix/sysv/linux/riscv/bits/environments.h
 create mode 100644 sysdeps/unix/sysv/linux/riscv/bits/socket-constants.h
 create mode 100644 sysdeps/unix/sysv/linux/riscv/bits/time64.h
 create mode 100644 sysdeps/unix/sysv/linux/riscv/bits/timesize.h
 create mode 100644 sysdeps/unix/sysv/linux/riscv/c++-types.data
 create mode 100644 sysdeps/unix/sysv/linux/riscv/jmp_buf-macros.h
 create mode 100644 sysdeps/unix/sysv/linux/riscv/kernel_stat.h
 create mode 100644 sysdeps/unix/sysv/linux/riscv/ld.abilist
 create mode 100644 sysdeps/unix/sysv/linux/riscv/libBrokenLocale.abilist
 create mode 100644 sysdeps/unix/sysv/linux/riscv/libanl.abilist
 create mode 100644 sysdeps/unix/sysv/linux/riscv/libc.abilist
 create mode 100644 sysdeps/unix/sysv/linux/riscv/libcrypt.abilist
 create mode 100644 sysdeps/unix/sysv/linux/riscv/libdl.abilist
 create mode 100644 sysdeps/unix/sysv/linux/riscv/libm.abilist
 create mode 100644 sysdeps/unix/sysv/linux/riscv/libpthread.abilist
 create mode 100644 sysdeps/unix/sysv/linux/riscv/libresolv.abilist
 create mode 100644 sysdeps/unix/sysv/linux/riscv/librt.abilist
 create mode 100644 sysdeps/unix/sysv/linux/riscv/libthread_db.abilist
 create mode 100644 sysdeps/unix/sysv/linux/riscv/libutil.abilist
 create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/Implies
 create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h

-- 
2.26.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 01/18] RISC-V: Use 64-bit time_t and off_t for RV32 and RV64
  2020-04-02 16:29 [PATCH 00/18] glibc port for 32-bit RISC-V (RV32) Alistair Francis
@ 2020-04-02 16:29 ` Alistair Francis
  2020-04-02 16:29 ` [PATCH 02/18] RISC-V: Define __NR_* as __NR_*_time64/64 for 32-bit Alistair Francis
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Alistair Francis @ 2020-04-02 16:29 UTC (permalink / raw)
  To: libc-alpha; +Cc: alistair23, Alistair Francis

Using the original glibc headers under bits/ let's make small
modifications to use 64-bit time_t and off_t for both RV32 and RV64.

For the typesizes.h, here are justifications for the changes from the
generic version (based on Arnd's very helpful feedback):
-  All the !__USE_FILE_OFFSET64  types (__off_t, __ino_t, __rlim_t, ...) are
  changed to match the 64-bit replacements.

- __time_t is defined to 64 bit, but no __time64_t is added. This makes sense
  as we don't have the time64 support for other 32-bit architectures yet, and
  it will be easy to change when that happens.

- __suseconds_t is 64-bit. This matches what we use the kernel ABI for the
  few drivers that are relying on 'struct timeval' input arguments in
  ioctl, as well as the adjtimex system call. It means that timeval has to
  be defined without the   padding, unlike timespec, which needs padding.
---
 .../unix/sysv/linux/riscv/bits/environments.h | 85 +++++++++++++++++++
 sysdeps/unix/sysv/linux/riscv/bits/time64.h   | 36 ++++++++
 sysdeps/unix/sysv/linux/riscv/bits/timesize.h | 22 +++++
 sysdeps/unix/sysv/linux/riscv/kernel_stat.h   | 23 +++++
 4 files changed, 166 insertions(+)
 create mode 100644 sysdeps/unix/sysv/linux/riscv/bits/environments.h
 create mode 100644 sysdeps/unix/sysv/linux/riscv/bits/time64.h
 create mode 100644 sysdeps/unix/sysv/linux/riscv/bits/timesize.h
 create mode 100644 sysdeps/unix/sysv/linux/riscv/kernel_stat.h

diff --git a/sysdeps/unix/sysv/linux/riscv/bits/environments.h b/sysdeps/unix/sysv/linux/riscv/bits/environments.h
new file mode 100644
index 0000000000..c1768af17b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/riscv/bits/environments.h
@@ -0,0 +1,85 @@
+/* Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _UNISTD_H
+# error "Never include this file directly.  Use <unistd.h> instead"
+#endif
+
+#include <bits/wordsize.h>
+
+/* This header should define the following symbols under the described
+   situations.  A value `1' means that the model is always supported,
+   `-1' means it is never supported.  Undefined means it cannot be
+   statically decided.
+
+   _POSIX_V7_ILP32_OFF32   32bit int, long, pointers, and off_t type
+   _POSIX_V7_ILP32_OFFBIG  32bit int, long, and pointers and larger off_t type
+
+   _POSIX_V7_LP64_OFF32	   64bit long and pointers and 32bit off_t type
+   _POSIX_V7_LPBIG_OFFBIG  64bit long and pointers and large off_t type
+
+   The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
+   _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
+   _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
+   used in previous versions of the Unix standard and are available
+   only for compatibility.
+*/
+
+#if __WORDSIZE == 64
+
+/* We can never provide environments with 32-bit wide pointers.  */
+# define _POSIX_V7_ILP32_OFF32	-1
+# define _POSIX_V7_ILP32_OFFBIG	-1
+# define _POSIX_V6_ILP32_OFF32	-1
+# define _POSIX_V6_ILP32_OFFBIG	-1
+# define _XBS5_ILP32_OFF32	-1
+# define _XBS5_ILP32_OFFBIG	-1
+/* We also have no use (for now) for an environment with bigger pointers
+   and offsets.  */
+# define _POSIX_V7_LPBIG_OFFBIG	-1
+# define _POSIX_V6_LPBIG_OFFBIG	-1
+# define _XBS5_LPBIG_OFFBIG	-1
+
+/* By default we have 64-bit wide `long int', pointers and `off_t'.  */
+# define _POSIX_V7_LP64_OFF64	1
+# define _POSIX_V6_LP64_OFF64	1
+# define _XBS5_LP64_OFF64	1
+
+#else /* __WORDSIZE == 32 */
+
+/* RISC-V requires 64-bit off_t
+  # undef _POSIX_V7_ILP32_OFF32
+  # undef _POSIX_V6_ILP32_OFF32
+  # undef _XBS5_ILP32_OFF32
+ */
+
+# define _POSIX_V7_ILP32_OFFBIG  1
+# define _POSIX_V6_ILP32_OFFBIG  1
+# define _XBS5_ILP32_OFFBIG   1
+
+/* We can never provide environments with 64-bit wide pointers.  */
+# define _POSIX_V7_LP64_OFF64	-1
+# define _POSIX_V7_LPBIG_OFFBIG	-1
+# define _POSIX_V6_LP64_OFF64	-1
+# define _POSIX_V6_LPBIG_OFFBIG	-1
+# define _XBS5_LP64_OFF64	-1
+# define _XBS5_LPBIG_OFFBIG	-1
+
+/* CFLAGS.  */
+#define __ILP32_OFFBIG_CFLAGS   "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+
+#endif /* __WORDSIZE == 32 */
diff --git a/sysdeps/unix/sysv/linux/riscv/bits/time64.h b/sysdeps/unix/sysv/linux/riscv/bits/time64.h
new file mode 100644
index 0000000000..7ba0dd1cfd
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/riscv/bits/time64.h
@@ -0,0 +1,36 @@
+/* bits/time64.h -- underlying types for __time64_t.  Generic version.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_TYPES_H
+# error "Never include <bits/time64.h> directly; use <sys/types.h> instead."
+#endif
+
+#ifndef	_BITS_TIME64_H
+#define	_BITS_TIME64_H	1
+
+/* Define __TIME64_T_TYPE so that it is always a 64-bit type.  */
+
+#if __WORDSIZE == 64
+/* If we already have 64-bit time type then use it.  */
+# define __TIME64_T_TYPE		__TIME_T_TYPE
+#else
+/* Define a 64-bit time type alongsize the 32-bit one.  */
+# define __TIME64_T_TYPE		__SQUAD_TYPE
+#endif
+
+#endif /* bits/time64.h */
diff --git a/sysdeps/unix/sysv/linux/riscv/bits/timesize.h b/sysdeps/unix/sysv/linux/riscv/bits/timesize.h
new file mode 100644
index 0000000000..78394b7489
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/riscv/bits/timesize.h
@@ -0,0 +1,22 @@
+/* Bit size of the time_t type at glibc build time, general case.
+   Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <bits/wordsize.h>
+
+/* RV32 and RV64 both use 64-bit time_t */
+#define __TIMESIZE	64
diff --git a/sysdeps/unix/sysv/linux/riscv/kernel_stat.h b/sysdeps/unix/sysv/linux/riscv/kernel_stat.h
new file mode 100644
index 0000000000..25e698b9bf
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/riscv/kernel_stat.h
@@ -0,0 +1,23 @@
+/* Copyright (C) 2019-2020 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <bits/wordsize.h>
+
+#define STAT_IS_KERNEL_STAT 1
+
+#define XSTAT_IS_XSTAT64 1
+#define STATFS_IS_STATFS64 0
-- 
2.26.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 02/18] RISC-V: Define __NR_* as __NR_*_time64/64 for 32-bit
  2020-04-02 16:29 [PATCH 00/18] glibc port for 32-bit RISC-V (RV32) Alistair Francis
  2020-04-02 16:29 ` [PATCH 01/18] RISC-V: Use 64-bit time_t and off_t for RV32 and RV64 Alistair Francis
@ 2020-04-02 16:29 ` Alistair Francis
  2020-04-02 16:29 ` [PATCH 03/18] RISC-V: Add support for 32-bit vDSO calls Alistair Francis
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Alistair Francis @ 2020-04-02 16:29 UTC (permalink / raw)
  To: libc-alpha; +Cc: alistair23, Alistair Francis

---
 sysdeps/unix/sysv/linux/riscv/sysdep.h | 61 ++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/sysdeps/unix/sysv/linux/riscv/sysdep.h b/sysdeps/unix/sysv/linux/riscv/sysdep.h
index 83e4adf6a2..aa61e8b04d 100644
--- a/sysdeps/unix/sysv/linux/riscv/sysdep.h
+++ b/sysdeps/unix/sysv/linux/riscv/sysdep.h
@@ -116,6 +116,67 @@
 
 #include <sysdeps/unix/sysdep.h>
 
+#if __riscv_xlen == 32
+/* Define the __NR_futex as __NR_futex64 as RV32 doesn't have a
+ * __NR_futex syscall.
+ */
+# ifndef __NR_futex
+#  define __NR_futex __NR_futex_time64
+# endif
+
+# ifndef __NR_rt_sigtimedwait
+#  define __NR_rt_sigtimedwait __NR_rt_sigtimedwait_time64
+# endif
+
+# ifndef __NR_ppoll
+#  define __NR_ppoll __NR_ppoll_time64
+# endif
+
+# ifndef __NR_utimensat
+#  define __NR_utimensat __NR_utimensat_time64
+# endif
+
+# ifndef __NR_pselect6
+#  define __NR_pselect6 __NR_pselect6_time64
+# endif
+
+# ifndef __NR_recvmmsg
+#  define __NR_recvmmsg __NR_recvmmsg_time64
+# endif
+
+# ifndef __NR_semtimedop
+#  define __NR_semtimedop __NR_semtimedop_time64
+# endif
+
+# ifndef __NR_mq_timedreceive
+#  define __NR_mq_timedreceive __NR_mq_timedreceive_time64
+# endif
+
+# ifndef __NR_mq_timedsend
+#  define __NR_mq_timedsend __NR_mq_timedsend_time64
+# endif
+
+# ifndef __NR_clock_getres
+#  define __NR_clock_getres __NR_clock_getres_time64
+# endif
+
+# ifndef __NR_timerfd_settime
+#  define __NR_timerfd_settime __NR_timerfd_settime64
+# endif
+
+# ifndef __NR_timerfd_gettime
+#  define __NR_timerfd_gettime __NR_timerfd_gettime64
+# endif
+
+# ifndef __NR_sched_rr_get_interval
+#  define __NR_sched_rr_get_interval __NR_sched_rr_get_interval_time64
+# endif
+
+# ifndef __NR_clock_adjtime
+#  define __NR_clock_adjtime __NR_clock_adjtime64
+# endif
+#endif /* __riscv_xlen == 32 */
+
 #undef SYS_ify
 #define SYS_ify(syscall_name)	__NR_##syscall_name
 
-- 
2.26.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 03/18] RISC-V: Add support for 32-bit vDSO calls
  2020-04-02 16:29 [PATCH 00/18] glibc port for 32-bit RISC-V (RV32) Alistair Francis
  2020-04-02 16:29 ` [PATCH 01/18] RISC-V: Use 64-bit time_t and off_t for RV32 and RV64 Alistair Francis
  2020-04-02 16:29 ` [PATCH 02/18] RISC-V: Define __NR_* as __NR_*_time64/64 for 32-bit Alistair Francis
@ 2020-04-02 16:29 ` Alistair Francis
  2020-04-02 16:29 ` [PATCH 04/18] RISC-V: Add socket-constants.h for RV32 Alistair Francis
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Alistair Francis @ 2020-04-02 16:29 UTC (permalink / raw)
  To: libc-alpha; +Cc: alistair23, Alistair Francis

---
 sysdeps/unix/sysv/linux/riscv/sysdep.h | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/sysdeps/unix/sysv/linux/riscv/sysdep.h b/sysdeps/unix/sysv/linux/riscv/sysdep.h
index aa61e8b04d..9f6ed2001b 100644
--- a/sysdeps/unix/sysv/linux/riscv/sysdep.h
+++ b/sysdeps/unix/sysv/linux/riscv/sysdep.h
@@ -182,14 +182,21 @@
 
 #ifndef __ASSEMBLER__
 
-# define VDSO_NAME  "LINUX_4.15"
-# define VDSO_HASH  182943605
+# if __riscv_xlen == 32
+#  define VDSO_NAME  "LINUX_5.4"
+#  define VDSO_HASH  61765876
 
 /* List of system calls which are supported as vsyscalls.  */
-# define HAVE_CLOCK_GETRES64_VSYSCALL	"__vdso_clock_getres"
-# define HAVE_CLOCK_GETTIME64_VSYSCALL	"__vdso_clock_gettime"
-# define HAVE_GETTIMEOFDAY_VSYSCALL	"__vdso_gettimeofday"
-# define HAVE_GETCPU_VSYSCALL		"__vdso_getcpu"
+# else
+#  define VDSO_NAME  "LINUX_4.15"
+#  define VDSO_HASH  182943605
+
+/* List of system calls which are supported as vsyscalls.  */
+#  define HAVE_CLOCK_GETRES64_VSYSCALL   "__vdso_clock_getres"
+#  define HAVE_CLOCK_GETTIME64_VSYSCALL  "__vdso_clock_gettime"
+#  define HAVE_GETTIMEOFDAY_VSYSCALL     "__vdso_gettimeofday"
+#  define HAVE_GETCPU_VSYSCALL           "__vdso_getcpu"
+# endif
 
 # define INTERNAL_SYSCALL(name, nr, args...) \
 	internal_syscall##nr (SYS_ify (name), args)
-- 
2.26.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 04/18] RISC-V: Add socket-constants.h for RV32
  2020-04-02 16:29 [PATCH 00/18] glibc port for 32-bit RISC-V (RV32) Alistair Francis
                   ` (2 preceding siblings ...)
  2020-04-02 16:29 ` [PATCH 03/18] RISC-V: Add support for 32-bit vDSO calls Alistair Francis
@ 2020-04-02 16:29 ` Alistair Francis
  2020-04-02 16:29 ` [PATCH 05/18] RISC-V: Support dynamic loader for the 32-bit Alistair Francis
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Alistair Francis @ 2020-04-02 16:29 UTC (permalink / raw)
  To: libc-alpha; +Cc: alistair23, Alistair Francis

Add the latest versionf of the socket-constants.h based on new Linux
---
 .../sysv/linux/riscv/bits/socket-constants.h  | 46 +++++++++++++++++++
 1 file changed, 46 insertions(+)
 create mode 100644 sysdeps/unix/sysv/linux/riscv/bits/socket-constants.h

diff --git a/sysdeps/unix/sysv/linux/riscv/bits/socket-constants.h b/sysdeps/unix/sysv/linux/riscv/bits/socket-constants.h
new file mode 100644
index 0000000000..7ecdfcbb61
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/riscv/bits/socket-constants.h
@@ -0,0 +1,46 @@
+/* Socket constants which vary among Linux architectures.  Version for RV32.
+   Copyright (C) 2020 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_SOCKET_H
+# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define SOL_SOCKET 1
+#define SO_ACCEPTCONN 30
+#define SO_BROADCAST 6
+#define SO_DONTROUTE 5
+#define SO_ERROR 4
+#define SO_KEEPALIVE 9
+#define SO_LINGER 13
+#define SO_OOBINLINE 10
+#define SO_RCVBUF 8
+#define SO_RCVLOWAT 18
+#if __riscv_xlen == 32
+# define SO_RCVTIMEO 66
+#else
+# define SO_RCVTIMEO 20
+#endif
+#define SO_REUSEADDR 2
+#define SO_SNDBUF 7
+#define SO_SNDLOWAT 19
+#if __riscv_xlen == 32
+# define SO_SNDTIMEO 67
+#else
+# define SO_SNDTIMEO 21
+#endif
+#define SO_TYPE 3
-- 
2.26.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 05/18] RISC-V: Support dynamic loader for the 32-bit
  2020-04-02 16:29 [PATCH 00/18] glibc port for 32-bit RISC-V (RV32) Alistair Francis
                   ` (3 preceding siblings ...)
  2020-04-02 16:29 ` [PATCH 04/18] RISC-V: Add socket-constants.h for RV32 Alistair Francis
@ 2020-04-02 16:29 ` Alistair Francis
  2020-04-02 16:29 ` [PATCH 06/18] RISC-V: Add path of library directories " Alistair Francis
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Alistair Francis @ 2020-04-02 16:29 UTC (permalink / raw)
  To: libc-alpha; +Cc: alistair23, Zong Li

From: Zong Li <zongbox@gmail.com>

Add the LD_SO_ABI definition for RISC-V 32-bit.
---
 sysdeps/unix/sysv/linux/riscv/ldconfig.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sysdeps/unix/sysv/linux/riscv/ldconfig.h b/sysdeps/unix/sysv/linux/riscv/ldconfig.h
index 3d7065b293..35badb7cf0 100644
--- a/sysdeps/unix/sysv/linux/riscv/ldconfig.h
+++ b/sysdeps/unix/sysv/linux/riscv/ldconfig.h
@@ -24,7 +24,7 @@
 #if __riscv_xlen == 64
 # define LD_SO_ABI "riscv64-lp64"
 #else
-# error "rv32i-based targets are not supported"
+# define LD_SO_ABI "riscv32-ilp32"
 #endif
 
 #define SYSDEP_KNOWN_INTERPRETER_NAMES				\
-- 
2.26.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 06/18] RISC-V: Add path of library directories for the 32-bit
  2020-04-02 16:29 [PATCH 00/18] glibc port for 32-bit RISC-V (RV32) Alistair Francis
                   ` (4 preceding siblings ...)
  2020-04-02 16:29 ` [PATCH 05/18] RISC-V: Support dynamic loader for the 32-bit Alistair Francis
@ 2020-04-02 16:29 ` Alistair Francis
  2020-04-02 21:48   ` Jim Wilson
  2020-04-02 16:29 ` [PATCH 07/18] RISC-V: Add arch-syscall.h for RV32 Alistair Francis
                   ` (2 subsequent siblings)
  8 siblings, 1 reply; 16+ messages in thread
From: Alistair Francis @ 2020-04-02 16:29 UTC (permalink / raw)
  To: libc-alpha; +Cc: alistair23, Zong Li

From: Zong Li <zongbox@gmail.com>

For the recommand of 64 bit version, we add the libraries path of 32 bit
in this patch.

The status of RV32 binaries under RV64 kernels is that the ISA
optionally supports having different XLEN for user and supervisor modes,
but AFAIK there's no silicon that implements this feature, and the Linux
kernel doesn't support it yet.

For the recommand of 64 bit version, we add the libraries path of 32 bit
in this patch. This includes a fix to avoid an out of bound array check
when building with GCC 8.2.
---
 sysdeps/unix/sysv/linux/riscv/dl-cache.h | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/sysdeps/unix/sysv/linux/riscv/dl-cache.h b/sysdeps/unix/sysv/linux/riscv/dl-cache.h
index c297dfe84f..60fc172edb 100644
--- a/sysdeps/unix/sysv/linux/riscv/dl-cache.h
+++ b/sysdeps/unix/sysv/linux/riscv/dl-cache.h
@@ -34,6 +34,8 @@
    RISC-V, libraries can be found in paths ending in:
      - /lib64/lp64d
      - /lib64/lp64
+     - /lib32/ilp32d
+     - /lib32/ilp32
      - /lib (only ld.so)
    so this will add all of those paths.
 
@@ -49,9 +51,16 @@
   do							    		\
     {									\
       size_t len = strlen (dir);					\
-      char path[len + 9];						\
+      char path[len + 10];						\
       memcpy (path, dir, len + 1);					\
-      if (len >= 12 && ! memcmp(path + len - 12, "/lib64/lp64d", 12))	\
+      if (len >= 13 && ! memcmp(path + len - 13, "/lib32/ilp32d", 13))	\
+        {								\
+          len -= 9;							\
+	  path[len] = '\0';						\
+        }								\
+      if (len >= 12							\
+          && (! memcmp(path + len - 12, "/lib32/ilp32", 12)		\
+              || ! memcmp(path + len - 12, "/lib64/lp64d", 12)))	\
 	{								\
 	  len -= 8;							\
 	  path[len] = '\0';						\
@@ -64,6 +73,10 @@
       add_dir (path);							\
       if (len >= 4 && ! memcmp(path + len - 4, "/lib", 4))		\
 	{								\
+	  memcpy (path + len, "32/ilp32d", 10);				\
+	  add_dir (path);						\
+	  memcpy (path + len, "32/ilp32", 9);				\
+	  add_dir (path);						\
 	  memcpy (path + len, "64/lp64d", 9);				\
 	  add_dir (path);						\
 	  memcpy (path + len, "64/lp64", 8);				\
-- 
2.26.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 07/18] RISC-V: Add arch-syscall.h for RV32
  2020-04-02 16:29 [PATCH 00/18] glibc port for 32-bit RISC-V (RV32) Alistair Francis
                   ` (5 preceding siblings ...)
  2020-04-02 16:29 ` [PATCH 06/18] RISC-V: Add path of library directories " Alistair Francis
@ 2020-04-02 16:29 ` Alistair Francis
  2020-04-02 16:29 ` [PATCH 08/18] RISC-V: nptl: update default pthread-offsets.h Alistair Francis
  2020-04-02 16:29 ` [PATCH 09/18] RISC-V: The ABI implementation for 32-bit Alistair Francis
  8 siblings, 0 replies; 16+ messages in thread
From: Alistair Francis @ 2020-04-02 16:29 UTC (permalink / raw)
  To: libc-alpha; +Cc: alistair23, Alistair Francis

---
 .../unix/sysv/linux/riscv/rv32/arch-syscall.h | 283 ++++++++++++++++++
 1 file changed, 283 insertions(+)
 create mode 100644 sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h

diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h b/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h
new file mode 100644
index 0000000000..9f9a2d5912
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h
@@ -0,0 +1,283 @@
+/* AUTOGENERATED by update-syscall-lists.py.  */
+#define __NR_accept 202
+#define __NR_accept4 242
+#define __NR_acct 89
+#define __NR_add_key 217
+#define __NR_bind 200
+#define __NR_bpf 280
+#define __NR_brk 214
+#define __NR_capget 90
+#define __NR_capset 91
+#define __NR_chdir 49
+#define __NR_chroot 51
+#define __NR_clock_adjtime64 405
+#define __NR_clock_getres_time64 406
+#define __NR_clock_gettime64 403
+#define __NR_clock_nanosleep_time64 407
+#define __NR_clock_settime64 404
+#define __NR_clone 220
+#define __NR_close 57
+#define __NR_connect 203
+#define __NR_copy_file_range 285
+#define __NR_delete_module 106
+#define __NR_dup 23
+#define __NR_dup3 24
+#define __NR_epoll_create1 20
+#define __NR_epoll_ctl 21
+#define __NR_epoll_pwait 22
+#define __NR_eventfd2 19
+#define __NR_execve 221
+#define __NR_execveat 281
+#define __NR_exit 93
+#define __NR_exit_group 94
+#define __NR_faccessat 48
+#define __NR_fadvise64_64 223
+#define __NR_fallocate 47
+#define __NR_fanotify_init 262
+#define __NR_fanotify_mark 263
+#define __NR_fchdir 50
+#define __NR_fchmod 52
+#define __NR_fchmodat 53
+#define __NR_fchown 55
+#define __NR_fchownat 54
+#define __NR_fcntl64 25
+#define __NR_fdatasync 83
+#define __NR_fgetxattr 10
+#define __NR_finit_module 273
+#define __NR_flistxattr 13
+#define __NR_flock 32
+#define __NR_fremovexattr 16
+#define __NR_fsconfig 431
+#define __NR_fsetxattr 7
+#define __NR_fsmount 432
+#define __NR_fsopen 430
+#define __NR_fspick 433
+#define __NR_fstatfs64 44
+#define __NR_fsync 82
+#define __NR_ftruncate64 46
+#define __NR_futex_time64 422
+#define __NR_get_mempolicy 236
+#define __NR_get_robust_list 100
+#define __NR_getcpu 168
+#define __NR_getcwd 17
+#define __NR_getdents64 61
+#define __NR_getegid 177
+#define __NR_geteuid 175
+#define __NR_getgid 176
+#define __NR_getgroups 158
+#define __NR_getitimer 102
+#define __NR_getpeername 205
+#define __NR_getpgid 155
+#define __NR_getpid 172
+#define __NR_getppid 173
+#define __NR_getpriority 141
+#define __NR_getrandom 278
+#define __NR_getresgid 150
+#define __NR_getresuid 148
+#define __NR_getrusage 165
+#define __NR_getsid 156
+#define __NR_getsockname 204
+#define __NR_getsockopt 209
+#define __NR_gettid 178
+#define __NR_getuid 174
+#define __NR_getxattr 8
+#define __NR_init_module 105
+#define __NR_inotify_add_watch 27
+#define __NR_inotify_init1 26
+#define __NR_inotify_rm_watch 28
+#define __NR_io_cancel 3
+#define __NR_io_destroy 1
+#define __NR_io_pgetevents_time64 416
+#define __NR_io_setup 0
+#define __NR_io_submit 2
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
+#define __NR_io_uring_setup 425
+#define __NR_ioctl 29
+#define __NR_ioprio_get 31
+#define __NR_ioprio_set 30
+#define __NR_kcmp 272
+#define __NR_kexec_file_load 294
+#define __NR_kexec_load 104
+#define __NR_keyctl 219
+#define __NR_kill 129
+#define __NR_lgetxattr 9
+#define __NR_linkat 37
+#define __NR_listen 201
+#define __NR_listxattr 11
+#define __NR_llistxattr 12
+#define __NR_llseek 62
+#define __NR_lookup_dcookie 18
+#define __NR_lremovexattr 15
+#define __NR_lsetxattr 6
+#define __NR_madvise 233
+#define __NR_mbind 235
+#define __NR_membarrier 283
+#define __NR_memfd_create 279
+#define __NR_migrate_pages 238
+#define __NR_mincore 232
+#define __NR_mkdirat 34
+#define __NR_mknodat 33
+#define __NR_mlock 228
+#define __NR_mlock2 284
+#define __NR_mlockall 230
+#define __NR_mmap2 222
+#define __NR_mount 40
+#define __NR_move_mount 429
+#define __NR_move_pages 239
+#define __NR_mprotect 226
+#define __NR_mq_getsetattr 185
+#define __NR_mq_notify 184
+#define __NR_mq_open 180
+#define __NR_mq_timedreceive_time64 419
+#define __NR_mq_timedsend_time64 418
+#define __NR_mq_unlink 181
+#define __NR_mremap 216
+#define __NR_msgctl 187
+#define __NR_msgget 186
+#define __NR_msgrcv 188
+#define __NR_msgsnd 189
+#define __NR_msync 227
+#define __NR_munlock 229
+#define __NR_munlockall 231
+#define __NR_munmap 215
+#define __NR_name_to_handle_at 264
+#define __NR_nfsservctl 42
+#define __NR_open_by_handle_at 265
+#define __NR_open_tree 428
+#define __NR_openat 56
+#define __NR_openat2 437
+#define __NR_perf_event_open 241
+#define __NR_personality 92
+#define __NR_pidfd_getfd 438
+#define __NR_pidfd_open 434
+#define __NR_pidfd_send_signal 424
+#define __NR_pipe2 59
+#define __NR_pivot_root 41
+#define __NR_pkey_alloc 289
+#define __NR_pkey_free 290
+#define __NR_pkey_mprotect 288
+#define __NR_ppoll_time64 414
+#define __NR_prctl 167
+#define __NR_pread64 67
+#define __NR_preadv 69
+#define __NR_preadv2 286
+#define __NR_prlimit64 261
+#define __NR_process_vm_readv 270
+#define __NR_process_vm_writev 271
+#define __NR_pselect6_time64 413
+#define __NR_ptrace 117
+#define __NR_pwrite64 68
+#define __NR_pwritev 70
+#define __NR_pwritev2 287
+#define __NR_quotactl 60
+#define __NR_read 63
+#define __NR_readahead 213
+#define __NR_readlinkat 78
+#define __NR_readv 65
+#define __NR_reboot 142
+#define __NR_recvfrom 207
+#define __NR_recvmmsg_time64 417
+#define __NR_recvmsg 212
+#define __NR_remap_file_pages 234
+#define __NR_removexattr 14
+#define __NR_renameat2 276
+#define __NR_request_key 218
+#define __NR_restart_syscall 128
+#define __NR_riscv_flush_icache 259
+#define __NR_rseq 293
+#define __NR_rt_sigaction 134
+#define __NR_rt_sigpending 136
+#define __NR_rt_sigprocmask 135
+#define __NR_rt_sigqueueinfo 138
+#define __NR_rt_sigreturn 139
+#define __NR_rt_sigsuspend 133
+#define __NR_rt_sigtimedwait_time64 421
+#define __NR_rt_tgsigqueueinfo 240
+#define __NR_sched_get_priority_max 125
+#define __NR_sched_get_priority_min 126
+#define __NR_sched_getaffinity 123
+#define __NR_sched_getattr 275
+#define __NR_sched_getparam 121
+#define __NR_sched_getscheduler 120
+#define __NR_sched_rr_get_interval_time64 423
+#define __NR_sched_setaffinity 122
+#define __NR_sched_setattr 274
+#define __NR_sched_setparam 118
+#define __NR_sched_setscheduler 119
+#define __NR_sched_yield 124
+#define __NR_seccomp 277
+#define __NR_semctl 191
+#define __NR_semget 190
+#define __NR_semop 193
+#define __NR_semtimedop_time64 420
+#define __NR_sendfile64 71
+#define __NR_sendmmsg 269
+#define __NR_sendmsg 211
+#define __NR_sendto 206
+#define __NR_set_mempolicy 237
+#define __NR_set_robust_list 99
+#define __NR_set_tid_address 96
+#define __NR_setdomainname 162
+#define __NR_setfsgid 152
+#define __NR_setfsuid 151
+#define __NR_setgid 144
+#define __NR_setgroups 159
+#define __NR_sethostname 161
+#define __NR_setitimer 103
+#define __NR_setns 268
+#define __NR_setpgid 154
+#define __NR_setpriority 140
+#define __NR_setregid 143
+#define __NR_setresgid 149
+#define __NR_setresuid 147
+#define __NR_setreuid 145
+#define __NR_setsid 157
+#define __NR_setsockopt 208
+#define __NR_setuid 146
+#define __NR_setxattr 5
+#define __NR_shmat 196
+#define __NR_shmctl 195
+#define __NR_shmdt 197
+#define __NR_shmget 194
+#define __NR_shutdown 210
+#define __NR_sigaltstack 132
+#define __NR_signalfd4 74
+#define __NR_socket 198
+#define __NR_socketpair 199
+#define __NR_splice 76
+#define __NR_statfs64 43
+#define __NR_statx 291
+#define __NR_swapoff 225
+#define __NR_swapon 224
+#define __NR_symlinkat 36
+#define __NR_sync 81
+#define __NR_sync_file_range 84
+#define __NR_syncfs 267
+#define __NR_sysinfo 179
+#define __NR_syslog 116
+#define __NR_tee 77
+#define __NR_tgkill 131
+#define __NR_timer_create 107
+#define __NR_timer_delete 111
+#define __NR_timer_getoverrun 109
+#define __NR_timer_gettime64 408
+#define __NR_timer_settime64 409
+#define __NR_timerfd_create 85
+#define __NR_timerfd_gettime64 410
+#define __NR_timerfd_settime64 411
+#define __NR_times 153
+#define __NR_tkill 130
+#define __NR_truncate64 45
+#define __NR_umask 166
+#define __NR_umount2 39
+#define __NR_uname 160
+#define __NR_unlinkat 35
+#define __NR_unshare 97
+#define __NR_userfaultfd 282
+#define __NR_utimensat_time64 412
+#define __NR_vhangup 58
+#define __NR_vmsplice 75
+#define __NR_waitid 95
+#define __NR_write 64
+#define __NR_writev 66
-- 
2.26.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 08/18] RISC-V: nptl: update default pthread-offsets.h
  2020-04-02 16:29 [PATCH 00/18] glibc port for 32-bit RISC-V (RV32) Alistair Francis
                   ` (6 preceding siblings ...)
  2020-04-02 16:29 ` [PATCH 07/18] RISC-V: Add arch-syscall.h for RV32 Alistair Francis
@ 2020-04-02 16:29 ` Alistair Francis
  2020-04-02 16:29 ` [PATCH 09/18] RISC-V: The ABI implementation for 32-bit Alistair Francis
  8 siblings, 0 replies; 16+ messages in thread
From: Alistair Francis @ 2020-04-02 16:29 UTC (permalink / raw)
  To: libc-alpha; +Cc: alistair23, Alistair Francis

Update the RISC-V pthread-offsets.h values to support RV32.
---
 sysdeps/riscv/nptl/pthread-offsets.h | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/sysdeps/riscv/nptl/pthread-offsets.h b/sysdeps/riscv/nptl/pthread-offsets.h
index 31f0587bec..a85c752a1f 100644
--- a/sysdeps/riscv/nptl/pthread-offsets.h
+++ b/sysdeps/riscv/nptl/pthread-offsets.h
@@ -1,3 +1,12 @@
-#define __PTHREAD_MUTEX_KIND_OFFSET		16
+#if __WORDSIZE == 64
+# define __PTHREAD_MUTEX_KIND_OFFSET           16
+#else
+# define __PTHREAD_MUTEX_KIND_OFFSET           12
+#endif
 
-#define __PTHREAD_RWLOCK_FLAGS_OFFSET		48
+
+#if __WORDSIZE == 64
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET		48
+#else
+# define __PTHREAD_RWLOCK_FLAGS_OFFSET          24
+#endif
-- 
2.26.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 09/18] RISC-V: The ABI implementation for 32-bit
  2020-04-02 16:29 [PATCH 00/18] glibc port for 32-bit RISC-V (RV32) Alistair Francis
                   ` (7 preceding siblings ...)
  2020-04-02 16:29 ` [PATCH 08/18] RISC-V: nptl: update default pthread-offsets.h Alistair Francis
@ 2020-04-02 16:29 ` Alistair Francis
  8 siblings, 0 replies; 16+ messages in thread
From: Alistair Francis @ 2020-04-02 16:29 UTC (permalink / raw)
  To: libc-alpha; +Cc: alistair23, Zong Li

From: Zong Li <zongbox@gmail.com>

This patch adds the ABI implementation about 32 bit version. It contains
the Linux-specific and RISC-V architecture code, I've collected here.
---
 sysdeps/riscv/bits/wordsize.h                 |  4 +-
 sysdeps/riscv/nptl/bits/pthreadtypes-arch.h   | 10 +++-
 sysdeps/riscv/nptl/bits/struct_rwlock.h       | 27 +++++++++-
 sysdeps/riscv/sfp-machine.h                   | 27 +++++++++-
 sysdeps/riscv/sys/asm.h                       |  5 +-
 .../unix/sysv/linux/riscv/jmp_buf-macros.h    | 53 +++++++++++++++++++
 6 files changed, 121 insertions(+), 5 deletions(-)
 create mode 100644 sysdeps/unix/sysv/linux/riscv/jmp_buf-macros.h

diff --git a/sysdeps/riscv/bits/wordsize.h b/sysdeps/riscv/bits/wordsize.h
index faccc71828..ee430d9036 100644
--- a/sysdeps/riscv/bits/wordsize.h
+++ b/sysdeps/riscv/bits/wordsize.h
@@ -25,5 +25,7 @@
 #if __riscv_xlen == 64
 # define __WORDSIZE_TIME64_COMPAT32 1
 #else
-# error "rv32i-based targets are not supported"
+# define __WORDSIZE_TIME64_COMPAT32 0
+# define __WORDSIZE32_SIZE_ULONG    0
+# define __WORDSIZE32_PTRDIFF_LONG  0
 #endif
diff --git a/sysdeps/riscv/nptl/bits/pthreadtypes-arch.h b/sysdeps/riscv/nptl/bits/pthreadtypes-arch.h
index c3c72d6c10..363034c38a 100644
--- a/sysdeps/riscv/nptl/bits/pthreadtypes-arch.h
+++ b/sysdeps/riscv/nptl/bits/pthreadtypes-arch.h
@@ -32,7 +32,15 @@
 # define __SIZEOF_PTHREAD_BARRIER_T 		32
 # define __SIZEOF_PTHREAD_BARRIERATTR_T 	 4
 #else
-# error "rv32i-based systems are not supported"
+# define __SIZEOF_PTHREAD_ATTR_T 		32
+# define __SIZEOF_PTHREAD_MUTEX_T 		32
+# define __SIZEOF_PTHREAD_MUTEXATTR_T 		 4
+# define __SIZEOF_PTHREAD_COND_T 		48
+# define __SIZEOF_PTHREAD_CONDATTR_T 		 4
+# define __SIZEOF_PTHREAD_RWLOCK_T 		48
+# define __SIZEOF_PTHREAD_RWLOCKATTR_T 		 8
+# define __SIZEOF_PTHREAD_BARRIER_T 		20
+# define __SIZEOF_PTHREAD_BARRIERATTR_T 	 4
 #endif
 
 #define __LOCK_ALIGNMENT
diff --git a/sysdeps/riscv/nptl/bits/struct_rwlock.h b/sysdeps/riscv/nptl/bits/struct_rwlock.h
index acfaa75e1b..b478da0132 100644
--- a/sysdeps/riscv/nptl/bits/struct_rwlock.h
+++ b/sysdeps/riscv/nptl/bits/struct_rwlock.h
@@ -32,14 +32,39 @@ struct __pthread_rwlock_arch_t
   unsigned int __writers_futex;
   unsigned int __pad3;
   unsigned int __pad4;
+#if __riscv_xlen == 64
   int __cur_writer;
   int __shared;
   unsigned long int __pad1;
   unsigned long int __pad2;
   unsigned int __flags;
+#else
+# if __BYTE_ORDER == __BIG_ENDIAN
+  unsigned char __pad1;
+  unsigned char __pad2;
+  unsigned char __shared;
+  unsigned char __flags;
+# else
+  unsigned char __flags;
+  unsigned char __shared;
+  unsigned char __pad1;
+  unsigned char __pad2;
+# endif
+  int __cur_writer;
+#endif
 };
 
-#define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
+#if __riscv_xlen == 64
+# define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, __flags
+#else
+# if __BYTE_ORDER == __BIG_ENDIAN
+#  define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
+  0, 0, 0, 0, 0, 0, 0, 0, 0, __flags, 0
+# else
+#  define __PTHREAD_RWLOCK_INITIALIZER(__flags) \
+  0, 0, 0, 0, 0, 0, __flags, 0, 0, 0, 0
+# endif
+#endif
 
 #endif
diff --git a/sysdeps/riscv/sfp-machine.h b/sysdeps/riscv/sfp-machine.h
index 08a84fd701..aef8c61a67 100644
--- a/sysdeps/riscv/sfp-machine.h
+++ b/sysdeps/riscv/sfp-machine.h
@@ -22,7 +22,32 @@
 
 #if __riscv_xlen == 32
 
-# error "rv32i-based targets are not supported"
+# define _FP_W_TYPE_SIZE		32
+# define _FP_W_TYPE		unsigned long
+# define _FP_WS_TYPE		signed long
+# define _FP_I_TYPE		long
+
+# define _FP_MUL_MEAT_S(R, X, Y)				\
+  _FP_MUL_MEAT_1_wide (_FP_WFRACBITS_S, R, X, Y, umul_ppmm)
+# define _FP_MUL_MEAT_D(R, X, Y)				\
+  _FP_MUL_MEAT_2_wide (_FP_WFRACBITS_D, R, X, Y, umul_ppmm)
+# define _FP_MUL_MEAT_Q(R, X, Y)				\
+  _FP_MUL_MEAT_4_wide (_FP_WFRACBITS_Q, R, X, Y, umul_ppmm)
+
+# define _FP_MUL_MEAT_DW_S(R, X, Y)					\
+  _FP_MUL_MEAT_DW_1_wide (_FP_WFRACBITS_S, R, X, Y, umul_ppmm)
+# define _FP_MUL_MEAT_DW_D(R, X, Y)					\
+  _FP_MUL_MEAT_DW_2_wide (_FP_WFRACBITS_D, R, X, Y, umul_ppmm)
+# define _FP_MUL_MEAT_DW_Q(R, X, Y)					\
+  _FP_MUL_MEAT_DW_4_wide (_FP_WFRACBITS_Q, R, X, Y, umul_ppmm)
+
+# define _FP_DIV_MEAT_S(R, X, Y)	_FP_DIV_MEAT_1_udiv_norm (S, R, X, Y)
+# define _FP_DIV_MEAT_D(R, X, Y)	_FP_DIV_MEAT_2_udiv (D, R, X, Y)
+# define _FP_DIV_MEAT_Q(R, X, Y)	_FP_DIV_MEAT_4_udiv (Q, R, X, Y)
+
+# define _FP_NANFRAC_S		_FP_QNANBIT_S
+# define _FP_NANFRAC_D		_FP_QNANBIT_D, 0
+# define _FP_NANFRAC_Q		_FP_QNANBIT_Q, 0, 0, 0
 
 #else
 
diff --git a/sysdeps/riscv/sys/asm.h b/sysdeps/riscv/sys/asm.h
index bd2de17e17..e314133ce4 100644
--- a/sysdeps/riscv/sys/asm.h
+++ b/sysdeps/riscv/sys/asm.h
@@ -26,7 +26,10 @@
 # define REG_S sd
 # define REG_L ld
 #elif __riscv_xlen == 32
-# error "rv32i-based targets are not supported"
+# define PTRLOG 2
+# define SZREG	4
+# define REG_S sw
+# define REG_L lw
 #else
 # error __riscv_xlen must equal 32 or 64
 #endif
diff --git a/sysdeps/unix/sysv/linux/riscv/jmp_buf-macros.h b/sysdeps/unix/sysv/linux/riscv/jmp_buf-macros.h
new file mode 100644
index 0000000000..7e48f24345
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/riscv/jmp_buf-macros.h
@@ -0,0 +1,53 @@
+/* jump buffer constants for RISC-V
+   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Produced by this program:
+
+   #include <stdio.h>
+   #include <unistd.h>
+   #include <setjmp.h>
+   #include <stddef.h>
+
+   int main (int argc, char **argv)
+   {
+       printf ("#define JMP_BUF_SIZE %d\n", sizeof (jmp_buf));
+       printf ("#define JMP_BUF_ALIGN %d\n", __alignof__ (jmp_buf));
+       printf ("#define SIGJMP_BUF_SIZE %d\n", sizeof (sigjmp_buf));
+       printf ("#define SIGJMP_BUF_ALIGN %d\n", __alignof__ (sigjmp_buf));
+       printf ("#define MASK_WAS_SAVED_OFFSET %d\n", offsetof (struct __jmp_buf_tag, __mask_was_saved));
+       printf ("#define SAVED_MASK_OFFSET %d\n", offsetof (struct __jmp_buf_tag, __saved_mask));
+   } */
+
+#if defined __riscv_float_abi_soft
+# define JMP_BUF_SIZE 188
+# define JMP_BUF_ALIGN 4
+# define SIGJMP_BUF_SIZE 188
+# define SIGJMP_BUF_ALIGN 4
+# define MASK_WAS_SAVED_OFFSET 56
+# define SAVED_MASK_OFFSET 60
+#elif defined __riscv_float_abi_double
+# define JMP_BUF_SIZE 288
+# define JMP_BUF_ALIGN 8
+# define SIGJMP_BUF_SIZE 288
+# define SIGJMP_BUF_ALIGN 8
+# define MASK_WAS_SAVED_OFFSET 152
+# define SAVED_MASK_OFFSET 156
+#else
+# error "Unknown RISC-V floating-point ABI"
+#endif
-- 
2.26.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 06/18] RISC-V: Add path of library directories for the 32-bit
  2020-04-02 16:29 ` [PATCH 06/18] RISC-V: Add path of library directories " Alistair Francis
@ 2020-04-02 21:48   ` Jim Wilson
  2020-04-02 22:57     ` Alistair Francis
  2020-04-03 16:01     ` Maciej W. Rozycki
  0 siblings, 2 replies; 16+ messages in thread
From: Jim Wilson @ 2020-04-02 21:48 UTC (permalink / raw)
  To: Alistair Francis; +Cc: GNU C Library, Zong Li

On Thu, Apr 2, 2020 at 9:38 AM Alistair Francis via Libc-alpha
<libc-alpha@sourceware.org> wrote:
> diff --git a/sysdeps/unix/sysv/linux/riscv/dl-cache.h b/sysdeps/unix/sysv/linux/riscv/dl-cache.h
> index c297dfe84f..60fc172edb 100644
> --- a/sysdeps/unix/sysv/linux/riscv/dl-cache.h
> +++ b/sysdeps/unix/sysv/linux/riscv/dl-cache.h
> @@ -34,6 +34,8 @@
>     RISC-V, libraries can be found in paths ending in:
>       - /lib64/lp64d
>       - /lib64/lp64
> +     - /lib32/ilp32d
> +     - /lib32/ilp32
>       - /lib (only ld.so)
>     so this will add all of those paths.
>

FYI This reminds me of something.  I was forwarded a complaint that
the RISC-V ABI was violating the Filesystem Hierarchy Standard (FHS),
which specifies that libraries are only allowed to be in /lib and
/lib<qual>.  The complaint was that /lib64/lp64d doesn't follow this
pattern, and hence is a violation of this standard.  However, the
standard doesn't clearly state that <qual> can't contain a slash.  The
person who complained insisted that it was implied.  It wasn't clear
to me what to do with the complaint.  Changing the ABI now would be
rather disruptive and undesirable, and I also don't know how important
the FHS standard is, or whether this interpretation is correct.

http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html

Jim

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 06/18] RISC-V: Add path of library directories for the 32-bit
  2020-04-02 21:48   ` Jim Wilson
@ 2020-04-02 22:57     ` Alistair Francis
  2020-04-02 23:33       ` Jim Wilson
  2020-04-03 16:01     ` Maciej W. Rozycki
  1 sibling, 1 reply; 16+ messages in thread
From: Alistair Francis @ 2020-04-02 22:57 UTC (permalink / raw)
  To: Jim Wilson; +Cc: Alistair Francis, GNU C Library, Zong Li

On Thu, Apr 2, 2020 at 2:49 PM Jim Wilson <jimw@sifive.com> wrote:
>
> On Thu, Apr 2, 2020 at 9:38 AM Alistair Francis via Libc-alpha
> <libc-alpha@sourceware.org> wrote:
> > diff --git a/sysdeps/unix/sysv/linux/riscv/dl-cache.h b/sysdeps/unix/sysv/linux/riscv/dl-cache.h
> > index c297dfe84f..60fc172edb 100644
> > --- a/sysdeps/unix/sysv/linux/riscv/dl-cache.h
> > +++ b/sysdeps/unix/sysv/linux/riscv/dl-cache.h
> > @@ -34,6 +34,8 @@
> >     RISC-V, libraries can be found in paths ending in:
> >       - /lib64/lp64d
> >       - /lib64/lp64
> > +     - /lib32/ilp32d
> > +     - /lib32/ilp32
> >       - /lib (only ld.so)
> >     so this will add all of those paths.
> >
>
> FYI This reminds me of something.  I was forwarded a complaint that
> the RISC-V ABI was violating the Filesystem Hierarchy Standard (FHS),
> which specifies that libraries are only allowed to be in /lib and
> /lib<qual>.  The complaint was that /lib64/lp64d doesn't follow this
> pattern, and hence is a violation of this standard.  However, the
> standard doesn't clearly state that <qual> can't contain a slash.  The
> person who complained insisted that it was implied.  It wasn't clear
> to me what to do with the complaint.  Changing the ABI now would be
> rather disruptive and undesirable, and I also don't know how important
> the FHS standard is, or whether this interpretation is correct.

Hmm....

Ideally I would prefer to do the same as RV64, it seems simpler. If it
is explicitly against the standard though then I think it makes sense
to fix it for RV32 now though.

It does seem to imply that <qual> shouldn't contain a slash, but it's
not stated (as you mentioned).

As it's not against the spec I'm thinking we leave it as is unless
anyone else objects?

Alistair

>
> http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
>
> Jim

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 06/18] RISC-V: Add path of library directories for the 32-bit
  2020-04-02 22:57     ` Alistair Francis
@ 2020-04-02 23:33       ` Jim Wilson
  2020-04-03  9:51         ` Zong Li
  0 siblings, 1 reply; 16+ messages in thread
From: Jim Wilson @ 2020-04-02 23:33 UTC (permalink / raw)
  To: Alistair Francis; +Cc: Alistair Francis, GNU C Library, Zong Li

On Thu, Apr 2, 2020 at 4:05 PM Alistair Francis <alistair23@gmail.com> wrote:
> Ideally I would prefer to do the same as RV64, it seems simpler. If it
> is explicitly against the standard though then I think it makes sense
> to fix it for RV32 now though.

I would prefer to follow the existing scheme also.  If you change the
rv32 glibc paths, then you will also need changes to gcc and binutils
at least, and maybe also to other stuff, as these paths are already
hard wired into those tools.

Maybe the FHS can be fixed to allow these paths?  If <qual> isn't
allowed to contain a /, then it seems that debian and ubuntu are
already violating it with the multiarch support which puts libraries
in /lib/x86_64-linux-gnu/ for instance, but maybe they don't care, or
maybe this non-slash interpretation is wrong.  Though researching that
a bit, I found this
    https://www.debian.org/doc/debian-policy/ch-opersys.html
which says they follow FHS with exceptions, one of which is to allow multiarch.

Jim

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 06/18] RISC-V: Add path of library directories for the 32-bit
  2020-04-02 23:33       ` Jim Wilson
@ 2020-04-03  9:51         ` Zong Li
  0 siblings, 0 replies; 16+ messages in thread
From: Zong Li @ 2020-04-03  9:51 UTC (permalink / raw)
  To: Jim Wilson; +Cc: Alistair Francis, Alistair Francis, GNU C Library

Jim Wilson <jimw@sifive.com> 於 2020年4月3日 週五 上午7:33寫道:
>
> On Thu, Apr 2, 2020 at 4:05 PM Alistair Francis <alistair23@gmail.com> wrote:
> > Ideally I would prefer to do the same as RV64, it seems simpler. If it
> > is explicitly against the standard though then I think it makes sense
> > to fix it for RV32 now though.
>
> I would prefer to follow the existing scheme also.  If you change the
> rv32 glibc paths, then you will also need changes to gcc and binutils
> at least, and maybe also to other stuff, as these paths are already
> hard wired into those tools.
>
> Maybe the FHS can be fixed to allow these paths?  If <qual> isn't
> allowed to contain a /, then it seems that debian and ubuntu are
> already violating it with the multiarch support which puts libraries
> in /lib/x86_64-linux-gnu/ for instance, but maybe they don't care, or
> maybe this non-slash interpretation is wrong.  Though researching that
> a bit, I found this
>     https://www.debian.org/doc/debian-policy/ch-opersys.html
> which says they follow FHS with exceptions, one of which is to allow multiarch.
>
> Jim

Agree with you. It seems to me that we follow the existing scheme
would be better if we didn't really violate the rule, but I'm not sure
whether the multiarch exception is applicable to our case.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 06/18] RISC-V: Add path of library directories for the 32-bit
  2020-04-02 21:48   ` Jim Wilson
  2020-04-02 22:57     ` Alistair Francis
@ 2020-04-03 16:01     ` Maciej W. Rozycki
  2020-04-03 18:04       ` Jim Wilson
  1 sibling, 1 reply; 16+ messages in thread
From: Maciej W. Rozycki @ 2020-04-03 16:01 UTC (permalink / raw)
  To: Jim Wilson; +Cc: Alistair Francis, GNU C Library, Zong Li

On Thu, 2 Apr 2020, Jim Wilson wrote:

> > diff --git a/sysdeps/unix/sysv/linux/riscv/dl-cache.h b/sysdeps/unix/sysv/linux/riscv/dl-cache.h
> > index c297dfe84f..60fc172edb 100644
> > --- a/sysdeps/unix/sysv/linux/riscv/dl-cache.h
> > +++ b/sysdeps/unix/sysv/linux/riscv/dl-cache.h
> > @@ -34,6 +34,8 @@
> >     RISC-V, libraries can be found in paths ending in:
> >       - /lib64/lp64d
> >       - /lib64/lp64
> > +     - /lib32/ilp32d
> > +     - /lib32/ilp32
> >       - /lib (only ld.so)
> >     so this will add all of those paths.
> >
> 
> FYI This reminds me of something.  I was forwarded a complaint that
> the RISC-V ABI was violating the Filesystem Hierarchy Standard (FHS),
> which specifies that libraries are only allowed to be in /lib and
> /lib<qual>.  The complaint was that /lib64/lp64d doesn't follow this
> pattern, and hence is a violation of this standard.  However, the
> standard doesn't clearly state that <qual> can't contain a slash.  The
> person who complained insisted that it was implied.  It wasn't clear
> to me what to do with the complaint.  Changing the ABI now would be
> rather disruptive and undesirable, and I also don't know how important
> the FHS standard is, or whether this interpretation is correct.

 Hmm, I wonder if there is actually a technical justification for the flat 
structure of library directories, e.g. for automatic library processing by 
some tools based on a flat glob pattern.

 We have a long-established practice to use subdirectories for libraries, 
both for multilibs and for hardware capabilities, and it has been 
considered appropriate, as tree filesystem structures scale better than 
flat ones (large directories require more time to process their entries).

 For instance the MIPS64r3 architecture, which has six base ABIs: 
legacy-NaN-o32, 2008-NaN-o32, legacy-NaN-n32, 2008-NaN-n32, 
legacy-NaN-n64, 2008-NaN-n64, all of which can coexist and independently 
run on a single machine, will keep the 2008-NaN variants in a nan2008/ 
subdirectory of the respective library directories.  There are further 
subdirectories defined for Loongson variants.

 Then ld.so(8) lists the various hardware capabilities the GNU C library's 
dynamic loader will use for various platforms as subdirectories to the 
respective library directories in order to determine the most suitable 
binary variant of the required library to choose.

 Unfortunately while the FHS standard does provide a rationale for many of 
its choices, there does not seem to be one provided for the arrangement of 
library directories chosen.  And the choice made long ago back in 1990s, 
where a typical Linux platform may have had at most two or maybe three 
ABIs defined to choose from based merely of the address space size being 
32-bit or 64-bit, may no longer be adequate some 20 years later as the 
world has evolved.

 Perhaps the choice made long ago for the library locations would best be 
revisited and any technical justification reevaluated.  I would recommend 
approaching The Linux Foundation, the entity backing the standard, with 
this problem.

  Maciej

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 06/18] RISC-V: Add path of library directories for the 32-bit
  2020-04-03 16:01     ` Maciej W. Rozycki
@ 2020-04-03 18:04       ` Jim Wilson
  0 siblings, 0 replies; 16+ messages in thread
From: Jim Wilson @ 2020-04-03 18:04 UTC (permalink / raw)
  To: Maciej W. Rozycki; +Cc: Alistair Francis, GNU C Library, Zong Li

On Fri, Apr 3, 2020 at 9:02 AM Maciej W. Rozycki <macro@wdc.com> wrote:
>  Perhaps the choice made long ago for the library locations would best be
> revisited and any technical justification reevaluated.  I would recommend
> approaching The Linux Foundation, the entity backing the standard, with
> this problem.

Thanks for the MIPS examples.  I sent email to fhs-discuss to start a
discussion there.

Jim

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2020-04-03 18:04 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-02 16:29 [PATCH 00/18] glibc port for 32-bit RISC-V (RV32) Alistair Francis
2020-04-02 16:29 ` [PATCH 01/18] RISC-V: Use 64-bit time_t and off_t for RV32 and RV64 Alistair Francis
2020-04-02 16:29 ` [PATCH 02/18] RISC-V: Define __NR_* as __NR_*_time64/64 for 32-bit Alistair Francis
2020-04-02 16:29 ` [PATCH 03/18] RISC-V: Add support for 32-bit vDSO calls Alistair Francis
2020-04-02 16:29 ` [PATCH 04/18] RISC-V: Add socket-constants.h for RV32 Alistair Francis
2020-04-02 16:29 ` [PATCH 05/18] RISC-V: Support dynamic loader for the 32-bit Alistair Francis
2020-04-02 16:29 ` [PATCH 06/18] RISC-V: Add path of library directories " Alistair Francis
2020-04-02 21:48   ` Jim Wilson
2020-04-02 22:57     ` Alistair Francis
2020-04-02 23:33       ` Jim Wilson
2020-04-03  9:51         ` Zong Li
2020-04-03 16:01     ` Maciej W. Rozycki
2020-04-03 18:04       ` Jim Wilson
2020-04-02 16:29 ` [PATCH 07/18] RISC-V: Add arch-syscall.h for RV32 Alistair Francis
2020-04-02 16:29 ` [PATCH 08/18] RISC-V: nptl: update default pthread-offsets.h Alistair Francis
2020-04-02 16:29 ` [PATCH 09/18] RISC-V: The ABI implementation for 32-bit Alistair Francis

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).