During the upstreaming process it was suggested that I add a handful of
small documentation entries about the RISC-V port, which I've collected
here.
2018-01-29 Palmer Dabbelt <palmer@sifive.com>
* manual/math.texi: RISC-V supports _Float128 and _Float64x.
The RISC-V port contains a crti.S that simply contains a link to
PREINIT_FUNCTION (when defined). As this should be entirely generic,
Joseph Myers suggested that we update the generic init_array version to
contain this. Since RISC-V is the only user of init_array this won't
break any existing ports.
2018-01-29 Palmer Dabbelt <palmer@sifive.com>
* sysdeps/init_array/crti.S (.section .init_array): Add
PREINIT_FUNCTION when defined.
copy_file_range syscall was added for microblaze in 4.10.
This patch makes the MicroBlaze kernel-features.h undefine
__ASSUME_COPY_FILE_RANGE for toolchains built with kernel headers < 4.10.
* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
(__ASSUME_COPY_FILE_RANGE) [__LINUX_KERNEL_VERSION < 0x040A00]: Undef.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?id=7181e5590e5ba898804aef3ee6be7f27606e6f8b
Signed-off-by: Romain Naour <romain.naour@gmail.com>
With the git checkouts of Hurd components in build-many-glibcs.py
involving running autoreconf, there's a risk that generated files
could be left behind by an old autoreconf run (if an old version of
the sources generates those files in the source directory but a new
version does not).
This patch avoids that by using git clean -dxfq when updating git
checkouts. In this patch, that's conditional on --replace-sources, to
avoid removing any local not-checked-in files someone may have in
their checkout unless the option has been specifically passed that
says it's OK to blow old checkouts away, complete with any local
changes to them.
* scripts/build-many-glibcs.py (Context.git_checkout): Use git
clean -dxfq for git updates when replacing sources.
The disabling of libcilkrts in build-many-glibcs.py has some
peculiarities. It's only for the final GCC build, not the initial
bootstrap one, whereas normally anything disabled for the final build
should be disabled for the bootstrap one as well. And it's only for
Hurd, when it's more natural by analogy with the libsanitizer
disabling to disable this library unconditionally, not only for
targets where it's known to break. This patch cleans up that
disabling accordingly, adding a comment so it's obvious it can be
removed once GCC 7 is too old to build glibc.
* scripts/build-many-glibcs.py (Config.build_gcc): Use
--disable-libcilkrts unconditionally, not just for the final GCC
build for Hurd.
This patch makes build-many-glibcs.py use Linux 4.15. Other glibc
updates for Linux 4.15 can wait until after the 2.27 release.
* scripts/build-many-glibcs.py (Context.checkout): Default Linux
version to 4.15.
[BZ #10871]
* localedata/locales/ru_RU (mon): Rename to...
(alt_mon): This.
(abmon): Rename to...
(ab_alt_mon): This.
(mon): Import from CLDR (genitive case).
(abmon): Copy from the old content except the 5th month which is
now in the genitive case, even when abbreviated.
* localedata/locales/ru_UA: Likewise.
* time/tst-strptime.c (day_tests): Add an actual example of
a difference between %b and %Ob in Russian.
* sysdeps/mach/hurd/net/ethernet.h: Include <stdint.h>.
* sysdeps/mach/hurd/net/if_arp.h: Include <stdint.h>.
* sysdeps/mach/hurd/net/if_ppp.h: Do not include non-existing
<net/ppp_defs.h>.
_POSIX_CHOWN_RESTRICTED and _POSIX_NO_TRUNC should be always defined.
* sysdeps/mach/hurd/bits/posix_opt.h (_POSIX_CHOWN_RESTRICTED,
_POSIX_NO_TRUNC): Define to 0.
400669754d ('hurd: Fix nscd build') had the side effect of making
libc's freeaddrinfo expose freeifaddrs through __check_pf. We can just
move the renames to gai.c itself, along others.
* sysdeps/mach/hurd/check_pf.c (__getifaddrs, __freeifaddrs): Do not
define macros.
* nscd/gai.c (__getifaddrs): Define macro to getifaddrs.
(__freeifaddrs): Define macro to freeifaddrs.
* hurd/hurd.h (__hurd_fail): Always declare function, and provide inline
version only if __USE_EXTERN_INLINES is defined.
* hurd/hurd/fd.h (_hurd_fd_error_signal, _hurd_fd_error, __hurd_dfail,
__hurd_sockfail): Likewise.
(_hurd_fd_get): Always declare functions, and provide inline versions
only if __USE_EXTERN_INLINES and _LIBC are defined and IS_IN(libc).
* hurd/hurd/port.h (_hurd_port_init, _hurd_port_locked_get,
_hurd_port_get, _hurd_port_free, _hurd_port_locked_set,
_hurd_port_set): Always declare functions, and provide inline versions
only if __USE_EXTERN_INLINES and _LIBC are defined and
IS_IN(libc).
* hurd/hurd/signal.h (_hurd_self_sigstate, _hurd_critical_section_lock,
_hurd_critical_section_unlock): Likewise.
* hurd/hurd/threadvar.h (__hurd_threadvar_location_from_sp,
* __hurd_threadvar_location): Likewise.
* hurd/hurd/userlink.h (_hurd_userlink_link, _hurd_userlink_unlink,
_hurd_userlink_clear): Likewise.
* mach/lock-intern.h (__spin_lock_init, __spin_lock, __mutex_lock,
__mutex_unlock, __mutex_trylock): Always declare functions, and provide
inline versions only if __USE_EXTERN_INLINES and _LIBC are defined.
* mach/mach/mig_support.h (__mig_strncpy): Likewise.
* sysdeps/generic/machine-lock.h (__spin_unlock, __spin_try_lock,
__spin_lock_locked): Likewise.
* sysdeps/mach/i386/machine-lock.h (__spin_unlock, __spin_try_lock,
__spin_lock_locked): Likewise.
* mach/spin-lock.c (__USE_EXTERN_INLINES): Define to 1.
* hurd/Versions (libc: GLIBC_2.27): Add _hurd_fd_error_signal,
_hurd_fd_error, __hurd_dfail, __hurd_sockfail, _hurd_port_locked_set,
__hurd_threadvar_location_from_sp, __hurd_threadvar_location,
_hurd_userlink_link, _hurd_userlink_unlink, _hurd_userlink_clear.
Some warnings need a couple of fixes in the gnumach headers.
* scripts/build-many-glibcs.py (checkout_vcs): Add gnumach
repository URLs, run autoreconf, and make it the default for now.
* sysdeps/mach/hurd/getresgid.c (__getresgid): Set result from
critical section to make code simpler and avoid warning.
* sysdeps/mach/hurd/getresuid.c (__getresuid): Set result from
critical section to make code simpler and avoid warning.
Making `special_profil_failure' both avoids warning "variable
'special_profil_failure' set but not used", and makes it easier to
access with gdb.
* sysdeps/mach/hurd/profil.c (special_profil_failure): Move variable
to global scope.
Some warnings come from code generated by mig, so we need a very recent
version for now.
* scripts/build-many-glibcs.py (checkout_vcs): Add mig repository
URL, and run autoreconf, make it the default for now.
This was dropped from GNU Mach in 2006.
* mach/Machrules (MIGFLAGS): Do not set -DMACH_IPC_COMPAT=0.
* mach/mach/mach_traps.h: Drop comment about MACH_IPC_COMPAT.
* sysdeps/mach/hurd/fork.c (__fork): Drop special casing
MACH_IPC_COMPAT.
gcc's libcilkrts has never actually supported GNU/Hurd, and doesn't
automatically disable it, and the support was actually removed in gcc trunk,
so that will never actually be fixed there.
* scripts/build-many-glibcs.py [os == gnu] (build_gcc): Pass
--disable-libcilkrts to gcc configure.
timer_ptr2id and timer_id2ptr are used to convert between
application-visible timer_t and struct timer_node *. timer_ptr2id was made
to use void * instead of timer_t in 49b650430e ('Update.') for no reason.
It happens that on Linux timer_t is void *, so both that change and this
commit are no-ops there, but not on systems where timer_t is not void *.
Using timer_ptr2id for filling sival_ptr also does not make sense since that
actually is a void *.
* sysdeps/pthread/posix-timer.h (timer_ptr2id): Cast to timer_t
instead of void *.
* sysdeps/pthread/timer_create.c (timer_create): Do not use
timer_ptr2id to cast struct timer_node * to void *.