At level 34 the added functions are: <stdio_ext.h> __freadahead
<string.h> memset_explicit <spawn.h> posix_spawn_file_actions_addchdir_np posix_spawn_file_actions_addfchdir_np <unistd.h> copy_file_range close_range Here are the corresponding adjustments in Gnulib. 2024-01-25 Bruno Haible <[email protected]> Resolve conflicts for functions introduced in Android API level 34. * m4/copy-file-range.m4 (gl_FUNC_COPY_FILE_RANGE): On platforms without glibc, test for copy_file_range using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. Conditionally set REPLACE_COPY_FILE_RANGE. * doc/glibc-functions/copy_file_range.texi: Mention the Android API levels. * m4/posix_spawn.m4 (gl_POSIX_SPAWN_BODY): Test for posix_spawn_file_actions_addchdir_np and posix_spawn_file_actions_addfchdir_np using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. * m4/posix_spawn_faction_addchdir.m4 (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR): Test for posix_spawn_file_actions_addchdir_np using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. * m4/posix_spawn_faction_addfchdir.m4 (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDFCHDIR): Test for posix_spawn_file_actions_addfchdir_np using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. * doc/glibc-functions/posix_spawn_file_actions_addchdir_np.texi: Mention the Android API levels. * doc/glibc-functions/posix_spawn_file_actions_addfchdir_np.texi: Likewise. * lib/string.in.h (memset_explicit): Consider REPLACE_MEMSET_EXPLICIT. * m4/string_h.m4 (gl_STRING_H_DEFAULTS): Initialize REPLACE_MEMSET_EXPLICIT. * modules/string (Makefile.am): Substitute REPLACE_MEMSET_EXPLICIT. * m4/memset_explicit.m4 (gl_FUNC_MEMSET_EXPLICIT): Test for memset_explicit using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. Conditionally set REPLACE_MEMSET_EXPLICIT. * modules/memset_explicit (configure.ac): Consider REPLACE_MEMSET_EXPLICIT. * doc/posix-functions/memset_explicit.texi: Mention the Android API levels. * m4/freadahead.m4 (gl_FUNC_FREADAHEAD): Test for __freadahead using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. * lib/freadahead.h: Update comment.
From 22c809356688118b5fcc96229788150ed780a747 Mon Sep 17 00:00:00 2001 From: Bruno Haible <[email protected]> Date: Fri, 26 Jan 2024 00:18:45 +0100 Subject: [PATCH 1/4] Resolve conflicts for functions introduced in Android API level 34. * m4/freadahead.m4 (gl_FUNC_FREADAHEAD): Test for __freadahead using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. * lib/freadahead.h: Update comment. --- ChangeLog | 8 ++++++++ lib/freadahead.h | 2 +- m4/freadahead.m4 | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 46dcdf9c4e..5e7b4d90b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2024-01-25 Bruno Haible <[email protected]> + + Resolve conflicts for functions introduced in Android API level 34. + + * m4/freadahead.m4 (gl_FUNC_FREADAHEAD): Test for __freadahead using + gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. + * lib/freadahead.h: Update comment. + 2024-01-25 Bruno Haible <[email protected]> Doc regarding functions introduced in Android API level 33. diff --git a/lib/freadahead.h b/lib/freadahead.h index 35052c1c19..f4fc26cbd7 100644 --- a/lib/freadahead.h +++ b/lib/freadahead.h @@ -32,7 +32,7 @@ STREAM must not be wide-character oriented. */ -#if HAVE___FREADAHEAD /* musl libc */ +#if HAVE___FREADAHEAD /* musl libc, Android API level ≥ 33 */ # include <stdio_ext.h> # define freadahead(stream) __freadahead (stream) diff --git a/m4/freadahead.m4 b/m4/freadahead.m4 index c2352b4616..df7aaa29fe 100644 --- a/m4/freadahead.m4 +++ b/m4/freadahead.m4 @@ -1,4 +1,4 @@ -# freadahead.m4 serial 1 +# freadahead.m4 serial 2 dnl Copyright (C) 2012-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -6,5 +6,5 @@ AC_DEFUN([gl_FUNC_FREADAHEAD], [ - AC_CHECK_FUNCS_ONCE([__freadahead]) + gl_CHECK_FUNCS_ANDROID([__freadahead], [[#include <stdio_ext.h>]]) ]) -- 2.34.1
>From 2f4edab08c40fa0206d0fca7cee99346a156e1ab Mon Sep 17 00:00:00 2001 From: Bruno Haible <[email protected]> Date: Fri, 26 Jan 2024 00:18:49 +0100 Subject: [PATCH 2/4] Resolve conflicts for functions introduced in Android API level 34. * lib/string.in.h (memset_explicit): Consider REPLACE_MEMSET_EXPLICIT. * m4/string_h.m4 (gl_STRING_H_DEFAULTS): Initialize REPLACE_MEMSET_EXPLICIT. * modules/string (Makefile.am): Substitute REPLACE_MEMSET_EXPLICIT. * m4/memset_explicit.m4 (gl_FUNC_MEMSET_EXPLICIT): Test for memset_explicit using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. Conditionally set REPLACE_MEMSET_EXPLICIT. * modules/memset_explicit (configure.ac): Consider REPLACE_MEMSET_EXPLICIT. * doc/posix-functions/memset_explicit.texi: Mention the Android API levels. --- ChangeLog | 12 ++++++++++++ doc/posix-functions/memset_explicit.texi | 2 +- lib/string.in.h | 14 ++++++++++++-- m4/memset_explicit.m4 | 6 +++++- m4/string_h.m4 | 3 ++- modules/memset_explicit | 3 ++- modules/string | 1 + 7 files changed, 35 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5e7b4d90b4..c46cb60b31 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,18 @@ Resolve conflicts for functions introduced in Android API level 34. + * lib/string.in.h (memset_explicit): Consider REPLACE_MEMSET_EXPLICIT. + * m4/string_h.m4 (gl_STRING_H_DEFAULTS): Initialize + REPLACE_MEMSET_EXPLICIT. + * modules/string (Makefile.am): Substitute REPLACE_MEMSET_EXPLICIT. + * m4/memset_explicit.m4 (gl_FUNC_MEMSET_EXPLICIT): Test for + memset_explicit using gl_CHECK_FUNCS_ANDROID instead of + AC_CHECK_FUNCS_ONCE. Conditionally set REPLACE_MEMSET_EXPLICIT. + * modules/memset_explicit (configure.ac): Consider + REPLACE_MEMSET_EXPLICIT. + * doc/posix-functions/memset_explicit.texi: Mention the Android API + levels. + * m4/freadahead.m4 (gl_FUNC_FREADAHEAD): Test for __freadahead using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. * lib/freadahead.h: Update comment. diff --git a/doc/posix-functions/memset_explicit.texi b/doc/posix-functions/memset_explicit.texi index 2bfe82932a..cca6296b49 100644 --- a/doc/posix-functions/memset_explicit.texi +++ b/doc/posix-functions/memset_explicit.texi @@ -29,7 +29,7 @@ @itemize @item This function is missing on some platforms: -glibc 2.36, FreeBSD 13.1, NetBSD 9.3, OpenBSD 7.2, macOS 13, Solaris 11.4, Android 13, +glibc 2.36, FreeBSD 13.1, NetBSD 9.3, OpenBSD 7.2, macOS 13, Solaris 11.4, Android API level 33, and many other systems. @end itemize diff --git a/lib/string.in.h b/lib/string.in.h index 01ea3e3913..44ec2e7ecd 100644 --- a/lib/string.in.h +++ b/lib/string.in.h @@ -414,11 +414,21 @@ _GL_WARN_ON_USE (memrchr, "memrchr is unportable - " /* Overwrite a block of memory. The compiler will not optimize effects away, even if the block is dead after the call. */ #if @GNULIB_MEMSET_EXPLICIT@ -# if ! @HAVE_MEMSET_EXPLICIT@ +# if @REPLACE_MEMSET_EXPLICIT@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef memset_explicit +# define memset_explicit rpl_memset_explicit +# endif +_GL_FUNCDECL_RPL (memset_explicit, void *, + (void *__dest, int __c, size_t __n) _GL_ARG_NONNULL ((1))); +_GL_CXXALIAS_RPL (memset_explicit, void *, (void *__dest, int __c, size_t __n)); +# else +# if !@HAVE_MEMSET_EXPLICIT@ _GL_FUNCDECL_SYS (memset_explicit, void *, (void *__dest, int __c, size_t __n) _GL_ARG_NONNULL ((1))); -# endif +# endif _GL_CXXALIAS_SYS (memset_explicit, void *, (void *__dest, int __c, size_t __n)); +# endif _GL_CXXALIASWARN (memset_explicit); #elif defined GNULIB_POSIXCHECK # undef memset_explicit diff --git a/m4/memset_explicit.m4 b/m4/memset_explicit.m4 index 6ac798d455..19514ff917 100644 --- a/m4/memset_explicit.m4 +++ b/m4/memset_explicit.m4 @@ -1,3 +1,4 @@ +# memset_explicit.m4 serial 2 dnl Copyright 2022-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -7,9 +8,12 @@ AC_DEFUN([gl_FUNC_MEMSET_EXPLICIT] [ AC_REQUIRE([gl_STRING_H_DEFAULTS]) - AC_CHECK_FUNCS_ONCE([memset_explicit]) + gl_CHECK_FUNCS_ANDROID([memset_explicit], [[#include <string.h>]]) if test $ac_cv_func_memset_explicit = no; then HAVE_MEMSET_EXPLICIT=0 + case "$gl_cv_onwards_func_memset_explicit" in + future*) REPLACE_MEMSET_EXPLICIT=1 ;; + esac fi ]) diff --git a/m4/string_h.m4 b/m4/string_h.m4 index 8b12101447..9ea748cc77 100644 --- a/m4/string_h.m4 +++ b/m4/string_h.m4 @@ -5,7 +5,7 @@ # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 38 +# serial 39 # Written by Paul Eggert. @@ -132,6 +132,7 @@ AC_DEFUN([gl_STRING_H_DEFAULTS] REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR]) REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM]) REPLACE_MEMPCPY=0; AC_SUBST([REPLACE_MEMPCPY]) + REPLACE_MEMSET_EXPLICIT=0; AC_SUBST([REPLACE_MEMSET_EXPLICIT]) REPLACE_STPCPY=0; AC_SUBST([REPLACE_STPCPY]) REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY]) REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL]) diff --git a/modules/memset_explicit b/modules/memset_explicit index 3290bd3679..da16edefd6 100644 --- a/modules/memset_explicit +++ b/modules/memset_explicit @@ -10,7 +10,8 @@ string configure.ac: gl_FUNC_MEMSET_EXPLICIT -gl_CONDITIONAL([GL_COND_OBJ_MEMSET_EXPLICIT], [test $HAVE_MEMSET_EXPLICIT = 0]) +gl_CONDITIONAL([GL_COND_OBJ_MEMSET_EXPLICIT], + [test $HAVE_MEMSET_EXPLICIT = 0 || test $REPLACE_MEMSET_EXPLICIT = 1]) AM_COND_IF([GL_COND_OBJ_MEMSET_EXPLICIT], [ gl_PREREQ_MEMSET_EXPLICIT ]) diff --git a/modules/string b/modules/string index acbd614dcd..eb0b215437 100644 --- a/modules/string +++ b/modules/string @@ -110,6 +110,7 @@ string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \ -e 's|@''REPLACE_MEMPCPY''@|$(REPLACE_MEMPCPY)|g' \ + -e 's|@''REPLACE_MEMSET_EXPLICIT''@|$(REPLACE_MEMSET_EXPLICIT)|g' \ -e 's|@''REPLACE_FREE''@|$(REPLACE_FREE)|g' \ -e 's|@''REPLACE_STPCPY''@|$(REPLACE_STPCPY)|g' \ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \ -- 2.34.1
>From 884c299e8121681d6c5b23878f34c604bed1c5a9 Mon Sep 17 00:00:00 2001 From: Bruno Haible <[email protected]> Date: Fri, 26 Jan 2024 00:18:52 +0100 Subject: [PATCH 3/4] Resolve conflicts for functions introduced in Android API level 34. * m4/posix_spawn.m4 (gl_POSIX_SPAWN_BODY): Test for posix_spawn_file_actions_addchdir_np and posix_spawn_file_actions_addfchdir_np using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. * m4/posix_spawn_faction_addchdir.m4 (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR): Test for posix_spawn_file_actions_addchdir_np using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. * m4/posix_spawn_faction_addfchdir.m4 (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDFCHDIR): Test for posix_spawn_file_actions_addfchdir_np using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. * doc/glibc-functions/posix_spawn_file_actions_addchdir_np.texi: Mention the Android API levels. * doc/glibc-functions/posix_spawn_file_actions_addfchdir_np.texi: Likewise. --- ChangeLog | 17 +++++++++++++++++ .../posix_spawn_file_actions_addchdir_np.texi | 4 ++-- .../posix_spawn_file_actions_addfchdir_np.texi | 4 ++-- m4/posix_spawn.m4 | 8 +++++--- m4/posix_spawn_faction_addchdir.m4 | 6 ++++-- m4/posix_spawn_faction_addfchdir.m4 | 6 ++++-- 6 files changed, 34 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index c46cb60b31..7dbf07fe1c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,23 @@ Resolve conflicts for functions introduced in Android API level 34. + * m4/posix_spawn.m4 (gl_POSIX_SPAWN_BODY): Test for + posix_spawn_file_actions_addchdir_np and + posix_spawn_file_actions_addfchdir_np using gl_CHECK_FUNCS_ANDROID + instead of AC_CHECK_FUNCS_ONCE. + * m4/posix_spawn_faction_addchdir.m4 + (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR): Test for + posix_spawn_file_actions_addchdir_np using gl_CHECK_FUNCS_ANDROID + instead of AC_CHECK_FUNCS_ONCE. + * m4/posix_spawn_faction_addfchdir.m4 + (gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDFCHDIR): Test for + posix_spawn_file_actions_addfchdir_np using gl_CHECK_FUNCS_ANDROID + instead of AC_CHECK_FUNCS_ONCE. + * doc/glibc-functions/posix_spawn_file_actions_addchdir_np.texi: Mention + the Android API levels. + * doc/glibc-functions/posix_spawn_file_actions_addfchdir_np.texi: + Likewise. + * lib/string.in.h (memset_explicit): Consider REPLACE_MEMSET_EXPLICIT. * m4/string_h.m4 (gl_STRING_H_DEFAULTS): Initialize REPLACE_MEMSET_EXPLICIT. diff --git a/doc/glibc-functions/posix_spawn_file_actions_addchdir_np.texi b/doc/glibc-functions/posix_spawn_file_actions_addchdir_np.texi index 7d50ca8091..a55b4517de 100644 --- a/doc/glibc-functions/posix_spawn_file_actions_addchdir_np.texi +++ b/doc/glibc-functions/posix_spawn_file_actions_addchdir_np.texi @@ -13,8 +13,8 @@ Portability problems not fixed by Gnulib: @itemize @item -This function is missing on many non-glibc platforms: -glibc 2.28, macOS 10.13, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.0, Cygwin 3.4.6, mingw, MSVC 14, Android 9.0. +This function is missing on many platforms: +glibc 2.28, macOS 10.13, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.0, Cygwin 3.4.6, mingw, MSVC 14, Android API level 33. @end itemize Note: Gnulib has a module @code{posix_spawn_file_actions_addchdir} that diff --git a/doc/glibc-functions/posix_spawn_file_actions_addfchdir_np.texi b/doc/glibc-functions/posix_spawn_file_actions_addfchdir_np.texi index 8a98195de9..10f66e0a04 100644 --- a/doc/glibc-functions/posix_spawn_file_actions_addfchdir_np.texi +++ b/doc/glibc-functions/posix_spawn_file_actions_addfchdir_np.texi @@ -13,8 +13,8 @@ Portability problems not fixed by Gnulib: @itemize @item -This function is missing on all non-glibc platforms: -glibc 2.28, macOS 10.13, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 3.4.6, mingw, MSVC 14, Android 9.0. +This function is missing on many platforms: +glibc 2.28, macOS 10.13, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 3.4.6, mingw, MSVC 14, Android API level 33. @end itemize Note: Gnulib has a module @code{posix_spawn_file_actions_addfchdir} that diff --git a/m4/posix_spawn.m4 b/m4/posix_spawn.m4 index e66da765ad..0066a45c8b 100644 --- a/m4/posix_spawn.m4 +++ b/m4/posix_spawn.m4 @@ -1,4 +1,4 @@ -# posix_spawn.m4 serial 24 +# posix_spawn.m4 serial 25 dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -36,7 +36,8 @@ AC_DEFUN([gl_POSIX_SPAWN_BODY] if test $ac_cv_func_posix_spawn = yes; then m4_ifdef([gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR], [dnl Module 'posix_spawn_file_actions_addchdir' is present. - AC_CHECK_FUNCS_ONCE([posix_spawn_file_actions_addchdir_np]) + gl_CHECK_FUNCS_ANDROID([posix_spawn_file_actions_addchdir_np], + [[#include <spawn.h>]]) if test $ac_cv_func_posix_spawn_file_actions_addchdir_np = no; then dnl In order to implement the posix_spawn_file_actions_addchdir dnl function, we need to replace the entire posix_spawn facility. @@ -45,7 +46,8 @@ AC_DEFUN([gl_POSIX_SPAWN_BODY] ]) m4_ifdef([gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDFCHDIR], [dnl Module 'posix_spawn_file_actions_addfchdir' is present. - AC_CHECK_FUNCS_ONCE([posix_spawn_file_actions_addfchdir_np]) + gl_CHECK_FUNCS_ANDROID([posix_spawn_file_actions_addfchdir_np], + [[#include <spawn.h>]]) if test $ac_cv_func_posix_spawn_file_actions_addfchdir_np = no; then dnl In order to implement the posix_spawn_file_actions_addfchdir dnl function, we need to replace the entire posix_spawn facility. diff --git a/m4/posix_spawn_faction_addchdir.m4 b/m4/posix_spawn_faction_addchdir.m4 index a65e87c6bb..a22e3a5323 100644 --- a/m4/posix_spawn_faction_addchdir.m4 +++ b/m4/posix_spawn_faction_addchdir.m4 @@ -1,4 +1,4 @@ -# posix_spawn_faction_addchdir.m4 serial 1 +# posix_spawn_faction_addchdir.m4 serial 2 dnl Copyright (C) 2018-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -9,7 +9,9 @@ AC_DEFUN([gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR] AC_REQUIRE([gl_SPAWN_H_DEFAULTS]) AC_REQUIRE([AC_PROG_CC]) gl_POSIX_SPAWN - AC_CHECK_FUNCS_ONCE([posix_spawn_file_actions_addchdir posix_spawn_file_actions_addchdir_np]) + AC_CHECK_FUNCS_ONCE([posix_spawn_file_actions_addchdir]) + gl_CHECK_FUNCS_ANDROID([posix_spawn_file_actions_addchdir_np], + [[#include <spawn.h>]]) if test $ac_cv_func_posix_spawn_file_actions_addchdir = yes; then dnl This function is not yet standardized. Therefore override the dnl system's implementation always. diff --git a/m4/posix_spawn_faction_addfchdir.m4 b/m4/posix_spawn_faction_addfchdir.m4 index a0eafe438a..9bddad5378 100644 --- a/m4/posix_spawn_faction_addfchdir.m4 +++ b/m4/posix_spawn_faction_addfchdir.m4 @@ -1,4 +1,4 @@ -# posix_spawn_faction_addfchdir.m4 serial 1 +# posix_spawn_faction_addfchdir.m4 serial 2 dnl Copyright (C) 2018-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -9,7 +9,9 @@ AC_DEFUN([gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDFCHDIR] AC_REQUIRE([gl_SPAWN_H_DEFAULTS]) AC_REQUIRE([AC_PROG_CC]) gl_POSIX_SPAWN - AC_CHECK_FUNCS_ONCE([posix_spawn_file_actions_addfchdir posix_spawn_file_actions_addfchdir_np]) + AC_CHECK_FUNCS_ONCE([posix_spawn_file_actions_addfchdir]) + gl_CHECK_FUNCS_ANDROID([posix_spawn_file_actions_addfchdir_np], + [[#include <spawn.h>]]) if test $ac_cv_func_posix_spawn_file_actions_addfchdir = yes; then dnl This function is not yet standardized. Therefore override the dnl system's implementation always. -- 2.34.1
>From 6143e4217b409336967a7bf38b79f62d9fa9bd6f Mon Sep 17 00:00:00 2001 From: Bruno Haible <[email protected]> Date: Fri, 26 Jan 2024 00:18:55 +0100 Subject: [PATCH 4/4] Resolve conflicts for functions introduced in Android API level 34. * m4/copy-file-range.m4 (gl_FUNC_COPY_FILE_RANGE): On platforms without glibc, test for copy_file_range using gl_CHECK_FUNCS_ANDROID instead of AC_CHECK_FUNCS_ONCE. Conditionally set REPLACE_COPY_FILE_RANGE. * doc/glibc-functions/copy_file_range.texi: Mention the Android API levels. --- ChangeLog | 6 ++++ doc/glibc-functions/copy_file_range.texi | 4 +-- m4/copy-file-range.m4 | 41 +++++++++++++++--------- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7dbf07fe1c..d4716bdf9e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,12 @@ Resolve conflicts for functions introduced in Android API level 34. + * m4/copy-file-range.m4 (gl_FUNC_COPY_FILE_RANGE): On platforms without + glibc, test for copy_file_range using gl_CHECK_FUNCS_ANDROID instead of + AC_CHECK_FUNCS_ONCE. Conditionally set REPLACE_COPY_FILE_RANGE. + * doc/glibc-functions/copy_file_range.texi: Mention the Android API + levels. + * m4/posix_spawn.m4 (gl_POSIX_SPAWN_BODY): Test for posix_spawn_file_actions_addchdir_np and posix_spawn_file_actions_addfchdir_np using gl_CHECK_FUNCS_ANDROID diff --git a/doc/glibc-functions/copy_file_range.texi b/doc/glibc-functions/copy_file_range.texi index f10271c157..979a3ffd69 100644 --- a/doc/glibc-functions/copy_file_range.texi +++ b/doc/glibc-functions/copy_file_range.texi @@ -21,8 +21,8 @@ @itemize @item This function exists only on Linux and FreeBSD and is therefore -missing on many non-glibc platforms: -glibc 2.26, macOS 11.1, FreeBSD 12.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android 9.0. +missing on many platforms: +glibc 2.26, macOS 11.1, FreeBSD 12.0, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.4, Cygwin 2.9, mingw, MSVC 14, Android API level 33. But the replacement function is only a stub: It always fails with error ENOSYS. @item diff --git a/m4/copy-file-range.m4 b/m4/copy-file-range.m4 index e919854951..443e598ba5 100644 --- a/m4/copy-file-range.m4 +++ b/m4/copy-file-range.m4 @@ -1,4 +1,4 @@ -# copy-file-range.m4 +# copy-file-range.m4 serial 5 dnl Copyright 2019-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -17,22 +17,33 @@ AC_DEFUN([gl_FUNC_COPY_FILE_RANGE] dnl Programs that use copy_file_range must fall back on read+write dnl anyway, and there's little point to substituting the Gnulib stub dnl for a glibc stub. - AC_CACHE_CHECK([for copy_file_range], [gl_cv_func_copy_file_range], - [AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include <unistd.h> - ]], - [[ssize_t (*func) (int, off_t *, int, off_t *, size_t, unsigned) - = copy_file_range; - return func (0, 0, 0, 0, 0, 0) & 127; - ]]) - ], - [gl_cv_func_copy_file_range=yes], - [gl_cv_func_copy_file_range=no]) - ]) - + case "$host_os" in + *-gnu* | gnu*) + AC_CACHE_CHECK([for copy_file_range], [gl_cv_func_copy_file_range], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include <unistd.h> + ]], + [[ssize_t (*func) (int, off_t *, int, off_t *, size_t, unsigned) + = copy_file_range; + return func (0, 0, 0, 0, 0, 0) & 127; + ]]) + ], + [gl_cv_func_copy_file_range=yes], + [gl_cv_func_copy_file_range=no]) + ]) + gl_cv_onwards_func_copy_file_range="$gl_cv_func_copy_file_range" + ;; + *) + gl_CHECK_FUNCS_ANDROID([copy_file_range], [[#include <unistd.h>]]) + gl_cv_func_copy_file_range="$ac_cv_func_copy_file_range" + ;; + esac if test "$gl_cv_func_copy_file_range" != yes; then HAVE_COPY_FILE_RANGE=0 + case "$gl_cv_onwards_func_copy_file_range" in + future*) REPLACE_COPY_FILE_RANGE=1 ;; + esac else AC_DEFINE([HAVE_COPY_FILE_RANGE], 1, [Define to 1 if the function copy_file_range exists.]) -- 2.34.1
