]> Savannah Git Hosting - gnulib.git/log
gnulib.git
3 years agoc-stack: Support catching stack overflow on most platforms without libsigsegv.
Bruno Haible [Mon, 17 May 2021 01:36:35 +0000 (03:36 +0200)]
c-stack: Support catching stack overflow on most platforms without libsigsegv.

* lib/c-stack.c: Remove all Solaris-specific code. Include <sigsegv.h>
always.
* m4/c-stack.m4: Remove all Solaris-specific code.
(gl_C_STACK): Test $with_libsigsegv from module 'sigsegv'.
* modules/c-stack (Files): Remove m4/libsigsegv.m4.
(Depends-on): Add sigsegv. Remove havelib, intprops, inttypes, mempcpy,
sigaction, stdbool.

3 years agosigsegv, c-stack: Avoid compilation error with glibc >= 2.34.
Bruno Haible [Mon, 17 May 2021 00:13:12 +0000 (02:13 +0200)]
sigsegv, c-stack: Avoid compilation error with glibc >= 2.34.

* lib/sigsegv.in.h (SIGSTKSZ): On glibc systems, redefine to a suitable
constant.
* m4/sigaltstack.m4 (SV_SIGALTSTACK): Likewise.
* m4/c-stack.m4 (AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC): Likewise.

3 years agosigsegv: Add tests.
Bruno Haible [Sun, 16 May 2021 16:29:48 +0000 (18:29 +0200)]
sigsegv: Add tests.

* tests/test-sigsegv-catch-segv1.c: New file, from GNU libsigsegv with
modifications.
* tests/test-sigsegv-catch-segv2.c: Likewise.
* tests/test-sigsegv-catch-stackoverflow1.c: Likewise.
* tests/test-sigsegv-catch-stackoverflow2.c: Likewise.
* tests/altstack-util.h: Likewise.
* tests/mmap-anon-util.h: Likewise.
* modules/sigsegv-tests: New file.

3 years agosigsegv: New module.
Bruno Haible [Sun, 16 May 2021 13:20:12 +0000 (15:20 +0200)]
sigsegv: New module.

* lib/sigsegv.in.h: New file, from GNU libsigsegv with modifications.
* lib/sigsegv.c: Likewise.
* lib/stackvma.h: Likewise.
* lib/stackvma.c: Likewise.
* m4/sigaltstack.m4: Likewise.
* m4/stack-direction.m4: Likewise.
* modules/sigsegv: New file.

3 years agorealloc-gnu: avoid glibc MALLOC_CHECK_ issue
Pádraig Brady [Sat, 15 May 2021 16:50:33 +0000 (17:50 +0100)]
realloc-gnu: avoid glibc MALLOC_CHECK_ issue

* tests/test-realloc-gnu.c (main): if MALLOC_CHECK_ env var
is set then don't check ENOMEM is returned from realloc().
See https://sourceware.org/bugzilla/show_bug.cgi?id=27870
Note it doesn't suffice to unsetenv() this var within the program,
as the hooks have already been set up at that stage.

3 years agoc-stack: work around Solaris 11 bugs
Paul Eggert [Sat, 15 May 2021 05:48:20 +0000 (22:48 -0700)]
c-stack: work around Solaris 11 bugs

Problem reported by Bruno Haible in:
https://lists.gnu.org/r/bug-gnulib/2021-05/msg00062.html
* lib/c-stack.c: Always include sigsegv.h if HAVE_LIBSIGSEGV.
(USE_LIBSIGSEGV): Do not use libsigsegv if the kernel
has the si_addr bug and libsigsegv is too old to work
around it.
(segv_handler) [!USE_LIBSIGSEGV]: Do not trust si_addr
if BOGUS_SI_ADDR_UPON_STACK_OVERFLOW.
* m4/c-stack.m4 (AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC):
Define BOGUS_SI_ADDR_UPON_STACK_OVERFLOW on Solaris 2.11 SPARC.
And do not define HAVE_XSI_STACK_OVERFLOW_HEURISTIC.

3 years agofcntl tests: Avoid failure in MacPorts.
Bruno Haible [Fri, 14 May 2021 21:50:52 +0000 (23:50 +0200)]
fcntl tests: Avoid failure in MacPorts.

Reported by Nicholas Gaya <nicholasgaya@gmail.com> in
<https://lists.gnu.org/archive/html/bug-gnulib/2021-05/msg00014.html>.

* tests/test-fcntl.c (main): Close fd 10 before assuming that it is
closed.
* tests/test-execute-main.c: Update comment.

3 years agolinked-list-unportable-test: New module.
Bruno Haible [Fri, 14 May 2021 21:32:08 +0000 (23:32 +0200)]
linked-list-unportable-test: New module.

* modules/linked-list-unportable-tests: New file, based on
modules/linked-list-tests.
* modules/linked-list-tests: Remove the unportable tests from here.
Depend on linked-list-unportable-tests.

3 years agovalgrind-tests: Doc fix and introduce AM_VALGRINDFLAGS.
Simon Josefsson [Fri, 14 May 2021 17:23:23 +0000 (19:23 +0200)]
valgrind-tests: Doc fix and introduce AM_VALGRINDFLAGS.

* doc/valgrind-tests.texi (Using valgrind automatically): Clarify
when the parallel vs serial test harness is used, suggested by
Bruno Haible <bruno@clisp.org>.
* m4/valgrind-tests.m4: Add VALGRIND_PROGRAM and AM_VALGRINDFLAGS.

3 years agomalloc-gnu, realloc-gnu, calloc-gnu: Ensure errno gets set to ENOMEM.
Bruno Haible [Fri, 14 May 2021 17:04:05 +0000 (19:04 +0200)]
malloc-gnu, realloc-gnu, calloc-gnu: Ensure errno gets set to ENOMEM.

* m4/malloc.m4 (gl_CHECK_MALLOC_POSIX): Set gl_cv_func_malloc_posix to
'no' also on Solaris.

3 years agoDEPENDENCIES: Mention the requirement for 'join'.
Bruno Haible [Fri, 14 May 2021 16:05:22 +0000 (18:05 +0200)]
DEPENDENCIES: Mention the requirement for 'join'.

Reported by Simon Josefsson <simon@josefsson.org> in
<https://lists.gnu.org/archive/html/bug-gnulib/2021-05/msg00047.html>.

* DEPENDENCIES: Mention 'join' among the core POSIX utilities.

3 years ago*alloc-gnu tests: Use ASSERT macro.
Bruno Haible [Fri, 14 May 2021 13:35:24 +0000 (15:35 +0200)]
*alloc-gnu tests: Use ASSERT macro.

* tests/test-malloc-gnu.c: Include "macros.h".
(main): Use ASSERT.
* tests/test-calloc-gnu.c: Include "macros.h".
(main): Use ASSERT.
* tests/test-realloc-gnu.c: Include "macros.h".
(main): Use ASSERT.
* tests/test-reallocarray.c: Include "macros.h".
(main): Use ASSERT.
* modules/malloc-gnu-tests (Files): Add tests/macros.h.
* modules/calloc-gnu-tests (Files): Likewise.
* modules/realloc-gnu-tests (Files): Likewise.
* modules/reallocarray-tests (Files): Likewise.

3 years agovalgrind-tests: Fix 'sh: yes: unknown operand' error.
Simon Josefsson [Fri, 14 May 2021 13:22:02 +0000 (15:22 +0200)]
valgrind-tests: Fix 'sh: yes: unknown operand' error.

* m4/valgrind-tests.m4: Protect variable usage.

3 years agovalgrind-tests: Fix LOG_VALGRIND when valgrind is missing.
Simon Josefsson [Fri, 14 May 2021 13:03:25 +0000 (15:03 +0200)]
valgrind-tests: Fix LOG_VALGRIND when valgrind is missing.

* m4/valgrind-tests.m4: Clear all variables when missing.

3 years agovalgrind-tests: Better option handling.
Simon Josefsson [Fri, 14 May 2021 12:17:20 +0000 (14:17 +0200)]
valgrind-tests: Better option handling.

* m4/valgrind-tests.m4: Support new variables VALGRINDFLAGS and
DEFAULT_VALGRINDFLAGS.
* doc/valgrind-tests.texi (Running self-tests under valgrind): Improve.

