texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: update gnulib in base directory


From: Patrice Dumas
Subject: branch master updated: update gnulib in base directory
Date: Tue, 01 Oct 2024 13:02:22 -0400

This is an automated email from the git hooks/post-receive script.

pertusus pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new 051a1d5ec2 update gnulib in base directory
051a1d5ec2 is described below

commit 051a1d5ec2f70783fa96901ecd0ea119c8529de7
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Tue Oct 1 19:02:26 2024 +0200

    update gnulib in base directory
---
 ChangeLog                          |   4 +
 gnulib/lib/Makefile.am             |   6 ++
 gnulib/lib/_Noreturn.h             |   2 +-
 gnulib/lib/c++defs.h               |  29 ++++---
 gnulib/lib/c32to-impl.h            |  11 +++
 gnulib/lib/errno.in.h              |   7 ++
 gnulib/lib/error.c                 | 170 +++++++++++++++----------------------
 gnulib/lib/error.in.h              |  53 +++++++++++-
 gnulib/lib/fcntl.in.h              |   4 +-
 gnulib/lib/getopt-cdefs.in.h       |  10 ++-
 gnulib/lib/getopt-pfx-core.h       |   7 ++
 gnulib/lib/glthread/once.h         |  10 ++-
 gnulib/lib/intprops-internal.h     |   4 +-
 gnulib/lib/inttypes.in.h           |   8 +-
 gnulib/lib/langinfo.in.h           |   4 +-
 gnulib/lib/libc-config.h           |   5 ++
 gnulib/lib/locale.in.h             |   4 +-
 gnulib/lib/pthread.in.h            |  28 +++---
 gnulib/lib/sched.in.h              |   4 +-
 gnulib/lib/stddef.in.h             |   2 +-
 gnulib/lib/stdio.in.h              |  40 +++++----
 gnulib/lib/stdlib.in.h             |  69 ++++++++-------
 gnulib/lib/strerror-override.c     |   5 ++
 gnulib/lib/strerror-override.h     |   3 +-
 gnulib/lib/string.in.h             |  32 +++----
 gnulib/lib/strings.in.h            |   2 +-
 gnulib/lib/sys_stat.in.h           |  20 ++---
 gnulib/lib/time.in.h               |  54 ++++++++++--
 gnulib/lib/uchar.in.h              |  48 +++++------
 gnulib/lib/unicase/tolower.h       |  34 ++++++--
 gnulib/lib/unictype.in.h           |   6 +-
 gnulib/lib/unictype/ctype_alnum.h  | 118 ++++++++++++++-----------
 gnulib/lib/unictype/ctype_alpha.h  | 118 ++++++++++++++-----------
 gnulib/lib/unictype/ctype_blank.h  |   2 +-
 gnulib/lib/unictype/ctype_cntrl.h  |   2 +-
 gnulib/lib/unictype/ctype_digit.h  |   2 +-
 gnulib/lib/unictype/ctype_graph.h  | 138 +++++++++++++++++-------------
 gnulib/lib/unictype/ctype_lower.h  |  14 +--
 gnulib/lib/unictype/ctype_print.h  | 138 +++++++++++++++++-------------
 gnulib/lib/unictype/ctype_punct.h  |  78 ++++++++++-------
 gnulib/lib/unictype/ctype_space.h  |   2 +-
 gnulib/lib/unictype/ctype_upper.h  |   8 +-
 gnulib/lib/unictype/ctype_xdigit.h |   2 +-
 gnulib/lib/unistd.in.h             |  54 ++++++------
 gnulib/lib/uniwidth/width0.h       |  39 +++++----
 gnulib/lib/uniwidth/width2.h       |   2 +-
 gnulib/lib/vasnprintf.c            |   6 +-
 gnulib/lib/verify.h                |   9 +-
 gnulib/lib/warn-on-use.h           |   8 +-
 gnulib/lib/wchar.in.h              |  80 +++++++++--------
 gnulib/lib/wctype.in.h             |  18 ++--
 gnulib/lib/xalloc-oversized.h      |   3 +-
 gnulib/m4/builtin-expect.m4        |   4 +-
 gnulib/m4/errno_h.m4               |   5 +-
 gnulib/m4/error_h.m4               |  17 ++--
 gnulib/m4/gnulib-common.m4         |  59 +++++++++++--
 gnulib/m4/gnulib-comp.m4           |  59 ++++++++-----
 gnulib/m4/gnulib-tool.m4           |   5 +-
 gnulib/m4/host-cpu-c-abi.m4        |   4 +-
 gnulib/m4/iswdigit.m4              |  18 ++--
 gnulib/m4/iswxdigit.m4             |  18 ++--
 gnulib/m4/locale-en.m4             | 137 ++++++++++++++++++++++++++++++
 gnulib/m4/locale-fr.m4             |  22 +++--
 gnulib/m4/locale-ja.m4             |   7 +-
 gnulib/m4/locale-zh.m4             |   7 +-
 gnulib/m4/mbrtoc32.m4              |   4 +-
 gnulib/m4/mbrtowc.m4               |  34 ++++----
 gnulib/m4/std-gnu11.m4             |  19 +++--
 gnulib/m4/stdlib_h.m4              |  16 ++--
 gnulib/m4/time_h.m4                |   7 +-
 gnulib/m4/unictype_h.m4            |   3 +-
 gnulib/m4/wcrtomb.m4               |  10 +--
 72 files changed, 1220 insertions(+), 761 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9836e9c105..54d02cc80f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2024-10-01  Patrice Dumas  <pertusus@free.fr>
+
+       update gnulib in base directory
+
 2024-07-27  Patrice Dumas  <pertusus@free.fr>
 
        * po/Makevars (XGETTEXT_OPTIONS): remove redundant keyword option.
diff --git a/gnulib/lib/Makefile.am b/gnulib/lib/Makefile.am
index 0c49c6cfb7..297d346378 100644
--- a/gnulib/lib/Makefile.am
+++ b/gnulib/lib/Makefile.am
@@ -644,10 +644,12 @@ EXTRA_DIST += getopt-cdefs.in.h getopt-core.h 
getopt-ext.h getopt-pfx-core.h get
 
 ## begin gnulib module getprogname
 
+if gl_GNULIB_ENABLED_getprogname
 if GL_COND_OBJ_GETPROGNAME
 libgnu_a_SOURCES += getprogname.c
 endif
 
+endif
 EXTRA_DIST += getprogname.h
 
 ## end   gnulib module getprogname
@@ -2488,11 +2490,14 @@ time.h: time.in.h $(top_builddir)/config.status 
$(CXXDEFS_H) $(ARG_NONNULL_H) $(
              -e 's|@''HAVE_TIMESPEC_GET''@|$(HAVE_TIMESPEC_GET)|g' \
              -e 's|@''HAVE_TIMESPEC_GETRES''@|$(HAVE_TIMESPEC_GETRES)|g' \
              -e 's|@''HAVE_TIMEZONE_T''@|$(HAVE_TIMEZONE_T)|g' \
+             -e 's|@''HAVE_TZALLOC''@|$(HAVE_TZALLOC)|g' \
              -e 's|@''REPLACE_CTIME''@|$(REPLACE_CTIME)|g' \
              -e 's|@''REPLACE_GMTIME''@|$(REPLACE_GMTIME)|g' \
              -e 's|@''REPLACE_LOCALTIME''@|$(REPLACE_LOCALTIME)|g' \
              -e 's|@''REPLACE_LOCALTIME_R''@|$(REPLACE_LOCALTIME_R)|g' \
+             -e 's|@''REPLACE_LOCALTIME_RZ''@|$(REPLACE_LOCALTIME_RZ)|g' \
              -e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
+             -e 's|@''REPLACE_MKTIME_Z''@|$(REPLACE_MKTIME_Z)|g' \
              -e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
              -e 's|@''REPLACE_STRFTIME''@|$(REPLACE_STRFTIME)|g' \
              -e 's|@''REPLACE_TIME''@|$(REPLACE_TIME)|g' \
@@ -2712,6 +2717,7 @@ unictype.h: unictype.in.h
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_GRAPHEME_EXTEND_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_EXTEND_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_OTHER_GRAPHEME_EXTEND_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_OTHER_GRAPHEME_EXTEND_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_GRAPHEME_LINK_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_GRAPHEME_LINK_DLL_VARIABLE)/g'
 \
+             -e 
's/@''GNULIB_UNICTYPE_PROPERTY_MODIFIER_COMBINING_MARK_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_MODIFIER_COMBINING_MARK_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_BIDI_CONTROL_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_BIDI_CONTROL_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_BIDI_LEFT_TO_RIGHT_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_BIDI_LEFT_TO_RIGHT_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT_DLL_VARIABLE)/g'
 \
diff --git a/gnulib/lib/_Noreturn.h b/gnulib/lib/_Noreturn.h
index 7326bd4773..9806f2b1a0 100644
--- a/gnulib/lib/_Noreturn.h
+++ b/gnulib/lib/_Noreturn.h
@@ -34,7 +34,7 @@
 # elif ((!defined __cplusplus || defined __clang__) \
         && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
             || (!defined __STRICT_ANSI__ \
-                && (4 < __GNUC__ + (7 <= __GNUC_MINOR__) \
+                && (4 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __clang__ 
\
                     || (defined __apple_build_version__ \
                         ? 6000000 <= __apple_build_version__ \
                         : 3 < __clang_major__ + (5 <= __clang_minor__))))))
diff --git a/gnulib/lib/c++defs.h b/gnulib/lib/c++defs.h
index af5e9bb2b3..7843359caa 100644
--- a/gnulib/lib/c++defs.h
+++ b/gnulib/lib/c++defs.h
@@ -104,10 +104,15 @@
 # define _GL_EXTERN_C_FUNC
 #endif
 
-/* _GL_FUNCDECL_RPL (func, rettype, parameters[, attributes]);
+/* _GL_FUNCDECL_RPL (func, rettype, parameters, [attributes]);
    declares a replacement function, named rpl_func, with the given prototype,
    consisting of return type, parameters, and attributes.
-   Example:
+   Although attributes are optional, the comma before them is required
+   for portability to C17 and earlier.  The attribute _GL_ATTRIBUTE_NOTHROW,
+   if needed, must be placed after the _GL_FUNCDECL_RPL invocation,
+   at the end of the declaration.
+   Examples:
+     _GL_FUNCDECL_RPL (free, void, (void *ptr), ) _GL_ATTRIBUTE_NOTHROW;
      _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...),
                                   _GL_ARG_NONNULL ((1)));
 
@@ -116,24 +121,22 @@
    because
      [[...]] extern "C" <declaration>;
    is invalid syntax in C++.)
-
-   Note: The attribute _GL_ATTRIBUTE_NOTHROW, if needed, must be placed outside
-   of the _GL_FUNCDECL_RPL invocation, at the end of the declaration.
  */
 #define _GL_FUNCDECL_RPL(func,rettype,parameters,...) \
   _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters, __VA_ARGS__)
 #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters,...) \
   _GL_EXTERN_C_FUNC __VA_ARGS__ rettype rpl_func parameters
 
-/* _GL_FUNCDECL_SYS (func, rettype, parameters[, attributes]);
+/* _GL_FUNCDECL_SYS (func, rettype, parameters, [attributes]);
    declares the system function, named func, with the given prototype,
    consisting of return type, parameters, and attributes.
-   Example:
-     _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...),
-                                  _GL_ARG_NONNULL ((1)));
-
-   Note: The attribute _GL_ATTRIBUTE_NOTHROW, if needed, must be placed outside
-   of the _GL_FUNCDECL_SYS invocation, at the end of the declaration.
+   Although attributes are optional, the comma before them is required
+   for portability to C17 and earlier.  The attribute _GL_ATTRIBUTE_NOTHROW,
+   if needed, must be placed after the _GL_FUNCDECL_RPL invocation,
+   at the end of the declaration.
+   Examples:
+     _GL_FUNCDECL_SYS (getumask, mode_t, (void), ) _GL_ATTRIBUTE_NOTHROW;
+     _GL_FUNCDECL_SYS (posix_openpt, int, (int flags), 
_GL_ATTRIBUTE_NODISCARD);
  */
 #define _GL_FUNCDECL_SYS(func,rettype,parameters,...) \
   _GL_EXTERN_C_FUNC __VA_ARGS__ rettype func parameters
@@ -314,7 +317,7 @@
     _GL_WARN_ON_USE (func, \
                      "The symbol ::" #func " refers to the system function. " \
                      "Use " #namespace "::" #func " instead.")
-# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+# elif (__GNUC__ >= 3 || defined __clang__) && GNULIB_STRICT_CHECKING
 #  define _GL_CXXALIASWARN_2(func,namespace) \
      extern __typeof__ (func) func
 # else
diff --git a/gnulib/lib/c32to-impl.h b/gnulib/lib/c32to-impl.h
index 32039c612d..2299ab75ba 100644
--- a/gnulib/lib/c32to-impl.h
+++ b/gnulib/lib/c32to-impl.h
@@ -73,11 +73,22 @@ FUNC (wint_t wc)
   /* The wchar_t encoding is UTF-16.
      The char32_t encoding is UCS-4.  */
 
+# if defined _WIN32 && !defined __CYGWIN__
+  /* On native Windows, in the UTF-8 locale, towlower and towupper are
+     lacking (at least) the mappings for ISO-8859-1 characters, such as
+     0x00C9 <-> 0x00E9.  Since it is expensive to test whether the locale
+     encoding is UTF-8, ignore the system's WCHAR_FUNC altogether.  */
+  if (wc != WEOF)
+    return UCS_FUNC (wc);
+  else
+    return wc;
+# else
   if (wc == WEOF || wc == (wchar_t) wc)
     /* wc is in the range for the tow* functions.  */
     return WCHAR_FUNC (wc);
   else
     return UCS_FUNC (wc);
+# endif
 
 #else /* macOS, FreeBSD, NetBSD, OpenBSD, HP-UX, Solaris, Minix, Android */
   /* char32_t and wchar_t are equivalent.  */
diff --git a/gnulib/lib/errno.in.h b/gnulib/lib/errno.in.h
index ba927037f6..18eb8a0c58 100644
--- a/gnulib/lib/errno.in.h
+++ b/gnulib/lib/errno.in.h
@@ -270,10 +270,17 @@
 #  define GNULIB_defined_ENOTRECOVERABLE 1
 # endif
 
+/* On LynxOS, the macro EILSEQ is not defined.  */
 # ifndef EILSEQ
 #  define EILSEQ 2015
 #  define GNULIB_defined_EILSEQ 1
 # endif
 
+/* On Haiku, the macro ESOCKTNOSUPPORT is not defined.  */
+# ifndef ESOCKTNOSUPPORT
+#  define ESOCKTNOSUPPORT 2016
+#  define GNULIB_defined_ESOCKTNOSUPPORT 1
+# endif
+
 #endif /* _@GUARD_PREFIX@_ERRNO_H */
 #endif /* _@GUARD_PREFIX@_ERRNO_H */
diff --git a/gnulib/lib/error.c b/gnulib/lib/error.c
index c53dfeb60d..837d5e56c6 100644
--- a/gnulib/lib/error.c
+++ b/gnulib/lib/error.c
@@ -1,25 +1,32 @@
 /* Error handler for noninteractive utilities
-   Copyright (C) 1990-1998, 2000-2007, 2009-2024 Free Software Foundation, Inc.
+   Copyright (C) 1990-2024 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
-   This file is free software: you can redistribute it and/or modify
-   it under the terms of the GNU Lesser General Public License as
-   published by the Free Software Foundation; either version 2.1 of the
-   License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
 
-   This file is distributed in the hope that it will be useful,
+   The GNU C Library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public License
-   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
 
 /* Written by David MacKenzie <djm@gnu.ai.mit.edu>.  */
 
 #if !_LIBC
 # include <config.h>
 # define _GL_NO_INLINE_ERROR
+# define __error_internal(status, err, fmt, args, flags) \
+                  verror (status, err, fmt, args)
+# define __error_at_line_internal(status, err, file, line, fmt, args, flags) \
+                  verror_at_line (status, err, file, line, fmt, args)
+# define error_tail(status, err, fmt, args, flags) \
+        error_tail (status, err, fmt, args)
 #endif
 
 #include <error.h>
@@ -85,7 +92,7 @@ extern void __error_at_line (int status, int errnum, const 
char *file_name,
 # undef putc
 # define putc(c, fp) _IO_putc (c, fp)
 
-# include <bits/libc-lock.h>
+# include <libc-lock.h>
 
 #else /* not _LIBC */
 
@@ -123,6 +130,13 @@ int strerror_r (int errnum, char *buf, size_t buflen);
 # if GNULIB_STRERROR_R_POSIX || HAVE_STRERROR_R || defined strerror_r
 #  define __strerror_r strerror_r
 # endif /* GNULIB_STRERROR_R_POSIX || HAVE_STRERROR_R || defined strerror_r */
+
+# if GNULIB_defined_verror
+#  undef verror
+# endif
+# if GNULIB_defined_verror_at_line
+#  undef verror_at_line
+# endif
 #endif  /* not _LIBC */
 
 #if !_LIBC
@@ -202,75 +216,19 @@ print_errno_message (int errnum)
 }
 
 static void _GL_ATTRIBUTE_FORMAT_PRINTF_STANDARD (3, 0) _GL_ARG_NONNULL ((3))
-error_tail (int status, int errnum, const char *message, va_list args)
+error_tail (int status, int errnum, const char *message, va_list args,
+            unsigned int mode_flags)
 {
 #if _LIBC
-  if (_IO_fwide (stderr, 0) > 0)
-    {
-      size_t len = strlen (message) + 1;
-      wchar_t *wmessage = NULL;
-      mbstate_t st;
-      size_t res;
-      const char *tmp;
-      bool use_malloc = false;
-
-      while (1)
-        {
-          if (__libc_use_alloca (len * sizeof (wchar_t)))
-            wmessage = (wchar_t *) alloca (len * sizeof (wchar_t));
-          else
-            {
-              if (!use_malloc)
-                wmessage = NULL;
-
-              wchar_t *p = (wchar_t *) realloc (wmessage,
-                                                len * sizeof (wchar_t));
-              if (p == NULL)
-                {
-                  free (wmessage);
-                  fputws_unlocked (L"out of memory\n", stderr);
-                  return;
-                }
-              wmessage = p;
-              use_malloc = true;
-            }
-
-          memset (&st, '\0', sizeof (st));
-          tmp = message;
-
-          res = mbsrtowcs (wmessage, &tmp, len, &st);
-          if (res != len)
-            break;
-
-          if (__builtin_expect (len >= SIZE_MAX / sizeof (wchar_t) / 2, 0))
-            {
-              /* This really should not happen if everything is fine.  */
-              res = (size_t) -1;
-              break;
-            }
-
-          len *= 2;
-        }
-
-      if (res == (size_t) -1)
-        {
-          /* The string cannot be converted.  */
-          if (use_malloc)
-            {
-              free (wmessage);
-              use_malloc = false;
-            }
-          wmessage = (wchar_t *) L"???";
-        }
-
-      __vfwprintf (stderr, wmessage, args);
-
-      if (use_malloc)
-        free (wmessage);
-    }
-  else
+  int ret = __vfxprintf (stderr, message, args, mode_flags);
+  if (ret < 0 && errno == ENOMEM && _IO_fwide (stderr, 0) > 0)
+    /* Leave a trace in case the heap allocation of the message string
+       failed.  */
+    fputws_unlocked (L"out of memory\n", stderr);
+#else
+  vfprintf (stderr, message, args);
 #endif
-    vfprintf (stderr, message, args);
+  va_end (args);
 
   ++error_message_count;
   if (errnum)
@@ -291,16 +249,14 @@ error_tail (int status, int errnum, const char *message, 
va_list args)
    If ERRNUM is nonzero, print its corresponding system error message.
    Exit with status STATUS if it is nonzero.  */
 void
-error (int status, int errnum, const char *message, ...)
+__error_internal (int status, int errnum, const char *message,
+                  va_list args, unsigned int mode_flags)
 {
-  va_list args;
-
-#if defined _LIBC && defined __libc_ptf_call
+#if defined _LIBC
   /* We do not want this call to be cut short by a thread
      cancellation.  Therefore disable cancellation for now.  */
   int state = PTHREAD_CANCEL_ENABLE;
-  __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
-                   0);
+  __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
 #endif
 
   flush_stdout ();
@@ -318,28 +274,32 @@ error (int status, int errnum, const char *message, ...)
 #endif
     }
 
-  va_start (args, message);
-  error_tail (status, errnum, message, args);
-  va_end (args);
+  error_tail (status, errnum, message, args, mode_flags);
 
 #ifdef _LIBC
   _IO_funlockfile (stderr);
-# ifdef __libc_ptf_call
-  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
-# endif
+  __pthread_setcancelstate (state, NULL);
 #endif
 }
+
+void
+error (int status, int errnum, const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  __error_internal (status, errnum, message, ap, 0);
+  va_end (ap);
+}
 
 /* Sometimes we want to have at most one error per line.  This
    variable controls whether this mode is selected or not.  */
 int error_one_per_line;
 
 void
-error_at_line (int status, int errnum, const char *file_name,
-               unsigned int line_number, const char *message, ...)
+__error_at_line_internal (int status, int errnum, const char *file_name,
+                          unsigned int line_number, const char *message,
+                          va_list args, unsigned int mode_flags)
 {
-  va_list args;
-
   if (error_one_per_line)
     {
       static const char *old_file_name;
@@ -358,12 +318,11 @@ error_at_line (int status, int errnum, const char 
*file_name,
       old_line_number = line_number;
     }
 
-#if defined _LIBC && defined __libc_ptf_call
+#if defined _LIBC
   /* We do not want this call to be cut short by a thread
      cancellation.  Therefore disable cancellation for now.  */
   int state = PTHREAD_CANCEL_ENABLE;
-  __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
-                   0);
+  __pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
 #endif
 
   flush_stdout ();
@@ -389,18 +348,25 @@ error_at_line (int status, int errnum, const char 
*file_name,
            file_name, line_number);
 #endif
 
-  va_start (args, message);
-  error_tail (status, errnum, message, args);
-  va_end (args);
+  error_tail (status, errnum, message, args, mode_flags);
 
 #ifdef _LIBC
   _IO_funlockfile (stderr);
-# ifdef __libc_ptf_call
-  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
-# endif
+  __pthread_setcancelstate (state, NULL);
 #endif
 }
 
+void
+error_at_line (int status, int errnum, const char *file_name,
+               unsigned int line_number, const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  __error_at_line_internal (status, errnum, file_name, line_number,
+                            message, ap, 0);
+  va_end (ap);
+}
+
 #ifdef _LIBC
 /* Make the weak alias.  */
 # undef error
diff --git a/gnulib/lib/error.in.h b/gnulib/lib/error.in.h
index 4deaf98ded..4804c8c465 100644
--- a/gnulib/lib/error.in.h
+++ b/gnulib/lib/error.in.h
@@ -30,12 +30,15 @@
 #ifndef _@GUARD_PREFIX@_ERROR_H
 #define _@GUARD_PREFIX@_ERROR_H
 
-/* This file uses _GL_ATTRIBUTE_ALWAYS_INLINE, _GL_ATTRIBUTE_FORMAT,
-  _GL_ATTRIBUTE_MAYBE_UNUSED.  */
+/* This file uses _GL_ATTRIBUTE_ALWAYS_INLINE, _GL_ATTRIBUTE_COLD,
+   _GL_ATTRIBUTE_FORMAT, _GL_ATTRIBUTE_MAYBE_UNUSED.  */
 #if !_GL_CONFIG_H_INCLUDED
  #error "Please include config.h first."
 #endif
 
+/* Get va_list.  */
+#include <stdarg.h>
+
 /* Get 'unreachable'.  */
 #include <stddef.h>
 
@@ -93,6 +96,7 @@ extern "C" {
 # endif
 _GL_FUNCDECL_RPL (error, void,
                   (int __status, int __errnum, const char *__format, ...),
+                  _GL_ATTRIBUTE_COLD
                   _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 3, 
4)));
 _GL_CXXALIAS_RPL (error, void,
                   (int __status, int __errnum, const char *__format, ...));
@@ -105,6 +109,7 @@ _GL_CXXALIAS_RPL (error, void,
 # if ! @HAVE_ERROR@
 _GL_FUNCDECL_SYS (error, void,
                   (int __status, int __errnum, const char *__format, ...),
+                  _GL_ATTRIBUTE_COLD
                   _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 3, 
4)));
 # endif
 _GL_CXXALIAS_SYS (error, void,
@@ -117,7 +122,7 @@ _GL_CXXALIAS_SYS (error, void,
 #    pragma GCC diagnostic ignored "-Wattributes"
 _GL_ATTRIBUTE_MAYBE_UNUSED
 static void
-_GL_ATTRIBUTE_ALWAYS_INLINE
+_GL_ATTRIBUTE_ALWAYS_INLINE _GL_ATTRIBUTE_COLD
 _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 3, 4))
 _gl_inline_error (int __status, int __errnum, const char *__format, ...)
 {
@@ -148,6 +153,7 @@ _GL_CXXALIASWARN (error);
 _GL_FUNCDECL_RPL (error_at_line, void,
                   (int __status, int __errnum, const char *__filename,
                    unsigned int __lineno, const char *__format, ...),
+                  _GL_ATTRIBUTE_COLD
                   _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 5, 
6)));
 _GL_CXXALIAS_RPL (error_at_line, void,
                   (int __status, int __errnum, const char *__filename,
@@ -162,6 +168,7 @@ _GL_CXXALIAS_RPL (error_at_line, void,
 _GL_FUNCDECL_SYS (error_at_line, void,
                   (int __status, int __errnum, const char *__filename,
                    unsigned int __lineno, const char *__format, ...),
+                  _GL_ATTRIBUTE_COLD
                   _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 5, 
6)));
 # endif
 _GL_CXXALIAS_SYS (error_at_line, void,
@@ -175,7 +182,7 @@ _GL_CXXALIAS_SYS (error_at_line, void,
 #    pragma GCC diagnostic ignored "-Wattributes"
 _GL_ATTRIBUTE_MAYBE_UNUSED
 static void
-_GL_ATTRIBUTE_ALWAYS_INLINE
+_GL_ATTRIBUTE_ALWAYS_INLINE _GL_ATTRIBUTE_COLD
 _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_ERROR, 5, 6))
 _gl_inline_error_at_line (int __status, int __errnum, const char *__filename,
                           unsigned int __lineno, const char *__format, ...)
@@ -196,6 +203,44 @@ _gl_inline_error_at_line (int __status, int __errnum, 
const char *__filename,
 #endif
 _GL_CXXALIASWARN (error_at_line);
 
+/* Print a message with 'vfprintf (stderr, FORMAT, ARGS)';
+   if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
+   If STATUS is nonzero, terminate the program with 'exit (STATUS)'.
+   Use the globals error_print_progname and error_message_count similarly
+   to error().  */
+
+extern void verror (int __status, int __errnum, const char *__format,
+                    va_list __args)
+     _GL_ATTRIBUTE_COLD
+     _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, 3, 0));
+#ifndef _GL_NO_INLINE_ERROR
+# ifndef verror
+#  define verror(status, ...) \
+     __gl_error_call (verror, status, __VA_ARGS__)
+#  define GNULIB_defined_verror 1
+# endif
+#endif
+
+/* Print a message with 'vfprintf (stderr, FORMAT, ARGS)';
+   if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
+   If STATUS is nonzero, terminate the program with 'exit (STATUS)'.
+   If FNAME is not NULL, prepend the message with "FNAME:LINENO:".
+   Use the globals error_print_progname, error_message_count, and
+   error_one_per_line similarly to error_at_line().  */
+
+extern void verror_at_line (int __status, int __errnum, const char *__fname,
+                            unsigned int __lineno, const char *__format,
+                            va_list __args)
+     _GL_ATTRIBUTE_COLD
+     _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, 5, 0));
+#ifdef _GL_NO_INLINE_ERROR
+# ifndef verror_at_line
+#  define verror_at_line(status, ...) \
+     __gl_error_call (verror_at_line, status, __VA_ARGS__)
+#  define GNULIB_defined_verror_at_line 1
+# endif
+#endif
+
 /* If NULL, error will flush stdout, then print on stderr the program
    name, a colon and a space.  Otherwise, error will call this
    function without parameters instead.  */
diff --git a/gnulib/lib/fcntl.in.h b/gnulib/lib/fcntl.in.h
index 8b8274295a..fc65d40bc0 100644
--- a/gnulib/lib/fcntl.in.h
+++ b/gnulib/lib/fcntl.in.h
@@ -141,14 +141,14 @@ _GL_CXXALIASWARN (creat);
 #   undef fcntl
 #   define fcntl rpl_fcntl
 #  endif
-_GL_FUNCDECL_RPL (fcntl, int, (int fd, int action, ...));
+_GL_FUNCDECL_RPL (fcntl, int, (int fd, int action, ...), );
 _GL_CXXALIAS_RPL (fcntl, int, (int fd, int action, ...));
 #  if !GNULIB_defined_rpl_fcntl
 #   define GNULIB_defined_rpl_fcntl 1
 #  endif
 # else
 #  if !@HAVE_FCNTL@
-_GL_FUNCDECL_SYS (fcntl, int, (int fd, int action, ...));
+_GL_FUNCDECL_SYS (fcntl, int, (int fd, int action, ...), );
 #   if !GNULIB_defined_fcntl
 #    define GNULIB_defined_fcntl 1
 #   endif
diff --git a/gnulib/lib/getopt-cdefs.in.h b/gnulib/lib/getopt-cdefs.in.h
index a1d304d49e..9d704a9f6e 100644
--- a/gnulib/lib/getopt-cdefs.in.h
+++ b/gnulib/lib/getopt-cdefs.in.h
@@ -46,10 +46,14 @@
 # endif
 #endif
 
+#if defined __clang__
+  /* clang really only groks GNU C 4.2, regardless of its value of __GNUC__.  
*/
+# undef __GNUC_PREREQ
+# define __GNUC_PREREQ(maj, min) ((maj) < 4 + ((min) <= 2))
+#endif
 #ifndef __GNUC_PREREQ
-# if defined __GNUC__ && defined __GNUC_VERSION__
-# define __GNUC_PREREQ(maj, min) \
-        ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+# if defined __GNUC__ && defined __GNUC_MINOR__
+#  define __GNUC_PREREQ(maj, min) ((maj) < __GNUC__ + ((min) <= 
__GNUC_MINOR__))
 # else
 #  define __GNUC_PREREQ(maj, min) 0
 # endif
diff --git a/gnulib/lib/getopt-pfx-core.h b/gnulib/lib/getopt-pfx-core.h
index 78b7816aa4..df2cb183a5 100644
--- a/gnulib/lib/getopt-pfx-core.h
+++ b/gnulib/lib/getopt-pfx-core.h
@@ -31,6 +31,13 @@
    functions and variables.  Renaming avoids problems with some
    compilers and linkers.  */
 #ifdef __GETOPT_PREFIX
+
+/* Include platform-dependent header files that may declare getopt() and
+   friends.  */
+# if defined _AIX || defined __hpux || defined __sun || defined __QNX__
+#  include <stdio.h>
+# endif
+
 # ifndef __GETOPT_ID
 #  define __GETOPT_CONCAT(x, y) x ## y
 #  define __GETOPT_XCONCAT(x, y) __GETOPT_CONCAT (x, y)
diff --git a/gnulib/lib/glthread/once.h b/gnulib/lib/glthread/once.h
index fd00e42350..2452f88dc1 100644
--- a/gnulib/lib/glthread/once.h
+++ b/gnulib/lib/glthread/once.h
@@ -124,7 +124,10 @@ extern int glthread_in_use (void);
 #  pragma weak pthread_mutex_lock
 #  pragma weak pthread_mutex_unlock
 #  pragma weak pthread_mutex_destroy
-#  pragma weak pthread_rwlock_init
+/* Work around clang bug <https://github.com/llvm/llvm-project/issues/104670> 
*/
+#  ifndef pthread_rwlock_init
+#   pragma weak pthread_rwlock_init
+#  endif
 #  pragma weak pthread_rwlock_rdlock
 #  pragma weak pthread_rwlock_wrlock
 #  pragma weak pthread_rwlock_unlock
