aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2023-05-22 10:36:45 +0100
committerfanquake <fanquake@gmail.com>2023-05-22 10:49:07 +0100
commitad7819d2f8abc311996cb6836315413641c2bebf (patch)
treedd29ab256cb07d6959e7fd67418ef733213546e2
parent5421dc3244b3adbb219b3c2f945f049c75542067 (diff)
parent3cfe366ec35eebfc0dad89ac7a09c32c45c30ea5 (diff)
downloadbitcoin-ad7819d2f8abc311996cb6836315413641c2bebf.tar.xz
Merge bitcoin/bitcoin#27670: guix: remove redundant glibc patches
3cfe366ec35eebfc0dad89ac7a09c32c45c30ea5 guix: remove redundant glibc patches (fanquake) Pull request description: These should only be relevant for a glibc that is built as part of a Guix system, and should not be required for a glibc that is just being built to compile our binaries against. A x86_64 linux bitcoind produced with Guix using master vs this change has no difference. i.e: #### Comparing `bitcoind` & `../../../../../guix-build-d7700d3a2647/output/x86_64-linux-gnu/bitcoin-d7700d3a2647/bin/bitcoind`: ## strings --all --bytes=8 {} ```diff @@ -20311,15 +20311,15 @@ This is experimental software. The source code is available from %s. Please contribute if you find %s useful. Visit %s for further information about the software. The %s developers The Bitcoin Core developers <https://bitcoincore.org/> Copyright (C) %i-%i -v25.99.0-gda0bf1d07639b0490791bbd6aec71bbea8aa2aThe %s developer<https://github.com/bitcoin/bitcDistributed under the MIT software license, see the accompanyingThis is experimeThe source code is available froPlease contribute if you find %s useful. Visit %s for further information about Copyright (C) %ibool BCLog::Logger::StartLogging() +v25.99.0-gd7700d3a26478d9b1648463c188648c7047b1cThe %s developer<https://github.com/bitcoin/bitcDistributed under the MIT software license, see the accompanyingThis is experimeThe source code is available froPlease contribute if you find %s useful. Visit %s for further information about Copyright (C) %ibool BCLog::Logger::StartLogging() std::string BCLog::Logger::LogLevelToStr(BCLog::Level) const std::string LogCategoryToStr(BCLog::LogFlags) void BCLog::Logger::LogPrintStr(const string&, const string&, const string&, int, BCLog::LogFlags, BCLog::Level) void BCLog::Logger::ShrinkDebugFile() Failed to shrink debug log file: fseek(...) failed logging.cpp m_buffering ``` #### objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {} ```diff @@ -1505889,15 +1505889,15 @@ call aa3380 <malloc@plt+0xa4edb0> mov (%rsp),%rdx movdqa 0x465540(%rip),%xmm0 mov %rax,0x7a0559(%rip) lea 0x7a0552(%rip),%rsi lea 0x3957bb(%rip),%rdi mov %rdx,0x7a0554(%rip) -mov $0x3038,%edx +mov $0x3036,%edx movups %xmm0,(%rax) movdqa 0x465524(%rip),%xmm0 mov %dx,0x30(%rax) mov 0x7a0529(%rip),%rdx movups %xmm0,0x10(%rax) movdqa 0x46551d(%rip),%xmm0 movups %xmm0,0x20(%rax) ``` #### readelf --wide --decompress --hex-dump=.rodata {} ```diff @@ -37238,17 +37238,17 @@ 0x00b73730 65202573 20646576 656c6f70 65727300 e %s developers. 0x00b73740 54686520 42697463 6f696e20 436f7265 The Bitcoin Core 0x00b73750 20646576 656c6f70 65727300 434f5059 developers.COPY 0x00b73760 494e4700 3c687474 70733a2f 2f626974 ING.<https://bit 0x00b73770 636f696e 636f7265 2e6f7267 2f3e0043 coincore.org/>.C 0x00b73780 6f707972 69676874 20284329 2025692d opyright (C) %i- 0x00b73790 25690053 61746f73 68690000 00000000 %i.Satoshi...... - 0x00b737a0 7632352e 39392e30 2d676461 30626631 v25.99.0-gda0bf1 - 0x00b737b0 64303736 33396230 34393037 39316262 d07639b0490791bb - 0x00b737c0 64366165 63373162 62656138 61613261 d6aec71bbea8aa2a + 0x00b737a0 7632352e 39392e30 2d676437 37303064 v25.99.0-gd7700d + 0x00b737b0 33613236 34373864 39623136 34383436 3a26478d9b164846 + 0x00b737c0 33633138 38363438 63373034 37623163 3c188648c7047b1c 0x00b737d0 54686520 25732064 6576656c 6f706572 The %s developer 0x00b737e0 3c687474 70733a2f 2f676974 6875622e <https://github. 0x00b737f0 636f6d2f 62697463 6f696e2f 62697463 com/bitcoin/bitc 0x00b73800 44697374 72696275 74656420 756e6465 Distributed unde 0x00b73810 72207468 65204d49 5420736f 66747761 r the MIT softwa 0x00b73820 7265206c 6963656e 73652c20 73656520 re license, see 0x00b73830 74686520 6163636f 6d70616e 79696e67 the accompanying ``` #### readelf --wide --decompress --hex-dump=.gnu_debuglink {} ```diff @@ -1,5 +1,5 @@ Hex dump of section '.gnu_debuglink': 0x00000000 62697463 6f696e64 2e646267 00000000 bitcoind.dbg.... - 0x00000010 6b6e8eda kn.. + 0x00000010 345cb865 4\.e ``` Guix Build: ```bash 3d180219536b4ae2b4ea012a2e2afc8dcc76a79a7f55a36418a6e5a83f5adf90 guix-build-3cfe366ec35e/output/aarch64-linux-gnu/SHA256SUMS.part c25fbd84b7791d5bd3cab36d26828bf2b1063fadc4e944096e65597b66aba867 guix-build-3cfe366ec35e/output/aarch64-linux-gnu/bitcoin-3cfe366ec35e-aarch64-linux-gnu-debug.tar.gz bee8bf6f100912a0548cee798abb1ee9ac1ee17c065259a2410950e71eb3ff13 guix-build-3cfe366ec35e/output/aarch64-linux-gnu/bitcoin-3cfe366ec35e-aarch64-linux-gnu.tar.gz caa17fa9ba8b731c903a96211b2c17e8a1e2600bd9df8abd79eac4a89bfff72d guix-build-3cfe366ec35e/output/arm-linux-gnueabihf/SHA256SUMS.part 27829fab271cca459e2d037c42ccbefbbbbb1eb4463d5895d5a40220d737ecd9 guix-build-3cfe366ec35e/output/arm-linux-gnueabihf/bitcoin-3cfe366ec35e-arm-linux-gnueabihf-debug.tar.gz 6b3eba0d9518dce3a6b7d88a32ae2a5b5ab943126e2a105d4ee6a861d44bea6f guix-build-3cfe366ec35e/output/arm-linux-gnueabihf/bitcoin-3cfe366ec35e-arm-linux-gnueabihf.tar.gz 855ab932aa0cc6d583a0f0422b1373afd44bff244e0022f29ce45305e5c8e8e2 guix-build-3cfe366ec35e/output/arm64-apple-darwin/SHA256SUMS.part 02aabfdfe730400550bfc01e45055f6bc5b643511f08e314634c06b462a00c9e guix-build-3cfe366ec35e/output/arm64-apple-darwin/bitcoin-3cfe366ec35e-arm64-apple-darwin-unsigned.dmg 310722826ba985c58d800135f7ba9c73489e138cbf1b84a50be4f13453918ce1 guix-build-3cfe366ec35e/output/arm64-apple-darwin/bitcoin-3cfe366ec35e-arm64-apple-darwin-unsigned.tar.gz 52d4f1af1e2608da4fa28ed446301d5c516e492c760db03c05c2a421c0a64ab9 guix-build-3cfe366ec35e/output/arm64-apple-darwin/bitcoin-3cfe366ec35e-arm64-apple-darwin.tar.gz 2055c29fcde9aba8274d3649ea0c34ef0dac207d9d6f6a76fd9df9b010cdd7a8 guix-build-3cfe366ec35e/output/dist-archive/bitcoin-3cfe366ec35e.tar.gz 99feae7ee4bfaf818efe49fbc9de81575a1e087593059bd630da70f5c6b8a7c8 guix-build-3cfe366ec35e/output/powerpc64-linux-gnu/SHA256SUMS.part 7a55a6287eec3cfe598378684293b077791da234f1d5fcfe6f368e42f8a52428 guix-build-3cfe366ec35e/output/powerpc64-linux-gnu/bitcoin-3cfe366ec35e-powerpc64-linux-gnu-debug.tar.gz c2ba080a26b4bbfa443113d0044d07b97cc08f55df6bec90f162232f3f934c58 guix-build-3cfe366ec35e/output/powerpc64-linux-gnu/bitcoin-3cfe366ec35e-powerpc64-linux-gnu.tar.gz a670349367e671e73317476795eb7317559bf171d3facdfc2086031eb9dca264 guix-build-3cfe366ec35e/output/powerpc64le-linux-gnu/SHA256SUMS.part f9c0683f515bfd072ad18a780ad35ace7e4f5529d5bd9fffc06490d55bac402e guix-build-3cfe366ec35e/output/powerpc64le-linux-gnu/bitcoin-3cfe366ec35e-powerpc64le-linux-gnu-debug.tar.gz 608cce8d989b6cbfa723d57744a7e0ceac6a8668b12b4e223fe3de7833fe73ac guix-build-3cfe366ec35e/output/powerpc64le-linux-gnu/bitcoin-3cfe366ec35e-powerpc64le-linux-gnu.tar.gz bbdebd22afc49c66c70738f68e3beea363c4a03701ccbb729d6f0eb0a0eaf150 guix-build-3cfe366ec35e/output/riscv64-linux-gnu/SHA256SUMS.part a84871c91a9b9d3423e9b86ffd46eb926672a1a88a3a3df1a5e8288a1fe6d98b guix-build-3cfe366ec35e/output/riscv64-linux-gnu/bitcoin-3cfe366ec35e-riscv64-linux-gnu-debug.tar.gz 21a89eb023113398bc1968284cbea86c6630284cb09325b9cee9669348206683 guix-build-3cfe366ec35e/output/riscv64-linux-gnu/bitcoin-3cfe366ec35e-riscv64-linux-gnu.tar.gz 10f4ef77a97420490bc4494797d0acf8278f5bd4998b6c32881e611cc2faf237 guix-build-3cfe366ec35e/output/x86_64-apple-darwin/SHA256SUMS.part 6e47a3676e76cd7175a08b6da81dcf7186849aba7c2ee95f12e998fdf1d4596d guix-build-3cfe366ec35e/output/x86_64-apple-darwin/bitcoin-3cfe366ec35e-x86_64-apple-darwin-unsigned.dmg 9ca8cd648a464e4e0bef107e23876d4588866eb12b844484a16fe93e4cd2f3b3 guix-build-3cfe366ec35e/output/x86_64-apple-darwin/bitcoin-3cfe366ec35e-x86_64-apple-darwin-unsigned.tar.gz 89c7a5040683b63f58667f4eea6827af2874fc0962ddba3a158ad3aa78b8a407 guix-build-3cfe366ec35e/output/x86_64-apple-darwin/bitcoin-3cfe366ec35e-x86_64-apple-darwin.tar.gz 1577c7f6c5eb7cb073c0ba32cfe7347df5aeaf62508d0ba1936506b1cb8a739e guix-build-3cfe366ec35e/output/x86_64-linux-gnu/SHA256SUMS.part 8703d39ce218216ee43502e030d3b3fbe6a00bdab82e8cd0706fa597fc6e11b7 guix-build-3cfe366ec35e/output/x86_64-linux-gnu/bitcoin-3cfe366ec35e-x86_64-linux-gnu-debug.tar.gz 3e4d44d3cddfe2e34c12f55a704f791834385e1a867856e8a1c05f4f4fb3482a guix-build-3cfe366ec35e/output/x86_64-linux-gnu/bitcoin-3cfe366ec35e-x86_64-linux-gnu.tar.gz 87186fbcc7f0580ef3a347603c868f96bba31a987cad86991fa79b740d41f654 guix-build-3cfe366ec35e/output/x86_64-w64-mingw32/SHA256SUMS.part ceefefe1eb1d518f1534e0e3d51347332874016ce6adeba691fbbfc0b561437a guix-build-3cfe366ec35e/output/x86_64-w64-mingw32/bitcoin-3cfe366ec35e-win64-debug.zip 7bf2736457431bbba5c64b5320dd1c72d0d13fae59127fcc92805946de83908a guix-build-3cfe366ec35e/output/x86_64-w64-mingw32/bitcoin-3cfe366ec35e-win64-setup-unsigned.exe 721838ac437db5764c22c90d9c0a0b51283d6a50da8c60a6bccb394090380195 guix-build-3cfe366ec35e/output/x86_64-w64-mingw32/bitcoin-3cfe366ec35e-win64-unsigned.tar.gz dd58422fc4fd89353002bdb6a546b997fe31546c348a9b4a87bc697913abd382 guix-build-3cfe366ec35e/output/x86_64-w64-mingw32/bitcoin-3cfe366ec35e-win64.zip ``` ACKs for top commit: TheCharlatan: ACK 3cfe366ec35eebfc0dad89ac7a09c32c45c30ea5 Tree-SHA512: b1f30f8775acd69e897784c2168887eedc008db80f6d2d0d68390716965fbd3ddfd70fd1560ef30a8cc70941e9010c395c7feed9386ca92b2c9148d063d64724
-rw-r--r--contrib/guix/manifest.scm4
-rw-r--r--contrib/guix/patches/glibc-ldd-x86_64.patch10
-rw-r--r--contrib/guix/patches/glibc-versioned-locpath.patch240
3 files changed, 1 insertions, 253 deletions
diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm
index d83ff08713..54ddd47353 100644
--- a/contrib/guix/manifest.scm
+++ b/contrib/guix/manifest.scm
@@ -559,9 +559,7 @@ inspecting signatures in Mach-O binaries.")
(sha256
(base32
"0azpb9cvnbv25zg8019rqz48h8i2257ngyjg566dlnp74ivrs9vq"))
- (patches (search-our-patches "glibc-ldd-x86_64.patch"
- "glibc-versioned-locpath.patch"
- "glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch"
+ (patches (search-our-patches "glibc-2.27-riscv64-Use-__has_include-to-include-asm-syscalls.h.patch"
"glibc-2.27-fcommon.patch"
"glibc-2.27-guix-prefix.patch"))))))
diff --git a/contrib/guix/patches/glibc-ldd-x86_64.patch b/contrib/guix/patches/glibc-ldd-x86_64.patch
deleted file mode 100644
index a23b095caa..0000000000
--- a/contrib/guix/patches/glibc-ldd-x86_64.patch
+++ /dev/null
@@ -1,10 +0,0 @@
-By default, 'RTDLLIST' in 'ldd' refers to 'lib64/ld-linux-x86-64.so', whereas
-it's in 'lib/' for us. This patch fixes that.
-
---- a/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
-+++ b/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
-@@ -1,3 +1,3 @@
- /LD_TRACE_LOADED_OBJECTS=1/a\
- add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out"
--s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \264\4-x86-64\6 \2x32\4-x32\6"_
-+s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \2\4-x86-64\6 \2x32\4-x32\6"_
diff --git a/contrib/guix/patches/glibc-versioned-locpath.patch b/contrib/guix/patches/glibc-versioned-locpath.patch
deleted file mode 100644
index bc7652127f..0000000000
--- a/contrib/guix/patches/glibc-versioned-locpath.patch
+++ /dev/null
@@ -1,240 +0,0 @@
-The format of locale data can be incompatible between libc versions, and
-loading incompatible data can lead to 'setlocale' returning EINVAL at best
-or triggering an assertion failure at worst. See
-https://lists.gnu.org/archive/html/guix-devel/2015-09/msg00717.html
-for background information.
-
-To address that, this patch changes libc to honor a new 'GUIX_LOCPATH'
-variable, and to look for locale data in version-specific sub-directories of
-that variable. So, if GUIX_LOCPATH=/foo:/bar, locale data is searched for in
-/foo/X.Y and /bar/X.Y, where X.Y is the libc version number.
-
-That way, a single 'GUIX_LOCPATH' setting can work even if different libc
-versions coexist on the system.
-
---- a/locale/newlocale.c
-+++ b/locale/newlocale.c
-@@ -30,6 +30,7 @@
- /* Lock for protecting global data. */
- __libc_rwlock_define (extern , __libc_setlocale_lock attribute_hidden)
-
-+extern error_t compute_locale_search_path (char **, size_t *);
-
- /* Use this when we come along an error. */
- #define ERROR_RETURN \
-@@ -48,7 +49,6 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
- __locale_t result_ptr;
- char *locale_path;
- size_t locale_path_len;
-- const char *locpath_var;
- int cnt;
- size_t names_len;
-
-@@ -102,17 +102,8 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
- locale_path = NULL;
- locale_path_len = 0;
-
-- locpath_var = getenv ("LOCPATH");
-- if (locpath_var != NULL && locpath_var[0] != '\0')
-- {
-- if (__argz_create_sep (locpath_var, ':',
-- &locale_path, &locale_path_len) != 0)
-- return NULL;
--
-- if (__argz_add_sep (&locale_path, &locale_path_len,
-- _nl_default_locale_path, ':') != 0)
-- return NULL;
-- }
-+ if (compute_locale_search_path (&locale_path, &locale_path_len) != 0)
-+ return NULL;
-
- /* Get the names for the locales we are interested in. We either
- allow a composite name or a single name. */
-diff --git a/locale/setlocale.c b/locale/setlocale.c
-index ead030d..0c0e314 100644
---- a/locale/setlocale.c
-+++ b/locale/setlocale.c
-@@ -215,12 +215,65 @@ setdata (int category, struct __locale_data *data)
- }
- }
-
-+/* Return in *LOCALE_PATH and *LOCALE_PATH_LEN the locale data search path as
-+ a colon-separated list. Return ENOMEN on error, zero otherwise. */
-+error_t
-+compute_locale_search_path (char **locale_path, size_t *locale_path_len)
-+{
-+ char* guix_locpath_var = getenv ("GUIX_LOCPATH");
-+ char *locpath_var = getenv ("LOCPATH");
-+
-+ if (guix_locpath_var != NULL && guix_locpath_var[0] != '\0')
-+ {
-+ /* Entries in 'GUIX_LOCPATH' take precedence over 'LOCPATH'. These
-+ entries are systematically prefixed with "/X.Y" where "X.Y" is the
-+ libc version. */
-+ if (__argz_create_sep (guix_locpath_var, ':',
-+ locale_path, locale_path_len) != 0
-+ || __argz_suffix_entries (locale_path, locale_path_len,
-+ "/" VERSION) != 0)
-+ goto bail_out;
-+ }
-+
-+ if (locpath_var != NULL && locpath_var[0] != '\0')
-+ {
-+ char *reg_locale_path = NULL;
-+ size_t reg_locale_path_len = 0;
-+
-+ if (__argz_create_sep (locpath_var, ':',
-+ &reg_locale_path, &reg_locale_path_len) != 0)
-+ goto bail_out;
-+
-+ if (__argz_append (locale_path, locale_path_len,
-+ reg_locale_path, reg_locale_path_len) != 0)
-+ goto bail_out;
-+
-+ free (reg_locale_path);
-+ }
-+
-+ if (*locale_path != NULL)
-+ {
-+ /* Append the system default locale directory. */
-+ if (__argz_add_sep (locale_path, locale_path_len,
-+ _nl_default_locale_path, ':') != 0)
-+ goto bail_out;
-+ }
-+
-+ return 0;
-+
-+ bail_out:
-+ free (*locale_path);
-+ *locale_path = NULL;
-+ *locale_path_len = 0;
-+
-+ return ENOMEM;
-+}
-+
- char *
- setlocale (int category, const char *locale)
- {
- char *locale_path;
- size_t locale_path_len;
-- const char *locpath_var;
- char *composite;
-
- /* Sanity check for CATEGORY argument. */
-@@ -251,17 +304,10 @@ setlocale (int category, const char *locale)
- locale_path = NULL;
- locale_path_len = 0;
-
-- locpath_var = getenv ("LOCPATH");
-- if (locpath_var != NULL && locpath_var[0] != '\0')
-+ if (compute_locale_search_path (&locale_path, &locale_path_len) != 0)
- {
-- if (__argz_create_sep (locpath_var, ':',
-- &locale_path, &locale_path_len) != 0
-- || __argz_add_sep (&locale_path, &locale_path_len,
-- _nl_default_locale_path, ':') != 0)
-- {
-- __libc_rwlock_unlock (__libc_setlocale_lock);
-- return NULL;
-- }
-+ __libc_rwlock_unlock (__libc_setlocale_lock);
-+ return NULL;
- }
-
- if (category == LC_ALL)
-diff --git a/string/Makefile b/string/Makefile
-index 8424a61..f925503 100644
---- a/string/Makefile
-+++ b/string/Makefile
-@@ -38,7 +38,7 @@ routines := strcat strchr strcmp strcoll strcpy strcspn \
- swab strfry memfrob memmem rawmemchr strchrnul \
- $(addprefix argz-,append count create ctsep next \
- delete extract insert stringify \
-- addsep replace) \
-+ addsep replace suffix) \
- envz basename \
- strcoll_l strxfrm_l string-inlines memrchr \
- xpg-strerror strerror_l
-diff --git a/string/argz-suffix.c b/string/argz-suffix.c
-new file mode 100644
-index 0000000..505b0f2
---- /dev/null
-+++ b/string/argz-suffix.c
-@@ -0,0 +1,56 @@
-+/* Copyright (C) 2015 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+ Contributed by Ludovic Courtès <ludo@gnu.org>.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#include <argz.h>
-+#include <errno.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+
-+error_t
-+__argz_suffix_entries (char **argz, size_t *argz_len, const char *suffix)
-+
-+{
-+ size_t suffix_len = strlen (suffix);
-+ size_t count = __argz_count (*argz, *argz_len);
-+ size_t new_argz_len = *argz_len + count * suffix_len;
-+ char *new_argz = malloc (new_argz_len);
-+
-+ if (new_argz)
-+ {
-+ char *p = new_argz, *entry;
-+
-+ for (entry = *argz;
-+ entry != NULL;
-+ entry = argz_next (*argz, *argz_len, entry))
-+ {
-+ p = stpcpy (p, entry);
-+ p = stpcpy (p, suffix);
-+ p++;
-+ }
-+
-+ free (*argz);
-+ *argz = new_argz;
-+ *argz_len = new_argz_len;
-+
-+ return 0;
-+ }
-+ else
-+ return ENOMEM;
-+}
-+weak_alias (__argz_suffix_entries, argz_suffix_entries)
-diff --git a/string/argz.h b/string/argz.h
-index bb62a31..d276a35 100644
---- a/string/argz.h
-+++ b/string/argz.h
-@@ -134,6 +134,16 @@ extern error_t argz_replace (char **__restrict __argz,
- const char *__restrict __str,
- const char *__restrict __with,
- unsigned int *__restrict __replace_count);
-+
-+/* Suffix each entry of ARGZ & ARGZ_LEN with SUFFIX. Return 0 on success,
-+ and ENOMEN if memory cannot be allocated. */
-+extern error_t __argz_suffix_entries (char **__restrict __argz,
-+ size_t *__restrict __argz_len,
-+ const char *__restrict __suffix);
-+extern error_t argz_suffix_entries (char **__restrict __argz,
-+ size_t *__restrict __argz_len,
-+ const char *__restrict __suffix);
-+
-
- /* Returns the next entry in ARGZ & ARGZ_LEN after ENTRY, or NULL if there
- are no more. If entry is NULL, then the first entry is returned. This