texinfo-commits
[Top][All Lists]
Advanced

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

[no subject]


From: Gavin D. Smith
Date: Tue, 20 Feb 2024 15:48:23 -0500 (EST)

branch: master
commit 265ef0faac4b2d699c472b25283ad5b00598f134
Author: Gavin Smith <gavinsmith0123@gmail.com>
AuthorDate: Tue Feb 20 20:47:09 2024 +0000

    * tp/Texinfo/XS:
    Run "gnulib --remove-import uniconv/u8-strconv-to-enc" and
    "gnulib --remove-import uniconv/u8-strconv-from-enc" and
    "gnulib --remove-import uniconv/u32-strconv-from-enc".
---
 .gitignore                                         |    3 -
 ChangeLog                                          |    7 +
 tp/Texinfo/XS/gnulib/lib/Makefile.am               |  220 +---
 tp/Texinfo/XS/gnulib/lib/c-ctype.c                 |   21 -
 tp/Texinfo/XS/gnulib/lib/c-ctype.h                 |  366 ------
 tp/Texinfo/XS/gnulib/lib/c-strcase.h               |   61 -
 tp/Texinfo/XS/gnulib/lib/c-strcasecmp.c            |   56 -
 tp/Texinfo/XS/gnulib/lib/c-strcaseeq.h             |  181 ---
 tp/Texinfo/XS/gnulib/lib/c-strncasecmp.c           |   56 -
 tp/Texinfo/XS/gnulib/lib/iconv.c                   |  446 -------
 tp/Texinfo/XS/gnulib/lib/iconv.in.h                |  132 ---
 tp/Texinfo/XS/gnulib/lib/iconv_close.c             |   43 -
 tp/Texinfo/XS/gnulib/lib/iconv_open-aix.gperf      |   60 -
 tp/Texinfo/XS/gnulib/lib/iconv_open-hpux.gperf     |   72 --
 tp/Texinfo/XS/gnulib/lib/iconv_open-irix.gperf     |   47 -
 tp/Texinfo/XS/gnulib/lib/iconv_open-osf.gperf      |   66 --
 tp/Texinfo/XS/gnulib/lib/iconv_open-solaris.gperf  |   46 -
 tp/Texinfo/XS/gnulib/lib/iconv_open-zos.gperf      |   76 --
 tp/Texinfo/XS/gnulib/lib/iconv_open.c              |  173 ---
 tp/Texinfo/XS/gnulib/lib/iconveh.h                 |   44 -
 tp/Texinfo/XS/gnulib/lib/limits.in.h               |    2 +-
 tp/Texinfo/XS/gnulib/lib/striconveh.c              | 1235 --------------------
 tp/Texinfo/XS/gnulib/lib/striconveh.h              |  147 ---
 tp/Texinfo/XS/gnulib/lib/striconveha.c             |  357 ------
 tp/Texinfo/XS/gnulib/lib/striconveha.h             |  100 --
 tp/Texinfo/XS/gnulib/lib/unicase/cased.h           |    4 +-
 tp/Texinfo/XS/gnulib/lib/unicase/ignorable.h       |    4 +-
 .../gnulib/lib/unicase/special-casing-table.gperf  |    4 +-
 tp/Texinfo/XS/gnulib/lib/unicase/tolower.h         |    4 +-
 tp/Texinfo/XS/gnulib/lib/unicase/toupper.h         |    4 +-
 tp/Texinfo/XS/gnulib/lib/uniconv.in.h              |  172 ---
 tp/Texinfo/XS/gnulib/lib/uniconv/u-conv-from-enc.h |   99 --
 .../XS/gnulib/lib/uniconv/u-strconv-from-enc.h     |   40 -
 .../XS/gnulib/lib/uniconv/u32-conv-from-enc.c      |   54 -
 .../XS/gnulib/lib/uniconv/u32-strconv-from-enc.c   |   42 -
 .../XS/gnulib/lib/uniconv/u8-conv-from-enc.c       |  106 --
 .../XS/gnulib/lib/uniconv/u8-strconv-from-enc.c    |   34 -
 .../XS/gnulib/lib/uniconv/u8-strconv-to-enc.c      |   85 --
 tp/Texinfo/XS/gnulib/lib/unictype.in.h             |   46 +
 tp/Texinfo/XS/gnulib/lib/unictype/categ_L.h        |   22 +-
 tp/Texinfo/XS/gnulib/lib/unictype/categ_M.h        |    4 +-
 tp/Texinfo/XS/gnulib/lib/unictype/categ_Mn.h       |    4 +-
 tp/Texinfo/XS/gnulib/lib/unictype/categ_Nd.h       |    4 +-
 tp/Texinfo/XS/gnulib/lib/unictype/combiningclass.h |    4 +-
 tp/Texinfo/XS/gnulib/lib/unictype/ctype_upper.h    |    4 +-
 tp/Texinfo/XS/gnulib/lib/unictype/pr_alphabetic.h  |   22 +-
 .../XS/gnulib/lib/unictype/pr_join_control.h       |    4 +-
 tp/Texinfo/XS/gnulib/lib/unictype/pr_soft_dotted.h |    4 +-
 .../XS/gnulib/lib/uninorm/composition-table.gperf  |    4 +-
 .../XS/gnulib/lib/uninorm/decomposition-table1.h   |    4 +-
 .../XS/gnulib/lib/uninorm/decomposition-table2.h   |    4 +-
 tp/Texinfo/XS/gnulib/lib/unistr/u-strlen.h         |   26 -
 tp/Texinfo/XS/gnulib/lib/unistr/u32-mblen.c        |   43 -
 tp/Texinfo/XS/gnulib/lib/unistr/u32-strlen.c       |   25 -
 tp/Texinfo/XS/gnulib/lib/unistr/u8-check.c         |   77 --
 tp/Texinfo/XS/gnulib/lib/unistr/u8-mblen.c         |   63 -
 tp/Texinfo/XS/gnulib/lib/unistr/u8-prev.c          |   81 --
 tp/Texinfo/XS/gnulib/lib/unistr/u8-to-u32.c        |  125 --
 tp/Texinfo/XS/gnulib/lib/uniwidth/width0.h         |   18 +-
 tp/Texinfo/XS/gnulib/lib/uniwidth/width2.h         |    4 +-
 tp/Texinfo/XS/gnulib/lib/warn-on-use.h             |    4 +
 tp/Texinfo/XS/gnulib/lib/xalloc-oversized.h        |    3 +-
 tp/Texinfo/XS/gnulib/m4/gnulib-cache.m4            |    6 -
 tp/Texinfo/XS/gnulib/m4/gnulib-common.m4           |   76 +-
 tp/Texinfo/XS/gnulib/m4/gnulib-comp.m4             |   93 +-
 tp/Texinfo/XS/gnulib/m4/host-cpu-c-abi.m4          |  244 +---
 tp/Texinfo/XS/gnulib/m4/iconv_h.m4                 |   70 --
 tp/Texinfo/XS/gnulib/m4/iconv_open.m4              |   60 -
 tp/Texinfo/XS/gnulib/m4/lib-prefix.m4              |   11 +-
 tp/Texinfo/XS/gnulib/m4/printf.m4                  |   10 +-
 tp/Texinfo/XS/gnulib/m4/unictype_h.m4              |    6 +-
 71 files changed, 246 insertions(+), 5598 deletions(-)

diff --git a/.gitignore b/.gitignore
index 73f2b947e5..b3323fcc7a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -84,11 +84,9 @@ gnulib/lib/uninorm.h
 tp/Texinfo/XS/gnulib/lib/inttypes.h
 tp/Texinfo/XS/gnulib/lib/stdlib.h
 tp/Texinfo/XS/gnulib/lib/unistd.h
-tp/Texinfo/XS/gnulib/lib/iconv.h
 tp/Texinfo/XS/gnulib/lib/obstack.h
 tp/Texinfo/XS/gnulib/lib/stdckdint.h
 tp/Texinfo/XS/gnulib/lib/uchar.h
-tp/Texinfo/XS/gnulib/lib/uniconv.h
 tp/Texinfo/XS/gnulib/lib/unistr.h
 tp/Texinfo/XS/gnulib/lib/wctype.h
 