@@ -138,7 +141,10 @@ extern int glthread_in_use (void);
 #  pragma weak pthread_mutexattr_init
 #  pragma weak pthread_mutexattr_settype
 #  pragma weak pthread_mutexattr_destroy
-#  pragma weak pthread_rwlockattr_init
+/* Work around clang bug <https://github.com/llvm/llvm-project/issues/104670> 
*/
+#  ifndef pthread_rwlockattr_init
+#   pragma weak pthread_rwlockattr_init
+#  endif
 #  if __GNU_LIBRARY__ > 1
 #   pragma weak pthread_rwlockattr_setkind_np
 #  endif
diff --git a/gnulib/lib/intprops-internal.h b/gnulib/lib/intprops-internal.h
index 443024c665..c8cc0e2019 100644
--- a/gnulib/lib/intprops-internal.h
+++ b/gnulib/lib/intprops-internal.h
@@ -21,7 +21,7 @@
 #include <limits.h>
 
 /* Pacify GCC 13.2 in some calls to _GL_EXPR_SIGNED.  */
-#if defined __GNUC__ && 4 < __GNUC__ + (3 <= __GNUC_MINOR__)
+#if 4 < __GNUC__ + (3 <= __GNUC_MINOR__) && !defined __clang__
 # pragma GCC diagnostic ignored "-Wtype-limits"
 #endif
 
@@ -163,7 +163,7 @@
 #if _GL_HAS_BUILTIN_MUL_OVERFLOW
 # if ((9 < __GNUC__ + (3 <= __GNUC_MINOR__) \
        || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__)) \
-      && !defined __EDG__)
+      && !defined __clang__ && !defined __EDG__)
 #  define _GL_INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r)
 # else
    /* Work around GCC bug 91450.  */
diff --git a/gnulib/lib/inttypes.in.h b/gnulib/lib/inttypes.in.h
index e9c80f3dca..747f1bb787 100644
--- a/gnulib/lib/inttypes.in.h
+++ b/gnulib/lib/inttypes.in.h
@@ -913,11 +913,11 @@ extern "C" {
 #   undef imaxabs
 #   define imaxabs rpl_imaxabs
 #  endif
-_GL_FUNCDECL_RPL (imaxabs, intmax_t, (intmax_t x));
+_GL_FUNCDECL_RPL (imaxabs, intmax_t, (intmax_t x), );
 _GL_CXXALIAS_RPL (imaxabs, intmax_t, (intmax_t x));
 # else
 #  if !@HAVE_DECL_IMAXABS@
-_GL_FUNCDECL_SYS (imaxabs, intmax_t, (intmax_t x));
+_GL_FUNCDECL_SYS (imaxabs, intmax_t, (intmax_t x), );
 #  endif
 _GL_CXXALIAS_SYS (imaxabs, intmax_t, (intmax_t x));
 # endif
@@ -944,11 +944,11 @@ typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t;
 #   undef imaxdiv
 #   define imaxdiv rpl_imaxdiv
 #  endif
-_GL_FUNCDECL_RPL (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom));
+_GL_FUNCDECL_RPL (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom), );
 _GL_CXXALIAS_RPL (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom));
 # else
 #  if !@HAVE_DECL_IMAXDIV@
-_GL_FUNCDECL_SYS (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom));
+_GL_FUNCDECL_SYS (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom), );
 #  endif
 _GL_CXXALIAS_SYS (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom));
 # endif
diff --git a/gnulib/lib/langinfo.in.h b/gnulib/lib/langinfo.in.h
index febbd25f24..9c14e06ff4 100644
--- a/gnulib/lib/langinfo.in.h
+++ b/gnulib/lib/langinfo.in.h
@@ -205,11 +205,11 @@ typedef int nl_item;
 #   undef nl_langinfo
 #   define nl_langinfo rpl_nl_langinfo
 #  endif
-_GL_FUNCDECL_RPL (nl_langinfo, char *, (nl_item item));
+_GL_FUNCDECL_RPL (nl_langinfo, char *, (nl_item item), );
 _GL_CXXALIAS_RPL (nl_langinfo, char *, (nl_item item));
 # else
 #  if !@HAVE_NL_LANGINFO@
-_GL_FUNCDECL_SYS (nl_langinfo, char *, (nl_item item));
+_GL_FUNCDECL_SYS (nl_langinfo, char *, (nl_item item), );
 #  endif
 _GL_CXXALIAS_SYS (nl_langinfo, char *, (nl_item item));
 # endif
diff --git a/gnulib/lib/libc-config.h b/gnulib/lib/libc-config.h
index 70114608fb..33bdb73660 100644
--- a/gnulib/lib/libc-config.h
+++ b/gnulib/lib/libc-config.h
@@ -48,6 +48,11 @@
 
 /* From glibc <features.h>.  */
 
+#if defined __clang__
+  /* clang really only groks GNU C 4.2, regardless of its value of __GNUC__.  
*/
+# undef __GNUC_PREREQ
+# define __GNUC_PREREQ(maj, min) ((maj) < 4 + ((min) <= 2))
+#endif
 #ifndef __GNUC_PREREQ
 # if defined __GNUC__ && defined __GNUC_MINOR__
 #  define __GNUC_PREREQ(maj, min) ((maj) < __GNUC__ + ((min) <= 
__GNUC_MINOR__))
diff --git a/gnulib/lib/locale.in.h b/gnulib/lib/locale.in.h
index d025ef53ca..c3d34085de 100644
--- a/gnulib/lib/locale.in.h
+++ b/gnulib/lib/locale.in.h
@@ -168,7 +168,7 @@ struct lconv
 #   undef localeconv
 #   define localeconv rpl_localeconv
 #  endif
-_GL_FUNCDECL_RPL (localeconv, struct lconv *, (void));
+_GL_FUNCDECL_RPL (localeconv, struct lconv *, (void), );
 _GL_CXXALIAS_RPL (localeconv, struct lconv *, (void));
 # else
 _GL_CXXALIAS_SYS (localeconv, struct lconv *, (void));
@@ -197,7 +197,7 @@ _GL_WARN_ON_USE (localeconv,
 #   define setlocale rpl_setlocale
 #   define GNULIB_defined_setlocale 1
 #  endif
-_GL_FUNCDECL_RPL (setlocale, char *, (int category, const char *locale));
+_GL_FUNCDECL_RPL (setlocale, char *, (int category, const char *locale), );
 _GL_CXXALIAS_RPL (setlocale, char *, (int category, const char *locale));
 # else
 _GL_CXXALIAS_SYS (setlocale, char *, (int category, const char *locale));
diff --git a/gnulib/lib/pthread.in.h b/gnulib/lib/pthread.in.h
index 4bf35b5051..80081da7a7 100644
--- a/gnulib/lib/pthread.in.h
+++ b/gnulib/lib/pthread.in.h
@@ -676,11 +676,11 @@ _GL_WARN_ON_USE (pthread_self, "pthread_self is not 
portable - "
 #   undef pthread_equal
 #   define pthread_equal rpl_pthread_equal
 #  endif
-_GL_FUNCDECL_RPL (pthread_equal, int, (pthread_t thread1, pthread_t thread2));
+_GL_FUNCDECL_RPL (pthread_equal, int, (pthread_t thread1, pthread_t thread2), 
);
 _GL_CXXALIAS_RPL (pthread_equal, int, (pthread_t thread1, pthread_t thread2));
 # else
 #  if !@HAVE_PTHREAD_EQUAL@
-_GL_FUNCDECL_SYS (pthread_equal, int, (pthread_t thread1, pthread_t thread2));
+_GL_FUNCDECL_SYS (pthread_equal, int, (pthread_t thread1, pthread_t thread2), 
);
 #  endif
 _GL_CXXALIAS_SYS (pthread_equal, int, (pthread_t thread1, pthread_t thread2));
 # endif
@@ -701,11 +701,11 @@ _GL_WARN_ON_USE (pthread_equal, "pthread_equal is not 
portable - "
 #   undef pthread_detach
 #   define pthread_detach rpl_pthread_detach
 #  endif
-_GL_FUNCDECL_RPL (pthread_detach, int, (pthread_t thread));
+_GL_FUNCDECL_RPL (pthread_detach, int, (pthread_t thread), );
 _GL_CXXALIAS_RPL (pthread_detach, int, (pthread_t thread));
 # else
 #  if !@HAVE_PTHREAD_DETACH@
-_GL_FUNCDECL_SYS (pthread_detach, int, (pthread_t thread));
+_GL_FUNCDECL_SYS (pthread_detach, int, (pthread_t thread), );
 #  endif
 _GL_CXXALIAS_SYS (pthread_detach, int, (pthread_t thread));
 # endif
@@ -726,11 +726,11 @@ _GL_WARN_ON_USE (pthread_detach, "pthread_detach is not 
portable - "
 #   undef pthread_join
 #   define pthread_join rpl_pthread_join
 #  endif
-_GL_FUNCDECL_RPL (pthread_join, int, (pthread_t thread, void **valuep));
+_GL_FUNCDECL_RPL (pthread_join, int, (pthread_t thread, void **valuep), );
 _GL_CXXALIAS_RPL (pthread_join, int, (pthread_t thread, void **valuep));
 # else
 #  if !@HAVE_PTHREAD_JOIN@
-_GL_FUNCDECL_SYS (pthread_join, int, (pthread_t thread, void **valuep));
+_GL_FUNCDECL_SYS (pthread_join, int, (pthread_t thread, void **valuep), );
 #  endif
 _GL_CXXALIAS_SYS (pthread_join, int, (pthread_t thread, void **valuep));
 # endif
@@ -751,11 +751,11 @@ _GL_WARN_ON_USE (pthread_join, "pthread_join is not 
portable - "
 #   undef pthread_exit
 #   define pthread_exit rpl_pthread_exit
 #  endif
-_GL_FUNCDECL_RPL (pthread_exit, _Noreturn void, (void *value));
+_GL_FUNCDECL_RPL (pthread_exit, _Noreturn void, (void *value), );
 _GL_CXXALIAS_RPL (pthread_exit, void, (void *value));
 # else
 #  if !@HAVE_PTHREAD_EXIT@
-_GL_FUNCDECL_SYS (pthread_exit, _Noreturn void, (void *value));
+_GL_FUNCDECL_SYS (pthread_exit, _Noreturn void, (void *value), );
 #  endif
 /* Need to cast because of AIX with xlclang++.  */
 _GL_CXXALIAS_SYS_CAST (pthread_exit, void, (void *value));
@@ -1784,13 +1784,13 @@ _GL_WARN_ON_USE (pthread_key_create, 
"pthread_key_create is not portable - "
 #   define pthread_setspecific rpl_pthread_setspecific
 #  endif
 _GL_FUNCDECL_RPL (pthread_setspecific, int,
-                  (pthread_key_t key, const void *value));
+                  (pthread_key_t key, const void *value), );
 _GL_CXXALIAS_RPL (pthread_setspecific, int,
                   (pthread_key_t key, const void *value));
 # else
 #  if !@HAVE_PTHREAD_SETSPECIFIC@
 _GL_FUNCDECL_SYS (pthread_setspecific, int,
-                  (pthread_key_t key, const void *value));
+                  (pthread_key_t key, const void *value), );
 #  endif
 _GL_CXXALIAS_SYS (pthread_setspecific, int,
                   (pthread_key_t key, const void *value));
@@ -1812,11 +1812,11 @@ _GL_WARN_ON_USE (pthread_setspecific, 
"pthread_setspecific is not portable - "
 #   undef pthread_getspecific
 #   define pthread_getspecific rpl_pthread_getspecific
 #  endif
-_GL_FUNCDECL_RPL (pthread_getspecific, void *, (pthread_key_t key));
+_GL_FUNCDECL_RPL (pthread_getspecific, void *, (pthread_key_t key), );
 _GL_CXXALIAS_RPL (pthread_getspecific, void *, (pthread_key_t key));
 # else
 #  if !@HAVE_PTHREAD_GETSPECIFIC@
-_GL_FUNCDECL_SYS (pthread_getspecific, void *, (pthread_key_t key));
+_GL_FUNCDECL_SYS (pthread_getspecific, void *, (pthread_key_t key), );
 #  endif
 _GL_CXXALIAS_SYS (pthread_getspecific, void *, (pthread_key_t key));
 # endif
@@ -1837,11 +1837,11 @@ _GL_WARN_ON_USE (pthread_getspecific, 
"pthread_getspecific is not portable - "
 #   undef pthread_key_delete
 #   define pthread_key_delete rpl_pthread_key_delete
 #  endif
-_GL_FUNCDECL_RPL (pthread_key_delete, int, (pthread_key_t key));
+_GL_FUNCDECL_RPL (pthread_key_delete, int, (pthread_key_t key), );
 _GL_CXXALIAS_RPL (pthread_key_delete, int, (pthread_key_t key));
 # else
 #  if !@HAVE_PTHREAD_KEY_DELETE@
-_GL_FUNCDECL_SYS (pthread_key_delete, int, (pthread_key_t key));
+_GL_FUNCDECL_SYS (pthread_key_delete, int, (pthread_key_t key), );
 #  endif
 _GL_CXXALIAS_SYS (pthread_key_delete, int, (pthread_key_t key));
 # endif
diff --git a/gnulib/lib/sched.in.h b/gnulib/lib/sched.in.h
index 838fb12bdc..57c6053242 100644
--- a/gnulib/lib/sched.in.h
+++ b/gnulib/lib/sched.in.h
@@ -88,11 +88,11 @@ struct sched_param
 #   undef sched_yield
 #   define sched_yield rpl_sched_yield
 #  endif
-_GL_FUNCDECL_RPL (sched_yield, int, (void));
+_GL_FUNCDECL_RPL (sched_yield, int, (void), );
 _GL_CXXALIAS_RPL (sched_yield, int, (void));
 # else
 #  if !@HAVE_SCHED_YIELD@
-_GL_FUNCDECL_SYS (sched_yield, int, (void));
+_GL_FUNCDECL_SYS (sched_yield, int, (void), );
 #  endif
 _GL_CXXALIAS_SYS (sched_yield, int, (void));
 # endif
diff --git a/gnulib/lib/stddef.in.h b/gnulib/lib/stddef.in.h
index 49449315cf..e39268c60c 100644
--- a/gnulib/lib/stddef.in.h
+++ b/gnulib/lib/stddef.in.h
@@ -194,7 +194,7 @@ typedef union
 # ifndef _GL_HAS_BUILTIN_UNREACHABLE
 #  if defined __clang_major__ && __clang_major__ < 5
 #   define _GL_HAS_BUILTIN_UNREACHABLE 0
-#  elif 4 < __GNUC__ + (5 <= __GNUC_MINOR__)
+#  elif 4 < __GNUC__ + (5 <= __GNUC_MINOR__) && !defined __clang__
 #   define _GL_HAS_BUILTIN_UNREACHABLE 1
 #  elif defined __has_builtin
 #   define _GL_HAS_BUILTIN_UNREACHABLE __has_builtin (__builtin_unreachable)
diff --git a/gnulib/lib/stdio.in.h b/gnulib/lib/stdio.in.h
index e693fd7d06..e77798d9b2 100644
--- a/gnulib/lib/stdio.in.h
+++ b/gnulib/lib/stdio.in.h
@@ -120,7 +120,7 @@
    that can be freed by passing them as the Ith argument to the
    function F.  */
 #ifndef _GL_ATTRIBUTE_DEALLOC
-# if __GNUC__ >= 11
+# if __GNUC__ >= 11 && !defined __clang__
 #  define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i)))
 # else
 #  define _GL_ATTRIBUTE_DEALLOC(f, i)
@@ -178,7 +178,7 @@
    standardized by ISO C99 and POSIX.
    _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD  */
 /* __gnu_printf__ is supported in GCC >= 4.4.  */
-#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
+#if (__GNUC__ + (__GNUC_MINOR__ >= 4) > 4) && !defined __clang__
 # define _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD __gnu_printf__
 #else
 # define _GL_ATTRIBUTE_SPEC_PRINTF_STANDARD __printf__
@@ -392,7 +392,7 @@ _GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char 
*mode));
 #  endif
 _GL_CXXALIAS_MDA (fdopen, FILE *, (int fd, const char *mode));
 # else
-#  if __GNUC__ >= 11
+#  if __GNUC__ >= 11 && !defined __clang__
 /* For -Wmismatched-dealloc: Associate fdopen with fclose or rpl_fclose.  */
 #   if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
 _GL_FUNCDECL_SYS (fdopen, FILE *,
@@ -413,7 +413,7 @@ _GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char 
*mode));
 # endif
 _GL_CXXALIASWARN (fdopen);
 #else
-# if @GNULIB_FCLOSE@ && __GNUC__ >= 11 && !defined fdopen
+# if @GNULIB_FCLOSE@ && (__GNUC__ >= 11 && !defined __clang__) && !defined 
fdopen
 /* For -Wmismatched-dealloc: Associate fdopen with fclose or rpl_fclose.  */
 #  if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
 _GL_FUNCDECL_SYS (fdopen, FILE *,
@@ -461,7 +461,7 @@ _GL_CXXALIASWARN (fdopen);
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   define fflush rpl_fflush
 #  endif
-_GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream));
+_GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream), );
 _GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream));
 # else
 _GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream));
@@ -542,7 +542,7 @@ _GL_FUNCDECL_RPL (fopen, FILE *,
 _GL_CXXALIAS_RPL (fopen, FILE *,
                   (const char *restrict filename, const char *restrict mode));
 # else
-#  if __GNUC__ >= 11
+#  if __GNUC__ >= 11 && !defined __clang__
 /* For -Wmismatched-dealloc: Associate fopen with fclose or rpl_fclose.  */
 _GL_FUNCDECL_SYS (fopen, FILE *,
                   (const char *restrict filename, const char *restrict mode),
@@ -556,7 +556,7 @@ _GL_CXXALIAS_SYS (fopen, FILE *,
 _GL_CXXALIASWARN (fopen);
 # endif
 #else
-# if @GNULIB_FCLOSE@ && __GNUC__ >= 11 && !defined fopen
+# if @GNULIB_FCLOSE@ && (__GNUC__ >= 11 && !defined __clang__) && !defined 
fopen
 /* For -Wmismatched-dealloc: Associate fopen with fclose or rpl_fclose.  */
 _GL_FUNCDECL_SYS (fopen, FILE *,
                   (const char *restrict filename, const char *restrict mode),
@@ -646,7 +646,9 @@ _GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream), 
_GL_ARG_NONNULL ((1)));
 #  endif
 _GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream));
 # endif
+# if __GLIBC__ >= 2
 _GL_CXXALIASWARN (fpurge);
+# endif
 #elif defined GNULIB_POSIXCHECK
 # undef fpurge
 # if HAVE_RAW_DECL_FPURGE
@@ -947,9 +949,9 @@ _GL_CXXALIAS_SYS (fwrite, size_t,
    which sometimes causes an unwanted diagnostic for fwrite calls.
    This affects only function declaration attributes under certain
    versions of gcc and clang, and is not needed for C++.  */
-#  if (0 < __USE_FORTIFY_LEVEL                                          \
+#  if (0 < __USE_FORTIFY_LEVEL                                            \
        && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \
-       && 3 < __GNUC__ + (4 <= __GNUC_MINOR__)                          \
+       && (3 < __GNUC__ + (4 <= __GNUC_MINOR__) || defined __clang__)     \
        && !defined __cplusplus)
 #   undef fwrite
 #   undef fwrite_unlocked
@@ -992,7 +994,7 @@ _GL_CXXALIASWARN (getc);
 #   undef getchar
 #   define getchar rpl_getchar
 #  endif
-_GL_FUNCDECL_RPL (getchar, int, (void));
+_GL_FUNCDECL_RPL (getchar, int, (void), );
 _GL_CXXALIAS_RPL (getchar, int, (void));
 # else
 _GL_CXXALIAS_SYS (getchar, int, (void));
@@ -1110,7 +1112,7 @@ _GL_CXXALIAS_MDA (getw, int, (FILE *restrict stream));
 #  if @HAVE_DECL_GETW@
 #   if defined __APPLE__ && defined __MACH__
 /* The presence of the declaration depends on _POSIX_C_SOURCE.  */
-_GL_FUNCDECL_SYS (getw, int, (FILE *restrict stream));
+_GL_FUNCDECL_SYS (getw, int, (FILE *restrict stream), );
 #   endif
 _GL_CXXALIAS_SYS (getw, int, (FILE *restrict stream));
 #  endif
@@ -1219,7 +1221,7 @@ _GL_WARN_ON_USE (pclose, "pclose is unportable - "
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   define perror rpl_perror
 #  endif
-_GL_FUNCDECL_RPL (perror, void, (const char *string));
+_GL_FUNCDECL_RPL (perror, void, (const char *string), );
 _GL_CXXALIAS_RPL (perror, void, (const char *string));
 # else
 _GL_CXXALIAS_SYS (perror, void, (const char *string));
@@ -1246,7 +1248,7 @@ _GL_FUNCDECL_RPL (popen, FILE *,
                   _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_NODISCARD);
 _GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));
 # else
-#  if !@HAVE_POPEN@ || __GNUC__ >= 11
+#  if !@HAVE_POPEN@ || (__GNUC__ >= 11 && !defined __clang__)
 _GL_FUNCDECL_SYS (popen, FILE *,
                   (const char *cmd, const char *mode),
                   _GL_ARG_NONNULL ((1, 2)) _GL_ATTRIBUTE_DEALLOC (pclose, 1)
@@ -1256,7 +1258,8 @@ _GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const 
char *mode));
 # endif
 _GL_CXXALIASWARN (popen);
 #else
-# if @GNULIB_PCLOSE@ && __GNUC__ >= 11 && !defined popen
+# if @GNULIB_PCLOSE@ \
+     && (__GNUC__ >= 11 && !defined __clang__) && !defined popen
 /* For -Wmismatched-dealloc: Associate popen with pclose or rpl_pclose.  */
 _GL_FUNCDECL_SYS (popen, FILE *,
                   (const char *cmd, const char *mode),
@@ -1363,7 +1366,7 @@ _GL_CXXALIASWARN (putc);
 #   undef putchar
 #   define putchar rpl_putchar
 #  endif
-_GL_FUNCDECL_RPL (putchar, int, (int c));
+_GL_FUNCDECL_RPL (putchar, int, (int c), );
 _GL_CXXALIAS_RPL (putchar, int, (int c));
 # else
 _GL_CXXALIAS_SYS (putchar, int, (int c));
@@ -1403,7 +1406,7 @@ _GL_CXXALIAS_MDA (putw, int, (int w, FILE *restrict 
stream));
 #  if @HAVE_DECL_PUTW@
 #   if defined __APPLE__ && defined __MACH__
 /* The presence of the declaration depends on _POSIX_C_SOURCE.  */
-_GL_FUNCDECL_SYS (putw, int, (int w, FILE *restrict stream));
+_GL_FUNCDECL_SYS (putw, int, (int w, FILE *restrict stream), );
 #   endif
 _GL_CXXALIAS_SYS (putw, int, (int w, FILE *restrict stream));
 #  endif
@@ -1665,7 +1668,7 @@ _GL_FUNCDECL_RPL (tmpfile, FILE *, (void),
                                    _GL_ATTRIBUTE_NODISCARD);
 _GL_CXXALIAS_RPL (tmpfile, FILE *, (void));
 # else
-#  if __GNUC__ >= 11
+#  if __GNUC__ >= 11 && !defined __clang__
 /* For -Wmismatched-dealloc: Associate tmpfile with fclose or rpl_fclose.  */
 _GL_FUNCDECL_SYS (tmpfile, FILE *, (void),
                                    _GL_ATTRIBUTE_DEALLOC (fclose, 1)
@@ -1678,7 +1681,8 @@ _GL_CXXALIAS_SYS (tmpfile, FILE *, (void));
 _GL_CXXALIASWARN (tmpfile);
 # endif
 #else
-# if @GNULIB_FCLOSE@ && __GNUC__ >= 11 && !defined tmpfile
+# if @GNULIB_FCLOSE@ \
+     && (__GNUC__ >= 11 && !defined __clang__) && !defined tmpfile
 /* For -Wmismatched-dealloc: Associate tmpfile with fclose or rpl_fclose.  */
 _GL_FUNCDECL_SYS (tmpfile, FILE *, (void),
                                    _GL_ATTRIBUTE_DEALLOC (fclose, 1)
diff --git a/gnulib/lib/stdlib.in.h b/gnulib/lib/stdlib.in.h
index 2a94b73f72..6667f426ad 100644
--- a/gnulib/lib/stdlib.in.h
+++ b/gnulib/lib/stdlib.in.h
@@ -20,7 +20,9 @@
 #endif
 @PRAGMA_COLUMNS@
 
-#if (defined __need_system_stdlib_h && !defined _GLIBCXX_STDLIB_H) || defined 
__need_malloc_and_calloc
+#if ((defined __need_system_stdlib_h && !defined _GLIBCXX_STDLIB_H) \
+     || defined __need_malloc_and_calloc) \
+    && !defined __SUNPRO_CC
 /* Special invocation conventions inside some gnulib header files,
    and inside some glibc header files, respectively.
    Do not recognize this special invocation convention when GCC's
@@ -132,7 +134,7 @@ struct random_data
    that can be freed by passing them as the Ith argument to the
    function F.  */
 #ifndef _GL_ATTRIBUTE_DEALLOC
-# if __GNUC__ >= 11
+# if __GNUC__ >= 11 && !defined __clang__
 #  define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i)))
 # else
 #  define _GL_ATTRIBUTE_DEALLOC(f, i)
@@ -220,11 +222,11 @@ struct random_data
 #   undef _Exit
 #   define _Exit rpl__Exit
 #  endif
-_GL_FUNCDECL_RPL (_Exit, _Noreturn void, (int status));
+_GL_FUNCDECL_RPL (_Exit, _Noreturn void, (int status), );
 _GL_CXXALIAS_RPL (_Exit, void, (int status));
 # else
 #  if !@HAVE__EXIT@
-_GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status));
+_GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status), );
 #  endif
 _GL_CXXALIAS_SYS (_Exit, void, (int status));
 # endif
@@ -249,7 +251,7 @@ _GL_WARN_ON_USE (_Exit, "_Exit is unportable - "
 #   undef abort
 #   define abort rpl_abort
 #  endif
-_GL_FUNCDECL_RPL (abort, _Noreturn void, (void));
+_GL_FUNCDECL_RPL (abort, _Noreturn void, (void), );
 _GL_CXXALIAS_RPL (abort, void, (void));
 # else
 _GL_CXXALIAS_SYS (abort, void, (void));
@@ -267,9 +269,9 @@ _GL_CXXALIASWARN (abort);
 #   define free rpl_free
 #  endif
 #  if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2)
-_GL_FUNCDECL_RPL (free, void, (void *ptr)) _GL_ATTRIBUTE_NOTHROW;
+_GL_FUNCDECL_RPL (free, void, (void *ptr), ) _GL_ATTRIBUTE_NOTHROW;
 #  else
-_GL_FUNCDECL_RPL (free, void, (void *ptr));
+_GL_FUNCDECL_RPL (free, void, (void *ptr), );
 #  endif
 _GL_CXXALIAS_RPL (free, void, (void *ptr));
 # else
@@ -300,7 +302,7 @@ _GL_FUNCDECL_RPL (aligned_alloc, void *,
 _GL_CXXALIAS_RPL (aligned_alloc, void *, (size_t alignment, size_t size));
 # else
 #  if @HAVE_ALIGNED_ALLOC@
-#   if __GNUC__ >= 11
+#   if __GNUC__ >= 11 && !defined __clang__
 /* For -Wmismatched-dealloc: Associate aligned_alloc with free or rpl_free.  */
 #    if __GLIBC__ + (__GLIBC_MINOR__ >= 16) > 2
 _GL_FUNCDECL_SYS (aligned_alloc, void *,
@@ -322,7 +324,8 @@ _GL_CXXALIAS_SYS (aligned_alloc, void *, (size_t alignment, 
size_t size));
 _GL_CXXALIASWARN (aligned_alloc);
 # endif
 #else
-# if @GNULIB_FREE_POSIX@ && __GNUC__ >= 11 && !defined aligned_alloc
+# if @GNULIB_FREE_POSIX@ \
+     && (__GNUC__ >= 11 && !defined __clang__) && !defined aligned_alloc
 /* For -Wmismatched-dealloc: Associate aligned_alloc with free or rpl_free.  */
 #  if __GLIBC__ + (__GLIBC_MINOR__ >= 16) > 2
 _GL_FUNCDECL_SYS (aligned_alloc, void *,
@@ -376,7 +379,7 @@ _GL_FUNCDECL_RPL (calloc, void *,
                   _GL_ATTRIBUTE_NODISCARD);
 _GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size));
 # else
-#  if __GNUC__ >= 11
+#  if __GNUC__ >= 11 && !defined __clang__
 /* For -Wmismatched-dealloc: Associate calloc with free or rpl_free.  */
 #   if __GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2
 _GL_FUNCDECL_SYS (calloc, void *,
@@ -397,7 +400,8 @@ _GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t 
size));
 _GL_CXXALIASWARN (calloc);
 # endif
 #else
-# if @GNULIB_FREE_POSIX@ && __GNUC__ >= 11 && !defined calloc
+# if @GNULIB_FREE_POSIX@ \
+     && (__GNUC__ >= 11 && !defined __clang__) && !defined calloc
 /* For -Wmismatched-dealloc: Associate calloc with free or rpl_free.  */
 #  if __GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2
 _GL_FUNCDECL_SYS (calloc, void *,
@@ -430,7 +434,7 @@ _GL_FUNCDECL_RPL (canonicalize_file_name, char *,
                   _GL_ATTRIBUTE_NODISCARD);
 _GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name));
 # else
-#  if !@HAVE_CANONICALIZE_FILE_NAME@ || __GNUC__ >= 11
+#  if !@HAVE_CANONICALIZE_FILE_NAME@ || (__GNUC__ >= 11 && !defined __clang__)
 #   if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
 _GL_FUNCDECL_SYS (canonicalize_file_name, char *,
                   (const char *name),
@@ -454,7 +458,8 @@ _GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const 
char *name));
 # endif
 _GL_CXXALIASWARN (canonicalize_file_name);
 #else
-# if @GNULIB_FREE_POSIX@ && __GNUC__ >= 11 && !defined canonicalize_file_name
+# if @GNULIB_FREE_POSIX@ \
+     && (__GNUC__ >= 11 && !defined __clang__) && !defined 
canonicalize_file_name
 /* For -Wmismatched-dealloc: Associate canonicalize_file_name with free or
    rpl_free.  */
 #  if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
@@ -589,7 +594,7 @@ _GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - "
 #  if @HAVE_DECL_PROGRAM_INVOCATION_NAME@
 _GL_FUNCDECL_RPL (getprogname, const char *, (void), _GL_ATTRIBUTE_PURE);
 #  else
-_GL_FUNCDECL_RPL (getprogname, const char *, (void));
+_GL_FUNCDECL_RPL (getprogname, const char *, (void), );
 #  endif
 _GL_CXXALIAS_RPL (getprogname, const char *, (void));
 # else
@@ -597,7 +602,7 @@ _GL_CXXALIAS_RPL (getprogname, const char *, (void));
 #   if @HAVE_DECL_PROGRAM_INVOCATION_NAME@
 _GL_FUNCDECL_SYS (getprogname, const char *, (void), _GL_ATTRIBUTE_PURE);
 #   else
-_GL_FUNCDECL_SYS (getprogname, const char *, (void));
+_GL_FUNCDECL_SYS (getprogname, const char *, (void), );
 #   endif
 #  endif
 _GL_CXXALIAS_SYS (getprogname, const char *, (void));
@@ -659,7 +664,7 @@ _GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - "
 /* Change the ownership and access permission of the slave side of the
    pseudo-terminal whose master side is specified by FD.  */
 # if !@HAVE_GRANTPT@
