about summary refs log tree commit diff
path: root/sysdeps/mach
Commit message (Collapse)AuthorAgeFilesLines
...
* hurd: Add pointer guard supportSamuel Thibault2020-06-061-0/+7
| | | | | * sysdeps/mach/hurd/i386/tls.h (THREAD_SET_POINTER_GUARD, THREAD_COPY_POINTER_GUARD): New macros.
* hurd: Add stack guard supportSamuel Thibault2020-06-062-1/+9
| | | | | | * sysdeps/mach/hurd/i386/tls.h (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): New macros * sysdeps/mach/hurd/i386/ld.abilist (__stack_chk_guard): Remove symbol.
* htl: Make pthread_cond_destroy wait for threads to be wokenSamuel Thibault2020-06-011-0/+11
| | | | | | | | | | | | | | | | | | This allows to reuse the storage after calling pthread_cond_destroy. * sysdeps/htl/bits/types/struct___pthread_cond.h (__pthread_cond): Replace unused struct __pthread_condimpl *__impl field with unsigned int __wrefs. (__PTHREAD_COND_INITIALIZER): Update accordingly. * sysdeps/htl/pt-cond-timedwait.c (__pthread_cond_timedwait_internal): Register as waiter in __wrefs field. On unregistering, wake any pending pthread_cond_destroy. * sysdeps/htl/pt-cond-destroy.c (__pthread_cond_destroy): Register wake request in __wrefs. * nptl/Makefile (tests): Move tst-cond20 tst-cond21 to... * sysdeps/pthread/Makefile (tests): ... here. * nptl/tst-cond20.c nptl/tst-cond21.c: Move to... * sysdeps/pthread/tst-cond20.c sysdeps/pthread/tst-cond21.c: ... here.
* hurd: Fix fexecveSamuel Thibault2020-05-281-3/+16
| | | | | * sysdeps/mach/hurd/fexecve.c (fexecve): Re-lookup fd with O_EXEC before calling _hurd_exec_paths.
* hurd: fix ptsname error when called on a non-ttySamuel Thibault2020-05-281-1/+5
| | | | | * sysdeps/mach/hurd/ptsname.c (__ptsname_internal): Replace not-supported errors from __term_get_peername with ENOTTY.
* hurd: Fix fdopendir checking for directory typeSamuel Thibault2020-05-281-1/+1
| | | | | * sysdeps/mach/hurd/fdopendir.c (__fdopendir): Lookup "./" instead of "/" that would designate the root of the filesystem.
* htl: Add clock variantsSamuel Thibault2020-05-262-5/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * htl/pt-join.c (__pthread_join): Move implementation to... (__pthread_join_common): ... new function. Add try, timed and clock support. (__pthread_join): Reimplement on top of __pthread_join_common. (__pthread_tryjoin_np, __pthread_timedjoin_np, __pthread_clockjoin_np): Implement on top of __pthread_join_common. (pthread_tryjoin_np, pthread_timedjoin_np, pthread_clockjoin_np): New aliases. * hurd/hurdlock.c (__lll_abstimed_wait, __lll_abstimed_xwait, __lll_abstimed_lock): Check for supported clock. * sysdeps/htl/pt-cond-timedwait.c (__pthread_cond_timedwait_internal): Add clockid parameter and support it. (__pthread_cond_timedwait): Pass -1 as clockid. (__pthread_cond_clockwait): New function. (pthread_cond_clockwait): New alias. * sysdeps/htl/pt-cond-wait.c (__pthread_cond_timedwait_internal): Update prototype. (__pthread_cond_wait): Pass -1 as clockid. * sysdeps/htl/pt-rwlock-timedrdlock.c (__pthread_rwlock_timedrdlock_internal): Add clockid parameter, and support id. (__pthread_rwlock_clockrdlock): New function. (pthread_rwlock_clockrdlock): New alias. * sysdeps/htl/pt-rwlock-rdlock.c (__pthread_rwlock_timedrdlock_internal): Update prototype. (__pthread_rwlock_rdlock): Pass -1 as clockid. * sysdeps/htl/pt-rwlock-timedwrlock.c (__pthread_rwlock_timedwrlock_internal): Add clockid parameter, and support id. (__pthread_rwlock_clockwrlock): New function. (pthread_rwlock_clockwrlock): New alias. * sysdeps/htl/pt-rwlock-wrlock.c (__pthread_rwlock_timedwrlock_internal): Update prototype. (__pthread_rwlock_wrlock): Pass -1 as clockid. * sysdeps/mach/hurd/htl/pt-mutex-timedlock.c (__pthread_mutex_timedlock): Move implementation to (__pthread_mutex_clocklock): New function with additional clockid parameter and support it. (pthread_mutex_clocklock): New alias. (__pthread_mutex_timedlock): Reimplement on top of __pthread_mutex_clocklock. * sysdeps/htl/pthread.h (pthread_tryjoin_np, pthread_timedjoin_np, pthread_clockjoin_np, pthread_mutex_clocklock, pthread_cond_clockwait, pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock): New prototypes. * sysdeps/htl/pthreadP.h (__pthread_cond_clockwait): New prototype. * htl/Versions (GLIBC_2.32): Add pthread_cond_clockwait, pthread_mutex_clocklock, pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock, pthread_tryjoin_np, pthread_timedjoin_np, pthread_clockjoin_np. * sysdeps/mach/hurd/i386/libpthread.abilist (pthread_clockjoin_np, pthread_cond_clockwait, pthread_mutex_clocklock, pthread_rwlock_clockrdlock, pthread_rwlock_clockwrlock, pthread_timedjoin_np, pthread_tryjoin_np): New functions. * nptl/tst-abstime.c, nptl/tst-join10.c, nptl/tst-join11.c, nptl/tst-join12.c, nptl/tst-join13.c, nptl/tst-join14.c, nptl/tst-join2.c, nptl/tst-join3.c, nptl/tst-join8.c, nptl/tst-join9.c, nptl/tst-mutex-errorcheck.c, nptl/tst-pthread-mutexattr.c, nptl/tst-mutex11.c, nptl/tst-mutex5.c, nptl/tst-mutex7.c, nptl/tst-mutex7robus.c, nptl/tst-mutex9.c, nptl/tst-rwlock12.c, nptl/tst-rwlock14.c: Move to sysdeps/pthread. * sysdeps/pthread/tst-mutex8.c: Move back to nptl. * nptl/Makefile (tests): Move tst-mutex5, tst-mutex7, tst-mutex7robust, tst-mutex9, tst-mutex11, tst-rwlock12, tst-rwlock14, tst-join2, tst-join3, tst-join8, tst-join9 tst-join10, tst-join11, tst-join12, tst-join13, tst-join14, tst-abstime, tst-mutex-errorcheck, tst-pthread-mutexattr to ... * sysdeps/pthread/Makefile (tests): ... here.
* elf: Turn _dl_printf, _dl_error_printf, _dl_fatal_printf into functionsFlorian Weimer2020-05-251-0/+1
| | | | | | | | | | | | | | This change makes it easier to set a breakpoint on these calls. This also addresses the issue that including <ldsodefs.h> without <unistd.h> does not result usable _dl_*printf macros because of the use of the STD*_FILENO macros there. (The private symbol for _dl_fatal_printf will go away again once the exception handling implementation is unified between libc and ld.so.) Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Remove NO_CTORS_DTORS_SECTIONS macroFlorian Weimer2020-05-181-5/+0
| | | | | | | | | | | This was originally added to support binutils older than version 2.22: <https://sourceware.org/ml/libc-alpha/2010-12/msg00051.html> Since 2.22 is older than the minimum required binutils version for building glibc, we no longer need this. (The changes do not impact the statically linked startup code.)
* y2038: hurd: Provide __clock_gettime64 functionLukasz Majewski2020-05-051-0/+14
| | | | | | | | | | | For Linux glibc ports the __TIMESIZE == 64 ensures proper aliasing for __clock_gettime64 (to __clock_gettime). When __TIMESIZE != 64 (like ARM32, PPC) the glibc expects separate definition of the __clock_gettime64. The HURD port only provides __clock_gettime, so this patch adds __clock_gettime64 as a tiny wrapper on it. Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
* elf: Implement __libc_early_initFlorian Weimer2020-04-241-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This function is defined in libc.so, and the dynamic loader calls right after relocation has been finished, before any ELF constructors or the preinit function is invoked. It is also used in the static build for initializing parts of the static libc. To locate __libc_early_init, a direct symbol lookup function is used, _dl_lookup_direct. It does not search the entire symbol scope and consults merely a single link map. This function could also be used to implement lookups in the vDSO (as an optimization). A per-namespace variable (libc_map) is added for locating libc.so, to avoid repeated traversals of the search scope. It is similar to GL(dl_initfirst). An alternative would have been to thread a context argument from _dl_open down to _dl_map_object_from_fd (where libc.so is identified). This could have avoided the global variable, but the change would be larger as a result. It would not have been possible to use this to replace GL(dl_initfirst) because that global variable is used to pass the function pointer past the stack switch from dl_main to the main program. Replacing that requires adding a new argument to _dl_init, which in turn needs changes to the architecture-specific libc.so startup code written in assembler. __libc_early_init should not be used to replace _dl_var_init (as it exists today on some architectures). Instead, _dl_lookup_direct should be used to look up a new variable symbol in libc.so, and that should then be initialized from the dynamic loader, immediately after the object has been loaded in _dl_map_object_from_fd (before relocation is run). This way, more IFUNC resolvers which depend on these variables will work. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* hurd: add mach_print functionSamuel Thibault2020-04-141-0/+1
| | | | | * mach/Versions (GLIBC_2.32): Add mach_print. * sysdeps/mach/hurd/i386/libc.abilist (GLIBC_2.32): Add mach_print.
* posix: Remove posix waitidAdhemerval Zanella2020-02-271-0/+106
| | | | | | | | | | | | | | | | The POSIX waitid implementation is problematic in some ways: - It emulates using waitpid, which default implementation calls wait4 and wait4 returns ENOSYS as default. - Also by using waitpid it does not allod support the WNOWAIT, WEXITED, WSTOPPED, or WCONTINUED flag. With current POSIX specification the flags are no longer marked as optional. Also due BZ#23091 Hurd still uses the implementation, so it is moved to as a Hurd arch-specific folder (with some minor cleanups). Checked against a i686-gnu (run-built-tests=no)
* <fd_to_filename.h>: Add type safety and port to HurdFlorian Weimer2020-02-181-0/+19
| | | | | | | | | The new type struct fd_to_filename makes the allocation of the backing storage explicit. Hurd uses /dev/fd, not /proc/self/fd. Co-Authored-By: Paul Eggert <eggert@cs.ucla.edu>
* x86: Avoid single-argument _Static_assert in <tls.h>Florian Weimer2020-02-171-8/+12
| | | | | Older GCC versions do not support this extension. Fixes commit f1bdee61797 ("x86 tls: Use _Static_assert for TLS access size assertion").
* x86 tls: Use _Static_assert for TLS access size assertionSamuel Thibault2020-02-171-26/+20
|
* pthread: Move robust mutex tests from nptl to sysdeps/pthreadSamuel Thibault2020-02-161-5/+11
| | | | | tst-robust8.c prints some mutex internals for nptl debugging, this needed to be made conditioned by getting built with nptl.
* htl: Remove stub warning for pthread_mutexattr_setpsharedSamuel Thibault2020-02-161-1/+0
| | | | It actually is implemented.
* htl: Add missing functions and defines for robust mutexesSamuel Thibault2020-02-161-0/+6
|
* htl: Only check pthread_self coherency when DEBUG is setSamuel Thibault2020-02-151-0/+4
| | | | | htl has been widely tested for a long time now with this coherency checked successfully.
* hurd: Add THREAD_GET/SETMEM/_NCSamuel Thibault2020-02-151-0/+108
| | | | Store them in the TCB, and use them for accessing _hurd_sigstate.
* hurd tls: update comment about fields at the end of tcbheadSamuel Thibault2020-02-151-2/+2
|
* ld.so: Do not export free/calloc/malloc/realloc functions [BZ #25486]Florian Weimer2020-02-152-10/+0
| | | | | | | | | | | | | | | | | | | Exporting functions and relying on symbol interposition from libc.so makes the choice of implementation dependent on DT_NEEDED order, which is not what some compiler drivers expect. This commit replaces one magic mechanism (symbol interposition) with another one (preprocessor-/compiler-based redirection). This makes the hand-over from the minimal malloc to the full malloc more explicit. Removing the ABI symbols is backwards-compatible because libc.so is always in scope, and the dynamic loader will find the malloc-related symbols there since commit f0b2132b35248c1f4a80f62a2c38cddcc802aa8c ("ld.so: Support moving versioned symbols between sonames [BZ #24741]"). Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* io: Implement lchmod using fchmodat [BZ #14578]Florian Weimer2020-02-121-0/+1
|
* htl C11 threads: Avoid pthread_ symbols visibility in static librarySamuel Thibault2020-02-107-10/+6
|
* hurd: Add __pthread_spin_wait and use itSamuel Thibault2020-02-112-3/+12
| | | | | | | | | 900778283ac3 ("htl: make pthread_spin_lock really spin") made pthread_spin_lock really spin and not block, but the current users of __pthread_spin_lock were assuming that it blocks, i.e. they use it as a lightweight mutex fitting in just one int. __pthread_spin_wait provides that support back.
* pthread: Move most barrier tests from nptl to sysdeps/pthreadSamuel Thibault2020-02-101-0/+1
| | | | So they can be checked with htl too.
* pthread: Move most sem tests from nptl to sysdeps/pthreadSamuel Thibault2020-02-101-0/+9
| | | | So they can be checked with htl too.
* htl: Make sem_wait/sem_timedwait interruptibleSamuel Thibault2020-02-104-3/+33
|
* htl: Add support for semaphore maximum valueSamuel Thibault2020-02-101-0/+3
|
* hurd: Make nanosleep a cancellation pointSamuel Thibault2020-02-101-0/+5
|
* htl: Add support for libc cancellation pointsSamuel Thibault2020-02-101-2/+18
|
* htl: XFAIL rwlock tests which need pshared supportSamuel Thibault2020-02-091-0/+2
|
* pthread: Move most cond tests from nptl to sysdeps/pthreadSamuel Thibault2020-02-091-0/+11
| | | | So they can be checked with htl too.
* htl: Report missing mutex lock on pthread_cond_*waitSamuel Thibault2020-02-091-0/+51
|
* htl: Fix default guard sizeSamuel Thibault2020-02-091-0/+4
| | | | | When it is not hardcoded by the architecture with PAGESIZE, we need to use the dynamic values from __vm_page_size.
* pthread: Move most mutex tests from nptl to sysdeps/pthreadSamuel Thibault2020-02-091-0/+5
| | | | | | So they can be checked with htl too. XFAIL tst-mutex4, for which support is still missing in htl.
* htl: make pthread_spin_lock really spinSamuel Thibault2020-02-091-1/+1
| | | | | __spin_lock would actually use gsync_wait to block, which is not what pthread_spin_lock is about.
* htl: Fix calling pthread_exit in the child of a forkSamuel Thibault2020-02-091-0/+9
| | | | | We need to reset the threads counter, otherwise pthread_exit() would not call exit(0).
* C11 threads: Move implementation to sysdeps/pthreadSamuel Thibault2020-02-095-0/+53
| | | | | | | so it gets shared by nptl and htl. Also add htl versions of thrd_current and thrd_yield. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* htl: Rename _pthread_mutex_init/destroy to __pthread_mutex_init/destroySamuel Thibault2020-02-092-5/+5
|
* htl: Move internal mutex/rwlock symbols to GLIBC_PRIVATESamuel Thibault2020-02-091-7/+0
| | | | | Their prototypes have never been made public, and they are not used outside libc (checked on the whole Debian archive)
* htl: Remove duplicate filesSamuel Thibault2020-02-092-56/+0
| | | | The generic versions have the same content.
* htl: Remove unused filesSamuel Thibault2020-02-091-1/+0
| | | | These have never been used.
* y2038: Define __suseconds64_t type to be used with struct __timeval64Lukasz Majewski2020-02-071-0/+1
| | | | | | | | | | | | | | | The __suseconds64_t type is supposed to be the 64 bit type across all architectures. It would be mostly used internally in the glibc - however, when passed to Linux kernel (very unlikely), if necessary, it shall be converted to 32 bit type (i.e. __suseconds_t) Build tests: ./src/scripts/build-many-glibcs.py glibcs Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* htl: Add internal version of __pthread_mutex_timedlockSamuel Thibault2020-01-131-1/+2
| | | | The C11 threads implementation will need it.
* htl: Avoid exposing unixoid functionsSamuel Thibault2020-01-132-1/+4
| | | | C11 threads should not expose them.
* htl: Add type sizes in bits/pthreadtypes-arch.h and check themSamuel Thibault2020-01-132-0/+4
|
* hurd: Fix message reception for timer_threadSamuel Thibault2020-01-051-1/+2
| | | | | | | Without a proper size, we get MACH_RCV_TOO_LARGE instead of MACH_MSG_SUCCESS. * sysdeps/mach/hurd/setitimer.c (timer_thread): Add return_code_type field to received message, and set the receive size in __mach_msg call.
* htl: Add __errno_location and __h_errno_locationSamuel Thibault2020-01-041-0/+2
| | | | | | | | As explained on https://sourceware.org/ml/libc-alpha/2020-01/msg00049.html the presence of __errno_location in libpthread.so on GNU/Linux makes libpthread getting linked in for libstdc++. This aligns on that behavior, to avoid issues that only GNU/Hurd would get.