Commit Graph

33284 Commits

Author SHA1 Message Date
Palmer Dabbelt
c776fa113d
RISC-V: ABI Implementation
This patch contains code that needs to directly know about the RISC-V
ABI, which is specified in a work-in-progress psABI document:

  https://github.com/riscv/riscv-elf-psabi-doc/blob/master/riscv-elf.md

This is meant to contain all the RISC-V code that needs to explicitly
name registers or manage in-memory structure layout.  This does not
contain any of the Linux-specific code.

2018-01-29  Palmer Dabbelt  <palmer@sifive.com>

        * sysdeps/riscv/__longjmp.S: New file.
        * sysdeps/riscv/backtrace.c: Likewise.
        * sysdeps/riscv/bits/endian.h: Likewise.
        * sysdeps/riscv/bits/setjmp.h: Likewise.
        * sysdeps/riscv/bits/wordsize.h: Likewise.
        * sysdeps/riscv/bsd-_setjmp.c: Likewise.
        * sysdeps/riscv/bsd-setjmp.c: Likewise.
        * sysdeps/riscv/dl-trampoline.S: Likewise.
        * sysdeps/riscv/gccframe.h: Likewise.
        * sysdeps/riscv/jmpbuf-offsets.h: Likewise.
        * sysdeps/riscv/jmpbuf-unwind.h: Likewise.
        * sysdeps/riscv/machine-gmon.h: Likewise.
        * sysdeps/riscv/memusage.h: Likewise.
        * sysdeps/riscv/setjmp.S: Likewise.
        * sysdeps/riscv/sys/asm.h: Likewise.
        * sysdeps/riscv/tls-macros.h: Likewise.
2018-01-29 10:25:29 -08:00
Palmer Dabbelt
ba9e25a62b
Add documentation for __riscv_flush_icache
This function is used by GCC to enforce ordering between data writes and
instruction fetches, and while we'd prefer that users rely on the GCC
intrinsic when possible this is user visible in case that's not
possible.

2018-01-29  Palmer Dabbelt  <palmer@sifive.com>

        * manual/platform.texi: Add RISC-V documenation for
        __riscv_flush_icache.
2018-01-29 10:25:23 -08:00
Palmer Dabbelt
4215e27674
Add RISC-V entries to config.h.in
These were autogenerated.

2018-01-29  Palmer Dabbelt  <palmer@sifive.com>

        * config.h.in: Regenerate.