-_GL_FUNCDECL_SYS (grantpt, int, (int fd));
+_GL_FUNCDECL_SYS (grantpt, int, (int fd), );
 # endif
 _GL_CXXALIAS_SYS (grantpt, int, (int fd));
 _GL_CXXALIASWARN (grantpt);
@@ -689,7 +694,7 @@ _GL_FUNCDECL_RPL (malloc, void *,
                   _GL_ATTRIBUTE_NODISCARD);
 _GL_CXXALIAS_RPL (malloc, void *, (size_t size));
 # else
-#  if __GNUC__ >= 11
+#  if __GNUC__ >= 11 && !defined __clang__
 /* For -Wmismatched-dealloc: Associate malloc with free or rpl_free.  */
 #   if __GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2
 _GL_FUNCDECL_SYS (malloc, void *,
@@ -710,7 +715,8 @@ _GL_CXXALIAS_SYS (malloc, void *, (size_t size));
 _GL_CXXALIASWARN (malloc);
 # endif
 #else
-# if @GNULIB_FREE_POSIX@ && __GNUC__ >= 11 && !defined malloc
+# if @GNULIB_FREE_POSIX@ \
+     && (__GNUC__ >= 11 && !defined __clang__) && !defined malloc
 /* For -Wmismatched-dealloc: Associate malloc with free or rpl_free.  */
 #  if __GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2
 _GL_FUNCDECL_SYS (malloc, void *,
@@ -784,13 +790,13 @@ _GL_WARN_ON_USE (mbstowcs, "mbstowcs is unportable - "
 #   define mbtowc rpl_mbtowc
 #  endif
 _GL_FUNCDECL_RPL (mbtowc, int,
-                  (wchar_t *restrict pwc, const char *restrict s, size_t n));
+                  (wchar_t *restrict pwc, const char *restrict s, size_t n), );
 _GL_CXXALIAS_RPL (mbtowc, int,
                   (wchar_t *restrict pwc, const char *restrict s, size_t n));
 # else
 #  if !@HAVE_MBTOWC@
 _GL_FUNCDECL_SYS (mbtowc, int,
-                  (wchar_t *restrict pwc, const char *restrict s, size_t n));
+                  (wchar_t *restrict pwc, const char *restrict s, size_t n), );
 #  endif
 _GL_CXXALIAS_SYS (mbtowc, int,
                   (wchar_t *restrict pwc, const char *restrict s, size_t n));
@@ -1074,11 +1080,11 @@ _GL_WARN_ON_USE (ptsname, "ptsname is not portable - "
 #   undef ptsname_r
 #   define ptsname_r rpl_ptsname_r
 #  endif
-_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
+_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len), );
 _GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
 # else
 #  if !@HAVE_PTSNAME_R@
-_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
+_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len), );
 #  endif
 _GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
 # endif
@@ -1200,7 +1206,7 @@ _GL_WARN_ON_USE (qsort_r, "qsort_r is not portable - "
 #   undef rand
 #   define rand rpl_rand
 #  endif
-_GL_FUNCDECL_RPL (rand, int, (void));
+_GL_FUNCDECL_RPL (rand, int, (void), );
 _GL_CXXALIAS_RPL (rand, int, (void));
 # else
 _GL_CXXALIAS_SYS (rand, int, (void));
@@ -1217,11 +1223,11 @@ _GL_CXXALIASWARN (rand);
 #   undef random
 #   define random rpl_random
 #  endif
-_GL_FUNCDECL_RPL (random, long, (void));
+_GL_FUNCDECL_RPL (random, long, (void), );
 _GL_CXXALIAS_RPL (random, long, (void));
 # else
 #  if !@HAVE_RANDOM@
-_GL_FUNCDECL_SYS (random, long, (void));
+_GL_FUNCDECL_SYS (random, long, (void), );
 #  endif
 /* Need to cast, because on Haiku, the return type is
                                int.  */
@@ -1244,11 +1250,11 @@ _GL_WARN_ON_USE (random, "random is unportable - "
 #   undef srandom
 #   define srandom rpl_srandom
 #  endif
-_GL_FUNCDECL_RPL (srandom, void, (unsigned int seed));
+_GL_FUNCDECL_RPL (srandom, void, (unsigned int seed), );
 _GL_CXXALIAS_RPL (srandom, void, (unsigned int seed));
 # else
 #  if !@HAVE_RANDOM@
-_GL_FUNCDECL_SYS (srandom, void, (unsigned int seed));
+_GL_FUNCDECL_SYS (srandom, void, (unsigned int seed), );
 #  endif
 /* Need to cast, because on FreeBSD, the first parameter is
                                        unsigned long seed.  */
@@ -1460,7 +1466,7 @@ _GL_FUNCDECL_RPL (realloc, void *,
                   _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_NODISCARD);
 _GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size));
 # else
-#  if __GNUC__ >= 11
+#  if __GNUC__ >= 11 && !defined __clang__
 /* For -Wmismatched-dealloc: Associate realloc with free or rpl_free.  */
 #   if __GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2
 _GL_FUNCDECL_SYS (realloc, void *,
@@ -1479,7 +1485,8 @@ _GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t 
size));
 _GL_CXXALIASWARN (realloc);
 # endif
 #else
-# if @GNULIB_FREE_POSIX@ && __GNUC__ >= 11 && !defined realloc
+# if @GNULIB_FREE_POSIX@ \
+     && (__GNUC__ >= 11 && !defined __clang__) && !defined realloc
 /* For -Wmismatched-dealloc: Associate realloc with free or rpl_free.  */
 #  if __GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2
 _GL_FUNCDECL_SYS (realloc, void *,
@@ -1905,7 +1912,7 @@ _GL_WARN_ON_USE (strtoull, "strtoull is unportable - "
 /* Unlock the slave side of the pseudo-terminal whose master side is specified
    by FD, so that it can be opened.  */
 # if !@HAVE_UNLOCKPT@
-_GL_FUNCDECL_SYS (unlockpt, int, (int fd));
+_GL_FUNCDECL_SYS (unlockpt, int, (int fd), );
 # endif
 _GL_CXXALIAS_SYS (unlockpt, int, (int fd));
 _GL_CXXALIASWARN (unlockpt);
@@ -1950,7 +1957,7 @@ _GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - "
 #   undef wctomb
 #   define wctomb rpl_wctomb
 #  endif
-_GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc));
+_GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc), );
 _GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc));
 # else
 _GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc));
diff --git a/gnulib/lib/strerror-override.c b/gnulib/lib/strerror-override.c
index b9c1c7aba8..2d9560f909 100644
--- a/gnulib/lib/strerror-override.c
+++ b/gnulib/lib/strerror-override.c
@@ -298,6 +298,11 @@ strerror_override (int errnum)
       return "Invalid or incomplete multibyte or wide character";
 # endif
 
+# if GNULIB_defined_ESOCKTNOSUPPORT
+    case ESOCKTNOSUPPORT:
+      return "Socket type not supported";
+# endif
+
     default:
       return NULL;
     }
diff --git a/gnulib/lib/strerror-override.h b/gnulib/lib/strerror-override.h
index a1734a242e..c496000389 100644
--- a/gnulib/lib/strerror-override.h
+++ b/gnulib/lib/strerror-override.h
@@ -57,7 +57,8 @@ extern "C" {
     || GNULIB_defined_ECANCELED \
     || GNULIB_defined_EOWNERDEAD \
     || GNULIB_defined_ENOTRECOVERABLE \
-    || GNULIB_defined_EILSEQ
+    || GNULIB_defined_EILSEQ \
+    || GNULIB_defined_ESOCKTNOSUPPORT
 extern const char *strerror_override (int errnum) _GL_ATTRIBUTE_CONST;
 #else
 # define strerror_override(ignored) NULL
diff --git a/gnulib/lib/string.in.h b/gnulib/lib/string.in.h
index b415982d3c..f5a6d8b326 100644
--- a/gnulib/lib/string.in.h
+++ b/gnulib/lib/string.in.h
@@ -79,7 +79,7 @@
    that can be freed by passing them as the Ith argument to the
    function F.  */
 #ifndef _GL_ATTRIBUTE_DEALLOC
-# if __GNUC__ >= 11
+# if __GNUC__ >= 11 && !defined __clang__
 #  define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i)))
 # else
 #  define _GL_ATTRIBUTE_DEALLOC(f, i)
@@ -213,7 +213,7 @@ _GL_WARN_ON_USE (explicit_bzero, "explicit_bzero is 
unportable - "
 /* Find the index of the least-significant set bit.  */
 #if @GNULIB_FFSL@
 # if !@HAVE_FFSL@
-_GL_FUNCDECL_SYS (ffsl, int, (long int i));
+_GL_FUNCDECL_SYS (ffsl, int, (long int i), );
 # endif
 _GL_CXXALIAS_SYS (ffsl, int, (long int i));
 _GL_CXXALIASWARN (ffsl);
@@ -231,11 +231,11 @@ _GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the 
ffsl module");
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   define ffsll rpl_ffsll
 #  endif
-_GL_FUNCDECL_RPL (ffsll, int, (long long int i));
+_GL_FUNCDECL_RPL (ffsll, int, (long long int i), );
 _GL_CXXALIAS_RPL (ffsll, int, (long long int i));
 # else
 #  if !@HAVE_FFSLL@
-_GL_FUNCDECL_SYS (ffsll, int, (long long int i));
+_GL_FUNCDECL_SYS (ffsll, int, (long long int i), );
 #  endif
 _GL_CXXALIAS_SYS (ffsll, int, (long long int i));
 # endif
@@ -621,7 +621,8 @@ _GL_CXXALIAS_MDA (strdup, char *, (char const *__s));
     /* strdup exists as a function and as a macro.  Get rid of the macro.  */
 #   undef strdup
 #  endif
-#  if (!@HAVE_DECL_STRDUP@ || __GNUC__ >= 11) && !defined strdup
+#  if (!@HAVE_DECL_STRDUP@ || (__GNUC__ >= 11 && !defined __clang__)) \
+      && !defined strdup
 #   if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
 _GL_FUNCDECL_SYS (strdup, char *,
                   (char const *__s),
@@ -639,7 +640,7 @@ _GL_CXXALIAS_SYS (strdup, char *, (char const *__s));
 # endif
 _GL_CXXALIASWARN (strdup);
 #else
-# if __GNUC__ >= 11 && !defined strdup
+# if (__GNUC__ >= 11 && !defined __clang__) && !defined strdup
 /* For -Wmismatched-dealloc: Associate strdup with free or rpl_free.  */
 #  if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
 _GL_FUNCDECL_SYS (strdup, char *,
@@ -720,7 +721,8 @@ _GL_FUNCDECL_RPL (strndup, char *,
                   _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE);
 _GL_CXXALIAS_RPL (strndup, char *, (char const *__s, size_t __n));
 # else
-#  if !@HAVE_DECL_STRNDUP@ || (__GNUC__ >= 11 && !defined strndup)
+#  if !@HAVE_DECL_STRNDUP@ \
+      || ((__GNUC__ >= 11 && !defined __clang__) && !defined strndup)
 #   if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
 _GL_FUNCDECL_SYS (strndup, char *,
                   (char const *__s, size_t __n),
@@ -738,7 +740,7 @@ _GL_CXXALIAS_SYS (strndup, char *, (char const *__s, size_t 
__n));
 # endif
 _GL_CXXALIASWARN (strndup);
 #else
-# if __GNUC__ >= 11 && !defined strndup
+# if (__GNUC__ >= 11 && !defined __clang__) && !defined strndup
 /* For -Wmismatched-dealloc: Associate strndup with free or rpl_free.  */
 #  if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
 _GL_FUNCDECL_SYS (strndup, char *,
@@ -1306,7 +1308,7 @@ _GL_EXTERN_C char * mbstok_r (char *restrict string, 
const char *delim,
 #   undef strerror
 #   define strerror rpl_strerror
 #  endif
-_GL_FUNCDECL_RPL (strerror, char *, (int));
+_GL_FUNCDECL_RPL (strerror, char *, (int), );
 _GL_CXXALIAS_RPL (strerror, char *, (int));
 # else
 _GL_CXXALIAS_SYS (strerror, char *, (int));
@@ -1357,11 +1359,11 @@ _GL_WARN_ON_USE (strerror_r, "strerror_r is unportable 
- "
 #   undef strerrorname_np
 #   define strerrorname_np rpl_strerrorname_np
 #  endif
-_GL_FUNCDECL_RPL (strerrorname_np, const char *, (int errnum));
+_GL_FUNCDECL_RPL (strerrorname_np, const char *, (int errnum), );
 _GL_CXXALIAS_RPL (strerrorname_np, const char *, (int errnum));
 # else
 #  if !@HAVE_STRERRORNAME_NP@
-_GL_FUNCDECL_SYS (strerrorname_np, const char *, (int errnum));
+_GL_FUNCDECL_SYS (strerrorname_np, const char *, (int errnum), );
 #  endif
 _GL_CXXALIAS_SYS (strerrorname_np, const char *, (int errnum));
 # endif
@@ -1377,7 +1379,7 @@ _GL_WARN_ON_USE (strerrorname_np, "strerrorname_np is 
unportable - "
 /* Return an abbreviation string for the signal number SIG.  */
 #if @GNULIB_SIGABBREV_NP@
 # if ! @HAVE_SIGABBREV_NP@
-_GL_FUNCDECL_SYS (sigabbrev_np, const char *, (int sig));
+_GL_FUNCDECL_SYS (sigabbrev_np, const char *, (int sig), );
 # endif
 _GL_CXXALIAS_SYS (sigabbrev_np, const char *, (int sig));
 _GL_CXXALIASWARN (sigabbrev_np);
@@ -1392,7 +1394,7 @@ _GL_WARN_ON_USE (sigabbrev_np, "sigabbrev_np is 
unportable - "
 /* Return an English description string for the signal number SIG.  */
 #if @GNULIB_SIGDESCR_NP@
 # if ! @HAVE_SIGDESCR_NP@
-_GL_FUNCDECL_SYS (sigdescr_np, const char *, (int sig));
+_GL_FUNCDECL_SYS (sigdescr_np, const char *, (int sig), );
 # endif
 _GL_CXXALIAS_SYS (sigdescr_np, const char *, (int sig));
 _GL_CXXALIASWARN (sigdescr_np);
@@ -1409,11 +1411,11 @@ _GL_WARN_ON_USE (sigdescr_np, "sigdescr_np is 
unportable - "
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   define strsignal rpl_strsignal
 #  endif
-_GL_FUNCDECL_RPL (strsignal, char *, (int __sig));
+_GL_FUNCDECL_RPL (strsignal, char *, (int __sig), );
 _GL_CXXALIAS_RPL (strsignal, char *, (int __sig));
 # else
 #  if ! @HAVE_DECL_STRSIGNAL@
-_GL_FUNCDECL_SYS (strsignal, char *, (int __sig));
+_GL_FUNCDECL_SYS (strsignal, char *, (int __sig), );
 #  endif
 /* Need to cast, because on Cygwin 1.5.x systems, the return type is
    'const char *'.  */
diff --git a/gnulib/lib/strings.in.h b/gnulib/lib/strings.in.h
index 2b3e062a82..20bd6f1fa2 100644
--- a/gnulib/lib/strings.in.h
+++ b/gnulib/lib/strings.in.h
@@ -61,7 +61,7 @@ extern "C" {
   /* Find the index of the least-significant set bit.  */
 #if @GNULIB_FFS@
 # if !@HAVE_FFS@
-_GL_FUNCDECL_SYS (ffs, int, (int i));
+_GL_FUNCDECL_SYS (ffs, int, (int i), );
 # endif
 _GL_CXXALIAS_SYS (ffs, int, (int i));
 _GL_CXXALIASWARN (ffs);
diff --git a/gnulib/lib/sys_stat.in.h b/gnulib/lib/sys_stat.in.h
index 531232bbc1..81138bce25 100644
--- a/gnulib/lib/sys_stat.in.h
+++ b/gnulib/lib/sys_stat.in.h
@@ -585,11 +585,11 @@ _GL_WARN_ON_USE (fstatat, "fstatat is not portable - "
 #   undef futimens
 #   define futimens rpl_futimens
 #  endif
-_GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2]));
+_GL_FUNCDECL_RPL (futimens, int, (int fd, struct timespec const times[2]), );
 _GL_CXXALIAS_RPL (futimens, int, (int fd, struct timespec const times[2]));
 # else
 #  if !@HAVE_FUTIMENS@
-_GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2]));
+_GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2]), );
 #  endif
 _GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2]));
 # endif
@@ -608,9 +608,9 @@ _GL_WARN_ON_USE (futimens, "futimens is not portable - "
 #if @GNULIB_GETUMASK@
 # if !@HAVE_GETUMASK@
 #  if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
-_GL_FUNCDECL_SYS (getumask, mode_t, (void)) _GL_ATTRIBUTE_NOTHROW;
+_GL_FUNCDECL_SYS (getumask, mode_t, (void), ) _GL_ATTRIBUTE_NOTHROW;
 #  else
-_GL_FUNCDECL_SYS (getumask, mode_t, (void));
+_GL_FUNCDECL_SYS (getumask, mode_t, (void), );
 #  endif
 # endif
 _GL_CXXALIAS_SYS (getumask, mode_t, (void));
@@ -675,12 +675,6 @@ _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t 
mode));
 _GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode));
 # endif
 _GL_CXXALIASWARN (mkdir);
-#elif defined GNULIB_POSIXCHECK
-# undef mkdir
-# if HAVE_RAW_DECL_MKDIR
-_GL_WARN_ON_USE (mkdir, "mkdir does not always support two parameters - "
-                 "use gnulib module mkdir for portability");
-# endif
 #elif @GNULIB_MDA_MKDIR@
 /* On native Windows, map 'mkdir' to '_mkdir', so that -loldnames is not
    required.  In C++ with GNULIB_NAMESPACE, avoid differences between
@@ -703,6 +697,12 @@ _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t 
mode));
 _GL_CXXALIAS_SYS (mkdir, int, (char const *name, mode_t mode));
 # endif
 _GL_CXXALIASWARN (mkdir);
+#elif defined GNULIB_POSIXCHECK
+# undef mkdir
+# if HAVE_RAW_DECL_MKDIR
+_GL_WARN_ON_USE (mkdir, "mkdir does not always support two parameters - "
+                 "use gnulib module mkdir for portability");
+# endif
 #endif
 
 
diff --git a/gnulib/lib/time.in.h b/gnulib/lib/time.in.h
index eebc60d42c..5dc03c892a 100644
--- a/gnulib/lib/time.in.h
+++ b/gnulib/lib/time.in.h
@@ -201,7 +201,7 @@ _GL_WARN_ON_USE (timespec_getres, "timespec_getres is 
unportable - "
 #   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #    define time rpl_time
 #   endif
-_GL_FUNCDECL_RPL (time, time_t, (time_t *__tp));
+_GL_FUNCDECL_RPL (time, time_t, (time_t *__tp), );
 _GL_CXXALIAS_RPL (time, time_t, (time_t *__tp));
 #  else
 _GL_CXXALIAS_SYS (time, time_t, (time_t *__tp));
@@ -255,7 +255,7 @@ _GL_WARN_ON_USE (nanosleep, "nanosleep is unportable - "
 #    undef tzset
 #    define tzset rpl_tzset
 #   endif
-_GL_FUNCDECL_RPL (tzset, void, (void));
+_GL_FUNCDECL_RPL (tzset, void, (void), );
 _GL_CXXALIAS_RPL (tzset, void, (void));
 #  elif defined _WIN32 && !defined __CYGWIN__
 #   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -488,14 +488,24 @@ _GL_WARN_ON_USE (strftime, "strftime has portability 
problems - "
 #  endif
 # endif
 
-# if defined _GNU_SOURCE && @GNULIB_TIME_RZ@ && ! @HAVE_TIMEZONE_T@
+# if @GNULIB_TIME_RZ@
 /* Functions that use a first-class time zone data type, instead of
    relying on an implicit global time zone.
    Inspired by NetBSD.  */
 
 /* Represents a time zone.
    (timezone_t) NULL stands for UTC.  */
+#  if !@HAVE_TZALLOC@
+#   if !GNULIB_defined_timezone_t
+#    if !@HAVE_TIMEZONE_T@
 typedef struct tm_zone *timezone_t;
+#    else
+typedef struct tm_zone *rpl_timezone_t;
+#     define timezone_t rpl_timezone_t
+#    endif
+#    define GNULIB_defined_timezone_t 1
+#   endif
+#  endif
 
 /* tzalloc (name)
    Returns a time zone object for the given time zone NAME.  This object
@@ -505,38 +515,72 @@ typedef struct tm_zone *timezone_t;
    would use it the TZ environment variable was unset.
    May return NULL if NAME is invalid (this is platform dependent) or
    upon memory allocation failure.  */
-_GL_FUNCDECL_SYS (tzalloc, timezone_t, (char const *__name));
+#  if !@HAVE_TZALLOC@
+_GL_FUNCDECL_SYS (tzalloc, timezone_t, (char const *__name), );
 _GL_CXXALIAS_SYS (tzalloc, timezone_t, (char const *__name));
+#  endif
 
 /* tzfree (tz)
    Frees a time zone object.
    The argument must have been returned by tzalloc().  */
-_GL_FUNCDECL_SYS (tzfree, void, (timezone_t __tz));
+#  if !@HAVE_TZALLOC@
+_GL_FUNCDECL_SYS (tzfree, void, (timezone_t __tz), );
 _GL_CXXALIAS_SYS (tzfree, void, (timezone_t __tz));
+#  endif
 
 /* localtime_rz (tz, &t, &result)
    Converts an absolute time T to a broken-down time RESULT, assuming the
    time zone TZ.
    This function is like 'localtime_r', but relies on the argument TZ instead
    of an implicit global time zone.  */
+#  if @REPLACE_LOCALTIME_RZ@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef localtime_rz
+#    define localtime_rz rpl_localtime_rz
+#   endif
+_GL_FUNCDECL_RPL (localtime_rz, struct tm *,
+                  (timezone_t __tz, time_t const *restrict __timer,
+                   struct tm *restrict __result),
+                  _GL_ARG_NONNULL ((2, 3)));
+_GL_CXXALIAS_RPL (localtime_rz, struct tm *,
+                  (timezone_t __tz, time_t const *restrict __timer,
+                   struct tm *restrict __result));
+#  else
+#   if !@HAVE_TZALLOC@
 _GL_FUNCDECL_SYS (localtime_rz, struct tm *,
                   (timezone_t __tz, time_t const *restrict __timer,
                    struct tm *restrict __result),
                   _GL_ARG_NONNULL ((2, 3)));
+#   endif
 _GL_CXXALIAS_SYS (localtime_rz, struct tm *,
                   (timezone_t __tz, time_t const *restrict __timer,
                    struct tm *restrict __result));
+#  endif
 
 /* mktime_z (tz, &tm)
    Normalizes the broken-down time TM and converts it to an absolute time,
    assuming the time zone TZ.  Returns the absolute time.
    This function is like 'mktime', but relies on the argument TZ instead
    of an implicit global time zone.  */
+#  if @REPLACE_MKTIME_Z@
+#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#    undef mktime_z
+#    define mktime_z rpl_mktime_z
+#   endif
+_GL_FUNCDECL_RPL (mktime_z, time_t,
+                  (timezone_t __tz, struct tm *restrict __tm),
+                  _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (mktime_z, time_t,
+                  (timezone_t __tz, struct tm *restrict __tm));
+#  else
+#   if !@HAVE_TZALLOC@
 _GL_FUNCDECL_SYS (mktime_z, time_t,
                   (timezone_t __tz, struct tm *restrict __tm),
                   _GL_ARG_NONNULL ((2)));
+#   endif
 _GL_CXXALIAS_SYS (mktime_z, time_t,
                   (timezone_t __tz, struct tm *restrict __tm));
+#  endif
 
 /* Time zone abbreviation strings (returned by 'localtime_rz' or 'mktime_z'
    in the 'tm_zone' member of 'struct tm') are valid as long as
diff --git a/gnulib/lib/uchar.in.h b/gnulib/lib/uchar.in.h
index a94322b88b..1b9487e39f 100644
--- a/gnulib/lib/uchar.in.h
+++ b/gnulib/lib/uchar.in.h
@@ -192,7 +192,7 @@ c32isalnum (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32isalnum, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32isalnum, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32isalnum, int, (wint_t wc));
 _GL_CXXALIASWARN (c32isalnum);
@@ -211,7 +211,7 @@ c32isalpha (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32isalpha, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32isalpha, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32isalpha, int, (wint_t wc));
 _GL_CXXALIASWARN (c32isalpha);
@@ -230,7 +230,7 @@ c32isblank (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32isblank, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32isblank, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32isblank, int, (wint_t wc));
 _GL_CXXALIASWARN (c32isblank);
@@ -249,7 +249,7 @@ c32iscntrl (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32iscntrl, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32iscntrl, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32iscntrl, int, (wint_t wc));
 _GL_CXXALIASWARN (c32iscntrl);
@@ -268,7 +268,7 @@ c32isdigit (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32isdigit, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32isdigit, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32isdigit, int, (wint_t wc));
 _GL_CXXALIASWARN (c32isdigit);
@@ -287,7 +287,7 @@ c32isgraph (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32isgraph, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32isgraph, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32isgraph, int, (wint_t wc));
 _GL_CXXALIASWARN (c32isgraph);
@@ -306,7 +306,7 @@ c32islower (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32islower, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32islower, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32islower, int, (wint_t wc));
 _GL_CXXALIASWARN (c32islower);
@@ -325,7 +325,7 @@ c32isprint (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32isprint, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32isprint, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32isprint, int, (wint_t wc));
 _GL_CXXALIASWARN (c32isprint);
@@ -344,7 +344,7 @@ c32ispunct (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32ispunct, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32ispunct, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32ispunct, int, (wint_t wc));
 _GL_CXXALIASWARN (c32ispunct);
@@ -363,7 +363,7 @@ c32isspace (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32isspace, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32isspace, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32isspace, int, (wint_t wc));
 _GL_CXXALIASWARN (c32isspace);
@@ -382,7 +382,7 @@ c32isupper (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32isupper, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32isupper, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32isupper, int, (wint_t wc));
 _GL_CXXALIASWARN (c32isupper);
@@ -401,7 +401,7 @@ c32isxdigit (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32isxdigit, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32isxdigit, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32isxdigit, int, (wint_t wc));
 _GL_CXXALIASWARN (c32isxdigit);
@@ -423,7 +423,7 @@ c32tolower (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32tolower, wint_t, (wint_t wc));
+_GL_FUNCDECL_SYS (c32tolower, wint_t, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32tolower, wint_t, (wint_t wc));
 _GL_CXXALIASWARN (c32tolower);
@@ -442,7 +442,7 @@ c32toupper (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32toupper, wint_t, (wint_t wc));
+_GL_FUNCDECL_SYS (c32toupper, wint_t, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32toupper, wint_t, (wint_t wc));
 _GL_CXXALIASWARN (c32toupper);
@@ -464,7 +464,7 @@ c32width (char32_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32width, int, (char32_t wc));
+_GL_FUNCDECL_SYS (c32width, int, (char32_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32width, int, (char32_t wc));
 _GL_CXXALIASWARN (c32width);
@@ -478,11 +478,11 @@ _GL_CXXALIASWARN (c32width);
 #   undef c32rtomb
 #   define c32rtomb rpl_c32rtomb
 #  endif
-_GL_FUNCDECL_RPL (c32rtomb, size_t, (char *s, char32_t wc, mbstate_t *ps));
+_GL_FUNCDECL_RPL (c32rtomb, size_t, (char *s, char32_t wc, mbstate_t *ps), );
 _GL_CXXALIAS_RPL (c32rtomb, size_t, (char *s, char32_t wc, mbstate_t *ps));
 # else
 #  if !@HAVE_C32RTOMB@
-_GL_FUNCDECL_SYS (c32rtomb, size_t, (char *s, char32_t wc, mbstate_t *ps));
+_GL_FUNCDECL_SYS (c32rtomb, size_t, (char *s, char32_t wc, mbstate_t *ps), );
 #  endif
 _GL_CXXALIAS_SYS (c32rtomb, size_t, (char *s, char32_t wc, mbstate_t *ps));
 # endif
@@ -617,7 +617,7 @@ c32tob (wint_t wc)
 }
 _GL_END_C_LINKAGE
 # else
-_GL_FUNCDECL_SYS (c32tob, int, (wint_t wc));
+_GL_FUNCDECL_SYS (c32tob, int, (wint_t wc), );
 # endif
 _GL_CXXALIAS_SYS (c32tob, int, (wint_t wc));
 _GL_CXXALIASWARN (c32tob);
@@ -632,13 +632,13 @@ _GL_CXXALIASWARN (c32tob);
 #   define mbrtoc32 rpl_mbrtoc32
 #  endif
 _GL_FUNCDECL_RPL (mbrtoc32, size_t,
-                  (char32_t *pc, const char *s, size_t n, mbstate_t *ps));
+                  (char32_t *pc, const char *s, size_t n, mbstate_t *ps), );
 _GL_CXXALIAS_RPL (mbrtoc32, size_t,
                   (char32_t *pc, const char *s, size_t n, mbstate_t *ps));
 # else
 #  if !@HAVE_MBRTOC32@
 _GL_FUNCDECL_SYS (mbrtoc32, size_t,
-                  (char32_t *pc, const char *s, size_t n, mbstate_t *ps));
+                  (char32_t *pc, const char *s, size_t n, mbstate_t *ps), );
 #  endif
 _GL_CXXALIAS_SYS (mbrtoc32, size_t,
                   (char32_t *pc, const char *s, size_t n, mbstate_t *ps));
@@ -664,13 +664,13 @@ _GL_WARN_ON_USE (mbrtoc32, "mbrtoc32 is not portable - "
 #   define mbrtoc16 rpl_mbrtoc16
 #  endif
 _GL_FUNCDECL_RPL (mbrtoc16, size_t,
-                  (char16_t *pc, const char *s, size_t n, mbstate_t *ps));
+                  (char16_t *pc, const char *s, size_t n, mbstate_t *ps), );
 _GL_CXXALIAS_RPL (mbrtoc16, size_t,
                   (char16_t *pc, const char *s, size_t n, mbstate_t *ps));
 # else
-#  if !@HAVE_MBRTOC32@
+#  if !@HAVE_MBRTOC16@
 _GL_FUNCDECL_SYS (mbrtoc16, size_t,
-                  (char16_t *pc, const char *s, size_t n, mbstate_t *ps));
+                  (char16_t *pc, const char *s, size_t n, mbstate_t *ps), );
 #  endif
 _GL_CXXALIAS_SYS (mbrtoc16, size_t,
                   (char16_t *pc, const char *s, size_t n, mbstate_t *ps));
@@ -826,7 +826,7 @@ c32_apply_type_test (wint_t wc, c32_type_test_t property)
 _GL_END_C_LINKAGE
 #  else
 _GL_FUNCDECL_SYS (c32_apply_type_test, int,
-                  (wint_t wc, c32_type_test_t property));
+                  (wint_t wc, c32_type_test_t property), );
 #  endif
 # else
 _GL_FUNCDECL_SYS (c32_apply_type_test, int,
diff --git a/gnulib/lib/unicase/tolower.h b/gnulib/lib/unicase/tolower.h
index 9c125f5054..794f4c0ca0 100644
--- a/gnulib/lib/unicase/tolower.h
+++ b/gnulib/lib/unicase/tolower.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Simple character mapping of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
@@ -27,7 +27,7 @@ struct
   {
     int level1[2];
     short level2[2 << 9];
-    int level3[35 << 7];
+    int level3[36 << 7];
   }
 u_mapping =
 {
@@ -100,10 +100,10 @@ u_mapping =
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      3456,  3584,  3712,  3840,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,  3968,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,  3968,  4096,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,  4096,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,  4224,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
@@ -124,7 +124,7 @@ u_mapping =
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,  4224,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,  4352,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
@@ -155,7 +155,7 @@ u_mapping =
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,  4352,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,  4480,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
@@ -356,7 +356,7 @@ u_mapping =
         8,     8,     8,     8,     8,     8,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,     0,     0,     0,
+        0,     1,     0,     0,     0,     0,     0,     0,
     -3008, -3008, -3008, -3008, -3008, -3008, -3008, -3008,
     -3008, -3008, -3008, -3008, -3008, -3008, -3008, -3008,
     -3008, -3008, -3008, -3008, -3008, -3008, -3008, -3008,
@@ -572,9 +572,9 @@ u_mapping =
     -42258, -42282, -42261,   928,     1,     0,     1,     0,
         1,     0,     1,     0,     1,     0,     1,     0,
         1,     0,     1,     0,   -48, -42307, -35384,     1,
-        0,     1,     0,     0,     0,     0,     0,     0,
+        0,     1,     0, -42343,     1,     0,     0,     0,
         1,     0,     0,     0,     0,     0,     1,     0,
-        1,     0,     0,     0,     0,     0,     0,     0,
+        1,     0,     1,     0, -42561,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     1,     0,     0,
@@ -679,6 +679,22 @@ u_mapping =
         0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
+       32,    32,    32,    32,    32,    32,    32,    32,
+       32,    32,    32,    32,    32,    32,    32,    32,
+       32,    32,    32,    32,    32,    32,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,
        32,    32,    32,    32,    32,    32,    32,    32,
        32,    32,    32,    32,    32,    32,    32,    32,
        32,    32,    32,    32,    32,    32,    32,    32,
diff --git a/gnulib/lib/unictype.in.h b/gnulib/lib/unictype.in.h
index fdd2cd1cec..8ad2e5410d 100644
--- a/gnulib/lib/unictype.in.h
+++ b/gnulib/lib/unictype.in.h
@@ -575,7 +575,8 @@ enum
   UC_JOINING_GROUP_HANIFI_ROHINGYA_PA,       /* Hanifi_Rohingya_Pa */
   UC_JOINING_GROUP_HANIFI_ROHINGYA_KINNA_YA, /* Hanifi_Rohingya_Kinna_Ya */
   UC_JOINING_GROUP_THIN_YEH,                 /* Thin_Yeh */
-  UC_JOINING_GROUP_VERTICAL_TAIL             /* Vertical_Tail */
+  UC_JOINING_GROUP_VERTICAL_TAIL,            /* Vertical_Tail */
+  UC_JOINING_GROUP_KASHMIRI_YEH              /* Kashmiri_Yeh */
 };
 
 /* Return the name of a joining group.  */