3 years agowindows-spawn: Don't assume that UNICODE is not defined.
Markus Mützel [Thu, 6 May 2021 13:20:30 +0000 (15:20 +0200)]
windows-spawn: Don't assume that UNICODE is not defined.

* lib/windows-spawn.h (compose_handles_block): Use type STARTUPINFOA.

3 years agogetrandom: Produce a better error code.
Bruno Haible [Thu, 13 May 2021 19:33:55 +0000 (21:33 +0200)]
getrandom: Produce a better error code.

Reported by Paul Eggert in
<https://lists.gnu.org/archive/html/bug-gnulib/2021-05/msg00025.html>.

* lib/getrandom.c (getrandom): When open() fails with an error that does
not indicate the absence of the file, fail with that error code, not
with ENOSYS.

3 years agofstatat: Document a glibc 2.7 bug.
Bruno Haible [Thu, 13 May 2021 19:23:09 +0000 (21:23 +0200)]
fstatat: Document a glibc 2.7 bug.

* doc/posix-functions/fstatat.texi: Document an old glibc 2.7 bug.

3 years agoposix_spawn, posix_spawnp: Fix build error on Minix 3.3.
Bruno Haible [Thu, 13 May 2021 13:48:38 +0000 (15:48 +0200)]
posix_spawn, posix_spawnp: Fix build error on Minix 3.3.

* m4/posix_spawn.m4 (gl_POSIX_SPAWN_BODY): If posix_spawn does not exist
but is declared, set REPLACE_POSIX_SPAWN.
* doc/posix-functions/posix_spawn.texi: Update platforms list.
* doc/posix-functions/posix_spawnp.texi: Likewise.

3 years agoreallocarray tests: Avoid test failure on NetBSD.
Bruno Haible [Thu, 13 May 2021 10:11:04 +0000 (12:11 +0200)]
reallocarray tests: Avoid test failure on NetBSD.

* tests/test-reallocarray.c (main): Accept EOVERFLOW error code.

3 years agognulib-tool: Fail properly if the 'join' program is not found.
Bruno Haible [Wed, 12 May 2021 10:35:21 +0000 (12:35 +0200)]
gnulib-tool: Fail properly if the 'join' program is not found.

Reported by Simon Josefsson <simon@josefsson.org> in
<https://lists.gnu.org/archive/html/bug-gnulib/2021-05/msg00029.html>.

* gnulib-tool: Bail out early of the 'join' program is not found.

3 years ago{realloc,calloc}-gnu: Fix autoconf macro (regression 2021-04-18).
Bruno Haible [Sun, 9 May 2021 22:59:21 +0000 (00:59 +0200)]
{realloc,calloc}-gnu: Fix autoconf macro (regression 2021-04-18).

* m4/realloc.m4 (gl_FUNC_REALLOC_POSIX): Don't reset REPLACE_REALLOC
to 0 if it is already 1 after gl_FUNC_REALLOC_GNU was executed.
* m4/calloc.m4 (gl_FUNC_CALLOC_POSIX): Don't reset REPLACE_CALLOC
to 0 if it is already 1 after gl_FUNC_CALLOC_GNU was executed.

3 years ago{malloc,realloc,calloc}-gnu: Fix autoconf macro (regression 2021-04-18).
Bruno Haible [Sun, 9 May 2021 20:10:40 +0000 (22:10 +0200)]
{malloc,realloc,calloc}-gnu: Fix autoconf macro (regression 2021-04-18).

* m4/malloc.m4 (gl_FUNC_MALLOC_GNU): Don't assume that
_AC_FUNC_MALLOC_IF expands to a single shell statement.
* m4/realloc.m4 (gl_FUNC_REALLOC_GNU): Don't assume that
_AC_FUNC_REALLOC_IF expands to a single shell statement.
* m4/calloc.m4 (gl_FUNC_CALLOC_GNU): Don't assume that
_AC_FUNC_CALLOC_IF expands to a single shell statement.

3 years agomalloc-gnu, realloc-gnu, calloc-gnu: Ensure errno gets set on IRIX.
Bruno Haible [Sun, 9 May 2021 16:36:41 +0000 (18:36 +0200)]
malloc-gnu, realloc-gnu, calloc-gnu: Ensure errno gets set on IRIX.

* m4/malloc.m4 (gl_CHECK_MALLOC_POSIX): Require AC_CANONICAL_HOST. Set
gl_cv_func_malloc_posix to 'no' also on IRIX.

3 years agomalloc-gnu, realloc-gnu, calloc-gnu tests: Verify errno is set.
Bruno Haible [Sun, 9 May 2021 16:34:58 +0000 (18:34 +0200)]
malloc-gnu, realloc-gnu, calloc-gnu tests: Verify errno is set.

* tests/test-malloc-gnu.c: Include <errno.h>.
(main): Verify that, when an allocation larger than PTRDIFF_MAX failed,
errno is ENOMEM.
* tests/test-realloc-gnu.c: Likewise.
* tests/test-calloc-gnu.c: Likewise.

3 years agogetrandom: Fail with ENOSYS when the system has no randomness source.
Bruno Haible [Sun, 9 May 2021 14:51:10 +0000 (16:51 +0200)]
getrandom: Fail with ENOSYS when the system has no randomness source.

* lib/getrandom.c (getrandom): When open() fails, set errno to ENOSYS.

3 years agofree tests: Avoid test failure on glibc < 2.15.
Bruno Haible [Sun, 9 May 2021 13:45:03 +0000 (15:45 +0200)]
free tests: Avoid test failure on glibc < 2.15.

* tests/test-free.c (main): Skip the hairy test on glibc < 2.15.

3 years agoFix build error when libintl is installed.
Bruno Haible [Sun, 9 May 2021 02:19:48 +0000 (04:19 +0200)]
Fix build error when libintl is installed.

* modules/posix_spawn_file_actions_addchdir-tests (Makefile.am): Link
test-posix_spawn-chdir with libintl.
* modules/posix_spawn_file_actions_addfchdir-tests (Makefile.am): Link
test-posix_spawn-fchdir with libintl.

4 years agoFix build when an older libunistring is installed (regr. 2020-02-23).
Bruno Haible [Fri, 7 May 2021 10:51:47 +0000 (12:51 +0200)]
Fix build when an older libunistring is installed (regr. 2020-02-23).

* modules/unitypes (configure.ac): Arrange to generate the .h file if
the installed one is from a version < 0.9.11.
* modules/unicase/base (configure.ac): Likewise.
* modules/uniconv/base (configure.ac): Likewise.
* modules/unilbrk/base (configure.ac): Likewise.
* modules/uninorm/base (configure.ac): Likewise.
* modules/unistdio/base (configure.ac): Likewise.
* modules/unistr/base (configure.ac): Likewise.
* modules/uniwbrk/base (configure.ac): Likewise.
* modules/uniwidth/base (configure.ac): Likewise.
* modules/unictype/base (configure.ac): Arrange to generate the .h file
if the installed one is from a version < 0.9.8.
* modules/unigbrk/base (configure.ac): Likewise.

4 years agoautoupdate
Karl Berry [Thu, 6 May 2021 16:09:34 +0000 (09:09 -0700)]
autoupdate

4 years agoimmutable: Fix crash when immmalloc() fails.
Bruno Haible [Fri, 30 Apr 2021 23:13:47 +0000 (01:13 +0200)]
immutable: Fix crash when immmalloc() fails.

Found by GCC 11 '-fanalyzer'.

* lib/immutable.c (immstrdup): Don't crash when immmalloc() fails.

4 years agosupersede: Fix crash when malloc() fails.
Bruno Haible [Fri, 30 Apr 2021 23:03:41 +0000 (01:03 +0200)]
supersede: Fix crash when malloc() fails.

Found by GCC 11 '-fanalyzer'.

* lib/supersede.c (create_temp_file): Don't crash when malloc() fails.

4 years agolibc-config: fix include problem on older Debian
Paul Eggert [Tue, 27 Apr 2021 18:23:28 +0000 (11:23 -0700)]
libc-config: fix include problem on older Debian

