From patchwork Sun Aug 10 07:46:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Vivien Kraus X-Patchwork-Id: 118139 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C7A9F3858D1E for ; Sun, 10 Aug 2025 07:55:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C7A9F3858D1E 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=IYbk1qXr 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 A39743858416 for ; Sun, 10 Aug 2025 07:47:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A39743858416 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 A39743858416 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=1754812034; cv=none; b=sjbuQQ+nG9cATrqLhax1DaOgaHx8xpwD2qu6Bw4PqnkRbpbZfYx5RUlbKPonIOsVmP0L7Cjxsy04GtudsTck3v3Y9rWoOuqyK0Mha/UpJmByTe+ywTN4XCElDsFl40FkuHAjY9PUkXO7LpWiXjrcDX2RewSyUSuAVunXb4Aagio= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1754812034; c=relaxed/simple; bh=GWmOM7jR3+aNTJSadHW+UTdyc1Ms57VTRjvGEVmbqr4=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=bVLJ+F43Ay1byceEAeBY5ZBPaVFzG5fP3j01iFfh6TLePtxPEnt71vcJA3Yk7UeR2RC6x/mzezF6DW7rH3U2a8xzX+/flJ5FMIxxPQ2mWbEDFoJ0dPwUQb3bL7lSP7gFDjKqFFhQp0LZj1R4wgDeMBYWe9azso4ma+WhOfwgBBI= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A39743858416 Received: from planete-kraus.eu (localhost [127.0.0.1]) by planete-kraus.eu (OpenSMTPD) with ESMTP id 38be6e09 for ; Sun, 10 Aug 2025 07:47:01 +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=Pgh6ywqPJIpDJ9cZcfKNmgk4JiY=; b=IYbk1qXrBrR+BdvNyj o1CK/rgNdRhpP9LJLscptyclrBOComGNpMD//nZo3whr/3FkG1blr50HBN9jI5yd ae6bAFM/Y3bHwGtG5Qpi3Nt8C37l9lcLx8Gd9/hXPI7ll9oFzsHN6YwxBx24fcNo XMrvM22GpVKebb/AHdKgTz6K3uBjsLSy8L0UukFhkB0M/djCr2WyCYuSW6QtoP63 Ho+kUSZAgHqduo1k8ejw/mVTRwdRRr8QHjYnpKEfSFUgShVh9J6xACpC1TlMKchI dBH27KduDZ5sCJvWaVoSzOb/ctDKKWv0fBgrn0oCUdJBL2pe7sAJiKoqFR7gQFWt Okyg== Received: by planete-kraus.eu (OpenSMTPD) with ESMTPSA id 4aa28d9a (TLSv1.3:TLS_CHACHA20_POLY1305_SHA256:256:NO); Sun, 10 Aug 2025 07:47:00 +0000 (UTC) From: Vivien Kraus To: libc-alpha@sourceware.org Cc: Vivien Kraus Subject: [PATCH v10 8/8] posix: Add getopt_long_collision Date: Sun, 10 Aug 2025 09:46:31 +0200 Message-Id: <20250810074631.1707448-9-vivien@planete-kraus.eu> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250810074631.1707448-1-vivien@planete-kraus.eu> References: <68a758ae45c064bad35bfec73c3d5ffd050398e3.1748369494.git.vivien@planete-kraus.eu> <20250810074631.1707448-1-vivien@planete-kraus.eu> MIME-Version: 1.0 X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.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 | 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 +#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} + }; + +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 \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 0c747abd5a..270a287fb1 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -2633,6 +2633,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist index 92a528fe87..6d2f2764c4 100644 --- a/sysdeps/mach/hurd/x86_64/libc.abilist +++ b/sysdeps/mach/hurd/x86_64/libc.abilist @@ -2315,6 +2315,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x8 GLIBC_2.43 opttextdomain D 0x8 HURD_CTHREADS_0.3 __cthread_getspecific F diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist index 674e9c3df0..bd2fc3459d 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist @@ -2767,5 +2767,6 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision 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 5aca947935..6de460a4ce 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -3114,6 +3114,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x8 GLIBC_2.43 opttextdomain D 0x8 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist index cb112c7605..ec434e063a 100644 --- a/sysdeps/unix/sysv/linux/arc/libc.abilist +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist @@ -2528,5 +2528,6 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision 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 80304ec482..a862bcdff9 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -2820,6 +2820,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index 87a4ac328c..c024e55004 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -2817,6 +2817,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist index 7c2edba014..e70e5dbabd 100644 --- a/sysdeps/unix/sysv/linux/csky/libc.abilist +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -2804,5 +2804,6 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision 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 6da7cb79e6..4c37fbc716 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2841,6 +2841,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index 7109939c23..c3d83801eb 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -3024,6 +3024,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist index 1bb395c6f7..629877f8d5 100644 --- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist +++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist @@ -2288,5 +2288,6 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision 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 e285187b1b..47dbb042d2 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -2800,6 +2800,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index 77b4724fad..ceb10318fc 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2967,6 +2967,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist index 5108041099..17cd57970f 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -2853,5 +2853,6 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision 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 76ecf09fa8..e0de98ac3c 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -2850,5 +2850,6 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision 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 4b55996b7c..9867434009 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2930,6 +2930,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index adbd052f5a..7471a23f9e 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2928,6 +2928,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index 460e11ff4c..725a1d4f6d 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2936,6 +2936,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index 4fa846f464..dea2492c8a 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -2838,6 +2838,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x8 GLIBC_2.43 opttextdomain D 0x8 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist index 4b9d318e62..8b2d5cbdcd 100644 --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist @@ -2278,5 +2278,6 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision 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 40e8992fba..3ff7f80687 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -3157,6 +3157,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index fcc75c62d2..6a68707a6d 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -3202,6 +3202,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist index b943d07358..f0ea1d1db8 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist @@ -2911,6 +2911,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x8 GLIBC_2.43 opttextdomain D 0x8 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist index ecbd541f96..df3a4618d5 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist @@ -2987,5 +2987,6 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision 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 68d273beb7..c53838f67e 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist @@ -2531,5 +2531,6 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision 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 c6e0abe8cc..d7ac22e152 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist @@ -2731,5 +2731,6 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision 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 77dfbd9836..798dd19ca6 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -3155,6 +3155,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist index 9182954730..61f6f1722b 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -2948,6 +2948,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x8 GLIBC_2.43 opttextdomain D 0x8 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index 6dfe768e44..0c39ac0c33 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2847,6 +2847,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index 0554446265..7fa2e73048 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2844,6 +2844,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index de0f1e7677..438a4c186e 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -3178,6 +3178,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index 9877a7c729..96475afa05 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -2814,6 +2814,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x8 GLIBC_2.43 opttextdomain D 0x8 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index fd6e49b06b..7931351bbd 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -2763,6 +2763,7 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x8 GLIBC_2.43 opttextdomain D 0x8 GLIBC_2.5 __readlinkat_chk F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist index 0b3955e996..a897b553ed 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist @@ -2782,5 +2782,6 @@ GLIBC_2.42 uabs F GLIBC_2.42 uimaxabs F GLIBC_2.42 ulabs F GLIBC_2.42 ullabs F +GLIBC_2.43 getopt_long_collision F GLIBC_2.43 optctxt D 0x4 GLIBC_2.43 opttextdomain D 0x4