@@ -650,6 +651,7 @@ extern 
@GNULIB_UNICTYPE_PROPERTY_GRAPHEME_BASE_DLL_VARIABLE@ const uc_property_t
 extern @GNULIB_UNICTYPE_PROPERTY_GRAPHEME_EXTEND_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_GRAPHEME_EXTEND;
 extern @GNULIB_UNICTYPE_PROPERTY_OTHER_GRAPHEME_EXTEND_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_OTHER_GRAPHEME_EXTEND;
 extern @GNULIB_UNICTYPE_PROPERTY_GRAPHEME_LINK_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_GRAPHEME_LINK;
+extern @GNULIB_UNICTYPE_PROPERTY_MODIFIER_COMBINING_MARK_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_MODIFIER_COMBINING_MARK;
 /* Bidi.  */
 extern @GNULIB_UNICTYPE_PROPERTY_BIDI_CONTROL_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_BIDI_CONTROL;
 extern @GNULIB_UNICTYPE_PROPERTY_BIDI_LEFT_TO_RIGHT_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_BIDI_LEFT_TO_RIGHT;
@@ -802,6 +804,8 @@ extern bool uc_is_property_other_grapheme_extend (ucs4_t uc)
        _UC_ATTRIBUTE_CONST;
 extern bool uc_is_property_grapheme_link (ucs4_t uc)
        _UC_ATTRIBUTE_CONST;
+extern bool uc_is_property_modifier_combining_mark (ucs4_t uc)
+       _UC_ATTRIBUTE_CONST;
 extern bool uc_is_property_bidi_control (ucs4_t uc)
        _UC_ATTRIBUTE_CONST;
 extern bool uc_is_property_bidi_left_to_right (ucs4_t uc)
diff --git a/gnulib/lib/unictype/ctype_alnum.h 
b/gnulib/lib/unictype/ctype_alnum.h
index 9e28bb67dc..3ee771ab57 100644
--- a/gnulib/lib/unictype/ctype_alnum.h
+++ b/gnulib/lib/unictype/ctype_alnum.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
@@ -27,7 +27,7 @@ struct
     int header[1];
     int level1[4];
     short level2[4 << 7];