@@ -291,7 +289,6 @@ tp/Texinfo/XS/gnulib/lib/.libs
 tp/Texinfo/XS/gnulib/lib/*.lo
 tp/Texinfo/XS/gnulib/lib/libgnu.la
 tp/Texinfo/XS/gnulib/lib/unicase/*.lo
-tp/Texinfo/XS/gnulib/lib/uniconv/*.lo
 tp/Texinfo/XS/gnulib/lib/unictype/*.lo
 tp/Texinfo/XS/gnulib/lib/uninorm/*.lo
 tp/Texinfo/XS/gnulib/lib/unistr/*.lo
diff --git a/ChangeLog b/ChangeLog
index 9b63a73bc0..6ed22359e9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2024-02-20  Gavin Smith <gavinsmith0123@gmail.com>
+
+       * tp/Texinfo/XS:
+       Run "gnulib --remove-import uniconv/u8-strconv-to-enc" and
+       "gnulib --remove-import uniconv/u8-strconv-from-enc" and
+       "gnulib --remove-import uniconv/u32-strconv-from-enc".
+
 2024-02-20  Gavin Smith <gavinsmith0123@gmail.com>
 
        * tp/Texinfo/XS/main/unicode.c (utf8_from_string, string_from_utf8):
diff --git a/tp/Texinfo/XS/gnulib/lib/Makefile.am 
b/tp/Texinfo/XS/gnulib/lib/Makefile.am
index 387cbf0a6e..4fb30c61d7 100644
--- a/tp/Texinfo/XS/gnulib/lib/Makefile.am
+++ b/tp/Texinfo/XS/gnulib/lib/Makefile.am
@@ -42,9 +42,6 @@
 #  uchar \
 #  unicase/u8-tolower \
 #  unicase/u8-toupper \
-#  uniconv/u32-strconv-from-enc \
-#  uniconv/u8-strconv-from-enc \
-#  uniconv/u8-strconv-to-enc \
 #  unictype/category-L \
 #  unictype/category-M \
 #  unictype/category-Mn \
@@ -184,25 +181,6 @@ EXTRA_DIST += attribute.h
 
 ## end   gnulib module attribute
 
-## begin gnulib module c-ctype
-
-libgnu_la_SOURCES += c-ctype.h c-ctype.c
-
-## end   gnulib module c-ctype
-
-## begin gnulib module c-strcase
-
-libgnu_la_SOURCES += c-strcase.h c-strcasecmp.c c-strncasecmp.c
-
-## end   gnulib module c-strcase
-
-## begin gnulib module c-strcaseeq
-
-
-EXTRA_DIST += c-strcaseeq.h
-
-## end   gnulib module c-strcaseeq
-
 ## begin gnulib module errno
 
 BUILT_SOURCES += $(ERRNO_H)
@@ -342,76 +320,6 @@ EXTRA_DIST += $(top_srcdir)/./config.rpath
 
 ## end   gnulib module havelib
 
-## begin gnulib module iconv-h
-
-BUILT_SOURCES += $(ICONV_H)
-
-# We need the following in order to create <iconv.h> when the system
-# doesn't have one that works with the given compiler.
-if GL_GENERATE_ICONV_H
-iconv.h: iconv.in.h $(top_builddir)/config.status $(CXXDEFS_H) 
$(ARG_NONNULL_H) $(WARN_ON_USE_H)
-       $(gl_V_at)$(SED_HEADER_STDOUT) \
-             -e 's|@''GUARD_PREFIX''@|GL|g' \
-             -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-             -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-             -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-             -e 's|@''NEXT_ICONV_H''@|$(NEXT_ICONV_H)|g' \
-             -e 's/@''GNULIB_ICONV''@/$(GL_GNULIB_ICONV)/g' \
-             -e 's|@''ICONV_CONST''@|$(ICONV_CONST)|g' \
-             -e 's|@''REPLACE_ICONV''@|$(REPLACE_ICONV)|g' \
-             -e 's|@''REPLACE_ICONV_OPEN''@|$(REPLACE_ICONV_OPEN)|g' \
-             -e 's|@''REPLACE_ICONV_UTF''@|$(REPLACE_ICONV_UTF)|g' \
-             -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-             -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-             -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
-             $(srcdir)/iconv.in.h > $@-t
-       $(AM_V_at)mv $@-t $@
-else
-iconv.h: $(top_builddir)/config.status
-       rm -f $@
-endif
-MOSTLYCLEANFILES += iconv.h iconv.h-t
-
-EXTRA_DIST += iconv.in.h
-
-## end   gnulib module iconv-h
-
-## begin gnulib module iconv_open
-
-if GL_COND_OBJ_ICONV_OPEN
-libgnu_la_SOURCES += iconv_open.c
-endif
-if GL_COND_OBJ_ICONV
-libgnu_la_SOURCES += iconv.c iconv_close.c
-endif
-
-$(srcdir)/iconv_open-aix.h: $(srcdir)/iconv_open-aix.gperf
-       $(V_GPERF)$(GPERF) -m 10 $(srcdir)/iconv_open-aix.gperf > 
$(srcdir)/iconv_open-aix.h-t && \
-       mv $(srcdir)/iconv_open-aix.h-t $(srcdir)/iconv_open-aix.h
-$(srcdir)/iconv_open-hpux.h: $(srcdir)/iconv_open-hpux.gperf
-       $(V_GPERF)$(GPERF) -m 10 $(srcdir)/iconv_open-hpux.gperf > 
$(srcdir)/iconv_open-hpux.h-t && \
-       mv $(srcdir)/iconv_open-hpux.h-t $(srcdir)/iconv_open-hpux.h
-$(srcdir)/iconv_open-irix.h: $(srcdir)/iconv_open-irix.gperf
-       $(V_GPERF)$(GPERF) -m 10 $(srcdir)/iconv_open-irix.gperf > 
$(srcdir)/iconv_open-irix.h-t && \
-       mv $(srcdir)/iconv_open-irix.h-t $(srcdir)/iconv_open-irix.h
-$(srcdir)/iconv_open-osf.h: $(srcdir)/iconv_open-osf.gperf
-       $(V_GPERF)$(GPERF) -m 10 $(srcdir)/iconv_open-osf.gperf > 
$(srcdir)/iconv_open-osf.h-t && \
-       mv $(srcdir)/iconv_open-osf.h-t $(srcdir)/iconv_open-osf.h
-$(srcdir)/iconv_open-solaris.h: $(srcdir)/iconv_open-solaris.gperf
-       $(V_GPERF)$(GPERF) -m 10 $(srcdir)/iconv_open-solaris.gperf > 
$(srcdir)/iconv_open-solaris.h-t && \
-       mv $(srcdir)/iconv_open-solaris.h-t $(srcdir)/iconv_open-solaris.h
-$(srcdir)/iconv_open-zos.h: $(srcdir)/iconv_open-zos.gperf
-       $(V_GPERF)$(GPERF) -m 10 $(srcdir)/iconv_open-zos.gperf > 
$(srcdir)/iconv_open-zos.h-t && \
-       mv $(srcdir)/iconv_open-zos.h-t $(srcdir)/iconv_open-zos.h
-BUILT_SOURCES        += iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h 
iconv_open-osf.h iconv_open-solaris.h iconv_open-zos.h
-MOSTLYCLEANFILES     += iconv_open-aix.h-t iconv_open-hpux.h-t 
iconv_open-irix.h-t iconv_open-osf.h-t iconv_open-solaris.h-t iconv_open-zos.h-t
-MAINTAINERCLEANFILES += iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h 
iconv_open-osf.h iconv_open-solaris.h iconv_open-zos.h
-EXTRA_DIST           += iconv_open-aix.h iconv_open-hpux.h iconv_open-irix.h 
iconv_open-osf.h iconv_open-solaris.h iconv_open-zos.h
-
-EXTRA_DIST += iconv_open-aix.gperf iconv_open-hpux.gperf iconv_open-irix.gperf 
iconv_open-osf.gperf iconv_open-solaris.gperf iconv_open-zos.gperf
-
-## end   gnulib module iconv_open
-
 ## begin gnulib module idx
 
 libgnu_la_SOURCES += idx.h
@@ -1048,21 +956,6 @@ EXTRA_DIST += streq.h
 
 ## end   gnulib module streq
 
-## begin gnulib module striconveh
-
-libgnu_la_SOURCES += striconveh.h striconveh.c
-libgnu_la_LDFLAGS += $(LTLIBICONV)
-
-EXTRA_DIST += iconveh.h
-
-## end   gnulib module striconveh
-
-## begin gnulib module striconveha
-
-libgnu_la_SOURCES += striconveha.h striconveha.c
-
-## end   gnulib module striconveha
-
 ## begin gnulib module string
 
 BUILT_SOURCES += string.h
@@ -1422,65 +1315,6 @@ endif
 
 ## end   gnulib module unicase/u8-toupper
 
-## begin gnulib module uniconv/base
-
-BUILT_SOURCES += $(LIBUNISTRING_UNICONV_H)
-
-uniconv.h: uniconv.in.h
-       $(gl_V_at)$(SED_HEADER_TO_AT_t) $(srcdir)/uniconv.in.h
-       $(AM_V_at)mv $@-t $@
-MOSTLYCLEANFILES += uniconv.h uniconv.h-t
-
-EXTRA_DIST += iconveh.h localcharset.h striconveha.h uniconv.in.h
-
-## end   gnulib module uniconv/base
-
-## begin gnulib module uniconv/u32-conv-from-enc
-
-if LIBUNISTRING_COMPILE_UNICONV_U32_CONV_FROM_ENC
-libgnu_la_SOURCES += uniconv/u32-conv-from-enc.c
-endif
-
-EXTRA_DIST += uniconv/u-conv-from-enc.h
-
-## end   gnulib module uniconv/u32-conv-from-enc
-
-## begin gnulib module uniconv/u32-strconv-from-enc
-
-if LIBUNISTRING_COMPILE_UNICONV_U32_STRCONV_FROM_ENC
-libgnu_la_SOURCES += uniconv/u32-strconv-from-enc.c
-endif
-
-EXTRA_DIST += uniconv/u-strconv-from-enc.h
-
-## end   gnulib module uniconv/u32-strconv-from-enc
-
-## begin gnulib module uniconv/u8-conv-from-enc
-
-if LIBUNISTRING_COMPILE_UNICONV_U8_CONV_FROM_ENC
-libgnu_la_SOURCES += uniconv/u8-conv-from-enc.c
-endif
-
-## end   gnulib module uniconv/u8-conv-from-enc
-
-## begin gnulib module uniconv/u8-strconv-from-enc
-
-if LIBUNISTRING_COMPILE_UNICONV_U8_STRCONV_FROM_ENC
-libgnu_la_SOURCES += uniconv/u8-strconv-from-enc.c
-endif
-
-EXTRA_DIST += uniconv/u-strconv-from-enc.h
-
-## end   gnulib module uniconv/u8-strconv-from-enc
-
-## begin gnulib module uniconv/u8-strconv-to-enc
-
-if LIBUNISTRING_COMPILE_UNICONV_U8_STRCONV_TO_ENC
-libgnu_la_SOURCES += uniconv/u8-strconv-to-enc.c
-endif
-
-## end   gnulib module uniconv/u8-strconv-to-enc
-
 ## begin gnulib module unictype/base
 
 BUILT_SOURCES += $(LIBUNISTRING_UNICTYPE_H)
@@ -1560,6 +1394,8 @@ unictype.h: unictype.in.h
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_OTHER_ID_CONTINUE_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_OTHER_ID_CONTINUE_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_XID_START_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_XID_START_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_XID_CONTINUE_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_XID_CONTINUE_DLL_VARIABLE)/g'
 \
+             -e 
's/@''GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_START_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_START_DLL_VARIABLE)/g'
 \
+             -e 
's/@''GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_CONTINUE_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_CONTINUE_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_PATTERN_WHITE_SPACE_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_PATTERN_WHITE_SPACE_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_PATTERN_SYNTAX_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_PATTERN_SYNTAX_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_JOIN_CONTROL_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_JOIN_CONTROL_DLL_VARIABLE)/g'
 \
@@ -1591,6 +1427,7 @@ unictype.h: unictype.in.h
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_IDEOGRAPHIC_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_IDEOGRAPHIC_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_UNIFIED_IDEOGRAPH_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_UNIFIED_IDEOGRAPH_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_RADICAL_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_RADICAL_DLL_VARIABLE)/g'
 \
+             -e 
's/@''GNULIB_UNICTYPE_PROPERTY_IDS_UNARY_OPERATOR_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_IDS_UNARY_OPERATOR_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_IDS_BINARY_OPERATOR_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_IDS_BINARY_OPERATOR_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_IDS_TRINARY_OPERATOR_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_IDS_TRINARY_OPERATOR_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_EMOJI_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_EMOJI_DLL_VARIABLE)/g'
 \
@@ -1604,6 +1441,7 @@ unictype.h: unictype.in.h
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE)/g'
 \
+             -e 
's/@''GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE)/g'
 \
              -e 
's/@''GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE''@/$(GL_GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE)/g'
 \
@@ -2091,14 +1929,6 @@ EXTRA_DIST += unistr.in.h
 
 ## end   gnulib module unistr/base
 
-## begin gnulib module unistr/u32-mblen
-
-if LIBUNISTRING_COMPILE_UNISTR_U32_MBLEN
-libgnu_la_SOURCES += unistr/u32-mblen.c
-endif
-
-## end   gnulib module unistr/u32-mblen
-
 ## begin gnulib module unistr/u32-next
 
 if LIBUNISTRING_COMPILE_UNISTR_U32_NEXT
@@ -2107,16 +1937,6 @@ endif
 
 ## end   gnulib module unistr/u32-next
 
-## begin gnulib module unistr/u32-strlen
-
-if LIBUNISTRING_COMPILE_UNISTR_U32_STRLEN
-libgnu_la_SOURCES += unistr/u32-strlen.c
-endif
-
-EXTRA_DIST += unistr/u-strlen.h
-
-## end   gnulib module unistr/u32-strlen
-
 ## begin gnulib module unistr/u32-strmbtouc
 
 if LIBUNISTRING_COMPILE_UNISTR_U32_STRMBTOUC
@@ -2125,14 +1945,6 @@ endif
 
 ## end   gnulib module unistr/u32-strmbtouc
 
-## begin gnulib module unistr/u8-check
-
-if LIBUNISTRING_COMPILE_UNISTR_U8_CHECK
-libgnu_la_SOURCES += unistr/u8-check.c
-endif
-
-## end   gnulib module unistr/u8-check
-
 ## begin gnulib module unistr/u8-cpy
 
 if LIBUNISTRING_COMPILE_UNISTR_U8_CPY
@@ -2143,14 +1955,6 @@ EXTRA_DIST += unistr/u-cpy.h
 
 ## end   gnulib module unistr/u8-cpy
 
-## begin gnulib module unistr/u8-mblen
-
-if LIBUNISTRING_COMPILE_UNISTR_U8_MBLEN
-libgnu_la_SOURCES += unistr/u8-mblen.c
-endif
-
-## end   gnulib module unistr/u8-mblen
-
 ## begin gnulib module unistr/u8-mbsnlen
 
 if LIBUNISTRING_COMPILE_UNISTR_U8_MBSNLEN
@@ -2191,14 +1995,6 @@ endif
 
 ## end   gnulib module unistr/u8-next
 
-## begin gnulib module unistr/u8-prev
-
-if LIBUNISTRING_COMPILE_UNISTR_U8_PREV
-libgnu_la_SOURCES += unistr/u8-prev.c
-endif
-
-## end   gnulib module unistr/u8-prev
-
 ## begin gnulib module unistr/u8-strlen
 
 if LIBUNISTRING_COMPILE_UNISTR_U8_STRLEN
@@ -2215,14 +2011,6 @@ endif
 
 ## end   gnulib module unistr/u8-strmbtouc
 
-## begin gnulib module unistr/u8-to-u32
-
-if LIBUNISTRING_COMPILE_UNISTR_U8_TO_U32
-libgnu_la_SOURCES += unistr/u8-to-u32.c
-endif
-
-## end   gnulib module unistr/u8-to-u32
-
 ## begin gnulib module unistr/u8-uctomb
 
 if LIBUNISTRING_COMPILE_UNISTR_U8_UCTOMB
diff --git a/tp/Texinfo/XS/gnulib/lib/c-ctype.c 
b/tp/Texinfo/XS/gnulib/lib/c-ctype.c
deleted file mode 100644
index d3f1b12d5a..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/c-ctype.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Character handling in C locale.
-
-   Copyright (C) 2003-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-#define C_CTYPE_INLINE _GL_EXTERN_INLINE
-#include "c-ctype.h"
diff --git a/tp/Texinfo/XS/gnulib/lib/c-ctype.h 
b/tp/Texinfo/XS/gnulib/lib/c-ctype.h
deleted file mode 100644
index b582de4a7f..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/c-ctype.h
+++ /dev/null
@@ -1,366 +0,0 @@
-/* Character handling in C locale.
-
-   These functions work like the corresponding functions in <ctype.h>,
-   except that they have the C (POSIX) locale hardwired, whereas the
-   <ctype.h> functions' behaviour depends on the current locale set via
-   setlocale.
-
-   Copyright (C) 2000-2003, 2006, 2008-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#ifndef C_CTYPE_H
-#define C_CTYPE_H
-
-/* This file uses _GL_INLINE_HEADER_BEGIN, _GL_INLINE.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-_GL_INLINE_HEADER_BEGIN
-#ifndef C_CTYPE_INLINE
-# define C_CTYPE_INLINE _GL_INLINE
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* The functions defined in this file assume the "C" locale and a character
-   set without diacritics (ASCII-US or EBCDIC-US or something like that).
-   Even if the "C" locale on a particular system is an extension of the ASCII
-   character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it
-   is ISO-8859-1), the functions in this file recognize only the ASCII
-   characters.  */
-
-
-#if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
-    && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
-    && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
-    && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
-    && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
-    && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
-    && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
-    && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
-    && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
-    && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
-    && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
-    && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
-    && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
-    && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
-    && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
-    && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
-    && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
-    && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
-    && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
-    && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
-    && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
-    && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
-    && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)
-/* The character set is ASCII or one of its variants or extensions, not EBCDIC.
-   Testing the value of '\n' and '\r' is not relevant.  */
-# define C_CTYPE_ASCII 1
-#elif ! (' ' == '\x40' && '0' == '\xf0'                     \
-         && 'A' == '\xc1' && 'J' == '\xd1' && 'S' == '\xe2' \
-         && 'a' == '\x81' && 'j' == '\x91' && 's' == '\xa2')
-# error "Only ASCII and EBCDIC are supported"
-#endif
-
-#if 'A' < 0
-# error "EBCDIC and char is signed -- not supported"
-#endif
-
-/* Cases for control characters.  */
-
-#define _C_CTYPE_CNTRL \
-   case '\a': case '\b': case '\f': case '\n': \
-   case '\r': case '\t': case '\v': \
-   _C_CTYPE_OTHER_CNTRL
-
-/* ASCII control characters other than those with \-letter escapes.  */
-
-#if C_CTYPE_ASCII
-# define _C_CTYPE_OTHER_CNTRL \
-    case '\x00': case '\x01': case '\x02': case '\x03': \
-    case '\x04': case '\x05': case '\x06': case '\x0e': \
-    case '\x0f': case '\x10': case '\x11': case '\x12': \
-    case '\x13': case '\x14': case '\x15': case '\x16': \
-    case '\x17': case '\x18': case '\x19': case '\x1a': \
-    case '\x1b': case '\x1c': case '\x1d': case '\x1e': \
-    case '\x1f': case '\x7f'
-#else
-   /* Use EBCDIC code page 1047's assignments for ASCII control chars;
-      assume all EBCDIC code pages agree about these assignments.  */
-# define _C_CTYPE_OTHER_CNTRL \
-    case '\x00': case '\x01': case '\x02': case '\x03': \
-    case '\x07': case '\x0e': case '\x0f': case '\x10': \
-    case '\x11': case '\x12': case '\x13': case '\x18': \
-    case '\x19': case '\x1c': case '\x1d': case '\x1e': \
-    case '\x1f': case '\x26': case '\x27': case '\x2d': \
-    case '\x2e': case '\x32': case '\x37': case '\x3c': \
-    case '\x3d': case '\x3f'
-#endif
-
-/* Cases for lowercase hex letters, and lowercase letters, all offset by N.  */
-
-#define _C_CTYPE_LOWER_A_THRU_F_N(N) \
-   case 'a' + (N): case 'b' + (N): case 'c' + (N): case 'd' + (N): \
-   case 'e' + (N): case 'f' + (N)
-#define _C_CTYPE_LOWER_N(N) \
-   _C_CTYPE_LOWER_A_THRU_F_N(N): \
-   case 'g' + (N): case 'h' + (N): case 'i' + (N): case 'j' + (N): \
-   case 'k' + (N): case 'l' + (N): case 'm' + (N): case 'n' + (N): \
-   case 'o' + (N): case 'p' + (N): case 'q' + (N): case 'r' + (N): \
-   case 's' + (N): case 't' + (N): case 'u' + (N): case 'v' + (N): \
-   case 'w' + (N): case 'x' + (N): case 'y' + (N): case 'z' + (N)
-
-/* Cases for hex letters, digits, lower, punct, and upper.  */
-
-#define _C_CTYPE_A_THRU_F \
-   _C_CTYPE_LOWER_A_THRU_F_N (0): \
-   _C_CTYPE_LOWER_A_THRU_F_N ('A' - 'a')
-#define _C_CTYPE_DIGIT                     \
-   case '0': case '1': case '2': case '3': \
-   case '4': case '5': case '6': case '7': \
-   case '8': case '9'
-#define _C_CTYPE_LOWER _C_CTYPE_LOWER_N (0)
-#define _C_CTYPE_PUNCT \
-   case '!': case '"': case '#': case '$':  \
-   case '%': case '&': case '\'': case '(': \
-   case ')': case '*': case '+': case ',':  \
-   case '-': case '.': case '/': case ':':  \
-   case ';': case '<': case '=': case '>':  \
-   case '?': case '@': case '[': case '\\': \
-   case ']': case '^': case '_': case '`':  \
-   case '{': case '|': case '}': case '~'
-#define _C_CTYPE_UPPER _C_CTYPE_LOWER_N ('A' - 'a')
-
-
-/* Function definitions.  */
-
-/* Unlike the functions in <ctype.h>, which require an argument in the range
-   of the 'unsigned char' type, the functions here operate on values that are
-   in the 'unsigned char' range or in the 'char' range.  In other words,
-   when you have a 'char' value, you need to cast it before using it as
-   argument to a <ctype.h> function:
-
-         const char *s = ...;
-         if (isalpha ((unsigned char) *s)) ...
-
-   but you don't need to cast it for the functions defined in this file:
-
-         const char *s = ...;
-         if (c_isalpha (*s)) ...
- */
-
-C_CTYPE_INLINE bool
-c_isalnum (int c)
-{
-  switch (c)
-    {
-    _C_CTYPE_DIGIT:
-    _C_CTYPE_LOWER:
-    _C_CTYPE_UPPER:
-      return true;
-    default:
-      return false;
-    }
-}
-
-C_CTYPE_INLINE bool
-c_isalpha (int c)
-{
-  switch (c)
-    {
-    _C_CTYPE_LOWER:
-    _C_CTYPE_UPPER:
-      return true;
-    default:
-      return false;
-    }
-}
-
-/* The function isascii is not locale dependent.
-   Its use in EBCDIC is questionable. */
-C_CTYPE_INLINE bool
-c_isascii (int c)
-{
-  switch (c)
-    {
-    case ' ':
-    _C_CTYPE_CNTRL:
-    _C_CTYPE_DIGIT:
-    _C_CTYPE_LOWER:
-    _C_CTYPE_PUNCT:
-    _C_CTYPE_UPPER:
-      return true;
-    default:
-      return false;
-    }
-}
-
-C_CTYPE_INLINE bool
-c_isblank (int c)
-{
-  return c == ' ' || c == '\t';
-}
-
-C_CTYPE_INLINE bool
-c_iscntrl (int c)
-{
-  switch (c)
-    {
-    _C_CTYPE_CNTRL:
-      return true;
-    default:
-      return false;
-    }
-}
-
-C_CTYPE_INLINE bool
-c_isdigit (int c)
-{
-  switch (c)
-    {
-    _C_CTYPE_DIGIT:
-      return true;
-    default:
-      return false;
-    }
-}
-
-C_CTYPE_INLINE bool
-c_isgraph (int c)
-{
-  switch (c)
-    {
-    _C_CTYPE_DIGIT:
-    _C_CTYPE_LOWER:
-    _C_CTYPE_PUNCT:
-    _C_CTYPE_UPPER:
-      return true;
-    default:
-      return false;
-    }
-}
-
-C_CTYPE_INLINE bool
-c_islower (int c)
-{
-  switch (c)
-    {
-    _C_CTYPE_LOWER:
-      return true;
-    default:
-      return false;
-    }
-}
-
-C_CTYPE_INLINE bool
-c_isprint (int c)
-{
-  switch (c)
-    {
-    case ' ':
-    _C_CTYPE_DIGIT:
-    _C_CTYPE_LOWER:
-    _C_CTYPE_PUNCT:
-    _C_CTYPE_UPPER:
-      return true;
-    default:
-      return false;
-    }
-}
-
-C_CTYPE_INLINE bool
-c_ispunct (int c)
-{
-  switch (c)
-    {
-    _C_CTYPE_PUNCT:
-      return true;
-    default:
-      return false;
-    }
-}
-
-C_CTYPE_INLINE bool
-c_isspace (int c)
-{
-  switch (c)
-    {
-    case ' ': case '\t': case '\n': case '\v': case '\f': case '\r':
-      return true;
-    default:
-      return false;
-    }
-}
-
-C_CTYPE_INLINE bool
-c_isupper (int c)
-{
-  switch (c)
-    {
-    _C_CTYPE_UPPER:
-      return true;
-    default:
-      return false;
-    }
-}
-
-C_CTYPE_INLINE bool
-c_isxdigit (int c)
-{
-  switch (c)
-    {
-    _C_CTYPE_DIGIT:
-    _C_CTYPE_A_THRU_F:
-      return true;
-    default:
-      return false;
-    }
-}
-
-C_CTYPE_INLINE int
-c_tolower (int c)
-{
-  switch (c)
-    {
-    _C_CTYPE_UPPER:
-      return c - 'A' + 'a';
-    default:
-      return c;
-    }
-}
-
-C_CTYPE_INLINE int
-c_toupper (int c)
-{
-  switch (c)
-    {
-    _C_CTYPE_LOWER:
-      return c - 'a' + 'A';
-    default:
-      return c;
-    }
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-_GL_INLINE_HEADER_END
-
-#endif /* C_CTYPE_H */
diff --git a/tp/Texinfo/XS/gnulib/lib/c-strcase.h 
b/tp/Texinfo/XS/gnulib/lib/c-strcase.h
deleted file mode 100644
index b75e8dd1cb..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/c-strcase.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Case-insensitive string comparison functions in C locale.
-   Copyright (C) 1995-1996, 2001, 2003, 2005, 2009-2024 Free Software
-   Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#ifndef C_STRCASE_H
-#define C_STRCASE_H
-
-/* This file uses _GL_ATTRIBUTE_PURE.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-#include <stddef.h>
-
-
-/* The functions defined in this file assume the "C" locale and a character
-   set without diacritics (ASCII-US or EBCDIC-US or something like that).
-   Even if the "C" locale on a particular system is an extension of the ASCII
-   character set (like on BeOS, where it is UTF-8, or on AmigaOS, where it
-   is ISO-8859-1), the functions in this file recognize only the ASCII
-   characters.  More precisely, one of the string arguments must be an ASCII
-   string; the other one can also contain non-ASCII characters (but then
-   the comparison result will be nonzero).  */
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Compare strings S1 and S2, ignoring case, returning less than, equal to or
-   greater than zero if S1 is lexicographically less than, equal to or greater
-   than S2.  */
-extern int c_strcasecmp (const char *s1, const char *s2) _GL_ATTRIBUTE_PURE;
-
-/* Compare no more than N characters of strings S1 and S2, ignoring case,
-   returning less than, equal to or greater than zero if S1 is
-   lexicographically less than, equal to or greater than S2.  */
-extern int c_strncasecmp (const char *s1, const char *s2, size_t n)
-  _GL_ATTRIBUTE_PURE;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* C_STRCASE_H */
diff --git a/tp/Texinfo/XS/gnulib/lib/c-strcasecmp.c 
b/tp/Texinfo/XS/gnulib/lib/c-strcasecmp.c
deleted file mode 100644
index 1fa575a856..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/c-strcasecmp.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* c-strcasecmp.c -- case insensitive string comparator in C locale
-   Copyright (C) 1998-1999, 2005-2006, 2009-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "c-strcase.h"
-
-#include <limits.h>
-
-#include "c-ctype.h"
-
-int
-c_strcasecmp (const char *s1, const char *s2)
-{
-  register const unsigned char *p1 = (const unsigned char *) s1;
-  register const unsigned char *p2 = (const unsigned char *) s2;
-  unsigned char c1, c2;
-
-  if (p1 == p2)
-    return 0;
-
-  do
-    {
-      c1 = c_tolower (*p1);
-      c2 = c_tolower (*p2);
-
-      if (c1 == '\0')
-        break;
-
-      ++p1;
-      ++p2;
-    }
-  while (c1 == c2);
-
-  if (UCHAR_MAX <= INT_MAX)
-    return c1 - c2;
-  else
-    /* On machines where 'char' and 'int' are types of the same size, the
-       difference of two 'unsigned char' values - including the sign bit -
-       doesn't fit in an 'int'.  */
-    return _GL_CMP (c1, c2);
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/c-strcaseeq.h 
b/tp/Texinfo/XS/gnulib/lib/c-strcaseeq.h
deleted file mode 100644
index 26e05c93c3..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/c-strcaseeq.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/* Optimized case-insensitive string comparison in C locale.
-   Copyright (C) 2001-2002, 2007, 2009-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-/* Written by Bruno Haible <bruno@clisp.org>.  */
-
-#include "c-strcase.h"
-#include "c-ctype.h"
-
-/* STRCASEEQ allows to optimize string comparison with a small literal string.
-     STRCASEEQ (s, "UTF-8", 'U','T','F','-','8',0,0,0,0)
-   is semantically equivalent to
-     c_strcasecmp (s, "UTF-8") == 0
-   just faster.  */
-
-/* Help GCC to generate good code for string comparisons with
-   immediate strings. */
-#if (defined __GNUC__ || defined __clang__) && defined __OPTIMIZE__
-
-/* Case insensitive comparison of ASCII characters.  */
-# if C_CTYPE_ASCII
-#  define CASEEQ(other,upper) \
-     (c_isupper (upper) ? ((other) & ~0x20) == (upper) : (other) == (upper))
-# else
-#  define CASEEQ(other,upper) \
-     (c_toupper (other) == (upper))
-# endif
-
-static inline int
-strcaseeq9 (const char *s1, const char *s2)
-{
-  return c_strcasecmp (s1 + 9, s2 + 9) == 0;
-}
-
-static inline int
-strcaseeq8 (const char *s1, const char *s2, char s28)
-{
-  if (CASEEQ (s1[8], s28))
-    {
-      if (s28 == 0)
-        return 1;
-      else
-        return strcaseeq9 (s1, s2);
-    }
-  else
-    return 0;
-}
-
-static inline int
-strcaseeq7 (const char *s1, const char *s2, char s27, char s28)
-{
-  if (CASEEQ (s1[7], s27))
-    {
-      if (s27 == 0)
-        return 1;
-      else
-        return strcaseeq8 (s1, s2, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-strcaseeq6 (const char *s1, const char *s2, char s26, char s27, char s28)
-{
-  if (CASEEQ (s1[6], s26))
-    {
-      if (s26 == 0)
-        return 1;
-      else
-        return strcaseeq7 (s1, s2, s27, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-strcaseeq5 (const char *s1, const char *s2, char s25, char s26, char s27, char 
s28)
-{
-  if (CASEEQ (s1[5], s25))
-    {
-      if (s25 == 0)
-        return 1;
-      else
-        return strcaseeq6 (s1, s2, s26, s27, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-strcaseeq4 (const char *s1, const char *s2, char s24, char s25, char s26, char 
s27, char s28)
-{
-  if (CASEEQ (s1[4], s24))
-    {
-      if (s24 == 0)
-        return 1;
-      else
-        return strcaseeq5 (s1, s2, s25, s26, s27, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-strcaseeq3 (const char *s1, const char *s2, char s23, char s24, char s25, char 
s26, char s27, char s28)
-{
-  if (CASEEQ (s1[3], s23))
-    {
-      if (s23 == 0)
-        return 1;
-      else
-        return strcaseeq4 (s1, s2, s24, s25, s26, s27, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-strcaseeq2 (const char *s1, const char *s2, char s22, char s23, char s24, char 
s25, char s26, char s27, char s28)
-{
-  if (CASEEQ (s1[2], s22))
-    {
-      if (s22 == 0)
-        return 1;
-      else
-        return strcaseeq3 (s1, s2, s23, s24, s25, s26, s27, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-strcaseeq1 (const char *s1, const char *s2, char s21, char s22, char s23, char 
s24, char s25, char s26, char s27, char s28)
-{
-  if (CASEEQ (s1[1], s21))
-    {
-      if (s21 == 0)
-        return 1;
-      else
-        return strcaseeq2 (s1, s2, s22, s23, s24, s25, s26, s27, s28);
-    }
-  else
-    return 0;
-}
-
-static inline int
-strcaseeq0 (const char *s1, const char *s2, char s20, char s21, char s22, char 
s23, char s24, char s25, char s26, char s27, char s28)
-{
-  if (CASEEQ (s1[0], s20))
-    {
-      if (s20 == 0)
-        return 1;
-      else
-        return strcaseeq1 (s1, s2, s21, s22, s23, s24, s25, s26, s27, s28);
-    }
-  else
-    return 0;
-}
-
-#define STRCASEEQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
-  strcaseeq0 (s1, s2, s20, s21, s22, s23, s24, s25, s26, s27, s28)
-
-#else
-
-#define STRCASEEQ(s1,s2,s20,s21,s22,s23,s24,s25,s26,s27,s28) \
-  (c_strcasecmp (s1, s2) == 0)
-
-#endif
diff --git a/tp/Texinfo/XS/gnulib/lib/c-strncasecmp.c 
b/tp/Texinfo/XS/gnulib/lib/c-strncasecmp.c
deleted file mode 100644
index 4c8b0b6b84..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/c-strncasecmp.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* c-strncasecmp.c -- case insensitive string comparator in C locale
-   Copyright (C) 1998-1999, 2005-2006, 2009-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "c-strcase.h"
-
-#include <limits.h>
-
-#include "c-ctype.h"
-
-int
-c_strncasecmp (const char *s1, const char *s2, size_t n)
-{
-  register const unsigned char *p1 = (const unsigned char *) s1;
-  register const unsigned char *p2 = (const unsigned char *) s2;
-  unsigned char c1, c2;
-
-  if (p1 == p2 || n == 0)
-    return 0;
-
-  do
-    {
-      c1 = c_tolower (*p1);
-      c2 = c_tolower (*p2);
-
-      if (--n == 0 || c1 == '\0')
-        break;
-
-      ++p1;
-      ++p2;
-    }
-  while (c1 == c2);
-
-  if (UCHAR_MAX <= INT_MAX)
-    return c1 - c2;
-  else
-    /* On machines where 'char' and 'int' are types of the same size, the
-       difference of two 'unsigned char' values - including the sign bit -
-       doesn't fit in an 'int'.  */
-    return _GL_CMP (c1, c2);
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/iconv.c b/tp/Texinfo/XS/gnulib/lib/iconv.c
deleted file mode 100644
index 310f4043eb..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/iconv.c
+++ /dev/null
@@ -1,446 +0,0 @@
-/* Character set conversion.
-   Copyright (C) 1999-2001, 2007, 2009-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include <iconv.h>
-
-#include <stddef.h>
-
-#if REPLACE_ICONV_UTF
-# include <errno.h>
-# include <stdint.h>
-# include <stdlib.h>
-# include "unistr.h"
-#endif
-
-#if REPLACE_ICONV_UTF
-
-/* UTF-{16,32}{BE,LE} converters taken from GNU libiconv 1.11.  */
-
-/* Return code if invalid. (xxx_mbtowc) */
-# define RET_ILSEQ      -1
-/* Return code if no bytes were read. (xxx_mbtowc) */
-# define RET_TOOFEW     -2
-
-/* Return code if invalid. (xxx_wctomb) */
-# define RET_ILUNI      -1
-/* Return code if output buffer is too small. (xxx_wctomb, xxx_reset) */
-# define RET_TOOSMALL   -2
-
-/*
- * UTF-16BE
- */
-
-/* Specification: RFC 2781 */
-
-static int
-utf16be_mbtowc (ucs4_t *pwc, const unsigned char *s, size_t n)
-{
-  if (n >= 2)
-    {
-      ucs4_t wc = (s[0] << 8) + s[1];
-      if (wc >= 0xd800 && wc < 0xdc00)
-        {
-          if (n >= 4)
-            {
-              ucs4_t wc2 = (s[2] << 8) + s[3];
-              if (!(wc2 >= 0xdc00 && wc2 < 0xe000))
-                return RET_ILSEQ;
-              *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00);
-              return 4;
-            }
-        }
-      else if (wc >= 0xdc00 && wc < 0xe000)
-        {
-          return RET_ILSEQ;
-        }
-      else
-        {
-          *pwc = wc;
-          return 2;
-        }
-    }
-  return RET_TOOFEW;
-}
-
-static int
-utf16be_wctomb (unsigned char *r, ucs4_t wc, size_t n)
-{
-  if (!(wc >= 0xd800 && wc < 0xe000))
-    {
-      if (wc < 0x10000)
-        {
-          if (n >= 2)
-            {
-              r[0] = (unsigned char) (wc >> 8);
-              r[1] = (unsigned char) wc;
-              return 2;
-            }
-          else
-            return RET_TOOSMALL;
-        }
-      else if (wc < 0x110000)
-        {
-          if (n >= 4)
-            {
-              ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10);
-              ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff);
-              r[0] = (unsigned char) (wc1 >> 8);
-              r[1] = (unsigned char) wc1;
-              r[2] = (unsigned char) (wc2 >> 8);
-              r[3] = (unsigned char) wc2;
-              return 4;
-            }
-          else
-            return RET_TOOSMALL;
-        }
-    }
-  return RET_ILUNI;
-}
-
-/*
- * UTF-16LE
- */
-
-/* Specification: RFC 2781 */
-
-static int
-utf16le_mbtowc (ucs4_t *pwc, const unsigned char *s, size_t n)
-{
-  if (n >= 2)
-    {
-      ucs4_t wc = s[0] + (s[1] << 8);
-      if (wc >= 0xd800 && wc < 0xdc00)
-        {
-          if (n >= 4)
-            {
-              ucs4_t wc2 = s[2] + (s[3] << 8);
-              if (!(wc2 >= 0xdc00 && wc2 < 0xe000))
-                return RET_ILSEQ;
-              *pwc = 0x10000 + ((wc - 0xd800) << 10) + (wc2 - 0xdc00);
-              return 4;
-            }
-        }
-      else if (wc >= 0xdc00 && wc < 0xe000)
-        {
-          return RET_ILSEQ;
-        }
-      else
-        {
-          *pwc = wc;
-          return 2;
-        }
-    }
-  return RET_TOOFEW;
-}
-
-static int
-utf16le_wctomb (unsigned char *r, ucs4_t wc, size_t n)
-{
-  if (!(wc >= 0xd800 && wc < 0xe000))
-    {
-      if (wc < 0x10000)
-        {
-          if (n >= 2)
-            {
-              r[0] = (unsigned char) wc;
-              r[1] = (unsigned char) (wc >> 8);
-              return 2;
-            }
-          else
-            return RET_TOOSMALL;
-        }
-      else if (wc < 0x110000)
-        {
-          if (n >= 4)
-            {
-              ucs4_t wc1 = 0xd800 + ((wc - 0x10000) >> 10);
-              ucs4_t wc2 = 0xdc00 + ((wc - 0x10000) & 0x3ff);
-              r[0] = (unsigned char) wc1;
-              r[1] = (unsigned char) (wc1 >> 8);
-              r[2] = (unsigned char) wc2;
-              r[3] = (unsigned char) (wc2 >> 8);
-              return 4;
-            }
-          else
-            return RET_TOOSMALL;
-        }
-    }
-  return RET_ILUNI;
-}
-
-/*
- * UTF-32BE
- */
-
-/* Specification: Unicode 3.1 Standard Annex #19 */
-
-static int
-utf32be_mbtowc (ucs4_t *pwc, const unsigned char *s, size_t n)
-{
-  if (n >= 4)
-    {
-      ucs4_t wc = (s[0] << 24) + (s[1] << 16) + (s[2] << 8) + s[3];
-      if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000))
-        {
-          *pwc = wc;
-          return 4;
-        }
-      else
-        return RET_ILSEQ;
-    }
-  return RET_TOOFEW;
-}
-
-static int
-utf32be_wctomb (unsigned char *r, ucs4_t wc, size_t n)
-{
-  if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000))
-    {
-      if (n >= 4)
-        {
-          r[0] = 0;
-          r[1] = (unsigned char) (wc >> 16);
-          r[2] = (unsigned char) (wc >> 8);
-          r[3] = (unsigned char) wc;
-          return 4;
-        }
-      else
-        return RET_TOOSMALL;
-    }
-  return RET_ILUNI;
-}
-
-/*
- * UTF-32LE
- */
-
-/* Specification: Unicode 3.1 Standard Annex #19 */
-
-static int
-utf32le_mbtowc (ucs4_t *pwc, const unsigned char *s, size_t n)
-{
-  if (n >= 4)
-    {
-      ucs4_t wc = s[0] + (s[1] << 8) + (s[2] << 16) + (s[3] << 24);
-      if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000))
-        {
-          *pwc = wc;
-          return 4;
-        }
-      else
-        return RET_ILSEQ;
-    }
-  return RET_TOOFEW;
-}
-
-static int
-utf32le_wctomb (unsigned char *r, ucs4_t wc, size_t n)
-{
-  if (wc < 0x110000 && !(wc >= 0xd800 && wc < 0xe000))
-    {
-      if (n >= 4)
-        {
-          r[0] = (unsigned char) wc;
-          r[1] = (unsigned char) (wc >> 8);
-          r[2] = (unsigned char) (wc >> 16);
-          r[3] = 0;
-          return 4;
-        }
-      else
-        return RET_TOOSMALL;
-    }
-  return RET_ILUNI;
-}
-
-#endif
-
-size_t
-rpl_iconv (iconv_t cd,
-           ICONV_CONST char **inbuf, size_t *inbytesleft,
-           char **outbuf, size_t *outbytesleft)
-#undef iconv
-{
-#if REPLACE_ICONV_UTF
-  switch ((uintptr_t) cd)
-    {
-      {
-        int (*xxx_wctomb) (unsigned char *, ucs4_t, size_t);
-
-        case (uintptr_t) _ICONV_UTF8_UTF16BE:
-          xxx_wctomb = utf16be_wctomb;
-          goto loop_from_utf8;
-        case (uintptr_t) _ICONV_UTF8_UTF16LE:
-          xxx_wctomb = utf16le_wctomb;
-          goto loop_from_utf8;
-        case (uintptr_t) _ICONV_UTF8_UTF32BE:
-          xxx_wctomb = utf32be_wctomb;
-          goto loop_from_utf8;
-        case (uintptr_t) _ICONV_UTF8_UTF32LE:
-          xxx_wctomb = utf32le_wctomb;
-          goto loop_from_utf8;
-
-       loop_from_utf8:
-        if (inbuf == NULL || *inbuf == NULL)
-          return 0;
-        {
-          ICONV_CONST char *inptr = *inbuf;
-          size_t inleft = *inbytesleft;
-          char *outptr = *outbuf;
-          size_t outleft = *outbytesleft;
-          size_t res = 0;
-          while (inleft > 0)
-            {
-              ucs4_t uc;
-              int m = u8_mbtoucr (&uc, (const uint8_t *) inptr, inleft);
-              if (m <= 0)
-                {
-                  if (m == -1)
-                    {
-                      errno = EILSEQ;
-                      res = (size_t)(-1);
-                      break;
-                    }
-                  if (m == -2)
-                    {
-                      errno = EINVAL;
-                      res = (size_t)(-1);
-                      break;
-                    }
-                  abort ();
-                }
-              else
-                {
-                  int n = xxx_wctomb ((uint8_t *) outptr, uc, outleft);
-                  if (n < 0)
-                    {
-                      if (n == RET_ILUNI)
-                        {
-                          errno = EILSEQ;
-                          res = (size_t)(-1);
-                          break;
-                        }
-                      if (n == RET_TOOSMALL)
-                        {
-                          errno = E2BIG;
-                          res = (size_t)(-1);
-                          break;
-                        }
-                      abort ();
-                    }
-                  else
-                    {
-                      inptr += m;
-                      inleft -= m;
-                      outptr += n;
-                      outleft -= n;
-                    }
-                }
-            }
-          *inbuf = inptr;
-          *inbytesleft = inleft;
-          *outbuf = outptr;
-          *outbytesleft = outleft;
-          return res;
-        }
-      }
-
-      {
-        int (*xxx_mbtowc) (ucs4_t *, const unsigned char *, size_t);
-
-        case (uintptr_t) _ICONV_UTF16BE_UTF8:
-          xxx_mbtowc = utf16be_mbtowc;
-          goto loop_to_utf8;
-        case (uintptr_t) _ICONV_UTF16LE_UTF8:
-          xxx_mbtowc = utf16le_mbtowc;
-          goto loop_to_utf8;
-        case (uintptr_t) _ICONV_UTF32BE_UTF8:
-          xxx_mbtowc = utf32be_mbtowc;
-          goto loop_to_utf8;
-        case (uintptr_t) _ICONV_UTF32LE_UTF8:
-          xxx_mbtowc = utf32le_mbtowc;
-          goto loop_to_utf8;
-
-       loop_to_utf8:
-        if (inbuf == NULL || *inbuf == NULL)
-          return 0;
-        {
-          ICONV_CONST char *inptr = *inbuf;
-          size_t inleft = *inbytesleft;
-          char *outptr = *outbuf;
-          size_t outleft = *outbytesleft;
-          size_t res = 0;
-          while (inleft > 0)
-            {
-              ucs4_t uc;
-              int m = xxx_mbtowc (&uc, (const uint8_t *) inptr, inleft);
-              if (m <= 0)
-                {
-                  if (m == RET_ILSEQ)
-                    {
-                      errno = EILSEQ;
-                      res = (size_t)(-1);
-                      break;
-                    }
-                  if (m == RET_TOOFEW)
-                    {
-                      errno = EINVAL;
-                      res = (size_t)(-1);
-                      break;
-                    }
-                  abort ();
-                }
-              else
-                {
-                  int n = u8_uctomb ((uint8_t *) outptr, uc, outleft);
-                  if (n < 0)
-                    {
-                      if (n == -1)
-                        {
-                          errno = EILSEQ;
-                          res = (size_t)(-1);
-                          break;
-                        }
-                      if (n == -2)
-                        {
-                          errno = E2BIG;
-                          res = (size_t)(-1);
-                          break;
-                        }
-                      abort ();
-                    }
-                  else
-                    {
-                      inptr += m;
-                      inleft -= m;
-                      outptr += n;
-                      outleft -= n;
-                    }
-                }
-            }
-          *inbuf = inptr;
-          *inbytesleft = inleft;
-          *outbuf = outptr;
-          *outbytesleft = outleft;
-          return res;
-        }
-      }
-    }
-#endif
-  return iconv (cd, inbuf, inbytesleft, outbuf, outbytesleft);
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/iconv.in.h 
b/tp/Texinfo/XS/gnulib/lib/iconv.in.h
deleted file mode 100644
index 9e41e4174d..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/iconv.in.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/* A GNU-like <iconv.h>.
-
-   Copyright (C) 2007-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#ifndef _@GUARD_PREFIX@_ICONV_H
-
-#if __GNUC__ >= 3
-@PRAGMA_SYSTEM_HEADER@
-#endif
-@PRAGMA_COLUMNS@
-
-/* The include_next requires a split double-inclusion guard.  */
-#@INCLUDE_NEXT@ @NEXT_ICONV_H@
-
-#ifndef _@GUARD_PREFIX@_ICONV_H
-#define _@GUARD_PREFIX@_ICONV_H
-
-/* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
-
-/* The definition of _GL_ARG_NONNULL is copied here.  */
-
-/* The definition of _GL_WARN_ON_USE is copied here.  */
-
-
-#if @GNULIB_ICONV@
-# if @REPLACE_ICONV_OPEN@
-/* An iconv_open wrapper that supports the IANA standardized encoding names
-   ("ISO-8859-1" etc.) as far as possible.  */
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define iconv_open rpl_iconv_open
-#  endif
-_GL_FUNCDECL_RPL (iconv_open, iconv_t,
-                  (const char *tocode, const char *fromcode)
-                  _GL_ARG_NONNULL ((1, 2)));
-_GL_CXXALIAS_RPL (iconv_open, iconv_t,
-                  (const char *tocode, const char *fromcode));
-# else
-_GL_CXXALIAS_SYS (iconv_open, iconv_t,
-                  (const char *tocode, const char *fromcode));
-# endif
-_GL_CXXALIASWARN (iconv_open);
-#elif defined GNULIB_POSIXCHECK
-# undef iconv_open
-# if HAVE_RAW_DECL_ICONV_OPEN
-_GL_WARN_ON_USE (iconv_open, "iconv_open is not working correctly everywhere - 
"
-                 "use gnulib module iconv for portability");
-# endif
-#endif
-
-#if @REPLACE_ICONV_UTF@
-/* Special constants for supporting UTF-{16,32}{BE,LE} encodings.
-   Not public.  */
-# define _ICONV_UTF8_UTF16BE (iconv_t)(-161)
-# define _ICONV_UTF8_UTF16LE (iconv_t)(-162)
-# define _ICONV_UTF8_UTF32BE (iconv_t)(-163)
-# define _ICONV_UTF8_UTF32LE (iconv_t)(-164)
-# define _ICONV_UTF16BE_UTF8 (iconv_t)(-165)
-# define _ICONV_UTF16LE_UTF8 (iconv_t)(-166)
-# define _ICONV_UTF32BE_UTF8 (iconv_t)(-167)
-# define _ICONV_UTF32LE_UTF8 (iconv_t)(-168)
-#endif
-
-#if @GNULIB_ICONV@
-# if @REPLACE_ICONV@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define iconv rpl_iconv
-#  endif
-_GL_FUNCDECL_RPL (iconv, size_t,
-                  (iconv_t cd,
-                   @ICONV_CONST@ char **restrict inbuf,
-                   size_t *restrict inbytesleft,
-                   char **restrict outbuf, size_t *restrict outbytesleft));
-_GL_CXXALIAS_RPL (iconv, size_t,
-                  (iconv_t cd,
-                   @ICONV_CONST@ char **restrict inbuf,
-                   size_t *restrict inbytesleft,
-                   char **restrict outbuf, size_t *restrict outbytesleft));
-# else
-/* Need to cast, because on some versions of Solaris, ICONV_CONST does
-   not have the right value for C++.  */
-_GL_CXXALIAS_SYS_CAST (iconv, size_t,
-                       (iconv_t cd,
-                        @ICONV_CONST@ char **restrict inbuf,
-                        size_t *restrict inbytesleft,
-                        char **restrict outbuf, size_t *restrict 
outbytesleft));
-# endif
-_GL_CXXALIASWARN (iconv);
-# ifndef ICONV_CONST
-#  define ICONV_CONST @ICONV_CONST@
-# endif
-#elif defined GNULIB_POSIXCHECK
-# undef iconv
-# if HAVE_RAW_DECL_ICONV
-_GL_WARN_ON_USE (iconv, "iconv is not working correctly everywhere - "
-                 "use gnulib module iconv for portability");
-# endif
-#endif
-
-#if @GNULIB_ICONV@
-# if @REPLACE_ICONV@
-#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
-#   define iconv_close rpl_iconv_close
-#  endif
-_GL_FUNCDECL_RPL (iconv_close, int, (iconv_t cd));
-_GL_CXXALIAS_RPL (iconv_close, int, (iconv_t cd));
-# else
-_GL_CXXALIAS_SYS (iconv_close, int, (iconv_t cd));
-# endif
-_GL_CXXALIASWARN (iconv_close);
-#endif
-
-
-#endif /* _@GUARD_PREFIX@_ICONV_H */
-#endif /* _@GUARD_PREFIX@_ICONV_H */
diff --git a/tp/Texinfo/XS/gnulib/lib/iconv_close.c 
b/tp/Texinfo/XS/gnulib/lib/iconv_close.c
deleted file mode 100644
index 692cbb84f7..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/iconv_close.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Character set conversion.
-   Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include <iconv.h>
-
-#include <stdint.h>
-
-int
-rpl_iconv_close (iconv_t cd)
-#undef iconv_close
-{
-#if REPLACE_ICONV_UTF
-  switch ((uintptr_t) cd)
-    {
-    case (uintptr_t) _ICONV_UTF8_UTF16BE:
-    case (uintptr_t) _ICONV_UTF8_UTF16LE:
-    case (uintptr_t) _ICONV_UTF8_UTF32BE:
-    case (uintptr_t) _ICONV_UTF8_UTF32LE:
-    case (uintptr_t) _ICONV_UTF16BE_UTF8:
-    case (uintptr_t) _ICONV_UTF16LE_UTF8:
-    case (uintptr_t) _ICONV_UTF32BE_UTF8:
-    case (uintptr_t) _ICONV_UTF32LE_UTF8:
-      return 0;
-    }
-#endif
-  return iconv_close (cd);
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/iconv_open-aix.gperf 
b/tp/Texinfo/XS/gnulib/lib/iconv_open-aix.gperf
deleted file mode 100644
index 55cccd0320..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/iconv_open-aix.gperf
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Character set conversion.
-   Copyright (C) 2007, 2020-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-struct mapping { int standard_name; const char vendor_name[10 + 1]; };
-%struct-type
-%language=ANSI-C
-%define slot-name standard_name
-%define hash-function-name mapping_hash
-%define lookup-function-name mapping_lookup
-%readonly-tables
-%global-table
-%define word-array-name mappings
-%pic
-%%
-# On AIX 5.1, look in /usr/lib/nls/loc/uconvTable.
-ISO-8859-1, "ISO8859-1"
-ISO-8859-2, "ISO8859-2"
-ISO-8859-3, "ISO8859-3"
-ISO-8859-4, "ISO8859-4"
-ISO-8859-5, "ISO8859-5"
-ISO-8859-6, "ISO8859-6"
-ISO-8859-7, "ISO8859-7"
-ISO-8859-8, "ISO8859-8"
-ISO-8859-9, "ISO8859-9"
-ISO-8859-15, "ISO8859-15"
-CP437, "IBM-437"
-CP850, "IBM-850"
-CP852, "IBM-852"
-CP856, "IBM-856"
-CP857, "IBM-857"
-CP861, "IBM-861"
-CP865, "IBM-865"
-CP869, "IBM-869"
-ISO-8859-13, "IBM-921"
-CP922, "IBM-922"
-CP932, "IBM-932"
-CP943, "IBM-943"
-CP1046, "IBM-1046"
-CP1124, "IBM-1124"
-CP1125, "IBM-1125"
-CP1129, "IBM-1129"
-CP1252, "IBM-1252"
-GB2312, "IBM-eucCN"
-EUC-JP, "IBM-eucJP"
-EUC-KR, "IBM-eucKR"
-EUC-TW, "IBM-eucTW"
-BIG5, "big5"
diff --git a/tp/Texinfo/XS/gnulib/lib/iconv_open-hpux.gperf 
b/tp/Texinfo/XS/gnulib/lib/iconv_open-hpux.gperf
deleted file mode 100644
index ddf51e30fc..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/iconv_open-hpux.gperf
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Character set conversion.
-   Copyright (C) 2007, 2020-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-struct mapping { int standard_name; const char vendor_name[9 + 1]; };
-%struct-type
-%language=ANSI-C
-%define slot-name standard_name
-%define hash-function-name mapping_hash
-%define lookup-function-name mapping_lookup
-%readonly-tables
-%global-table
-%define word-array-name mappings
-%pic
-%%
-# On HP-UX 11.11, look in /usr/lib/nls/iconv.
-ISO-8859-1, "iso88591"
-ISO-8859-2, "iso88592"
-ISO-8859-5, "iso88595"
-ISO-8859-6, "iso88596"
-ISO-8859-7, "iso88597"
-ISO-8859-8, "iso88598"
-ISO-8859-9, "iso88599"
-ISO-8859-15, "iso885915"
-CP437, "cp437"
-CP775, "cp775"
-CP850, "cp850"
-CP852, "cp852"
-CP855, "cp855"
-CP857, "cp857"
-CP861, "cp861"
-CP862, "cp862"
-CP864, "cp864"
-CP865, "cp865"
-CP866, "cp866"
-CP869, "cp869"
-CP874, "cp874"
-CP1250, "cp1250"
-CP1251, "cp1251"
-CP1252, "cp1252"
-CP1253, "cp1253"
-CP1254, "cp1254"
-CP1255, "cp1255"
-CP1256, "cp1256"
-CP1257, "cp1257"
-CP1258, "cp1258"
-HP-ROMAN8, "roman8"
-HP-ARABIC8, "arabic8"
-HP-GREEK8, "greek8"
-HP-HEBREW8, "hebrew8"
-HP-TURKISH8, "turkish8"
-HP-KANA8, "kana8"
-TIS-620, "tis620"
-GB2312, "hp15CN"
-EUC-JP, "eucJP"
-EUC-KR, "eucKR"
-EUC-TW, "eucTW"
-BIG5, "big5"
-SHIFT_JIS, "sjis"
-UTF-8, "utf8"
diff --git a/tp/Texinfo/XS/gnulib/lib/iconv_open-irix.gperf 
b/tp/Texinfo/XS/gnulib/lib/iconv_open-irix.gperf
deleted file mode 100644
index cd0ad544af..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/iconv_open-irix.gperf
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Character set conversion.
-   Copyright (C) 2007, 2020-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-struct mapping { int standard_name; const char vendor_name[10 + 1]; };
-%struct-type
-%language=ANSI-C
-%define slot-name standard_name
-%define hash-function-name mapping_hash
-%define lookup-function-name mapping_lookup
-%readonly-tables
-%global-table
-%define word-array-name mappings
-%pic
-%%
-# On IRIX 6.5, look in /usr/lib/iconv and /usr/lib/international/encodings.
-ISO-8859-1, "ISO8859-1"
-ISO-8859-2, "ISO8859-2"
-ISO-8859-3, "ISO8859-3"
-ISO-8859-4, "ISO8859-4"
-ISO-8859-5, "ISO8859-5"
-ISO-8859-6, "ISO8859-6"
-ISO-8859-7, "ISO8859-7"
-ISO-8859-8, "ISO8859-8"
-ISO-8859-9, "ISO8859-9"
-ISO-8859-15, "ISO8859-15"
-KOI8-R, "KOI8"
-CP855, "DOS855"
-CP1251, "WIN1251"
-GB2312, "eucCN"
-EUC-JP, "eucJP"
-EUC-KR, "eucKR"
-EUC-TW, "eucTW"
-SHIFT_JIS, "sjis"
-TIS-620, "TIS620"
diff --git a/tp/Texinfo/XS/gnulib/lib/iconv_open-osf.gperf 
b/tp/Texinfo/XS/gnulib/lib/iconv_open-osf.gperf
deleted file mode 100644
index 417f7e3ec4..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/iconv_open-osf.gperf
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Character set conversion.
-   Copyright (C) 2007, 2020-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-struct mapping { int standard_name; const char vendor_name[10 + 1]; };
-%struct-type
-%language=ANSI-C
-%define slot-name standard_name
-%define hash-function-name mapping_hash
-%define lookup-function-name mapping_lookup
-%readonly-tables
-%global-table
-%define word-array-name mappings
-%pic
-%%
-# On OSF/1 5.1, look in /usr/lib/nls/loc/iconv.
-ISO-8859-1, "ISO8859-1"
-ISO-8859-2, "ISO8859-2"
-ISO-8859-3, "ISO8859-3"
-ISO-8859-4, "ISO8859-4"
-ISO-8859-5, "ISO8859-5"
-ISO-8859-6, "ISO8859-6"
-ISO-8859-7, "ISO8859-7"
-ISO-8859-8, "ISO8859-8"
-ISO-8859-9, "ISO8859-9"
-ISO-8859-15, "ISO8859-15"
-CP437, "cp437"
-CP775, "cp775"
-CP850, "cp850"
-CP852, "cp852"
-CP855, "cp855"
-CP857, "cp857"
-CP861, "cp861"
-CP862, "cp862"
-CP865, "cp865"
-CP866, "cp866"
-CP869, "cp869"
-CP874, "cp874"
-CP949, "KSC5601"
-CP1250, "cp1250"
-CP1251, "cp1251"
-CP1252, "cp1252"
-CP1253, "cp1253"
-CP1254, "cp1254"
-CP1255, "cp1255"
-CP1256, "cp1256"
-CP1257, "cp1257"
-CP1258, "cp1258"
-EUC-JP, "eucJP"
-EUC-KR, "eucKR"
-EUC-TW, "eucTW"
-BIG5, "big5"
-SHIFT_JIS, "SJIS"
-TIS-620, "TACTIS"
diff --git a/tp/Texinfo/XS/gnulib/lib/iconv_open-solaris.gperf 
b/tp/Texinfo/XS/gnulib/lib/iconv_open-solaris.gperf
deleted file mode 100644
index d5411de0c1..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/iconv_open-solaris.gperf
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Character set conversion.
-   Copyright (C) 2007, 2009, 2020-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-struct mapping { int standard_name; const char vendor_name[10 + 1]; };
-%struct-type
-%language=ANSI-C
-%define slot-name standard_name
-%define hash-function-name mapping_hash
-%define lookup-function-name mapping_lookup
-%readonly-tables
-%global-table
-%define word-array-name mappings
-%pic
-%%
-# On Solaris 10, look in the "iconv -l" output. Some aliases are advertised but
-# not actually supported by the iconv() function and by the 'iconv' program.
-# For example:
-#   $ echo abc | iconv -f 646 -t ISO-8859-1
-#   Not supported 646 to ISO-8859-1
-#   $ echo abc | iconv -f 646 -t ISO8859-1
-$   abc
-ASCII, "646"
-ISO-8859-1, "ISO8859-1"
-ISO-8859-2, "ISO8859-2"
-ISO-8859-3, "ISO8859-3"
-ISO-8859-4, "ISO8859-4"
-ISO-8859-5, "ISO8859-5"
-ISO-8859-6, "ISO8859-6"
-ISO-8859-7, "ISO8859-7"
-ISO-8859-8, "ISO8859-8"
-ISO-8859-9, "ISO8859-9"
-ISO-8859-15, "ISO8859-15"
-CP1251, "ansi-1251"
diff --git a/tp/Texinfo/XS/gnulib/lib/iconv_open-zos.gperf 
b/tp/Texinfo/XS/gnulib/lib/iconv_open-zos.gperf
deleted file mode 100644
index a7fc3dc7c1..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/iconv_open-zos.gperf
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Character set conversion.
-   Copyright (C) 2019-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-struct mapping { int standard_name; const char vendor_name[10 + 1]; };
-%struct-type
-%language=ANSI-C
-%define slot-name standard_name
-%define hash-function-name mapping_hash
-%define lookup-function-name mapping_lookup
-%readonly-tables
-%global-table
-%define word-array-name mappings
-%pic
-%%
-ASCII, "00367"
-ISO-8859-1, "ISO8859-1"
-ISO-8859-2, "ISO8859-2"
-ISO-8859-3, "00913"
-ISO-8859-4, "ISO8859-4"
-ISO-8859-5, "ISO8859-5"
-ISO-8859-6, "ISO8859-6"
-ISO-8859-7, "ISO8859-7"
-ISO-8859-8, "05012"
-ISO-8859-9, "ISO8859-9"
-ISO-8859-13, "ISO8859-13"
-ISO-8859-15, "ISO8859-15"
-KOI8-R, "00878"
-KOI8-U, "01168"
-CP437, "IBM-437"
-CP775, "00775"
-CP850, "09042"
-CP852, "IBM-852"
-CP855, "13143"
-CP856, "IBM-856"
-CP857, "00857"
-CP861, "IBM-861"
-CP862, "IBM-862"
-CP864, "IBM-864"
-CP865, "00865"
-CP866, "04962"
-CP869, "IBM-869"
-CP874, "TIS-620"
-CP922, "IBM-922"
-CP932, "IBM-943"
-CP943, "IBM-943"
-CP949, "IBM-1363"
-CP1046, "IBM-1046"
-CP1124, "IBM-1124"
-CP1125, "IBM-1125"
-CP1129, "01129"
-CP1131, "01131"
-CP1250, "IBM-5346"
-CP1251, "IBM-5347"
-CP1252, "IBM-5348"
-CP1253, "IBM-5349"
-CP1254, "IBM-5350"
-CP1255, "09447"
-CP1256, "09448"
-CP1257, "09449"
-GB2312, "IBM-eucCN"
-EUC-JP, "01350"
-EUC-KR, "IBM-eucKR"
-GBK, "IBM-1386"
diff --git a/tp/Texinfo/XS/gnulib/lib/iconv_open.c 
b/tp/Texinfo/XS/gnulib/lib/iconv_open.c
deleted file mode 100644
index 2be02eff9e..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/iconv_open.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/* Character set conversion.
-   Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include <iconv.h>
-
-#include <errno.h>
-#include <string.h>
-#include "c-ctype.h"
-#include "c-strcase.h"
-
-#define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
-
-/* Namespace cleanliness.  */
-#define mapping_lookup rpl_iconv_open_mapping_lookup
-
-/* The macro ICONV_FLAVOR is defined to one of these or undefined.  */
-
-#define ICONV_FLAVOR_AIX "iconv_open-aix.h"
-#define ICONV_FLAVOR_HPUX "iconv_open-hpux.h"
-#define ICONV_FLAVOR_IRIX "iconv_open-irix.h"
-#define ICONV_FLAVOR_OSF "iconv_open-osf.h"
-#define ICONV_FLAVOR_SOLARIS "iconv_open-solaris.h"
-#define ICONV_FLAVOR_ZOS "iconv_open-zos.h"
-
-#ifdef ICONV_FLAVOR
-# include ICONV_FLAVOR
-#endif
-
-iconv_t
-rpl_iconv_open (const char *tocode, const char *fromcode)
-#undef iconv_open
-{
-  char fromcode_upper[32];
-  char tocode_upper[32];
-  char *fromcode_upper_end;
-  char *tocode_upper_end;
-
-#if REPLACE_ICONV_UTF
-  /* Special handling of conversion between UTF-8 and UTF-{16,32}{BE,LE}.
-     Do this here, before calling the real iconv_open(), because  OSF/1 5.1
-     iconv() to these encoding inserts a BOM, which is wrong.
-     We do not need to handle conversion between arbitrary encodings and
-     UTF-{16,32}{BE,LE}, because the 'striconveh' module implements two-step
-     conversion through UTF-8.
-     The _ICONV_* constants are chosen to be disjoint from any iconv_t
-     returned by the system's iconv_open() functions.  Recall that iconv_t
-     is a scalar type.  */
-  if (c_toupper (fromcode[0]) == 'U'
-      && c_toupper (fromcode[1]) == 'T'
-      && c_toupper (fromcode[2]) == 'F'
-      && fromcode[3] == '-')
-    {
-      if (c_toupper (tocode[0]) == 'U'
-          && c_toupper (tocode[1]) == 'T'
-          && c_toupper (tocode[2]) == 'F'
-          && tocode[3] == '-')
-        {
-          if (strcmp (fromcode + 4, "8") == 0)
-            {
-              if (c_strcasecmp (tocode + 4, "16BE") == 0)
-                return _ICONV_UTF8_UTF16BE;
-              if (c_strcasecmp (tocode + 4, "16LE") == 0)
-                return _ICONV_UTF8_UTF16LE;
-              if (c_strcasecmp (tocode + 4, "32BE") == 0)
-                return _ICONV_UTF8_UTF32BE;
-              if (c_strcasecmp (tocode + 4, "32LE") == 0)
-                return _ICONV_UTF8_UTF32LE;
-            }
-          else if (strcmp (tocode + 4, "8") == 0)
-            {
-              if (c_strcasecmp (fromcode + 4, "16BE") == 0)
-                return _ICONV_UTF16BE_UTF8;
-              if (c_strcasecmp (fromcode + 4, "16LE") == 0)
-                return _ICONV_UTF16LE_UTF8;
-              if (c_strcasecmp (fromcode + 4, "32BE") == 0)
-                return _ICONV_UTF32BE_UTF8;
-              if (c_strcasecmp (fromcode + 4, "32LE") == 0)
-                return _ICONV_UTF32LE_UTF8;
-            }
-        }
-    }
-#endif
-
-  /* Do *not* add special support for 8-bit encodings like ASCII or ISO-8859-1
-     here.  This would lead to programs that work in some locales (such as the
-     "C" or "en_US" locales) but do not work in East Asian locales.  It is
-     better if programmers make their programs depend on GNU libiconv (except
-     on glibc systems), e.g. by using the AM_ICONV macro and documenting the
-     dependency in an INSTALL or DEPENDENCIES file.  */
-
-  /* Try with the original names first.
-     This covers the case when fromcode or tocode is a lowercase encoding name
-     that is understood by the system's iconv_open but not listed in our
-     mappings table.  */
-  {
-    iconv_t cd = iconv_open (tocode, fromcode);
-    if (cd != (iconv_t)(-1))
-      return cd;
-  }
-
-  /* Convert the encodings to upper case, because
-       1. in the arguments of iconv_open() on AIX, HP-UX, and OSF/1 the case
-          matters,
-       2. it makes searching in the table faster.  */
-  {
-    const char *p = fromcode;
-    char *q = fromcode_upper;
-    while ((*q = c_toupper (*p)) != '\0')
-      {
-        p++;
-        q++;
-        if (q == &fromcode_upper[SIZEOF (fromcode_upper)])
-          {
-            errno = EINVAL;
-            return (iconv_t)(-1);
-          }
-      }
-    fromcode_upper_end = q;
-  }
-
-  {
-    const char *p = tocode;
-    char *q = tocode_upper;
-    while ((*q = c_toupper (*p)) != '\0')
-      {
-        p++;
-        q++;
-        if (q == &tocode_upper[SIZEOF (tocode_upper)])
-          {
-            errno = EINVAL;
-            return (iconv_t)(-1);
-          }
-      }
-    tocode_upper_end = q;
-  }
-
-#ifdef ICONV_FLAVOR
-  /* Apply the mappings.  */
-  {
-    const struct mapping *m =
-      mapping_lookup (fromcode_upper, fromcode_upper_end - fromcode_upper);
-
-    fromcode = (m != NULL ? m->vendor_name : fromcode_upper);
-  }
-  {
-    const struct mapping *m =
-      mapping_lookup (tocode_upper, tocode_upper_end - tocode_upper);
-
-    tocode = (m != NULL ? m->vendor_name : tocode_upper);
-  }
-#else
-  fromcode = fromcode_upper;
-  tocode = tocode_upper;
-#endif
-
-  return iconv_open (tocode, fromcode);
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/iconveh.h 
b/tp/Texinfo/XS/gnulib/lib/iconveh.h
deleted file mode 100644
index c607373411..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/iconveh.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Character set conversion handler type.
-   Copyright (C) 2001-2007, 2009-2024 Free Software Foundation, Inc.
-   Written by Bruno Haible.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#ifndef _ICONVEH_H
-#define _ICONVEH_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Handling of unconvertible characters.  */
-enum iconv_ilseq_handler
-{
-  iconveh_error,                /* return and set errno = EILSEQ */
-  iconveh_question_mark,        /* use one '?' per unconvertible character */
-  iconveh_escape_sequence,      /* use escape sequence \uxxxx or \Uxxxxxxxx */
-  iconveh_replacement_character /* use one U+FFFD per unconvertible character
-                                   if that fits in the target encoding,
-                                   otherwise one '?' */
-};
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _ICONVEH_H */
diff --git a/tp/Texinfo/XS/gnulib/lib/limits.in.h 
b/tp/Texinfo/XS/gnulib/lib/limits.in.h
index 236fc58e52..c65eb4c1cf 100644
--- a/tp/Texinfo/XS/gnulib/lib/limits.in.h
+++ b/tp/Texinfo/XS/gnulib/lib/limits.in.h
@@ -130,7 +130,7 @@
 #  define BOOL_WIDTH 1
 #  define BOOL_MAX 1
 # elif ! defined BOOL_MAX
-#  define BOOL_MAX ((((1U << (BOOL_WIDTH - 1)) - 1) << 1) + 1)
+#  define BOOL_MAX 1
 # endif
 #endif
 
diff --git a/tp/Texinfo/XS/gnulib/lib/striconveh.c 
b/tp/Texinfo/XS/gnulib/lib/striconveh.c
deleted file mode 100644
index bf4a2e7b54..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/striconveh.c
+++ /dev/null
@@ -1,1235 +0,0 @@
-/* Character set conversion with error handling.
-   Copyright (C) 2001-2024 Free Software Foundation, Inc.
-   Written by Bruno Haible and Simon Josefsson.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "striconveh.h"
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if HAVE_ICONV
-# include <iconv.h>
-# include "unistr.h"
-#endif
-
-#include "c-strcase.h"
-#include "c-strcaseeq.h"
-
-#ifndef SIZE_MAX
-# define SIZE_MAX ((size_t) -1)
-#endif
-
-
-#if HAVE_ICONV
-
-/* The caller must provide an iconveh_t, not just an iconv_t, because when a
-   conversion error occurs, we may have to determine the Unicode representation
-   of the inconvertible character.  */
-
-int
-iconveh_open (const char *to_codeset, const char *from_codeset, iconveh_t *cdp)
-{
-  iconv_t cd;
-  iconv_t cd1;
-  iconv_t cd2;
-
-  /* Avoid glibc-2.1 bug with EUC-KR.  */
-# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \
-     && !defined _LIBICONV_VERSION
-  if (c_strcasecmp (from_codeset, "EUC-KR") == 0
-      || c_strcasecmp (to_codeset, "EUC-KR") == 0)
-    {
-      errno = EINVAL;
-      return -1;
-    }
-# endif
-
-  cd = iconv_open (to_codeset, from_codeset);
-
-  if (STRCASEEQ (from_codeset, "UTF-8", 'U','T','F','-','8',0,0,0,0))
-    cd1 = (iconv_t)(-1);
-  else
-    {
-      cd1 = iconv_open ("UTF-8", from_codeset);
-      if (cd1 == (iconv_t)(-1))
-        {
-          int saved_errno = errno;
-          if (cd != (iconv_t)(-1))
-            iconv_close (cd);
-          errno = saved_errno;
-          return -1;
-        }
-    }
-
-  if (STRCASEEQ (to_codeset, "UTF-8", 'U','T','F','-','8',0,0,0,0)
-# if (((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2) \
-      && !defined __UCLIBC__) \
-     || _LIBICONV_VERSION >= 0x0105
-      || c_strcasecmp (to_codeset, "UTF-8//TRANSLIT") == 0
-# endif
-     )
-    cd2 = (iconv_t)(-1);
-  else
-    {
-      cd2 = iconv_open (to_codeset, "UTF-8");
-      if (cd2 == (iconv_t)(-1))
-        {
-          int saved_errno = errno;
-          if (cd1 != (iconv_t)(-1))
-            iconv_close (cd1);
-          if (cd != (iconv_t)(-1))
-            iconv_close (cd);
-          errno = saved_errno;
-          return -1;
-        }
-    }
-
-  cdp->cd = cd;
-  cdp->cd1 = cd1;
-  cdp->cd2 = cd2;
-  return 0;
-}
-
-int
-iconveh_close (const iconveh_t *cd)
-{
-  if (cd->cd2 != (iconv_t)(-1) && iconv_close (cd->cd2) < 0)
-    {
-      /* Return -1, but preserve the errno from iconv_close.  */
-      int saved_errno = errno;
-      if (cd->cd1 != (iconv_t)(-1))
-        iconv_close (cd->cd1);
-      if (cd->cd != (iconv_t)(-1))
-        iconv_close (cd->cd);
-      errno = saved_errno;
-      return -1;
-    }
-  if (cd->cd1 != (iconv_t)(-1) && iconv_close (cd->cd1) < 0)
-    {
-      /* Return -1, but preserve the errno from iconv_close.  */
-      int saved_errno = errno;
-      if (cd->cd != (iconv_t)(-1))
-        iconv_close (cd->cd);
-      errno = saved_errno;
-      return -1;
-    }
-  if (cd->cd != (iconv_t)(-1) && iconv_close (cd->cd) < 0)
-    return -1;
-  return 0;
-}
-
-/* iconv_carefully is like iconv, except that it stops as soon as it encounters
-   a conversion error, and it returns in *INCREMENTED a boolean telling whether
-   it has incremented the input pointers past the error location.  */
-# if !defined _LIBICONV_VERSION && !(defined __GLIBC__ && !defined __UCLIBC__)
-/* Irix iconv() inserts a NUL byte if it cannot convert.
-   NetBSD iconv() inserts a question mark if it cannot convert.
-   Only GNU libiconv and GNU libc are known to prefer to fail rather
-   than doing a lossy conversion.  */
-static size_t
-iconv_carefully (iconv_t cd,
-                 const char **inbuf, size_t *inbytesleft,
-                 char **outbuf, size_t *outbytesleft,
-                 bool *incremented)
-{
-  const char *inptr = *inbuf;
-  const char *inptr_end = inptr + *inbytesleft;
-  char *outptr = *outbuf;
-  size_t outsize = *outbytesleft;
-  const char *inptr_before;
-  size_t res;
-
-  do
-    {
-      size_t insize;
-
-      inptr_before = inptr;
-      res = (size_t)(-1);
-
-      for (insize = 1; inptr + insize <= inptr_end; insize++)
-        {
-          res = iconv (cd,
-                       (ICONV_CONST char **) &inptr, &insize,
-                       &outptr, &outsize);
-          if (!(res == (size_t)(-1) && errno == EINVAL))
-            break;
-          /* iconv can eat up a shift sequence but give EINVAL while attempting
-             to convert the first character.  E.g. libiconv does this.  */
-          if (inptr > inptr_before)
-            {
-              res = 0;
-              break;
-            }
-        }
-
-      if (res == 0)
-        {
-          *outbuf = outptr;
-          *outbytesleft = outsize;
-        }
-    }
-  while (res == 0 && inptr < inptr_end);
-
-  *inbuf = inptr;
-  *inbytesleft = inptr_end - inptr;
-  if (res != (size_t)(-1) && res > 0)
-    {
-      /* iconv() has already incremented INPTR.  We cannot go back to a
-         previous INPTR, otherwise the state inside CD would become invalid,
-         if FROM_CODESET is a stateful encoding.  So, tell the caller that
-         *INBUF has already been incremented.  */
-      *incremented = (inptr > inptr_before);
-      errno = EILSEQ;
-      return (size_t)(-1);
-    }
-  else
-    {
-      *incremented = false;
-      return res;
-    }
-}
-# else
-#  define iconv_carefully(cd, inbuf, inbytesleft, outbuf, outbytesleft, 
incremented) \
-     (*(incremented) = false, \
-      iconv (cd, (ICONV_CONST char **) (inbuf), inbytesleft, outbuf, 
outbytesleft))
-# endif
-
-/* iconv_carefully_1 is like iconv_carefully, except that it stops after
-   converting one character or one shift sequence.  */
-static size_t
-iconv_carefully_1 (iconv_t cd,
-                   const char **inbuf, size_t *inbytesleft,
-                   char **outbuf, size_t *outbytesleft,
-                   bool *incremented)
-{
-  const char *inptr_before = *inbuf;
-  const char *inptr = inptr_before;
-  const char *inptr_end = inptr_before + *inbytesleft;
-  char *outptr = *outbuf;
-  size_t outsize = *outbytesleft;
-  size_t res = (size_t)(-1);
-  size_t insize;
-
-  for (insize = 1; inptr_before + insize <= inptr_end; insize++)
-    {
-      inptr = inptr_before;
-      res = iconv (cd,
-                   (ICONV_CONST char **) &inptr, &insize,
-                   &outptr, &outsize);
-      if (!(res == (size_t)(-1) && errno == EINVAL))
-        break;
-      /* iconv can eat up a shift sequence but give EINVAL while attempting
-         to convert the first character.  E.g. libiconv does this.  */
-      if (inptr > inptr_before)
-        {
-          res = 0;
-          break;
-        }
-    }
-
-  *inbuf = inptr;
-  *inbytesleft = inptr_end - inptr;
-# if !defined _LIBICONV_VERSION && !(defined __GLIBC__ && !defined __UCLIBC__)
-  /* Irix iconv() inserts a NUL byte if it cannot convert.
-     NetBSD iconv() inserts a question mark if it cannot convert.
-     Only GNU libiconv and GNU libc are known to prefer to fail rather
-     than doing a lossy conversion.  */
-  if (res != (size_t)(-1) && res > 0)
-    {
-      /* iconv() has already incremented INPTR.  We cannot go back to a
-         previous INPTR, otherwise the state inside CD would become invalid,
-         if FROM_CODESET is a stateful encoding.  So, tell the caller that
-         *INBUF has already been incremented.  */
-      *incremented = (inptr > inptr_before);
-      errno = EILSEQ;
-      return (size_t)(-1);
-    }
-# endif
-
-  if (res != (size_t)(-1))
-    {
-      *outbuf = outptr;
-      *outbytesleft = outsize;
-    }
-  *incremented = false;
-  return res;
-}
-
-/* utf8conv_carefully is like iconv, except that
-     - it converts from UTF-8 to UTF-8,
-     - it stops as soon as it encounters a conversion error, and it returns
-       in *INCREMENTED a boolean telling whether it has incremented the input
-       pointers past the error location,
-     - if one_character_only is true, it stops after converting one
-       character.  */
-static size_t
-utf8conv_carefully (bool one_character_only,
-                    const char **inbuf, size_t *inbytesleft,
-                    char **outbuf, size_t *outbytesleft,
-                    bool *incremented)
-{
-  const char *inptr = *inbuf;
-  size_t insize = *inbytesleft;
-  char *outptr = *outbuf;
-  size_t outsize = *outbytesleft;
-  size_t res;
-
-  res = 0;
-  do
-    {
-      ucs4_t uc;
-      int n;
-      int m;
-
-      n = u8_mbtoucr (&uc, (const uint8_t *) inptr, insize);
-      if (n < 0)
-        {
-          errno = (n == -2 ? EINVAL : EILSEQ);
-          n = u8_mbtouc (&uc, (const uint8_t *) inptr, insize);
-          inptr += n;
-          insize -= n;
-          res = (size_t)(-1);
-          *incremented = true;
-          break;
-        }
-      if (outsize == 0)
-        {
-          errno = E2BIG;
-          res = (size_t)(-1);
-          *incremented = false;
-          break;
-        }
-      m = u8_uctomb ((uint8_t *) outptr, uc, outsize);
-      if (m == -2)
-        {
-          errno = E2BIG;
-          res = (size_t)(-1);
-          *incremented = false;
-          break;
-        }
-      inptr += n;
-      insize -= n;
-      if (m == -1)
-        {
-          errno = EILSEQ;
-          res = (size_t)(-1);
-          *incremented = true;
-          break;
-        }
-      outptr += m;
-      outsize -= m;
-    }
-  while (!one_character_only && insize > 0);
-
-  *inbuf = inptr;
-  *inbytesleft = insize;
-  *outbuf = outptr;
-  *outbytesleft = outsize;
-  return res;
-}
-
-static int
-mem_cd_iconveh_internal (const char *src, size_t srclen,
-                         iconv_t cd, iconv_t cd1, iconv_t cd2,
-                         enum iconv_ilseq_handler handler,
-                         size_t extra_alloc,
-                         size_t *offsets,
-                         char **resultp, size_t *lengthp)
-{
-  /* When a conversion error occurs, we cannot start using CD1 and CD2 at
-     this point: FROM_CODESET may be a stateful encoding like ISO-2022-KR.
-     Instead, we have to start afresh from the beginning of SRC.  */
-  /* Use a temporary buffer, so that for small strings, a single malloc()
-     call will be sufficient.  */
-# define tmpbufsize 4096
-  /* The alignment is needed when converting e.g. to glibc's WCHAR_T or
-     libiconv's UCS-4-INTERNAL encoding.  */
-  union { unsigned int align; char buf[tmpbufsize]; } tmp;
-# define tmpbuf tmp.buf
-
-  char *initial_result;
-  char *result;
-  size_t allocated;
-  size_t length;
-  size_t last_length = (size_t)(-1); /* only needed if offsets != NULL */
-
-  if (*resultp != NULL && *lengthp >= sizeof (tmpbuf))
-    {
-      initial_result = *resultp;
-      allocated = *lengthp;
-    }
-  else
-    {
-      initial_result = tmpbuf;
-      allocated = sizeof (tmpbuf);
-    }
-  result = initial_result;
-
-  /* Test whether a direct conversion is possible at all.  */
-  if (cd == (iconv_t)(-1))
-    goto indirectly;
-
-  if (offsets != NULL)
-    {
-      size_t i;
-
-      for (i = 0; i < srclen; i++)
-        offsets[i] = (size_t)(-1);
-
-      last_length = (size_t)(-1);
-    }
-  length = 0;
-
-  /* First, try a direct conversion, and see whether a conversion error
-     occurs at all.  */
-  {
-    const char *inptr = src;
-    size_t insize = srclen;
-
-    /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug.  */
-# if defined _LIBICONV_VERSION \
-     || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \
-          || defined __sun)
-    /* Set to the initial state.  */
-    iconv (cd, NULL, NULL, NULL, NULL);
-# endif
-
-    while (insize > 0)
-      {
-        char *outptr = result + length;
-        size_t outsize = allocated - extra_alloc - length;
-        bool incremented;
-        size_t res;
-        bool grow;
-
-        if (offsets != NULL)
-          {
-            if (length != last_length) /* ensure that offset[] be increasing */
-              {
-                offsets[inptr - src] = length;
-                last_length = length;
-              }
-            res = iconv_carefully_1 (cd,
-                                     &inptr, &insize,
-                                     &outptr, &outsize,
-                                     &incremented);
-          }
-        else
-          /* Use iconv_carefully instead of iconv here, because:
-             - If TO_CODESET is UTF-8, we can do the error handling in this
-               loop, no need for a second loop,
-             - With iconv() implementations other than GNU libiconv and GNU
-               libc, if we use iconv() in a big swoop, checking for an E2BIG
-               return, we lose the number of irreversible conversions.  */
-          res = iconv_carefully (cd,
-                                 &inptr, &insize,
-                                 &outptr, &outsize,
-                                 &incremented);
-
-        length = outptr - result;
-        grow = (length + extra_alloc > allocated / 2);
-        if (res == (size_t)(-1))
-          {
-            if (errno == E2BIG)
-              grow = true;
-            else if (errno == EINVAL)
-              break;
-            else if (errno == EILSEQ && handler != iconveh_error)
-              {
-                if (cd2 == (iconv_t)(-1))
-                  {
-                    /* TO_CODESET is UTF-8.  */
-                    /* Error handling can produce up to 1 or 3 bytes of
-                       output.  */
-                    size_t extra_need =
-                      (handler == iconveh_replacement_character ? 3 : 1);
-                    if (length + extra_need + extra_alloc > allocated)
-                      {
-                        char *memory;
-
-                        allocated = 2 * allocated;
-                        if (length + extra_need + extra_alloc > allocated)
-                          allocated = 2 * allocated;
-                        if (length + extra_need + extra_alloc > allocated)
-                          abort ();
-                        if (result == initial_result)
-                          memory = (char *) malloc (allocated);
-                        else
-                          memory = (char *) realloc (result, allocated);
-                        if (memory == NULL)
-                          {
-                            if (result != initial_result)
-                              free (result);
-                            errno = ENOMEM;
-                            return -1;
-                          }
-                        if (result == initial_result)
-                          memcpy (memory, initial_result, length);
-                        result = memory;
-                        grow = false;
-                      }
-                    /* The input is invalid in FROM_CODESET.  Eat up one byte
-                       and emit a replacement character or a question mark.  */
-                    if (!incremented)
-                      {
-                        if (insize == 0)
-                          abort ();
-                        inptr++;
-                        insize--;
-                      }
-                    if (handler == iconveh_replacement_character)
-                      {
-                        /* U+FFFD in UTF-8 encoding.  */
-                        result[length+0] = '\357';
-                        result[length+1] = '\277';
-                        result[length+2] = '\275';
-                        length += 3;
-                      }
-                    else
-                      {
-                        result[length] = '?';
-                        length++;
-                      }
-                  }
-                else
-                  goto indirectly;
-              }
-            else
-              {
-                if (result != initial_result)
-                  free (result);
-                return -1;
-              }
-          }
-        if (insize == 0)
-          break;
-        if (grow)
-          {
-            char *memory;
-
-            allocated = 2 * allocated;
-            if (result == initial_result)
-              memory = (char *) malloc (allocated);
-            else
-              memory = (char *) realloc (result, allocated);
-            if (memory == NULL)
-              {
-                if (result != initial_result)
-                  free (result);
-                errno = ENOMEM;
-                return -1;
-              }
-            if (result == initial_result)
-              memcpy (memory, initial_result, length);
-            result = memory;
-          }
-      }
-  }
-
-  /* Now get the conversion state back to the initial state.
-     But avoid glibc-2.1 bug and Solaris 2.7 bug.  */
-#if defined _LIBICONV_VERSION \
-    || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \
-         || defined __sun)
-  for (;;)
-    {
-      char *outptr = result + length;
-      size_t outsize = allocated - extra_alloc - length;
-      size_t res;
-
-      res = iconv (cd, NULL, NULL, &outptr, &outsize);
-      length = outptr - result;
-      if (res == (size_t)(-1))
-        {
-          if (errno == E2BIG)
-            {
-              char *memory;
-
-              allocated = 2 * allocated;
-              if (result == initial_result)
-                memory = (char *) malloc (allocated);
-              else
-                memory = (char *) realloc (result, allocated);
-              if (memory == NULL)
-                {
-                  if (result != initial_result)
-                    free (result);
-                  errno = ENOMEM;
-                  return -1;
-                }
-              if (result == initial_result)
-                memcpy (memory, initial_result, length);
-              result = memory;
-            }
-          else
-            {
-              if (result != initial_result)
-                free (result);
-              return -1;
-            }
-        }
-      else
-        break;
-    }
-#endif
-
-  /* The direct conversion succeeded.  */
-  goto done;
-
- indirectly:
-  /* The direct conversion failed.
-     Use a conversion through UTF-8.  */
-  if (offsets != NULL)
-    {
-      size_t i;
-
-      for (i = 0; i < srclen; i++)
-        offsets[i] = (size_t)(-1);
-
-      last_length = (size_t)(-1);
-    }
-  length = 0;
-  {
-    const bool slowly = (offsets != NULL || handler == iconveh_error);
-# define utf8bufsize 4096 /* may also be smaller or larger than tmpbufsize */
-    char utf8buf[utf8bufsize + 3];
-    size_t utf8len = 0;
-    const char *in1ptr = src;
-    size_t in1size = srclen;
-    bool do_final_flush1 = true;
-    bool do_final_flush2 = true;
-
-    /* Avoid glibc-2.1 bug and Solaris 2.7-2.9 bug.  */
-# if defined _LIBICONV_VERSION \
-     || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \
-          || defined __sun)
-    /* Set to the initial state.  */
-    if (cd1 != (iconv_t)(-1))
-      iconv (cd1, NULL, NULL, NULL, NULL);
-    if (cd2 != (iconv_t)(-1))
-      iconv (cd2, NULL, NULL, NULL, NULL);
-# endif
-
-    while (in1size > 0 || do_final_flush1 || utf8len > 0 || do_final_flush2)
-      {
-        char *out1ptr = utf8buf + utf8len;
-        size_t out1size = utf8bufsize - utf8len;
-        bool incremented1;
-        size_t res1;
-        int errno1;
-
-        /* Conversion step 1: from FROM_CODESET to UTF-8.  */
-        if (in1size > 0)
-          {
-            if (offsets != NULL
-                && length != last_length) /* ensure that offset[] be 
increasing */
-              {
-                offsets[in1ptr - src] = length;
-                last_length = length;
-              }
-            if (cd1 != (iconv_t)(-1))
-              {
-                if (slowly)
-                  res1 = iconv_carefully_1 (cd1,
-                                            &in1ptr, &in1size,
-                                            &out1ptr, &out1size,
-                                            &incremented1);
-                else
-                  res1 = iconv_carefully (cd1,
-                                          &in1ptr, &in1size,
-                                          &out1ptr, &out1size,
-                                          &incremented1);
-              }
-            else
-              {
-                /* FROM_CODESET is UTF-8.  */
-                res1 = utf8conv_carefully (slowly,
-                                           &in1ptr, &in1size,
-                                           &out1ptr, &out1size,
-                                           &incremented1);
-              }
-          }
-        else if (do_final_flush1)
-          {
-            /* Now get the conversion state of CD1 back to the initial state.
-               But avoid glibc-2.1 bug and Solaris 2.7 bug.  */
-# if defined _LIBICONV_VERSION \
-     || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \
-          || defined __sun)
-            if (cd1 != (iconv_t)(-1))
-              res1 = iconv (cd1, NULL, NULL, &out1ptr, &out1size);
-            else
-# endif
-              res1 = 0;
-            do_final_flush1 = false;
-            incremented1 = true;
-          }
-        else
-          {
-            res1 = 0;
-            incremented1 = true;
-          }
-        if (res1 == (size_t)(-1)
-            && !(errno == E2BIG || errno == EINVAL || errno == EILSEQ))
-          {
-            if (result != initial_result)
-              free (result);
-            return -1;
-          }
-        if (res1 == (size_t)(-1)
-            && errno == EILSEQ && handler != iconveh_error)
-          {
-            /* The input is invalid in FROM_CODESET.  Eat up one byte and
-               emit a U+FFFD character or a question mark.  Room for this
-               character was allocated at the end of utf8buf.  */
-            if (!incremented1)
-              {
-                if (in1size == 0)
-                  abort ();
-                in1ptr++;
-                in1size--;
-              }
-            if (handler == iconveh_replacement_character)
-              {
-                /* U+FFFD in UTF-8 encoding.  */
-                out1ptr[0] = '\357';
-                out1ptr[1] = '\277';
-                out1ptr[2] = '\275';
-                out1ptr += 3;
-              }
-            else
-              *out1ptr++ = '?';
-            res1 = 0;
-          }
-        errno1 = errno;
-        utf8len = out1ptr - utf8buf;
-
-        if (offsets != NULL
-            || in1size == 0
-            || utf8len > utf8bufsize / 2
-            || (res1 == (size_t)(-1) && errno1 == E2BIG))
-          {
-            /* Conversion step 2: from UTF-8 to TO_CODESET.  */
-            const char *in2ptr = utf8buf;
-            size_t in2size = utf8len;
-
-            while (in2size > 0
-                   || (in1size == 0 && !do_final_flush1 && do_final_flush2))
-              {
-                char *out2ptr = result + length;
-                size_t out2size = allocated - extra_alloc - length;
-                bool incremented2;
-                size_t res2;
-                bool grow;
-
-                if (in2size > 0)
-                  {
-                    if (cd2 != (iconv_t)(-1))
-                      res2 = iconv_carefully (cd2,
-                                              &in2ptr, &in2size,
-                                              &out2ptr, &out2size,
-                                              &incremented2);
-                    else
-                      /* TO_CODESET is UTF-8.  */
-                      res2 = utf8conv_carefully (false,
-                                                 &in2ptr, &in2size,
-                                                 &out2ptr, &out2size,
-                                                 &incremented2);
-                  }
-                else /* in1size == 0 && !do_final_flush1
-                        && in2size == 0 && do_final_flush2 */
-                  {
-                    /* Now get the conversion state of CD1 back to the initial
-                       state.  But avoid glibc-2.1 bug and Solaris 2.7 bug.  */
-# if defined _LIBICONV_VERSION \
-     || !(((__GLIBC__ == 2 && __GLIBC_MINOR__ <= 1) && !defined __UCLIBC__) \
-          || defined __sun)
-                    if (cd2 != (iconv_t)(-1))
-                      res2 = iconv (cd2, NULL, NULL, &out2ptr, &out2size);
-                    else
-# endif
-                      res2 = 0;
-                    do_final_flush2 = false;
-                    incremented2 = true;
-                  }
-
-                length = out2ptr - result;
-                grow = (length + extra_alloc > allocated / 2);
-                if (res2 == (size_t)(-1))
-                  {
-                    if (errno == E2BIG)
-                      grow = true;
-                    else if (errno == EINVAL)
-                      break;
-                    else if (errno == EILSEQ && handler != iconveh_error)
-                      {
-                        /* Error handling can produce up to 10 bytes of UTF-8
-                           output.  But TO_CODESET may be UCS-2, UTF-16 or
-                           UCS-4, so use CD2 here as well.  */
-                        char scratchbuf[10];
-                        size_t scratchlen;
-                        ucs4_t uc;
-                        const char *inptr;
-                        size_t insize;
-                        size_t res;
-
-                        if (incremented2)
-                          {
-                            if (u8_prev (&uc, (const uint8_t *) in2ptr,
-                                         (const uint8_t *) utf8buf)
-                                == NULL)
-                              abort ();
-                          }
-                        else
-                          {
-                            int n;
-                            if (in2size == 0)
-                              abort ();
-                            n = u8_mbtouc_unsafe (&uc, (const uint8_t *) 
in2ptr,
-                                                  in2size);
-                            in2ptr += n;
-                            in2size -= n;
-                          }
-
-                        if (handler == iconveh_escape_sequence)
-                          {
-                            static char const hex[16] = "0123456789ABCDEF";
-                            scratchlen = 0;
-                            scratchbuf[scratchlen++] = '\\';
-                            if (uc < 0x10000)
-                              scratchbuf[scratchlen++] = 'u';
-                            else
-                              {
-                                scratchbuf[scratchlen++] = 'U';
-                                scratchbuf[scratchlen++] = hex[(uc>>28) & 15];
-                                scratchbuf[scratchlen++] = hex[(uc>>24) & 15];
-                                scratchbuf[scratchlen++] = hex[(uc>>20) & 15];
-                                scratchbuf[scratchlen++] = hex[(uc>>16) & 15];
-                              }
-                            scratchbuf[scratchlen++] = hex[(uc>>12) & 15];
-                            scratchbuf[scratchlen++] = hex[(uc>>8) & 15];
-                            scratchbuf[scratchlen++] = hex[(uc>>4) & 15];
-                            scratchbuf[scratchlen++] = hex[uc & 15];
-                          }
-                        else if (handler == iconveh_replacement_character)
-                          {
-                            /* U+FFFD in UTF-8 encoding.  */
-                            scratchbuf[0] = '\357';
-                            scratchbuf[1] = '\277';
-                            scratchbuf[2] = '\275';
-                            scratchlen = 3;
-                          }
-                        else
-                          {
-                            scratchbuf[0] = '?';
-                            scratchlen = 1;
-                          }
-
-                        inptr = scratchbuf;
-                        insize = scratchlen;
-                        if (cd2 != (iconv_t)(-1))
-                          {
-                            char *out2ptr_try = out2ptr;
-                            size_t out2size_try = out2size;
-                            res = iconv (cd2,
-                                         (ICONV_CONST char **) &inptr, &insize,
-                                         &out2ptr_try, &out2size_try);
-                            if (handler == iconveh_replacement_character
-                                && (res == (size_t)(-1)
-                                    ? errno == EILSEQ
-                                    /* FreeBSD iconv(), NetBSD iconv(), and
-                                       Solaris 11 iconv() insert a '?' if they
-                                       cannot convert.  This is what we want.
-                                       But IRIX iconv() inserts a NUL byte if 
it
-                                       cannot convert.
-                                       And musl libc iconv() inserts a '*' if 
it
-                                       cannot convert.  */
-                                    : (res > 0
-                                       && !(out2ptr_try - out2ptr == 1
-                                            && *out2ptr == '?'))))
-                              {
-                                /* The iconv() call failed.
-                                   U+FFFD can't be converted to TO_CODESET.
-                                   Use '?' instead.  */
-                                scratchbuf[0] = '?';
-                                scratchlen = 1;
-                                inptr = scratchbuf;
-                                insize = scratchlen;
-                                res = iconv (cd2,
-                                             (ICONV_CONST char **) &inptr, 
&insize,
-                                             &out2ptr, &out2size);
-                              }
-                            else
-                              {
-                                /* Accept the results of the iconv() call.  */
-                                out2ptr = out2ptr_try;
-                                out2size = out2size_try;
-                                res = 0;
-                              }
-                          }
-                        else
-                          {
-                            /* TO_CODESET is UTF-8.  */
-                            if (out2size >= insize)
-                              {
-                                memcpy (out2ptr, inptr, insize);
-                                out2ptr += insize;
-                                out2size -= insize;
-                                inptr += insize;
-                                insize = 0;
-                                res = 0;
-                              }
-                            else
-                              {
-                                errno = E2BIG;
-                                res = (size_t)(-1);
-                              }
-                          }
-                        length = out2ptr - result;
-                        if (res == (size_t)(-1) && errno == E2BIG)
-                          {
-                            char *memory;
-
-                            allocated = 2 * allocated;
-                            if (length + 1 + extra_alloc > allocated)
-                              abort ();
-                            if (result == initial_result)
-                              memory = (char *) malloc (allocated);
-                            else
-                              memory = (char *) realloc (result, allocated);
-                            if (memory == NULL)
-                              {
-                                if (result != initial_result)
-                                  free (result);
-                                errno = ENOMEM;
-                                return -1;
-                              }
-                            if (result == initial_result)
-                              memcpy (memory, initial_result, length);
-                            result = memory;
-                            grow = false;
-
-                            out2ptr = result + length;
-                            out2size = allocated - extra_alloc - length;
-                            if (cd2 != (iconv_t)(-1))
-                              res = iconv (cd2,
-                                           (ICONV_CONST char **) &inptr,
-                                           &insize,
-                                           &out2ptr, &out2size);
-                            else
-                              {
-                                /* TO_CODESET is UTF-8.  */
-                                if (!(out2size >= insize))
-                                  abort ();
-                                memcpy (out2ptr, inptr, insize);
-                                out2ptr += insize;
-                                out2size -= insize;
-                                inptr += insize;
-                                insize = 0;
-                                res = 0;
-                              }
-                            length = out2ptr - result;
-                          }
-# if !defined _LIBICONV_VERSION && !(defined __GLIBC__ && !defined __UCLIBC__)
-                        /* IRIX iconv() inserts a NUL byte if it cannot 
convert.
-                           FreeBSD iconv(), NetBSD iconv(), and Solaris 11
-                           iconv() insert a '?' if they cannot convert.
-                           musl libc iconv() inserts a '*' if it cannot 
convert.
-                           Only GNU libiconv and GNU libc are known to prefer
-                           to fail rather than doing a lossy conversion.  */
-                        if (res != (size_t)(-1) && res > 0)
-                          {
-                            errno = EILSEQ;
-                            res = (size_t)(-1);
-                          }
-# endif
-                        if (res == (size_t)(-1))
-                          {
-                            /* Failure converting the ASCII replacement.  */
-                            if (result != initial_result)
-                              free (result);
-                            return -1;
-                          }
-                      }
-                    else
-                      {
-                        if (result != initial_result)
-                          free (result);
-                        return -1;
-                      }
-                  }
-                if (!(in2size > 0
-                      || (in1size == 0 && !do_final_flush1 && 
do_final_flush2)))
-                  break;
-                if (grow)
-                  {
-                    char *memory;
-
-                    allocated = 2 * allocated;
-                    if (result == initial_result)
-                      memory = (char *) malloc (allocated);
-                    else
-                      memory = (char *) realloc (result, allocated);
-                    if (memory == NULL)
-                      {
-                        if (result != initial_result)
-                          free (result);
-                        errno = ENOMEM;
-                        return -1;
-                      }
-                    if (result == initial_result)
-                      memcpy (memory, initial_result, length);
-                    result = memory;
-                  }
-              }
-
-            /* Move the remaining bytes to the beginning of utf8buf.  */
-            if (in2size > 0)
-              memmove (utf8buf, in2ptr, in2size);
-            utf8len = in2size;
-          }
-
-        if (res1 == (size_t)(-1))
-          {
-            if (errno1 == EINVAL)
-              in1size = 0;
-            else if (errno1 == EILSEQ)
-              {
-                if (result != initial_result)
-                  free (result);
-                errno = errno1;
-                return -1;
-              }
-          }
-      }
-# undef utf8bufsize
-  }
-
- done:
-  /* Now the final memory allocation.  */
-  if (result == tmpbuf)
-    {
-      size_t memsize = length + extra_alloc;
-
-      if (*resultp != NULL && *lengthp >= memsize)
-        result = *resultp;
-      else
-        {
-          char *memory;
-
-          memory = (char *) malloc (memsize > 0 ? memsize : 1);
-          if (memory != NULL)
-            result = memory;
-          else
-            {
-              errno = ENOMEM;
-              return -1;
-            }
-        }
-      memcpy (result, tmpbuf, length);
-    }
-  else if (result != *resultp && length + extra_alloc < allocated)
-    {
-      /* Shrink the allocated memory if possible.  */
-      size_t memsize = length + extra_alloc;
-      char *memory;
-
-      memory = (char *) realloc (result, memsize > 0 ? memsize : 1);
-      if (memory != NULL)
-        result = memory;
-    }
-  *resultp = result;
-  *lengthp = length;
-  return 0;
-# undef tmpbuf
-# undef tmpbufsize
-}
-
-int
-mem_cd_iconveh (const char *src, size_t srclen,
-                const iconveh_t *cd,
-                enum iconv_ilseq_handler handler,
-                size_t *offsets,
-                char **resultp, size_t *lengthp)
-{
-  return mem_cd_iconveh_internal (src, srclen, cd->cd, cd->cd1, cd->cd2,
-                                  handler, 0, offsets, resultp, lengthp);
-}
-
-char *
-str_cd_iconveh (const char *src,
-                const iconveh_t *cd,
-                enum iconv_ilseq_handler handler)
-{
-  /* For most encodings, a trailing NUL byte in the input will be converted
-     to a trailing NUL byte in the output.  But not for UTF-7.  So that this
-     function is usable for UTF-7, we have to exclude the NUL byte from the
-     conversion and add it by hand afterwards.  */
-  char *result = NULL;
-  size_t length = 0;
-  int retval = mem_cd_iconveh_internal (src, strlen (src),
-                                        cd->cd, cd->cd1, cd->cd2, handler, 1,
-                                        NULL, &result, &length);
-
-  if (retval < 0)
-    {
-      free (result);
-      return NULL;
-    }
-
-  /* Add the terminating NUL byte.  */
-  result[length] = '\0';
-
-  return result;
-}
-
-#endif
-
-int
-mem_iconveh (const char *src, size_t srclen,
-             const char *from_codeset, const char *to_codeset,
-             enum iconv_ilseq_handler handler,
-             size_t *offsets,
-             char **resultp, size_t *lengthp)
-{
-  if (srclen == 0)
-    {
-      /* Nothing to convert.  */
-      *lengthp = 0;
-      return 0;
-    }
-  else if (offsets == NULL && c_strcasecmp (from_codeset, to_codeset) == 0)
-    {
-      char *result;
-
-      if (*resultp != NULL && *lengthp >= srclen)
-        result = *resultp;
-      else
-        {
-          result = (char *) malloc (srclen);
-          if (result == NULL)
-            {
-              errno = ENOMEM;
-              return -1;
-            }
-        }
-      memcpy (result, src, srclen);
-      *resultp = result;
-      *lengthp = srclen;
-      return 0;
-    }
-  else
-    {
-#if HAVE_ICONV
-      iconveh_t cd;
-      char *result;
-      size_t length;
-      int retval;
-
-      if (iconveh_open (to_codeset, from_codeset, &cd) < 0)
-        return -1;
-
-      result = *resultp;
-      length = *lengthp;
-      retval = mem_cd_iconveh (src, srclen, &cd, handler, offsets,
-                               &result, &length);
-
-      if (retval < 0)
-        {
-          /* Close cd, but preserve the errno from str_cd_iconv.  */
-          int saved_errno = errno;
-          iconveh_close (&cd);
-          errno = saved_errno;
-        }
-      else
-        {
-          if (iconveh_close (&cd) < 0)
-            {
-              if (result != *resultp)
-                free (result);
-              return -1;
-            }
-          *resultp = result;
-          *lengthp = length;
-        }
-      return retval;
-#else
-      /* This is a different error code than if iconv_open existed but didn't
-         support from_codeset and to_codeset, so that the caller can emit
-         an error message such as
-           "iconv() is not supported. Installing GNU libiconv and
-            then reinstalling this package would fix this."  */
-      errno = ENOSYS;
-      return -1;
-#endif
-    }
-}
-
-char *
-str_iconveh (const char *src,
-             const char *from_codeset, const char *to_codeset,
-             enum iconv_ilseq_handler handler)
-{
-  if (*src == '\0' || c_strcasecmp (from_codeset, to_codeset) == 0)
-    {
-      char *result = strdup (src);
-
-      if (result == NULL)
-        errno = ENOMEM;
-      return result;
-    }
-  else
-    {
-#if HAVE_ICONV
-      iconveh_t cd;
-      char *result;
-
-      if (iconveh_open (to_codeset, from_codeset, &cd) < 0)
-        return NULL;
-
-      result = str_cd_iconveh (src, &cd, handler);
-
-      if (result == NULL)
-        {
-          /* Close cd, but preserve the errno from str_cd_iconv.  */
-          int saved_errno = errno;
-          iconveh_close (&cd);
-          errno = saved_errno;
-        }
-      else
-        {
-          if (iconveh_close (&cd) < 0)
-            {
-              free (result);
-              return NULL;
-            }
-        }
-      return result;
-#else
-      /* This is a different error code than if iconv_open existed but didn't
-         support from_codeset and to_codeset, so that the caller can emit
-         an error message such as
-           "iconv() is not supported. Installing GNU libiconv and
-            then reinstalling this package would fix this."  */
-      errno = ENOSYS;
-      return NULL;
-#endif
-    }
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/striconveh.h 
b/tp/Texinfo/XS/gnulib/lib/striconveh.h
deleted file mode 100644
index dee51eb170..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/striconveh.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Character set conversion with error handling.
-   Copyright (C) 2001-2007, 2009-2024 Free Software Foundation, Inc.
-   Written by Bruno Haible and Simon Josefsson.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#ifndef _STRICONVEH_H
-#define _STRICONVEH_H
-
-/* This file uses _GL_ATTRIBUTE_MALLOC, HAVE_ICONV.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-#include <stdlib.h>
-#if HAVE_ICONV
-#include <iconv.h>
-#endif
-
-#include "iconveh.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#if HAVE_ICONV
-
-/* A conversion descriptor for use by the iconveh functions.  */
-typedef struct
-  {
-    /* Conversion descriptor from FROM_CODESET to TO_CODESET, or (iconv_t)(-1)
-       if the system does not support a direct conversion from FROM_CODESET to
-       TO_CODESET.  */
-    iconv_t cd;
-    /* Conversion descriptor from FROM_CODESET to UTF-8 (or (iconv_t)(-1) if
-       FROM_CODESET is UTF-8).  */
-    iconv_t cd1;
-    /* Conversion descriptor from UTF-8 to TO_CODESET (or (iconv_t)(-1) if
-       TO_CODESET is UTF-8).  */
-    iconv_t cd2;
-  }
-  iconveh_t;
-
-/* Open a conversion descriptor for use by the iconveh functions.
-   If successful, fills *CDP and returns 0.  Upon failure, return -1 with errno
-   set.  */
-extern int
-       iconveh_open (const char *to_codeset, const char *from_codeset,
-                     iconveh_t *cdp);
-
-/* Close a conversion descriptor created by iconveh_open().
-   Return value: 0 if successful, otherwise -1 and errno set.  */
-extern int
-       iconveh_close (const iconveh_t *cd);
-
-/* Convert an entire string from one encoding to another, using iconv.
-   The original string is at [SRC,...,SRC+SRCLEN-1].
-   CD points to the conversion descriptor from FROMCODE to TOCODE, created by
-   the function iconveh_open().
-   If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this
-   array is filled with offsets into the result, i.e. the character starting
-   at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
-   and other offsets are set to (size_t)(-1).
-   *RESULTP and *LENGTH should initially be a scratch buffer and its size,
-   or *RESULTP can initially be NULL.
-   May erase the contents of the memory at *RESULTP.
-   Return value: 0 if successful, otherwise -1 and errno set.
-   If successful: The resulting string is stored in *RESULTP and its length
-   in *LENGTHP.  *RESULTP is set to a freshly allocated memory block, or is
-   unchanged if no dynamic memory allocation was necessary.  */
-extern int
-       mem_cd_iconveh (const char *src, size_t srclen,
-                       const iconveh_t *cd,
-                       enum iconv_ilseq_handler handler,
-                       size_t *offsets,
-                       char **resultp, size_t *lengthp);
-
-/* Convert an entire string from one encoding to another, using iconv.
-   The original string is the NUL-terminated string starting at SRC.
-   CD points to the conversion descriptor from FROMCODE to TOCODE, created by
-   the function iconveh_open().
-   Both the "from" and the "to" encoding must use a single NUL byte at the end
-   of the string (i.e. not UCS-2, UCS-4, UTF-16, UTF-32).
-   Allocate a malloced memory block for the result.
-   Return value: the freshly allocated resulting NUL-terminated string if
-   successful, otherwise NULL and errno set.  */
-extern char *
-       str_cd_iconveh (const char *src,
-                       const iconveh_t *cd,
-                       enum iconv_ilseq_handler handler)
-       _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE;
-
-#endif
-
-/* Convert an entire string from one encoding to another, using iconv.
-   The original string is at [SRC,...,SRC+SRCLEN-1].
-   If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this
-   array is filled with offsets into the result, i.e. the character starting
-   at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
-   and other offsets are set to (size_t)(-1).
-   *RESULTP and *LENGTH should initially be a scratch buffer and its size,
-   or *RESULTP can initially be NULL.
-   May erase the contents of the memory at *RESULTP.
-   Return value: 0 if successful, otherwise -1 and errno set.
-   If successful: The resulting string is stored in *RESULTP and its length
-   in *LENGTHP.  *RESULTP is set to a freshly allocated memory block, or is
-   unchanged if no dynamic memory allocation was necessary.  */
-extern int
-       mem_iconveh (const char *src, size_t srclen,
-                    const char *from_codeset, const char *to_codeset,
-                    enum iconv_ilseq_handler handler,
-                    size_t *offsets,
-                    char **resultp, size_t *lengthp);
-
-/* Convert an entire string from one encoding to another, using iconv.
-   The original string is the NUL-terminated string starting at SRC.
-   Both the "from" and the "to" encoding must use a single NUL byte at the
-   end of the string (i.e. not UCS-2, UCS-4, UTF-16, UTF-32).
-   Allocate a malloced memory block for the result.
-   Return value: the freshly allocated resulting NUL-terminated string if
-   successful, otherwise NULL and errno set.  */
-extern char *
-       str_iconveh (const char *src,
-                    const char *from_codeset, const char *to_codeset,
-                    enum iconv_ilseq_handler handler)
-       _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE;
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _STRICONVEH_H */
diff --git a/tp/Texinfo/XS/gnulib/lib/striconveha.c 
b/tp/Texinfo/XS/gnulib/lib/striconveha.c
deleted file mode 100644
index 19b6700a0e..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/striconveha.c
+++ /dev/null
@@ -1,357 +0,0 @@
-/* Character set conversion with error handling and autodetection.
-   Copyright (C) 2002, 2005, 2007, 2009-2024 Free Software Foundation, Inc.
-   Written by Bruno Haible.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "striconveha.h"
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "malloca.h"
-#include "c-strcase.h"
-#include "striconveh.h"
-
-#define SIZEOF(a) (sizeof(a)/sizeof(a[0]))
-
-
-/* Autodetection list.  */
-
-struct autodetect_alias
-{
-  struct autodetect_alias *next;
-  const char *name;
-  const char * const *encodings_to_try;
-};
-
-static const char * const autodetect_utf8_try[] =
-{
-  /* Try UTF-8 first. There are very few ISO-8859-1 inputs that would
-     be valid UTF-8, but many UTF-8 inputs are valid ISO-8859-1.  */
-  "UTF-8", "ISO-8859-1",
-  NULL
-};
-static const char * const autodetect_jp_try[] =
-{
-  /* Try 7-bit encoding first. If the input contains bytes >= 0x80,
-     it will fail.
-     Try EUC-JP next. Short SHIFT_JIS inputs may come out wrong. This
-     is unavoidable. People will condemn SHIFT_JIS.
-     If we tried SHIFT_JIS first, then some short EUC-JP inputs would
-     come out wrong, and people would condemn EUC-JP and Unix, which
-     would not be good.
-     Finally try SHIFT_JIS.  */
-  "ISO-2022-JP-2", "EUC-JP", "SHIFT_JIS",
-  NULL
-};
-static const char * const autodetect_kr_try[] =
-{
-  /* Try 7-bit encoding first. If the input contains bytes >= 0x80,
-     it will fail.
-     Finally try EUC-KR.  */
-  "ISO-2022-KR", "EUC-KR",
-  NULL
-};
-
-static struct autodetect_alias autodetect_predefined[] =
-{
-  { &autodetect_predefined[1], "autodetect_utf8", autodetect_utf8_try },
-  { &autodetect_predefined[2], "autodetect_jp",   autodetect_jp_try },
-  { NULL,                      "autodetect_kr",   autodetect_kr_try }
-};
-
-static struct autodetect_alias *autodetect_list = &autodetect_predefined[0];
-static struct autodetect_alias **autodetect_list_end =
-  &autodetect_predefined[SIZEOF(autodetect_predefined)-1].next;
-
-int
-uniconv_register_autodetect (const char *name,
-                             const char * const *try_in_order)
-{
-  size_t namelen;
-  size_t listlen;
-  size_t memneed;
-  size_t i;
-
-  /* The TRY_IN_ORDER list must not be empty.  */
-  if (try_in_order[0] == NULL)
-    {
-      errno = EINVAL;
-      return -1;
-    }
-
-  /* We must deep-copy NAME and TRY_IN_ORDER, because they may be allocated
-     with dynamic extent.  */
-  namelen = strlen (name) + 1;
-  memneed = sizeof (struct autodetect_alias) + namelen + sizeof (char *);
-  for (i = 0; try_in_order[i] != NULL; i++)
-    memneed += sizeof (char *) + strlen (try_in_order[i]) + 1;
-  listlen = i;
-
-  void *memory = malloc (memneed);
-  if (memory != NULL)
-    {
-      struct autodetect_alias *new_alias = memory;
-      memory = new_alias + 1;
-
-      char const **new_try_in_order = memory;
-      memory = new_try_in_order + listlen + 1;
-
-      char *new_name = memcpy (memory, name, namelen);
-      memory = new_name + namelen;
-
-      for (i = 0; i < listlen; i++)
-        {
-          size_t len = strlen (try_in_order[i]) + 1;
-          char *copy = memcpy (memory, try_in_order[i], len);
-          new_try_in_order[i] = copy;
-          memory = copy + len;
-        }
-      new_try_in_order[i] = NULL;
-
-      /* Now insert the new alias.  */
-      new_alias->name = new_name;
-      new_alias->encodings_to_try = new_try_in_order;
-      new_alias->next = NULL;
-      /* FIXME: Not multithread-safe.  */
-      *autodetect_list_end = new_alias;
-      autodetect_list_end = &new_alias->next;
-      return 0;
-    }
-  else
-    {
-      errno = ENOMEM;
-      return -1;
-    }
-}
-
-/* Like mem_iconveha, except no handling of transliteration.  */
-static int
-mem_iconveha_notranslit (const char *src, size_t srclen,
-                         const char *from_codeset, const char *to_codeset,
-                         enum iconv_ilseq_handler handler,
-                         size_t *offsets,
-                         char **resultp, size_t *lengthp)
-{
-  int retval = mem_iconveh (src, srclen, from_codeset, to_codeset, handler,
-                            offsets, resultp, lengthp);
-  if (retval >= 0 || errno != EINVAL)
-    return retval;
-  else
-    {
-      struct autodetect_alias *alias;
-
-      /* Unsupported from_codeset or to_codeset. Check whether the caller
-         requested autodetection.  */
-      for (alias = autodetect_list; alias != NULL; alias = alias->next)
-        if (strcmp (from_codeset, alias->name) == 0)
-          {
-            const char * const *encodings;
-
-            if (handler != iconveh_error)
-              {
-                /* First try all encodings without any forgiving.  */
-                encodings = alias->encodings_to_try;
-                do
-                  {
-                    retval = mem_iconveha_notranslit (src, srclen,
-                                                      *encodings, to_codeset,
-                                                      iconveh_error, offsets,
-                                                      resultp, lengthp);
-                    if (!(retval < 0 && errno == EILSEQ))
-                      return retval;
-                    encodings++;
-                  }
-                while (*encodings != NULL);
-              }
-
-            encodings = alias->encodings_to_try;
-            do
-              {
-                retval = mem_iconveha_notranslit (src, srclen,
-                                                  *encodings, to_codeset,
-                                                  handler, offsets,
-                                                  resultp, lengthp);
-                if (!(retval < 0 && errno == EILSEQ))
-                  return retval;
-                encodings++;
-              }
-            while (*encodings != NULL);
-
-            /* Return the last call's result.  */
-            return -1;
-          }
-
-      /* It wasn't an autodetection name.  */
-      errno = EINVAL;
-      return -1;
-    }
-}
-
-int
-mem_iconveha (const char *src, size_t srclen,
-              const char *from_codeset, const char *to_codeset,
-              bool transliterate,
-              enum iconv_ilseq_handler handler,
-              size_t *offsets,
-              char **resultp, size_t *lengthp)
-{
-  if (srclen == 0)
-    {
-      /* Nothing to convert.  */
-      *lengthp = 0;
-      return 0;
-    }
-
-  /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5,
-     we want to use transliteration.  */
-#if (((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2) \
-     && !defined __UCLIBC__) \
-    || _LIBICONV_VERSION >= 0x0105
-  if (transliterate)
-    {
-      int retval;
-      size_t len = strlen (to_codeset);
-      char *to_codeset_suffixed = (char *) malloca (len + 10 + 1);
-      if (to_codeset_suffixed == NULL)
-        {
-          errno = ENOMEM;
-          return -1;
-        }
-      memcpy (to_codeset_suffixed, to_codeset, len);
-      memcpy (to_codeset_suffixed + len, "//TRANSLIT", 10 + 1);
-
-      retval = mem_iconveha_notranslit (src, srclen,
-                                        from_codeset, to_codeset_suffixed,
-                                        handler, offsets, resultp, lengthp);
-
-      freea (to_codeset_suffixed);
-
-      return retval;
-    }
-  else
-#endif
-    return mem_iconveha_notranslit (src, srclen,
-                                    from_codeset, to_codeset,
-                                    handler, offsets, resultp, lengthp);
-}
-
-/* Like str_iconveha, except no handling of transliteration.  */
-static char *
-str_iconveha_notranslit (const char *src,
-                         const char *from_codeset, const char *to_codeset,
-                         enum iconv_ilseq_handler handler)
-{
-  char *result = str_iconveh (src, from_codeset, to_codeset, handler);
-
-  if (result != NULL || errno != EINVAL)
-    return result;
-  else
-    {
-      struct autodetect_alias *alias;
-
-      /* Unsupported from_codeset or to_codeset. Check whether the caller
-         requested autodetection.  */
-      for (alias = autodetect_list; alias != NULL; alias = alias->next)
-        if (strcmp (from_codeset, alias->name) == 0)
-          {
-            const char * const *encodings;
-
-            if (handler != iconveh_error)
-              {
-                /* First try all encodings without any forgiving.  */
-                encodings = alias->encodings_to_try;
-                do
-                  {
-                    result = str_iconveha_notranslit (src,
-                                                      *encodings, to_codeset,
-                                                      iconveh_error);
-                    if (!(result == NULL && errno == EILSEQ))
-                      return result;
-                    encodings++;
-                  }
-                while (*encodings != NULL);
-              }
-
-            encodings = alias->encodings_to_try;
-            do
-              {
-                result = str_iconveha_notranslit (src,
-                                                  *encodings, to_codeset,
-                                                  handler);
-                if (!(result == NULL && errno == EILSEQ))
-                  return result;
-                encodings++;
-              }
-            while (*encodings != NULL);
-
-            /* Return the last call's result.  */
-            return NULL;
-          }
-
-      /* It wasn't an autodetection name.  */
-      errno = EINVAL;
-      return NULL;
-    }
-}
-
-char *
-str_iconveha (const char *src,
-              const char *from_codeset, const char *to_codeset,
-              bool transliterate,
-              enum iconv_ilseq_handler handler)
-{
-  if (*src == '\0' || c_strcasecmp (from_codeset, to_codeset) == 0)
-    {
-      char *result = strdup (src);
-
-      if (result == NULL)
-        errno = ENOMEM;
-      return result;
-    }
-
-  /* When using GNU libc >= 2.2 or GNU libiconv >= 1.5,
-     we want to use transliteration.  */
-#if (((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2) \
-     && !defined __UCLIBC__) \
-    || _LIBICONV_VERSION >= 0x0105
-  if (transliterate)
-    {
-      char *result;
-      size_t len = strlen (to_codeset);
-      char *to_codeset_suffixed = (char *) malloca (len + 10 + 1);
-      if (to_codeset_suffixed == NULL)
-        {
-          errno = ENOMEM;
-          return NULL;
-        }
-      memcpy (to_codeset_suffixed, to_codeset, len);
-      memcpy (to_codeset_suffixed + len, "//TRANSLIT", 10 + 1);
-
-      result = str_iconveha_notranslit (src, from_codeset, to_codeset_suffixed,
-                                        handler);
-
-      freea (to_codeset_suffixed);
-
-      return result;
-    }
-  else
-#endif
-    return str_iconveha_notranslit (src, from_codeset, to_codeset, handler);
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/striconveha.h 
b/tp/Texinfo/XS/gnulib/lib/striconveha.h
deleted file mode 100644
index e93d0b4c45..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/striconveha.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Character set conversion with error handling and autodetection.
-   Copyright (C) 2002, 2005, 2007-2024 Free Software Foundation, Inc.
-   Written by Bruno Haible.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#ifndef _STRICONVEHA_H
-#define _STRICONVEHA_H
-
-/* This file uses _GL_ATTRIBUTE_MALLOC.  */
-#if !_GL_CONFIG_H_INCLUDED
- #error "Please include config.h first."
-#endif
-
-#include <stdlib.h>
-
-#include "iconveh.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Convert an entire string from one encoding to another, using iconv.
-   The original string is at [SRC,...,SRC+SRCLEN-1].
-   The "from" encoding can also be a name defined for autodetection.
-   If TRANSLITERATE is true, transliteration will attempted to avoid conversion
-   errors, for iconv implementations that support this.  Usually you'll choose
-   TRANSLITERATE = true if HANDLER != iconveh_error.
-   If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this
-   array is filled with offsets into the result, i.e. the character starting
-   at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
-   and other offsets are set to (size_t)(-1).
-   *RESULTP and *LENGTH should initially be a scratch buffer and its size,
-   or *RESULTP can initially be NULL.
-   May erase the contents of the memory at *RESULTP.
-   Return value: 0 if successful, otherwise -1 and errno set.
-   If successful: The resulting string is stored in *RESULTP and its length
-   in *LENGTHP.  *RESULTP is set to a freshly allocated memory block, or is
-   unchanged if no dynamic memory allocation was necessary.  */
-extern int
-       mem_iconveha (const char *src, size_t srclen,
-                     const char *from_codeset, const char *to_codeset,
-                     bool transliterate,
-                     enum iconv_ilseq_handler handler,
-                     size_t *offsets,
-                     char **resultp, size_t *lengthp);
-
-/* Convert an entire string from one encoding to another, using iconv.
-   The original string is the NUL-terminated string starting at SRC.
-   Both the "from" and the "to" encoding must use a single NUL byte at the
-   end of the string (i.e. not UCS-2, UCS-4, UTF-16, UTF-32).
-   The "from" encoding can also be a name defined for autodetection.
-   If TRANSLITERATE is true, transliteration will attempted to avoid conversion
-   errors, for iconv implementations that support this.  Usually you'll choose
-   TRANSLITERATE = true if HANDLER != iconveh_error.
-   Allocate a malloced memory block for the result.
-   Return value: the freshly allocated resulting NUL-terminated string if
-   successful, otherwise NULL and errno set.  */
-extern char *
-       str_iconveha (const char *src,
-                     const char *from_codeset, const char *to_codeset,
-                     bool transliterate,
-                     enum iconv_ilseq_handler handler)
-       _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE;
-
-
-/* In the above, FROM_CODESET can also be one of the following values:
-      "autodetect_utf8"         supports ISO-8859-1 and UTF-8
-      "autodetect_jp"           supports EUC-JP, ISO-2022-JP-2 and SHIFT_JIS
-      "autodetect_kr"           supports EUC-KR and ISO-2022-KR
-   More names can be defined for autodetection.  */
-
-/* Registers an encoding name for autodetection.
-   TRY_IN_ORDER is a NULL terminated list of encodings to be tried.
-   Returns 0 upon success, or -1 (with errno set) in case of error.
-   Particular errno values: ENOMEM.  */
-extern int
-       uniconv_register_autodetect (const char *name,
-                                    const char * const *try_in_order);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _STRICONVEHA_H */
diff --git a/tp/Texinfo/XS/gnulib/lib/unicase/cased.h 
b/tp/Texinfo/XS/gnulib/lib/unicase/cased.h
index 2fe12689b7..dca12035de 100644
--- a/tp/Texinfo/XS/gnulib/lib/unicase/cased.h
+++ b/tp/Texinfo/XS/gnulib/lib/unicase/cased.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Casing Properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software.
    It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
diff --git a/tp/Texinfo/XS/gnulib/lib/unicase/ignorable.h 
b/tp/Texinfo/XS/gnulib/lib/unicase/ignorable.h
index 5b986e19f1..bf41d94e4b 100644
--- a/tp/Texinfo/XS/gnulib/lib/unicase/ignorable.h
+++ b/tp/Texinfo/XS/gnulib/lib/unicase/ignorable.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Casing Properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software.
    It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
diff --git a/tp/Texinfo/XS/gnulib/lib/unicase/special-casing-table.gperf 
b/tp/Texinfo/XS/gnulib/lib/unicase/special-casing-table.gperf
index 54bfb4ad48..39e1f5d6d7 100644
--- a/tp/Texinfo/XS/gnulib/lib/unicase/special-casing-table.gperf
+++ b/tp/Texinfo/XS/gnulib/lib/unicase/special-casing-table.gperf
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Special casing rules of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software.
    It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
diff --git a/tp/Texinfo/XS/gnulib/lib/unicase/tolower.h 
b/tp/Texinfo/XS/gnulib/lib/unicase/tolower.h
index 6fa031c911..9c125f5054 100644
--- a/tp/Texinfo/XS/gnulib/lib/unicase/tolower.h
+++ b/tp/Texinfo/XS/gnulib/lib/unicase/tolower.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Simple character mapping of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2023 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as
diff --git a/tp/Texinfo/XS/gnulib/lib/unicase/toupper.h 
b/tp/Texinfo/XS/gnulib/lib/unicase/toupper.h
index c460ee2a81..4df2f32c17 100644
--- a/tp/Texinfo/XS/gnulib/lib/unicase/toupper.h
+++ b/tp/Texinfo/XS/gnulib/lib/unicase/toupper.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Simple character mapping of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2023 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as
diff --git a/tp/Texinfo/XS/gnulib/lib/uniconv.in.h 
b/tp/Texinfo/XS/gnulib/lib/uniconv.in.h
deleted file mode 100644
index 9af01bd82d..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/uniconv.in.h
+++ /dev/null
@@ -1,172 +0,0 @@
-/* Conversions between Unicode and legacy encodings.
-   Copyright (C) 2002, 2005, 2007, 2009-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#ifndef _UNICONV_H
-#define _UNICONV_H
-
-/* Get size_t.  */
-#include <stddef.h>
-
-#include "unitypes.h"
-
-/* Get enum iconv_ilseq_handler.  */
-#include "iconveh.h"
-
-/* Get uniconv_register_autodetect() declaration.  */
-#include "striconveha.h"
-
-/* Get locale_charset() declaration.  */
-#include "localcharset.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* Converts an entire string, possibly including NUL bytes, from one encoding
-   to a Unicode encoding.
-   Converts a memory region given in encoding FROMCODE.  FROMCODE is as for
-   iconv_open(3).
-   The input is in the memory region between SRC (inclusive) and SRC + SRCLEN
-   (exclusive).
-   If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this
-   array is filled with offsets into the result, i.e. the character starting
-   at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
-   and other offsets are set to (size_t)(-1).
-   RESULTBUF and *LENGTHP should initially be a scratch buffer and its size,
-   or *RESULTBUF can be NULL.
-   May erase the contents of the memory at RESULTBUF.
-   If successful: The resulting Unicode string (non-NULL) is returned and its
-   length stored in *LENGTHP.  The resulting string is RESULTBUF if no dynamic
-   memory allocation was necessary, or a freshly allocated memory block
-   otherwise.
-   In case of error: NULL is returned and errno is set.  Particular errno
-   values: EINVAL, EILSEQ, ENOMEM.  */
-extern uint8_t *
-       u8_conv_from_encoding (const char *fromcode,
-                              enum iconv_ilseq_handler handler,
-                              const char *src, size_t srclen,
-                              size_t *offsets,
-                              uint8_t *resultbuf, size_t *lengthp);
-extern uint16_t *
-       u16_conv_from_encoding (const char *fromcode,
-                               enum iconv_ilseq_handler handler,
-                               const char *src, size_t srclen,
-                               size_t *offsets,
-                               uint16_t *resultbuf, size_t *lengthp);
-extern uint32_t *
-       u32_conv_from_encoding (const char *fromcode,
-                               enum iconv_ilseq_handler handler,
-                               const char *src, size_t srclen,
-                               size_t *offsets,
-                               uint32_t *resultbuf, size_t *lengthp);
-
-/* Converts an entire Unicode string, possibly including NUL units, from a
-   Unicode encoding to a given encoding.
-   Converts a memory region to encoding TOCODE.  TOCODE is as for
-   iconv_open(3).
-   The input is in the memory region between SRC (inclusive) and SRC + SRCLEN
-   (exclusive).
-   If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this
-   array is filled with offsets into the result, i.e. the character starting
-   at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
-   and other offsets are set to (size_t)(-1).
-   RESULTBUF and *LENGTHP should initially be a scratch buffer and its size,
-   or RESULTBUF can be NULL.
-   May erase the contents of the memory at RESULTBUF.
-   If successful: The resulting string (non-NULL) is returned and its length
-   stored in *LENGTHP.  The resulting string is RESULTBUF if no dynamic memory
-   allocation was necessary, or a freshly allocated memory block otherwise.
-   In case of error: NULL is returned and errno is set.  Particular errno
-   values: EINVAL, EILSEQ, ENOMEM.  */
-extern char *
-       u8_conv_to_encoding (const char *tocode,
-                            enum iconv_ilseq_handler handler,
-                            const uint8_t *src, size_t srclen,
-                            size_t *offsets,
-                            char *_UC_RESTRICT resultbuf, size_t *lengthp);
-extern char *
-       u16_conv_to_encoding (const char *tocode,
-                             enum iconv_ilseq_handler handler,
-                             const uint16_t *src, size_t srclen,
-                             size_t *offsets,
-                             char *_UC_RESTRICT resultbuf, size_t *lengthp);
-extern char *
-       u32_conv_to_encoding (const char *tocode,
-                             enum iconv_ilseq_handler handler,
-                             const uint32_t *src, size_t srclen,
-                             size_t *offsets,
-                             char *_UC_RESTRICT resultbuf, size_t *lengthp);
-
-/* Converts a NUL terminated string from a given encoding.
-   The result is malloc allocated, or NULL (with errno set) in case of error.
-   Particular errno values: EILSEQ, ENOMEM.  */
-extern uint8_t *
-       u8_strconv_from_encoding (const char *string,
-                                 const char *fromcode,
-                                 enum iconv_ilseq_handler handler);
-extern uint16_t *
-       u16_strconv_from_encoding (const char *string,
-                                  const char *fromcode,
-                                  enum iconv_ilseq_handler handler);
-extern uint32_t *
-       u32_strconv_from_encoding (const char *string,
-                                  const char *fromcode,
-                                  enum iconv_ilseq_handler handler);
-
-/* Converts a NUL terminated string to a given encoding.
-   The result is malloc allocated, or NULL (with errno set) in case of error.
-   Particular errno values: EILSEQ, ENOMEM.  */
-extern char *
-       u8_strconv_to_encoding (const uint8_t *string,
-                               const char *tocode,
-                               enum iconv_ilseq_handler handler);
-extern char *
-       u16_strconv_to_encoding (const uint16_t *string,
-                                const char *tocode,
-                                enum iconv_ilseq_handler handler);
-extern char *
-       u32_strconv_to_encoding (const uint32_t *string,
-                                const char *tocode,
-                                enum iconv_ilseq_handler handler);
-
-/* Converts a NUL terminated string from the locale encoding.
-   The result is malloc allocated, or NULL (with errno set) in case of error.
-   Particular errno values: ENOMEM.  */
-extern uint8_t *
-       u8_strconv_from_locale (const char *string);
-extern uint16_t *
-       u16_strconv_from_locale (const char *string);
-extern uint32_t *
-       u32_strconv_from_locale (const char *string);
-
-/* Converts a NUL terminated string to the locale encoding.
-   The result is malloc allocated, or NULL (with errno set) in case of error.
-   Particular errno values: ENOMEM.  */
-extern char *
-       u8_strconv_to_locale (const uint8_t *string);
-extern char *
-       u16_strconv_to_locale (const uint16_t *string);
-extern char *
-       u32_strconv_to_locale (const uint32_t *string);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UNICONV_H */
diff --git a/tp/Texinfo/XS/gnulib/lib/uniconv/u-conv-from-enc.h 
b/tp/Texinfo/XS/gnulib/lib/uniconv/u-conv-from-enc.h
deleted file mode 100644
index 31e30e1ee4..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/uniconv/u-conv-from-enc.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/* Conversion to UTF-16/UTF-32 from legacy encodings.
-   Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
-
-   This file is free software.
-   It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
-   You can redistribute it and/or modify it under either
-     - the terms of the GNU Lesser General Public License as published
-       by the Free Software Foundation, either version 3, or (at your
-       option) any later version, or
-     - the terms of the GNU General Public License as published by the
-       Free Software Foundation; either version 2, or (at your option)
-       any later version, or
-     - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
-
-   This file 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 and the GNU General Public License
-   for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License and of the GNU General Public License along with this
-   program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-UNIT *
-FUNC (const char *fromcode,
-      enum iconv_ilseq_handler handler,
-      const char *src, size_t srclen,
-      size_t *offsets,
-      UNIT *resultbuf, size_t *lengthp)
-{
-#if HAVE_UTF_NAME
-  char *result = (char *) resultbuf;
-  size_t length = *lengthp * sizeof (UNIT);
-
-  if (mem_iconveha (src, srclen, fromcode, UTF_NAME, true, handler,
-                    offsets, &result, &length) < 0)
-    return NULL;
-  if (offsets != NULL)
-    {
-      /* Convert 'char *' offsets to 'UNIT *' offsets.  */
-      size_t *offsets_end = offsets + srclen;
-      size_t *o;
-
-      for (o = offsets; o < offsets_end; o++)
-        if (*o != (size_t)(-1))
-          *o = *o / sizeof (UNIT);
-    }
-  if ((length % sizeof (UNIT)) != 0)
-    abort ();
-  *lengthp = length / sizeof (UNIT);
-  return (UNIT *) result;
-#else
-  uint8_t *utf8_string;
-  size_t utf8_length;
-  UNIT *result;
-
-  utf8_string =
-    u8_conv_from_encoding (fromcode, handler, src, srclen, offsets,
-                           NULL, &utf8_length);
-  if (utf8_string == NULL)
-    return NULL;
-  result = U8_TO_U (utf8_string, utf8_length, resultbuf, lengthp);
-  if (result == NULL)
-    {
-      int saved_errno = errno;
-      free (utf8_string);
-      errno = saved_errno;
-      return NULL;
-    }
-  if (offsets != NULL)
-    {
-      size_t length = *lengthp;
-      size_t *offsets_end = offsets + srclen;
-      size_t *o;
-      size_t off8 = 0;  /* offset into utf8_string */
-      size_t offunit = 0;       /* offset into result */
-
-      for (o = offsets; o < offsets_end; o++)
-        if (*o != (size_t)(-1))
-          {
-            while (off8 < *o)
-              {
-                int count8 = u8_mblen (utf8_string + off8, utf8_length - off8);
-                int countunit = U_MBLEN (result + offunit, length - offunit);
-                if (count8 < 0 || countunit < 0)
-                  abort ();
-                off8 += count8;
-                offunit += countunit;
-              }
-            if (*o != off8)
-              abort ();
-            *o = offunit;
-          }
-    }
-  free (utf8_string);
-  return result;
-#endif
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/uniconv/u-strconv-from-enc.h 
b/tp/Texinfo/XS/gnulib/lib/uniconv/u-strconv-from-enc.h
deleted file mode 100644
index 9f3e099d14..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/uniconv/u-strconv-from-enc.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Conversion to UTF-8/UTF-16/UTF-32 from legacy encodings.
-   Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-UNIT *
-FUNC (const char *string,
-      const char *fromcode,
-      enum iconv_ilseq_handler handler)
-{
-  UNIT *result;
-  size_t length;
-
-  result =
-    U_CONV_FROM_ENCODING (fromcode, handler,
-                          string, strlen (string) + 1, NULL,
-                          NULL, &length);
-  if (result == NULL)
-    return NULL;
-  /* Verify the result has exactly one NUL unit, at the end.  */
-  if (!(length > 0 && result[length-1] == 0
-        && U_STRLEN (result) == length-1))
-    {
-      free (result);
-      errno = EILSEQ;
-      return NULL;
-    }
-  return result;
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/uniconv/u32-conv-from-enc.c 
b/tp/Texinfo/XS/gnulib/lib/uniconv/u32-conv-from-enc.c
deleted file mode 100644
index 9d4ac530d1..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/uniconv/u32-conv-from-enc.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Conversion to UTF-32 from legacy encodings.
-   Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
-
-   This file is free software.
-   It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
-   You can redistribute it and/or modify it under either
-     - the terms of the GNU Lesser General Public License as published
-       by the Free Software Foundation, either version 3, or (at your
-       option) any later version, or
-     - the terms of the GNU General Public License as published by the
-       Free Software Foundation; either version 2, or (at your option)
-       any later version, or
-     - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
-
-   This file 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 and the GNU General Public License
-   for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License and of the GNU General Public License along with this
-   program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* Written by Bruno Haible <bruno@clisp.org>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "uniconv.h"
-
-#include <errno.h>
-#include <stdlib.h>
-
-#include "striconveha.h"
-#include "unistr.h"
-
-/* Name of UTF-32 or UCS-4 encoding with machine dependent endianness and
-   alignment.  */
-#if defined _LIBICONV_VERSION
-# define UTF32_NAME "UCS-4-INTERNAL"
-#elif ((__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)) && 
!defined __UCLIBC__
-# define UTF32_NAME "WCHAR_T"
-#endif
-
-#define FUNC u32_conv_from_encoding
-#define UNIT uint32_t
-#define U8_TO_U u8_to_u32
-#define U_MBLEN u32_mblen
-#if defined UTF32_NAME
-# define UTF_NAME UTF32_NAME
-# define HAVE_UTF_NAME 1
-#endif
-#include "u-conv-from-enc.h"
diff --git a/tp/Texinfo/XS/gnulib/lib/uniconv/u32-strconv-from-enc.c 
b/tp/Texinfo/XS/gnulib/lib/uniconv/u32-strconv-from-enc.c
deleted file mode 100644
index 9254a75e20..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/uniconv/u32-strconv-from-enc.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Conversion to UTF-32 from legacy encodings.
-   Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
-
-   This file is free software.
-   It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
-   You can redistribute it and/or modify it under either
-     - the terms of the GNU Lesser General Public License as published
-       by the Free Software Foundation, either version 3, or (at your
-       option) any later version, or
-     - the terms of the GNU General Public License as published by the
-       Free Software Foundation; either version 2, or (at your option)
-       any later version, or
-     - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
-
-   This file 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 and the GNU General Public License
-   for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License and of the GNU General Public License along with this
-   program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* Written by Bruno Haible <bruno@clisp.org>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "uniconv.h"
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "unistr.h"
-
-#define FUNC u32_strconv_from_encoding
-#define UNIT uint32_t
-#define U_CONV_FROM_ENCODING u32_conv_from_encoding
-#define U_STRLEN u32_strlen
-#include "u-strconv-from-enc.h"
diff --git a/tp/Texinfo/XS/gnulib/lib/uniconv/u8-conv-from-enc.c 
b/tp/Texinfo/XS/gnulib/lib/uniconv/u8-conv-from-enc.c
deleted file mode 100644
index 424a949e6f..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/uniconv/u8-conv-from-enc.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Conversion to UTF-8 from legacy encodings.
-   Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-/* Written by Bruno Haible <bruno@clisp.org>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "uniconv.h"
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "c-strcaseeq.h"
-#include "striconveha.h"
-#include "unistr.h"
-
-uint8_t *
-u8_conv_from_encoding (const char *fromcode,
-                       enum iconv_ilseq_handler handler,
-                       const char *src, size_t srclen,
-                       size_t *offsets,
-                       uint8_t *resultbuf, size_t *lengthp)
-{
-  if (STRCASEEQ (fromcode, "UTF-8", 'U','T','F','-','8',0,0,0,0))
-    {
-      /* Conversion from UTF-8 to UTF-8.  No need to go through iconv().  */
-      uint8_t *result;
-
-      if (u8_check ((const uint8_t *) src, srclen))
-        {
-          errno = EILSEQ;
-          return NULL;
-        }
-
-      if (offsets != NULL)
-        {
-          size_t i;
-
-          for (i = 0; i < srclen; )
-            {
-              int count = u8_mblen ((const uint8_t *) src + i, srclen - i);
-              /* We can rely on count > 0 because of the previous u8_check.  */
-              if (count <= 0)
-                abort ();
-              offsets[i] = i;
-              i++;
-              while (--count > 0)
-                offsets[i++] = (size_t)(-1);
-            }
-        }
-
-      /* Memory allocation.  */
-      if (resultbuf != NULL && *lengthp >= srclen)
-        result = resultbuf;
-      else
-        {
-          result = (uint8_t *) malloc (srclen > 0 ? srclen : 1);
-          if (result == NULL)
-            {
-              errno = ENOMEM;
-              return NULL;
-            }
-        }
-
-      if (srclen > 0)
-        memcpy ((char *) result, src, srclen);
-      *lengthp = srclen;
-      return result;
-    }
-  else
-    {
-      char *result = (char *) resultbuf;
-      size_t length = *lengthp;
-
-      if (mem_iconveha (src, srclen, fromcode, "UTF-8", true, handler,
-                        offsets, &result, &length) < 0)
-        return NULL;
-
-      if (result == NULL) /* when (resultbuf == NULL && length == 0)  */
-        {
-          result = (char *) malloc (1);
-          if (result == NULL)
-            {
-              errno = ENOMEM;
-              return NULL;
-            }
-        }
-      *lengthp = length;
-      return (uint8_t *) result;
-    }
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/uniconv/u8-strconv-from-enc.c 
b/tp/Texinfo/XS/gnulib/lib/uniconv/u8-strconv-from-enc.c
deleted file mode 100644
index 22811c7718..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/uniconv/u8-strconv-from-enc.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Conversion to UTF-8 from legacy encodings.
-   Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-/* Written by Bruno Haible <bruno@clisp.org>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "uniconv.h"
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "unistr.h"
-
-#define FUNC u8_strconv_from_encoding
-#define UNIT uint8_t
-#define U_CONV_FROM_ENCODING u8_conv_from_encoding
-#define U_STRLEN u8_strlen
-#include "u-strconv-from-enc.h"
diff --git a/tp/Texinfo/XS/gnulib/lib/uniconv/u8-strconv-to-enc.c 
b/tp/Texinfo/XS/gnulib/lib/uniconv/u8-strconv-to-enc.c
deleted file mode 100644
index 7745b6194e..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/uniconv/u8-strconv-to-enc.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* Conversion from UTF-8 to legacy encodings.
-   Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
-
-   This file is free software.
-   It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
-   You can redistribute it and/or modify it under either
-     - the terms of the GNU Lesser General Public License as published
-       by the Free Software Foundation, either version 3, or (at your
-       option) any later version, or
-     - the terms of the GNU General Public License as published by the
-       Free Software Foundation; either version 2, or (at your option)
-       any later version, or
-     - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
-
-   This file 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 and the GNU General Public License
-   for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License and of the GNU General Public License along with this
-   program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-/* Written by Bruno Haible <bruno@clisp.org>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "uniconv.h"
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "c-strcaseeq.h"
-#include "striconveha.h"
-#include "unistr.h"
-
-char *
-u8_strconv_to_encoding (const uint8_t *string,
-                        const char *tocode,
-                        enum iconv_ilseq_handler handler)
-{
-  char *result;
-  size_t length;
-
-  if (STRCASEEQ (tocode, "UTF-8", 'U','T','F','-','8',0,0,0,0))
-    {
-      /* Conversion from UTF-8 to UTF-8.  No need to go through iconv().  */
-      length = u8_strlen (string) + 1;
-      if (u8_check (string, length))
-        {
-          errno = EILSEQ;
-          return NULL;
-        }
-      result = (char *) malloc (length);
-      if (result == NULL)
-        {
-          errno = ENOMEM;
-          return NULL;
-        }
-      memcpy (result, (const char *) string, length);
-      return result;
-    }
-  else
-    {
-      result = NULL;
-      length = 0;
-      if (mem_iconveha ((const char *) string, u8_strlen (string) + 1,
-                        "UTF-8", tocode,
-                        handler == iconveh_question_mark, handler,
-                        NULL, &result, &length) < 0)
-        return NULL;
-      /* Verify the result has exactly one NUL byte, at the end.  */
-      if (!(length > 0 && result[length-1] == '\0'
-            && strlen (result) == length-1))
-        {
-          free (result);
-          errno = EILSEQ;
-          return NULL;
-        }
-      return result;
-    }
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/unictype.in.h 
b/tp/Texinfo/XS/gnulib/lib/unictype.in.h
index 52b31c4dae..fdd2cd1cec 100644
--- a/tp/Texinfo/XS/gnulib/lib/unictype.in.h
+++ b/tp/Texinfo/XS/gnulib/lib/unictype.in.h
@@ -640,6 +640,8 @@ extern @GNULIB_UNICTYPE_PROPERTY_ID_CONTINUE_DLL_VARIABLE@ 
const uc_property_t U
 extern @GNULIB_UNICTYPE_PROPERTY_OTHER_ID_CONTINUE_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_OTHER_ID_CONTINUE;
 extern @GNULIB_UNICTYPE_PROPERTY_XID_START_DLL_VARIABLE@ const uc_property_t 
UC_PROPERTY_XID_START;
 extern @GNULIB_UNICTYPE_PROPERTY_XID_CONTINUE_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_XID_CONTINUE;
+extern @GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_START_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_ID_COMPAT_MATH_START;
+extern @GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_CONTINUE_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_ID_COMPAT_MATH_CONTINUE;
 extern @GNULIB_UNICTYPE_PROPERTY_PATTERN_WHITE_SPACE_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_PATTERN_WHITE_SPACE;
 extern @GNULIB_UNICTYPE_PROPERTY_PATTERN_SYNTAX_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_PATTERN_SYNTAX;
 /* Shaping and rendering.  */
@@ -673,6 +675,7 @@ extern 
@GNULIB_UNICTYPE_PROPERTY_ASCII_HEX_DIGIT_DLL_VARIABLE@ const uc_property
 extern @GNULIB_UNICTYPE_PROPERTY_IDEOGRAPHIC_DLL_VARIABLE@ const uc_property_t 
UC_PROPERTY_IDEOGRAPHIC;
 extern @GNULIB_UNICTYPE_PROPERTY_UNIFIED_IDEOGRAPH_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_UNIFIED_IDEOGRAPH;
 extern @GNULIB_UNICTYPE_PROPERTY_RADICAL_DLL_VARIABLE@ const uc_property_t 
UC_PROPERTY_RADICAL;
+extern @GNULIB_UNICTYPE_PROPERTY_IDS_UNARY_OPERATOR_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_IDS_UNARY_OPERATOR;
 extern @GNULIB_UNICTYPE_PROPERTY_IDS_BINARY_OPERATOR_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_IDS_BINARY_OPERATOR;
 extern @GNULIB_UNICTYPE_PROPERTY_IDS_TRINARY_OPERATOR_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_IDS_TRINARY_OPERATOR;
 /* Emoji.  */
@@ -688,6 +691,7 @@ extern @GNULIB_UNICTYPE_PROPERTY_SPACE_DLL_VARIABLE@ const 
uc_property_t UC_PROP
 extern @GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE@ const uc_property_t 
UC_PROPERTY_NON_BREAK;
 extern @GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE@ const uc_property_t 
UC_PROPERTY_ISO_CONTROL;
 extern @GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE@ const 
uc_property_t UC_PROPERTY_FORMAT_CONTROL;
+extern @GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE@ 
const uc_property_t UC_PROPERTY_PREPENDED_CONCATENATION_MARK;
 extern @GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE@ const uc_property_t 
UC_PROPERTY_DASH;
 extern @GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE@ const uc_property_t 
UC_PROPERTY_HYPHEN;
 extern @GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE@ const uc_property_t 
UC_PROPERTY_PUNCTUATION;
@@ -780,6 +784,10 @@ extern bool uc_is_property_xid_start (ucs4_t uc)
        _UC_ATTRIBUTE_CONST;
 extern bool uc_is_property_xid_continue (ucs4_t uc)
        _UC_ATTRIBUTE_CONST;
+extern bool uc_is_property_id_compat_math_start (ucs4_t uc)
+       _UC_ATTRIBUTE_CONST;
+extern bool uc_is_property_id_compat_math_continue (ucs4_t uc)
+       _UC_ATTRIBUTE_CONST;
 extern bool uc_is_property_pattern_white_space (ucs4_t uc)
        _UC_ATTRIBUTE_CONST;
 extern bool uc_is_property_pattern_syntax (ucs4_t uc)
@@ -838,6 +846,8 @@ extern bool uc_is_property_unified_ideograph (ucs4_t uc)
        _UC_ATTRIBUTE_CONST;
 extern bool uc_is_property_radical (ucs4_t uc)
        _UC_ATTRIBUTE_CONST;
+extern bool uc_is_property_ids_unary_operator (ucs4_t uc)
+       _UC_ATTRIBUTE_CONST;
 extern bool uc_is_property_ids_binary_operator (ucs4_t uc)
        _UC_ATTRIBUTE_CONST;
 extern bool uc_is_property_ids_trinary_operator (ucs4_t uc)
@@ -864,6 +874,8 @@ extern bool uc_is_property_iso_control (ucs4_t uc)
        _UC_ATTRIBUTE_CONST;
 extern bool uc_is_property_format_control (ucs4_t uc)
        _UC_ATTRIBUTE_CONST;
+extern bool uc_is_property_prepended_concatenation_mark (ucs4_t uc)
+       _UC_ATTRIBUTE_CONST;
 extern bool uc_is_property_dash (ucs4_t uc)
        _UC_ATTRIBUTE_CONST;
 extern bool uc_is_property_hyphen (ucs4_t uc)
@@ -909,6 +921,40 @@ extern bool uc_is_property_regional_indicator (ucs4_t uc)
 
 /* ========================================================================= */
 
+/* Other attributes.  */
+
+/* ------------------------------------------------------------------------- */
+
+/* Indic_Conjunct_Break (InCB): from the file DerivedCoreProperties.txt
+   in the Unicode Character Database.  */
+
+/* Possible values of the Indic_Conjunct_Break attribute.
+   This enumeration may be extended in the future.  */
+enum
+{
+  UC_INDIC_CONJUNCT_BREAK_NONE,              /* None */
+  UC_INDIC_CONJUNCT_BREAK_CONSONANT,         /* Consonant */
+  UC_INDIC_CONJUNCT_BREAK_LINKER,            /* Linker */
+  UC_INDIC_CONJUNCT_BREAK_EXTEND             /* Extend */
+};
+
+/* Return the name of an Indic_Conjunct_Break value.  */
+extern const char *
+       uc_indic_conjunct_break_name (int indic_conjunct_break)
+       _UC_ATTRIBUTE_CONST;
+
+/* Return the Indic_Conjunct_Break value given by name, e.g. "Consonant".  */
+extern int
+       uc_indic_conjunct_break_byname (const char *indic_conjunct_break_name)
+       _UC_ATTRIBUTE_PURE;
+
+/* Return the Indic_Conjunct_Break attribute of a Unicode character.  */
+extern int
+       uc_indic_conjunct_break (ucs4_t uc)
+       _UC_ATTRIBUTE_CONST;
+
+/* ========================================================================= */
+
 /* Subdivision of the Unicode characters into scripts.  */
 
 typedef struct
diff --git a/tp/Texinfo/XS/gnulib/lib/unictype/categ_L.h 
b/tp/Texinfo/XS/gnulib/lib/unictype/categ_L.h
index e28ae89f20..a1b12ad2fe 100644
--- a/tp/Texinfo/XS/gnulib/lib/unictype/categ_L.h
+++ b/tp/Texinfo/XS/gnulib/lib/unictype/categ_L.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Categories of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software.
    It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
@@ -35,7 +35,7 @@ struct
     int header[1];
     int level1[4];
     short level2[4 << 7];
-    unsigned int level3[77 << 4];
+    unsigned int level3[78 << 4];
   }
 u_categ_L =
 {
@@ -421,14 +421,14 @@ u_categ_L =
         5 +   512 * sizeof (short) / sizeof (int) +   320,
         5 +   512 * sizeof (short) / sizeof (int) +   320,
         5 +   512 * sizeof (short) / sizeof (int) +  1168,
-       -1,
-       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +   320,
+        5 +   512 * sizeof (short) / sizeof (int) +  1184,
        -1,
        -1,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   320,
-        5 +   512 * sizeof (short) / sizeof (int) +  1184,
+        5 +   512 * sizeof (short) / sizeof (int) +  1200,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   320,
@@ -440,7 +440,7 @@ u_categ_L =
         5 +   512 * sizeof (short) / sizeof (int) +   320,
         5 +   512 * sizeof (short) / sizeof (int) +   320,
         5 +   512 * sizeof (short) / sizeof (int) +   320,
-        5 +   512 * sizeof (short) / sizeof (int) +  1200,
+        5 +   512 * sizeof (short) / sizeof (int) +  1216,
         5 +   512 * sizeof (short) / sizeof (int) +   320,
         5 +   512 * sizeof (short) / sizeof (int) +   320,
         5 +   512 * sizeof (short) / sizeof (int) +   320,
@@ -448,7 +448,7 @@ u_categ_L =
         5 +   512 * sizeof (short) / sizeof (int) +   320,
         5 +   512 * sizeof (short) / sizeof (int) +   320,
         5 +   512 * sizeof (short) / sizeof (int) +   320,
-        5 +   512 * sizeof (short) / sizeof (int) +  1216,
+        5 +   512 * sizeof (short) / sizeof (int) +  1232,
        -1,
        -1,
        -1,
@@ -856,7 +856,11 @@ u_categ_L =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x00000001U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFF0001U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x3FFFFFFFU, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x3FFFFFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
diff --git a/tp/Texinfo/XS/gnulib/lib/unictype/categ_M.h 
b/tp/Texinfo/XS/gnulib/lib/unictype/categ_M.h
index 508b137d5c..b316a2d8d0 100644
--- a/tp/Texinfo/XS/gnulib/lib/unictype/categ_M.h
+++ b/tp/Texinfo/XS/gnulib/lib/unictype/categ_M.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Categories of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as
diff --git a/tp/Texinfo/XS/gnulib/lib/unictype/categ_Mn.h 
b/tp/Texinfo/XS/gnulib/lib/unictype/categ_Mn.h
index 3a0b853b50..c24a8f618c 100644
--- a/tp/Texinfo/XS/gnulib/lib/unictype/categ_Mn.h
+++ b/tp/Texinfo/XS/gnulib/lib/unictype/categ_Mn.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Categories of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software.
    It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
diff --git a/tp/Texinfo/XS/gnulib/lib/unictype/categ_Nd.h 
b/tp/Texinfo/XS/gnulib/lib/unictype/categ_Nd.h
index 43831d0169..9d3a21f3aa 100644
--- a/tp/Texinfo/XS/gnulib/lib/unictype/categ_Nd.h
+++ b/tp/Texinfo/XS/gnulib/lib/unictype/categ_Nd.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Categories of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software.
    It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
diff --git a/tp/Texinfo/XS/gnulib/lib/unictype/combiningclass.h 
b/tp/Texinfo/XS/gnulib/lib/unictype/combiningclass.h
index 1e473951e8..4b114e6dfd 100644
--- a/tp/Texinfo/XS/gnulib/lib/unictype/combiningclass.h
+++ b/tp/Texinfo/XS/gnulib/lib/unictype/combiningclass.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Combining class of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as
diff --git a/tp/Texinfo/XS/gnulib/lib/unictype/ctype_upper.h 
b/tp/Texinfo/XS/gnulib/lib/unictype/ctype_upper.h
index dbe1da4d54..d9259bf80d 100644
--- a/tp/Texinfo/XS/gnulib/lib/unictype/ctype_upper.h
+++ b/tp/Texinfo/XS/gnulib/lib/unictype/ctype_upper.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* ISO C <ctype.h> like properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2023 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as
diff --git a/tp/Texinfo/XS/gnulib/lib/unictype/pr_alphabetic.h 
b/tp/Texinfo/XS/gnulib/lib/unictype/pr_alphabetic.h
index 645d8c7aec..a5560326ec 100644
--- a/tp/Texinfo/XS/gnulib/lib/unictype/pr_alphabetic.h
+++ b/tp/Texinfo/XS/gnulib/lib/unictype/pr_alphabetic.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software.
    It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
@@ -35,7 +35,7 @@ struct
     int header[1];
     int level1[4];
     short level2[4 << 7];
-    unsigned int level3[79 << 4];
+    unsigned int level3[80 << 4];
   }
 u_property_alphabetic =
 {
@@ -421,14 +421,14 @@ u_property_alphabetic =
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
         5 +   512 * sizeof (short) / sizeof (int) +  1200,
-       -1,
-       -1,
+        5 +   512 * sizeof (short) / sizeof (int) +   336,
+        5 +   512 * sizeof (short) / sizeof (int) +  1216,
        -1,
        -1,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
-        5 +   512 * sizeof (short) / sizeof (int) +  1216,
+        5 +   512 * sizeof (short) / sizeof (int) +  1232,
        -1,
        -1,
         5 +   512 * sizeof (short) / sizeof (int) +   336,
@@ -440,7 +440,7 @@ u_property_alphabetic =
         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) +  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,
@@ -448,7 +448,7 @@ u_property_alphabetic =
         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) +  1248,
+        5 +   512 * sizeof (short) / sizeof (int) +  1264,
        -1,
        -1,
        -1,
@@ -864,7 +864,11 @@ u_property_alphabetic =
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
     0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU,
-    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0x00000001U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFFFFFFU, 0xFFFF0001U,
+    0xFFFFFFFFU, 0xFFFFFFFFU, 0x3FFFFFFFU, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
+    0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x3FFFFFFFU, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
     0x00000000U, 0x00000000U, 0x00000000U, 0x00000000U,
diff --git a/tp/Texinfo/XS/gnulib/lib/unictype/pr_join_control.h 
b/tp/Texinfo/XS/gnulib/lib/unictype/pr_join_control.h
index 3bbfe38953..37e303b823 100644
--- a/tp/Texinfo/XS/gnulib/lib/unictype/pr_join_control.h
+++ b/tp/Texinfo/XS/gnulib/lib/unictype/pr_join_control.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software.
    It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
diff --git a/tp/Texinfo/XS/gnulib/lib/unictype/pr_soft_dotted.h 
b/tp/Texinfo/XS/gnulib/lib/unictype/pr_soft_dotted.h
index 95958a2371..5239a99de9 100644
--- a/tp/Texinfo/XS/gnulib/lib/unictype/pr_soft_dotted.h
+++ b/tp/Texinfo/XS/gnulib/lib/unictype/pr_soft_dotted.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Properties of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software.
    It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
diff --git a/tp/Texinfo/XS/gnulib/lib/uninorm/composition-table.gperf 
b/tp/Texinfo/XS/gnulib/lib/uninorm/composition-table.gperf
index d7c7d18400..b66b80e521 100644
--- a/tp/Texinfo/XS/gnulib/lib/uninorm/composition-table.gperf
+++ b/tp/Texinfo/XS/gnulib/lib/uninorm/composition-table.gperf
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Canonical composition of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2009-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2024 Free Software Foundation, Inc.
 
    This file is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as
diff --git a/tp/Texinfo/XS/gnulib/lib/uninorm/decomposition-table1.h 
b/tp/Texinfo/XS/gnulib/lib/uninorm/decomposition-table1.h
index c2e8e6d9cf..ee245ce45d 100644
--- a/tp/Texinfo/XS/gnulib/lib/uninorm/decomposition-table1.h
+++ b/tp/Texinfo/XS/gnulib/lib/uninorm/decomposition-table1.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Decomposition of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as
diff --git a/tp/Texinfo/XS/gnulib/lib/uninorm/decomposition-table2.h 
b/tp/Texinfo/XS/gnulib/lib/uninorm/decomposition-table2.h
index cddd991778..667ce47498 100644
--- a/tp/Texinfo/XS/gnulib/lib/uninorm/decomposition-table2.h
+++ b/tp/Texinfo/XS/gnulib/lib/uninorm/decomposition-table2.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Decomposition of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as
diff --git a/tp/Texinfo/XS/gnulib/lib/unistr/u-strlen.h 
b/tp/Texinfo/XS/gnulib/lib/unistr/u-strlen.h
deleted file mode 100644
index 03106a15fc..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/unistr/u-strlen.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Determine length of UTF-8/UTF-16/UTF-32 string.
-   Copyright (C) 1999, 2002, 2006, 2009-2024 Free Software Foundation, Inc.
-   Written by Bruno Haible <bruno@clisp.org>, 2002.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-size_t
-FUNC (const UNIT *s)
-{
-  const UNIT *ptr;
-
-  for (ptr = s; *ptr != 0; ptr++)
-    ;
-  return ptr - s;
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/unistr/u32-mblen.c 
b/tp/Texinfo/XS/gnulib/lib/unistr/u32-mblen.c
deleted file mode 100644
index 0317b3c17b..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/unistr/u32-mblen.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Look at first character in UTF-32 string.
-   Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
-   Written by Bruno Haible <bruno@clisp.org>, 2002.
-
-   This file is free software.
-   It is dual-licensed under "the GNU LGPLv3+ or the GNU GPLv2+".
-   You can redistribute it and/or modify it under either
-     - the terms of the GNU Lesser General Public License as published
-       by the Free Software Foundation, either version 3, or (at your
-       option) any later version, or
-     - the terms of the GNU General Public License as published by the
-       Free Software Foundation; either version 2, or (at your option)
-       any later version, or
-     - the same dual license "the GNU LGPLv3+ or the GNU GPLv2+".
-
-   This file 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 and the GNU General Public License
-   for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License and of the GNU General Public License along with this
-   program.  If not, see <https://www.gnu.org/licenses/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "unistr.h"
-
-int
-u32_mblen (const uint32_t *s, size_t n)
-{
-  if (n > 0)
-    {
-      uint32_t c = *s;
-
-      if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
-        return (c != 0 ? 1 : 0);
-    }
-  /* invalid or incomplete multibyte character */
-  return -1;
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/unistr/u32-strlen.c 
b/tp/Texinfo/XS/gnulib/lib/unistr/u32-strlen.c
deleted file mode 100644
index 1c43a30ad8..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/unistr/u32-strlen.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Determine length of UTF-32 string.
-   Copyright (C) 1999, 2002, 2006, 2009-2024 Free Software Foundation, Inc.
-   Written by Bruno Haible <bruno@clisp.org>, 2002.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "unistr.h"
-
-#define FUNC u32_strlen
-#define UNIT uint32_t
-#include "u-strlen.h"
diff --git a/tp/Texinfo/XS/gnulib/lib/unistr/u8-check.c 
b/tp/Texinfo/XS/gnulib/lib/unistr/u8-check.c
deleted file mode 100644
index 556f992763..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/unistr/u8-check.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Check UTF-8 string.
-   Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
-   Written by Bruno Haible <bruno@clisp.org>, 2002.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "unistr.h"
-
-const uint8_t *
-u8_check (const uint8_t *s, size_t n)
-{
-  const uint8_t *s_end = s + n;
-
-  while (s < s_end)
-    {
-      /* Keep in sync with unistr.h and u8-mbtouc-aux.c.  */
-      uint8_t c = *s;
-
-      if (c < 0x80)
-        {
-          s++;
-          continue;
-        }
-      if (c >= 0xc2)
-        {
-          if (c < 0xe0)
-            {
-              if (s + 2 <= s_end
-                  && (s[1] ^ 0x80) < 0x40)
-                {
-                  s += 2;
-                  continue;
-                }
-            }
-          else if (c < 0xf0)
-            {
-              if (s + 3 <= s_end
-                  && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
-                  && (c >= 0xe1 || s[1] >= 0xa0)
-                  && (c != 0xed || s[1] < 0xa0))
-                {
-                  s += 3;
-                  continue;
-                }
-            }
-          else if (c <= 0xf4)
-            {
-              if (s + 4 <= s_end
-                  && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
-                  && (s[3] ^ 0x80) < 0x40
-                  && (c >= 0xf1 || s[1] >= 0x90)
-                  && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90)))
-                {
-                  s += 4;
-                  continue;
-                }
-            }
-        }
-      /* invalid or incomplete multibyte character */
-      return s;
-    }
-  return NULL;
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/unistr/u8-mblen.c 
b/tp/Texinfo/XS/gnulib/lib/unistr/u8-mblen.c
deleted file mode 100644
index 79878f24cd..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/unistr/u8-mblen.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Look at first character in UTF-8 string.
-   Copyright (C) 1999-2000, 2002, 2006-2007, 2009-2024 Free Software
-   Foundation, Inc.
-   Written by Bruno Haible <bruno@clisp.org>, 2002.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "unistr.h"
-
-int
-u8_mblen (const uint8_t *s, size_t n)
-{
-  if (n > 0)
-    {
-      /* Keep in sync with unistr.h and u8-mbtouc-aux.c.  */
-      uint8_t c = *s;
-
-      if (c < 0x80)
-        return (c != 0 ? 1 : 0);
-      if (c >= 0xc2)
-        {
-          if (c < 0xe0)
-            {
-              if (n >= 2
-                  && (s[1] ^ 0x80) < 0x40)
-                return 2;
-            }
-          else if (c < 0xf0)
-            {
-              if (n >= 3
-                  && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
-                  && (c >= 0xe1 || s[1] >= 0xa0)
-                  && (c != 0xed || s[1] < 0xa0))
-                return 3;
-            }
-          else if (c <= 0xf4)
-            {
-              if (n >= 4
-                  && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
-                  && (s[3] ^ 0x80) < 0x40
-                  && (c >= 0xf1 || s[1] >= 0x90)
-                  && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90)))
-                return 4;
-            }
-        }
-    }
-  /* invalid or incomplete multibyte character */
-  return -1;
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/unistr/u8-prev.c 
b/tp/Texinfo/XS/gnulib/lib/unistr/u8-prev.c
deleted file mode 100644
index d733f758a7..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/unistr/u8-prev.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Iterate over previous character in UTF-8 string.
-   Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
-   Written by Bruno Haible <bruno@clisp.org>, 2002.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "unistr.h"
-
-const uint8_t *
-u8_prev (ucs4_t *puc, const uint8_t *s, const uint8_t *start)
-{
-  /* Keep in sync with unistr.h and u8-mbtouc-aux.c.  */
-  if (s != start)
-    {
-      uint8_t c_1 = s[-1];
-
-      if (c_1 < 0x80)
-        {
-          *puc = c_1;
-          return s - 1;
-        }
-      if ((c_1 ^ 0x80) < 0x40)
-        if (s - 1 != start)
-          {
-            uint8_t c_2 = s[-2];
-
-            if (c_2 >= 0xc2 && c_2 < 0xe0)
-              {
-                *puc = ((unsigned int) (c_2 & 0x1f) << 6)
-                       | (unsigned int) (c_1 ^ 0x80);
-                return s - 2;
-              }
-            if ((c_2 ^ 0x80) < 0x40)
-              if (s - 2 != start)
-                {
-                  uint8_t c_3 = s[-3];
-
-                  if (c_3 >= 0xe0 && c_3 < 0xf0
-                      && (c_3 >= 0xe1 || c_2 >= 0xa0)
-                      && (c_3 != 0xed || c_2 < 0xa0))
-                    {
-                      *puc = ((unsigned int) (c_3 & 0x0f) << 12)
-                             | ((unsigned int) (c_2 ^ 0x80) << 6)
-                             | (unsigned int) (c_1 ^ 0x80);
-                      return s - 3;
-                    }
-                  if ((c_3 ^ 0x80) < 0x40)
-                    if (s - 3 != start)
-                      {
-                        uint8_t c_4 = s[-4];
-
-                        if (c_4 >= 0xf0 && c_4 <= 0xf4
-                            && (c_4 >= 0xf1 || c_3 >= 0x90)
-                            && (c_4 < 0xf4 || (/* c_4 == 0xf4 && */ c_3 < 
0x90)))
-                          {
-                            *puc = ((unsigned int) (c_4 & 0x07) << 18)
-                                   | ((unsigned int) (c_3 ^ 0x80) << 12)
-                                   | ((unsigned int) (c_2 ^ 0x80) << 6)
-                                   | (unsigned int) (c_1 ^ 0x80);
-                            return s - 4;
-                          }
-                      }
-                }
-          }
-    }
-  return NULL;
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/unistr/u8-to-u32.c 
b/tp/Texinfo/XS/gnulib/lib/unistr/u8-to-u32.c
deleted file mode 100644
index a57bb5dcbc..0000000000
--- a/tp/Texinfo/XS/gnulib/lib/unistr/u8-to-u32.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Convert UTF-8 string to UTF-32 string.
-   Copyright (C) 2002, 2006-2007, 2009-2024 Free Software Foundation, Inc.
-   Written by Bruno Haible <bruno@clisp.org>, 2002.
-
-   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.
-
-   This file 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.
-
-   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/>.  */
-
-#include <config.h>
-
-/* Specification.  */
-#include "unistr.h"
-
-#define FUNC u8_to_u32
-#define SRC_UNIT uint8_t
-#define DST_UNIT uint32_t
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-
-DST_UNIT *
-FUNC (const SRC_UNIT *s, size_t n, DST_UNIT *resultbuf, size_t *lengthp)
-{
-  const SRC_UNIT *s_end = s + n;
-  /* Output string accumulator.  */
-  DST_UNIT *result;
-  size_t allocated;
-  size_t length;
-
-  if (resultbuf != NULL)
-    {
-      result = resultbuf;
-      allocated = *lengthp;
-    }
-  else
-    {
-      result = NULL;
-      allocated = 0;
-    }
-  length = 0;
-  /* Invariants:
-     result is either == resultbuf or == NULL or malloc-allocated.
-     If length > 0, then result != NULL.  */
-
-  while (s < s_end)
-    {
-      ucs4_t uc;
-      int count;
-
-      /* Fetch a Unicode character from the input string.  */
-      count = u8_mbtoucr (&uc, s, s_end - s);
-      if (count < 0)
-        {
-          if (!(result == resultbuf || result == NULL))
-            free (result);
-          errno = EILSEQ;
-          return NULL;
-        }
-      s += count;
-
-      /* Store it in the output string.  */
-      if (length + 1 > allocated)
-        {
-          DST_UNIT *memory;
-
-          allocated = (allocated > 0 ? 2 * allocated : 12);
-          if (length + 1 > allocated)
-            allocated = length + 1;
-          if (result == resultbuf || result == NULL)
-            memory = (DST_UNIT *) malloc (allocated * sizeof (DST_UNIT));
-          else
-            memory =
-              (DST_UNIT *) realloc (result, allocated * sizeof (DST_UNIT));
-
-          if (memory == NULL)
-            {
-              if (!(result == resultbuf || result == NULL))
-                free (result);
-              errno = ENOMEM;
-              return NULL;
-            }
-          if (result == resultbuf && length > 0)
-            memcpy ((char *) memory, (char *) result,
-                    length * sizeof (DST_UNIT));
-          result = memory;
-        }
-      result[length++] = uc;
-    }
-
-  if (length == 0)
-    {
-      if (result == NULL)
-        {
-          /* Return a non-NULL value.  NULL means error.  */
-          result = (DST_UNIT *) malloc (1);
-          if (result == NULL)
-            {
-              errno = ENOMEM;
-              return NULL;
-            }
-        }
-    }
-  else if (result != resultbuf && length < allocated)
-    {
-      /* Shrink the allocated memory if possible.  */
-      DST_UNIT *memory;
-
-      memory = (DST_UNIT *) realloc (result, length * sizeof (DST_UNIT));
-      if (memory != NULL)
-        result = memory;
-    }
-
-  *lengthp = length;
-  return result;
-}
diff --git a/tp/Texinfo/XS/gnulib/lib/uniwidth/width0.h 
b/tp/Texinfo/XS/gnulib/lib/uniwidth/width0.h
index 0c1713ac52..6cc35536ad 100644
--- a/tp/Texinfo/XS/gnulib/lib/uniwidth/width0.h
+++ b/tp/Texinfo/XS/gnulib/lib/uniwidth/width0.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Table of non-spacing or control characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as
@@ -46,19 +46,19 @@ static const unsigned char nonspacing_table_data[48*64] = {
   0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xbf, /* 0x0580-0x05bf */
   0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x05c0-0x05ff */
   /* 0x0600-0x07ff */
-  0x3f, 0x00, 0xff, 0x17, 0x00, 0x00, 0x00, 0x00, /* 0x0600-0x063f */
+  0x00, 0x00, 0xff, 0x17, 0x00, 0x00, 0x00, 0x00, /* 0x0600-0x063f */
   0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, /* 0x0640-0x067f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0680-0x06bf */
-  0x00, 0x00, 0xc0, 0xbf, 0x9f, 0x3d, 0x00, 0x00, /* 0x06c0-0x06ff */
-  0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, /* 0x0700-0x073f */
+  0x00, 0x00, 0xc0, 0x9f, 0x9f, 0x3d, 0x00, 0x00, /* 0x06c0-0x06ff */
+  0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, /* 0x0700-0x073f */
   0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0740-0x077f */
   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, 0x00, /* 0x0780-0x07bf */
   0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f, 0x20, /* 0x07c0-0x07ff */
   /* 0x0800-0x09ff */
   0x00, 0x00, 0xc0, 0xfb, 0xef, 0x3e, 0x00, 0x00, /* 0x0800-0x083f */
   0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, /* 0x0840-0x087f */
-  0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, /* 0x0880-0x08bf */
-  0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x08c0-0x08ff */
+  0x00, 0x00, 0x00, 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 */
   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0x0980-0x09bf */
@@ -273,8 +273,8 @@ static const unsigned char nonspacing_table_data[48*64] = {
   /* 0x11000-0x111ff */
   0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, /* 0x11000-0x1103f */
   0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x80, /* 0x11040-0x1107f */
-  0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x26, /* 0x11080-0x110bf */
-  0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x110c0-0x110ff */
+  0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x06, /* 0x11080-0x110bf */
+  0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x110c0-0x110ff */
   0x07, 0x00, 0x00, 0x00, 0x80, 0xef, 0x1f, 0x00, /* 0x11100-0x1113f */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, /* 0x11140-0x1117f */
   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, /* 0x11180-0x111bf */
diff --git a/tp/Texinfo/XS/gnulib/lib/uniwidth/width2.h 
b/tp/Texinfo/XS/gnulib/lib/uniwidth/width2.h
index 19c8c02a51..47979b5d7e 100644
--- a/tp/Texinfo/XS/gnulib/lib/uniwidth/width2.h
+++ b/tp/Texinfo/XS/gnulib/lib/uniwidth/width2.h
@@ -1,8 +1,8 @@
 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
 /* Width 2 property of Unicode characters.  */
-/* Generated automatically by gen-uni-tables.c for Unicode 15.0.0.  */
+/* Generated automatically by gen-uni-tables.c for Unicode 15.1.0.  */
 
-/* Copyright (C) 2000-2022 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2024 Free Software Foundation, Inc.
 
    This file is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as
diff --git a/tp/Texinfo/XS/gnulib/lib/warn-on-use.h 
b/tp/Texinfo/XS/gnulib/lib/warn-on-use.h
index 8f4d40dcbe..701013a07f 100644
--- a/tp/Texinfo/XS/gnulib/lib/warn-on-use.h
+++ b/tp/Texinfo/XS/gnulib/lib/warn-on-use.h
@@ -32,6 +32,10 @@
    _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
    linkage.
 
+   _GL_WARN_ON_USE should not be used more than once for a given function
+   in a given compilation unit (because this may generate a warning even
+   if the function is never called).
+
    However, one of the reasons that a function is a portability trap is
    if it has the wrong signature.  Declaring FUNCTION with a different
    signature in C is a compilation error, so this macro must use the
diff --git a/tp/Texinfo/XS/gnulib/lib/xalloc-oversized.h 
b/tp/Texinfo/XS/gnulib/lib/xalloc-oversized.h
index 0b7bb2cee8..7f30f83e76 100644
--- a/tp/Texinfo/XS/gnulib/lib/xalloc-oversized.h
+++ b/tp/Texinfo/XS/gnulib/lib/xalloc-oversized.h
@@ -29,8 +29,7 @@
    is SIZE_MAX - 1.  */
 #define __xalloc_oversized(n, s) \
   ((s) != 0 \
-   && ((size_t) (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX - 1) / (s) \
-       < (n)))
+   && (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX - 1) / (s) < (n))
 
 /* Return 1 if and only if an array of N objects, each of size S,
    cannot exist reliably because its total size in bytes would exceed
diff --git a/tp/Texinfo/XS/gnulib/m4/gnulib-cache.m4 
b/tp/Texinfo/XS/gnulib/m4/gnulib-cache.m4
index 932135a8db..6f1aff5736 100644
--- a/tp/Texinfo/XS/gnulib/m4/gnulib-cache.m4
+++ b/tp/Texinfo/XS/gnulib/m4/gnulib-cache.m4
@@ -47,9 +47,6 @@
 #  uchar \
 #  unicase/u8-tolower \
 #  unicase/u8-toupper \
-#  uniconv/u32-strconv-from-enc \
-#  uniconv/u8-strconv-from-enc \
-#  uniconv/u8-strconv-to-enc \
 #  unictype/category-L \
 #  unictype/category-M \
 #  unictype/category-Mn \
@@ -87,9 +84,6 @@ gl_MODULES([
   uchar
   unicase/u8-tolower
   unicase/u8-toupper
-  uniconv/u32-strconv-from-enc
-  uniconv/u8-strconv-from-enc
-  uniconv/u8-strconv-to-enc
   unictype/category-L
   unictype/category-M
   unictype/category-Mn
diff --git a/tp/Texinfo/XS/gnulib/m4/gnulib-common.m4 
b/tp/Texinfo/XS/gnulib/m4/gnulib-common.m4
index 03d10fa51e..d8d0904f78 100644
--- a/tp/Texinfo/XS/gnulib/m4/gnulib-common.m4
+++ b/tp/Texinfo/XS/gnulib/m4/gnulib-common.m4
@@ -1,4 +1,4 @@
-# gnulib-common.m4 serial 90
+# gnulib-common.m4 serial 92
 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,
@@ -76,42 +76,48 @@ AC_DEFUN([gl_COMMON_BODY], [
 #endif])
   AH_VERBATIM([attribute],
 [/* Attributes.  */
-#if (defined __has_attribute \
-     && (!defined __clang_minor__ \
-         || (defined __apple_build_version__ \
-             ? 6000000 <= __apple_build_version__ \
-             : 5 <= __clang_major__)))
-# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__)
-#else
-# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr
-# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3)
-# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2)
-# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3)
-# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3)
-# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95)
-# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1)
-# define _GL_ATTR_diagnose_if 0
-# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3)
-# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1)
-# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0)
-# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7)
-# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6)
-# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0)
-# ifdef _ICC
-#  define _GL_ATTR_may_alias 0
+/* Define _GL_HAS_ATTRIBUTE only once, because on FreeBSD, with gcc < 5, if
+   <config.h> gets included once again after <sys/cdefs.h>, __has_attribute(x)
+   expands to 0 always, and redefining _GL_HAS_ATTRIBUTE would turn off all
+   attributes.  */
+#ifndef _GL_HAS_ATTRIBUTE
+# if (defined __has_attribute \
+      && (!defined __clang_minor__ \
+          || (defined __apple_build_version__ \
+              ? 7000000 <= __apple_build_version__ \
+              : 5 <= __clang_major__)))
+#  define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__)
 # else
-#  define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3)
+#  define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr
+#  define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3)
+#  define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2)
+#  define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3)
+#  define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3)
+#  define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95)
+#  define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1)
+#  define _GL_ATTR_diagnose_if 0
+#  define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3)
+#  define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1)
+#  define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0)
+#  define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7)
+#  define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6)
+#  define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0)
+#  ifdef _ICC
+#   define _GL_ATTR_may_alias 0
+#  else
+#   define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3)
+#  endif
+#  define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1)
+#  define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3)
+#  define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0)
+#  define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3)
+#  define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7)
+#  define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96)
+#  define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9)
+#  define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0)
+#  define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7)
+#  define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4)
 # endif
-# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1)
-# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3)
-# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0)
-# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3)
-# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7)
-# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96)
-# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9)
-# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0)
-# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7)
-# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4)
 #endif
 
 /* Use __has_c_attribute if available.  However, do not use with
diff --git a/tp/Texinfo/XS/gnulib/m4/gnulib-comp.m4 
b/tp/Texinfo/XS/gnulib/m4/gnulib-comp.m4
index a281187068..d0ec1af034 100644
--- a/tp/Texinfo/XS/gnulib/m4/gnulib-comp.m4
+++ b/tp/Texinfo/XS/gnulib/m4/gnulib-comp.m4
@@ -49,9 +49,6 @@ AC_DEFUN([gl_EARLY],
   # Code from module array-mergesort:
   # Code from module assert-h:
   # Code from module attribute:
-  # Code from module c-ctype:
-  # Code from module c-strcase:
-  # Code from module c-strcaseeq:
   # Code from module c99:
   # Code from module environ:
   # Code from module errno:
@@ -67,8 +64,6 @@ AC_DEFUN([gl_EARLY],
   # Code from module gperf:
   # Code from module havelib:
   # Code from module iconv:
-  # Code from module iconv-h:
-  # Code from module iconv_open:
   # Code from module idx:
   # Code from module include_next:
   # Code from module inline:
@@ -98,8 +93,6 @@ AC_DEFUN([gl_EARLY],
   # Code from module stdlib:
   # Code from module strchrnul:
   # Code from module streq:
-  # Code from module striconveh:
-  # Code from module striconveha:
   # Code from module string:
   # Code from module strndup:
   # Code from module strnlen:
@@ -116,12 +109,6 @@ AC_DEFUN([gl_EARLY],
   # Code from module unicase/u8-casemap:
   # Code from module unicase/u8-tolower:
   # Code from module unicase/u8-toupper:
-  # Code from module uniconv/base:
-  # Code from module uniconv/u32-conv-from-enc:
-  # Code from module uniconv/u32-strconv-from-enc:
-  # Code from module uniconv/u8-conv-from-enc:
-  # Code from module uniconv/u8-strconv-from-enc:
-  # Code from module uniconv/u8-strconv-to-enc:
   # Code from module unictype/base:
   # Code from module unictype/category-L:
   # Code from module unictype/category-M:
@@ -147,22 +134,16 @@ AC_DEFUN([gl_EARLY],
   # Code from module uninorm/u8-normalize:
   # Code from module unistd:
   # Code from module unistr/base:
-  # Code from module unistr/u32-mblen:
   # Code from module unistr/u32-next:
-  # Code from module unistr/u32-strlen:
   # Code from module unistr/u32-strmbtouc:
-  # Code from module unistr/u8-check:
   # Code from module unistr/u8-cpy:
-  # Code from module unistr/u8-mblen:
   # Code from module unistr/u8-mbsnlen:
   # Code from module unistr/u8-mbtouc:
   # Code from module unistr/u8-mbtouc-unsafe:
   # Code from module unistr/u8-mbtoucr:
   # Code from module unistr/u8-next:
-  # Code from module unistr/u8-prev:
   # Code from module unistr/u8-strlen:
   # Code from module unistr/u8-strmbtouc:
-  # Code from module unistr/u8-to-u32:
   # Code from module unistr/u8-uctomb:
   # Code from module unitypes:
   # Code from module uniwidth/base:
@@ -239,15 +220,6 @@ AC_DEFUN([gl_INIT],
   AM_ICONV
   m4_ifdef([gl_ICONV_MODULE_INDICATOR],
     [gl_ICONV_MODULE_INDICATOR([iconv])])
-  gl_ICONV_H
-  gl_ICONV_H_REQUIRE_DEFAULTS
-  gl_CONDITIONAL_HEADER([iconv.h])
-  AC_PROG_MKDIR_P
-  gl_FUNC_ICONV_OPEN
-  dnl Because of gl_REPLACE_ICONV_H:
-  gl_CONDITIONAL_HEADER([iconv.h])
-  gl_CONDITIONAL([GL_COND_OBJ_ICONV_OPEN], [test $REPLACE_ICONV_OPEN = 1])
-  gl_CONDITIONAL([GL_COND_OBJ_ICONV], [test $REPLACE_ICONV = 1])
   gl_INLINE
   gl_INTTYPES_INCOMPLETE
   gl_INTTYPES_H_REQUIRE_DEFAULTS
@@ -341,10 +313,6 @@ AC_DEFUN([gl_INIT],
     gl_PREREQ_STRCHRNUL
   ])
   gl_STRING_MODULE_INDICATOR([strchrnul])
-  if test $gl_cond_libtool = false; then
-    gl_ltlibdeps="$gl_ltlibdeps $LTLIBICONV"
-    gl_libdeps="$gl_libdeps $LIBICONV"
-  fi
   gl_STRING_H
   gl_STRING_H_REQUIRE_DEFAULTS
   AC_PROG_MKDIR_P
@@ -380,19 +348,12 @@ AC_DEFUN([gl_INIT],
   gl_LIBUNISTRING_MODULE([0.9.11], [unicase/toupper])
   gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-tolower])
   gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-toupper])
-  gl_LIBUNISTRING_LIBHEADER([0.9.11], [uniconv.h])
-  AC_PROG_MKDIR_P
-  gl_LIBUNISTRING_MODULE([0.9], [uniconv/u32-conv-from-enc])
-  gl_LIBUNISTRING_MODULE([0.9], [uniconv/u32-strconv-from-enc])
-  gl_LIBUNISTRING_MODULE([0.9], [uniconv/u8-conv-from-enc])
-  gl_LIBUNISTRING_MODULE([0.9], [uniconv/u8-strconv-from-enc])
-  gl_LIBUNISTRING_MODULE([0.9], [uniconv/u8-strconv-to-enc])
   gl_LIBUNISTRING_LIBHEADER([1.2], [unictype.h])
   gl_UNICTYPE_H
   gl_UNICTYPE_H_REQUIRE_DEFAULTS
   AC_PROG_MKDIR_P
   gl_UNICTYPE_H_REQUIRE_DEFAULTS
-  gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-L])
+  gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/category-L])
   gl_UNICTYPE_H_REQUIRE_DEFAULTS
   gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-M])
   gl_UNICTYPE_H_REQUIRE_DEFAULTS
@@ -406,7 +367,7 @@ AC_DEFUN([gl_INIT],
   gl_LIBUNISTRING_MODULE([0.9.11], [unictype/ctype-upper])
   AC_REQUIRE([AC_C_INLINE])
   gl_UNICTYPE_H_REQUIRE_DEFAULTS
-  gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-alphabetic])
+  gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-alphabetic])
   AC_REQUIRE([AC_C_INLINE])
   gl_UNICTYPE_H_REQUIRE_DEFAULTS
   gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], 
[unictype/property-join-control])
@@ -435,13 +396,9 @@ AC_DEFUN([gl_INIT],
   AC_PROG_MKDIR_P
   gl_LIBUNISTRING_LIBHEADER([1.2], [unistr.h])
   AC_PROG_MKDIR_P
-  gl_LIBUNISTRING_MODULE([0.9], [unistr/u32-mblen])
   gl_LIBUNISTRING_MODULE([0.9], [unistr/u32-next])
-  gl_LIBUNISTRING_MODULE([0.9], [unistr/u32-strlen])
   gl_LIBUNISTRING_MODULE([0.9], [unistr/u32-strmbtouc])
-  gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-check])
   gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-cpy])
-  gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-mblen])
   gl_LIBUNISTRING_MODULE([1.2], [unistr/u8-mbsnlen])
   gl_MODULE_INDICATOR([unistr/u8-mbtouc])
   gl_LIBUNISTRING_MODULE([1.2], [unistr/u8-mbtouc])
@@ -450,10 +407,8 @@ AC_DEFUN([gl_INIT],
   gl_MODULE_INDICATOR([unistr/u8-mbtoucr])
   gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-mbtoucr])
   gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-next])
-  gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-prev])
   gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-strlen])
   gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-strmbtouc])
-  gl_LIBUNISTRING_MODULE([0.9.3], [unistr/u8-to-u32])
   gl_MODULE_INDICATOR([unistr/u8-uctomb])
   gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-uctomb])
   gl_LIBUNISTRING_LIBHEADER([0.9.11], [unitypes.h])
@@ -475,9 +430,9 @@ AC_DEFUN([gl_INIT],
   ])
   gl_LIBUNISTRING_LIBHEADER([0.9.11], [uniwidth.h])
   AC_PROG_MKDIR_P
-  gl_LIBUNISTRING_MODULE([1.1], [uniwidth/u8-strwidth])
-  gl_LIBUNISTRING_MODULE([1.1], [uniwidth/u8-width])
-  gl_LIBUNISTRING_MODULE([1.1], [uniwidth/width])
+  gl_LIBUNISTRING_MODULE([1.2], [uniwidth/u8-strwidth])
+  gl_LIBUNISTRING_MODULE([1.2], [uniwidth/u8-width])
+  gl_LIBUNISTRING_MODULE([1.2], [uniwidth/width])
   gl_FUNC_UNSETENV
   gl_CONDITIONAL([GL_COND_OBJ_UNSETENV],
                  [test $HAVE_UNSETENV = 0 || test $REPLACE_UNSETENV = 1])
@@ -679,12 +634,6 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/assert.in.h
   lib/attribute.h
   lib/c++defs.h
-  lib/c-ctype.c
-  lib/c-ctype.h
-  lib/c-strcase.h
-  lib/c-strcasecmp.c
-  lib/c-strcaseeq.h
-  lib/c-strncasecmp.c
   lib/errno.in.h
   lib/exitfail.c
   lib/exitfail.h
@@ -695,17 +644,6 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/getdelim.c
   lib/getline.c
   lib/gettext.h
-  lib/iconv.c
-  lib/iconv.in.h
-  lib/iconv_close.c
-  lib/iconv_open-aix.gperf
-  lib/iconv_open-hpux.gperf
-  lib/iconv_open-irix.gperf
-  lib/iconv_open-osf.gperf
-  lib/iconv_open-solaris.gperf
-  lib/iconv_open-zos.gperf
-  lib/iconv_open.c
-  lib/iconveh.h
   lib/idx.h
   lib/intprops-internal.h
   lib/inttypes.in.h
@@ -738,10 +676,6 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/strchrnul.c
   lib/strchrnul.valgrind
   lib/streq.h
-  lib/striconveh.c
-  lib/striconveh.h
-  lib/striconveha.c
-  lib/striconveha.h
   lib/string.in.h
   lib/strndup.c
   lib/strnlen.c
@@ -769,14 +703,6 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/unicase/u8-tolower.c
   lib/unicase/u8-toupper.c
   lib/unicase/unicasemap.h
-  lib/uniconv.in.h
-  lib/uniconv/u-conv-from-enc.h
-  lib/uniconv/u-strconv-from-enc.h
-  lib/uniconv/u32-conv-from-enc.c
-  lib/uniconv/u32-strconv-from-enc.c
-  lib/uniconv/u8-conv-from-enc.c
-  lib/uniconv/u8-strconv-from-enc.c
-  lib/uniconv/u8-strconv-to-enc.c
   lib/unictype.in.h
   lib/unictype/bitmap.h
   lib/unictype/categ_L.c
@@ -821,14 +747,9 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/unistd.in.h
   lib/unistr.in.h
   lib/unistr/u-cpy.h
-  lib/unistr/u-strlen.h
-  lib/unistr/u32-mblen.c
   lib/unistr/u32-next.c
-  lib/unistr/u32-strlen.c
   lib/unistr/u32-strmbtouc.c
-  lib/unistr/u8-check.c
   lib/unistr/u8-cpy.c
-  lib/unistr/u8-mblen.c
   lib/unistr/u8-mbsnlen.c
   lib/unistr/u8-mbtouc-aux.c
   lib/unistr/u8-mbtouc-unsafe-aux.c
@@ -836,10 +757,8 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/unistr/u8-mbtouc.c
   lib/unistr/u8-mbtoucr.c
   lib/unistr/u8-next.c
-  lib/unistr/u8-prev.c
   lib/unistr/u8-strlen.c
   lib/unistr/u8-strmbtouc.c
-  lib/unistr/u8-to-u32.c
   lib/unistr/u8-uctomb-aux.c
   lib/unistr/u8-uctomb.c
   lib/unitypes.in.h
@@ -881,8 +800,6 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/gnulib-common.m4
   m4/host-cpu-c-abi.m4
   m4/iconv.m4
-  m4/iconv_h.m4
-  m4/iconv_open.m4
   m4/include_next.m4
   m4/inline.m4
   m4/intmax_t.m4
diff --git a/tp/Texinfo/XS/gnulib/m4/host-cpu-c-abi.m4 
b/tp/Texinfo/XS/gnulib/m4/host-cpu-c-abi.m4
index 2aa413c1fd..e860a19e74 100644
--- a/tp/Texinfo/XS/gnulib/m4/host-cpu-c-abi.m4
+++ b/tp/Texinfo/XS/gnulib/m4/host-cpu-c-abi.m4
@@ -1,4 +1,4 @@
-# host-cpu-c-abi.m4 serial 16
+# host-cpu-c-abi.m4 serial 17
 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,
@@ -461,218 +461,66 @@ EOF
 
 dnl Sets the HOST_CPU_C_ABI_32BIT variable to 'yes' if the C language ABI
 dnl (application binary interface) is a 32-bit one, to 'no' if it is a 64-bit
-dnl one, or to 'unknown' if unknown.
+dnl one.
 dnl This is a simplified variant of gl_HOST_CPU_C_ABI.
 AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT],
 [
   AC_REQUIRE([AC_CANONICAL_HOST])
   AC_CACHE_CHECK([32-bit host C ABI], [gl_cv_host_cpu_c_abi_32bit],
-    [if test -n "$gl_cv_host_cpu_c_abi"; then
-       dnl gl_HOST_CPU_C_ABI has already been run. Use its result.
-       case "$gl_cv_host_cpu_c_abi" in
-         i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | 
mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
-           gl_cv_host_cpu_c_abi_32bit=yes ;;
-         x86_64 | alpha | arm64 | aarch64c | hppa64 | ia64 | mips64 | 
powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 )
-           gl_cv_host_cpu_c_abi_32bit=no ;;
-         *)
-           gl_cv_host_cpu_c_abi_32bit=unknown ;;
-       esac
-     else
-       case "$host_cpu" in
-
-         # CPUs that only support a 32-bit ABI.
-         arc \
-         | bfin \
-         | cris* \
-         | csky \
-         | epiphany \
-         | ft32 \
-         | h8300 \
-         | m68k \
-         | microblaze | microblazeel \
-         | nds32 | nds32le | nds32be \
-         | nios2 | nios2eb | nios2el \
-         | or1k* \
-         | or32 \
-         | sh | sh[1234] | sh[1234]e[lb] \
-         | tic6x \
-         | xtensa* )
-           gl_cv_host_cpu_c_abi_32bit=yes
-           ;;
+    [case "$host_cpu" in
 
-         # CPUs that only support a 64-bit ABI.
-changequote(,)dnl
-         alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \
-         | mmix )
-changequote([,])dnl
-           gl_cv_host_cpu_c_abi_32bit=no
-           ;;
+       # CPUs that only support a 32-bit ABI.
+       arc \
+       | bfin \
+       | cris* \
+       | csky \
+       | epiphany \
+       | ft32 \
+       | h8300 \
+       | m68k \
+       | microblaze | microblazeel \
+       | nds32 | nds32le | nds32be \
+       | nios2 | nios2eb | nios2el \
+       | or1k* \
+       | or32 \
+       | sh | sh[1234] | sh[1234]e[lb] \
+       | tic6x \
+       | xtensa* )
+         gl_cv_host_cpu_c_abi_32bit=yes
+         ;;
 
+       # CPUs that only support a 64-bit ABI.
 changequote(,)dnl
-         i[34567]86 )
+       alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \
+       | mmix )
 changequote([,])dnl
-           gl_cv_host_cpu_c_abi_32bit=yes
-           ;;
-
-         x86_64 )
-           # On x86_64 systems, the C compiler may be generating code in one of
-           # these ABIs:
-           # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
-           # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
-           #   with native Windows (mingw, MSVC).
-           # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': 
x86_64-x32.
-           # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
-           AC_COMPILE_IFELSE(
-             [AC_LANG_SOURCE(
-                [[#if (defined __x86_64__ || defined __amd64__ \
-                       || defined _M_X64 || defined _M_AMD64) \
-                      && !(defined __ILP32__ || defined _ILP32)
-                   int ok;
-                  #else
-                   error fail
-                  #endif
-                ]])],
-             [gl_cv_host_cpu_c_abi_32bit=no],
-             [gl_cv_host_cpu_c_abi_32bit=yes])
-           ;;
-
-         arm* | aarch64 | aarch64c )
-           # Assume arm with EABI.
-           # On arm64 systems, the C compiler may be generating code in one of
-           # these ABIs:
-           # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
-           # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': 
arm64-ilp32.
-           # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or 
armhf.
-           AC_COMPILE_IFELSE(
-             [AC_LANG_SOURCE(
-                [[#if defined __aarch64__ && !(defined __ILP32__ || defined 
_ILP32)
-                   int ok;
-                  #else
-                   error fail
-                  #endif
-                ]])],
-             [gl_cv_host_cpu_c_abi_32bit=no],
-             [gl_cv_host_cpu_c_abi_32bit=yes])
-           ;;
-
-         hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
-           # On hppa, the C compiler may be generating 32-bit code or 64-bit
-           # code. In the latter case, it defines _LP64 and __LP64__.
-           AC_COMPILE_IFELSE(
-             [AC_LANG_SOURCE(
-                [[#ifdef __LP64__
-                   int ok;
-                  #else
-                   error fail
-                  #endif
-                ]])],
-             [gl_cv_host_cpu_c_abi_32bit=no],
-             [gl_cv_host_cpu_c_abi_32bit=yes])
-           ;;
-
-         ia64* )
-           # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
-           # 32-bit code. In the latter case, it defines _ILP32.
-           AC_COMPILE_IFELSE(
-             [AC_LANG_SOURCE(
-                [[#ifdef _ILP32
-                   int ok;
-                  #else
-                   error fail
-                  #endif
-                ]])],
-             [gl_cv_host_cpu_c_abi_32bit=yes],
-             [gl_cv_host_cpu_c_abi_32bit=no])
-           ;;
-
-         mips* )
-           # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
-           # at 32.
-           AC_COMPILE_IFELSE(
-             [AC_LANG_SOURCE(
-                [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
-                   int ok;
-                  #else
-                   error fail
-                  #endif
-                ]])],
-             [gl_cv_host_cpu_c_abi_32bit=no],
-             [gl_cv_host_cpu_c_abi_32bit=yes])
-           ;;
-
-         powerpc* )
-           # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
-           # No need to distinguish them here; the caller may distinguish
-           # them based on the OS.
-           # On powerpc64 systems, the C compiler may still be generating
-           # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
-           # be generating 64-bit code.
-           AC_COMPILE_IFELSE(
-             [AC_LANG_SOURCE(
-                [[#if defined __powerpc64__ || defined __LP64__
-                   int ok;
-                  #else
-                   error fail
-                  #endif
-                ]])],
-             [gl_cv_host_cpu_c_abi_32bit=no],
-             [gl_cv_host_cpu_c_abi_32bit=yes])
-           ;;
-
-         rs6000 )
-           gl_cv_host_cpu_c_abi_32bit=yes
-           ;;
-
-         riscv32 | riscv64 )
-           # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
-           # Size of 'long' and 'void *':
-           AC_COMPILE_IFELSE(
-             [AC_LANG_SOURCE(
-                [[#if defined __LP64__
-                    int ok;
-                  #else
-                    error fail
-                  #endif
-                ]])],
-             [gl_cv_host_cpu_c_abi_32bit=no],
-             [gl_cv_host_cpu_c_abi_32bit=yes])
-           ;;
-
-         s390* )
-           # On s390x, the C compiler may be generating 64-bit (= s390x) code
-           # or 31-bit (= s390) code.
-           AC_COMPILE_IFELSE(
-             [AC_LANG_SOURCE(
-                [[#if defined __LP64__ || defined __s390x__
-                    int ok;
-                  #else
-                    error fail
-                  #endif
-                ]])],
-             [gl_cv_host_cpu_c_abi_32bit=no],
-             [gl_cv_host_cpu_c_abi_32bit=yes])
-           ;;
+         gl_cv_host_cpu_c_abi_32bit=no
+         ;;
 
-         sparc | sparc64 )
-           # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
-           # C compiler still generates 32-bit code.
+       *)
+         if test -n "$gl_cv_host_cpu_c_abi"; then
+           dnl gl_HOST_CPU_C_ABI has already been run. Use its result.
+           case "$gl_cv_host_cpu_c_abi" in
+             i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 
| mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
+               gl_cv_host_cpu_c_abi_32bit=yes ;;
+             x86_64 | alpha | arm64 | aarch64c | hppa64 | ia64 | mips64 | 
powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 )
+               gl_cv_host_cpu_c_abi_32bit=no ;;
+             *)
+               gl_cv_host_cpu_c_abi_32bit=unknown ;;
+           esac
+         else
+           gl_cv_host_cpu_c_abi_32bit=unknown
+         fi
+         if test $gl_cv_host_cpu_c_abi_32bit = unknown; then
            AC_COMPILE_IFELSE(
              [AC_LANG_SOURCE(
-                [[#if defined __sparcv9 || defined __arch64__
-                   int ok;
-                  #else
-                   error fail
-                  #endif
+                [[int test_pointer_size[sizeof (void *) - 5];
                 ]])],
              [gl_cv_host_cpu_c_abi_32bit=no],
              [gl_cv_host_cpu_c_abi_32bit=yes])
-           ;;
-
-         *)
-           gl_cv_host_cpu_c_abi_32bit=unknown
-           ;;
-       esac
-     fi
+         fi
+         ;;
+     esac
     ])
 
   HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
diff --git a/tp/Texinfo/XS/gnulib/m4/iconv_h.m4 
b/tp/Texinfo/XS/gnulib/m4/iconv_h.m4
deleted file mode 100644
index 7b56088755..0000000000
--- a/tp/Texinfo/XS/gnulib/m4/iconv_h.m4
+++ /dev/null
@@ -1,70 +0,0 @@
-# iconv_h.m4 serial 16
-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,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN_ONCE([gl_ICONV_H],
-[
-  AC_REQUIRE([gl_ICONV_H_DEFAULTS])
-
-  dnl Execute this unconditionally, because GL_GENERATE_ICONV_H may be set to
-  dnl true by other modules, after this code is executed.
-  gl_CHECK_NEXT_HEADERS([iconv.h])
-
-  dnl Check for declarations of anything we want to poison if the
-  dnl corresponding gnulib module is not in use, and which is not
-  dnl guaranteed by C89.
-  gl_WARN_ON_USE_PREPARE([[#include <iconv.h>
-    ]], [iconv iconv_open])
-
-  AC_REQUIRE([AC_C_RESTRICT])
-])
-
-dnl Unconditionally enables the replacement of <iconv.h>.
-AC_DEFUN([gl_REPLACE_ICONV_H],
-[
-  gl_ICONV_H_REQUIRE_DEFAULTS
-  GL_GENERATE_ICONV_H=true
-])
-
-# gl_ICONV_MODULE_INDICATOR([modulename])
-# sets the shell variable that indicates the presence of the given module
-# to a C preprocessor expression that will evaluate to 1.
-# This macro invocation must not occur in macros that are AC_REQUIREd.
-AC_DEFUN([gl_ICONV_MODULE_INDICATOR],
-[
-  dnl Ensure to expand the default settings once only.
-  gl_ICONV_H_REQUIRE_DEFAULTS
-  gl_MODULE_INDICATOR_SET_VARIABLE([$1])
-])
-
-# Initializes the default values for AC_SUBSTed shell variables.
-# This macro must not be AC_REQUIREd.  It must only be invoked, and only
-# outside of macros or in macros that are not AC_REQUIREd.
-AC_DEFUN([gl_ICONV_H_REQUIRE_DEFAULTS],
-[
-  m4_defun(GL_MODULE_INDICATOR_PREFIX[_ICONV_H_MODULE_INDICATOR_DEFAULTS], [
-    gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ICONV])
-  ])
-  m4_require(GL_MODULE_INDICATOR_PREFIX[_ICONV_H_MODULE_INDICATOR_DEFAULTS])
-  AC_REQUIRE([gl_ICONV_H_DEFAULTS])
-])
-
-AC_DEFUN([gl_ICONV_H_DEFAULTS],
-[
-  m4_ifdef([gl_ANSI_CXX], [AC_REQUIRE([gl_ANSI_CXX])])
-  dnl Assume proper GNU behavior unless another module says otherwise.
-  ICONV_CONST=;         AC_SUBST([ICONV_CONST])
-  REPLACE_ICONV=0;      AC_SUBST([REPLACE_ICONV])
-  REPLACE_ICONV_OPEN=0; AC_SUBST([REPLACE_ICONV_OPEN])
-  REPLACE_ICONV_UTF=0;  AC_SUBST([REPLACE_ICONV_UTF])
-  GL_GENERATE_ICONV_H=false
-  m4_ifdef([gl_POSIXCHECK],
-    [GL_GENERATE_ICONV_H=true],
-    [if m4_ifdef([gl_ANSI_CXX], [test "$CXX" != no], [false]); then
-       dnl Override <fnmatch.h> always, to support the C++ GNULIB_NAMESPACE.
-       GL_GENERATE_ICONV_H=true
-     fi
-    ])
-])
diff --git a/tp/Texinfo/XS/gnulib/m4/iconv_open.m4 
b/tp/Texinfo/XS/gnulib/m4/iconv_open.m4
deleted file mode 100644
index d4fd3ab7f6..0000000000
--- a/tp/Texinfo/XS/gnulib/m4/iconv_open.m4
+++ /dev/null
@@ -1,60 +0,0 @@
-# iconv_open.m4 serial 16
-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,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_ICONV_OPEN],
-[
-  AC_REQUIRE([AM_ICONV])
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_REQUIRE([gl_ICONV_H_DEFAULTS])
-  if test "$am_cv_func_iconv" = yes; then
-    dnl Provide the <iconv.h> override, for the sake of the C++ aliases.
-    gl_REPLACE_ICONV_H
-    dnl Test whether iconv_open accepts standardized encoding names.
-    dnl We know that GNU libiconv and GNU libc do.
-    AC_EGREP_CPP([gnu_iconv], [
-      #include <iconv.h>
-      #if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined 
__UCLIBC__)
-       gnu_iconv
-      #endif
-      ], [gl_func_iconv_gnu=yes], [gl_func_iconv_gnu=no])
-    if test $gl_func_iconv_gnu = no; then
-      iconv_flavor=
-      case "$host_os" in
-        aix*)         iconv_flavor=ICONV_FLAVOR_AIX ;;
-        irix*)        iconv_flavor=ICONV_FLAVOR_IRIX ;;
-        hpux*)        iconv_flavor=ICONV_FLAVOR_HPUX ;;
-        osf*)         iconv_flavor=ICONV_FLAVOR_OSF ;;
-        solaris*)     iconv_flavor=ICONV_FLAVOR_SOLARIS ;;
-        openedition*) iconv_flavor=ICONV_FLAVOR_ZOS ;;
-      esac
-      if test -n "$iconv_flavor"; then
-        AC_DEFINE_UNQUOTED([ICONV_FLAVOR], [$iconv_flavor],
-          [Define to a symbolic name denoting the flavor of iconv_open()
-           implementation.])
-        gl_REPLACE_ICONV_OPEN
-      fi
-    fi
-    m4_ifdef([gl_FUNC_ICONV_OPEN_UTF_SUPPORT], [
-      gl_FUNC_ICONV_OPEN_UTF_SUPPORT
-      case "$gl_cv_func_iconv_supports_utf" in
-        *yes) ;;
-        *)
-          REPLACE_ICONV_UTF=1
-          AC_DEFINE([REPLACE_ICONV_UTF], [1],
-            [Define if the iconv() functions are enhanced to handle the 
UTF-{16,32}{BE,LE} encodings.])
-          REPLACE_ICONV=1
-          gl_REPLACE_ICONV_OPEN
-          ;;
-      esac
-    ])
-  fi
-])
-
-AC_DEFUN([gl_REPLACE_ICONV_OPEN],
-[
-  gl_REPLACE_ICONV_H
-  REPLACE_ICONV_OPEN=1
-])
diff --git a/tp/Texinfo/XS/gnulib/m4/lib-prefix.m4 
b/tp/Texinfo/XS/gnulib/m4/lib-prefix.m4
index 0c6f96ca68..f327c6ef03 100644
--- a/tp/Texinfo/XS/gnulib/m4/lib-prefix.m4
+++ b/tp/Texinfo/XS/gnulib/m4/lib-prefix.m4
@@ -1,4 +1,4 @@
-# lib-prefix.m4 serial 21
+# lib-prefix.m4 serial 22
 dnl Copyright (C) 2001-2005, 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,
@@ -256,6 +256,15 @@ changequote([,])dnl
            esac
          fi
          ;;
+       netbsd*)
+         dnl On NetBSD/sparc64, there is a 'sparc' subdirectory that contains
+         dnl 32-bit libraries.
+         if test $HOST_CPU_C_ABI_32BIT != no; then
+           case "$host_cpu" in
+             sparc*) acl_libdirstem2=lib/sparc ;;
+           esac
+         fi
+         ;;
        *)
          dnl If $CC generates code for a 32-bit ABI, the libraries are
          dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64.
diff --git a/tp/Texinfo/XS/gnulib/m4/printf.m4 
b/tp/Texinfo/XS/gnulib/m4/printf.m4
index bb67d59409..05bf7fe1df 100644
--- a/tp/Texinfo/XS/gnulib/m4/printf.m4
+++ b/tp/Texinfo/XS/gnulib/m4/printf.m4
@@ -1,4 +1,4 @@
-# printf.m4 serial 89
+# printf.m4 serial 90
 dnl Copyright (C) 2003, 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,
@@ -890,6 +890,7 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_N],
     [
       AC_RUN_IFELSE(
         [AC_LANG_SOURCE([[
+#include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -907,6 +908,12 @@ invalid_parameter_handler (const wchar_t *expression,
   exit (1);
 }
 #endif
+static void
+abort_handler (int sig)
+{
+  (void) sig;
+  _exit (1);
+}
 static char fmtstring[10];
 static char buf[100];
 int main ()
@@ -915,6 +922,7 @@ int main ()
 #ifdef _MSC_VER
   _set_invalid_parameter_handler (invalid_parameter_handler);
 #endif
+  signal (SIGABRT, abort_handler);
   /* Copy the format string.  Some systems (glibc with _FORTIFY_SOURCE=2)
      support %n in format strings in read-only memory but not in writable
      memory.  */
diff --git a/tp/Texinfo/XS/gnulib/m4/unictype_h.m4 
b/tp/Texinfo/XS/gnulib/m4/unictype_h.m4
index c4bc5c2c8d..68b864bd9f 100644
--- a/tp/Texinfo/XS/gnulib/m4/unictype_h.m4
+++ b/tp/Texinfo/XS/gnulib/m4/unictype_h.m4
@@ -1,4 +1,4 @@
-# unictype_h.m4 serial 1
+# unictype_h.m4 serial 3
 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,
@@ -98,6 +98,8 @@ AC_DEFUN([gl_UNICTYPE_H_REQUIRE_DEFAULTS],
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_OTHER_ID_CONTINUE_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_XID_START_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_XID_CONTINUE_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
+    
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_START_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
+    
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_CONTINUE_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PATTERN_WHITE_SPACE_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PATTERN_SYNTAX_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_JOIN_CONTROL_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
@@ -127,6 +129,7 @@ AC_DEFUN([gl_UNICTYPE_H_REQUIRE_DEFAULTS],
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_IDEOGRAPHIC_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_UNIFIED_IDEOGRAPH_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_RADICAL_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
+    
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_IDS_UNARY_OPERATOR_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_IDS_BINARY_OPERATOR_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_IDS_TRINARY_OPERATOR_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_EMOJI_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
@@ -140,6 +143,7 @@ AC_DEFUN([gl_UNICTYPE_H_REQUIRE_DEFAULTS],
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
+    
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE], 
['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])
     
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE],
 ['LIBUNISTRING_DLL_VARIABLE'])



reply via email to

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