2018-01-29 10:24:57 -08:00
Palmer Dabbelt
40ca951bdb
Skeleton documentation for the RISC-V port
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.
2018-01-29 10:22:26 -08:00
Palmer Dabbelt
532cf290d0
sysdeps/init_array: Add PREINIT_FUNCTION to crti.S
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.
2018-01-29 10:22:26 -08:00
Florian Weimer
cdd14619a7 libnsl: Turn remaining symbols into compat symbols [BZ #22701] 2018-01-29 17:42:30 +01:00
Romain Naour
b7ccb5de35 microblaze: don't use copy_file_range syscall with kernel headers < 4.10
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>
2018-01-29 16:12:08 +00:00
Joseph Myers
e3aa6999d7 Make build-many-glibcs.py clean git source directories.
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.
2018-01-29 13:59:33 +00:00
Joseph Myers
088de7d009 Clean up build-many-glibcs.py libcilkrts disabling.
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.
2018-01-29 13:49:21 +00:00
Joseph Myers
522623e4aa Use Linux 4.15 in build-many-glibcs.py.
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.
2018-01-29 13:38:21 +00:00
Rafal Luzynski
8b406f8776 lt_LT: Add alternative month names (bug 10871).
[BZ #10871]
	* localedata/locales/lt_LT (alt_mon): Import from CLDR (nominative
	case).
2018-01-29 13:14:45 +01:00
Rafal Luzynski
105e90bd83 be_BY, be_BY@latin: Add alternative month names (bug 10871).
This patch also fixes spelling of lang_name in be_BY@latin, as reported
by Ihar Hrachyshka.

	[BZ #10871]
	* localedata/locales/be_BY (mon): Rename to...
	(alt_mon): This, then synchronize with CLDR (nominative case).
	(abmon): Rename to...
	(ab_alt_mon): This, then synchronize with CLDR (nominative case).
	(mon): Import from CLDR (genitive case).
	(abmon): Likewise.
	* localedata/locales/be_BY@latin (mon): Rename to...
	(alt_mon): This.
	(mon): Add, proper genitive forms provided by Viktar Siarheichyk.

	* localedata/locales/be_BY@latin (lang_name): Reworded to
	"biełaruskaja mova".
2018-01-29 13:14:45 +01:00
Rafal Luzynski
561cb41473 el_CY, el_GR: Add alternative month names (bug 10871).
[BZ #10871]
	* localedata/locales/el_CY (mon): Renamed to...
	(alt_mon): This.
	(mon): Import from CLDR (genitive case).
	* localedata/locales/el_GR: Likewise.
2018-01-29 13:14:45 +01:00
Rafal Luzynski
f7bdf30d15 ru_RU, ru_UA: Add alternative month names (bug 10871).
[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.
2018-01-29 13:14:45 +01:00
Samuel Thibault
1f89ac7190 hurd: Fix includes
* 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>.
2018-01-29 01:48:24 +01:00
Samuel Thibault
80463dc69d hurd: Fix _POSIX_VDISABLE value
* sysdeps/mach/hurd/bits/posix_opt.h (_POSIX_VDISABLE): Set to '\0'
	instead of invalid -1.
2018-01-29 00:05:20 +01:00
Samuel Thibault
2e52dff41f hurd: Build stubs for new gnumach.defs
* mach/Makefile (user-interfaces): Add mach/gnumach.
* sysdeps/mach/configure.ac (mach_interface_list): Add gnumach.
* sysdeps/mach/configure (mach_interface_list): Regenerate.
2018-01-28 19:38:29 +01:00
Samuel Thibault
625ba81ef5 hurd: Include <sigsetops.h> from hurd/hurd/signal.h
* hurd/hurd/signal.h [__USE_EXTERN_INLINES][_LIBC][IS_IN(libc) ||
IS_IN(libpthread)]: Include <sigsetops.h>.
2018-01-28 19:36:49 +01:00
Samuel Thibault
a902a0866a hurd: Fix allocalim build
* sysdeps/pthread/allocalim.h [!defined PTHREAD_STACK_MIN]: Do not
check size against PTHREAD_STACK_MIN.
2018-01-28 19:35:02 +01:00
Samuel Thibault
e925416840 hurd: fix typo 2018-01-28 19:27:19 +01:00
Samuel Thibault
b10253044b hurd: Fix posix options
_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.
2018-01-28 19:13:55 +01:00
Samuel Thibault
d23965cf88 Revert "hurd: Fix building io/tst-fchownat.c"
This reverts commit fc221145a7.
2018-01-28 19:13:20 +01:00
Samuel Thibault
7c5b106dcb hurd: Fix getifaddrs / freeifaddrs exposition
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.
2018-01-28 19:06:15 +01:00
Samuel Thibault
28f6186f3e hurd: take __USE_EXTERN_INLINES into account and restrict inlines
* 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.
2018-01-28 18:46:23 +01:00
Samuel Thibault
3fc1ecf935 hurd: Fix building io/tst-copy_file_range.c
* io/tst-copy_file_range.c [!defined CLONE_NEWNS]: Do not include
	<sys/mount.h>.
2018-01-28 17:56:49 +01:00
Samuel Thibault
fc221145a7 hurd: Fix building io/tst-fchownat.c
* io/tst-fchownat.c [!defined _POSIX_CHOWN_RESTRICTED]: Act like when
	_POSIX_CHOWN_RESTRICTED is defined to 0.
2018-01-28 17:52:46 +01:00
Samuel Thibault
cef7166ac1 hurd: Fix building libio/tst-memstream3.c
FWRITE is already an fcntl.h macro.

	* libio/tst-memstream3.c (FWRITE): Rename to _FWRITE.
	(do_test_bz20181): Rename accordingly.
	* libio/tst-wmemstream3.c (FWRITE): Rename accordingly.
2018-01-28 17:45:41 +01:00
Samuel Thibault
5f982b0beb hurd: add base abilist files
* sysdeps/mach/hurd/libhurduser.abilist: New file.
	* sysdeps/mach/libmachuser.abilist: New file.
2018-01-28 17:26:35 +01:00
Thomas Schwinge
84814e2a40 hurd: Add missing fcntl-internal.h
* hurd/fcntl-internal.h: New file.
2018-01-28 17:05:40 +01:00
Samuel Thibault
400669754d hurd: Fix nscd build
nscd won't find check_* from inet/, it needs a sysdeps file.

	* sysdeps/mach/hurd/check_native.c: New file.
	* sysdeps/mach/hurd/check_pf.c: New file.
2018-01-28 16:28:48 +01:00
Samuel Thibault
f8bee46cc2 hurd: Fix warnings
* hurd/hurd/lookup.h (__hurd_file_name_lookup, hurd_file_name_lookup,
	__hurd_file_name_split, hurd_file_name_split,
	__hurd_directory_name_split, hurd_directory_name_split,
	__hurd_file_name_lookup_retry, hurd_file_name_lookup_retry,
	hurd_file_name_path_lookup): Make lookup function parameter take a
	const char *name instead of char *name.
	* hurd/hurdlookup.c (__hurd_file_name_lookup, __hurd_file_name_split,
	__hurd_directory_name_split): Likewise.
	* hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Likewise.
	* hurd/path-lookup.c (hurd_file_name_path_lookup): Likewise.
2018-01-28 16:23:59 +01:00
Samuel Thibault
844bf92148 hurd: Fix warning
* sysdeps/mach/hurd/spawni.c (__spawni): Make relpath and abspath
	const char * instead of char *.
2018-01-28 16:21:28 +01:00
Samuel Thibault
19fd8d0d3e hurd: Make build-many-glibcs.py use mainline gnumach
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.
2018-01-28 15:48:04 +01:00
Samuel Thibault
660b7bff81 hurd: fix warning
* 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.
2018-01-27 23:49:18 +01:00
Samuel Thibault
41cdb1eb5a hurd: Fix enabling vm_copy
Benchmarked on
http://lists.gnu.org/archive/html/bug-hurd/2014-12/msg00081.html

	* sysdeps/mach/pagecopy.h (PAGE_THRESHOLD): Rename to
	PAGE_COPY_THRESHOLD and set to benchmarked 16384.
2018-01-27 22:09:30 +01:00
Samuel Thibault
f817775364 hurd: fix 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.
2018-01-27 22:01:34 +01:00
Samuel Thibault
06fac9f503 hurd: fix warning
* sysdeps/mach/hurd/dl-sysdep.c (_exit): Call LOSE and abort() if
	__task_terminate would ever return successfully.
2018-01-27 22:00:23 +01:00
Samuel Thibault
f4d3cee3a0 hurd: make build-many-glibcs.py use mainline mig
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.
2018-01-27 21:44:57 +01:00
Samuel Thibault
7dab2d00ee hurd: drop elder MACH_IPC_COMPAT handling
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.
2018-01-27 21:40:08 +01:00
Samuel Thibault
903d3633ec hurd: fix warning
* sysdeps/mach/hurd/Makefile [$(subdir)==nis]: Add
	-DUSE_BINDINGDIR=1 to CFLAGS-ypclnt.c.
2018-01-27 21:37:29 +01:00
Samuel Thibault
d4d5b2ddf3 hurd: fix gcc build in build-many-glibcs.py
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.
2018-01-27 19:54:38 +01:00
Samuel Thibault
61a3a8c6ce hurd: fix warning
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 *.
2018-01-27 17:17:49 +01:00
Samuel Thibault
05ebfe87fa hurd: fix warning
* sysdeps/mach/hurd/dl-sysdep.c (_dl_sysdep_start): Cast
	vm_address_t * to ElfW(Addr) * for dl_main parameter.
2018-01-27 16:49:05 +01:00
Samuel Thibault
147d1dbb9d hurd: fix warnings
* sysdeps/generic/sigsetops.h (__sigemptyset, __sigfillset,
	__sigandset, __sigorset, __sigaddset, __sigdelset): Make them really
	return 0.
2018-01-27 16:47:36 +01:00
Samuel Thibault
4f66dc2390 hurd: fix warning
* sysdeps/generic/sigset-cvt-mask.h: Include <sigsetops.h>.
2018-01-27 16:45:55 +01:00
Samuel Thibault
b29848b99b hurd: fix warnings
* sysdeps/generic/not-cancel.h: Include <fcntl.h>, <unistd.h>,
	<sys/wait.h>, <time.h>, <sys/uio.h>.
	(NOT_CANCEL_H): Add inclusion guard.
2018-01-27 16:45:10 +01:00
Samuel Thibault
3538a4b6c3 hurd: fix warning
* resolv/res-close.c: Include <stdlib.h>.
2018-01-27 16:43:16 +01:00
Samuel Thibault
da8168df01 hurd: fix warning
* sysdeps/mach/hurd/profil.c: Reuse `a' variable instead of introducing
	a `c' variable.
2018-01-27 16:33:29 +01:00
Samuel Thibault
85285a0ce7 hurd: fix warning
* sysdeps/mach/hurd/xmknodat.c: Include <sys/sysmacros.h>.
2018-01-27 16:32:16 +01:00
James Clarke
7e23a7ddf8 Update hppa libm-test-ulps
* sysdeps/hppa/fpu/libm-test-ulps: Update.

Signed-off-by: James Clarke <jrtc27@jrtc27.com>
2018-01-27 13:32:36 +01:00