-    unsigned int level3[81 << 4];
+    unsigned int level3[85 << 4];
   }
 u_is_alnum =
 {
@@ -194,15 +194,15 @@ u_is_alnum =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   816,
-       -1,
-       -1,
-       -1,
-       -1,
-       -1,
-       -1,
-       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   832,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
+        5 +   512 * sizeof (short) / sizeof (int) +   848,
        -1,
        -1,
        -1,
@@ -215,14 +215,14 @@ u_is_alnum =
        -1,
        -1,
        -1,
-       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +   864,
        -1,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +   848,
-       -1,
-        5 +   512 * sizeof (short) / sizeof (int) +   864,
+        5 +   512 * sizeof (short) / sizeof (int) +   880,
+        5 +   512 * sizeof (short) / sizeof (int) +   896,
+        5 +   512 * sizeof (short) / sizeof (int) +   912,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -234,14 +234,10 @@ u_is_alnum =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +   880,
+        5 +   512 * sizeof (short) / sizeof (int) +   928,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +   896,
-       -1,
-       -1,
-       -1,
-       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +   944,
        -1,
        -1,
        -1,
@@ -254,18 +250,18 @@ u_is_alnum =
        -1,
        -1,
        -1,
-        5 +   512 * sizeof (short) / sizeof (int) +   912,
-        5 +   512 * sizeof (short) / sizeof (int) +   928,
-        5 +   512 * sizeof (short) / sizeof (int) +   944,
        -1,
        -1,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   960,
+        5 +   512 * sizeof (short) / sizeof (int) +   976,
+        5 +   512 * sizeof (short) / sizeof (int) +   992,
        -1,
        -1,
        -1,
        -1,
+        5 +   512 * sizeof (short) / sizeof (int) +  1008,
        -1,
        -1,
        -1,
@@ -273,26 +269,30 @@ u_is_alnum =
        -1,
        -1,
        -1,
-        5 +   512 * sizeof (short) / sizeof (int) +   976,
-        5 +   512 * sizeof (short) / sizeof (int) +   992,
+        5 +   512 * sizeof (short) / sizeof (int) +  1024,
        -1,
        -1,
        -1,
-        5 +   512 * sizeof (short) / sizeof (int) +  1008,
-        5 +   512 * sizeof (short) / sizeof (int) +  1024,
         5 +   512 * sizeof (short) / sizeof (int) +  1040,
         5 +   512 * sizeof (short) / sizeof (int) +  1056,
-        5 +   512 * sizeof (short) / sizeof (int) +  1072,
-        5 +   512 * sizeof (short) / sizeof (int) +  1088,
        -1,
        -1,
+       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +  1072,
+        5 +   512 * sizeof (short) / sizeof (int) +  1088,
         5 +   512 * sizeof (short) / sizeof (int) +  1104,
         5 +   512 * sizeof (short) / sizeof (int) +  1120,
+        5 +   512 * sizeof (short) / sizeof (int) +  1136,
+        5 +   512 * sizeof (short) / sizeof (int) +  1152,
        -1,
+       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +  1168,
+        5 +   512 * sizeof (short) / sizeof (int) +  1184,
        -1,
        -1,
        -1,
-        5 +   512 * sizeof (short) / sizeof (int) +  1136,
+       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +  1200,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -378,7 +378,7 @@ u_is_alnum =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1152,
+        5 +   512 * sizeof (short) / sizeof (int) +  1216,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -386,8 +386,8 @@ u_is_alnum =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1168,
-        5 +   512 * sizeof (short) / sizeof (int) +  1184,
+        5 +   512 * sizeof (short) / sizeof (int) +  1232,
+        5 +   512 * sizeof (short) / sizeof (int) +  1248,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -398,7 +398,7 @@ u_is_alnum =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1200,
+        5 +   512 * sizeof (short) / sizeof (int) +  1264,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -412,15 +412,15 @@ u_is_alnum =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1216,
+        5 +   512 * sizeof (short) / sizeof (int) +  1280,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1232,
+        5 +   512 * sizeof (short) / sizeof (int) +  1296,
        -1,
        -1,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1248,
+        5 +   512 * sizeof (short) / sizeof (int) +  1312,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -432,7 +432,7 @@ u_is_alnum =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1264,
+        5 +   512 * sizeof (short) / sizeof (int) +  1328,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -440,7 +440,7 @@ u_is_alnum =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1280,
+        5 +   512 * sizeof (short) / sizeof (int) +  1344,
        -1,
        -1,
        -1,
@@ -610,7 +610,7 @@ u_is_alnum =
     0xFFFFFFE0U, 0x000FFFFFU, 0x03FF1FE0U, 0x00000000U,
     0xFFFFFFF8U, 0xFFFFC001U, 0xFFFFFFFFU, 0x0000003FU,
     0xFFFFFFFFU, 0x0000000FU, 0xFFFFE3FFU, 0x3FFFFFFFU,
-    0xFFFF01FFU, 0xE7FFFFFFU, 0x00000000U, 0x046FDE00U,
+    0xFFFF07FFU, 0xE7FFFFFFU, 0x00000000U, 0x046FDE00U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -652,7 +652,7 @@ u_is_alnum =
     0xFFFF1FFFU, 0x00000FFFU, 0xFFFFFFFFU, 0x80007FFFU,
     0x3FFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000FFFFU,
     0xFF800000U, 0xFFFFFFFCU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFF9FFU, 0xFFFFFFFFU, 0x03EB07FFU, 0xFFFC0000U,
+    0xFFFFF9FFU, 0xFFFFFFFFU, 0x1FEB3FFFU, 0xFFFC0000U,
     0xFFFFF7BBU, 0x00000007U, 0xFFFFFFFFU, 0x000FFFFFU,
     0xFFFFFFFCU, 0x000FFFFFU, 0x03FF0000U, 0x68FC0000U,
     0xFFFFFFFFU, 0xFFFF003FU, 0x0000007FU, 0x1FFFFFFFU,
@@ -692,7 +692,7 @@ u_is_alnum =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0x3FFFFFFFU, 0xFFFF03FFU, 0xFF0FFFFFU, 0x0FFFFFFFU,
     0xFFFFFFFFU, 0xFFFF00FFU, 0xFFFFFFFFU, 0xF7FF000FU,
-    0xFFB7F7FFU, 0x1BFBFFFBU, 0x00000000U, 0x00000000U,
+    0xFFB7F7FFU, 0x1BFBFFFBU, 0xFFFFFFFFU, 0x000FFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0x007FFFFFU, 0x003FFFFFU, 0x000000FFU,
@@ -707,10 +707,10 @@ u_is_alnum =
     0x0003FFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x000001FFU, 0x00000000U,
     0xFFFFFFFFU, 0x0007FFFFU, 0xFFFFFFFFU, 0x0007FFFFU,
-    0xFFFFFFFFU, 0x03FF000FU, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFFFFFFU, 0x03FF000FU, 0xFFFFFFFFU, 0xFFFF803FU,
+    0x0000003FU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0xFFFFFFFFU, 0x000303FFU, 0x00000000U, 0x00000000U,
+    0xFFFFFFFFU, 0x000303FFU, 0x0000001CU, 0x00000000U,
     0x1FFFFFFFU, 0xFFFF0080U, 0x0000003FU, 0xFFFF0000U,
     0x00000003U, 0xFFFF0000U, 0x0000001FU, 0x007FFFFFU,
     0xFFFFFFF8U, 0x00FFFFFFU, 0x00000000U, 0x0026FFC0U,
@@ -720,13 +720,13 @@ u_is_alnum =
     0xFFFBFFFFU, 0x80000FFFU, 0x00000001U, 0x00000000U,
     0xBFFFBD7FU, 0xFFFF01FFU, 0x7FFFFFFFU, 0x03FF0000U,
     0xFFF99FE0U, 0x23EDFDFFU, 0xE0010000U, 0x00000003U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFF4BFFU, 0x00BFFFFFU, 0x000A0000U, 0x00000000U,
     0xFFFFFFFFU, 0x001FFFFFU, 0x83FF0780U, 0x00000003U,
     0xFFFFFFFFU, 0x0000FFFFU, 0x03FF00B0U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0x00007FFFU, 0x0F000000U, 0x00000000U,
     0xFFFFFFFFU, 0x0000FFFFU, 0x03FF0010U, 0x00000000U,
-    0xFFFFFFFFU, 0x010007FFU, 0x000003FFU, 0x00000000U,
+    0xFFFFFFFFU, 0x010007FFU, 0xFFFF03FFU, 0x0000000FU,
     0x07FFFFFFU, 0x03FF0000U, 0x0000007FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0x00000FFFU, 0x00000000U, 0x00000000U,
@@ -736,7 +736,7 @@ u_is_alnum =
     0xFFFFF801U, 0x0407FFFFU, 0xF0010000U, 0xFFFFFFFFU,
     0x200003FFU, 0xFFFF0000U, 0xFFFFFFFFU, 0x01FFFFFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0x03FF0001U,
     0xFFFFFDFFU, 0x00007FFFU, 0x03FF0001U, 0xFFFC0000U,
     0x0000FFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFB7FU, 0x0001FFFFU, 0x03FF0040U, 0xFFFFFDBFU,
@@ -757,18 +757,30 @@ u_is_alnum =
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFF0000U, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x0001FFFFU,
-    0xFFFFFFFFU, 0x0000FFFFU, 0x0000007EU, 0x00000000U,
+    0xFFFFFFFFU, 0x0000FFFFU, 0x0000007EU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x07FFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000007FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000007FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x3FFFFFFFU, 0x03FF0000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0x01FFFFFFU, 0x7FFFFFFFU, 0xFFFF03FFU,
     0xFFFFFFFFU, 0x7FFFFFFFU, 0xFFFF03FFU, 0x00003FFFU,
     0xFFFFFFFFU, 0x0000FFFFU, 0x03FF000FU, 0xE0FFFFF8U,
     0x0000FFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0x03FF1FFFU,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x000107FFU, 0x00000000U,
@@ -778,7 +790,7 @@ u_is_alnum =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x00FFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0x00000000U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0x80000000U,
     0x000001FFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
@@ -797,6 +809,10 @@ u_is_alnum =
     0x03FF01FFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFC00000U, 0x03FFFFFFU,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFDFFFFFU, 0xFFFFFFFFU,
     0xDFFFFFFFU, 0xEBFFDE64U, 0xFFFFFFEFU, 0xFFFFFFFFU,
     0xDFDFE7BFU, 0x7BFFFFFFU, 0xFFFDFC5FU, 0xFFFFFFFFU,
@@ -820,7 +836,7 @@ u_is_alnum =
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0xFFFF0000U, 0x03FF0FFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFF0000U, 0x07FF3FFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
diff --git a/gnulib/lib/unictype/ctype_alpha.h 
b/gnulib/lib/unictype/ctype_alpha.h
index 7709886b17..cd129cb94c 100644
--- a/gnulib/lib/unictype/ctype_alpha.h
+++ b/gnulib/lib/unictype/ctype_alpha.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
@@ -27,7 +27,7 @@ struct
     int header[1];
     int level1[4];
     short level2[4 << 7];
-    unsigned int level3[81 << 4];
+    unsigned int level3[85 << 4];
   }
 u_is_alpha =
 {
@@ -194,15 +194,15 @@ u_is_alpha =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   816,
-       -1,
-       -1,
-       -1,
-       -1,
-       -1,
-       -1,
-       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   832,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
+        5 +   512 * sizeof (short) / sizeof (int) +   848,
        -1,
        -1,
        -1,
@@ -215,14 +215,14 @@ u_is_alpha =
        -1,
        -1,
        -1,
-       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +   864,
        -1,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +   848,
-       -1,
-        5 +   512 * sizeof (short) / sizeof (int) +   864,
+        5 +   512 * sizeof (short) / sizeof (int) +   880,
+        5 +   512 * sizeof (short) / sizeof (int) +   896,
+        5 +   512 * sizeof (short) / sizeof (int) +   912,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -234,14 +234,10 @@ u_is_alpha =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +   880,
+        5 +   512 * sizeof (short) / sizeof (int) +   928,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +   896,
-       -1,
-       -1,
-       -1,
-       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +   944,
        -1,
        -1,
        -1,
@@ -254,18 +250,18 @@ u_is_alpha =
        -1,
        -1,
        -1,
-        5 +   512 * sizeof (short) / sizeof (int) +   912,
-        5 +   512 * sizeof (short) / sizeof (int) +   928,
-        5 +   512 * sizeof (short) / sizeof (int) +   944,
        -1,
        -1,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   960,
+        5 +   512 * sizeof (short) / sizeof (int) +   976,
+        5 +   512 * sizeof (short) / sizeof (int) +   992,
        -1,
        -1,
        -1,
        -1,
+        5 +   512 * sizeof (short) / sizeof (int) +  1008,
        -1,
        -1,
        -1,
@@ -273,26 +269,30 @@ u_is_alpha =
        -1,
        -1,
        -1,
-        5 +   512 * sizeof (short) / sizeof (int) +   976,
-        5 +   512 * sizeof (short) / sizeof (int) +   992,
+        5 +   512 * sizeof (short) / sizeof (int) +  1024,
        -1,
        -1,
        -1,
-        5 +   512 * sizeof (short) / sizeof (int) +  1008,
-        5 +   512 * sizeof (short) / sizeof (int) +  1024,
         5 +   512 * sizeof (short) / sizeof (int) +  1040,
         5 +   512 * sizeof (short) / sizeof (int) +  1056,
-        5 +   512 * sizeof (short) / sizeof (int) +  1072,
-        5 +   512 * sizeof (short) / sizeof (int) +  1088,
        -1,
        -1,
+       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +  1072,
+        5 +   512 * sizeof (short) / sizeof (int) +  1088,
         5 +   512 * sizeof (short) / sizeof (int) +  1104,
         5 +   512 * sizeof (short) / sizeof (int) +  1120,
+        5 +   512 * sizeof (short) / sizeof (int) +  1136,
+        5 +   512 * sizeof (short) / sizeof (int) +  1152,
        -1,
+       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +  1168,
+        5 +   512 * sizeof (short) / sizeof (int) +  1184,
        -1,
        -1,
        -1,
-        5 +   512 * sizeof (short) / sizeof (int) +  1136,
+       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +  1200,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -378,7 +378,7 @@ u_is_alpha =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1152,
+        5 +   512 * sizeof (short) / sizeof (int) +  1216,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -386,8 +386,8 @@ u_is_alpha =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1168,
-        5 +   512 * sizeof (short) / sizeof (int) +  1184,
+        5 +   512 * sizeof (short) / sizeof (int) +  1232,
+        5 +   512 * sizeof (short) / sizeof (int) +  1248,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -398,7 +398,7 @@ u_is_alpha =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1200,
+        5 +   512 * sizeof (short) / sizeof (int) +  1264,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -412,15 +412,15 @@ u_is_alpha =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1216,
+        5 +   512 * sizeof (short) / sizeof (int) +  1280,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1232,
+        5 +   512 * sizeof (short) / sizeof (int) +  1296,
        -1,
        -1,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1248,
+        5 +   512 * sizeof (short) / sizeof (int) +  1312,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -432,7 +432,7 @@ u_is_alpha =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1264,
+        5 +   512 * sizeof (short) / sizeof (int) +  1328,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -440,7 +440,7 @@ u_is_alpha =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1280,
+        5 +   512 * sizeof (short) / sizeof (int) +  1344,
        -1,
        -1,
        -1,
@@ -610,7 +610,7 @@ u_is_alpha =
     0xFFFFFFE0U, 0x000FFFFFU, 0x03FF1FE0U, 0x00000000U,
     0xFFFFFFF8U, 0xFFFFC001U, 0xFFFFFFFFU, 0x0000003FU,
     0xFFFFFFFFU, 0x0000000FU, 0xFFFFE3FFU, 0x3FFFFFFFU,
-    0xFFFF01FFU, 0xE7FFFFFFU, 0x00000000U, 0x046FDE00U,
+    0xFFFF07FFU, 0xE7FFFFFFU, 0x00000000U, 0x046FDE00U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -652,7 +652,7 @@ u_is_alpha =
     0xFFFF1FFFU, 0x00000FFFU, 0xFFFFFFFFU, 0x80007FFFU,
     0x3FFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000FFFFU,
     0xFF800000U, 0xFFFFFFFCU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFF9FFU, 0xFFFFFFFFU, 0x03EB07FFU, 0xFFFC0000U,
+    0xFFFFF9FFU, 0xFFFFFFFFU, 0x1FEB3FFFU, 0xFFFC0000U,
     0xFFFFF7BBU, 0x00000007U, 0xFFFFFFFFU, 0x000FFFFFU,
     0xFFFFFFFCU, 0x000FFFFFU, 0x03FF0000U, 0x68FC0000U,
     0xFFFFFFFFU, 0xFFFF003FU, 0x0000007FU, 0x1FFFFFFFU,
@@ -692,7 +692,7 @@ u_is_alpha =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0x3FFFFFFFU, 0xFFFF03FFU, 0xFF0FFFFFU, 0x0FFFFFFFU,
     0xFFFFFFFFU, 0xFFFF00FFU, 0xFFFFFFFFU, 0xF7FF000FU,
-    0xFFB7F7FFU, 0x1BFBFFFBU, 0x00000000U, 0x00000000U,
+    0xFFB7F7FFU, 0x1BFBFFFBU, 0xFFFFFFFFU, 0x000FFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0x007FFFFFU, 0x003FFFFFU, 0x000000FFU,
@@ -707,10 +707,10 @@ u_is_alpha =
     0x0003FFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x000001FFU, 0x00000000U,
     0xFFFFFFFFU, 0x0007FFFFU, 0xFFFFFFFFU, 0x0007FFFFU,
-    0xFFFFFFFFU, 0x03FF000FU, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFFFFFFU, 0x03FF000FU, 0xFFFFFFFFU, 0xFFFF803FU,
+    0x0000003FU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0xFFFFFFFFU, 0x000303FFU, 0x00000000U, 0x00000000U,
+    0xFFFFFFFFU, 0x000303FFU, 0x0000001CU, 0x00000000U,
     0x1FFFFFFFU, 0xFFFF0080U, 0x0000003FU, 0xFFFF0000U,
     0x00000003U, 0xFFFF0000U, 0x0000001FU, 0x007FFFFFU,
     0xFFFFFFF8U, 0x00FFFFFFU, 0x00000000U, 0x0026FFC0U,
@@ -720,13 +720,13 @@ u_is_alpha =
     0xFFFBFFFFU, 0x80000FFFU, 0x00000001U, 0x00000000U,
     0xBFFFBD7FU, 0xFFFF01FFU, 0x7FFFFFFFU, 0x03FF0000U,
     0xFFF99FE0U, 0x23EDFDFFU, 0xE0010000U, 0x00000003U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFF4BFFU, 0x00BFFFFFU, 0x000A0000U, 0x00000000U,
     0xFFFFFFFFU, 0x001FFFFFU, 0x83FF0780U, 0x00000003U,
     0xFFFFFFFFU, 0x0000FFFFU, 0x03FF00B0U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0x00007FFFU, 0x0F000000U, 0x00000000U,
     0xFFFFFFFFU, 0x0000FFFFU, 0x03FF0010U, 0x00000000U,
-    0xFFFFFFFFU, 0x010007FFU, 0x000003FFU, 0x00000000U,
+    0xFFFFFFFFU, 0x010007FFU, 0xFFFF03FFU, 0x0000000FU,
     0x07FFFFFFU, 0x03FF0000U, 0x0000007FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0x00000FFFU, 0x00000000U, 0x00000000U,
@@ -736,7 +736,7 @@ u_is_alpha =
     0xFFFFF801U, 0x0407FFFFU, 0xF0010000U, 0xFFFFFFFFU,
     0x200003FFU, 0xFFFF0000U, 0xFFFFFFFFU, 0x01FFFFFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0x03FF0001U,
     0xFFFFFDFFU, 0x00007FFFU, 0x03FF0001U, 0xFFFC0000U,
     0x0000FFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFB7FU, 0x0001FFFFU, 0x03FF0040U, 0xFFFFFDBFU,
@@ -757,18 +757,30 @@ u_is_alpha =
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFF0000U, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x0001FFFFU,
-    0xFFFFFFFFU, 0x0000FFFFU, 0x0000007EU, 0x00000000U,
+    0xFFFFFFFFU, 0x0000FFFFU, 0x0000007EU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x07FFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000007FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000007FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x3FFFFFFFU, 0x03FF0000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0x01FFFFFFU, 0x7FFFFFFFU, 0xFFFF03FFU,
     0xFFFFFFFFU, 0x7FFFFFFFU, 0xFFFF03FFU, 0x00003FFFU,
     0xFFFFFFFFU, 0x0000FFFFU, 0x03FF000FU, 0xE0FFFFF8U,
     0x0000FFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0x03FF1FFFU,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x000107FFU, 0x00000000U,
@@ -778,7 +790,7 @@ u_is_alpha =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x00FFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0x00000000U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0x80000000U,
     0x000001FFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
@@ -797,6 +809,10 @@ u_is_alpha =
     0x03FF01FFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFC00000U, 0x03FFFFFFU,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFDFFFFFU, 0xFFFFFFFFU,
     0xDFFFFFFFU, 0xEBFFDE64U, 0xFFFFFFEFU, 0xFFFFFFFFU,
     0xDFDFE7BFU, 0x7BFFFFFFU, 0xFFFDFC5FU, 0xFFFFFFFFU,
@@ -820,7 +836,7 @@ u_is_alpha =
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0xFFFF0000U, 0x03FF0FFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFF0000U, 0x07FF3FFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
diff --git a/gnulib/lib/unictype/ctype_blank.h 
b/gnulib/lib/unictype/ctype_blank.h
index 5ba76c72d6..23fac0f3b2 100644
--- a/gnulib/lib/unictype/ctype_blank.h
+++ b/gnulib/lib/unictype/ctype_blank.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
diff --git a/gnulib/lib/unictype/ctype_cntrl.h 
b/gnulib/lib/unictype/ctype_cntrl.h
index 8eb1651362..58df7e7652 100644
--- a/gnulib/lib/unictype/ctype_cntrl.h
+++ b/gnulib/lib/unictype/ctype_cntrl.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
diff --git a/gnulib/lib/unictype/ctype_digit.h 
b/gnulib/lib/unictype/ctype_digit.h
index 4421f6f4b6..2f7d182212 100644
--- a/gnulib/lib/unictype/ctype_digit.h
+++ b/gnulib/lib/unictype/ctype_digit.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
diff --git a/gnulib/lib/unictype/ctype_graph.h 
b/gnulib/lib/unictype/ctype_graph.h
index bb5281b962..5627ad0f99 100644
--- a/gnulib/lib/unictype/ctype_graph.h
+++ b/gnulib/lib/unictype/ctype_graph.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
@@ -27,7 +27,7 @@ struct
     int header[1];
     int level1[17];
     short level2[6 << 7];
-    unsigned int level3[90 << 4];
+    unsigned int level3[94 << 4];
   }
 u_is_graph =
 {
@@ -207,15 +207,15 @@ u_is_graph =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   800,
-       -1,
-       -1,
-       -1,
-       -1,
-       -1,
-       -1,
-       -1,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   816,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       18 +   768 * sizeof (short) / sizeof (int) +   832,
        -1,
        -1,
        -1,
@@ -228,14 +228,14 @@ u_is_graph =
        -1,
        -1,
        -1,
-       -1,
+       18 +   768 * sizeof (short) / sizeof (int) +   848,
        -1,
        -1,
        -1,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +   832,
-       -1,
-       18 +   768 * sizeof (short) / sizeof (int) +   848,
+       18 +   768 * sizeof (short) / sizeof (int) +   864,
+       18 +   768 * sizeof (short) / sizeof (int) +   880,
+       18 +   768 * sizeof (short) / sizeof (int) +   896,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -247,10 +247,10 @@ u_is_graph =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +   864,
+       18 +   768 * sizeof (short) / sizeof (int) +   912,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +   880,
+       18 +   768 * sizeof (short) / sizeof (int) +   928,
        -1,
        -1,
        -1,
@@ -267,15 +267,14 @@ u_is_graph =
        -1,
        -1,
        -1,
-       18 +   768 * sizeof (short) / sizeof (int) +   896,
-       18 +   768 * sizeof (short) / sizeof (int) +   912,
-       18 +   768 * sizeof (short) / sizeof (int) +   928,
-       -1,
+       18 +   768 * sizeof (short) / sizeof (int) +   944,
+       18 +   768 * sizeof (short) / sizeof (int) +   960,
+       18 +   768 * sizeof (short) / sizeof (int) +   976,
        -1,
        -1,
        -1,
-       18 +   768 * sizeof (short) / sizeof (int) +   944,
        -1,
+       18 +   768 * sizeof (short) / sizeof (int) +   992,
        -1,
        -1,
        -1,
@@ -283,29 +282,30 @@ u_is_graph =
        -1,
        -1,
        -1,
-       18 +   768 * sizeof (short) / sizeof (int) +   960,
-       18 +   768 * sizeof (short) / sizeof (int) +   976,
-       18 +   768 * sizeof (short) / sizeof (int) +   992,
        18 +   768 * sizeof (short) / sizeof (int) +  1008,
        18 +   768 * sizeof (short) / sizeof (int) +  1024,
-       18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +  1040,
-       -1,
        18 +   768 * sizeof (short) / sizeof (int) +  1056,
        18 +   768 * sizeof (short) / sizeof (int) +  1072,
        18 +   768 * sizeof (short) / sizeof (int) +  1088,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +  1104,
+       -1,
        18 +   768 * sizeof (short) / sizeof (int) +  1120,
        18 +   768 * sizeof (short) / sizeof (int) +  1136,
-       -1,
        18 +   768 * sizeof (short) / sizeof (int) +  1152,
        18 +   768 * sizeof (short) / sizeof (int) +  1168,
        18 +   768 * sizeof (short) / sizeof (int) +  1184,
        18 +   768 * sizeof (short) / sizeof (int) +  1200,
-       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       -1,
        18 +   768 * sizeof (short) / sizeof (int) +  1216,
        18 +   768 * sizeof (short) / sizeof (int) +  1232,
        18 +   768 * sizeof (short) / sizeof (int) +  1248,
+       18 +   768 * sizeof (short) / sizeof (int) +  1264,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       18 +   768 * sizeof (short) / sizeof (int) +  1280,
+       18 +   768 * sizeof (short) / sizeof (int) +  1296,
+       18 +   768 * sizeof (short) / sizeof (int) +  1312,
        -1,
        -1,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -391,7 +391,7 @@ u_is_graph =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1264,
+       18 +   768 * sizeof (short) / sizeof (int) +  1328,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -399,8 +399,8 @@ u_is_graph =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1280,
-       18 +   768 * sizeof (short) / sizeof (int) +  1296,
+       18 +   768 * sizeof (short) / sizeof (int) +  1344,
+       18 +   768 * sizeof (short) / sizeof (int) +  1360,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -411,7 +411,7 @@ u_is_graph =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1312,
+       18 +   768 * sizeof (short) / sizeof (int) +  1376,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -425,15 +425,15 @@ u_is_graph =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1328,
+       18 +   768 * sizeof (short) / sizeof (int) +  1392,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1344,
+       18 +   768 * sizeof (short) / sizeof (int) +  1408,
        -1,
        -1,
        -1,
        -1,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1360,
+       18 +   768 * sizeof (short) / sizeof (int) +  1424,
        -1,
        -1,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -445,7 +445,7 @@ u_is_graph =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1376,
+       18 +   768 * sizeof (short) / sizeof (int) +  1440,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -453,7 +453,7 @@ u_is_graph =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1392,
+       18 +   768 * sizeof (short) / sizeof (int) +  1456,
        -1,
        -1,
        -1,
@@ -564,7 +564,7 @@ u_is_graph =
        -1,
        -1,
        -1,
-       18 +   768 * sizeof (short) / sizeof (int) +  1408,
+       18 +   768 * sizeof (short) / sizeof (int) +  1472,
        -1,
        -1,
        -1,
@@ -819,7 +819,7 @@ u_is_graph =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1424
+       18 +   768 * sizeof (short) / sizeof (int) +  1488
   },
   {
     0x00000000U, 0xFFFFFFFEU, 0xFFFFFFFFU, 0x7FFFFFFFU,
@@ -839,7 +839,7 @@ u_is_graph =
     0xFFFFBFFFU, 0xFFFFFFFFU, 0xFFFFE7FFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0x0003FFFFU, 0xFFFFFFFFU, 0xE7FFFFFFU,
     0xFFFFFFFFU, 0x7FFF3FFFU, 0x4FFFFFFFU, 0xFFFF07FFU,
-    0xFF037FFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFF837FFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFF99FEFU, 0xF3C5FDFFU, 0xB080799FU, 0x7FFFFFCFU,
     0xFFF987EEU, 0xD36DFDFFU, 0x5E023987U, 0x007FFFC0U,
@@ -876,10 +876,10 @@ u_is_graph =
     0xFFFFFFFFU, 0xFFFF0FFFU, 0xC7FF03FFU, 0xFFFFFFFFU,
     0xCFFFFFFFU, 0xFFFFFFFFU, 0x7FFFFFFFU, 0x9FFFFFFFU,
     0x03FF03FFU, 0xFFFF3FFFU, 0x00007FFFU, 0x00000000U,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFF1FFFU, 0x7FFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFDFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xF00FFFFFU,
     0xFFFFFFFFU, 0xF8FFFFFFU, 0xFFFFE3FFU, 0xFFFFFFFFU,
-    0xFFFF01FFU, 0xE7FFFFFFU, 0xFFFF00FFU, 0x07FFFFFFU,
+    0xFFFF07FFU, 0xE7FFFFFFU, 0xFFFF00FFU, 0x07FFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -890,7 +890,7 @@ u_is_graph =
     0x1FFF7FFFU, 0xFFFFFFFFU, 0xFFFF0001U, 0x0001FFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFF0FFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFFFFFU, 0x0000007FU, 0x000007FFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0x000003FFU, 0x000007FFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -909,7 +909,7 @@ u_is_graph =
     0xFFFFFFFEU, 0xFFFFFFFFU, 0xFFFFFFFEU, 0xFFFFFFFFU,
     0xFE7FFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFE0U, 0xFFFEFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFF7FFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFF800FU,
+    0xFFFF7FFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFF803FU,
     0x7FFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -921,7 +921,7 @@ u_is_graph =
     0xFFFFFFFFU, 0x00000FFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x00FFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0x03EB07FFU, 0xFFFC0000U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x1FEB3FFFU, 0xFFFC0000U,
     0xFFFFFFFFU, 0x03FF1FFFU, 0xFFFFFFFFU, 0x00FFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FFC03FU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x800FFFFFU, 0x1FFFFFFFU,
@@ -957,7 +957,7 @@ u_is_graph =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0x3FFFFFFFU, 0xFFFF03FFU, 0xFF0FFFFFU, 0x0FFFFFFFU,
     0xFFFFFFFFU, 0xFFFF00FFU, 0xFFFFFFFFU, 0xF7FF800FU,
-    0xFFB7F7FFU, 0x1BFBFFFBU, 0x00000000U, 0x00000000U,
+    0xFFB7F7FFU, 0x1BFBFFFBU, 0xFFFFFFFFU, 0x000FFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0x007FFFFFU, 0x003FFFFFU, 0x000000FFU,
@@ -972,10 +972,10 @@ u_is_graph =
     0x1E03FFFFU, 0x0000FE00U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x000001FFU, 0x00000000U,
     0xFFFFFFFFU, 0x0007FFFFU, 0xFFFFFFFFU, 0xFC07FFFFU,
-    0xFFFFFFFFU, 0x03FF00FFU, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFFFFFFU, 0x03FF00FFU, 0xFFFFFFFFU, 0xFFFFFE3FU,
+    0x0000C03FU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x7FFFFFFFU,
-    0xFFFFFFFFU, 0x00033BFFU, 0x00000000U, 0xE0000000U,
+    0xFFFFFFFFU, 0x00033BFFU, 0x0000001CU, 0xF0000000U,
     0xFFFFFFFFU, 0xFFFF00FFU, 0x03FFFFFFU, 0xFFFF0000U,
     0x000003FFU, 0xFFFF0000U, 0x00000FFFU, 0x007FFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFC3FFFU, 0x803FFFFFU,
@@ -985,13 +985,13 @@ u_is_graph =
     0xFFFBFFFFU, 0xFFFFFFFFU, 0x00000003U, 0x00000000U,
     0xBFFFBD7FU, 0xFFFF03FFU, 0xFFFFFFFFU, 0x03FF07FFU,
     0xFFF99FEFU, 0xFBEDFDFFU, 0xE081399FU, 0x001F1FCFU,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFF4BFFU, 0xFFBFFFFFU, 0x01BFF7A5U, 0x00000006U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xEFFFFFFFU, 0x00000003U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FF00FFU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFF3FFFFFU, 0x3FFFFFFFU, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FF001FU, 0x00001FFFU,
-    0xFFFFFFFFU, 0x03FFFFFFU, 0x000003FFU, 0x00000000U,
+    0xFFFFFFFFU, 0x03FFFFFFU, 0xFFFF03FFU, 0x0000000FU,
     0xE7FFFFFFU, 0xFFFF0FFFU, 0x0000007FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0x0FFFFFFFU, 0x00000000U, 0x00000000U,
@@ -1001,14 +1001,14 @@ u_is_graph =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFF00FFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFF0007U, 0xFFFFFFFFU, 0x01FFFFFFU,
     0x000003FFU, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0x03FF0003U,
     0xFFFFFDFFU, 0xFF7FFFFFU, 0xFFFF003FU, 0xFFFF1FFFU,
     0xFFFCFFFFU, 0x007FFEFFU, 0x00000000U, 0x00000000U,
     0xFFFFFB7FU, 0xB47FFFFFU, 0x03FF00FFU, 0xFFFFFDBFU,
     0x01FB7FFFU, 0x000003FFU, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x01FFFFFFU,
-    0xFFFDFFFFU, 0xC7FFFFFFU, 0x03FFFFFFU, 0x00000000U,
+    0xFFFDFFFFU, 0xC7FFFFFFU, 0x07FFFFFFU, 0x00000000U,
     0x00000000U, 0x00010000U, 0xFFFFFFFFU, 0x8003FFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -1022,18 +1022,30 @@ u_is_graph =
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFF0000U, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x0007FFFFU,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0x00000000U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x07FFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000007FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000007FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFFFFFFU, 0x03FFFFFFU, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0x01FFFFFFU, 0x7FFFFFFFU, 0xFFFFC3FFU,
     0xFFFFFFFFU, 0x7FFFFFFFU, 0xFFFF03FFU, 0x003F3FFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFBFF003FU, 0xE0FFFFFBU,
     0x0000FFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0x03FFFFFFU,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0x07FFFFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFF87FFU, 0xFFFFFFFFU,
@@ -1043,7 +1055,7 @@ u_is_graph =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x00FFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0x00000000U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0x80000000U,
     0x000001FFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
@@ -1062,8 +1074,12 @@ u_is_graph =
     0xF3FF01FFU, 0x0000000FU, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0x000FFFFFU, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFF3FFFU, 0xFFFF007FU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000000FU, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -1101,7 +1117,7 @@ u_is_graph =
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0xFFFF0000U, 0x03FFFFFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFF0000U, 0x87FFFFFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
@@ -1131,13 +1147,13 @@ u_is_graph =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xF87FFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FFFFFFU, 0x00010FFFU,
     0xFFFF0FFFU, 0xFFFFFFFFU, 0x03FF00FFU, 0xFFFFFFFFU,
-    0xFFFF00FFU, 0x00033FFFU, 0x00000000U, 0x00000000U,
+    0xFFFF00FFU, 0x0FFF3FFFU, 0x00000003U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x000FFFFFU, 0x1FFF3FFFU,
-    0xFFFF01FFU, 0xBFFFFFFFU, 0x0FFFC03FU, 0x01FF01FFU,
+    0xFFFF83FFU, 0xFFFFFFFFU, 0x9FFFC07FU, 0x01FF03FFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFF7FFFFU, 0xFFFFFFFFU, 0x000007FFU, 0x03FF0000U,
+    0xFFF7FFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
diff --git a/gnulib/lib/unictype/ctype_lower.h 
b/gnulib/lib/unictype/ctype_lower.h
index 6bde4107d2..cbf7d26dcb 100644
--- a/gnulib/lib/unictype/ctype_lower.h
+++ b/gnulib/lib/unictype/ctype_lower.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
@@ -298,8 +298,8 @@ u_is_lower =
     0x00000000U, 0x00000000U, 0x00000000U, 0x07FFFFFEU,
     0x00000000U, 0x00200000U, 0x80000000U, 0xFF7FFFFFU,
     0xAAAAAAAAU, 0x54AAAAAAU, 0xAAAAA955U, 0xD4AAAAAAU,
-    0x46241129U, 0xA251212AU, 0xB5555B60U, 0xAA2CAAAAU,
-    0xAAAAAAAAU, 0x900AAAA8U, 0x1ADFAA85U, 0x20269F6BU,
+    0x4E241129U, 0xA251212AU, 0xB5555B60U, 0xAA2CAAAAU,
+    0xAAAAAAAAU, 0x900AAAA8U, 0x1ADFAA85U, 0x20269F7BU,
     0x60041F8DU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000020U, 0x388A0000U,
     0x00000000U, 0xFFFEF000U, 0xAAE37FFFU, 0x092FAAAAU,
@@ -316,7 +316,7 @@ u_is_lower =
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x3F000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x000001FFU, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x000005FFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x22000000U,
     0x00004000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xAAAAAAAAU, 0xAAAAAAAAU, 0xAAAAAAAAU, 0xAAAAAAAAU,
@@ -338,7 +338,7 @@ u_is_lower =
     0x00000000U, 0x00000000U, 0xAAAAAAAAU, 0x00002AAAU,
     0x0AAAAAAAU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0xAAA8AAA8U, 0xAAAAAAAAU, 0x9400AAAAU,
-    0xAA9A10AAU, 0xAAA002AAU, 0x0282050AU, 0x00400000U,
+    0xAA9A10AAU, 0xAAA002AAU, 0x0A82250AU, 0x00400000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00080000U, 0xFFFF0000U,
@@ -353,8 +353,8 @@ u_is_lower =
     0xFF800000U, 0x1BFBFFFBU, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0x0007FFFFU,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0xFFFF0000U,
+    0x0000003FU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
diff --git a/gnulib/lib/unictype/ctype_print.h 
b/gnulib/lib/unictype/ctype_print.h
index d5d6a2a7a8..b700782887 100644
--- a/gnulib/lib/unictype/ctype_print.h
+++ b/gnulib/lib/unictype/ctype_print.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
@@ -27,7 +27,7 @@ struct
     int header[1];
     int level1[17];
     short level2[6 << 7];
-    unsigned int level3[90 << 4];
+    unsigned int level3[94 << 4];
   }
 u_is_print =
 {
@@ -207,15 +207,15 @@ u_is_print =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   800,
-       -1,
-       -1,
-       -1,
-       -1,
-       -1,
-       -1,
-       -1,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   816,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       18 +   768 * sizeof (short) / sizeof (int) +   832,
        -1,
        -1,
        -1,
@@ -228,14 +228,14 @@ u_is_print =
        -1,
        -1,
        -1,
-       -1,
+       18 +   768 * sizeof (short) / sizeof (int) +   848,
        -1,
        -1,
        -1,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +   832,
-       -1,
-       18 +   768 * sizeof (short) / sizeof (int) +   848,
+       18 +   768 * sizeof (short) / sizeof (int) +   864,
+       18 +   768 * sizeof (short) / sizeof (int) +   880,
+       18 +   768 * sizeof (short) / sizeof (int) +   896,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -247,10 +247,10 @@ u_is_print =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +   864,
+       18 +   768 * sizeof (short) / sizeof (int) +   912,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +   880,
+       18 +   768 * sizeof (short) / sizeof (int) +   928,
        -1,
        -1,
        -1,
@@ -267,15 +267,14 @@ u_is_print =
        -1,
        -1,
        -1,
-       18 +   768 * sizeof (short) / sizeof (int) +   896,
-       18 +   768 * sizeof (short) / sizeof (int) +   912,
-       18 +   768 * sizeof (short) / sizeof (int) +   928,
-       -1,
+       18 +   768 * sizeof (short) / sizeof (int) +   944,
+       18 +   768 * sizeof (short) / sizeof (int) +   960,
+       18 +   768 * sizeof (short) / sizeof (int) +   976,
        -1,
        -1,
        -1,
-       18 +   768 * sizeof (short) / sizeof (int) +   944,
        -1,
+       18 +   768 * sizeof (short) / sizeof (int) +   992,
        -1,
        -1,
        -1,
@@ -283,29 +282,30 @@ u_is_print =
        -1,
        -1,
        -1,
-       18 +   768 * sizeof (short) / sizeof (int) +   960,
-       18 +   768 * sizeof (short) / sizeof (int) +   976,
-       18 +   768 * sizeof (short) / sizeof (int) +   992,
        18 +   768 * sizeof (short) / sizeof (int) +  1008,
        18 +   768 * sizeof (short) / sizeof (int) +  1024,
-       18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +  1040,
-       -1,
        18 +   768 * sizeof (short) / sizeof (int) +  1056,
        18 +   768 * sizeof (short) / sizeof (int) +  1072,
        18 +   768 * sizeof (short) / sizeof (int) +  1088,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +  1104,
+       -1,
        18 +   768 * sizeof (short) / sizeof (int) +  1120,
        18 +   768 * sizeof (short) / sizeof (int) +  1136,
-       -1,
        18 +   768 * sizeof (short) / sizeof (int) +  1152,
        18 +   768 * sizeof (short) / sizeof (int) +  1168,
        18 +   768 * sizeof (short) / sizeof (int) +  1184,
        18 +   768 * sizeof (short) / sizeof (int) +  1200,
-       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       -1,
        18 +   768 * sizeof (short) / sizeof (int) +  1216,
        18 +   768 * sizeof (short) / sizeof (int) +  1232,
        18 +   768 * sizeof (short) / sizeof (int) +  1248,
+       18 +   768 * sizeof (short) / sizeof (int) +  1264,
+       18 +   768 * sizeof (short) / sizeof (int) +   160,
+       18 +   768 * sizeof (short) / sizeof (int) +  1280,
+       18 +   768 * sizeof (short) / sizeof (int) +  1296,
+       18 +   768 * sizeof (short) / sizeof (int) +  1312,
        -1,
        -1,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -391,7 +391,7 @@ u_is_print =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1264,
+       18 +   768 * sizeof (short) / sizeof (int) +  1328,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -399,8 +399,8 @@ u_is_print =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1280,
-       18 +   768 * sizeof (short) / sizeof (int) +  1296,
+       18 +   768 * sizeof (short) / sizeof (int) +  1344,
+       18 +   768 * sizeof (short) / sizeof (int) +  1360,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -411,7 +411,7 @@ u_is_print =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1312,
+       18 +   768 * sizeof (short) / sizeof (int) +  1376,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -425,15 +425,15 @@ u_is_print =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1328,
+       18 +   768 * sizeof (short) / sizeof (int) +  1392,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1344,
+       18 +   768 * sizeof (short) / sizeof (int) +  1408,
        -1,
        -1,
        -1,
        -1,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1360,
+       18 +   768 * sizeof (short) / sizeof (int) +  1424,
        -1,
        -1,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -445,7 +445,7 @@ u_is_print =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1376,
+       18 +   768 * sizeof (short) / sizeof (int) +  1440,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
@@ -453,7 +453,7 @@ u_is_print =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1392,
+       18 +   768 * sizeof (short) / sizeof (int) +  1456,
        -1,
        -1,
        -1,
@@ -564,7 +564,7 @@ u_is_print =
        -1,
        -1,
        -1,
-       18 +   768 * sizeof (short) / sizeof (int) +  1408,
+       18 +   768 * sizeof (short) / sizeof (int) +  1472,
        -1,
        -1,
        -1,
@@ -819,7 +819,7 @@ u_is_print =
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
        18 +   768 * sizeof (short) / sizeof (int) +   160,
-       18 +   768 * sizeof (short) / sizeof (int) +  1424
+       18 +   768 * sizeof (short) / sizeof (int) +  1488
   },
   {
     0x00000000U, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x7FFFFFFFU,
@@ -839,7 +839,7 @@ u_is_print =
     0xFFFFBFFFU, 0xFFFFFFFFU, 0xFFFFE7FFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0x0003FFFFU, 0xFFFFFFFFU, 0xE7FFFFFFU,
     0xFFFFFFFFU, 0x7FFF3FFFU, 0x4FFFFFFFU, 0xFFFF07FFU,
-    0xFF037FFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFF837FFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFF99FEFU, 0xF3C5FDFFU, 0xB080799FU, 0x7FFFFFCFU,
     0xFFF987EEU, 0xD36DFDFFU, 0x5E023987U, 0x007FFFC0U,
@@ -876,10 +876,10 @@ u_is_print =
     0xFFFFFFFFU, 0xFFFF0FFFU, 0xC7FF03FFU, 0xFFFFFFFFU,
     0xCFFFFFFFU, 0xFFFFFFFFU, 0x7FFFFFFFU, 0x9FFFFFFFU,
     0x03FF03FFU, 0xFFFF3FFFU, 0x00007FFFU, 0x00000000U,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFF1FFFU, 0x7FFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFDFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xF00FFFFFU,
     0xFFFFFFFFU, 0xF8FFFFFFU, 0xFFFFE3FFU, 0xFFFFFFFFU,
-    0xFFFF01FFU, 0xE7FFFFFFU, 0xFFFF00FFU, 0x07FFFFFFU,
+    0xFFFF07FFU, 0xE7FFFFFFU, 0xFFFF00FFU, 0x07FFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -890,7 +890,7 @@ u_is_print =
     0x1FFF7FFFU, 0xFFFFFFFFU, 0xFFFF0001U, 0x0001FFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFF0FFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFFFFFU, 0x0000007FU, 0x000007FFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0x000003FFU, 0x000007FFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -909,7 +909,7 @@ u_is_print =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFEU, 0xFFFFFFFFU,
     0xFE7FFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFE0U, 0xFFFEFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFF7FFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFF800FU,
+    0xFFFF7FFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFF803FU,
     0x7FFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -921,7 +921,7 @@ u_is_print =
     0xFFFFFFFFU, 0x00000FFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x00FFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0x03EB07FFU, 0xFFFC0000U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x1FEB3FFFU, 0xFFFC0000U,
     0xFFFFFFFFU, 0x03FF1FFFU, 0xFFFFFFFFU, 0x00FFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FFC03FU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x800FFFFFU, 0x1FFFFFFFU,
@@ -957,7 +957,7 @@ u_is_print =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0x3FFFFFFFU, 0xFFFF03FFU, 0xFF0FFFFFU, 0x0FFFFFFFU,
     0xFFFFFFFFU, 0xFFFF00FFU, 0xFFFFFFFFU, 0xF7FF800FU,
-    0xFFB7F7FFU, 0x1BFBFFFBU, 0x00000000U, 0x00000000U,
+    0xFFB7F7FFU, 0x1BFBFFFBU, 0xFFFFFFFFU, 0x000FFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0x007FFFFFU, 0x003FFFFFU, 0x000000FFU,
@@ -972,10 +972,10 @@ u_is_print =
     0x1E03FFFFU, 0x0000FE00U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x000001FFU, 0x00000000U,
     0xFFFFFFFFU, 0x0007FFFFU, 0xFFFFFFFFU, 0xFC07FFFFU,
-    0xFFFFFFFFU, 0x03FF00FFU, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFFFFFFU, 0x03FF00FFU, 0xFFFFFFFFU, 0xFFFFFE3FU,
+    0x0000C03FU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x7FFFFFFFU,
-    0xFFFFFFFFU, 0x00033BFFU, 0x00000000U, 0xE0000000U,
+    0xFFFFFFFFU, 0x00033BFFU, 0x0000001CU, 0xF0000000U,
     0xFFFFFFFFU, 0xFFFF00FFU, 0x03FFFFFFU, 0xFFFF0000U,
     0x000003FFU, 0xFFFF0000U, 0x00000FFFU, 0x007FFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFC3FFFU, 0x803FFFFFU,
@@ -985,13 +985,13 @@ u_is_print =
     0xFFFBFFFFU, 0xFFFFFFFFU, 0x00000003U, 0x00000000U,
     0xBFFFBD7FU, 0xFFFF03FFU, 0xFFFFFFFFU, 0x03FF07FFU,
     0xFFF99FEFU, 0xFBEDFDFFU, 0xE081399FU, 0x001F1FCFU,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFF4BFFU, 0xFFBFFFFFU, 0x01BFF7A5U, 0x00000006U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xEFFFFFFFU, 0x00000003U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FF00FFU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFF3FFFFFU, 0x3FFFFFFFU, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FF001FU, 0x00001FFFU,
-    0xFFFFFFFFU, 0x03FFFFFFU, 0x000003FFU, 0x00000000U,
+    0xFFFFFFFFU, 0x03FFFFFFU, 0xFFFF03FFU, 0x0000000FU,
     0xE7FFFFFFU, 0xFFFF0FFFU, 0x0000007FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0x0FFFFFFFU, 0x00000000U, 0x00000000U,
@@ -1001,14 +1001,14 @@ u_is_print =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFF00FFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFF0007U, 0xFFFFFFFFU, 0x01FFFFFFU,
     0x000003FFU, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0x03FF0003U,
     0xFFFFFDFFU, 0xFF7FFFFFU, 0xFFFF003FU, 0xFFFF1FFFU,
     0xFFFCFFFFU, 0x007FFEFFU, 0x00000000U, 0x00000000U,
     0xFFFFFB7FU, 0xB47FFFFFU, 0x03FF00FFU, 0xFFFFFDBFU,
     0x01FB7FFFU, 0x000003FFU, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x01FFFFFFU,
-    0xFFFDFFFFU, 0xC7FFFFFFU, 0x03FFFFFFU, 0x00000000U,
+    0xFFFDFFFFU, 0xC7FFFFFFU, 0x07FFFFFFU, 0x00000000U,
     0x00000000U, 0x00010000U, 0xFFFFFFFFU, 0x8003FFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -1022,18 +1022,30 @@ u_is_print =
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFF0000U, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x0007FFFFU,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0x00000000U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x07FFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000007FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000007FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFFFFFFU, 0x03FFFFFFU, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0x01FFFFFFU, 0x7FFFFFFFU, 0xFFFFC3FFU,
     0xFFFFFFFFU, 0x7FFFFFFFU, 0xFFFF03FFU, 0x003F3FFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFBFF003FU, 0xE0FFFFFBU,
     0x0000FFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0x03FFFFFFU,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0x07FFFFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFF87FFU, 0xFFFFFFFFU,
@@ -1043,7 +1055,7 @@ u_is_print =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x00FFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0x00000000U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0x80000000U,
     0x000001FFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
@@ -1062,8 +1074,12 @@ u_is_print =
     0xF3FF01FFU, 0x0000000FU, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0x000FFFFFU, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFF3FFFU, 0xFFFF007FU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000000FU, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -1101,7 +1117,7 @@ u_is_print =
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0xFFFF0000U, 0x03FFFFFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFF0000U, 0x87FFFFFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
@@ -1131,13 +1147,13 @@ u_is_print =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xF87FFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FFFFFFU, 0x00010FFFU,
     0xFFFF0FFFU, 0xFFFFFFFFU, 0x03FF00FFU, 0xFFFFFFFFU,
-    0xFFFF00FFU, 0x00033FFFU, 0x00000000U, 0x00000000U,
+    0xFFFF00FFU, 0x0FFF3FFFU, 0x00000003U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x000FFFFFU, 0x1FFF3FFFU,
-    0xFFFF01FFU, 0xBFFFFFFFU, 0x0FFFC03FU, 0x01FF01FFU,
+    0xFFFF83FFU, 0xFFFFFFFFU, 0x9FFFC07FU, 0x01FF03FFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFF7FFFFU, 0xFFFFFFFFU, 0x000007FFU, 0x03FF0000U,
+    0xFFF7FFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
diff --git a/gnulib/lib/unictype/ctype_punct.h 
b/gnulib/lib/unictype/ctype_punct.h
index 6a0f287884..cb25211421 100644
--- a/gnulib/lib/unictype/ctype_punct.h
+++ b/gnulib/lib/unictype/ctype_punct.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
@@ -27,7 +27,7 @@ struct
     int header[1];
     int level1[17];
     short level2[4 << 7];
-    unsigned int level3[72 << 4];
+    unsigned int level3[75 << 4];
   }
 u_is_punct =
 {
@@ -228,14 +228,14 @@ u_is_punct =
        -1,
        -1,
        -1,
+       18 +   512 * sizeof (short) / sizeof (int) +   816,
        -1,
        -1,
        -1,
        -1,
-       -1,
-       18 +   512 * sizeof (short) / sizeof (int) +   816,
-       -1,
        18 +   512 * sizeof (short) / sizeof (int) +   832,
+       18 +   512 * sizeof (short) / sizeof (int) +   848,
+       18 +   512 * sizeof (short) / sizeof (int) +   864,
        -1,
        -1,
        -1,
@@ -274,8 +274,7 @@ u_is_punct =
        -1,
        -1,
        -1,
-       18 +   512 * sizeof (short) / sizeof (int) +   848,
-       -1,
+       18 +   512 * sizeof (short) / sizeof (int) +   880,
        -1,
        -1,
        -1,
@@ -283,32 +282,33 @@ u_is_punct =
        -1,
        -1,
        -1,
-       18 +   512 * sizeof (short) / sizeof (int) +   864,
-       18 +   512 * sizeof (short) / sizeof (int) +   880,
        18 +   512 * sizeof (short) / sizeof (int) +   896,
-       -1,
        18 +   512 * sizeof (short) / sizeof (int) +   912,
-       18 +   512 * sizeof (short) / sizeof (int) +   272,
        18 +   512 * sizeof (short) / sizeof (int) +   928,
-       -1,
-       -1,
        18 +   512 * sizeof (short) / sizeof (int) +   944,
+       -1,
        18 +   512 * sizeof (short) / sizeof (int) +   960,
+       18 +   512 * sizeof (short) / sizeof (int) +   272,
        18 +   512 * sizeof (short) / sizeof (int) +   976,
        -1,
-       18 +   512 * sizeof (short) / sizeof (int) +   992,
        -1,
+       18 +   512 * sizeof (short) / sizeof (int) +   992,
        18 +   512 * sizeof (short) / sizeof (int) +  1008,
        18 +   512 * sizeof (short) / sizeof (int) +  1024,
+       -1,
        18 +   512 * sizeof (short) / sizeof (int) +  1040,
+       -1,
        18 +   512 * sizeof (short) / sizeof (int) +  1056,
-       18 +   512 * sizeof (short) / sizeof (int) +   272,
        18 +   512 * sizeof (short) / sizeof (int) +  1072,
        18 +   512 * sizeof (short) / sizeof (int) +  1088,
        18 +   512 * sizeof (short) / sizeof (int) +  1104,
+       18 +   512 * sizeof (short) / sizeof (int) +   272,
+       18 +   512 * sizeof (short) / sizeof (int) +  1120,
+       18 +   512 * sizeof (short) / sizeof (int) +  1136,
+       18 +   512 * sizeof (short) / sizeof (int) +  1152,
        -1,
        -1,
-       18 +   512 * sizeof (short) / sizeof (int) +  1120,
+       18 +   512 * sizeof (short) / sizeof (int) +  1168,
        -1,
        -1,
        -1,
@@ -563,7 +563,7 @@ u_is_punct =
        18 +   512 * sizeof (short) / sizeof (int) +   272,
        18 +   512 * sizeof (short) / sizeof (int) +   272,
        18 +   512 * sizeof (short) / sizeof (int) +   272,
-       18 +   512 * sizeof (short) / sizeof (int) +  1136
+       18 +   512 * sizeof (short) / sizeof (int) +  1184
   },
   {
     0x00000000U, 0xFC00FFFEU, 0xF8000001U, 0x78000001U,
@@ -583,7 +583,7 @@ u_is_punct =
     0x0002BFFFU, 0xFFFF0000U, 0x000007FFU, 0x00000000U,
     0x00000000U, 0x0001FFC0U, 0x00000000U, 0xE3CFF800U,
     0xFBC00000U, 0x7FFF3EEFU, 0x4E000000U, 0x00000000U,
-    0xFF030100U, 0x00000000U, 0xFFFFFC00U, 0xFFFFFFFFU,
+    0xFF830100U, 0x00000000U, 0xFFFFFC00U, 0xFFFFFFFFU,
     0x0000000FU, 0xDC000000U, 0x00FEFFFFU, 0x0001003CU,
     0x0000000EU, 0xD0000000U, 0x0080399FU, 0x6FFC000CU,
     0x0000000EU, 0xD0000000U, 0x00023987U, 0x00630000U,
@@ -620,7 +620,7 @@ u_is_punct =
     0x00000000U, 0x00000000U, 0xC4000000U, 0xFFFFFFFFU,
     0xCF800000U, 0x00000000U, 0x7FE00000U, 0x9FFFFFFFU,
     0x00000000U, 0xFFFF3F7FU, 0x00007FFFU, 0x00000000U,
-    0x0000001FU, 0xFFF00000U, 0xFC00001FU, 0x7FFFFFFFU,
+    0x0000001FU, 0xFFF00000U, 0xFC00C01FU, 0xFFFFFFFFU,
     0x00000007U, 0x00003FFEU, 0x00000000U, 0xF00FFFC0U,
     0x00000000U, 0xF8FFFFF0U, 0x00000000U, 0xC0000000U,
     0x00000000U, 0x00000000U, 0xFFFF00FFU, 0x039021FFU,
@@ -638,7 +638,7 @@ u_is_punct =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFFFFFU, 0x0000007FU, 0x000007FFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0x000003FFU, 0x000007FFU, 0xFFFFFFFFU,
     0x0FFFFFFFU, 0x00000000U, 0x00000000U, 0xFFFFFC00U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -657,7 +657,7 @@ u_is_punct =
     0xFFFFFF1EU, 0xE0C1FC01U, 0x00000000U, 0x00000000U,
     0x1E000000U, 0x00000001U, 0x00000000U, 0x08000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0xFFFF0000U, 0x00000000U, 0xFFFFFFFFU, 0x0000800FU,
+    0xFFFF0000U, 0x00000000U, 0xFFFFFFFFU, 0x0000803FU,
     0x7FFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -720,10 +720,10 @@ u_is_punct =
     0x1E000000U, 0x0000FE00U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0xFC000000U,
-    0x00000000U, 0x000000F0U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x000000F0U, 0x00000000U, 0x00007E00U,
+    0x0000C000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x7FFFFFFFU,
-    0x00000000U, 0x00003800U, 0x00000000U, 0xE0000000U,
+    0x00000000U, 0x00003800U, 0x00000000U, 0xF0000000U,
     0xE0000000U, 0x0000007FU, 0x03FFFFC0U, 0x00000000U,
     0x000003FCU, 0x00000000U, 0x00000FE0U, 0x00000000U,
     0x00000007U, 0xFF000000U, 0xFFFC3FFFU, 0x8019003FU,
@@ -733,7 +733,7 @@ u_is_punct =
     0x00000000U, 0x7FFFF000U, 0x00000002U, 0x00000000U,
     0x00000000U, 0x00000200U, 0x80000000U, 0x000007FFU,
     0x0000000FU, 0xD8000000U, 0x0080399FU, 0x001F1FCCU,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0xFF000000U, 0x01B5F7A5U, 0x00000006U,
     0x00000000U, 0xFFE00000U, 0x6C00F87FU, 0x00000000U,
     0x00000000U, 0xFFFF0000U, 0x0000004FU, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
@@ -749,14 +749,14 @@ u_is_punct =
     0x000007FEU, 0xFBF80000U, 0x0FFE00FFU, 0x00000000U,
     0xDFFFFC00U, 0x00000007U, 0x00000000U, 0x00000000U,
     0x000003FFU, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000002U,
     0x00000000U, 0xFF7F8000U, 0xFC00003EU, 0x00031FFFU,
     0xFFFC0000U, 0x007FFEFFU, 0x00000000U, 0x00000000U,
     0x00000000U, 0xB47E0000U, 0x000000BFU, 0x00000000U,
     0x00FB7C00U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x01F80000U,
-    0x0000000BU, 0xC7F00000U, 0x0000FFFFU, 0x00000000U,
+    0x0000000BU, 0xC7F00000U, 0x0400FFFFU, 0x00000000U,
     0x00000000U, 0x00000000U, 0xFFFFFFFFU, 0x8003FFFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x001F0000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
@@ -770,11 +770,19 @@ u_is_punct =
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xC0000000U, 0x0000FFFFU, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x0000C000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x003F0000U,
     0x00000000U, 0xFFFF0000U, 0xF8000030U, 0x00000003U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x0000E000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x07FFFFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0xFFFE8000U, 0xFFFFFFFFU,
     0x000780FFU, 0x00000000U, 0x00000000U, 0x00030014U,
@@ -782,8 +790,12 @@ u_is_punct =
     0xF0000000U, 0x0000000FU, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU, 0x00000000U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
+    0xFFFFFFFFU, 0x000FFFFFU, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFF3FFFU, 0xFFFF007FU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000000FU, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
@@ -813,7 +825,7 @@ u_is_punct =
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x0000F000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x8000C000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x007FFF80U, 0x00000000U,
     0x00000000U, 0x00000000U, 0xC00007F0U, 0x00000000U,
@@ -839,13 +851,13 @@ u_is_punct =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xF87FFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x03FFFFFFU, 0x00010FFFU,
     0xFFFF0FFFU, 0xFFFFFFFFU, 0x03FF00FFU, 0xFFFFFFFFU,
-    0xFFFF00FFU, 0x00033FFFU, 0x00000000U, 0x00000000U,
+    0xFFFF00FFU, 0x0FFF3FFFU, 0x00000003U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0x000FFFFFU, 0x1FFF3FFFU,
-    0xFFFF01FFU, 0xBFFFFFFFU, 0x0FFFC03FU, 0x01FF01FFU,
+    0xFFFF83FFU, 0xFFFFFFFFU, 0x9FFFC07FU, 0x01FF03FFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFF7FFFFU, 0xFFFFFFFFU, 0x000007FFU, 0x00000000U,
+    0xFFF7FFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x0000FFFFU,
     0x00000002U, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
diff --git a/gnulib/lib/unictype/ctype_space.h 
b/gnulib/lib/unictype/ctype_space.h
index 89e3a329e6..93ed2467c1 100644
--- a/gnulib/lib/unictype/ctype_space.h
+++ b/gnulib/lib/unictype/ctype_space.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
diff --git a/gnulib/lib/unictype/ctype_upper.h 
b/gnulib/lib/unictype/ctype_upper.h
index d9259bf80d..ef52780987 100644
--- a/gnulib/lib/unictype/ctype_upper.h
+++ b/gnulib/lib/unictype/ctype_upper.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
@@ -316,7 +316,7 @@ u_is_upper =
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x003FFFFFU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
-    0xFFFF0000U, 0xE7FFFFFFU, 0x00000000U, 0x00000000U,
+    0xFFFF0200U, 0xE7FFFFFFU, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x55555555U, 0x55555555U, 0x55555555U, 0x55555555U,
@@ -338,7 +338,7 @@ u_is_upper =
     0x00000000U, 0x00000000U, 0x55555555U, 0x00001555U,
     0x05555555U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x55545554U, 0x55555555U, 0x6A005555U,
-    0x55452855U, 0x555F7D55U, 0x014102F5U, 0x00200000U,
+    0x55452855U, 0x555F7D55U, 0x15411AF5U, 0x00200000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x07FFFFFEU, 0x00000000U, 0x00000000U,
@@ -349,7 +349,7 @@ u_is_upper =
     0x0037F7FFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0xFFFFFFFFU, 0x0007FFFFU, 0x00000000U, 0x00000000U,
-    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0xFFFF0000U, 0x0000003FU,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0xFFFFFFFFU, 0x00000000U, 0x00000000U,
diff --git a/gnulib/lib/unictype/ctype_xdigit.h 
b/gnulib/lib/unictype/ctype_xdigit.h
index 02d9c2dfc4..c0b2ac05df 100644
--- a/gnulib/lib/unictype/ctype_xdigit.h
+++ b/gnulib/lib/unictype/ctype_xdigit.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
diff --git a/gnulib/lib/unistd.in.h b/gnulib/lib/unistd.in.h
index 3222f5a568..20b1356fd3 100644
--- a/gnulib/lib/unistd.in.h
+++ b/gnulib/lib/unistd.in.h
@@ -399,7 +399,7 @@ _GL_WARN_ON_USE (chown, "chown fails to follow symlinks on 
some systems and "
 #   undef close
 #   define close rpl_close
 #  endif
-_GL_FUNCDECL_RPL (close, int, (int fd));
+_GL_FUNCDECL_RPL (close, int, (int fd), );
 _GL_CXXALIAS_RPL (close, int, (int fd));
 # elif defined _WIN32 && !defined __CYGWIN__
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -446,7 +446,7 @@ _GL_CXXALIASWARN (close);
 #  endif
 _GL_FUNCDECL_RPL (copy_file_range, ssize_t, (int ifd, off_t *ipos,
                                              int ofd, off_t *opos,
-                                             size_t len, unsigned flags));
+                                             size_t len, unsigned flags), );
 _GL_CXXALIAS_RPL (copy_file_range, ssize_t, (int ifd, off_t *ipos,
                                              int ofd, off_t *opos,
                                              size_t len, unsigned flags));
