[PATCH v12 8/9] posix: Add getopt_long_collision
Vivien Kraus
vivien@planete-kraus.eu
Sun Oct 5 16:34:31 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 | 49 ++++++++++++++
posix/tst-getopt_long_collision.c | 66 +++++++++++++++++++
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, 209 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 7834f1c2a3..e769b0ee70 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 1a2cdb053f..1bdb0b2585 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-tilde \
tst-glob_symlinks \
tst-gnuglob \
@@ -342,6 +343,15 @@ $(tstgetoptl_mo): tstgetoptl.po
$(objpfx)tstgetoptl.out: $(tstgetoptl_mo)
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)
+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 6cd0932596..9c7f940d1f 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 48852dc692..1e1265c531 100644
--- a/posix/getopt1.c
+++ b/posix/getopt1.c
@@ -109,6 +109,55 @@ _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;
+
+ *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);
+ 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;
+ return 1;
+ }
+ names_list = item_end;
+ }
+ }
+ 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..4cd9447709
--- /dev/null
+++ b/posix/tst-getopt_long_collision.c
@@ -0,0 +1,66 @@
+#include <getopt.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <libintl.h>
+#include <locale.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}
+ };
+
+int
+main (int argc, char **argv)
+{
+ (void) argc;
+ (void) argv;
+ const struct option *collision = NULL;
+ int has_collision;
+ unsetenv ("LANGUAGE");
+ setlocale (LC_ALL, "fr_FR.UTF-8");
+ if (bindtextdomain ("tst-getopt_long_collision", OBJPFX "domaindir") == NULL)
+ {
+ fprintf (stderr, "%s:%d: cannot call bindtextdomain.\n", __FILE__, __LINE__);
+ abort ();
+ }
+ /* Check that the catalog is OK: */
+ if (strcmp (dgettext ("tst-getopt_long_collision",
+ TRANSLATION_CONTEXT "\004" "instant"),
+ "moment instant") != 0)
+ {
+ fprintf (stderr, "%s:%d: the mo file does not work.\n", __FILE__, __LINE__);
+ abort ();
+ }
+ has_collision =
+ getopt_long_collision (options, TRANSLATION_CONTEXT,
+ "tst-getopt_long_collision", &collision);
+ if (!has_collision)
+ {
+ fprintf (stderr, "%s:%d: collision not found.\n", __FILE__, __LINE__);
+ abort ();
+ }
+ if (strcmp (collision->name, "moment") != 0)
+ {
+ fprintf (stderr, "%s:%d: wrong collision detected, '%s' instead of 'moment'.\n",
+ __FILE__, __LINE__, collision->name);
+ abort ();
+ }
+ return 0;
+}
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 d879f5a363..9952a339f1 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -2663,6 +2663,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist
index 4b6580b2cc..d27a434b8e 100644
--- a/sysdeps/mach/hurd/x86_64/libc.abilist
+++ b/sysdeps/mach/hurd/x86_64/libc.abilist
@@ -2344,6 +2344,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x8
GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index 93730d969e..8e5627f2d5 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2768,6 +2768,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x8
GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index 06412be15c..95c82143c4 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -3115,6 +3115,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x8
GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
index e0c6c9f293..baa67af1f8 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -2529,6 +2529,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 7929ecb5ce..42b2843120 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
@@ -2821,6 +2821,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
index 4b7ca1bdf0..7f5772e6a6 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
@@ -2818,6 +2818,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
index 326be1421c..07347bcaf9 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2805,6 +2805,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 31be97a20d..a104588ead 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -2842,6 +2842,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
index 3100d3720d..215f81f310 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -3025,6 +3025,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
index 521343313d..c3ee573c25 100644
--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
@@ -2289,6 +2289,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x8
GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 974a643266..25328bcedf 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -2801,6 +2801,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
index 474da3c6e6..cafd37e64e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -2968,6 +2968,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
index 3772bbf961..0163585ba6 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2854,6 +2854,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index 81fdbf5528..ed50cec614 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2851,6 +2851,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 8bf825fbd0..00f29bfb0c 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -2931,6 +2931,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
index 3995eb7112..fadc850360 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -2929,6 +2929,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
index c7f9d75936..fb838cf6e0 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -2937,6 +2937,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
index fa4c0b6abb..db88142e10 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -2839,6 +2839,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x8
GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist
index 685e674205..a9da56876b 100644
--- a/sysdeps/unix/sysv/linux/or1k/libc.abilist
+++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist
@@ -2279,6 +2279,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index b739c5b3dd..fee1496cac 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -3158,6 +3158,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
index 25a45c7596..6f6400c22d 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -3203,6 +3203,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
index 88979415c3..e44a3b326c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
@@ -2912,6 +2912,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x8
GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
index f55d5abaa1..a11e6d406e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2988,6 +2988,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x8
GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index d644e2b658..2276defe21 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -2532,6 +2532,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index 8f90416e6f..c2e4d1c0d1 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2732,6 +2732,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x8
GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 2eb7244ede..7aa56fc320 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -3156,6 +3156,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index 0418207b55..c6d5939ea7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -2949,6 +2949,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x8
GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
index c882ecd323..a82a82aaf0 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
@@ -2848,6 +2848,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
index d8ad0073b8..e49dbe47e1 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
@@ -2845,6 +2845,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
index fee6128da5..78f3d976ae 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -3179,6 +3179,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
index 78e1358a87..b06c012322 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -2815,6 +2815,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x8
GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
index 33afb283fa..3451a56e6d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -2764,6 +2764,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x8
GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
index 6bf8159064..1a85101261 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2783,6 +2783,7 @@ GLIBC_2.42 uimaxabs F
GLIBC_2.42 ulabs F
GLIBC_2.42 ullabs F
GLIBC_2.43 __memset_explicit_chk F
+GLIBC_2.43 getopt_long_collision F
GLIBC_2.43 memset_explicit F
GLIBC_2.43 optctxt D 0x4
GLIBC_2.43 opttextdomain D 0x4
--
2.34.1
More information about the Libc-alpha
mailing list