Message ID | 20211113031639.2402161-12-shorne@gmail.com |
---|---|
State | New |
Headers | show |
Series | Glibc OpenRISC port | expand |
On Sat, 13 Nov 2021, Stafford Horne via Libc-alpha wrote: > diff --git a/sysdeps/unix/sysv/linux/or1k/configure.ac b/sysdeps/unix/sysv/linux/or1k/configure.ac > new file mode 100644 > index 0000000000..d439e7fd53 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/or1k/configure.ac > @@ -0,0 +1,4 @@ > +GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. > +# Local configure fragment for sysdeps/unix/sysv/linux/or1k. > + > +arch_minimum_kernel=5.10.0 This seems to be a lot more recent than when OpenRISC support was actually added to the Linux kernel, and also more recent than when 64-bit time support was added for 32-bit architectures (which may be a convenient minimum kernel for some new 32-bit architectures for that reason). Requiring a newer kernel like that is certainly fine if convenient for the port, but I think the choice of minimum kernel version, and the reasons for it, deserve mention at least in the commit message and the NEWS file entry.
On Thu, Nov 18, 2021 at 10:34:10PM +0000, Joseph Myers wrote: > On Sat, 13 Nov 2021, Stafford Horne via Libc-alpha wrote: > > > diff --git a/sysdeps/unix/sysv/linux/or1k/configure.ac b/sysdeps/unix/sysv/linux/or1k/configure.ac > > new file mode 100644 > > index 0000000000..d439e7fd53 > > --- /dev/null > > +++ b/sysdeps/unix/sysv/linux/or1k/configure.ac > > @@ -0,0 +1,4 @@ > > +GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. > > +# Local configure fragment for sysdeps/unix/sysv/linux/or1k. > > + > > +arch_minimum_kernel=5.10.0 > > This seems to be a lot more recent than when OpenRISC support was actually > added to the Linux kernel, and also more recent than when 64-bit time > support was added for 32-bit architectures (which may be a convenient > minimum kernel for some new 32-bit architectures for that reason). > Requiring a newer kernel like that is certainly fine if convenient for the > port, but I think the choice of minimum kernel version, and the reasons > for it, deserve mention at least in the commit message and the NEWS file > entry. OK, during the v1 review you mentioned: You'll probably need a newer minimum kernel when requiring 64-bit time support, until all the fallback for 64-bit time on 32-bit kernels without the 64-bit-time syscalls is implemented. I really just chose the version I was working on at the time. I just looked back on it, this version 5.10 is good because. 1. it is a long term support version. 2. in 5.8 I fixed a kernel bug which caused clone/fork to not work with TLS. I will upate the commit/news. -Stafford
diff --git a/sysdeps/or1k/Implies b/sysdeps/or1k/Implies new file mode 100644 index 0000000000..387a0ca052 --- /dev/null +++ b/sysdeps/or1k/Implies @@ -0,0 +1,3 @@ +wordsize-32 +ieee754/dbl-64 +ieee754/flt-32 diff --git a/sysdeps/or1k/Makefile b/sysdeps/or1k/Makefile new file mode 100644 index 0000000000..0241a0587e --- /dev/null +++ b/sysdeps/or1k/Makefile @@ -0,0 +1,7 @@ +ASFLAGS-.os += -fPIC + +ifeq ($(subdir),elf) +# Extra shared linker files to link only into dl-allobjs.so. +sysdep-rtld-routines += dl-start +endif + diff --git a/sysdeps/or1k/nofpu/Implies b/sysdeps/or1k/nofpu/Implies new file mode 100644 index 0000000000..abcbadb25f --- /dev/null +++ b/sysdeps/or1k/nofpu/Implies @@ -0,0 +1 @@ +ieee754/soft-fp diff --git a/sysdeps/or1k/nptl/Makefile b/sysdeps/or1k/nptl/Makefile new file mode 100644 index 0000000000..0e08821933 --- /dev/null +++ b/sysdeps/or1k/nptl/Makefile @@ -0,0 +1,21 @@ +# Copyright (C) 2021 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/>. + +ifeq ($(subdir),csu) +gen-as-const-headers += tcb-offsets.sym +endif diff --git a/sysdeps/or1k/preconfigure b/sysdeps/or1k/preconfigure new file mode 100644 index 0000000000..d1b1fb1843 --- /dev/null +++ b/sysdeps/or1k/preconfigure @@ -0,0 +1,34 @@ +# +# This is free and unencumbered software released into the public domain. +# +# Anyone is free to copy, modify, publish, use, compile, sell, or +# distribute this software, either in source code form or as a compiled +# binary, for any purpose, commercial or non-commercial, and by any +# means. +# +# In jurisdictions that recognize copyright laws, the author or authors +# of this software dedicate any and all copyright interest in the +# software to the public domain. We make this dedication for the benefit +# of the public at large and to the detriment of our heirs and +# successors. We intend this dedication to be an overt act of +# relinquishment in perpetuity of all present and future rights to this +# software under copyright law. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# + +case "$machine" in +or1k*) + base_machine=or1k + machine=or1k + + with_fp_cond="defined __or1k_hard_float__" + ;; +esac + diff --git a/sysdeps/unix/sysv/linux/or1k/Implies b/sysdeps/unix/sysv/linux/or1k/Implies new file mode 100644 index 0000000000..f39f16c04a --- /dev/null +++ b/sysdeps/unix/sysv/linux/or1k/Implies @@ -0,0 +1,3 @@ +or1k/nptl +unix/sysv/linux/generic/wordsize-32 +unix/sysv/linux/generic diff --git a/sysdeps/unix/sysv/linux/or1k/Makefile b/sysdeps/unix/sysv/linux/or1k/Makefile new file mode 100644 index 0000000000..be20320b2f --- /dev/null +++ b/sysdeps/unix/sysv/linux/or1k/Makefile @@ -0,0 +1,12 @@ +ifeq ($(subdir),misc) + sysdep_routines += prctl or1k_clone +endif + +ifeq ($(subdir),stdlib) +gen-as-const-headers += ucontext_i.sym +endif + +# pull in __syscall_error routine +libpthread-routines += sysdep +librt-routines += sysdep + diff --git a/sysdeps/unix/sysv/linux/or1k/configure b/sysdeps/unix/sysv/linux/or1k/configure new file mode 100644 index 0000000000..286f5ac25a --- /dev/null +++ b/sysdeps/unix/sysv/linux/or1k/configure @@ -0,0 +1,4 @@ +# This file is generated from configure.ac by Autoconf. DO NOT EDIT! + # Local configure fragment for sysdeps/unix/sysv/linux/or1k. + +arch_minimum_kernel=5.10.0 diff --git a/sysdeps/unix/sysv/linux/or1k/configure.ac b/sysdeps/unix/sysv/linux/or1k/configure.ac new file mode 100644 index 0000000000..d439e7fd53 --- /dev/null +++ b/sysdeps/unix/sysv/linux/or1k/configure.ac @@ -0,0 +1,4 @@ +GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. +# Local configure fragment for sysdeps/unix/sysv/linux/or1k. + +arch_minimum_kernel=5.10.0 diff --git a/sysdeps/unix/sysv/linux/or1k/shlib-versions b/sysdeps/unix/sysv/linux/or1k/shlib-versions new file mode 100644 index 0000000000..159653b5c4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/or1k/shlib-versions @@ -0,0 +1,2 @@ +DEFAULT GLIBC_2.35 +ld=ld-linux-or1k.so.1