@@ -454,7 +454,7 @@ _GL_CXXALIAS_RPL (copy_file_range, ssize_t, (int ifd, off_t 
*ipos,
 #  if !@HAVE_COPY_FILE_RANGE@
 _GL_FUNCDECL_SYS (copy_file_range, ssize_t, (int ifd, off_t *ipos,
                                              int ofd, off_t *opos,
-                                             size_t len, unsigned flags));
+                                             size_t len, unsigned flags), );
 #  endif
 _GL_CXXALIAS_SYS (copy_file_range, ssize_t, (int ifd, off_t *ipos,
                                              int ofd, off_t *opos,
@@ -521,7 +521,7 @@ _GL_CXXALIASWARN (dup);
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   define dup2 rpl_dup2
 #  endif
-_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd));
+_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd), );
 _GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd));
 # elif defined _WIN32 && !defined __CYGWIN__
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -570,11 +570,11 @@ _GL_CXXALIASWARN (dup2);
 #   undef dup3
 #   define dup3 rpl_dup3
 #  endif
-_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags));
+_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags), );
 _GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags));
 # else
 #  if !@HAVE_DUP3@
-_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags));
+_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags), );
 #  endif
 _GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags));
 # endif
@@ -1045,11 +1045,11 @@ _GL_WARN_ON_USE (fchownat, "fchownat is not portable - "
 #   undef fdatasync
 #   define fdatasync rpl_fdatasync
 #  endif
-_GL_FUNCDECL_RPL (fdatasync, int, (int fd));
+_GL_FUNCDECL_RPL (fdatasync, int, (int fd), );
 _GL_CXXALIAS_RPL (fdatasync, int, (int fd));
 # else
 #  if !@HAVE_FDATASYNC@|| !@HAVE_DECL_FDATASYNC@
-_GL_FUNCDECL_SYS (fdatasync, int, (int fd));
+_GL_FUNCDECL_SYS (fdatasync, int, (int fd), );
 #  endif
 _GL_CXXALIAS_SYS (fdatasync, int, (int fd));
 # endif
@@ -1071,7 +1071,7 @@ _GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - "
    See POSIX:2008 specification
    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html>.  */
 # if !@HAVE_FSYNC@
-_GL_FUNCDECL_SYS (fsync, int, (int fd));
+_GL_FUNCDECL_SYS (fsync, int, (int fd), );
 # endif
 _GL_CXXALIAS_SYS (fsync, int, (int fd));
 _GL_CXXALIASWARN (fsync);
@@ -1223,11 +1223,11 @@ _GL_WARN_ON_USE (getdomainname, "getdomainname is 
unportable - "
 #   undef getdtablesize
 #   define getdtablesize rpl_getdtablesize
 #  endif
-_GL_FUNCDECL_RPL (getdtablesize, int, (void));
+_GL_FUNCDECL_RPL (getdtablesize, int, (void), );
 _GL_CXXALIAS_RPL (getdtablesize, int, (void));
 # else
 #  if !@HAVE_GETDTABLESIZE@
-_GL_FUNCDECL_SYS (getdtablesize, int, (void));
+_GL_FUNCDECL_SYS (getdtablesize, int, (void), );
 #  endif
 /* Need to cast, because on AIX, the parameter list is
                                            (...).  */
@@ -1360,7 +1360,7 @@ _GL_WARN_ON_USE (gethostname, "gethostname is unportable 
- "
      $USERNAME               on native Windows platforms.
  */
 # if !@HAVE_DECL_GETLOGIN@
-_GL_FUNCDECL_SYS (getlogin, char *, (void));
+_GL_FUNCDECL_SYS (getlogin, char *, (void), );
 # endif
 _GL_CXXALIAS_SYS (getlogin, char *, (void));
 _GL_CXXALIASWARN (getlogin);
@@ -1421,13 +1421,13 @@ _GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable 
- "
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   define getpagesize rpl_getpagesize
 #  endif
-_GL_FUNCDECL_RPL (getpagesize, int, (void));
+_GL_FUNCDECL_RPL (getpagesize, int, (void), );
 _GL_CXXALIAS_RPL (getpagesize, int, (void));
 # else
 /* On HP-UX, getpagesize exists, but it is not declared in <unistd.h> even if
    the compiler options -D_HPUX_SOURCE -D_XOPEN_SOURCE=600 are used.  */
 #  if defined __hpux
-_GL_FUNCDECL_SYS (getpagesize, int, (void));
+_GL_FUNCDECL_SYS (getpagesize, int, (void), );
 #  endif
 #  if !@HAVE_GETPAGESIZE@
 #   if !defined getpagesize
@@ -1559,11 +1559,11 @@ _GL_CXXALIASWARN (getpid);
 #    undef getusershell
 #    define getusershell rpl_getusershell
 #  endif
-_GL_FUNCDECL_RPL (getusershell, char *, (void));
+_GL_FUNCDECL_RPL (getusershell, char *, (void), );
 _GL_CXXALIAS_RPL (getusershell, char *, (void));
 # else
 #  if !@HAVE_DECL_GETUSERSHELL@
-_GL_FUNCDECL_SYS (getusershell, char *, (void));
+_GL_FUNCDECL_SYS (getusershell, char *, (void), );
 #  endif
 _GL_CXXALIAS_SYS (getusershell, char *, (void));
 # endif
@@ -1583,11 +1583,11 @@ _GL_WARN_ON_USE (getusershell, "getusershell is 
unportable - "
 #    undef setusershell
 #    define setusershell rpl_setusershell
 #  endif
-_GL_FUNCDECL_RPL (setusershell, void, (void));
+_GL_FUNCDECL_RPL (setusershell, void, (void), );
 _GL_CXXALIAS_RPL (setusershell, void, (void));
 # else
 #  if !@HAVE_DECL_GETUSERSHELL@
-_GL_FUNCDECL_SYS (setusershell, void, (void));
+_GL_FUNCDECL_SYS (setusershell, void, (void), );
 #  endif
 _GL_CXXALIAS_SYS (setusershell, void, (void));
 # endif
@@ -1608,11 +1608,11 @@ _GL_WARN_ON_USE (setusershell, "setusershell is 
unportable - "
 #    undef endusershell
 #    define endusershell rpl_endusershell
 #  endif
-_GL_FUNCDECL_RPL (endusershell, void, (void));
+_GL_FUNCDECL_RPL (endusershell, void, (void), );
 _GL_CXXALIAS_RPL (endusershell, void, (void));
 # else
 #  if !@HAVE_DECL_GETUSERSHELL@
-_GL_FUNCDECL_SYS (endusershell, void, (void));
+_GL_FUNCDECL_SYS (endusershell, void, (void), );
 #  endif
 _GL_CXXALIAS_SYS (endusershell, void, (void));
 # endif
@@ -1629,7 +1629,7 @@ _GL_WARN_ON_USE (endusershell, "endusershell is 
unportable - "
 #if @GNULIB_GROUP_MEMBER@
 /* Determine whether group id is in calling user's group list.  */
 # if !@HAVE_GROUP_MEMBER@
-_GL_FUNCDECL_SYS (group_member, int, (gid_t gid));
+_GL_FUNCDECL_SYS (group_member, int, (gid_t gid), );
 # endif
 _GL_CXXALIAS_SYS (group_member, int, (gid_t gid));
 _GL_CXXALIASWARN (group_member);
@@ -1649,7 +1649,7 @@ _GL_WARN_ON_USE (group_member, "group_member is 
unportable - "
 #   define isatty rpl_isatty
 #  endif
 #  define GNULIB_defined_isatty 1
-_GL_FUNCDECL_RPL (isatty, int, (int fd));
+_GL_FUNCDECL_RPL (isatty, int, (int fd), );
 _GL_CXXALIAS_RPL (isatty, int, (int fd));
 # elif defined _WIN32 && !defined __CYGWIN__
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -1792,7 +1792,7 @@ _GL_WARN_ON_USE (linkat, "linkat is unportable - "
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #   define lseek rpl_lseek
 #  endif
-_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence));
+_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence), );
 _GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence));
 # elif defined _WIN32 && !defined __CYGWIN__
 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
@@ -2161,11 +2161,11 @@ _GL_WARN_ON_USE (sethostname, "sethostname is 
unportable - "
 #   undef sleep
 #   define sleep rpl_sleep
 #  endif
-_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n));
+_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n), );
 _GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n));
 # else
 #  if !@HAVE_SLEEP@
-_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n));
+_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n), );
 #  endif
 _GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n));
 # endif
@@ -2409,11 +2409,11 @@ _GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - "
 #   undef usleep
 #   define usleep rpl_usleep
 #  endif
-_GL_FUNCDECL_RPL (usleep, int, (useconds_t n));
+_GL_FUNCDECL_RPL (usleep, int, (useconds_t n), );
 _GL_CXXALIAS_RPL (usleep, int, (useconds_t n));
 # else
 #  if !@HAVE_USLEEP@
-_GL_FUNCDECL_SYS (usleep, int, (useconds_t n));
+_GL_FUNCDECL_SYS (usleep, int, (useconds_t n), );
 #  endif
 /* Need to cast, because on Haiku, the first parameter is
                                      unsigned int n.  */
diff --git a/gnulib/lib/uniwidth/width0.h b/gnulib/lib/uniwidth/width0.h
index 6cc35536ad..2edbe2403e 100644
--- a/gnulib/lib/uniwidth/width0.h
+++ b/gnulib/lib/uniwidth/width0.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Table of non-spacing or control characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
@@ -17,7 +17,7 @@
    You should have received a copy of the GNU Lesser General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
 
-static const unsigned char nonspacing_table_data[48*64] = {
+static const unsigned char nonspacing_table_data[49*64] = {
   /* 0x0000-0x01ff */
   0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, /* 0x0000-0x003f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, /* 0x0040-0x007f */
@@ -57,7 +57,7 @@ static const unsigned char nonspacing_table_data[48*64] = {
   /* 0x0800-0x09ff */
   0x00, 0x00, 0xc0, 0xfb, 0xef, 0x3e, 0x00, 0x00, /* 0x0800-0x083f */
   0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, /* 0x0840-0x087f */
-  0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, /* 0x0880-0x08bf */
+  0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, /* 0x0880-0x08bf */
   0x00, 0xfc, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, /* 0x08c0-0x08ff */
   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, /* 0x0900-0x093f */
   0xfe, 0x21, 0xfe, 0x00, 0x0c, 0x00, 0x00, 0x00, /* 0x0940-0x097f */
@@ -258,14 +258,14 @@ static const unsigned char nonspacing_table_data[48*64] = 
{
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10c80-0x10cbf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10cc0-0x10cff */
   0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, /* 0x10d00-0x10d3f */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10d40-0x10d7f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, /* 0x10d40-0x10d7f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10d80-0x10dbf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10dc0-0x10dff */
   /* 0x10e00-0x10fff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10e00-0x10e3f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10e40-0x10e7f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, /* 0x10e80-0x10ebf */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, /* 0x10ec0-0x10eff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, /* 0x10ec0-0x10eff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10f00-0x10f3f */
   0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10f40-0x10f7f */
   0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10f80-0x10fbf */
@@ -286,8 +286,8 @@ static const unsigned char nonspacing_table_data[48*64] = {
   0x00, 0x00, 0x00, 0x80, 0xf8, 0x07, 0x00, 0x00, /* 0x112c0-0x112ff */
   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, /* 0x11300-0x1133f */
   0x01, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x1f, 0x00, /* 0x11340-0x1137f */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11380-0x113bf */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x113c0-0x113ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, /* 0x11380-0x113bf */
+  0x01, 0x40, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, /* 0x113c0-0x113ff */
   /* 0x11400-0x115ff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, /* 0x11400-0x1143f */
   0x5c, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, /* 0x11440-0x1147f */
@@ -302,7 +302,7 @@ static const unsigned char nonspacing_table_data[48*64] = {
   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11640-0x1167f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xbf, 0x00, /* 0x11680-0x116bf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x116c0-0x116ff */
-  0x00, 0x00, 0x00, 0xe0, 0xbc, 0x0f, 0x00, 0x00, /* 0x11700-0x1173f */
+  0x00, 0x00, 0x00, 0xa0, 0xbc, 0x0f, 0x00, 0x00, /* 0x11700-0x1173f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11740-0x1177f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11780-0x117bf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x117c0-0x117ff */
@@ -339,7 +339,7 @@ static const unsigned char nonspacing_table_data[48*64] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11e80-0x11ebf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, /* 0x11ec0-0x11eff */
   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, /* 0x11f00-0x11f3f */
-  0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11f40-0x11f7f */
+  0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, /* 0x11f40-0x11f7f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11f80-0x11fbf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11fc0-0x11fff */
   /* 0x13400-0x135ff */
@@ -351,6 +351,15 @@ static const unsigned char nonspacing_table_data[48*64] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x13540-0x1357f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x13580-0x135bf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x135c0-0x135ff */
+  /* 0x16000-0x161ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16000-0x1603f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16040-0x1607f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16080-0x160bf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x160c0-0x160ff */
+  0x00, 0x00, 0x00, 0xc0, 0xff, 0xe3, 0x00, 0x00, /* 0x16100-0x1613f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16140-0x1617f */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16180-0x161bf */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x161c0-0x161ff */
   /* 0x16a00-0x16bff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16a00-0x16a3f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16a40-0x16a7f */
@@ -440,7 +449,7 @@ static const unsigned char nonspacing_table_data[48*64] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e500-0x1e53f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e540-0x1e57f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e580-0x1e5bf */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e5c0-0x1e5ff */
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, /* 0x1e5c0-0x1e5ff */
   /* 0x1e800-0x1e9ff */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e800-0x1e83f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1e840-0x1e87f */
@@ -474,13 +483,13 @@ static const signed char nonspacing_table_ind[248] = {
   -1, -1, 36, -1, -1, -1, -1, -1, /* 0x13000-0x13fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x14000-0x14fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x15000-0x15fff */
-  -1, -1, -1, -1, -1, 37, -1, 38, /* 0x16000-0x16fff */
+  37, -1, -1, -1, -1, 38, -1, 39, /* 0x16000-0x16fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x17000-0x17fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x18000-0x18fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x19000-0x19fff */
   -1, -1, -1, -1, -1, -1, -1, -1, /* 0x1a000-0x1afff */
-  -1, -1, -1, -1, -1, -1, 39, -1, /* 0x1b000-0x1bfff */
-  -1, -1, -1, -1, -1, -1, -1, 40, /* 0x1c000-0x1cfff */
-  41, 42, -1, -1, -1, 43, -1, -1, /* 0x1d000-0x1dfff */
-  44, 45, 46, -1, 47, -1, -1, -1  /* 0x1e000-0x1efff */
+  -1, -1, -1, -1, -1, -1, 40, -1, /* 0x1b000-0x1bfff */
+  -1, -1, -1, -1, -1, -1, -1, 41, /* 0x1c000-0x1cfff */
+  42, 43, -1, -1, -1, 44, -1, -1, /* 0x1d000-0x1dfff */
+  45, 46, 47, -1, 48, -1, -1, -1  /* 0x1e000-0x1efff */
 };
diff --git a/gnulib/lib/uniwidth/width2.h b/gnulib/lib/uniwidth/width2.h
index 47979b5d7e..f919989b3e 100644
--- a/gnulib/lib/uniwidth/width2.h
+++ b/gnulib/lib/uniwidth/width2.h
@@ -1,6 +1,6 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Width 2 property of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 16.0.0.  */
 
 /* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
diff --git a/gnulib/lib/vasnprintf.c b/gnulib/lib/vasnprintf.c
index 8efb9ebee2..6ae95ca5dd 100644
--- a/gnulib/lib/vasnprintf.c
+++ b/gnulib/lib/vasnprintf.c
@@ -64,7 +64,7 @@
 /* As of GCC 11.2.1, gcc -Wanalyzer-too-complex reports that main's
    use of CHECK macros expands to code that is too complicated for gcc
    -fanalyzer.  Suppress the resulting bogus warnings.  */
-#if 10 <= __GNUC__
+#if _GL_GNUC_PREREQ (10, 0)
 # pragma GCC diagnostic ignored "-Wanalyzer-null-argument"
 #endif
 
@@ -968,7 +968,7 @@ divide (mpn_t a, mpn_t b, mpn_t *q)
 /* Avoid pointless GCC warning "argument 1 value '18446744073709551615' exceeds
    maximum object size 9223372036854775807", triggered by the use of xsum as
    argument of malloc.  */
-# if __GNUC__ >= 7
+# if _GL_GNUC_PREREQ (7, 0)
 #  pragma GCC diagnostic push
 #  pragma GCC diagnostic ignored "-Walloc-size-larger-than="
 # endif
@@ -1029,7 +1029,7 @@ convert_to_decimal (mpn_t a, size_t extra_zeroes)
   return c_ptr;
 }
 
-# if __GNUC__ >= 7
+# if _GL_GNUC_PREREQ (7, 0)
 #  pragma GCC diagnostic pop
 # endif
 
diff --git a/gnulib/lib/verify.h b/gnulib/lib/verify.h
index 978926a491..49a73c0508 100644
--- a/gnulib/lib/verify.h
+++ b/gnulib/lib/verify.h
@@ -34,11 +34,12 @@
 #ifndef __cplusplus
 # if (201112 <= __STDC_VERSION__ \
       || (!defined __STRICT_ANSI__ \
-          && (4 < __GNUC__ + (6 <= __GNUC_MINOR__) || 5 <= __clang_major__)))
+          && ((4 < __GNUC__ + (6 <= __GNUC_MINOR__) && !defined __clang__) \
+              || 5 <= __clang_major__)))
 #  define _GL_HAVE__STATIC_ASSERT 1
 # endif
 # if (202311 <= __STDC_VERSION__ \
-      || (!defined __STRICT_ANSI__ && 9 <= __GNUC__))
+      || (!defined __STRICT_ANSI__ && 9 <= __GNUC__ && !defined __clang__))
 #  define _GL_HAVE__STATIC_ASSERT1 1
 # endif
 #endif
@@ -215,7 +216,7 @@ template <int w>
 # define _GL_VERIFY(R, DIAGNOSTIC, ...) \
     extern int (*_GL_GENSYM (_gl_verify_function) (void)) \
       [_GL_VERIFY_TRUE (R, DIAGNOSTIC)]
-# if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
+# if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) && !defined __clang__
 #  pragma GCC diagnostic ignored "-Wnested-externs"
 # endif
 #endif
@@ -305,7 +306,7 @@ template <int w>
 #ifndef _GL_HAS_BUILTIN_UNREACHABLE
 # if defined __clang_major__ && __clang_major__ < 5
 #  define _GL_HAS_BUILTIN_UNREACHABLE 0
-# elif 4 < __GNUC__ + (5 <= __GNUC_MINOR__)
+# elif 4 < __GNUC__ + (5 <= __GNUC_MINOR__) && !defined __clang__
 #  define _GL_HAS_BUILTIN_UNREACHABLE 1
 # elif defined __has_builtin
 #  define _GL_HAS_BUILTIN_UNREACHABLE __has_builtin (__builtin_unreachable)
diff --git a/gnulib/lib/warn-on-use.h b/gnulib/lib/warn-on-use.h
index 701013a07f..73c439714a 100644
--- a/gnulib/lib/warn-on-use.h
+++ b/gnulib/lib/warn-on-use.h
@@ -85,7 +85,7 @@
    */
 #ifndef _GL_WARN_ON_USE
 
-# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
+# if (4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)) && !defined 
__clang__
 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
 #  define _GL_WARN_ON_USE(function, message) \
 _GL_WARN_EXTERN_C __typeof__ (function) function __attribute__ ((__warning__ 
(message)))
@@ -98,7 +98,7 @@ _GL_WARN_EXTERN_C __typeof__ (function) function \
   __attribute__ ((__diagnose_if__ (1, message, "warning")))
 #  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
   __attribute__ ((__diagnose_if__ (1, message, "warning")))
-# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+# elif (__GNUC__ >= 3 || defined __clang__) && GNULIB_STRICT_CHECKING
 /* Verify the existence of the function.  */
 #  define _GL_WARN_ON_USE(function, message) \
 _GL_WARN_EXTERN_C __typeof__ (function) function
@@ -121,7 +121,7 @@ _GL_WARN_EXTERN_C int _gl_warn_on_use
 #  define 
_GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg)
 \
      _GL_WARN_ON_USE (function, msg)
 # else
-#  if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
+#  if (4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)) && !defined 
__clang__
 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
 #   define 
_GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg)
 \
 extern rettype_gcc function parameters_and_attributes \
@@ -131,7 +131,7 @@ extern rettype_gcc function parameters_and_attributes \
 #   define 
_GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg)
 \
 extern rettype_clang function parameters_and_attributes \
   __attribute__ ((__diagnose_if__ (1, msg, "warning")))
-#  elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+#  elif (__GNUC__ >= 3 || defined __clang__) && GNULIB_STRICT_CHECKING
 /* Verify the existence of the function.  */
 #   define 
_GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg)
 \
 extern rettype_gcc function parameters_and_attributes
diff --git a/gnulib/lib/wchar.in.h b/gnulib/lib/wchar.in.h
index c08cf7299e..54354559ef 100644
--- a/gnulib/lib/wchar.in.h
+++ b/gnulib/lib/wchar.in.h
@@ -95,7 +95,7 @@
    that can be freed by passing them as the Ith argument to the
    function F.  */
 #ifndef _GL_ATTRIBUTE_DEALLOC
-# if __GNUC__ >= 11
+# if __GNUC__ >= 11 && !defined __clang__
 #  define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i)))
 # else
 #  define _GL_ATTRIBUTE_DEALLOC(f, i)
@@ -325,11 +325,11 @@ _GL_WARN_ON_USE (wctob, "wctob is unportable - "
 #   undef mbsinit
 #   define mbsinit rpl_mbsinit
 #  endif
-_GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps));
+_GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps), );
 _GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps));
 # else
 #  if !@HAVE_MBSINIT@
-_GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps));
+_GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps), );
 #  endif
 _GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps));
 # endif
@@ -556,7 +556,7 @@ _GL_CXXALIASWARN (mbszero);
 #  endif
 _GL_FUNCDECL_RPL (mbrtowc, size_t,
                   (wchar_t *restrict pwc, const char *restrict s, size_t n,
-                   mbstate_t *restrict ps));
+                   mbstate_t *restrict ps), );
 _GL_CXXALIAS_RPL (mbrtowc, size_t,
                   (wchar_t *restrict pwc, const char *restrict s, size_t n,
                    mbstate_t *restrict ps));
@@ -564,7 +564,7 @@ _GL_CXXALIAS_RPL (mbrtowc, size_t,
 #  if !@HAVE_MBRTOWC@
 _GL_FUNCDECL_SYS (mbrtowc, size_t,
                   (wchar_t *restrict pwc, const char *restrict s, size_t n,
-                   mbstate_t *restrict ps));
+                   mbstate_t *restrict ps), );
 #  endif
 _GL_CXXALIAS_SYS (mbrtowc, size_t,
                   (wchar_t *restrict pwc, const char *restrict s, size_t n,
@@ -590,13 +590,13 @@ _GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - "
 #   define mbrlen rpl_mbrlen
 #  endif
 _GL_FUNCDECL_RPL (mbrlen, size_t,
-                  (const char *restrict s, size_t n, mbstate_t *restrict ps));
+                  (const char *restrict s, size_t n, mbstate_t *restrict ps), 
);
 _GL_CXXALIAS_RPL (mbrlen, size_t,
                   (const char *restrict s, size_t n, mbstate_t *restrict ps));
 # else
 #  if !@HAVE_MBRLEN@
 _GL_FUNCDECL_SYS (mbrlen, size_t,
-                  (const char *restrict s, size_t n, mbstate_t *restrict ps));
+                  (const char *restrict s, size_t n, mbstate_t *restrict ps), 
);
 #  endif
 _GL_CXXALIAS_SYS (mbrlen, size_t,
                   (const char *restrict s, size_t n, mbstate_t *restrict ps));
@@ -703,13 +703,13 @@ _GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - "
 #   define wcrtomb rpl_wcrtomb
 #  endif
 _GL_FUNCDECL_RPL (wcrtomb, size_t,
-                  (char *restrict s, wchar_t wc, mbstate_t *restrict ps));
+                  (char *restrict s, wchar_t wc, mbstate_t *restrict ps), );
 _GL_CXXALIAS_RPL (wcrtomb, size_t,
                   (char *restrict s, wchar_t wc, mbstate_t *restrict ps));
 # else
 #  if !@HAVE_WCRTOMB@
 _GL_FUNCDECL_SYS (wcrtomb, size_t,
-                  (char *restrict s, wchar_t wc, mbstate_t *restrict ps));
+                  (char *restrict s, wchar_t wc, mbstate_t *restrict ps), );
 #  endif
 _GL_CXXALIAS_SYS (wcrtomb, size_t,
                   (char *restrict s, wchar_t wc, mbstate_t *restrict ps));
@@ -855,11 +855,12 @@ _GL_CXXALIAS_SYS_CAST2 (wmemchr,
                         wchar_t *, (const wchar_t *, wchar_t, size_t),
                         const wchar_t *, (const wchar_t *, wchar_t, size_t));
 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
-     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) \
+     && !defined __clang__
 _GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
 _GL_CXXALIASWARN1 (wmemchr, const wchar_t *,
                    (const wchar_t *s, wchar_t c, size_t n));
-# elif __GLIBC__ >= 2
+# elif __GLIBC__ >= 2 && !defined __CORRECT_ISO_CPP_WCHAR_H_PROTO
 _GL_CXXALIASWARN (wmemchr);
 # endif
 #elif defined GNULIB_POSIXCHECK
