From patchwork Thu Apr 23 16:04:00 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Vivien Kraus X-Patchwork-Id: 133830 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 691F44BAE7F7 for ; Thu, 23 Apr 2026 16:06:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 691F44BAE7F7 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=WRt1gkZM X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from planete-kraus.eu (planete-kraus.eu [IPv6:2a00:5881:4008:2810::309]) by sourceware.org (Postfix) with ESMTPS id 4BADB4BBCD99 for ; Thu, 23 Apr 2026 16:05:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4BADB4BBCD99 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 4BADB4BBCD99 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:5881:4008:2810::309 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776960345; cv=none; b=oFUTWhbpmll0WEvOWMN49RlvnZ0lDmt1tS3S/1WZDAqBxa+4XpvfXOsbxrMlOyhmbk5L7zXFNCE/6JGNn39WkEwShOu2IpnSnFJR6qBxLKTt8NiVeD8RiL2dRnQ0Unu31qnLBzpchE8xa8WTuXTZRcZ3a3vqKtInlwQ2hKSYf2w= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776960345; c=relaxed/simple; bh=kq0TZE1Ket815HGvWCAP16ALohK+NMwkIMLxehgvcAg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=pSKzmoPTGTv/Hha8riNBDrFiTOAxsPaZG+KhO4rQlti7x5ue+ZutfC704VkVZvol3NKiGuL6s1G2jJ3GqPD5pmNHiiF94M2Bpa3j9ztkMidDm9tXonQju9NWxK7i61DEh9QsuGvHskb7QvxP0+wVfb/96eVh7OUSgt4P2YkfpXA= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4BADB4BBCD99 Received: from planete-kraus.eu (localhost [127.0.0.1]) by planete-kraus.eu (OpenSMTPD) with ESMTP id 98fb7cc2; Thu, 23 Apr 2026 16:05:42 +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=Z11kl9vzYOI16ij7RC0nLU/EqiY=; b=WRt1gkZMAWuatyojKl Qj5gaUULyHDloTpLPBz+DCjxm4q7FNjB7+2CleaAZwYOeJJ0+J5tzzioDz6PLZDd ETKXXz1bPAQSe3spHYQFukVMTVMcU8GYqC/bx2+SFdp6SYkBTcxev4vzcJ6k3BtT IUuyEjv8P9ZUrVybQGhRxmuoX9qw2zbwCAuzcY6gJhmYfP6i0b6OtfEz4UOfyNOL yDLhTexaDGlQo7wc6R9SKlaG8JOaUmYCYTCh31NVFR2R5jrix5O7G1zGkhy9YXFY dKYGLkxkDd7KS5TibJ83npWTGmG0app4xuEnPcExhOtYzo3poFsi4wY8Q0kLzXEK vGpQ== Received: by planete-kraus.eu (OpenSMTPD) with ESMTPSA id b71f3820 (TLSv1.3:TLS_CHACHA20_POLY1305_SHA256:256:NO); Thu, 23 Apr 2026 16:05:39 +0000 (UTC) From: Vivien Kraus To: adhemerval.zanella@linaro.org, libc-alpha@sourceware.org Cc: Vivien Kraus Subject: [PATCH v22 2/9] posix: let the getopt caller set the translation context Date: Thu, 23 Apr 2026 18:04:00 +0200 Message-ID: <081a71d7a620b3f704bab0c0705ae02f3c582d9f.1776957778.git.vivien@planete-kraus.eu> X-Mailer: git-send-email 2.52.0 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, 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 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 Option names are typically one word, so they could be translated differently in different parts of the program. The use of a context lets the translator pick the most appropriate translation when used in the command-line. Another possibility would be to prepend two dashes to the option name before translation, such that it would be obvious this is the command-line option name. However, it would be difficult to mark this string for translation (to be processed by xgettext). This patch creates a new global variable / reentrant state field, optctxt, a pointer, so that the caller can override it. If it is not set, or set to NULL, then no translated option name will be recognized. To avoid exporting global variables, a couple of functions have been added to set it. pgettext_expr is not available yet, so we use a custom function to combine the context and the long option name, and discard the context if no translation was performed. --- NEWS | 5 ++ manual/getopt.texi | 41 +++++++--- posix/Versions | 4 + posix/bits/getopt_ext.h | 3 + posix/getopt.c | 47 ++++++++---- posix/getopt1.c | 74 ++++++++++++++++++- posix/getopt_int.h | 8 +- posix/tstgetoptl.c | 38 ++++++++-- posix/tstgetoptl.po | 3 + sysdeps/mach/hurd/i386/libc.abilist | 2 + sysdeps/mach/hurd/x86_64/libc.abilist | 2 + sysdeps/unix/sysv/linux/aarch64/libc.abilist | 2 + sysdeps/unix/sysv/linux/alpha/libc.abilist | 2 + sysdeps/unix/sysv/linux/arc/libc.abilist | 2 + sysdeps/unix/sysv/linux/arm/be/libc.abilist | 2 + sysdeps/unix/sysv/linux/arm/le/libc.abilist | 2 + sysdeps/unix/sysv/linux/csky/libc.abilist | 2 + sysdeps/unix/sysv/linux/hppa/libc.abilist | 2 + sysdeps/unix/sysv/linux/i386/libc.abilist | 2 + .../sysv/linux/loongarch/ilp32/libc.abilist | 2 + .../sysv/linux/loongarch/lp64/libc.abilist | 2 + .../sysv/linux/m68k/coldfire/libc.abilist | 2 + .../unix/sysv/linux/m68k/m680x0/libc.abilist | 2 + .../sysv/linux/microblaze/be/libc.abilist | 2 + .../sysv/linux/microblaze/le/libc.abilist | 2 + .../sysv/linux/mips/mips32/fpu/libc.abilist | 2 + .../sysv/linux/mips/mips32/nofpu/libc.abilist | 2 + .../sysv/linux/mips/mips64/n32/libc.abilist | 2 + .../sysv/linux/mips/mips64/n64/libc.abilist | 2 + sysdeps/unix/sysv/linux/or1k/libc.abilist | 2 + .../linux/powerpc/powerpc32/fpu/libc.abilist | 2 + .../powerpc/powerpc32/nofpu/libc.abilist | 2 + .../linux/powerpc/powerpc64/be/libc.abilist | 2 + .../linux/powerpc/powerpc64/le/libc.abilist | 2 + .../unix/sysv/linux/riscv/rv32/libc.abilist | 2 + .../unix/sysv/linux/riscv/rv64/libc.abilist | 2 + sysdeps/unix/sysv/linux/s390/libc.abilist | 2 + sysdeps/unix/sysv/linux/sh/be/libc.abilist | 2 + sysdeps/unix/sysv/linux/sh/le/libc.abilist | 2 + .../sysv/linux/sparc/sparc32/libc.abilist | 2 + .../sysv/linux/sparc/sparc64/libc.abilist | 2 + .../unix/sysv/linux/x86_64/64/libc.abilist | 2 + .../unix/sysv/linux/x86_64/x32/libc.abilist | 2 + 43 files changed, 253 insertions(+), 38 deletions(-) diff --git a/NEWS b/NEWS index 4e53a079e9..48f7589f49 100644 --- a/NEWS +++ b/NEWS @@ -19,6 +19,11 @@ Major new features: * New locale added: hrx_BR (Hunsrik language spoken in Brazil). * The getopt_long function now accepts translated long option names. + This functionality is enabled or disabled by calling + getopt_long_enable_translations / getopt_long_disable_translations. + +* Argp parsers enable translated long option names with "command-line + option" as the message context. Deprecated and removed features, and other changes affecting compatibility: diff --git a/manual/getopt.texi b/manual/getopt.texi index 5ae22a1595..fe45ae55a3 100644 --- a/manual/getopt.texi +++ b/manual/getopt.texi @@ -202,15 +202,6 @@ declared in @file{getopt.h}, not @file{unistd.h}. You should make every program accept long options if it uses any options, for this takes little extra work and helps beginners remember how to use the program. -Both long option names and their translations provided by the program -for the user's current locale are recognized. This helps users of -your program who do not speak English understand the meaning of the -options, and it does not break the function of the program in scripts -if the untranslated option names are used. If international -communication involves the invocation of your program, the program -users should be encouraged to use untranslated option names or publish -the locale used for this invocation. - @deftp {Data Type} {struct option} @standards{GNU, getopt.h} This structure describes a single long option name for the sake of @@ -224,7 +215,8 @@ The @code{struct option} structure has these fields: @item const char *name This field is the name of the option. It is a string. In order for @command{getopt_long} to accept either the long option name or its -translated form, you should mark this string for translation. +translated form, you should mark this string for translation with a +translation context, and call @code{getopt_long_enable_translations}. @item int has_arg This field says whether the option takes an argument. It is an integer, @@ -246,6 +238,35 @@ was seen. @end table @end deftp +@deftypefun int getopt_long_enable_translations (const char *@var{msgctxt}) +@deftypefunx void getopt_long_disable_translations (void) +@standards{GNU, getopt.h} +@c FIXME: I copied that from getopt_long, but I don't understand +@c it. getopt_long_*able_translations use malloc/free and modifies +@c global state. +@safety{@prelim{}@mtunsafe{@mtasurace{:getopt} @mtsenv{}}@asunsafe{@ascuheap{} @ascuintl{} @asulock{} @asucorrupt{}}@acunsafe{@acsmem{} @aculock{} @acucorrupt{}}} +If long option translations are enabled, then both long option names +and their translations provided by the program for the user's current +locale are recognized. This helps users of your program who do not +speak English understand the meaning of the options, without breaking +the function of the program in scripts if the untranslated option +names are used. If international communication involves the +invocation of your program, the program users should be encouraged to +use untranslated option names or publish the locale used for this +invocation. + +Since option names may be short words instead of long sentences, they +may have different translations in different contexts within the same +program. @xref{Contexts, , Using contexts for solving ambiguities, +gettext, the GNU Gettext manual}, for more information. @var{msgctxt} +should be a non-NULL string to disambiguate option name translations. +Passing NULL, or calling @code{getopt_long_disable_translations()}, +will disable option name translation. + +@code{getopt_long_enable_translations} returns 0 on success, or -1 and +sets errno. +@end deftypefun + @deftypefun int getopt_long (int @var{argc}, char *const *@var{argv}, const char *@var{shortopts}, const struct option *@var{longopts}, int *@var{indexptr}) @standards{GNU, getopt.h} @safety{@prelim{}@mtunsafe{@mtasurace{:getopt} @mtsenv{}}@asunsafe{@ascuheap{} @ascuintl{} @asulock{} @asucorrupt{}}@acunsafe{@acsmem{} @aculock{} @acucorrupt{}}} diff --git a/posix/Versions b/posix/Versions index 0624d24bcc..10ca3b7ea3 100644 --- a/posix/Versions +++ b/posix/Versions @@ -159,6 +159,10 @@ libc { GLIBC_2.35 { posix_spawn_file_actions_addtcsetpgrp_np; } + GLIBC_2.44 { + getopt_long_enable_translations; + getopt_long_disable_translations; + } GLIBC_PRIVATE { __libc_fork; __libc_pread; __libc_pwrite; __nanosleep_nocancel; __pause_nocancel; diff --git a/posix/bits/getopt_ext.h b/posix/bits/getopt_ext.h index 94ca758fcd..8f065bbe9f 100644 --- a/posix/bits/getopt_ext.h +++ b/posix/bits/getopt_ext.h @@ -71,6 +71,9 @@ extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind) __THROW __nonnull ((2, 3)); +extern int getopt_long_enable_translations (const char *__msgctxt) + __attribute_warn_unused_result__; +extern void getopt_long_disable_translations (void); __END_DECLS diff --git a/posix/getopt.c b/posix/getopt.c index cdc02d4da9..6717449b5c 100644 --- a/posix/getopt.c +++ b/posix/getopt.c @@ -182,22 +182,30 @@ exchange (char **argv, struct _getopt_data *d) d->__last_nonopt = d->optind; } -/* Return true iff a translation for opt_name has been found and it - matches the substring from argument, length argument_length. +/* Return true iff translation_context is not NULL, a translation for + opt_name has been found and it matches the substring from argument, + length argument_length. */ static bool -match_translated_option_name (char *(*translate) (const char *msgid), +match_translated_option_name (char *(*translate) (const char *, const char *, + char **), const char *argument, size_t argument_length, + const char *translation_context, const char *opt_name) { const char *translated = opt_name; + char *translation_buffer = NULL; + bool matches = false; if (translate != NULL) - translated = translate (opt_name); + translated = translate (translation_context, opt_name, &translation_buffer); if (strncmp (translated, argument, argument_length) != 0) - return false; - /* We know that argument is a prefix of translated. */ - return translated[argument_length] == '\0'; + matches = false; + else + /* We know that argument is a prefix of translated. */ + matches = translated[argument_length] == '\0'; + free (translation_buffer); + return matches; } /* Process the argument starting with d->__nextchar as a long option. @@ -213,7 +221,8 @@ process_long_option (int argc, char **argv, const char *optstring, const struct option *longopts, int *longind, int long_only, struct _getopt_data *d, int print_errors, const char *prefix, - char *(*translate) (const char *msgid)) + char *(*translate) (const char *, const char *, + char **)) { char *nameend; size_t namelen; @@ -222,6 +231,7 @@ process_long_option (int argc, char **argv, const char *optstring, int n_options; int option_index; const char *translated_option_name; + char *translation_buffer = NULL; for (nameend = d->__nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; @@ -244,7 +254,9 @@ process_long_option (int argc, char **argv, const char *optstring, /* Didn't find an exact match, try with translated option names. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) - if (match_translated_option_name (translate, d->__nextchar, namelen, p->name)) + if (match_translated_option_name (translate, + d->__nextchar, namelen, + d->optctxt, p->name)) { /* Exact match found with translation. */ pfound = p; @@ -377,7 +389,8 @@ process_long_option (int argc, char **argv, const char *optstring, { if (print_errors) { - translated_option_name = translate (pfound->name); + translated_option_name = translate (d->optctxt, pfound->name, + &translation_buffer); if (strcmp (translated_option_name, pfound->name) != 0) /* Print both names of the option. */ fprintf (stderr, @@ -389,6 +402,7 @@ process_long_option (int argc, char **argv, const char *optstring, fprintf (stderr, _("%s: option '%s%s' doesn't allow an argument\n"), argv[0], prefix, pfound->name); + free (translation_buffer); } d->optopt = pfound->val; return '?'; @@ -404,7 +418,8 @@ process_long_option (int argc, char **argv, const char *optstring, { /* Same dichotomy as when the option does not allow an argument. */ - translated_option_name = translate (pfound->name); + translated_option_name = translate (d->optctxt, pfound->name, + &translation_buffer); if (strcmp (translated_option_name, pfound->name) != 0) fprintf (stderr, _("%s: option '%s%s' / '%s%s' requires an argument\n"), @@ -413,6 +428,7 @@ process_long_option (int argc, char **argv, const char *optstring, fprintf (stderr, _("%s: option '%s%s' requires an argument\n"), argv[0], prefix, pfound->name); + free (translation_buffer); } d->optopt = pfound->val; @@ -526,7 +542,7 @@ int _getopt_internal_r (int argc, char **argv, const char *optstring, const struct option *longopts, int *longind, int long_only, struct _getopt_data *d, int posixly_correct, - char *(*translate) (const char *msgid)) + char *(*translate) (const char *, const char *, char **)) { int print_errors = d->opterr; @@ -761,12 +777,15 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, int _getopt_internal (int argc, char **argv, const char *optstring, const struct option *longopts, int *longind, int long_only, - int posixly_correct, char *(*translate) (const char *)) + int posixly_correct, + char *(*translate) (const char *, const char *, char **), + const char *ctxt) { int result; getopt_data.optind = optind; getopt_data.opterr = opterr; + getopt_data.optctxt = ctxt; result = _getopt_internal_r (argc, argv, optstring, longopts, longind, long_only, &getopt_data, @@ -789,7 +808,7 @@ _getopt_internal (int argc, char **argv, const char *optstring, { \ return _getopt_internal (argc, (char **)argv, optstring, \ NULL, NULL, 0, POSIXLY_CORRECT, \ - NULL); \ + NULL, NULL); \ } #ifdef _LIBC diff --git a/posix/getopt1.c b/posix/getopt1.c index 6342e2d417..87fe067655 100644 --- a/posix/getopt1.c +++ b/posix/getopt1.c @@ -26,13 +26,53 @@ #include "getopt.h" #include "getopt_int.h" +#include +#include +#include +#include + +/* Callers store an optional context to enable option name + translation. The argument is allocated. */ + +char *optctxt = NULL; + +/* FIXME: use pgettext_expr. */ +static char * +do_translate (const char *context, const char *msgid, char **allocated) +{ + char *full_msgid; + const char *translated = msgid; + int output_length = 0; + + *allocated = NULL; + if (context != NULL) + { + output_length = __asprintf (&full_msgid, "%s\004%s", context, msgid); + *allocated = full_msgid; + if (output_length >= 0) + { + translated = __dcgettext (NULL, full_msgid, LC_MESSAGES); + if (strcmp (translated, full_msgid) == 0) + { + /* No translation for this context and message, so drop + the context + ^D prefix. */ + translated = msgid; + } + } + /* Otherwise, if memory allocation failed, then we won’t accept + translations. translated remains an alias to msgid. */ + } + else + translated = msgid; + return (char *) translated; +} int getopt_long (int argc, char *__getopt_argv_const *argv, const char *options, const struct option *long_options, int *opt_index) { return _getopt_internal (argc, (char **) argv, options, long_options, - opt_index, 0, 0, gettext); + opt_index, 0, 0, do_translate, optctxt); } int @@ -41,7 +81,7 @@ _getopt_long_r (int argc, char **argv, const char *options, struct _getopt_data *d) { return _getopt_internal_r (argc, argv, options, long_options, opt_index, - 0, d, 0, gettext); + 0, d, 0, do_translate); } /* Like getopt_long, but '-' as well as '--' can indicate a long option. @@ -55,7 +95,7 @@ getopt_long_only (int argc, char *__getopt_argv_const *argv, const struct option *long_options, int *opt_index) { return _getopt_internal (argc, (char **) argv, options, long_options, - opt_index, 1, 0, gettext); + opt_index, 1, 0, do_translate, optctxt); } int @@ -64,7 +104,33 @@ _getopt_long_only_r (int argc, char **argv, const char *options, struct _getopt_data *d) { return _getopt_internal_r (argc, argv, options, long_options, opt_index, - 1, d, 0, gettext); + 1, d, 0, do_translate); +} + +static void +disable_translations (void) +{ + free (optctxt); + optctxt = NULL; +} + +int +getopt_long_enable_translations (const char *msgctxt) +{ + disable_translations (); + if (msgctxt != NULL) + { + optctxt = __strdup (msgctxt); + if (optctxt == NULL) + return -1; + } + return 0; +} + +void +getopt_long_disable_translations (void) +{ + disable_translations (); } diff --git a/posix/getopt_int.h b/posix/getopt_int.h index 579233b08c..fcfec242c1 100644 --- a/posix/getopt_int.h +++ b/posix/getopt_int.h @@ -29,7 +29,9 @@ extern int _getopt_internal (int ___argc, char **___argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only, int __posixly_correct, - char *(*translate) (const char *msgid)); + char *(*translate) (const char *, const char *, + char **), + const char *__optctxt); /* Reentrant versions which can handle parsing multiple argument @@ -71,6 +73,7 @@ struct _getopt_data int opterr; int optopt; char *optarg; + const char *optctxt; /* Internal members. */ @@ -107,7 +110,8 @@ extern int _getopt_internal_r (int ___argc, char **___argv, const struct option *__longopts, int *__longind, int __long_only, struct _getopt_data *__data, int __posixly_correct, - char *(*translate) (const char *msgid)); + char *(*translate) (const char *, const char *, + char **)); extern int _getopt_long_r (int ___argc, char **___argv, const char *__shortopts, diff --git a/posix/tstgetoptl.c b/posix/tstgetoptl.c index afefcf46f5..1e970ad407 100644 --- a/posix/tstgetoptl.c +++ b/posix/tstgetoptl.c @@ -39,6 +39,8 @@ known translation of flavor) without the program recognizing a --flavor option. */ +#define TRANSLATION_CONTEXT "command-line option" + static void prepare_localedir (void) { @@ -47,8 +49,8 @@ prepare_localedir (void) TEST_VERIFY_EXIT (bindtextdomain ("tstgetoptl", OBJPFX "domaindir") != NULL); TEST_VERIFY_EXIT (textdomain ("tstgetoptl") != NULL); /* Check that the catalog is OK: */ - TEST_COMPARE_STRING (gettext ("color"), "colour"); - TEST_COMPARE_STRING (gettext ("flavor"), "flavour"); + TEST_COMPARE_STRING (gettext (TRANSLATION_CONTEXT "\004" "color"), "colour"); + TEST_COMPARE_STRING (gettext (TRANSLATION_CONTEXT "\004" "flavor"), "flavour"); } static char ** @@ -65,8 +67,9 @@ prepare_argv (int *argc) } static void -do_my_test (void) +do_my_test (bool with_optctxt) { + static const char *translation_context = TRANSLATION_CONTEXT; int argc; char **argv = prepare_argv (&argc); static const struct option options[] = @@ -87,8 +90,14 @@ do_my_test (void) int c; bool found_flavor = false; + if (with_optctxt) + TEST_VERIFY_EXIT (getopt_long_enable_translations (translation_context) == 0); + else + getopt_long_disable_translations (); optind = 0; fputs ("Reminder that --flavor is not an option of the program.\n", stderr); + if (!with_optctxt) + fputs ("No optctxt set, so --colour should not be recognized.\n", stderr); while ((c = getopt_long (argc, argv, "", options, NULL)) >= 0) switch (c) { @@ -96,8 +105,13 @@ do_my_test (void) ++Cflag; break; case '?': - TEST_VERIFY (!found_flavor); - found_flavor = true; + if (with_optctxt) + { + TEST_VERIFY (!found_flavor); + found_flavor = true; + } + /* Otherwise, this is OK; --colour should not exist if we did not set + optctxt. */ break; default: /* This should not happen. */ @@ -115,11 +129,18 @@ do_my_test (void) break; } - TEST_VERIFY (found_flavor); + if (with_optctxt) + TEST_VERIFY (found_flavor); printf ("Cflags = %d\n", Cflag); - TEST_COMPARE (Cflag, 3); + if (with_optctxt) + TEST_COMPARE (Cflag, 3); + else + TEST_COMPARE (Cflag, 2); + + if (with_optctxt) + getopt_long_disable_translations (); for (index = optind; index < argc; index++) printf ("Non-option argument %s\n", argv[index]); @@ -131,7 +152,8 @@ int do_test (void) { prepare_localedir (); - do_my_test (); + do_my_test (false); + do_my_test (true); return 0; } diff --git a/posix/tstgetoptl.po b/posix/tstgetoptl.po index 7091884faf..7dc15e71f3 100644 --- a/posix/tstgetoptl.po +++ b/posix/tstgetoptl.po @@ -16,14 +16,17 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: xxx.c:yy +msgctxt "command-line option" msgid "color" msgstr "colour" #: xxx.c:yy +msgctxt "command-line option" msgid "flavor" msgstr "flavour" # This is to make sure the translator cannot redirect options. #: xxx.c:yy +msgctxt "command-line option" msgid "optional" msgstr "required" diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index 0166703bdb..b3e5510297 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -2818,6 +2818,8 @@ GLIBC_2.44 gai_cancel F GLIBC_2.44 gai_error F GLIBC_2.44 gai_suspend F GLIBC_2.44 getaddrinfo_a F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.44 lio_listio F GLIBC_2.44 lio_listio64 F GLIBC_2.44 mq_close F diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist index 0262a079aa..dcfac4bd51 100644 --- a/sysdeps/mach/hurd/x86_64/libc.abilist +++ b/sysdeps/mach/hurd/x86_64/libc.abilist @@ -2494,6 +2494,8 @@ GLIBC_2.44 gai_cancel F GLIBC_2.44 gai_error F GLIBC_2.44 gai_suspend F GLIBC_2.44 getaddrinfo_a F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.44 lio_listio F GLIBC_2.44 lio_listio64 F GLIBC_2.44 mq_close F diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist index 3156688add..7dd7c7aa88 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist @@ -2775,3 +2775,5 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index 8af5b0b581..bfbee2c31f 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -3122,6 +3122,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist index 35fcef2cc4..00224995bb 100644 --- a/sysdeps/unix/sysv/linux/arc/libc.abilist +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist @@ -2536,3 +2536,5 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist index a6c6b951bf..8856423c37 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -2828,6 +2828,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index e76015fe66..6718047590 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -2825,6 +2825,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist index 1fb7cdcad5..c48b5fbbd5 100644 --- a/sysdeps/unix/sysv/linux/csky/libc.abilist +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -2812,3 +2812,5 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index 0710ccecf9..9afdd0a2ea 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2849,6 +2849,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index 3afe3a88eb..adf364236d 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -3032,6 +3032,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/loongarch/ilp32/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/ilp32/libc.abilist index 7c6d7055c3..a90b2a83ca 100644 --- a/sysdeps/unix/sysv/linux/loongarch/ilp32/libc.abilist +++ b/sysdeps/unix/sysv/linux/loongarch/ilp32/libc.abilist @@ -995,6 +995,8 @@ GLIBC_2.44 getnetgrent F GLIBC_2.44 getnetgrent_r F GLIBC_2.44 getopt F GLIBC_2.44 getopt_long F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.44 getopt_long_only F GLIBC_2.44 getpagesize F GLIBC_2.44 getpass F diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist index c2b3a66d3a..2a547f5d7d 100644 --- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist +++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist @@ -2296,3 +2296,5 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index d6855131e8..a967c60f07 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -2808,6 +2808,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index 4e3fe9c42f..486d5975ec 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2975,6 +2975,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist index 29f0c5f954..68ae7ff5ce 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -2861,3 +2861,5 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist index 2ef62838f7..eb0d3ddf68 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -2858,3 +2858,5 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index 031e8961ac..0a9bad7ad0 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2938,6 +2938,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index 8dc99d81b4..072c9df2c1 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2936,6 +2936,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index 054c5b6391..9f738374d3 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2944,6 +2944,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index 13f0148bc0..8b8b718d86 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -2846,6 +2846,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist index e7ffe07dd8..c63bc5d110 100644 --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist @@ -2286,3 +2286,5 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index dea4b20f05..2c5141623d 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -3165,6 +3165,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index b45e127463..8d2194f22d 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -3210,6 +3210,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist index 942cf6a027..b5f1a9cc83 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist @@ -2919,6 +2919,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist index 65d78e5076..0b9c5761da 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist @@ -2995,3 +2995,5 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist index dcab30d72e..75f37a6c9d 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist @@ -2539,3 +2539,5 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist index 796ef35e26..d2e98816c7 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist @@ -2739,3 +2739,5 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F diff --git a/sysdeps/unix/sysv/linux/s390/libc.abilist b/sysdeps/unix/sysv/linux/s390/libc.abilist index 8f2350ee0b..e19857bb81 100644 --- a/sysdeps/unix/sysv/linux/s390/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/libc.abilist @@ -2956,6 +2956,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index 7aa98c5aed..55bc8458c0 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2855,6 +2855,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index 6bd4f8f63a..5bf43c1855 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2852,6 +2852,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index b52cab2a35..417e67f73b 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -3186,6 +3186,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index ff99cd4f21..57c9590334 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -2822,6 +2822,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index 306cd627fd..6749f30c83 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -2771,6 +2771,8 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F GLIBC_2.5 __readlinkat_chk F GLIBC_2.5 inet6_opt_append F GLIBC_2.5 inet6_opt_find F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist index 8b9c448742..d8899a2048 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist @@ -2790,3 +2790,5 @@ GLIBC_2.43 memset_explicit F GLIBC_2.43 mseal F GLIBC_2.43 openat2 F GLIBC_2.43 umaxabs F +GLIBC_2.44 getopt_long_disable_translations F +GLIBC_2.44 getopt_long_enable_translations F