[PATCH v19 08/11] posix: Add getopt_long_collision
Vivien Kraus
vivien@planete-kraus.eu
Sat Dec 6 13:19:15 GMT 2025
This function is used before introducing a new option name with all
known linguas to check that no translator has used the exact same name
as a translation for a different option.
It only checks for untranslated / translated collision, because:
- translated / translated conflicts in the same language can be solved
by the translator;
- translated / translated conflicts in another language will not
happen during a call to getopt_long.
When a collision is detected, it only returns the untranslated side of
the collision because the translator for the current locale knows
which option conflicts with the untranslated one.
It would maybe more useful for developers to have a maintainer script
doing equivalent work, but this function serves as a way to remind
them to check for collisions and discuss them with the translators
before introducing a new option name.
---
manual/getopt.texi | 22 ++++++
posix/Makefile | 10 +++
posix/Versions | 2 +-
posix/bits/getopt_ext.h | 5 ++
posix/getopt1.c | 52 ++++++++++++++
posix/tst-getopt_long_collision.c | 70 +++++++++++++++++++
posix/tst-getopt_long_collision.po | 22 ++++++
sysdeps/mach/hurd/i386/libc.abilist | 1 +
sysdeps/mach/hurd/x86_64/libc.abilist | 1 +
sysdeps/unix/sysv/linux/aarch64/libc.abilist | 1 +
sysdeps/unix/sysv/linux/alpha/libc.abilist | 1 +
sysdeps/unix/sysv/linux/arc/libc.abilist | 1 +
sysdeps/unix/sysv/linux/arm/be/libc.abilist | 1 +
sysdeps/unix/sysv/linux/arm/le/libc.abilist | 1 +
sysdeps/unix/sysv/linux/csky/libc.abilist | 1 +
sysdeps/unix/sysv/linux/hppa/libc.abilist | 1 +
sysdeps/unix/sysv/linux/i386/libc.abilist | 1 +
.../sysv/linux/loongarch/lp64/libc.abilist | 1 +
.../sysv/linux/m68k/coldfire/libc.abilist | 1 +
.../unix/sysv/linux/m68k/m680x0/libc.abilist | 1 +
.../sysv/linux/microblaze/be/libc.abilist | 1 +
.../sysv/linux/microblaze/le/libc.abilist | 1 +
.../sysv/linux/mips/mips32/fpu/libc.abilist | 1 +
.../sysv/linux/mips/mips32/nofpu/libc.abilist | 1 +
.../sysv/linux/mips/mips64/n32/libc.abilist | 1 +
.../sysv/linux/mips/mips64/n64/libc.abilist | 1 +
sysdeps/unix/sysv/linux/or1k/libc.abilist | 1 +
.../linux/powerpc/powerpc32/fpu/libc.abilist | 1 +
.../powerpc/powerpc32/nofpu/libc.abilist | 1 +
.../linux/powerpc/powerpc64/be/libc.abilist | 1 +
.../linux/powerpc/powerpc64/le/libc.abilist | 1 +
.../unix/sysv/linux/riscv/rv32/libc.abilist | 1 +
.../unix/sysv/linux/riscv/rv64/libc.abilist | 1 +
.../unix/sysv/linux/s390/s390-32/libc.abilist | 1 +
.../unix/sysv/linux/s390/s390-64/libc.abilist | 1 +
sysdeps/unix/sysv/linux/sh/be/libc.abilist | 1 +
sysdeps/unix/sysv/linux/sh/le/libc.abilist | 1 +
.../sysv/linux/sparc/sparc32/libc.abilist | 1 +
.../sysv/linux/sparc/sparc64/libc.abilist | 1 +
.../unix/sysv/linux/x86_64/64/libc.abilist | 1 +
.../unix/sysv/linux/x86_64/x32/libc.abilist | 1 +
41 files changed, 216 insertions(+), 1 deletion(-)
create mode 100644 posix/tst-getopt_long_collision.c
create mode 100644 posix/tst-getopt_long_collision.po
diff --git a/manual/getopt.texi b/manual/getopt.texi
index 17d238c255..81093b910f 100644
--- a/manual/getopt.texi
+++ b/manual/getopt.texi
@@ -383,6 +383,28 @@ not match a long option (or its abbreviation).
@end deftypefun
+It is possible for the programmer to introduce a new option name that
+conflicts with the translation of an existing option name. Such a
+case would disrupt the workflow of users as the new option would
+replace the existing option. Before adding a new option to a program,
+the developer should check for collisions with all known translations.
+
+@deftypefun int getopt_long_collision (const struct option *@var{longopts}, const char *@var{context}, const char *@var{domain}, const struct option **@var{first_collision})
+
+Check whether there is a collision with any of the untranslated names
+of @var{longopts} and any of the translated names in the current
+locale. Translations are looked up with @var{context}, in
+@var{domain}. Set @var{first_collision} to @code{NULL}, or to the
+address of the first option whose untranslated name collides with
+another option’s translated name.
+
+If the collision happens between two identical translations of
+different options, it is not recognized, as it is simply a problem to
+be solved by the translator.
+
+Return 0 if no collisions are detected, 1 if a collision is detected.
+@end deftypefun
+
@node Getopt Long Option Example
@subsection Example of Parsing Long Options with @code{getopt_long}
diff --git a/posix/Makefile b/posix/Makefile
index d82f09f949..357a24b749 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -288,6 +288,7 @@ tests := \
tst-fork \
tst-gai_strerror \
tst-getopt_long1 \
+ tst-getopt_long_collision \
tst-glob-bz30635 \
tst-glob-tilde \
tst-glob_symlinks \
@@ -343,6 +344,15 @@ $(tstgetoptl_mo): tstgetoptl.po
$(objpfx)tstgetoptl.out: $(tstgetoptl_mo) $(gen-locales)
CFLAGS-tstgetoptl.c += -DOBJPFX=\"$(objpfx)\"
+tst_getopt_long_collision_mo = $(objpfx)domaindir/fr_FR/LC_MESSAGES/tst-getopt_long_collision.mo
+$(tst_getopt_long_collision_mo): tst-getopt_long_collision.po
+ $(make-target-directory)
+ msgfmt -o $@T $<
+ mv -f $@T $@
+
+$(objpfx)tst-getopt_long_collision.out: $(tst_getopt_long_collision_mo) $(gen-locales)
+CFLAGS-tst-getopt_long_collision.c += -DOBJPFX=\"$(objpfx)\"
+
# Test for the glob symbol version that was replaced in glibc 2.27.
ifeq ($(have-GLIBC_2.26)$(build-shared),yesyes)
tests += \
diff --git a/posix/Versions b/posix/Versions
index d1c2cffcf9..5b4c2e753e 100644
--- a/posix/Versions
+++ b/posix/Versions
@@ -160,7 +160,7 @@ libc {
posix_spawn_file_actions_addtcsetpgrp_np;
}
GLIBC_2.43 {
- optctxt; opttextdomain;
+ optctxt; opttextdomain; getopt_long_collision;
}
GLIBC_PRIVATE {
__libc_fork; __libc_pread; __libc_pwrite;
diff --git a/posix/bits/getopt_ext.h b/posix/bits/getopt_ext.h
index 0fbfffa2f5..e8023865fd 100644
--- a/posix/bits/getopt_ext.h
+++ b/posix/bits/getopt_ext.h
@@ -84,6 +84,11 @@ extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
const struct option *__longopts, int *__longind)
__THROW __nonnull ((2, 3));
+extern int getopt_long_collision (const struct option *__longopts,
+ const char *__context,
+ const char *__domain,
+ const struct option **__first_collision);
+
__END_DECLS
#endif /* getopt_ext.h */
diff --git a/posix/getopt1.c b/posix/getopt1.c
index c37985a061..25b7fb08a2 100644
--- a/posix/getopt1.c
+++ b/posix/getopt1.c
@@ -114,6 +114,58 @@ _getopt_long_only_r (int argc, char **argv, const char *options,
1, d, 0, do_translate);
}
+int
+getopt_long_collision (const struct option *long_options,
+ const char *context,
+ const char *domain,
+ const struct option **first_collision)
+{
+ size_t n_options = 0;
+ size_t untranslated_option_index, translated_option_index;
+ const char *names_list;
+ const char *item_end;
+ size_t item_length;
+ const struct option *untranslated;
+ const struct option *translated;
+ char *translation_buffer = NULL;
+
+ *first_collision = NULL;
+ for (n_options = 0; long_options[n_options].name; n_options++)
+ ;
+ for (untranslated_option_index = 0;
+ untranslated_option_index < n_options;
+ untranslated_option_index++)
+ for (translated_option_index = 0;
+ translated_option_index < n_options;
+ translated_option_index++)
+ if (translated_option_index != untranslated_option_index)
+ {
+ untranslated = &(long_options[untranslated_option_index]);
+ translated = &(long_options[translated_option_index]);
+ names_list = do_translate (domain, context, translated->name, &translation_buffer);
+ while (names_list)
+ {
+ item_length = strlen (names_list);
+ item_end = strchr (names_list, ' ');
+ if (item_end)
+ {
+ item_length = item_end - names_list;
+ item_end++;
+ }
+ if (item_length == strlen (untranslated->name)
+ && strncmp (untranslated->name, names_list, item_length) == 0)
+ {
+ *first_collision = untranslated;
+ free (translation_buffer);
+ return 1;
+ }
+ names_list = item_end;
+ }
+ free (translation_buffer);
+ }
+ return 0;
+}
+
#ifdef TEST
diff --git a/posix/tst-getopt_long_collision.c b/posix/tst-getopt_long_collision.c
new file mode 100644
index 0000000000..e44332dca5
--- /dev/null
+++ b/posix/tst-getopt_long_collision.c
@@ -0,0 +1,70 @@
+/* Copyright (C) 2025 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <libintl.h>
+#include <locale.h>
+#include <support/support.h>
+#include <support/check.h>
+
+#define PN_(ctxt, str) (str)
+
+/* This checks that getopt_long_collision detects if the translation
+ of an option collides with an untranslated option name. Such a
+ conflict would be resolved by favoring the untranslated option by
+ the way. */
+
+#define TRANSLATION_CONTEXT "command-line option"
+
+/* In this example, the French translator translated --instant by
+ --moment, but then the developer wants to introduce a new --moment
+ option... */
+
+static const struct option options[] =
+ {
+ {PN_ ("command-line option", "instant"), no_argument, NULL, 'I'},
+ {"moment", no_argument, NULL, 'M'},
+ {NULL, 0, NULL, 0}
+ };
+
+static int
+do_test (void)
+{
+ const struct option *collision = NULL;
+ int has_collision;
+ xsetlocale (LC_MESSAGES, "fr_FR.UTF-8");
+ TEST_VERIFY_EXIT (bindtextdomain ("tst-getopt_long_collision", OBJPFX "domaindir") != NULL);
+ TEST_VERIFY_EXIT (textdomain ("tst-getopt_long_collision") != NULL);
+ /* Check that the catalog is OK: */
+ TEST_COMPARE_STRING (dgettext ("tst-getopt_long_collision",
+ TRANSLATION_CONTEXT "\004" "instant"),
+ "moment instant");
+ has_collision =
+ getopt_long_collision (options, TRANSLATION_CONTEXT,
+ "tst-getopt_long_collision", &collision);
+ TEST_VERIFY (has_collision);
+ if (has_collision)
+ TEST_COMPARE_STRING (collision->name, "moment");
+ return 0;
+}
+
+#define TEST_FUNCTION do_test
+#include <support/test-driver.c>
diff --git a/posix/tst-getopt_long_collision.po b/posix/tst-getopt_long_collision.po
new file mode 100644
index 0000000000..9cd4a81861
--- /dev/null
+++ b/posix/tst-getopt_long_collision.po
@@ -0,0 +1,22 @@
+# French translations for tst-getopt_long_collision.c
+# Copyright (C) 2025 THE GNU C Library'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the GNU C Library.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU C Library (see version.h)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2025-06-06 22:37+0200\n"
+"PO-Revision-Date: 2025-06-06 22:38+0200\n"
+"Language-Team: French <traduc@traduc.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+# Oops, I first thought it would be translated as instant, but it’s moment in fact.
+#: tst-getopt_long_collision.c:22
+msgctxt "command-line option"
+msgid "instant"
+msgstr "moment instant"
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index 2177e6e100..37a00fd6f9 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -2707,6 +2707,7 @@ GLIBC_2.43 cnd_timedwait F
GLIBC_2.43 cnd_wait F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mtx_destroy F
diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist
index 18a2d8092d..a69559ce1e 100644
--- a/sysdeps/mach/hurd/x86_64/libc.abilist
+++ b/sysdeps/mach/hurd/x86_64/libc.abilist
@@ -2384,6 +2384,7 @@ GLIBC_2.43 cnd_timedwait F
GLIBC_2.43 cnd_wait F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mtx_destroy F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 932d752b7b..a6d3f509fe 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2770,6 +2770,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 21698c1c71..36b14b8d05 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -3117,6 +3117,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index b99f73e5ca..30d6b803b9 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -2531,6 +2531,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 78e695b2a9..b23671d0f8 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -2823,6 +2823,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 79eef121d1..497f117fd9 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -2820,6 +2820,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 89bd8e19a8..1390b9e549 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2807,6 +2807,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 331c8f4379..028f060c12 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2844,6 +2844,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 05e6e67523..1ecf9bc3d7 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -3027,6 +3027,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
index 64d8c64388..83d42bc644 100644
--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
@@ -2291,6 +2291,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 4ebdf65512..da6ea44fd6 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -2803,6 +2803,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 6a5a305d3f..690ca695f3 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2970,6 +2970,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 8d3d5d067b..a0018411c3 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2856,6 +2856,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 206783ce68..a645b19d14 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2853,6 +2853,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index cf93c9294a..40c4759c30 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2933,6 +2933,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 1cc38c4c89..5700ab494a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2931,6 +2931,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index 3e51c7f31d..fbba38ce2c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2939,6 +2939,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index bc03f55d4d..688eeef9c8 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2841,6 +2841,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist
index 1ae3b9d128..ff81503316 100644
--- a/sysdeps/unix/sysv/linux/or1k/libc.abilist
+++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist
@@ -2281,6 +2281,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 21a37b0f9f..04dd8d0381 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -3160,6 +3160,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 82e33b1ba8..1f62b9aa59 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -3205,6 +3205,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index e8ed9cda80..64899625b6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2914,6 +2914,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index 9144ba40a3..66eddb159f 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2990,6 +2990,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index a2c2af42ef..67450c4e41 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -2534,6 +2534,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 68b3b66a8e..aa034d228a 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2734,6 +2734,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 87e772b11b..2ecc40db44 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -3158,6 +3158,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index ac381d1439..cacb65cb61 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2951,6 +2951,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index 0a1e8da204..8475bcaeef 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2850,6 +2850,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index 0753830332..4dbcf2689c 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2847,6 +2847,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index 27b25f02f9..a70f0200cb 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -3181,6 +3181,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index cde2c7998e..38419ad8b8 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2817,6 +2817,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index cc1c0d0b68..f72e3c3916 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2766,6 +2766,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 39eadde8c1..89075bf6fa 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2785,6 +2785,7 @@ GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
GLIBC_2.43 free_aligned_sized F
GLIBC_2.43 free_sized F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memalignment F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 mseal F
--
2.34.1
More information about the Libc-alpha
mailing list