@@ -909,7 +910,7 @@ _GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - "
 # if !@HAVE_WMEMCPY@
 _GL_FUNCDECL_SYS (wmemcpy, wchar_t *,
                   (wchar_t *restrict dest,
-                   const wchar_t *restrict src, size_t n));
+                   const wchar_t *restrict src, size_t n), );
 # endif
 _GL_CXXALIAS_SYS (wmemcpy, wchar_t *,
                   (wchar_t *restrict dest,
@@ -931,7 +932,7 @@ _GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - "
 #if @GNULIB_WMEMMOVE@
 # if !@HAVE_WMEMMOVE@
 _GL_FUNCDECL_SYS (wmemmove, wchar_t *,
-                  (wchar_t *dest, const wchar_t *src, size_t n));
+                  (wchar_t *dest, const wchar_t *src, size_t n), );
 # endif
 _GL_CXXALIAS_SYS (wmemmove, wchar_t *,
                   (wchar_t *dest, const wchar_t *src, size_t n));
@@ -957,7 +958,7 @@ _GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - "
 #  endif
 _GL_FUNCDECL_RPL (wmempcpy, wchar_t *,
                   (wchar_t *restrict dest,
-                   const wchar_t *restrict src, size_t n));
+                   const wchar_t *restrict src, size_t n), );
 _GL_CXXALIAS_RPL (wmempcpy, wchar_t *,
                   (wchar_t *restrict dest,
                    const wchar_t *restrict src, size_t n));
@@ -965,7 +966,7 @@ _GL_CXXALIAS_RPL (wmempcpy, wchar_t *,
 #  if !@HAVE_WMEMPCPY@
 _GL_FUNCDECL_SYS (wmempcpy, wchar_t *,
                   (wchar_t *restrict dest,
-                   const wchar_t *restrict src, size_t n));
+                   const wchar_t *restrict src, size_t n), );
 #  endif
 _GL_CXXALIAS_SYS (wmempcpy, wchar_t *,
                   (wchar_t *restrict dest,
@@ -986,7 +987,7 @@ _GL_WARN_ON_USE (wmempcpy, "wmempcpy is unportable - "
 /* Set N wide characters of S to C.  */
 #if @GNULIB_WMEMSET@
 # if !@HAVE_WMEMSET@
-_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
+_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n), );
 # endif
 _GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
 # if __GLIBC__ >= 2
@@ -1043,7 +1044,7 @@ _GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - "
 #if @GNULIB_WCSCPY@
 # if !@HAVE_WCSCPY@
 _GL_FUNCDECL_SYS (wcscpy, wchar_t *,
-                  (wchar_t *restrict dest, const wchar_t *restrict src));
+                  (wchar_t *restrict dest, const wchar_t *restrict src), );
 # endif
 _GL_CXXALIAS_SYS (wcscpy, wchar_t *,
                   (wchar_t *restrict dest, const wchar_t *restrict src));
@@ -1066,7 +1067,7 @@ _GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - "
    the global namespace.  */
 # if !@HAVE_WCPCPY@ || (defined __sun && defined __cplusplus)
 _GL_FUNCDECL_SYS (wcpcpy, wchar_t *,
-                  (wchar_t *restrict dest, const wchar_t *restrict src));
+                  (wchar_t *restrict dest, const wchar_t *restrict src), );
 # endif
 _GL_CXXALIAS_SYS (wcpcpy, wchar_t *,
                   (wchar_t *restrict dest, const wchar_t *restrict src));
@@ -1085,7 +1086,7 @@ _GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - "
 # if !@HAVE_WCSNCPY@
 _GL_FUNCDECL_SYS (wcsncpy, wchar_t *,
                   (wchar_t *restrict dest,
-                   const wchar_t *restrict src, size_t n));
+                   const wchar_t *restrict src, size_t n), );
 # endif
 _GL_CXXALIAS_SYS (wcsncpy, wchar_t *,
                   (wchar_t *restrict dest,
@@ -1111,7 +1112,7 @@ _GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - "
 # if !@HAVE_WCPNCPY@ || (defined __sun && defined __cplusplus)
 _GL_FUNCDECL_SYS (wcpncpy, wchar_t *,
                   (wchar_t *restrict dest,
-                   const wchar_t *restrict src, size_t n));
+                   const wchar_t *restrict src, size_t n), );
 # endif
 _GL_CXXALIAS_SYS (wcpncpy, wchar_t *,
                   (wchar_t *restrict dest,
@@ -1130,7 +1131,7 @@ _GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - "
 #if @GNULIB_WCSCAT@
 # if !@HAVE_WCSCAT@
 _GL_FUNCDECL_SYS (wcscat, wchar_t *,
-                  (wchar_t *restrict dest, const wchar_t *restrict src));
+                  (wchar_t *restrict dest, const wchar_t *restrict src), );
 # endif
 _GL_CXXALIAS_SYS (wcscat, wchar_t *,
                   (wchar_t *restrict dest, const wchar_t *restrict src));
@@ -1151,7 +1152,7 @@ _GL_WARN_ON_USE (wcscat, "wcscat is unportable - "
 # if !@HAVE_WCSNCAT@
 _GL_FUNCDECL_SYS (wcsncat, wchar_t *,
                   (wchar_t *restrict dest, const wchar_t *restrict src,
-                   size_t n));
+                   size_t n), );
 # endif
 _GL_CXXALIAS_SYS (wcsncat, wchar_t *,
                   (wchar_t *restrict dest, const wchar_t *restrict src,
@@ -1276,7 +1277,7 @@ _GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable 
- "
    category of the current locale.  */
 #if @GNULIB_WCSCOLL@
 # if !@HAVE_WCSCOLL@
-_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
+_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2), );
 # endif
 _GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
 # if __GLIBC__ >= 2
@@ -1297,7 +1298,7 @@ _GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - "
 #if @GNULIB_WCSXFRM@
 # if !@HAVE_WCSXFRM@
 _GL_FUNCDECL_SYS (wcsxfrm, size_t,
-                  (wchar_t *restrict s1, const wchar_t *restrict s2, size_t 
n));
+                  (wchar_t *restrict s1, const wchar_t *restrict s2, size_t 
n), );
 # endif
 _GL_CXXALIAS_SYS (wcsxfrm, size_t,
                   (wchar_t *restrict s1, const wchar_t *restrict s2, size_t 
n));
@@ -1325,7 +1326,8 @@ _GL_CXXALIAS_MDA (wcsdup, wchar_t *, (const wchar_t *s));
 /* On Solaris 11.3, the header files declare the function in the std::
    namespace, not in the global namespace.  So, force a declaration in
    the global namespace.  */
-#  if !@HAVE_WCSDUP@ || (defined __sun && defined __cplusplus) || __GNUC__ >= 
11
+#  if !@HAVE_WCSDUP@ || (defined __sun && defined __cplusplus) \
+      || (__GNUC__ >= 11 && !defined __clang__)
 #   if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
 _GL_FUNCDECL_SYS (wcsdup, wchar_t *,
                   (const wchar_t *s),
@@ -1341,7 +1343,7 @@ _GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s));
 # endif
 _GL_CXXALIASWARN (wcsdup);
 #else
-# if __GNUC__ >= 11 && !defined wcsdup
+# if (__GNUC__ >= 11 && !defined __clang__) && !defined wcsdup
 /* For -Wmismatched-dealloc: Associate wcsdup with free or rpl_free.  */
 #  if __GLIBC__ + (__GLIBC_MINOR__ >= 2) > 2
 _GL_FUNCDECL_SYS (wcsdup, wchar_t *,
@@ -1407,10 +1409,11 @@ _GL_CXXALIAS_SYS_CAST2 (wcschr,
                         wchar_t *, (const wchar_t *, wchar_t),
                         const wchar_t *, (const wchar_t *, wchar_t));
 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
-     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) \
+     && !defined __clang__
 _GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc));
 _GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
-# elif __GLIBC__ >= 2
+# elif __GLIBC__ >= 2 && !defined __CORRECT_ISO_CPP_WCHAR_H_PROTO
 _GL_CXXALIASWARN (wcschr);
 # endif
 #elif defined GNULIB_POSIXCHECK
@@ -1437,10 +1440,11 @@ _GL_CXXALIAS_SYS_CAST2 (wcsrchr,
                         wchar_t *, (const wchar_t *, wchar_t),
                         const wchar_t *, (const wchar_t *, wchar_t));
 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
-     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) \
+     && !defined __clang__
 _GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc));
 _GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
-# elif __GLIBC__ >= 2
+# elif __GLIBC__ >= 2 && !defined __CORRECT_ISO_CPP_WCHAR_H_PROTO
 _GL_CXXALIASWARN (wcsrchr);
 # endif
 #elif defined GNULIB_POSIXCHECK
@@ -1508,12 +1512,13 @@ _GL_CXXALIAS_SYS_CAST2 (wcspbrk,
                         wchar_t *, (const wchar_t *, const wchar_t *),
                         const wchar_t *, (const wchar_t *, const wchar_t *));
 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
-     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) \
+     && !defined __clang__
 _GL_CXXALIASWARN1 (wcspbrk, wchar_t *,
                    (wchar_t *wcs, const wchar_t *accept));
 _GL_CXXALIASWARN1 (wcspbrk, const wchar_t *,
                    (const wchar_t *wcs, const wchar_t *accept));
-# elif __GLIBC__ >= 2
+# elif __GLIBC__ >= 2 && !defined __CORRECT_ISO_CPP_WCHAR_H_PROTO
 _GL_CXXALIASWARN (wcspbrk);
 # endif
 #elif defined GNULIB_POSIXCHECK
@@ -1558,14 +1563,15 @@ _GL_CXXALIAS_SYS_CAST2 (wcsstr,
                         (const wchar_t *restrict, const wchar_t *restrict));
 # endif
 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
-     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) \
+     && !defined __clang__
 _GL_CXXALIASWARN1 (wcsstr, wchar_t *,
                    (wchar_t *restrict haystack,
                     const wchar_t *restrict needle));
 _GL_CXXALIASWARN1 (wcsstr, const wchar_t *,
                    (const wchar_t *restrict haystack,
                     const wchar_t *restrict needle));
-# elif __GLIBC__ >= 2
+# elif __GLIBC__ >= 2 && !defined __CORRECT_ISO_CPP_WCHAR_H_PROTO
 _GL_CXXALIASWARN (wcsstr);
 # endif
 #elif defined GNULIB_POSIXCHECK
@@ -1586,7 +1592,7 @@ _GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - "
 #  endif
 _GL_FUNCDECL_RPL (wcstok, wchar_t *,
                   (wchar_t *restrict wcs, const wchar_t *restrict delim,
-                   wchar_t **restrict ptr));
+                   wchar_t **restrict ptr), );
 _GL_CXXALIAS_RPL (wcstok, wchar_t *,
                   (wchar_t *restrict wcs, const wchar_t *restrict delim,
                    wchar_t **restrict ptr));
