From patchwork Sat Dec 6 13:19:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Vivien Kraus X-Patchwork-Id: 126038 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 580C44AA51F0 for ; Sat, 6 Dec 2025 13:26:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 580C44AA51F0 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=planete-kraus.eu header.i=@planete-kraus.eu header.a=rsa-sha1 header.s=albinoniA header.b=aHfioNCu X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from planete-kraus.eu (planete-kraus.eu [89.234.140.182]) by sourceware.org (Postfix) with ESMTPS id B397B48EFB41 for ; Sat, 6 Dec 2025 13:23:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B397B48EFB41 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=planete-kraus.eu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=planete-kraus.eu ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B397B48EFB41 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=89.234.140.182 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1765027388; cv=none; b=M+iCnTh5nlrvcfgI8W+OUeDQMvRfN1/fRVKOeX5RJTMzuTnkr1PGwGuWRV5NFBM7cJPeASuJKC6Ho+WJLn3BE7KR9eM8em41bAAimlg7g5LLoKOge60C42WWzk09ASGRSOUKZ0cvO/WjU0ANNply1+s50zWe6G8nIc4C/6n8RPs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1765027388; c=relaxed/simple; bh=gRc8VFTd+T4J1FuIrC8txGWaseYx4Gu3LinH3gcAJ6c=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=k6kL3QMJNk1T0P0R65AlTISk8jZh4cIJ+Nog7VOBUrxEFxbYCqk+13U+udaCEFrs7GQu0R3aPJdOImHcNlgIao3GfXU6TZPAImveu5U2DkjXVbKWcRCOvoWWIJasbrLaM+HsrkXsaBlNQVQPB5PzW2op6X8mmDVCbc0OD7GJnqg= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B397B48EFB41 Received: from planete-kraus.eu (localhost [127.0.0.1]) by planete-kraus.eu (OpenSMTPD) with ESMTP id fc130a2d; Sat, 6 Dec 2025 13:23:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=planete-kraus.eu; h=from :to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; s= albinoniA; bh=Y3vsTNgg164JPsqNAH81sFWjoI4=; b=aHfioNCuyL7gOUR7N5 /a853PkhyR/QgKJJQopgzWFPrZUg9i1y8KiHI9vXerfB0an+IRjxXkm/GM0NEu6w /o/RPy+SVmbQa+dSmrWQFjuU2AUBBxdDCW2nSlX705En6UezYjy+phtJlJKK0FGv 1f2OhMEL47nczeg/937XEY2UhXhaxKrjVX/TggGgA3iI+l/REo1h62DsKKPTqVRX yfqyEvoVddeWxDCgAShvy7Xv0rlJPwWyof76NF4oWcPl8iRATkMuy323a3YdQvQ1 uz2aq62EckmrgMiLjzpadazzkdIZp3L1ra0ZRmB6LrgtA+UD2ipxEQtyxoFuRUI7 JeOQ== Received: by planete-kraus.eu (OpenSMTPD) with ESMTPSA id ff510986 (TLSv1.3:TLS_CHACHA20_POLY1305_SHA256:256:NO); Sat, 6 Dec 2025 13:23:05 +0000 (UTC) From: Vivien Kraus To: libc-alpha@sourceware.org, adhemerval.zanella@linaro.org Cc: Vivien Kraus Subject: [PATCH v19 08/11] posix: Add getopt_long_collision Date: Sat, 6 Dec 2025 14:19:15 +0100 Message-Id: <90583748187e0a02f63886aadeca75c5dbdba2f7.1765017925.git.vivien@planete-kraus.eu> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: <68a758ae45c064bad35bfec73c3d5ffd050398e3.1748369494.git.vivien@planete-kraus.eu> MIME-Version: 1.0 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_SHORT, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS, SPF_PASS, TXREP, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org 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 + . */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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 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 \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