Paul Eggert [Mon, 24 Jun 2019 18:54:00 +0000 (11:54 -0700)]
unistd: stddef.h and sys/types.h namespace cleanup
* lib/unistd.in.h [__GLIBC__]:
Do not include stddef.h or sys/types.h.
[!__GLIBC__]: Always include sys/types.h, since unistd.h is
supposed to declare off_t and ssize_t. Problem found when looking
at why @GNULIB_PWRITE@ was different from the newly-added
@GNULIB_COPY_FILE_RANGE@ with respect to ssize_t.
Akim Demaille [Sat, 22 Jun 2019 06:37:31 +0000 (08:37 +0200)]
argmatch: put all the docs member last.
Reported by Bruno Haible.
* lib/argmatch.h (argmatch_##Name##_group_type): Put the args
member before the docs done.
* doc/argmatch.texi, tests/test-argmatch.c: Adjust.
Bruno Haible [Fri, 21 Jun 2019 02:35:41 +0000 (04:35 +0200)]
threads-h: Define 'thread_local' if and only it actually works.
* m4/threads.m4 (gl_THREAD_LOCAL_DEFINITION): New macro.
(gl_THREADS_H): Define _Thread_local to __thread also for ARM C, IBM C,
Oracle Solaris Studio C. Compile a simple program, to see whether
_Thread_local basically works. Set HAVE_THREAD_LOCAL and LIBTHREADLOCAL.
(gl_THREADS_H_DEFAULTS): Initialize HAVE_THREAD_LOCAL.
* lib/threads.in.h (thread_local): Undefine if it does not work.
* modules/threads-h (Makefile.am): Substitute HAVE_THREAD_LOCAL.
(Link): Mention LIBTHREADLOCAL.
* tests/test-threads.c: Don't check that thread_local is defined.
* tests/test-thread_local.c: New file.
* modules/threads-h-tests (Files): Add it and macros.h.
(Depends-on): Add thrd and stdint.
(configure.ac): Test whether 'alarm' is declared.
(Makefile.am): Arrange to build and link test-thread_local.
* doc/posix-headers/threads.texi: Mention the platforms that don't
support 'thread_local'.
Bruno Haible [Thu, 20 Jun 2019 02:38:06 +0000 (04:38 +0200)]
mtx: Add tests.
* tests/test-mtx.c: New file, based on tests/test-lock.c.
* tests/test-call_once.c: New file, based on tests/test-once.c.
* modules/mtx-tests: New file.
Bruno Haible [Thu, 20 Jun 2019 02:37:23 +0000 (04:37 +0200)]
thrd: Add tests.
* tests/test-thrd_create.c: New file, based on
tests/test-thread_create.c.
* tests/test-thrd_current.c: New file, based on
tests/test-thread_self.c.
* modules/thrd-tests: New file.
Bruno Haible [Thu, 20 Jun 2019 02:26:31 +0000 (04:26 +0200)]
thrd: New module.
* lib/thrd.c: New file.
* m4/thrd.m4: New file.
* modules/thrd: New file.
* doc/posix-functions/thrd_current.texi: Mention the new module.
* doc/posix-functions/thrd_detach.texi: Likewise.
* doc/posix-functions/thrd_equal.texi: Likewise.
* doc/posix-functions/thrd_exit.texi: Likewise.
* doc/posix-functions/thrd_sleep.texi: Likewise.
* doc/posix-functions/thrd_yield.texi: Likewise.
* doc/posix-functions/thrd_create.texi: Mention the new module and the
AIX bug.
* doc/posix-functions/thrd_join.texi: Mention the new module and the
AIX and Solaris bugs.
Bruno Haible [Thu, 20 Jun 2019 02:17:30 +0000 (04:17 +0200)]
threads-h: New module.
* lib/threads.in.h: New file.
* m4/threads.m4: New file.
* m4/yield.m4 (gl_YIELD): Update comment.
* modules/threads-h: New file.
* modules/yields (configure.ac): Use AC_REQUIRE.
* doc/posix-headers/threads.texi: Mention the new module and the AIX
bugs.
Bruno Haible [Thu, 20 Jun 2019 02:15:30 +0000 (04:15 +0200)]
windows-tls: New module.
* lib/windows-tls.h: New file, based on lib/glthread/tls.h.
* lib/windows-tls.c: New file, based on lib/glthread/tls.h.
* lib/glthread/tls.h: Include windows-tls.h.
(gl_tls_key_t): Define using glwthread_tls_key_t.
* modules/windows-tls: New file.
* modules/tls (Depends-on): Add windows-tls.
Bruno Haible [Thu, 20 Jun 2019 02:12:41 +0000 (04:12 +0200)]
windows-timedrecmutex: New module.
* lib/windows-timedrecmutex.h: New file, based on windows-recmutex.h.
* lib/windows-timedrecmutex.c: New file, based on windows-recmutex.c.
* modules/windows-timedrecmutex: New file.
Bruno Haible [Thu, 20 Jun 2019 02:11:57 +0000 (04:11 +0200)]
windows-timedmutex: New module.
* lib/windows-timedmutex.h: New file, based on windows-mutex.h.
* lib/windows-timedmutex.c: New file, based on windows-mutex.c.
* modules/windows-timedmutex: New file.
Bruno Haible [Thu, 20 Jun 2019 02:08:16 +0000 (04:08 +0200)]
windows-mutex: New module.
* lib/windows-mutex.h: New file, extracted from lib/glthread/lock.h.
* lib/windows-mutex.c: New file, extracted from lib/glthread/lock.c.
* lib/windows-spinlock.h: New file, extracted from lib/glthread/lock.h.
* lib/glthread/lock.h: Include windows-spinlock.h, windows-mutex.h.
(gl_spinlock_t): Remove type.
(gl_lock_t): Define using glwthread_mutex_t.
(gl_lock_initializer): Define using GLWTHREAD_MUTEX_INIT.
(glthread_lock_init): Define using glwthread_mutex_init.
(glthread_lock_lock): Define using glwthread_mutex_lock.
(glthread_lock_unlock): Define using glwthread_mutex_unlock.
(glthread_lock_destroy): Define using glwthread_mutex_destroy.
(glthread_lock_init_func, glthread_lock_lock_func,
glthread_lock_unlock_func, glthread_lock_destroy_func): Remove
declarations.
Use glwthread_spinlock_t instead of gl_spinlock_t.
(gl_rwlock_initializer, gl_recursive_lock_initializer): Define using
GLWTHREAD_SPINLOCK_INIT.
* lib/glthread/lock.c (glthread_lock_init_func, glthread_lock_lock_func,
glthread_lock_unlock_func, glthread_lock_destroy_func): Remove
functions.
* lib/glthread/cond.h: Use glwthread_spinlock_t instead of
gl_spinlock_t.
* modules/windows-mutex: New file.
* modules/lock (Depends-on): Add windows-mutex.
Bruno Haible [Thu, 20 Jun 2019 02:04:08 +0000 (04:04 +0200)]
lock, cond: Avoid possible counter wraparound on Windows.
* lib/glthread/lock.c (glthread_lock_lock_func): Leave the 'started'
field of the guard unchanged if it was already positive.
(glthread_rwlock_rdlock_func): Likewise.
(glthread_rwlock_wrlock_func): Likewise.
(glthread_recursive_lock_lock_func): Likewise.
* lib/glthread/cond.c (glthread_cond_wait_func): Likewise.
(glthread_cond_timedwait_func): Likewise.
Bruno Haible [Thu, 20 Jun 2019 02:02:52 +0000 (04:02 +0200)]
pthread_mutex_timedlock: New module.
* lib/pthread.in.h (pthread_mutex_timedlock): New dummy function and
new declaration.
* lib/pthread_mutex_timedlock.c: New file.
* m4/pthread_mutex_timedlock.m4: New file.
* m4/pthread.m4 (gl_PTHREAD_CHECK): Don't call AC_LIBOBJ here. Test
whether pthread_mutex_timedlock is declared.
(gl_PTHREAD_MODULE_INDICATOR): New macro.
(gl_PTHREAD_DEFAULTS): Initialize GNULIB_PTHREAD_MUTEX_TIMEDLOCK,
HAVE_PTHREAD_MUTEX_TIMEDLOCK.
* modules/pthread (configure.ac): Call AC_LIBOBJ here.
(Makefile.am): Substitute GNULIB_PTHREAD_MUTEX_TIMEDLOCK,
HAVE_PTHREAD_MUTEX_TIMEDLOCK.
* modules/pthread_mutex_timedlock: New file.
* doc/posix-functions/pthread_mutex_timedlock.texi: Mention the new
module.
* m4/threadlib.m4 (gl_THREADLIB_BODY): Test for <threads.h>.
* lib/glthread/thread.h (c11_threads_in_use): New macro.
(pthread_in_use, pth_in_use, thread_in_use): Use it.
* lib/glthread/lock.h (c11_threads_in_use): New macro.
(pthread_in_use, pth_in_use, thread_in_use): Use it.
* lib/glthread/cond.h (c11_threads_in_use): New macro.
(pthread_in_use, pth_in_use, thread_in_use): Use it.
* lib/glthread/tls.h (c11_threads_in_use): New macro.
(pthread_in_use, pth_in_use, thread_in_use): Use it.
Bruno Haible [Thu, 20 Jun 2019 01:53:51 +0000 (03:53 +0200)]
tls tests: Small improvements.
* tests/test-tls.c: Include <stdint.h>.
(worker_thread): Avoid gcc warning on 64-bit mingw.
(test_tls): Pass a different id to each thread.
* modules/tls-tests (Depends-on): Add stdint.
Bruno Haible [Wed, 19 Jun 2019 10:06:23 +0000 (12:06 +0200)]
Reorder pieces of header in perl scripts.
The desired order is
- Prologue part 1 (2 lines with #!)
- Program short description
- Copyright and license notice
- Written-by notice
- Program short description (optional)
- Program long description (optional)
- Prologue part 2
- Time stamp
- Code
Reported by Paul Eggert.
* build-aux/announce-gen: Reorder header.
* build-aux/gitlog-to-changelog: Likewise.
* build-aux/useless-if-before-free: Likewise.
* build-aux/prefix-gnulib-mk: Add copyright notice and short
description.
* build-aux/update-copyright: Likewise. Add short description. Bump
time-stamp-line-limit to 200.
Paul Eggert [Wed, 19 Jun 2019 00:41:46 +0000 (17:41 -0700)]
verify-tests: work around xlc bug
Problem reported by Bruno Haible in:
https://lists.gnu.org/r/bug-gnulib/2019-06/msg00049.html
* tests/test-verify.c (item): Move the arithmetic inside the
verify_expr, to avoid tickling a bug in IBM AIX xlc V12.1.
Bruno Haible [Sat, 15 Jun 2019 11:03:58 +0000 (13:03 +0200)]
Fix scripts to have valid executable format on Alpine Linux.
Reported by Tim Rühsen <tim.ruehsen@gmx.de>.
Idea by Paul Eggert.
* build-aux/useless-if-before-free: Use a prologue that starts with
'#!/bin/sh'.
* build-aux/announce-gen: Likewise.
* build-aux/gitlog-to-changelog: Likewise.
* build-aux/prefix-gnulib-mk: Likewise.
* build-aux/update-copyright: Likewise.
* tests/test-update-copyright.sh: Update test program accordingly.
Bruno Haible [Mon, 10 Jun 2019 14:51:51 +0000 (16:51 +0200)]
posix_spawn_file_actions_addchdir: Fix possible use-after-free bug.
* lib/spawn_int.h (struct __spawn_action): Remove 'const' from path.
* lib/spawn_faction_addchdir.c (posix_spawn_file_actions_addchdir): Make
a copy of the path argument.
* lib/spawn_faction_destroy.c (posix_spawn_file_actions_destroy): Free
it.
Bruno Haible [Mon, 10 Jun 2019 14:50:04 +0000 (16:50 +0200)]
posix_spawn_file_actions_addopen: Fix possible use-after-free bug.
Reported at <https://sourceware.org/bugzilla/show_bug.cgi?id=17048>.
* lib/spawn_int.h (struct __spawn_action): Remove 'const' from path.
* lib/spawn_faction_addopen.c (posix_spawn_file_actions_addopen): Make
a copy of the path argument.
* lib/spawn_faction_destroy.c (posix_spawn_file_actions_destroy): Free
it.
Bruno Haible [Mon, 10 Jun 2019 14:17:35 +0000 (16:17 +0200)]
posix_spawn_file_actions_addfchdir: Add tests.
* tests/test-posix_spawn_file_actions_addfchdir.c: New file.
* tests/test-posix_spawn5.c: New file.
* modules/posix_spawn_file_actions_addfchdir-tests: New file.
Bruno Haible [Mon, 10 Jun 2019 12:15:41 +0000 (14:15 +0200)]
doc: Update and improve documentation of glibc functions.
This is a series of commits that
- updates the documentation to the state of glibc 2.29,
- adds references to Linux man pages and glibc documentation,
- marks Linux specific functions as such.
These are the commits:
doc: Update after removal of crypt functions from glibc 2.28.
doc: Remove mention of function vm86 (does not exist on x86_64).
doc: Remove mention of functions that are gone from glibc.
doc: Mention that glibc no longer provides h_errno.
doc: Mention the availability of specific functions in glibc versions.
doc: Mention eaccess.
doc: Add references to Linux man pages.
doc: Add references to glibc documentation.
doc: Mention inotify_* functions.
doc: Mention ppoll.
doc: Mention sched_getcpu.
doc: Mention sync_file_range.
doc: Mention epoll_pwait.
doc: Mention eventfd, eventfd_read, eventfd_write.
doc: Mention signalfd.
doc: Mention timerfd_create, timerfd_gettime, timerfd_settime.
doc: Mention epoll_create1.
doc: Mention getauxval.
doc: Mention pthread_getattr_default_np, pthread_setattr_default_np.
doc: Mention nextdown, nextup.
doc: Mention more ISO TS 18661-1 <math.h> functions.
doc: Mention ISO TS 18661-1 <fenv.h> functions.
doc: Mention getrandom, getentropy.
doc: Mention strfromf, strfromd, strfroml.
doc: Mention preadv2, pwritev2.
doc: Mention copy_file_range.
doc: Mention memfd_create.
doc: Mention mlock2.
doc: Mention pkey_alloc, pkey_set, pkey_get, pkey_free, pkey_mprotect.
doc: Mention more ISO TS 18661-1 <math.h> functions.
doc: Mention renameat2.
doc: Mention statx.
doc: Mention the ISO C11 multithreading header and functions.
doc: Mention getcpu.
doc: Mention posix_spawn_file_actions_add[f]chdir_np.
doc: Some glibc functions also exist on IRIX 6.5 in 32-bit mode.
doc: Some glibc functions also exist on FreeBSD, AIX, HP-UX, Solaris 11.
doc: Some glibc functions also exist on FreeBSD, Solaris 11.
doc: Some glibc functions also exist on Solaris 11.
doc: Some glibc functions also exist on Solaris 11.4.
doc: Some glibc functions also exist on FreeBSD.
doc: Some glibc functions also exist on BeOS.
doc: Some glibc functions also exist on Haiku.
doc: Mark functions which exist only on Linux.
doc: Mark functions which exist only on Linux and illumos.
* doc/glibc-functions/posix_spawn_file_actions_addchdir_np.texi: New file.
* doc/glibc-functions/posix_spawn_file_actions_addfchdir_np.texi: New file.
* doc/gnulib.texi (Glibc spawn.h): New section.
Bruno Haible [Mon, 10 Jun 2019 12:08:42 +0000 (14:08 +0200)]
doc: Mention the ISO C11 multithreading header and functions.
* doc/posix-headers/threads.texi: New file.
* doc/posix-functions/call_once.texi: New file.
* doc/posix-functions/cnd_broadcast.texi: New file.
* doc/posix-functions/cnd_destroy.texi: New file.
* doc/posix-functions/cnd_init.texi: New file.
* doc/posix-functions/cnd_signal.texi: New file.
* doc/posix-functions/cnd_timedwait.texi: New file.
* doc/posix-functions/cnd_wait.texi: New file.
* doc/posix-functions/mtx_destroy.texi: New file.
* doc/posix-functions/mtx_init.texi: New file.
* doc/posix-functions/mtx_lock.texi: New file.
* doc/posix-functions/mtx_timedlock.texi: New file.
* doc/posix-functions/mtx_trylock.texi: New file.
* doc/posix-functions/mtx_unlock.texi: New file.
* doc/posix-functions/thrd_create.texi: New file.
* doc/posix-functions/thrd_current.texi: New file.
* doc/posix-functions/thrd_detach.texi: New file.
* doc/posix-functions/thrd_equal.texi: New file.
* doc/posix-functions/thrd_exit.texi: New file.
* doc/posix-functions/thrd_join.texi: New file.
* doc/posix-functions/thrd_sleep.texi: New file.
* doc/posix-functions/thrd_yield.texi: New file.
* doc/posix-functions/tss_create.texi: New file.
* doc/posix-functions/tss_delete.texi: New file.
* doc/posix-functions/tss_get.texi: New file.
* doc/posix-functions/tss_set.texi: New file.
* doc/gnulib.texi (Header File Substitutes): Include posix-headers/threads.texi.
(Function Substitutes): Include the new posix-functions/*.texi files.
Bruno Haible [Mon, 10 Jun 2019 12:08:39 +0000 (14:08 +0200)]
doc: Mention more ISO TS 18661-1 <math.h> functions.
* doc/posix-functions/fadd.texi: New file.
* doc/posix-functions/faddl.texi: New file.
* doc/posix-functions/daddl.texi: New file.
* doc/posix-functions/fsub.texi: New file.
* doc/posix-functions/fsubl.texi: New file.
* doc/posix-functions/dsubl.texi: New file.
* doc/posix-functions/fmul.texi: New file.
* doc/posix-functions/fmull.texi: New file.
* doc/posix-functions/dmull.texi: New file.
* doc/posix-functions/fdiv.texi: New file.
* doc/posix-functions/fdivl.texi: New file.
* doc/posix-functions/ddivl.texi: New file.
* doc/gnulib.texi (Function Substitutes): Include them.
* doc/glibc-functions/pkey_alloc.texi: New file.
* doc/glibc-functions/pkey_set.texi: New file.
* doc/glibc-functions/pkey_get.texi: New file.
* doc/glibc-functions/pkey_free.texi: New file.
* doc/glibc-functions/pkey_mprotect.texi: New file.
* doc/gnulib.texi (Glibc sys/mman.h): Include them.
Bruno Haible [Mon, 10 Jun 2019 12:08:32 +0000 (14:08 +0200)]
doc: Mention strfromf, strfromd, strfroml.
* doc/posix-functions/strfromf.texi: New file.
* doc/posix-functions/strfromd.texi: New file.
* doc/posix-functions/strfroml.texi: New file.
* doc/gnulib.texi (Function Substitutes): Include them.
Bruno Haible [Mon, 10 Jun 2019 12:08:30 +0000 (14:08 +0200)]
doc: Mention ISO TS 18661-1 <fenv.h> functions.
* posix-functions/fesetexcept.texi: New file.
* posix-functions/fetestexceptflag.texi: New file.
* posix-functions/fegetmode.texi: New file.
* posix-functions/fesetmode.texi: New file.
* doc/gnulib.texi (Function Substitutes): Include them.
Bruno Haible [Mon, 10 Jun 2019 12:08:29 +0000 (14:08 +0200)]
doc: Mention more ISO TS 18661-1 <math.h> functions.
* doc/posix-functions/roundeven.texi: New file.
* doc/posix-functions/roundevenf.texi: New file.
* doc/posix-functions/roundevenl.texi: New file.
* doc/posix-functions/fromfp.texi: New file.
* doc/posix-functions/fromfpf.texi: New file.
* doc/posix-functions/fromfpl.texi: New file.
* doc/posix-functions/ufromfp.texi: New file.
* doc/posix-functions/ufromfpf.texi: New file.
* doc/posix-functions/ufromfpl.texi: New file.
* doc/posix-functions/fromfpx.texi: New file.
* doc/posix-functions/fromfpxf.texi: New file.
* doc/posix-functions/fromfpxl.texi: New file.
* doc/posix-functions/ufromfpx.texi: New file.
* doc/posix-functions/ufromfpxf.texi: New file.
* doc/posix-functions/ufromfpxl.texi: New file.
* doc/posix-functions/llogb.texi: New file.
* doc/posix-functions/llogbf.texi: New file.
* doc/posix-functions/llogbl.texi: New file.
* doc/posix-functions/fmaxmag.texi: New file.
* doc/posix-functions/fmaxmagf.texi: New file.
* doc/posix-functions/fmaxmagl.texi: New file.
* doc/posix-functions/fminmag.texi: New file.
* doc/posix-functions/fminmagf.texi: New file.
* doc/posix-functions/fminmagl.texi: New file.
* doc/posix-functions/totalorder.texi: New file.
* doc/posix-functions/totalorderf.texi: New file.
* doc/posix-functions/totalorderl.texi: New file.
* doc/posix-functions/totalordermag.texi: New file.
* doc/posix-functions/totalordermagf.texi: New file.
* doc/posix-functions/totalordermagl.texi: New file.
* doc/posix-functions/canonicalize.texi: New file.
* doc/posix-functions/canonicalizef.texi: New file.
* doc/posix-functions/canonicalizel.texi: New file.
* doc/posix-functions/getpayload.texi: New file.
* doc/posix-functions/getpayloadf.texi: New file.
* doc/posix-functions/getpayloadl.texi: New file.
* doc/posix-functions/setpayload.texi: New file.
* doc/posix-functions/setpayloadf.texi: New file.
* doc/posix-functions/setpayloadl.texi: New file.
* doc/posix-functions/setpayloadsig.texi: New file.
* doc/posix-functions/setpayloadsigf.texi: New file.
* doc/posix-functions/setpayloadsigl.texi: New file.
* doc/gnulib.texi (Function Substitutes): Include them.
Bruno Haible [Mon, 10 Jun 2019 12:08:28 +0000 (14:08 +0200)]
doc: Mention nextdown, nextup.
* doc/posix-functions/nextdown.texi: New file.
* doc/posix-functions/nextdownf.texi: New file.
* doc/posix-functions/nextdownl.texi: New file.
* doc/posix-functions/nextup.texi: New file.
* doc/posix-functions/nextupf.texi: New file.
* doc/posix-functions/nextupl.texi: New file.
* doc/gnulib.texi (Function Substitutes): Include them.
* doc/glibc-functions/pthread_getattr_default_np.texi: New file.
* doc/glibc-functions/pthread_setattr_default_np.texi: New file.
* doc/gnulib.texi (Glibc pthread.h): Include them.
* doc/glibc-functions/timerfd_create.texi: New file.
* doc/glibc-functions/timerfd_gettime.texi: New file.
* doc/glibc-functions/timerfd_settime.texi: New file.
* doc/gnulib.texi (Glibc sys/timerfd.h): New section.
* doc/glibc-functions/eventfd.texi: New file.
* doc/glibc-functions/eventfd_read.texi: New file.
* doc/glibc-functions/eventfd_write.texi: New file.
* doc/gnulib.texi (Glibc sys/eventfd.h): New section.