@@ -1594,7 +1600,7 @@ _GL_CXXALIAS_RPL (wcstok, wchar_t *,
 #  if !@HAVE_WCSTOK@
 _GL_FUNCDECL_SYS (wcstok, wchar_t *,
                   (wchar_t *restrict wcs, const wchar_t *restrict delim,
-                   wchar_t **restrict ptr));
+                   wchar_t **restrict ptr), );
 #  endif
 _GL_CXXALIAS_SYS (wcstok, wchar_t *,
                   (wchar_t *restrict wcs, const wchar_t *restrict delim,
@@ -1698,7 +1704,7 @@ _GL_WARN_ON_USE (wcsftime, "wcsftime is unportable - "
    Possible errno values include:
      - ERANGE if SIZE is too small.
      - ENOMEM if the memory could no be allocated.  */
-_GL_FUNCDECL_SYS (wgetcwd, wchar_t *, (wchar_t *buf, size_t size));
+_GL_FUNCDECL_SYS (wgetcwd, wchar_t *, (wchar_t *buf, size_t size), );
 #endif
 
 
diff --git a/gnulib/lib/wctype.in.h b/gnulib/lib/wctype.in.h
index efa77594d5..3cb2e55c83 100644
--- a/gnulib/lib/wctype.in.h
+++ b/gnulib/lib/wctype.in.h
@@ -478,9 +478,9 @@ towupper
 #    if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #     define iswblank rpl_iswblank
 #    endif
-_GL_FUNCDECL_RPL (iswblank, int, (wint_t wc));
+_GL_FUNCDECL_RPL (iswblank, int, (wint_t wc), );
 #   else
-_GL_FUNCDECL_SYS (iswblank, int, (wint_t wc));
+_GL_FUNCDECL_SYS (iswblank, int, (wint_t wc), );
 #   endif
 #  endif
 
@@ -490,7 +490,7 @@ _GL_FUNCDECL_SYS (iswblank, int, (wint_t wc));
 #     undef iswdigit
 #     define iswdigit rpl_iswdigit
 #    endif
-_GL_FUNCDECL_RPL (iswdigit, int, (wint_t wc));
+_GL_FUNCDECL_RPL (iswdigit, int, (wint_t wc), );
 #   endif
 #  endif
 
@@ -500,7 +500,7 @@ _GL_FUNCDECL_RPL (iswdigit, int, (wint_t wc));
 #     undef iswpunct
 #     define iswpunct rpl_iswpunct
 #    endif
-_GL_FUNCDECL_RPL (iswpunct, int, (wint_t wc));
+_GL_FUNCDECL_RPL (iswpunct, int, (wint_t wc), );
 #   endif
 #  endif
 
@@ -510,7 +510,7 @@ _GL_FUNCDECL_RPL (iswpunct, int, (wint_t wc));
 #     undef iswxdigit
 #     define iswxdigit rpl_iswxdigit
 #    endif
-_GL_FUNCDECL_RPL (iswxdigit, int, (wint_t wc));
+_GL_FUNCDECL_RPL (iswxdigit, int, (wint_t wc), );
 #   endif
 #  endif
 
@@ -689,11 +689,11 @@ _GL_WARN_ON_USE (wctype, "wctype is unportable - "
 #   undef iswctype
 #   define iswctype rpl_iswctype
 #  endif
-_GL_FUNCDECL_RPL (iswctype, int, (wint_t wc, wctype_t desc));
+_GL_FUNCDECL_RPL (iswctype, int, (wint_t wc, wctype_t desc), );
 _GL_CXXALIAS_RPL (iswctype, int, (wint_t wc, wctype_t desc));
 # else
 #  if !@HAVE_WCTYPE_T@
-_GL_FUNCDECL_SYS (iswctype, int, (wint_t wc, wctype_t desc));
+_GL_FUNCDECL_SYS (iswctype, int, (wint_t wc, wctype_t desc), );
 #  endif
 _GL_CXXALIAS_SYS (iswctype, int, (wint_t wc, wctype_t desc));
 # endif
@@ -771,11 +771,11 @@ _GL_WARN_ON_USE (wctrans, "wctrans is unportable - "
 #   undef towctrans
 #   define towctrans rpl_towctrans
 #  endif
-_GL_FUNCDECL_RPL (towctrans, wint_t, (wint_t wc, wctrans_t desc));
+_GL_FUNCDECL_RPL (towctrans, wint_t, (wint_t wc, wctrans_t desc), );
 _GL_CXXALIAS_RPL (towctrans, wint_t, (wint_t wc, wctrans_t desc));
 # else
 #  if !@HAVE_WCTRANS_T@
-_GL_FUNCDECL_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
+_GL_FUNCDECL_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc), );
 #  endif
 _GL_CXXALIAS_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
 # endif
diff --git a/gnulib/lib/xalloc-oversized.h b/gnulib/lib/xalloc-oversized.h
index 7f30f83e76..cfa527d38c 100644
--- a/gnulib/lib/xalloc-oversized.h
+++ b/gnulib/lib/xalloc-oversized.h
@@ -47,7 +47,8 @@
 #if 7 <= __GNUC__ && !defined __clang__ && PTRDIFF_MAX < SIZE_MAX
 # define xalloc_oversized(n, s) \
    __builtin_mul_overflow_p (n, s, (ptrdiff_t) 1)
-#elif 5 <= __GNUC__ && !defined __ICC && PTRDIFF_MAX < SIZE_MAX
+#elif 5 <= __GNUC__ && !defined __clang__ && !defined __ICC \
+      && PTRDIFF_MAX < SIZE_MAX
 # define xalloc_oversized(n, s) \
    (__builtin_constant_p (n) && __builtin_constant_p (s) \
     ? __xalloc_oversized (n, s) \
diff --git a/gnulib/m4/builtin-expect.m4 b/gnulib/m4/builtin-expect.m4
index c7af926b34..33f255e9f5 100644
--- a/gnulib/m4/builtin-expect.m4
+++ b/gnulib/m4/builtin-expect.m4
@@ -1,11 +1,11 @@
 # builtin-expect.m4
-# serial 1
+# serial 2
 dnl Copyright 2016-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,
 dnl with or without modifications, as long as this notice is preserved.
 
-dnl Check for __builtin_expect.
+dnl Provide a GCC-compatible __builtin_expect macro in <config.h>.
 
 dnl Written by Paul Eggert.
 
diff --git a/gnulib/m4/errno_h.m4 b/gnulib/m4/errno_h.m4
index 18bfd7b1c1..920ea6cc65 100644
--- a/gnulib/m4/errno_h.m4
+++ b/gnulib/m4/errno_h.m4
@@ -1,5 +1,5 @@
 # errno_h.m4
-# serial 17
+# serial 18
 dnl Copyright (C) 2004, 2006, 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,
@@ -68,6 +68,9 @@ booboo
 #endif
 #if !defined EILSEQ
 booboo
+#endif
+#if !defined ESOCKTNOSUPPORT
+booboo
 #endif
       ],
       [gl_cv_header_errno_h_complete=no],
diff --git a/gnulib/m4/error_h.m4 b/gnulib/m4/error_h.m4
index 050a410ce4..91a8fc6897 100644
--- a/gnulib/m4/error_h.m4
+++ b/gnulib/m4/error_h.m4
@@ -1,5 +1,5 @@
 # error_h.m4
-# serial 4
+# serial 5
 dnl Copyright (C) 1996-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,
@@ -111,12 +111,15 @@ AC_DEFUN_ONCE([gl_ERROR_H],
     esac
   fi
 
-  if test $HAVE_ERROR = 0 || test $REPLACE_ERROR = 1 \
-     || test $HAVE_ERROR_AT_LINE = 0 || test $REPLACE_ERROR_AT_LINE = 1; then
-    COMPILE_ERROR_C=1
-  else
-    COMPILE_ERROR_C=0
-  fi
+  m4_ifdef([gl_HAVE_MODULE_VERROR],
+    [COMPILE_ERROR_C=1],
+    [if test $HAVE_ERROR = 0 || test $REPLACE_ERROR = 1 \
+        || test $HAVE_ERROR_AT_LINE = 0 \
+        || test $REPLACE_ERROR_AT_LINE = 1; then
+       COMPILE_ERROR_C=1
+     else
+       COMPILE_ERROR_C=0
+     fi])
 
   AC_SUBST([HAVE_ERROR])
   AC_SUBST([HAVE_ERROR_AT_LINE])
diff --git a/gnulib/m4/gnulib-common.m4 b/gnulib/m4/gnulib-common.m4
index b1b3758db8..e40bb9ddc4 100644
--- a/gnulib/m4/gnulib-common.m4
+++ b/gnulib/m4/gnulib-common.m4
@@ -1,5 +1,5 @@
 # gnulib-common.m4
-# serial 101
+# serial 104
 dnl Copyright (C) 2007-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,
@@ -21,10 +21,22 @@ AC_DEFUN([gl_COMMON_BODY], [
 #define _GL_CONFIG_H_INCLUDED 1
 ])
   AH_VERBATIM([_GL_GNUC_PREREQ],
-[/* True if the compiler says it groks GNU C version MAJOR.MINOR.  */
-#if defined __GNUC__ && defined __GNUC_MINOR__
+[/* True if the compiler says it groks GNU C version MAJOR.MINOR.
+    Except that
+      - clang groks GNU C 4.2, even on Windows, where it does not define
+        __GNUC__.
+      - The OpenMandriva-modified clang compiler pretends that it groks
+        GNU C version 13.1, but it doesn't: It does not support
+        __attribute__ ((__malloc__ (f, i))), nor does it support
+        __attribute__ ((__warning__ (message))) on a function redeclaration.
+      - Users can make clang lie as well, through the -fgnuc-version option.  
*/
+#if defined __GNUC__ && defined __GNUC_MINOR__ && !defined __clang__
 # define _GL_GNUC_PREREQ(major, minor) \
     ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__))
+#elif defined __clang__
+  /* clang really only groks GNU C 4.2.  */
+# define _GL_GNUC_PREREQ(major, minor) \
+    ((major) < 4 + ((minor) <= 2))
 #else
 # define _GL_GNUC_PREREQ(major, minor) 0
 #endif
@@ -830,6 +842,35 @@ AC_DEFUN([gl_COMMON_BODY], [
 #  define _GL_UNUSED_LABEL
 # endif
 #endif
+
+/* The following attributes enable detection of multithread-safety problems
+   and resource leaks at compile-time, by clang ≥ 15, when the warning option
+   -Wthread-safety is enabled.  For usage, see
+   <https://clang.llvm.org/docs/ThreadSafetyAnalysis.html>.  */
+#ifndef _GL_ATTRIBUTE_CAPABILITY_TYPE
+# if __clang_major__ >= 15
+#  define _GL_ATTRIBUTE_CAPABILITY_TYPE(concept) \
+     __attribute__ ((__capability__ (concept)))
+#else
+#  define _GL_ATTRIBUTE_CAPABILITY_TYPE(concept)
+# endif
+#endif
+#ifndef _GL_ATTRIBUTE_ACQUIRE_CAPABILITY
+# if __clang_major__ >= 15
+#  define _GL_ATTRIBUTE_ACQUIRE_CAPABILITY(resource) \
+     __attribute__ ((__acquire_capability__ (resource)))
+# else
+#  define _GL_ATTRIBUTE_ACQUIRE_CAPABILITY(resource)
+# endif
+#endif
+#ifndef _GL_ATTRIBUTE_RELEASE_CAPABILITY
+# if __clang_major__ >= 15
+#  define _GL_ATTRIBUTE_RELEASE_CAPABILITY(resource) \
+     __attribute__ ((__release_capability__ (resource)))
+# else
+#  define _GL_ATTRIBUTE_RELEASE_CAPABILITY(resource)
+# endif
+#endif
 ])
   AH_VERBATIM([c_linkage],
 [/* In C++, there is the concept of "language linkage", that encompasses
@@ -1343,7 +1384,7 @@ AC_DEFUN([gl_CC_GNULIB_WARNINGS],
     dnl -Wno-unused-parameter                 >= 3            >= 3.9
     dnl
     cat > conftest.c <<\EOF
-      #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3)
+      #if (__GNUC__ >= 3 && !defined __clang__) || (__clang_major__ + 
(__clang_minor__ >= 9) > 3)
       -Wno-cast-qual
       -Wno-conversion
       -Wno-float-equal
@@ -1352,23 +1393,23 @@ AC_DEFUN([gl_CC_GNULIB_WARNINGS],
       -Wno-unused-function
       -Wno-unused-parameter
       #endif
-      #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + 
(__clang_minor__ >= 9) > 3)
+      #if (__GNUC__ + (__GNUC_MINOR__ >= 9) > 4 && !defined __clang__) || 
(__clang_major__ + (__clang_minor__ >= 9) > 3)
       -Wno-float-conversion
       #endif
-      #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3)
+      #if (__GNUC__ >= 7 && !defined __clang__) || (__clang_major__ + 
(__clang_minor__ >= 9) > 3)
       -Wimplicit-fallthrough
       #endif
-      #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + 
(__clang_minor__ >= 9) > 3)
+      #if (__GNUC__ + (__GNUC_MINOR__ >= 8) > 4 && !defined __clang__) || 
(__clang_major__ + (__clang_minor__ >= 9) > 3)
       -Wno-pedantic
       #endif
       #if 3 < __clang_major__ + (9 <= __clang_minor__)
       -Wno-tautological-constant-out-of-range-compare
       #endif
-      #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + 
(__clang_minor__ >= 9) > 3)
+      #if (__GNUC__ + (__GNUC_MINOR__ >= 3) > 4 && !defined __clang__) || 
(__clang_major__ + (__clang_minor__ >= 9) > 3)
       -Wno-sign-conversion
       -Wno-type-limits
       #endif
-      #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4
+      #if (__GNUC__ + (__GNUC_MINOR__ >= 5) > 4 && !defined __clang__)
       -Wno-unsuffixed-float-constants
       #endif
 EOF
diff --git a/gnulib/m4/gnulib-comp.m4 b/gnulib/m4/gnulib-comp.m4
index 63e07661eb..0705094b8a 100644
--- a/gnulib/m4/gnulib-comp.m4
+++ b/gnulib/m4/gnulib-comp.m4
@@ -412,13 +412,6 @@ AC_DEFUN([gl_INIT],
     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_GETOPT], [1])
   ])
   gl_UNISTD_MODULE_INDICATOR([getopt-posix])
-  gl_FUNC_GETPROGNAME
-  gl_CONDITIONAL([GL_COND_OBJ_GETPROGNAME],
-                 [test $HAVE_GETPROGNAME = 0 || test $REPLACE_GETPROGNAME = 1])
-  AM_COND_IF([GL_COND_OBJ_GETPROGNAME], [
-    gl_PREREQ_GETPROGNAME
-  ])
-  gl_STDLIB_MODULE_INDICATOR([getprogname])
   AC_SUBST([LIBINTL])
   AC_SUBST([LTLIBINTL])
   AC_DEFUN([gl_HAVE_MODULE_HAVELIB])
@@ -643,15 +636,15 @@ AC_DEFUN([gl_INIT],
   gl_UNICASE_H
   gl_UNICASE_H_REQUIRE_DEFAULTS
   AC_PROG_MKDIR_P
-  gl_LIBUNISTRING_MODULE([0.9.11], [unicase/tolower])
-  gl_LIBUNISTRING_LIBHEADER([1.2], [unictype.h])
+  gl_LIBUNISTRING_MODULE([1.3], [unicase/tolower])
+  gl_LIBUNISTRING_LIBHEADER([1.3], [unictype.h])
   gl_UNICTYPE_H
   gl_UNICTYPE_H_REQUIRE_DEFAULTS
   AC_PROG_MKDIR_P
   AC_REQUIRE([AC_C_INLINE])
-  gl_LIBUNISTRING_MODULE([1.2], [unictype/ctype-alnum])
+  gl_LIBUNISTRING_MODULE([1.3], [unictype/ctype-alnum])
   AC_REQUIRE([AC_C_INLINE])
-  gl_LIBUNISTRING_MODULE([1.2], [unictype/ctype-alpha])
+  gl_LIBUNISTRING_MODULE([1.3], [unictype/ctype-alpha])
   AC_REQUIRE([AC_C_INLINE])
   gl_LIBUNISTRING_MODULE([0.9.8], [unictype/ctype-blank])
   AC_REQUIRE([AC_C_INLINE])
@@ -659,17 +652,17 @@ AC_DEFUN([gl_INIT],
   AC_REQUIRE([AC_C_INLINE])
   gl_LIBUNISTRING_MODULE([0.9.8], [unictype/ctype-digit])
   AC_REQUIRE([AC_C_INLINE])
-  gl_LIBUNISTRING_MODULE([1.2], [unictype/ctype-graph])
+  gl_LIBUNISTRING_MODULE([1.3], [unictype/ctype-graph])
   AC_REQUIRE([AC_C_INLINE])
-  gl_LIBUNISTRING_MODULE([0.9.11], [unictype/ctype-lower])
+  gl_LIBUNISTRING_MODULE([1.3], [unictype/ctype-lower])
   AC_REQUIRE([AC_C_INLINE])
-  gl_LIBUNISTRING_MODULE([1.2], [unictype/ctype-print])
+  gl_LIBUNISTRING_MODULE([1.3], [unictype/ctype-print])
   AC_REQUIRE([AC_C_INLINE])
-  gl_LIBUNISTRING_MODULE([1.2], [unictype/ctype-punct])
+  gl_LIBUNISTRING_MODULE([1.3], [unictype/ctype-punct])
   AC_REQUIRE([AC_C_INLINE])
   gl_LIBUNISTRING_MODULE([0.9.8], [unictype/ctype-space])
   AC_REQUIRE([AC_C_INLINE])
-  gl_LIBUNISTRING_MODULE([0.9.11], [unictype/ctype-upper])
+  gl_LIBUNISTRING_MODULE([1.3], [unictype/ctype-upper])
   AC_REQUIRE([AC_C_INLINE])
   gl_LIBUNISTRING_MODULE([0.9.8], [unictype/ctype-xdigit])
   gl_LIBUNISTRING_LIBHEADER([1.2], [uninorm.h])
@@ -698,7 +691,7 @@ AC_DEFUN([gl_INIT],
   ])
   gl_LIBUNISTRING_LIBHEADER([0.9.11], [uniwidth.h])
   AC_PROG_MKDIR_P
-  gl_LIBUNISTRING_MODULE([1.2], [uniwidth/width])
+  gl_LIBUNISTRING_MODULE([1.3], [uniwidth/width])
   AC_C_VARARRAYS
   gl_FUNC_VASPRINTF
   gl_STDIO_MODULE_INDICATOR([vasprintf])
@@ -740,6 +733,7 @@ AC_DEFUN([gl_INIT],
   gl_gnulib_enabled_ef07dc4b3077c11ea9cef586db4e5955=false
   gl_gnulib_enabled_fstat=false
   gl_gnulib_enabled_getdtablesize=false
+  gl_gnulib_enabled_getprogname=false
   gl_gnulib_enabled_getrandom=false
   gl_gnulib_enabled_fd38c7e463b54744b77b98aeafb4fa7c=false
   gl_gnulib_enabled_30838f5439487421042f2225bed3af76=false
@@ -1021,6 +1015,26 @@ AC_DEFUN([gl_INIT],
       fi
     fi
   }
+  func_gl_gnulib_m4code_getprogname ()
+  {
+    if $gl_gnulib_enabled_getprogname; then :; else
+      AC_REQUIRE([AC_CANONICAL_HOST])
+      gl_FUNC_GETPROGNAME
+      gl_CONDITIONAL([GL_COND_OBJ_GETPROGNAME],
+                     [test $HAVE_GETPROGNAME = 0 || test $REPLACE_GETPROGNAME 
= 1])
+      AM_COND_IF([GL_COND_OBJ_GETPROGNAME], [
+        gl_PREREQ_GETPROGNAME
+      ])
+      gl_STDLIB_MODULE_INDICATOR([getprogname])
+      gl_gnulib_enabled_getprogname=true
+      if test $HAVE_GETPROGNAME = 0; then
+        func_gl_gnulib_m4code_ae0d979e17e723693567f9efd1d2294f
+      fi
+      if test $HAVE_GETPROGNAME = 0 && case "$host_os" in irix* | osf* | sco* 
| unixware*) true;; *) false;; esac; then
+        func_gl_gnulib_m4code_open
+      fi
+    fi
+  }
   func_gl_gnulib_m4code_getrandom ()
   {
     if $gl_gnulib_enabled_getrandom; then :; else
@@ -1677,13 +1691,10 @@ AC_DEFUN([gl_INIT],
     func_gl_gnulib_m4code_localcharset
   fi
   if test $COMPILE_ERROR_C = 1; then
-    func_gl_gnulib_m4code_676220fa4366efa9bdbfccf11a857c07
+    func_gl_gnulib_m4code_getprogname
   fi
-  if test $HAVE_GETPROGNAME = 0; then
-    func_gl_gnulib_m4code_ae0d979e17e723693567f9efd1d2294f
-  fi
-  if test $HAVE_GETPROGNAME = 0; then
-    func_gl_gnulib_m4code_open
+  if test $COMPILE_ERROR_C = 1; then
+    func_gl_gnulib_m4code_676220fa4366efa9bdbfccf11a857c07
   fi
   if test $HAVE_MBRTOC32 = 0 || test $REPLACE_MBRTOC32 = 1; then
     func_gl_gnulib_m4code_attribute
@@ -1789,6 +1800,7 @@ AC_DEFUN([gl_INIT],
   AM_CONDITIONAL([gl_GNULIB_ENABLED_ef07dc4b3077c11ea9cef586db4e5955], 
[$gl_gnulib_enabled_ef07dc4b3077c11ea9cef586db4e5955])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_fstat], [$gl_gnulib_enabled_fstat])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_getdtablesize], 
[$gl_gnulib_enabled_getdtablesize])
+  AM_CONDITIONAL([gl_GNULIB_ENABLED_getprogname], 
[$gl_gnulib_enabled_getprogname])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_getrandom], [$gl_gnulib_enabled_getrandom])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_fd38c7e463b54744b77b98aeafb4fa7c], 
[$gl_gnulib_enabled_fd38c7e463b54744b77b98aeafb4fa7c])
   AM_CONDITIONAL([gl_GNULIB_ENABLED_30838f5439487421042f2225bed3af76], 
[$gl_gnulib_enabled_30838f5439487421042f2225bed3af76])
@@ -2338,6 +2350,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/libunistring-base.m4
   m4/limits-h.m4
   m4/localcharset.m4
+  m4/locale-en.m4
   m4/locale-fr.m4
   m4/locale-ja.m4
   m4/locale-zh.m4
diff --git a/gnulib/m4/gnulib-tool.m4 b/gnulib/m4/gnulib-tool.m4
index ef45f51fc8..2f517f1bbc 100644
--- a/gnulib/m4/gnulib-tool.m4
+++ b/gnulib/m4/gnulib-tool.m4
@@ -1,5 +1,5 @@
 # gnulib-tool.m4
-# serial 4
+# serial 5
 dnl Copyright (C) 2004-2005, 2009-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,
@@ -42,6 +42,9 @@ AC_DEFUN([gl_LIB], [])
 dnl Usage: gl_LGPL or gl_LGPL([VERSION])
 AC_DEFUN([gl_LGPL], [])
 
+dnl Usage: gl_GPL([VERSION])
+AC_DEFUN([gl_GPL], [])
+
 dnl Usage: gl_MAKEFILE_NAME([FILENAME])
 AC_DEFUN([gl_MAKEFILE_NAME], [])
 
diff --git a/gnulib/m4/host-cpu-c-abi.m4 b/gnulib/m4/host-cpu-c-abi.m4
index 6053930288..80a8366855 100644
--- a/gnulib/m4/host-cpu-c-abi.m4
+++ b/gnulib/m4/host-cpu-c-abi.m4
@@ -1,5 +1,5 @@
 # host-cpu-c-abi.m4
-# serial 17
+# serial 18
 dnl Copyright (C) 2002-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,7 @@ dnl * The same canonical name is used for different 
endiannesses. You can
 dnl   determine the endianness through preprocessor symbols:
 dnl   - 'arm': test __ARMEL__.
 dnl   - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL.
-dnl   - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN.
+dnl   - 'powerpc64': test __BIG_ENDIAN__ vs. __LITTLE_ENDIAN__.
 dnl * The same name 'i386' is used for CPUs of type i386, i486, i586
 dnl   (Pentium), AMD K7, Pentium II, Pentium IV, etc., because
 dnl   - Instructions that do not exist on all of these CPUs (cmpxchg,
diff --git a/gnulib/m4/iswdigit.m4 b/gnulib/m4/iswdigit.m4
index 999acd2891..f07feae495 100644
--- a/gnulib/m4/iswdigit.m4
+++ b/gnulib/m4/iswdigit.m4
@@ -1,5 +1,5 @@
 # iswdigit.m4
-# serial 7
+# serial 9
 dnl Copyright (C) 2020-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,
@@ -11,7 +11,7 @@ AC_DEFUN([gl_FUNC_ISWDIGIT],
   AC_REQUIRE([gl_WCTYPE_H])
   AC_REQUIRE([gt_LOCALE_FR])
   AC_REQUIRE([gt_LOCALE_JA])
-  AC_REQUIRE([gt_LOCALE_FR_UTF8])
+  AC_REQUIRE([gt_LOCALE_EN_UTF8])
   AC_REQUIRE([gt_LOCALE_ZH_CN])
   AC_REQUIRE([AC_CANONICAL_HOST])
 
@@ -26,14 +26,14 @@ AC_DEFUN([gl_FUNC_ISWDIGIT],
        dnl is present.
 changequote(,)dnl
        case "$host_os" in
-         # Guess no on FreeBSD, NetBSD, Solaris, native Windows.
-         freebsd* | dragonfly* | netbsd* | solaris* | mingw* | windows*)
+         # Guess no on FreeBSD, NetBSD, OpenBSD, Solaris, native Windows, 
Haiku, Android.
+         freebsd* | dragonfly* | netbsd* | openbsd* | solaris* | mingw* | 
windows* | haiku* | *-android*)
            gl_cv_func_iswdigit_works="guessing no" ;;
          # Guess yes otherwise.
          *) gl_cv_func_iswdigit_works="guessing yes" ;;
        esac
 changequote([,])dnl
-       if test $LOCALE_FR != none || test $LOCALE_JA != none || test 
$LOCALE_FR_UTF8 != none || test $LOCALE_ZH_CN != none; then
+       if test $LOCALE_FR != none || test $LOCALE_JA != none || test 
"$LOCALE_EN_UTF8" != none || test $LOCALE_ZH_CN != none; then
          AC_RUN_IFELSE(
            [AC_LANG_SOURCE([[
 #include <locale.h>
@@ -83,15 +83,15 @@ main (int argc, char *argv[])
       if (!(is == 0))
         result |= 2;
     }
-  if (strcmp ("$LOCALE_FR_UTF8", "none") != 0
-      && setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+  if (strcmp ("$LOCALE_EN_UTF8", "none") != 0
+      && setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
     {
-      /* This fails on FreeBSD 13.0, NetBSD 10.0, MSVC 14.  */
+      /* This fails on FreeBSD 13.0, NetBSD 10.0, OpenBSD 7.5, MSVC 14, Haiku, 
Android.  */
       /* U+0663 ARABIC-INDIC DIGIT THREE */
       is = for_character ("\331\243", 2);
       if (!(is == 0))
         result |= 4;
-      /* This fails on FreeBSD 13.0, NetBSD 10.0, MSVC 14.  */
+      /* This fails on FreeBSD 13.0, NetBSD 10.0, OpenBSD 7.5, MSVC 14, Haiku, 
Android.  */
       /* U+FF11 FULLWIDTH DIGIT ONE */
       is = for_character ("\357\274\221", 3);
       if (!(is == 0))
diff --git a/gnulib/m4/iswxdigit.m4 b/gnulib/m4/iswxdigit.m4
index 6085bf6b01..1a8e57b0a2 100644
--- a/gnulib/m4/iswxdigit.m4
+++ b/gnulib/m4/iswxdigit.m4
@@ -1,5 +1,5 @@
 # iswxdigit.m4
-# serial 7
+# serial 9
 dnl Copyright (C) 2020-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,
@@ -10,7 +10,7 @@ AC_DEFUN([gl_FUNC_ISWXDIGIT],
   AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
   AC_REQUIRE([gl_WCTYPE_H])
   AC_REQUIRE([gt_LOCALE_JA])
-  AC_REQUIRE([gt_LOCALE_FR_UTF8])
+  AC_REQUIRE([gt_LOCALE_EN_UTF8])
   AC_REQUIRE([gt_LOCALE_ZH_CN])
   AC_REQUIRE([AC_CANONICAL_HOST])
 
@@ -25,14 +25,14 @@ AC_DEFUN([gl_FUNC_ISWXDIGIT],
        dnl is present.
 changequote(,)dnl
        case "$host_os" in
-         # Guess no on FreeBSD, NetBSD, Solaris, native Windows.
-         freebsd* | dragonfly* | netbsd* | solaris* | mingw* | windows*)
+         # Guess no on FreeBSD, NetBSD, OpenBSD, Solaris, native Windows, 
Haiku, Android.
+         freebsd* | dragonfly* | netbsd* | openbsd* | solaris* | mingw* | 
windows* | haiku* | *-android*)
            gl_cv_func_iswxdigit_works="guessing no" ;;
          # Guess yes otherwise.
          *) gl_cv_func_iswxdigit_works="guessing yes" ;;
        esac
 changequote([,])dnl
-       if test $LOCALE_JA != none || test $LOCALE_FR_UTF8 != none || test 
$LOCALE_ZH_CN != none; then
+       if test $LOCALE_JA != none || test "$LOCALE_EN_UTF8" != none || test 
$LOCALE_ZH_CN != none; then
          AC_RUN_IFELSE(
            [AC_LANG_SOURCE([[
 #include <locale.h>
@@ -73,15 +73,15 @@ main (int argc, char *argv[])
       if (!(is == 0))
         result |= 1;
     }
-  if (strcmp ("$LOCALE_FR_UTF8", "none") != 0
-      && setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+  if (strcmp ("$LOCALE_EN_UTF8", "none") != 0
+      && setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
     {
-      /* This fails on FreeBSD 13.0.  */
+      /* This fails on FreeBSD 13.0, Haiku, Android.  */
       /* U+0663 ARABIC-INDIC DIGIT THREE */
       is = for_character ("\331\243", 2);
       if (!(is == 0))
         result |= 2;
-      /* This fails on NetBSD 10.0, MSVC 14.  */
+      /* This fails on NetBSD 10.0, OpenBSD 7.5, MSVC 14, Haiku, Android.  */
       /* U+FF21 FULLWIDTH LATIN CAPITAL LETTER A */
       is = for_character ("\357\274\241", 3);
       if (!(is == 0))
diff --git a/gnulib/m4/locale-en.m4 b/gnulib/m4/locale-en.m4
new file mode 100644
index 0000000000..39d08a23b0
--- /dev/null
+++ b/gnulib/m4/locale-en.m4
@@ -0,0 +1,137 @@
+# locale-en.m4
+# serial 1
+dnl Copyright (C) 2003-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,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Determine the name of an English (or American English) locale with
+dnl UTF-8 encoding.
+AC_DEFUN_ONCE([gt_LOCALE_EN_UTF8],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for an english Unicode locale], [gt_cv_locale_en_utf8], [
+    case "$host_os" in
+      *-musl* | midipix*)
+        dnl On musl libc, all kinds of ll_CC.UTF-8 locales exist, even without
+        dnl any locale file on disk. But they are effectively equivalent to the
+        dnl C.UTF-8 locale, except for locale categories (such as LC_MESSSAGES)
+        dnl for which localizations (.mo files) have been installed.
+        gt_cv_locale_en_utf8=en_US.UTF-8
+        ;;
+      *)
+        AC_LANG_CONFTEST([AC_LANG_SOURCE([[
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+# if defined _WIN32 && !defined __CYGWIN__
+  /* On native Windows, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+# else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+# endif
+  /* Check whether nl_langinfo(CODESET) is "UTF-8" or equivalent.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (!(strcmp (cs, "UTF-8") == 0 || strcmp (cs, "UTF8") == 0
+          || strcmp (cs, "utf-8") == 0 || strcmp (cs, "utf8") == 0))
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check the third month name.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 3 - 1; t.tm_mday = 24;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 5 || strcmp (buf, "March") != 0)
+    return 1;
+#endif
+#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy.  */
+  /* Check whether the decimal separator is a dot.  */
+  if (localeconv () ->decimal_point[0] != '.') return 1;
+#endif
+  return 0;
+}
+          ]])])
+        if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+          case "$host_os" in
+            # Handle native Windows specially, because there setlocale() 
interprets
+            # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+            # "en" or "eng" as "English" or "English_United States.1252",
+            # "fr" or "fra" as "French" or "French_France.1252",
+            # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+            # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
+            # and similar.
+            mingw* | windows*)
+              # Test for the hypothetical native Windows locale name.
+              if (LC_ALL='English_United States.65001' LC_TIME= LC_CTYPE= 
./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_en_utf8='English_United States.65001'
+              else
+                # None found.
+                gt_cv_locale_en_utf8=none
+              fi
+              ;;
+            *)
+              # Setting LC_ALL is not enough. Need to set LC_TIME to empty, 
because
+              # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning 
of the
+              # configure script would override the LC_ALL setting. Likewise 
for
+              # LC_CTYPE, which is also set at the beginning of the configure 
script.
+              # Test for the locale name with explicit encoding suffix first
+              # (this is necessary on Haiku).
+              if (LC_ALL=en_US.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 
2>/dev/null; then
+                gt_cv_locale_en_utf8=en_US.UTF-8
+              else
+                # Test for the locale name without encoding suffix.
+                if (LC_ALL=en_US LC_TIME= LC_CTYPE= ./conftest; exit) 
2>/dev/null; then
+                  gt_cv_locale_en_utf8=en_US
+                else
+                  # Test for the Solaris 10 locale name.
+                  if (LC_ALL=en.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 
2>/dev/null; then
+                    gt_cv_locale_en_utf8=en.UTF-8
+                  else
+                    # None found.
+                    gt_cv_locale_en_utf8=none
+                  fi
+                fi
+              fi
+              ;;
+          esac
+        fi
+        rm -fr conftest*
+        ;;
+    esac
+  ])
+  LOCALE_EN_UTF8="$gt_cv_locale_en_utf8"
+  case "$LOCALE_EN_UTF8" in #(
+    '' | *[[\"\$\'*@<:@]]*)
+      dnl The empty value occurs when the conftest.c program above could not
+      dnl be compiled.  The other values might cause trouble with sh or make.
+      AC_MSG_WARN([invalid locale "$LOCALE_EN_UTF8"; assuming "none"])
+      LOCALE_EN_UTF8=none;;
+  esac
+  AC_SUBST([LOCALE_EN_UTF8])
+])
diff --git a/gnulib/m4/locale-fr.m4 b/gnulib/m4/locale-fr.m4
index f8d7c543e0..3832c10d36 100644
--- a/gnulib/m4/locale-fr.m4
+++ b/gnulib/m4/locale-fr.m4
@@ -1,5 +1,5 @@
 # locale-fr.m4
-# serial 23
+# serial 24
 dnl Copyright (C) 2003, 2005-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,
@@ -71,8 +71,9 @@ int main () {
   if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
 # if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy.  */
   /* Check whether the decimal separator is a comma.
-     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
-     are nl_langinfo(RADIXCHAR) are both ".".  */
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale
+     and on Haiku in the fr_FR.UTF-8 locale,
+     localeconv()->decimal_point are nl_langinfo(RADIXCHAR) are both ".".  */
   if (localeconv () ->decimal_point[0] != ',') return 1;
 # endif
   return 0;
@@ -82,10 +83,11 @@ int main () {
     if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
       case "$host_os" in
         # Handle native Windows specially, because there setlocale() interprets
-        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "en" or "eng" as "English" or "English_United States.1252",
         # "fr" or "fra" as "French" or "French_France.1252",
         # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
-        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
         # and similar.
         mingw* | windows*)
           # Test for the native Windows locale name.
@@ -214,8 +216,9 @@ int main () {
 #endif
 #if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy.  */
   /* Check whether the decimal separator is a comma.
-     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
-     are nl_langinfo(RADIXCHAR) are both ".".  */
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale
+     and on Haiku in the fr_FR.UTF-8 locale,
+     localeconv()->decimal_point are nl_langinfo(RADIXCHAR) are both ".".  */
   if (localeconv () ->decimal_point[0] != ',') return 1;
 #endif
   return 0;
@@ -224,10 +227,11 @@ int main () {
         if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
           case "$host_os" in
             # Handle native Windows specially, because there setlocale() 
interprets
-            # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+            # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+            # "en" or "eng" as "English" or "English_United States.1252",
             # "fr" or "fra" as "French" or "French_France.1252",
             # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
-            # "ja" as "Japanese" or "Japanese_Japan.932",
+            # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
             # and similar.
             mingw* | windows*)
               # Test for the hypothetical native Windows locale name.
diff --git a/gnulib/m4/locale-ja.m4 b/gnulib/m4/locale-ja.m4
index 8423bcb972..b94cd7ae4d 100644
--- a/gnulib/m4/locale-ja.m4
+++ b/gnulib/m4/locale-ja.m4
@@ -1,5 +1,5 @@
 # locale-ja.m4
-# serial 18
+# serial 19
 dnl Copyright (C) 2003, 2005-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,
@@ -86,10 +86,11 @@ int main ()
     if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
       case "$host_os" in
         # Handle native Windows specially, because there setlocale() interprets
-        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "en" or "eng" as "English" or "English_United States.1252",
         # "fr" or "fra" as "French" or "French_France.1252",
         # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
-        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
         # and similar.
         mingw* | windows*)
           # Note that on native Windows, the Japanese locale is
diff --git a/gnulib/m4/locale-zh.m4 b/gnulib/m4/locale-zh.m4
index fb9f26ab9f..040cab0c7a 100644
--- a/gnulib/m4/locale-zh.m4
+++ b/gnulib/m4/locale-zh.m4
@@ -1,5 +1,5 @@
 # locale-zh.m4
-# serial 19
+# serial 20
 dnl Copyright (C) 2003, 2005-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,
@@ -101,10 +101,11 @@ int main ()
     if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
       case "$host_os" in
         # Handle native Windows specially, because there setlocale() interprets
-        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "en" or "eng" as "English" or "English_United States.1252",
         # "fr" or "fra" as "French" or "French_France.1252",
         # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
-        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
         # and similar.
         mingw* | windows*)
           # Test for the hypothetical native Windows locale name.
diff --git a/gnulib/m4/mbrtoc32.m4 b/gnulib/m4/mbrtoc32.m4
index 8118ff8f29..4da0712bd4 100644
--- a/gnulib/m4/mbrtoc32.m4
+++ b/gnulib/m4/mbrtoc32.m4
@@ -1,5 +1,5 @@
 # mbrtoc32.m4
-# serial 20
+# serial 21
 dnl Copyright (C) 2014-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,
@@ -213,7 +213,7 @@ AC_DEFUN([gl_MBRTOC32_UTF8_LOCALE],
        [gl_cv_func_mbrtoc32_utf8_locale_works=no],
        [case "$host_os" in
                    # Guess no on Cygwin.
-          cygwin*) gl_cv_func_mbrtoc32_utf8_locale_works="guessing yes" ;;
+          cygwin*) gl_cv_func_mbrtoc32_utf8_locale_works="guessing no" ;;
           *)       
gl_cv_func_mbrtoc32_utf8_locale_works="$gl_cross_guess_normal" ;;
         esac
        ])
diff --git a/gnulib/m4/mbrtowc.m4 b/gnulib/m4/mbrtowc.m4
index 4ea8184049..ad7a7c73a0 100644
--- a/gnulib/m4/mbrtowc.m4
+++ b/gnulib/m4/mbrtowc.m4
@@ -1,5 +1,5 @@
 # mbrtowc.m4
-# serial 44
+# serial 46
 dnl Copyright (C) 2001-2002, 2004-2005, 2008-2024 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
@@ -160,7 +160,7 @@ AC_DEFUN([gl_MBRTOWC_INCOMPLETE_STATE],
 [
   AC_REQUIRE([AC_PROG_CC])
   AC_REQUIRE([gt_LOCALE_JA])
-  AC_REQUIRE([gt_LOCALE_FR_UTF8])
+  AC_REQUIRE([gt_LOCALE_EN_UTF8])
   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
   AC_CACHE_CHECK([whether mbrtowc handles incomplete characters],
     [gl_cv_func_mbrtowc_incomplete_state],
@@ -200,7 +200,7 @@ int main ()
           [gl_cv_func_mbrtowc_incomplete_state=no],
           [:])
       else
-        if test $LOCALE_FR_UTF8 != none; then
+        if test "$LOCALE_EN_UTF8" != none; then
           AC_RUN_IFELSE(
             [AC_LANG_SOURCE([[
 #include <locale.h>
@@ -208,7 +208,7 @@ int main ()
 #include <wchar.h>
 int main ()
 {
-  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+  if (setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
     {
       const char input[] = "B\303\274\303\237er"; /* "Büßer" */
       mbstate_t state;
@@ -288,7 +288,7 @@ dnl Result is gl_cv_func_mbrtowc_null_arg1.
 AC_DEFUN([gl_MBRTOWC_NULL_ARG1],
 [
   AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gt_LOCALE_FR_UTF8])
+  AC_REQUIRE([gt_LOCALE_EN_UTF8])
   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
   AC_CACHE_CHECK([whether mbrtowc handles a NULL pwc argument],
     [gl_cv_func_mbrtowc_null_arg1],
@@ -303,7 +303,7 @@ changequote(,)dnl
         *)        gl_cv_func_mbrtowc_null_arg1="guessing yes" ;;
       esac
 changequote([,])dnl
-      if test $LOCALE_FR_UTF8 != none; then
+      if test "$LOCALE_EN_UTF8" != none; then
         AC_RUN_IFELSE(
           [AC_LANG_SOURCE([[
 #include <locale.h>
@@ -314,7 +314,7 @@ int main ()
 {
   int result = 0;
 
-  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+  if (setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
     {
       char input[] = "\303\237er";
       mbstate_t state;
@@ -351,7 +351,7 @@ dnl Result is gl_cv_func_mbrtowc_null_arg2.
 AC_DEFUN([gl_MBRTOWC_NULL_ARG2],
 [
   AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gt_LOCALE_FR_UTF8])
+  AC_REQUIRE([gt_LOCALE_EN_UTF8])
   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
   AC_CACHE_CHECK([whether mbrtowc handles a NULL string argument],
     [gl_cv_func_mbrtowc_null_arg2],
@@ -366,7 +366,7 @@ changequote(,)dnl
         *)    gl_cv_func_mbrtowc_null_arg2="guessing yes" ;;
       esac
 changequote([,])dnl
-      if test $LOCALE_FR_UTF8 != none; then
+      if test "$LOCALE_EN_UTF8" != none; then
         AC_RUN_IFELSE(
           [AC_LANG_SOURCE([[
 #include <locale.h>
@@ -374,7 +374,7 @@ changequote([,])dnl
 #include <wchar.h>
 int main ()
 {
-  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+  if (setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
     {
       mbstate_t state;
       wchar_t wc;
@@ -404,7 +404,7 @@ dnl Result is gl_cv_func_mbrtowc_retval.
 AC_DEFUN([gl_MBRTOWC_RETVAL],
 [
   AC_REQUIRE([AC_PROG_CC])
-  AC_REQUIRE([gt_LOCALE_FR_UTF8])
+  AC_REQUIRE([gt_LOCALE_EN_UTF8])
   AC_REQUIRE([gt_LOCALE_JA])
   AC_REQUIRE([AC_CANONICAL_HOST])
   AC_CACHE_CHECK([whether mbrtowc has a correct return value],
@@ -422,7 +422,7 @@ changequote(,)dnl
           gl_cv_func_mbrtowc_retval="guessing yes" ;;
       esac
 changequote([,])dnl
-      if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none \
+      if test "$LOCALE_EN_UTF8" != none || test $LOCALE_JA != none \
          || { case "$host_os" in mingw* | windows*) true;; *) false;; esac; }; 
then
         AC_RUN_IFELSE(
           [AC_LANG_SOURCE([[
@@ -434,8 +434,8 @@ int main ()
   int result = 0;
   int found_some_locale = 0;
   /* This fails on Solaris.  */
-  if (strcmp ("$LOCALE_FR_UTF8", "none") != 0
-      && setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+  if (strcmp ("$LOCALE_EN_UTF8", "none") != 0
+      && setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
     {
       char input[] = "B\303\274\303\237er"; /* "Büßer" */
       mbstate_t state;
@@ -649,8 +649,8 @@ int main ()
            [:])
          ;;
        *)
-         AC_REQUIRE([gt_LOCALE_FR_UTF8])
-         if test $LOCALE_FR_UTF8 != none; then
+         AC_REQUIRE([gt_LOCALE_EN_UTF8])
+         if test "$LOCALE_EN_UTF8" != none; then
            AC_RUN_IFELSE(
              [AC_LANG_SOURCE([[
 #include <locale.h>
@@ -658,7 +658,7 @@ int main ()
 #include <wchar.h>
 int main ()
 {
-  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+  if (setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
     {
       wchar_t wc = (wchar_t) 0xBADFACE;
       mbstate_t state;
diff --git a/gnulib/m4/std-gnu11.m4 b/gnulib/m4/std-gnu11.m4
index e8d5de7a1e..d61d694297 100644
--- a/gnulib/m4/std-gnu11.m4
+++ b/gnulib/m4/std-gnu11.m4
@@ -1,5 +1,5 @@
 # std-gnu11.m4
-# serial 2
+# serial 3
 
 # Prefer GNU C11 and C++11 to earlier versions.  -*- coding: utf-8 -*-
 
@@ -9,6 +9,7 @@ m4_ifndef([_AC_C_C23_OPTIONS], [
 # This implementation is taken from GNU Autoconf lib/autoconf/c.m4
 # commit 017d5ddd82854911f0119691d91ea8a1438824d6
 # dated Sun Apr 3 13:57:17 2016 -0700
+# with minor changes to commentary.
 # This implementation will be obsolete once we can assume Autoconf 2.70
 # or later is installed everywhere a Gnulib program might be developed.
 
@@ -17,9 +18,10 @@ m4_version_prereq([2.70], [], [
 
 # Copyright (C) 2001-2024 Free Software Foundation, Inc.
 
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
+# This file is part of Autoconf.  This program is free
+# software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful,
@@ -27,8 +29,15 @@ m4_version_prereq([2.70], [], [
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 #
+# Under Section 7 of GPL version 3, you are granted additional
+# permissions described in the Autoconf Configure Script Exception,
+# version 3.0, as published by the Free Software Foundation.
+#
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+# and a copy of the Autoconf Configure Script Exception along with
+# this program; see the files COPYINGv3 and COPYING.EXCEPTION
+# respectively.  If not, see <https://www.gnu.org/licenses/> and
+# 
<https://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blob_plain;f=COPYING.EXCEPTION>.
 
 # Written by David MacKenzie, with help from
 # Akim Demaille, Paul Eggert,
diff --git a/gnulib/m4/stdlib_h.m4 b/gnulib/m4/stdlib_h.m4
index 332669f946..5d9b3017c4 100644
--- a/gnulib/m4/stdlib_h.m4
+++ b/gnulib/m4/stdlib_h.m4
@@ -1,5 +1,5 @@
 # stdlib_h.m4
-# serial 79
+# serial 81
 dnl Copyright (C) 2007-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,
@@ -37,7 +37,7 @@ AC_DEFUN_ONCE([gl_STDLIB_H],
   dnl On Solaris 10, in UTF-8 locales, its value is 3 but needs to be 4.
   dnl Fortunately, we can do this because on this platform MB_LEN_MAX is 5.
   AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_REQUIRE([gt_LOCALE_FR_UTF8])
+  AC_REQUIRE([gt_LOCALE_EN_UTF8])
   AC_CACHE_CHECK([whether MB_CUR_MAX is correct],
     [gl_cv_macro_MB_CUR_MAX_good],
     [
@@ -45,13 +45,13 @@ AC_DEFUN_ONCE([gl_STDLIB_H],
       dnl is present.
 changequote(,)dnl
       case "$host_os" in
-                  # Guess no on Solaris.
-        solaris*) gl_cv_macro_MB_CUR_MAX_good="guessing no" ;;
-                  # Guess yes otherwise.
-        *)        gl_cv_macro_MB_CUR_MAX_good="guessing yes" ;;
+                           # Guess no on Solaris and Haiku.
+        solaris* | haiku*) gl_cv_macro_MB_CUR_MAX_good="guessing no" ;;
+                           # Guess yes otherwise.
+        *)                 gl_cv_macro_MB_CUR_MAX_good="guessing yes" ;;
       esac
 changequote([,])dnl
-      if test $LOCALE_FR_UTF8 != none; then
+      if test "$LOCALE_EN_UTF8" != none; then
         AC_RUN_IFELSE(
           [AC_LANG_SOURCE([[
 #include <locale.h>
@@ -59,7 +59,7 @@ changequote([,])dnl
 int main ()
 {
   int result = 0;
-  if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+  if (setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
     {
       if (MB_CUR_MAX < 4)
         result |= 1;
diff --git a/gnulib/m4/time_h.m4 b/gnulib/m4/time_h.m4
index 4ca7305792..88c76c03c0 100644
--- a/gnulib/m4/time_h.m4
+++ b/gnulib/m4/time_h.m4
@@ -1,5 +1,5 @@
 # time_h.m4
-# serial 26
+# serial 27
 dnl Copyright (C) 2000-2001, 2003-2007, 2009-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,
@@ -163,13 +163,16 @@ AC_DEFUN([gl_TIME_H_DEFAULTS],
   HAVE_TIMEGM=1;                         AC_SUBST([HAVE_TIMEGM])
   HAVE_TIMESPEC_GET=1;                   AC_SUBST([HAVE_TIMESPEC_GET])
   HAVE_TIMESPEC_GETRES=1;                AC_SUBST([HAVE_TIMESPEC_GETRES])
-  dnl Even GNU libc does not have timezone_t yet.
+  dnl Even GNU libc does not have timezone_t and tzalloc() yet.
   HAVE_TIMEZONE_T=0;                     AC_SUBST([HAVE_TIMEZONE_T])
+  HAVE_TZALLOC=0;                        AC_SUBST([HAVE_TZALLOC])
   REPLACE_CTIME=0;                       AC_SUBST([REPLACE_CTIME])
   REPLACE_GMTIME=0;                      AC_SUBST([REPLACE_GMTIME])
   REPLACE_LOCALTIME=0;                   AC_SUBST([REPLACE_LOCALTIME])
   REPLACE_LOCALTIME_R=0;                 AC_SUBST([REPLACE_LOCALTIME_R])
+  REPLACE_LOCALTIME_RZ=0;                AC_SUBST([REPLACE_LOCALTIME_RZ])
   REPLACE_MKTIME=0;                      AC_SUBST([REPLACE_MKTIME])
+  REPLACE_MKTIME_Z=0;                    AC_SUBST([REPLACE_MKTIME_Z])
   REPLACE_NANOSLEEP=0;                   AC_SUBST([REPLACE_NANOSLEEP])
   REPLACE_STRFTIME=0;                    AC_SUBST([REPLACE_STRFTIME])
   REPLACE_TIME=0;                        AC_SUBST([REPLACE_TIME])
diff --git a/gnulib/m4/unictype_h.m4 b/gnulib/m4/unictype_h.m4
index 477fec995d..f36204a8c9 100644
--- a/gnulib/m4/unictype_h.m4
+++ b/gnulib/m4/unictype_h.m4
@@ -1,5 +1,5 @@
 # unictype_h.m4
-# serial 3
+# serial 4
 dnl Copyright (C) 2023-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,
@@ -108,6 +108,7 @@ AC_DEFUN([gl_UNICTYPE_H_REQUIRE_DEFAULTS],
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_GRAPHEME_EXTEND_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_OTHER_GRAPHEME_EXTEND_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_GRAPHEME_LINK_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
+    
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_MODIFIER_COMBINING_MARK_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_CONTROL_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_LEFT_TO_RIGHT_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
diff --git a/gnulib/m4/wcrtomb.m4 b/gnulib/m4/wcrtomb.m4
index 35dff6f037..cc0e935f24 100644
--- a/gnulib/m4/wcrtomb.m4
+++ b/gnulib/m4/wcrtomb.m4
@@ -1,5 +1,5 @@
 # wcrtomb.m4
-# serial 19
+# serial 21
 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,7 @@ AC_DEFUN([gl_FUNC_WCRTOMB],
       dnl sometimes returns 0 instead of 1.
       AC_REQUIRE([AC_PROG_CC])
       AC_REQUIRE([gt_LOCALE_FR])
-      AC_REQUIRE([gt_LOCALE_FR_UTF8])
+      AC_REQUIRE([gt_LOCALE_EN_UTF8])
       AC_REQUIRE([gt_LOCALE_JA])
       AC_REQUIRE([gt_LOCALE_ZH_CN])
       AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
@@ -90,7 +90,7 @@ changequote(,)dnl
               gl_cv_func_wcrtomb_retval="guessing yes" ;;
           esac
 changequote([,])dnl
-          if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test 
$LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
+          if test $LOCALE_FR != none || test "$LOCALE_EN_UTF8" != none || test 
$LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
             AC_RUN_IFELSE(
               [AC_LANG_SOURCE([[
 #include <locale.h>
@@ -106,8 +106,8 @@ int main ()
       if (wcrtomb (NULL, 0, NULL) != 1)
         result |= 1;
     }
-  if (strcmp ("$LOCALE_FR_UTF8", "none") != 0
-      && setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+  if (strcmp ("$LOCALE_EN_UTF8", "none") != 0
+      && setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
     {
       if (wcrtomb (NULL, 0, NULL) != 1)
         result |= 2;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]