https://lists.gnu.org/r/bug-gnulib/2021-04/msg00198.html
* lib/cdefs.h: Use __GNULIB_CDEFS, not __GLIBC__,
to determine whether to include the bits/* files.
* lib/libc-config.h (__WORDSIZE): Remove.
(__GNULIB_CDEFS): New macro.

4 years agognulib-tool: port better to current Autoconf
Paul Eggert [Tue, 27 Apr 2021 06:31:29 +0000 (23:31 -0700)]
gnulib-tool: port better to current Autoconf

* doc/gnulib-tool.texi (Initial import): Don’t mention
AC_PROG_CC_STDC as it’s deprecated in current Autoconf.
* gnulib-tool (func_done_dir): Suggest replacing
AC_PROG_CC_STDC and AC_PROG_CC_C99, as per current Autoconf.

4 years agoreallocarray: a bit more tuning
Paul Eggert [Mon, 26 Apr 2021 06:11:15 +0000 (23:11 -0700)]
reallocarray: a bit more tuning

* lib/reallocarray.c: Include intprops.h.
(reallocarray): Use INT_MULTIPLY_WRAPV instead of
xalloc_oversized, as it now suffices and is likely a bit more
efficient (five fewer machine insns on Ubuntu 20.10 x86-64).
* modules/reallocarray (Depends-on): Depend on intprops, not
xalloc-oversized.  Use conditional dependencies to avoid building
realloc-gnu when not needed.

4 years agoreallocarray: don’t crash if item size is 0
Paul Eggert [Mon, 26 Apr 2021 01:24:42 +0000 (18:24 -0700)]
reallocarray: don’t crash if item size is 0

This problem affects only platforms where xalloc_oversized
divides a number by the size arg.  Fix this by defining
xalloc_oversized (n, s) to work even if s == 0.
* lib/malloca.h, lib/xalloc-oversized.h: Document new behavior.
* lib/xalloc-oversized.h (__xalloc_oversized): Do not crash if S==0.
* tests/test-reallocarray.c (main): Test for the bug.

4 years agoFix messed-up previous patch
Paul Eggert [Sun, 25 Apr 2021 01:17:45 +0000 (18:17 -0700)]
Fix messed-up previous patch

4 years agoxmalloca, etc.: avoid unlikely trap
Paul Eggert [Sun, 25 Apr 2021 01:13:40 +0000 (18:13 -0700)]
xmalloca, etc.: avoid unlikely trap

* lib/xmalloca.h (xnmalloca):
Use size_t, not ptrdiff_t, to avoid implementation-defined
behavior (which could include a trap) if N is 0 and S exceeds
PTRDIFF_MAX.
* lib/xalloc-oversized.h: Adjust comment to match.

4 years agoxmalloca, etc.: fix some xalloc-oversized issues
Paul Eggert [Sun, 25 Apr 2021 00:59:53 +0000 (17:59 -0700)]
xmalloca, etc.: fix some xalloc-oversized issues

* lib/malloca.h (nmalloca):
* lib/xmalloca.h (xnmalloca): Convert S to ptrdiff_t to avoid
arithmetic overflow if N and S are both narrower than ptrdiff_t.
* lib/xalloc-oversized.h (xalloc_oversized):
Don’t say that args must be ptrdiff_t or size_t or wider.
The macro returns the correct answer even when that is not
the case, and it’s the caller’s responsibility to avoid
howlers like (xalloc_oversized (n, s) ? NULL : malloc (n * s))
when N and S are both narrower than ptrdiff_t and size_t.
Add a comment to that effect.
* lib/xmalloca.h: Include xalloc-oversized.h, since this file uses
xalloc_oversized.  Add comments about side effects and avoid
unnecessary parens.
* modules/xmalloca (Depends-on): Add xalloc-oversized.

4 years agoreallocarray: check for ptrdiff_t overflow
Paul Eggert [Sat, 24 Apr 2021 17:45:45 +0000 (10:45 -0700)]
reallocarray: check for ptrdiff_t overflow

* doc/glibc-functions/reallocarray.texi (reallocarray):
Mention ptrdiff_t overflow.
* lib/reallocarray.c (reallocarray): Reindent as per usual GNU.
* lib/stdlib.in.h (reallocarray): Allow reallocarray to be replaced.
* m4/reallocarray.m4 (gl_FUNC_REALLOCARRAY):
Check for ptrdiff_t overflow.
* m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Set up REPLACE_REALLOCARRAY.
* modules/reallocarray (Files): Add malloc.m4.
(configure.ac): Also test REPLACE_REALLOCARRAY.
* modules/reallocarray-tests (Depends-on): Add stdint.
* modules/stdlib (stdlib.h): Substitute REPLACE_REALLOCARRAY.
* tests/test-reallocarray.c: Include stdint.h.
(main): Check for ptrdiff_t overflow.

4 years agocalloc-gnu-tests: add overflow tests
Paul Eggert [Sat, 24 Apr 2021 17:12:15 +0000 (10:12 -0700)]
calloc-gnu-tests: add overflow tests

* tests/test-calloc-gnu.c (identity): New function, replacing ‘eight’.
(main): Do 2 * log2(SIZE_MAX) tests instead of just two tests.
Don’t bother to free on failure.

4 years ago* ChangeLog: Fix thinko.
Paul Eggert [Thu, 22 Apr 2021 19:35:57 +0000 (12:35 -0700)]
* ChangeLog: Fix thinko.

4 years agolibc-config: port better to Fedora Rawhide
Paul Eggert [Thu, 22 Apr 2021 19:29:49 +0000 (12:29 -0700)]
libc-config: port better to Fedora Rawhide

Problem reported by Eric Blake in:
https://lists.gnu.org/r/bug-gnulib/2021-04/msg00181.html
* lib/cdefs.h: Make this closer to glibc, so that we can
merge Gnulib into glibc here.
(__attribute_maybe_unused__): Make identical to glibc’s
definition, though with an additional comment.
(__attribute_nonnull__): Add clarifying comment.
Make inclusion of bits/wordsize.h, bits/long-double.h
dependent on __GLIBC__, not on !__WORDSIZE.
* lib/libc-config.h: Use __attribute_nonnull__,
not __attribute_maybe_unused__, to detect whether
to include sys/cdefs.h.

4 years agorealloc: port to AIX 7.1
Paul Eggert [Wed, 21 Apr 2021 18:10:06 +0000 (11:10 -0700)]
realloc: port to AIX 7.1

* lib/realloc.c (_GL_USE_STDLIB_ALLOC): Do not define.  This
module relies on GNU malloc.  This fixes a test failure on AIX 7.1.

4 years agomalloc: simplify
Paul Eggert [Wed, 21 Apr 2021 18:09:01 +0000 (11:09 -0700)]
malloc: simplify

* lib/malloc.c: Omit unnecessary "#undef malloc".
I recently introduced it by mistake.  This module defines
_GL_USE_STDLIB_ALLOC and so malloc isn’t redefined to rpl_malloc.

4 years agomalloca: avoid ptrdiff_t overflow
Paul Eggert [Wed, 21 Apr 2021 18:07:18 +0000 (11:07 -0700)]
malloca: avoid ptrdiff_t overflow

* lib/malloca.c: Include idx.h, intprops.h.
(mmalloca): Check for ptrdiff_t overflow.  Since this module uses
_GL_USE_STDLIB_ALLOC, it cannot assume GNU malloc semantics.
* modules/malloca (Depends-on): Add idx, intprops.

4 years agocareadlinkat: avoid ptrdiff_t overflow
Paul Eggert [Wed, 21 Apr 2021 18:03:39 +0000 (11:03 -0700)]
careadlinkat: avoid ptrdiff_t overflow

* lib/careadlinkat.c: Include idx.h, minmax.h.
(readlink_stk): Avoid ptrdiff_t overflow in object allocation.
Since this module uses arbitrary allocators (including
stdlib_allocator), it cannot assume GNU malloc semantics.
* modules/careadlinkat (Depends-on): Add idx, minmax.

4 years agoexecute-tests: pacify compiler
Paul Eggert [Wed, 21 Apr 2021 17:13:50 +0000 (10:13 -0700)]
execute-tests: pacify compiler

* tests/test-execute-main.c (main): Use 0x7DEADBEE rather than
0xDEADBEEF for nonces, to avoid provoking AIX XLC compiler warning
that the latter is out of int range.

4 years agomalloc-gnu-tests, etc.: use volatile for clang
Paul Eggert [Wed, 21 Apr 2021 00:11:51 +0000 (17:11 -0700)]
malloc-gnu-tests, etc.: use volatile for clang

In some more test locations, store the result of malloc etc. into
a volatile pointer so that clang doesn’t optimize away the malloc
and thus bypass the test.  This fixes a malloc-gnu test failure on
macOS 11.2.3 with clang 12.0.0 on ARM.
* tests/test-alloca-opt.c (do_allocation):
* tests/test-malloc-gnu.c (main):
* tests/test-malloca.c (do_allocation):
* tests/test-realloc-gnu.c (main):
* tests/test-reallocarray.c (main):
* tests/test-aligned-malloc.c (main):
* tests/test-aligned_alloc.c (main):
Store malloc etc. results into a volatile pointer.

4 years agomalloc-gnu-tests: pacify -Walloc-size-larger-than
Paul Eggert [Mon, 19 Apr 2021 04:18:00 +0000 (21:18 -0700)]
malloc-gnu-tests: pacify -Walloc-size-larger-than

* tests/test-malloc-gnu.c (main):
* tests/test-realloc-gnu.c (main): Hide true intentions from GCC,
to prevent diagnostics like “warning: argument 1 value
9223372036854775808’ exceeds maximum object size
9223372036854775807 [-Walloc-size-larger-than=]”.

4 years agosafe-alloc: fix pointer implementation
Paul Eggert [Mon, 19 Apr 2021 03:50:55 +0000 (20:50 -0700)]
safe-alloc: fix pointer implementation

The old implementation assumed that all pointers use the same
internal representation, but the C standard doesn’t guarantee
this.  Use void * (pointer) not void ** (pointer-to-pointer) for
the internal functions’ API.  The internal functions now return
NULL if and only if they failed, and the macros translate that
into -1 or 0 to satisfy the existing API.
* doc/safe-alloc.texi (Safe Allocation Macros): Mention overflow.
* lib/safe-alloc.c: Major rewrite.  Now this simply
defines SAFE_ALLOC_INLINE and includes safe-alloc.h.
* lib/safe-alloc.h: Include stddef.h, not stdlib.h.
(SAFE_ALLOC_INLINE): New macro; use Gnulib inline function style.
(safe_alloc_realloc_n): New API, which passes and returns
the pointer, and which returns NULL if and only if failure occurs.
(safe_alloc_check): New function.
(ALLOC, ALLOC_N, ALLOC_N_UNINITIALIZED, REALLOC_N):
Redo using the new API for internal functions, and using calloc
which is good enough since it’s GNU-compatible now.
(FREE): Expand to an expression rather than merely to something
that needs a following ‘;’ to become a statement.
* modules/safe-alloc (Depends-on): Add calloc-gnu.

4 years agocalloc-gnu: now LGPLv2+
Paul Eggert [Mon, 19 Apr 2021 03:52:29 +0000 (20:52 -0700)]
calloc-gnu: now LGPLv2+

* modules/calloc-gnu (License): Change from GPL to LGPLv2+.
The old value was evidently a longstanding typo, and calloc
will be needed by LGPLv2+ modules that will want to rely
on GNU behavior.

4 years agosafe-alloc: simplify via reallocarray
Paul Eggert [Sun, 18 Apr 2021 23:53:11 +0000 (16:53 -0700)]
safe-alloc: simplify via reallocarray

* lib/safe-alloc.c: Do not include xalloc-oversized.h.
(safe_alloc_alloc_n, safe_alloc_realloc_n):
Use reallocarray to check for size or ptrdiff_t overflow.
* modules/reallocarray (License): Switch from LGPL to LGPLv2+, as
this is needed for safe-alloc and anyway is more appropriate for
this library function common with BSD.
* modules/safe-alloc (Depends-on): Depend on reallocarray
rather than xalloc-oversized.

4 years agoxalloc-oversized: fix SIZE_MAX optimization bug
Paul Eggert [Sun, 18 Apr 2021 23:30:59 +0000 (16:30 -0700)]
xalloc-oversized: fix SIZE_MAX optimization bug

* lib/xalloc-oversized.h (xalloc_count_t): Remove; no longer
needed and was evidently error-prone anyway.
(xalloc_oversized): Omit some over-optimization that caused
SIZE_MAX to not be treated as too large (the Gnulib convention) on
unusual platforms where PTRDIFF_MAX == SIZE_MAX.  This change
should not affect typical platforms where PTRDIFF_MAX < SIZE_MAX.
When optimizing, simply use ptrdiff_t instead of xalloc_count_t.

4 years agoxalloc: new function xreallocarray
Paul Eggert [Sun, 18 Apr 2021 23:24:51 +0000 (16:24 -0700)]
xalloc: new function xreallocarray

This effectively replaces xnmalloc, which perhaps should be deprecated.
The name xreallocarray should be easier to remember now that
reallocarray is a standard GNU function.
* lib/xalloc.h [GNULIB_XALLOC]: Do not include xalloc-oversized.h.
(xnmalloc, xnrealloc, x2nrealloc): Simplify by using xreallocarray.
* lib/xmalloc.c (xreallocarray): New function.
* modules/xalloc (Depends-on): Add reallocarray;
remove xalloc-oversized.

4 years agogroup-member: simplify via realloc-gnu
Paul Eggert [Sun, 18 Apr 2021 23:08:31 +0000 (16:08 -0700)]
group-member: simplify via realloc-gnu

* lib/group-member.c, modules/group-member:
Simplify similarly to backupfile.

4 years agobackupfile: simplify via realloc-gnu
Paul Eggert [Sun, 18 Apr 2021 23:05:30 +0000 (16:05 -0700)]
backupfile: simplify via realloc-gnu

* lib/backupfile.c: Do not include xalloc-oversized.h.
(numbered_backup): Simplify now that realloc will do the right
thing about ptrdiff_t overflow.
* modules/backupfile (Depends-on): Add realloc-gnu;
remove xalloc-oversized.

4 years agosafe-alloc: improve doc
Paul Eggert [Sun, 18 Apr 2021 22:38:36 +0000 (15:38 -0700)]
safe-alloc: improve doc

* doc/safe-alloc.texi: Clarify that reallocating an array appends
uninitialized storage.  Say ‘sizeof *p’ rather than ‘sizeof(*p)’
which would need a space before the paren to follow GNU style.

4 years agomalloc-gnu-tests, etc.: test ptrdiff_t overflow
Paul Eggert [Sun, 18 Apr 2021 22:29:54 +0000 (15:29 -0700)]
malloc-gnu-tests, etc.: test ptrdiff_t overflow

* modules/calloc-gnu-tests (Depends-on):
* modules/malloc-gnu-tests (Depends-on):
* modules/realloc-gnu-tests (Depends-on): Add stdint.
* tests/test-calloc-gnu.c (main):
* tests/test-malloc-gnu.c (main):,
* tests/test-realloc-gnu.c (main): Test for ptrdiff_t overflow.

4 years agomalloc-gnu, etc.: prefer AS_CASE to woolly AS_IF
Paul Eggert [Sun, 18 Apr 2021 18:31:02 +0000 (11:31 -0700)]
malloc-gnu, etc.: prefer AS_CASE to woolly AS_IF

* m4/calloc.m4 (_AC_FUNC_CALLOC_IF):
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF):
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF): Use AS_CASE.

4 years agomalloc-gnu, etc.: sync better with Autoconf
Paul Eggert [Sun, 18 Apr 2021 18:23:24 +0000 (11:23 -0700)]
malloc-gnu, etc.: sync better with Autoconf

* m4/calloc.m4 (_AC_FUNC_CALLOC_IF):
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF):
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF):
Avoid some unnecessary differences from Autoconf’s versions.
Separate our platforms into a different line so that it’s easier
to diff.  Use AS_IF in case the args use AC_REQUIRE.
However, don’t bother with omitting the first newline, as
omitting the newline is not Gnulib style and the difference
doesn’t seem to matter here.

4 years agolib/mini-gmp.c
Karl Berry [Sun, 18 Apr 2021 15:01:17 +0000 (08:01 -0700)]
lib/mini-gmp.c

4 years agomalloc-posix, realloc-posix, calloc-posix: Document affected platforms.
Bruno Haible [Sun, 18 Apr 2021 11:58:56 +0000 (13:58 +0200)]
malloc-posix, realloc-posix, calloc-posix: Document affected platforms.

* doc/posix-functions/malloc.texi: Re-add platforms list.
* doc/posix-functions/realloc.texi: Likewise.
* doc/posix-functions/calloc.texi: Likewise.

4 years agoMore systematic file naming.
Bruno Haible [Sun, 18 Apr 2021 11:26:43 +0000 (13:26 +0200)]
More systematic file naming.

* m4/ctype_h.m4: Renamed from m4/ctype.m4.
* m4/threads_h.m4: Renamed from m4/threads.m4.
* m4/uchar_h.m4: Renamed from m4/uchar.m4.

4 years agoAdd comments after 2021-04-11 change.
Bruno Haible [Sun, 18 Apr 2021 11:13:36 +0000 (13:13 +0200)]
Add comments after 2021-04-11 change.

* m4/*_h.m4: Add comments regarding *_REQUIRE_DEFAULTS and
*_MODULE_INDICATOR macros.

4 years agodoc: Update for FreeBSD 13.0/arm64.
Bruno Haible [Sun, 18 Apr 2021 10:37:25 +0000 (12:37 +0200)]
doc: Update for FreeBSD 13.0/arm64.

* doc/posix-headers/stdint.texi: Mention FreeBSD 13 bug.
* m4/stdint.m4: Update comment.

4 years agoxalloc: adjust to malloc ptrdiff_t change
Paul Eggert [Sun, 18 Apr 2021 01:48:38 +0000 (18:48 -0700)]
xalloc: adjust to malloc ptrdiff_t change

* lib/xmalloc.c (HAVE_GNU_CALLOC, HAVE_GNU_MALLOC, HAVE_GNU_REALLOC):
Remove.
(xmalloc, xrealloc, xcalloc): Simplify by assuming GNU behavior.
* modules/xalloc (Depends-on): Add calloc-gnu, malloc-gnu,
realloc-gnu.

4 years agomalloc, etc.: check for ptrdiff_t overflow
Paul Eggert [Sun, 18 Apr 2021 01:44:25 +0000 (18:44 -0700)]
malloc, etc.: check for ptrdiff_t overflow

In glibc 2.30 and later, malloc, realloc and calloc reject
attempts to create objects larger than PTRDIFF_MAX bytes.
This patch changes malloc-gnu etc. to support this behavior
on non-GNU hosts.  It also makes this change for malloc-posix etc.
since it’s a safety measure that ought to be in POSIX (perhaps
we can talk them into that...).

In writing this patch I found a complicated set of code that had
accumulated over the years, some written by yours truly.  I got
rid of the code I couldn’t see the need for nowadays.  Among other
things, the GNU realloc behavior is no longer incompatible with
the C standard, because in C17 the latter was relaxed to allow the
former.  If I went too far in cleaning up, the old stuff can be
resurrected.

This change is mostly for 32-bit platforms, since practical 64-bit
platforms cannot create objects larger than PTRDIFF_MAX bytes anyway.
* doc/posix-functions/calloc.texi:
* doc/posix-functions/malloc.texi:
* doc/posix-functions/realloc.texi:
Mention ptrdiff_t issues, and go into more detail about what
the gnu extension module does.
* doc/posix-functions/realloc.texi: Fix now-obsolete commentary
about C99 vs glibc, as C17 allows the glibc behavior and POSIX
will follow suit when it gets around to it.
* lib/calloc.c, lib/malloc.c, lib/realloc.c:
Simplify by always supplying a GNU-compatible version,
as that suffices for correctness and is good enough for performance.
Include xalloc-oversized.h, and use xalloc_oversized to
check for ptrdiff_t overflow.
(NEED_CALLOC_GNU, NEED_MALLOC_GNU, NEED_REALLOC_GNU): Remove.
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF):
* m4/malloc.m4 (_AC_FUNC_MALLOC_IF):
* m4/realloc.m4 (_AC_FUNC_REALLOC_IF):
Don’t start with a newline.  Fix message to match behavior.
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF): Don’t test for size_t overflow,
as the ptrdiff_t test is good enough.
* m4/calloc.m4 (gl_FUNC_CALLOC_GNU):
* m4/malloc.m4 (gl_FUNC_MALLOC_GNU):
* m4/realloc.m4 (gl_FUNC_REALLOC_GNU):
Do not define HAVE_CALLOC_GNU, HAVE_MALLOC_GNU, HAVE_REALLOC_GNU.
It’s not worth the aggravation of maintaining these, as they
are confusing (they don’t really mean GNU-compatible anyway).
Don’t bother testing for GNU behavior if we have already decided
to replace the function, since the replacement is always GNUish.
* m4/calloc.m4 (gl_FUNC_CALLOC_POSIX):
* m4/realloc.m4 (gl_FUNC_REALLOC_POSIX):
Defer to gl_FUNC_MALLOC_POSIX.
* m4/malloc.m4 (gl_FUNC_MALLOC_PTRDIFF, gl_CHECK_MALLOC_PTRDIFF):
New macros.
(gl_FUNC_MALLOC_POSIX): Use them to check for ptrdiff_t overflow.
* modules/calloc-gnu, modules/malloc-gnu, modules/realloc-gnu:
Remove no-longer-needed module indicators.
* modules/calloc-posix, modules/malloc-posix, modules/realloc-posix:
Depend on xalloc-oversized.
* modules/malloc-posix: Require gl_FUNC_MALLOC_POSIX instead of
calling it directly, so that other code can require it.
* modules/realloc-posix: Depend on free-posix and malloc-posix.

4 years agostdio: Fix build error in some configurations (regression 2021-04-11).
Bruno Haible [Sat, 17 Apr 2021 15:17:06 +0000 (17:17 +0200)]
stdio: Fix build error in some configurations (regression 2021-04-11).

* m4/stdio_h.m4 (gl_STDIO_H): Move gl_STDIO_MODULE_INDICATOR and
gl_MODULE_INDICATOR invocations from here...
* modules/stdio (configure.ac): ... to here.

4 years agodoc: Update for FreeBSD 11.0, 12.0, 13.0.
Bruno Haible [Sat, 17 Apr 2021 13:29:16 +0000 (15:29 +0200)]
doc: Update for FreeBSD 11.0, 12.0, 13.0.

* doc/posix-headers/*.texi: Update.
* doc/glibc-headers/*.texi: Update.
* doc/posix-functions/*.texi: Likewise.
* doc/pastposix-functions/*.texi: Likewise.
* doc/glibc-functions/*.texi: Likewise.
* m4/ptsname_r.m4 (gl_FUNC_PTSNAME_R): Update cross-compilation guess.

4 years agomalloc, realloc: fix recently-introduced #undef typos
Paul Eggert [Sat, 17 Apr 2021 00:06:21 +0000 (17:06 -0700)]
malloc, realloc: fix recently-introduced #undef typos

* lib/malloc.c (malloc):
* lib/realloc.c (malloc, realloc): #undef before using.

4 years agohamt tests: Fix link error.
Bruno Haible [Thu, 15 Apr 2021 00:19:24 +0000 (02:19 +0200)]
hamt tests: Fix link error.

* modules/hamt-tests (Makefile.am): Link test-hamt against @LIBINTL@.

4 years agoc-stack: Don't use an undefined C macro (regression from 2020-10-04).
Bruno Haible [Thu, 15 Apr 2021 00:11:51 +0000 (02:11 +0200)]
c-stack: Don't use an undefined C macro (regression from 2020-10-04).

* lib/c-stack.c: Test GNU C version directly, without __GNUC_PREREQ.

4 years agodoc: Fix confusion between LIBADD and LDADD.
Bruno Haible [Mon, 12 Apr 2021 19:09:22 +0000 (21:09 +0200)]
doc: Fix confusion between LIBADD and LDADD.

Reported by Reuben Thomas <rrt@sc3d.org> in
<https://lists.gnu.org/archive/html/bug-gnulib/2021-04/msg00102.html>.

* doc/gnulib-tool.texi (Multiple instances): For programs, use LDADD,
not LIBADD.

4 years agomalloc, realloc, calloc: Support restricted library symbols on AIX.
Bruno Haible [Sun, 11 Apr 2021 20:00:25 +0000 (22:00 +0200)]
malloc, realloc, calloc: Support restricted library symbols on AIX.

Suggested by Paul Eggert in
<https://lists.gnu.org/archive/html/bug-gnulib/2021-04/msg00119.html>.

* lib/malloc.c: Drop the code that intends to collaborate with
AC_FUNC_MALLOC.
* lib/realloc.c: Drop the code that intends to collaborate with
AC_FUNC_REALLOC.
* lib/calloc.c: Drop the code that intends to collaborate with the
nonexistent macro AC_FUNC_CALLOC.

4 years agoSupport several gnulib-tool invocations under the same configure.ac.
Bruno Haible [Sun, 11 Apr 2021 19:25:54 +0000 (21:25 +0200)]
Support several gnulib-tool invocations under the same configure.ac.

Reported by Reuben Thomas <rrt@sc3d.org> in
<https://lists.gnu.org/archive/html/bug-gnulib/2021-04/msg00104.html>.

This is done by defining the Gnulib module indicator variables per
gnulib-tool invocation. So that a generated .h file is no longer
influenced by the set of modules used in other gnulib-tool invocations.

* gnulib-tool (func_compute_include_guard_prefix): Set
module_indicator_prefix.
(func_emit_lib_Makefile_am, func_emit_tests_Makefile_am): Use it to
modify $(GNULIB_*) variable references in the Automake snippets.
(func_emit_initmacro_start): Push macro definitions for GL_MACRO_PREFIX
and GL_MODULE_INDICATOR_PREFIX.
(func_emit_initmacro_end): Pop these macro definitions.
* pygnulib/GLConfig.py (GLConfig.getIncludeGuardPrefix): New method.
* pygnulib/GLEmiter.py (GLEmiter.initmacro_start): Push macro
definitions for GL_MACRO_PREFIX and GL_MODULE_INDICATOR_PREFIX.
(GLEmiter.initmacro_end): Pop these macro definitions.
(GLEmiter.lib_Makefile_am, GLEmiter.tests_Makefile_am): Use the module
indicator prefix to modify $(GNULIB_*) variable references in the
Automake snippets.
* m4/gnulib-common.m4 (gl_MODULE_INDICATOR_INIT_VARIABLE,
gl_MODULE_INDICATOR_SET_VARIABLE): Use the value of
GL_MODULE_INDICATOR_PREFIX.
* m4/arpa_inet_h.m4: Use new idiom for header files that contain
references to Gnulib module indicator variables:
- Define the main macro through AC_DEFUN_ONCE.
- Define a macro gl_*_H_REQUIRE_DEFAULTS that initializes the Gnulib
  module indicator variables (each prefixed with
  GL_MODULE_INDICATOR_PREFIX).
- Invoke this macro in the gl_*_MODULE_INDICATOR macro.
* m4/ctype.m4: Likewise.
* m4/dirent_h.m4: Likewise.
* m4/fcntl_h.m4: Likewise.
* m4/fnmatch_h.m4: Likewise.
* m4/glob_h.m4: Likewise.
* m4/iconv_h.m4: Likewise.
* m4/inttypes.m4: Likewise.
* m4/langinfo_h.m4: Likewise.
* m4/locale_h.m4: Likewise.
* m4/malloc_h.m4: Likewise.
* m4/math_h.m4: Likewise.
* m4/monetary_h.m4: Likewise.
* m4/netdb_h.m4: Likewise.
* m4/poll_h.m4: Likewise.
* m4/pthread_h.m4: Likewise.
* m4/pty_h.m4: Likewise.
* m4/sched_h.m4: Likewise.
* m4/search_h.m4: Likewise.
* m4/signal_h.m4: Likewise.
* m4/spawn_h.m4: Likewise.
* m4/stddef_h.m4: Likewise.
* m4/stdio_h.m4: Likewise.
* m4/stdlib_h.m4: Likewise.
* m4/string_h.m4: Likewise.
* m4/strings_h.m4: Likewise.
* m4/sys_file_h.m4: Likewise.
* m4/sys_ioctl_h.m4: Likewise.
* m4/sys_random_h.m4: Likewise.
* m4/sys_resource_h.m4: Likewise.
* m4/sys_select_h.m4: Likewise.
* m4/sys_socket_h.m4: Likewise.
* m4/sys_stat_h.m4: Likewise.
* m4/sys_time_h.m4: Likewise.
* m4/sys_times_h.m4: Likewise.
* m4/sys_types_h.m4: Likewise.
* m4/sys_uio_h.m4: Likewise.
* m4/sys_utsname_h.m4: Likewise.
* m4/sys_wait_h.m4: Likewise.
* m4/termios_h.m4: Likewise.
* m4/threads.m4: Likewise.
* m4/time_h.m4: Likewise.
* m4/uchar.m4: Likewise.
* m4/unistd_h.m4: Likewise.
* m4/utime_h.m4: Likewise.
* m4/wchar_h.m4: Likewise.
* m4/wctype_h.m4: Likewise.
* modules/arpa_inet (configure.ac): Invoke the macro
gl_*_H_REQUIRE_DEFAULTS explicitly.
* modules/ctype (configure.ac): Likewise.
* modules/dirent (configure.ac): Likewise.
* modules/fcntl-h (configure.ac): Likewise.
* modules/fnmatch-h (configure.ac): Likewise.
* modules/glob-h (configure.ac): Likewise.
* modules/iconv-h (configure.ac): Likewise.
* modules/inttypes-incomplete (configure.ac): Likewise.
* modules/langinfo (configure.ac): Likewise.
* modules/locale (configure.ac): Likewise.
* modules/malloc-h (configure.ac): Likewise.
* modules/math (configure.ac): Likewise.
* modules/monetary (configure.ac): Likewise.
* modules/netdb (configure.ac): Likewise.
* modules/poll-h (configure.ac): Likewise.
* modules/pthread-h (configure.ac): Likewise.
* modules/pty (configure.ac): Likewise.
* modules/sched (configure.ac): Likewise.
* modules/search (configure.ac): Likewise.
* modules/signal-h (configure.ac): Likewise.
* modules/spawn (configure.ac): Likewise.
* modules/stddef (configure.ac): Likewise.
* modules/stdio (configure.ac): Likewise.
* modules/stdlib (configure.ac): Likewise.
* modules/string (configure.ac): Likewise.
* modules/strings (configure.ac): Likewise.
* modules/sys_file (configure.ac): Likewise.
* modules/sys_ioctl (configure.ac): Likewise.
* modules/sys_random (configure.ac): Likewise.
* modules/sys_resource (configure.ac): Likewise.
* modules/sys_select (configure.ac): Likewise.
* modules/sys_socket (configure.ac): Likewise.
* modules/sys_stat (configure.ac): Likewise.
* modules/sys_time (configure.ac): Likewise.
* modules/sys_times (configure.ac): Likewise.
* modules/sys_types (configure.ac): Likewise.
* modules/sys_uio (configure.ac): Likewise.
* modules/sys_utsname (configure.ac): Likewise.
* modules/sys_wait (configure.ac): Likewise.
* modules/termios (configure.ac): Likewise.
* modules/threads-h (configure.ac): Likewise.
* modules/time (configure.ac): Likewise.
* modules/uchar (configure.ac): Likewise.
* modules/unistd (configure.ac): Likewise.
* modules/utime-h (configure.ac): Likewise.
* modules/wchar (configure.ac): Likewise.
* modules/wctype-h (configure.ac): Likewise.
* m4/af_alg.m4: Update after a macro name changed.
* m4/ctime.m4: Likewise.
* m4/explicit_bzero.m4: Likewise.
* m4/ffs.m4: Likewise.
* m4/ffsl.m4: Likewise.
* m4/ffsll.m4: Likewise.
* m4/flock.m4: Likewise.
* m4/fstat.m4: Likewise.
* m4/getaddrinfo.m4: Likewise.
* m4/getdomainname.m4: Likewise.
* m4/gettimeofday.m4: Likewise.
* m4/hostent.m4: Likewise.
* m4/ioctl.m4: Likewise.
* m4/localtime.m4: Likewise.
* m4/mbslen.m4: Likewise.
* m4/memchr.m4: Likewise.
* m4/memmem.m4: Likewise.
* m4/mempcpy.m4: Likewise.
* m4/memrchr.m4: Likewise.
* m4/mktime.m4: Likewise.
* m4/nanosleep.m4: Likewise.
* m4/passfd.m4: Likewise.
* m4/pselect.m4: Likewise.
* m4/rawmemchr.m4: Likewise.
* m4/select.m4: Likewise.
* m4/servent.m4: Likewise.
* m4/sigabbrev_np.m4: Likewise.
* m4/sigdescr_np.m4: Likewise.
* m4/sockpfaf.m4: Likewise.
* m4/stat.m4: Likewise.
* m4/stpcpy.m4: Likewise.
* m4/stpncpy.m4: Likewise.
* m4/strcase.m4: Likewise.
* m4/strcasestr.m4: Likewise.
* m4/strchrnul.m4: Likewise.
* m4/strdup.m4: Likewise.
* m4/strerror.m4: Likewise.
* m4/strerror_r.m4: Likewise.
* m4/strerrorname_np.m4: Likewise.
* m4/strftime-fixes.m4: Likewise.
* m4/strncat.m4: Likewise.
* m4/strndup.m4: Likewise.
* m4/strnlen.m4: Likewise.
* m4/strpbrk.m4: Likewise.
* m4/strptime.m4: Likewise.
* m4/strsep.m4: Likewise.
* m4/strsignal.m4: Likewise.
* m4/strstr.m4: Likewise.
* m4/strtok_r.m4: Likewise.
* m4/strverscmp.m4: Likewise.
* m4/time_r.m4: Likewise.
* m4/time_rz.m4: Likewise.
* m4/timegm.m4: Likewise.
* m4/timespec_get.m4: Likewise.
* m4/tzset.m4: Likewise.
* modules/accept (configure.ac): Likewise.
* modules/bind (configure.ac): Likewise.
* modules/connect (configure.ac): Likewise.
* modules/flock (configure.ac): Likewise.
* modules/getpeername (configure.ac): Likewise.
* modules/getsockname (configure.ac): Likewise.
* modules/getsockopt (configure.ac): Likewise.
* modules/listen (configure.ac): Likewise.
* modules/recv (configure.ac): Likewise.
* modules/recvfrom (configure.ac): Likewise.
* modules/send (configure.ac): Likewise.
* modules/sendto (configure.ac): Likewise.
* modules/setsockopt (configure.ac): Likewise.
* modules/shutdown (configure.ac): Likewise.
* modules/socket (configure.ac): Likewise. Use the
gl_*_H_REQUIRE_DEFAULTS macros.
* modules/nonblocking (configure.ac): Use the gl_*_H_REQUIRE_DEFAULTS
and gl_MODULE_INDICATOR_INIT_VARIABLE macros.
* modules/sigpipe (configure.ac): Likewise.
* modules/windows-stat-override (configure.ac): Likewise.
* m4/nonblocking.m4: Update a comment.
* m4/sigpipe.m4: Likewise.

4 years agoRename GNULIB_OVERRIDES_CHAR16_T, GNULIB_OVERRIDES_CHAR32_T.
Bruno Haible [Sun, 11 Apr 2021 13:54:18 +0000 (15:54 +0200)]
Rename GNULIB_OVERRIDES_CHAR16_T, GNULIB_OVERRIDES_CHAR32_T.

* GNULIBHEADERS_OVERRIDE_CHAR16_T: Renamed from
GNULIB_OVERRIDES_CHAR16_T.
* GNULIBHEADERS_OVERRIDE_CHAR32_T: Renamed from
GNULIB_OVERRIDES_CHAR32_T.

4 years agoRename GNULIB_OVERRIDES_WINT_T.
Bruno Haible [Sun, 11 Apr 2021 13:50:35 +0000 (15:50 +0200)]
Rename GNULIB_OVERRIDES_WINT_T.

* GNULIBHEADERS_OVERRIDE_WINT_T: Renamed from GNULIB_OVERRIDES_WINT_T.

4 years agoincrement-serial: New program.
Bruno Haible [Sun, 11 Apr 2021 12:38:37 +0000 (14:38 +0200)]
increment-serial: New program.

* build-aux/increment-serial: New file.

4 years agouseless-if-before-free: Implement --version option according to GCS.
Bruno Haible [Sun, 11 Apr 2021 12:30:03 +0000 (14:30 +0200)]
useless-if-before-free: Implement --version option according to GCS.

* build-aux/useless-if-before-free (copyright_year): New variable.
(GetOptions): Print also a short copyright and license notice and
author statement.

4 years agolibtool-next-version: Implement --version option according to GCS.
Bruno Haible [Sun, 11 Apr 2021 12:28:00 +0000 (14:28 +0200)]
libtool-next-version: Implement --version option according to GCS.

* build-aux/libtool-next-version (scriptversion): New variable.
(func_version): Deduce the copyright year from it. Terminate sentences
with '.'.

4 years agognupload: Implement --version option according to GCS.
Bruno Haible [Sun, 11 Apr 2021 12:25:56 +0000 (14:25 +0200)]
gnupload: Implement --version option according to GCS.

* build-aux/gnupload (copyright_year, copyright): New variables.
(--version): Print also a short copyright and license notice.

4 years agogit-version-gen: Implement --version option according to GCS.
Bruno Haible [Sun, 11 Apr 2021 12:22:07 +0000 (14:22 +0200)]
git-version-gen: Implement --version option according to GCS.

* build-aux/git-version-gen (version): State the license. Use wording
from GCS.

4 years agobootstrap: Implement --version option according to GCS.
Bruno Haible [Sun, 11 Apr 2021 12:20:08 +0000 (14:20 +0200)]
bootstrap: Implement --version option according to GCS.

* build-aux/bootstrap (copyright_year, copyright): New variables.
(--version): New option processing.

4 years agoannounce-gen: Implement --version option according to GCS.
Bruno Haible [Sun, 11 Apr 2021 12:17:13 +0000 (14:17 +0200)]
announce-gen: Implement --version option according to GCS.

* build-aux/announce-gen (copyright_year): New variable.
(GetOptions): Print also a short copyright and license notice and
author statement.

4 years agoSimplify GNULIB_* variable initializations.
Bruno Haible [Sun, 11 Apr 2021 00:38:27 +0000 (02:38 +0200)]
Simplify GNULIB_* variable initializations.

* modules/gnulib-common.m4 (gl_MODULE_INDICATOR_INIT_VARIABLE): New
macro.
* m4/arpa_inet_h.m4 (gl_ARPA_INET_H_DEFAULTS): Use it.
* m4/ctype.m4 (gl_CTYPE_H_DEFAULTS): Likewise.
* m4/dirent_h.m4 (gl_DIRENT_H_DEFAULTS): Likewise.
* m4/fcntl_h.m4 (gl_FCNTL_H_DEFAULTS): Likewise.
* m4/fnmatch_h.m4 (gl_FNMATCH_H_DEFAULTS): Likewise.
* m4/glob_h.m4 (gl_GLOB_H_DEFAULTS): Likewise.
* m4/iconv_h.m4 (gl_ICONV_H_DEFAULTS): Likewise.
* m4/inttypes.m4 (gl_INTTYPES_H_DEFAULTS): Likewise.
* m4/langinfo_h.m4 (gl_LANGINFO_H_DEFAULTS): Likewise.
* m4/locale_h.m4 (gl_LOCALE_H_DEFAULTS): Likewise.
* m4/malloc_h.m4 (gl_MALLOC_H_DEFAULTS): Likewise.
* m4/math_h.m4 (gl_MATH_H_DEFAULTS): Likewise.
* m4/monetary_h.m4 (gl_MONETARY_H_DEFAULTS): Likewise.
* m4/netdb_h.m4 (gl_NETDB_H_DEFAULTS): Likewise.
* m4/poll_h.m4 (gl_POLL_H_DEFAULTS): Likewise.
* m4/pthread_h.m4 (gl_PTHREAD_H_DEFAULTS): Likewise.
* m4/pty_h.m4 (gl_PTY_H_DEFAULTS): Likewise.
* m4/sched_h.m4 (gl_SCHED_H_DEFAULTS): Likewise.
* m4/search_h.m4 (gl_SEARCH_H_DEFAULTS): Likewise.
* m4/signal_h.m4 (gl_SIGNAL_H_DEFAULTS): Likewise.
* m4/spawn_h.m4 (gl_SPAWN_H_DEFAULTS): Likewise.
* m4/stdio_h.m4 (gl_STDIO_H_DEFAULTS): Likewise.
* m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Likewise.
* m4/string_h.m4 (gl_HEADER_STRING_H_DEFAULTS): Likewise.
* m4/strings_h.m4 (gl_HEADER_STRINGS_H_DEFAULTS): Likewise.
* m4/sys_file_h.m4 (gl_HEADER_SYS_FILE_H_DEFAULTS): Likewise.
* m4/sys_ioctl_h.m4 (gl_SYS_IOCTL_H_DEFAULTS): Likewise.
* m4/sys_random_h.m4 (gl_SYS_RANDOM_H_DEFAULTS): Likewise.
* m4/sys_resource_h.m4 (gl_SYS_RESOURCE_H_DEFAULTS): Likewise.
* m4/sys_select_h.m4 (gl_SYS_SELECT_H_DEFAULTS): Likewise.
* m4/sys_socket_h.m4 (gl_SYS_SOCKET_H_DEFAULTS): Likewise.
* m4/sys_stat_h.m4 (gl_SYS_STAT_H_DEFAULTS): Likewise.
* m4/sys_time_h.m4 (gl_HEADER_SYS_TIME_H_DEFAULTS): Likewise.
* m4/sys_times_h.m4 (gl_SYS_TIMES_H_DEFAULTS): Likewise.
* m4/sys_utsname_h.m4 (gl_SYS_UTSNAME_H_DEFAULTS): Likewise.
* m4/sys_wait_h.m4 (gl_SYS_WAIT_H_DEFAULTS): Likewise.
* m4/termios_h.m4 (gl_TERMIOS_H_DEFAULTS): Likewise.
* m4/threads.m4 (gl_THREADS_H_DEFAULTS): Likewise.
* m4/time_h.m4 (gl_HEADER_TIME_H_DEFAULTS): Likewise.
* m4/uchar.m4 (gl_UCHAR_H_DEFAULTS): Likewise.
* m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Likewise.
* m4/utime_h.m4 (gl_UTIME_H_DEFAULTS): Likewise.
* m4/wchar_h.m4 (gl_WCHAR_H_DEFAULTS): Likewise.
* m4/wctype_h.m4 (gl_WCTYPE_H_DEFAULTS): Likewise.

4 years agoBlame GCC, not Coverity, in utimens ChangeLog entry.
Paul Eggert [Sat, 10 Apr 2021 20:39:33 +0000 (13:39 -0700)]
Blame GCC, not Coverity, in utimens ChangeLog entry.

4 years agorealloc: fix undef typo
Paul Eggert [Sat, 10 Apr 2021 20:38:50 +0000 (13:38 -0700)]
realloc: fix undef typo

* lib/realloc.c: #undef realloc if config.h defines it.
This fixes a typo that I introduced in
2011-04-08T18:39:01Z!eggert@cs.ucla.edu.
Apparently nobody uses Gnulib realloc in that way?

4 years agoutimens: fix confusing arg type in internal func
Paul Eggert [Thu, 8 Apr 2021 00:29:59 +0000 (17:29 -0700)]
utimens: fix confusing arg type in internal func

Although the old code was technically correct, this was accidental
and it understandably confused Coverity.  Reported by Ondrej Dubaj in:
https://lists.gnu.org/r/bug-tar/2021-04/msg00000.html
* lib/utimens.c (update_timespec): Change arg type from ‘struct
timespec *[2]’ (pointer to array of 2 pointers to timespecs) to
‘struct timespec **’ (pointer to pointer to the first timespec in
an array of 2 timespecs).  Although the old code happened to be
technically correct, it was misleading and confused Coverity.
And though the type ‘struct timespec (**)[2]’ (pointer to pointer
to array of 2 timespecs) would perhaps be more technically
correct, it would be almost as confusing and would require changes
elsewhere in this file; let’s quit while we’re ahead.

4 years agoexecute tests: Avoid test failure in certain environments.
Bruno Haible [Wed, 7 Apr 2021 23:37:05 +0000 (01:37 +0200)]
execute tests: Avoid test failure in certain environments.

Reported by Dmitry V. Levin <ldv@altlinux.org> in
<https://lists.gnu.org/archive/html/bug-gnulib/2021-04/msg00082.html>.

* tests/test-execute-main.c (main): Close file descriptors 3..19.
* tests/test-execute-child.c (main): Remove NetBSD workaround.
* modules/execute-tests (configure.ac): Test for close_range function.

4 years ago* lib/xalloc.h: Fix previous commit by adding missing include.
Paul Eggert [Wed, 7 Apr 2021 17:58:40 +0000 (10:58 -0700)]
* lib/xalloc.h: Fix previous commit by adding missing include.

4 years agoxalloc: simplify integer overflow test
Paul Eggert [Wed, 7 Apr 2021 17:28:20 +0000 (10:28 -0700)]
xalloc: simplify integer overflow test

* lib/xalloc.h (x2nrealloc): Simplify integer overflow detection.
This is easier to maintain, and (unlike the old code) exact.

4 years agogroup-member: minor tweak to omit a *
Paul Eggert [Wed, 7 Apr 2021 00:45:33 +0000 (17:45 -0700)]
group-member: minor tweak to omit a *

* lib/group-member.c: Include intprops.h.
(get_group_info): Use INT_MULTIPLY_WRAPV instead of
xalloc_oversized (which does a multiplication) followed by the
same multiplication.  The code was OK as-is; this is just
conceptual simplification, possible now that we have xalloc_count_t.
* modules/group-member: Depend on intprops.

4 years agobackupfile: less-aggressive buffer growth
Paul Eggert [Wed, 7 Apr 2021 00:39:31 +0000 (17:39 -0700)]
backupfile: less-aggressive buffer growth

* lib/backupfile.c: Include intprops.h.
(numbered_backup): Grow buffer by the usual 50%, not 100%.
This is easier to do now that we have xalloc_count_t.
* modules/backup-rename, modules/backupfile: Depend on intprops.

4 years agoxalloc-oversized: export xalloc_count_t
Paul Eggert [Wed, 7 Apr 2021 00:34:56 +0000 (17:34 -0700)]
xalloc-oversized: export xalloc_count_t

* lib/xalloc-oversized.h (__xalloc_oversized, xalloc_oversized):
* lib/xmalloca.h (nmalloca):
Comment re restrictions on arg types.
* lib/xalloc-oversized.h (xalloc_count_t): Rename from
__xalloc_count_type; all uses changed.  This publicizes the type.

4 years agoxalloc: try to pacify gcc -Wsign-compare
Paul Eggert [Tue, 6 Apr 2021 03:08:27 +0000 (20:08 -0700)]
xalloc: try to pacify gcc -Wsign-compare

Problem reported by Marc Nieper-Wißkirchen in:
https://lists.gnu.org/r/bug-gnulib/2021-04/msg00034.html
* lib/xmalloc.c (xpalloc): For odd platforms where SIZE_MAX < IDX_MAX,
use a tricky destination for INT_MULTIPLY_WRAPV instead of an
explicit comparison to SIZE_MAX.  This should be more likely to
pacify gcc -Wsign-compare.

4 years agohamt: Fix coding errors.
Marc Nieper-Wißkirchen [Mon, 5 Apr 2021 13:24:32 +0000 (15:24 +0200)]
hamt: Fix coding errors.

Reported by Bruno Haible in
<https://lists.gnu.org/archive/html/bug-gnulib/2021-04/msg00047.html>
after a Coverity run.
* lib/hamt.c (bucket_do_while, hamt_iterator): Add missing
derefencing operator and silence a bogus warning on uninitialized
variables.
* tests/test-hamt.c (test_general): Replace two errorneous
assignment operators with comparison operators.

4 years agopthread-cond: Fix compilation error.
Fabrice Fontaine [Mon, 5 Apr 2021 10:44:41 +0000 (12:44 +0200)]
pthread-cond: Fix compilation error.

* lib/pthread-cond.c (pthread_cond_wait): Use tv.nsec instead of
tv.usec.

4 years agopthread-cond: Fix wrong configure results when <pthread.h> is absent.
Fabrice Fontaine [Sun, 4 Apr 2021 23:13:29 +0000 (01:13 +0200)]
pthread-cond: Fix wrong configure results when <pthread.h> is absent.

* m4/pthread-cond.m4 (gl_PTHREAD_COND): When <pthread.h> does not exist,
set HAVE_PTHREAD_COND_* to 0, not to 1.

4 years agobackupfile, backup-rename: Trim dependencies.
Bruno Haible [Sun, 4 Apr 2021 12:54:33 +0000 (14:54 +0200)]
backupfile, backup-rename: Trim dependencies.

* lib/backupfile.h: Add comment.
* lib/backupfile.c: Include <dirent.h>, for readdir() declaration.
* modules/backup-rename (Depends-on): Remove dirent-safer, fcntl. Add
fcntl-h.
* modules/backupfile (Depends-on): Likewise. Remove xalloc. Add
xalloc-die.