[PATCH v12 4/9] posix: let the getopt caller choose the textdomain for translation

Vivien Kraus vivien@planete-kraus.eu
Sun Oct 5 16:34:27 GMT 2025


Using the same solution as for the option translation context, a new
opttextdomain variable is defined.
---
 manual/argp.texi                              |  7 +++--
 manual/getopt.texi                            | 11 +++++--
 posix/Versions                                |  2 +-
 posix/bits/getopt_ext.h                       |  5 ++++
 posix/getopt.c                                | 30 ++++++++++++-------
 posix/getopt1.c                               | 15 +++++++---
 posix/getopt_int.h                            | 11 ++++---
 posix/tstgetoptl.c                            |  9 ++----
 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 +
 42 files changed, 94 insertions(+), 30 deletions(-)

diff --git a/manual/argp.texi b/manual/argp.texi
index 97456ef20e..50d67b6c55 100644
--- a/manual/argp.texi
+++ b/manual/argp.texi
@@ -208,8 +208,11 @@ messages.  @xref{Argp Help Filtering}.
 If non-zero, the strings used in the argp library are translated using
 the domain described by this string.  If zero, the current default
 domain is used.  The long option names are always translated with the
-current default domain, and with the @samp{"command-line option"}
-disambiguation string.
+current default domain (not this one), and with the
+@samp{"command-line option"} disambiguation string.  This is because
+all the option names, including those defined in sub-parsers, must be
+in the same textdomain for @command{getopt} to process the options
+correctly.
 
 @end table
 @end deftp
diff --git a/manual/getopt.texi b/manual/getopt.texi
index 65e24f1143..20be0fba69 100644
--- a/manual/getopt.texi
+++ b/manual/getopt.texi
@@ -59,8 +59,15 @@ names in the current textdomain.  Since option names may be short
 words instead of long sentences, they may have different translations
 in other places of the program.  @xref{Contexts, , Using contexts for
 solving ambiguities, gettext, the GNU Gettext manual}, for more
-information.  If this is @code{NULL}, then the translated option names
-will not be processed.
+information.  If this is @code{NULL} (the default), then the
+translated option names will not be processed.
+@end deftypevar
+
+@deftypevar {const char *} opttextdomain
+Option names may be translated in a textdomain that is not currently
+the default (@pxref{Interface to gettext, , The Interface, gettext,
+the GNU Gettext manual}).  If this is @code{NULL} (the default), the
+translation will be searched in the current text domain.
 @end deftypevar
 
 @deftypefun int getopt (int @var{argc}, char *const *@var{argv}, const char *@var{options})
diff --git a/posix/Versions b/posix/Versions
index 5873e8ec56..d1c2cffcf9 100644
--- a/posix/Versions
+++ b/posix/Versions
@@ -160,7 +160,7 @@ libc {
     posix_spawn_file_actions_addtcsetpgrp_np;
   }
   GLIBC_2.43 {
-    optctxt;
+    optctxt; opttextdomain;
   }
   GLIBC_PRIVATE {
     __libc_fork; __libc_pread; __libc_pwrite;
diff --git a/posix/bits/getopt_ext.h b/posix/bits/getopt_ext.h
index 07d9407b64..6cd0932596 100644
--- a/posix/bits/getopt_ext.h
+++ b/posix/bits/getopt_ext.h
@@ -31,6 +31,11 @@ __BEGIN_DECLS
    names.  If unset, the option names will not be translated. */
 
 extern const char *optctxt;
+
+/* Callers store the textdomain to use to retrieve option names, or
+   NULL to use the current textdomain. */
+
+extern const char *opttextdomain;
 #endif
 
 /* Describe the long-named options requested by the application.
diff --git a/posix/getopt.c b/posix/getopt.c
index 28f0be03f8..28c8aa4bbf 100644
--- a/posix/getopt.c
+++ b/posix/getopt.c
@@ -185,16 +185,20 @@ exchange (char **argv, struct _getopt_data *d)
 /* Return 1 iff translation_context is not NULL, a translation for
    opt_name has been found and it matches the substring from argument,
    length argument_length.
+
+   The translate function pointer is like dpgettext.
 */
 static const int
-match_translated_option_name (char *(*translate) (const char *, const char *),
+match_translated_option_name (char *(*translate) (const char *, const char *,
+                                                  const char *),
                               const char *argument, size_t argument_length,
                               const char *translation_context,
+                              const char *opt_textdomain,
                               const char *opt_name)
 {
   const char *translated = opt_name;
   if (translate)
-    translated = translate (translation_context, opt_name);
+    translated = translate (opt_textdomain, translation_context, opt_name);
   return (!strncmp (translated, argument, argument_length)
           && argument_length == strlen (translated));
 }
@@ -212,7 +216,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 *, const char *))
+                     char *(*translate) (const char *, const char *,
+                                         const char *))
 {
   char *nameend;
   size_t namelen;
@@ -243,9 +248,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,
-                                          d->optctxt, p->name))
+        if (match_translated_option_name (translate, d->__nextchar, namelen,
+                                          d->optctxt, d->opttextdomain,
+                                          p->name))
           {
             /* Exact match found with translation.  */
             pfound = p;
@@ -369,7 +374,7 @@ process_long_option (int argc, char **argv, const char *optstring,
   /* We have found a matching long option.  Consume it.  */
   d->optind++;
   d->__nextchar = NULL;
-  translated_option_name = translate (d->optctxt, pfound->name);
+  translated_option_name = translate (d->opttextdomain, d->optctxt, pfound->name);
   if (*nameend)
     {
       /* Don't test has_arg with >, because some C compilers don't
@@ -535,7 +540,8 @@ 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 *, const char *))
+                    char *(*translate) (const char *, const char *,
+                                        const char *))
 {
   int print_errors = d->opterr;
 
@@ -771,14 +777,16 @@ 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 *, const char *),
-                  const char *ctxt)
+                  char *(*translate) (const char *, const char *, const char *),
+                  const char *ctxt,
+                  const char *domain)
 {
   int result;
 
   getopt_data.optind = optind;
   getopt_data.opterr = opterr;
   getopt_data.optctxt = ctxt;
+  getopt_data.opttextdomain = domain;
 
   result = _getopt_internal_r (argc, argv, optstring, longopts,
 			       longind, long_only, &getopt_data,
@@ -801,7 +809,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, NULL, NULL);                 \
   }
 
 #ifdef _LIBC
diff --git a/posix/getopt1.c b/posix/getopt1.c
index 28d090019d..48852dc692 100644
--- a/posix/getopt1.c
+++ b/posix/getopt1.c
@@ -34,9 +34,14 @@
 
 const char *optctxt = NULL;
 
+/* Callers store the textdomain in which the option names are to be
+   looked up. */
+
+const char *opttextdomain = NULL;
+
 /* FIXME: use pgettext_expr. */
 static char *
-do_translate (const char *context, const char *msgid)
+do_translate (const char *domain, const char *context, const char *msgid)
 {
   char *full_msgid;
   const char *translated = msgid;
@@ -49,7 +54,7 @@ do_translate (const char *context, const char *msgid)
           strcpy (full_msgid, context);
           full_msgid[strlen (context)] = '\004';
           strcpy (full_msgid + strlen (context) + 1, msgid);
-          translated = __dcgettext (NULL, full_msgid, LC_MESSAGES);
+          translated = __dcgettext (domain, full_msgid, LC_MESSAGES);
           if (!strcmp (translated, full_msgid))
             {
               translated = msgid;
@@ -67,7 +72,8 @@ 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, do_translate, optctxt);
+			   opt_index, 0, 0, do_translate,
+                           optctxt, opttextdomain);
 }
 
 int
@@ -90,7 +96,8 @@ 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, do_translate, optctxt);
+			   opt_index, 1, 0, do_translate,
+                           optctxt, opttextdomain);
 }
 
 int
diff --git a/posix/getopt_int.h b/posix/getopt_int.h
index 1d091979c3..1deb6cad35 100644
--- a/posix/getopt_int.h
+++ b/posix/getopt_int.h
@@ -24,13 +24,14 @@
 
 /* The translate argument here is optional (can be NULL), it is used
    to avoid depending on the gettext functions in the posix getopt
-   function. */
+   function.  It is like dpgettext. */
 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 *, const char *),
-                             const char *__optctxt);
+                             char *(*translate) (const char *, const char *,
+                                                 const char *),
+                             const char *__optctxt, const char *__optdomain);
 
 
 /* Reentrant versions which can handle parsing multiple argument
@@ -73,6 +74,7 @@ struct _getopt_data
   int optopt;
   char *optarg;
   const char *optctxt;
+  const char *opttextdomain;
 
   /* Internal members.  */
 
@@ -109,7 +111,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 *, const char *));
+                               char *(*translate) (const char *, const char *,
+                                                   const char *));
 
 extern int _getopt_long_r (int ___argc, char **___argv,
 			   const char *__shortopts,
diff --git a/posix/tstgetoptl.c b/posix/tstgetoptl.c
index bffd56f47d..3580358a67 100644
--- a/posix/tstgetoptl.c
+++ b/posix/tstgetoptl.c
@@ -27,13 +27,8 @@ prepare_localedir (void)
       fputs ("Cannot call bindtextdomain.\n", stderr);
       return -1;
     }
-  if (textdomain ("tstgetoptl") == NULL)
-    {
-      fputs ("Cannot call textdomain.\n", stderr);
-      return -1;
-    }
   /* Check that the catalog is OK: */
-  if (strcmp (gettext (TRANSLATION_CONTEXT "\004" "color"), "colour") != 0)
+  if (strcmp (dgettext ("tstgetoptl", TRANSLATION_CONTEXT "\004" "color"), "colour") != 0)
     {
       fputs ("The mo file does not work.\n", stderr);
       return -1;
@@ -45,6 +40,7 @@ int
 main (int argc, char **argv)
 {
   static const char *translation_context = TRANSLATION_CONTEXT;
+  static const char *translation_textdomain = "tstgetoptl";
   static const struct option options[] =
     {
       {"required", required_argument, NULL, 'r'},
@@ -72,6 +68,7 @@ main (int argc, char **argv)
       return 1;
     }
   optctxt = translation_context;
+  opttextdomain = translation_textdomain;
   while ((c = getopt_long (argc, argv, "abc:", options, NULL)) >= 0)
     switch (c)
       {
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index ef2389889d..d879f5a363 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -2665,6 +2665,7 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 GLIBC_2.43 pthread_cancel F
 GLIBC_2.43 pthread_clockjoin_np F
 GLIBC_2.43 pthread_detach F
diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist
index 366f44b7b3..4b6580b2cc 100644
--- a/sysdeps/mach/hurd/x86_64/libc.abilist
+++ b/sysdeps/mach/hurd/x86_64/libc.abilist
@@ -2346,6 +2346,7 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x8
+GLIBC_2.43 opttextdomain D 0x8
 GLIBC_2.43 pthread_cancel F
 GLIBC_2.43 pthread_clockjoin_np F
 GLIBC_2.43 pthread_detach F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
index b5adb590b1..93730d969e 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2770,3 +2770,4 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x8
+GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
index c97471e756..06412be15c 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x8
+GLIBC_2.43 opttextdomain D 0x8
 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 7dd4589884..e0c6c9f293 100644
--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
@@ -2531,3 +2531,4 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
index 35a50182f2..7929ecb5ce 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 70f444545a..4b7ca1bdf0 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 83ac7a3a4f..326be1421c 100644
--- a/sysdeps/unix/sysv/linux/csky/libc.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
@@ -2807,3 +2807,4 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
index 85cfee194d..31be97a20d 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 dea2312c5c..3100d3720d 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
index bde525090d..521343313d 100644
--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
@@ -2291,3 +2291,4 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x8
+GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
index 89f275f92c..974a643266 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 071de9934e..474da3c6e6 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 a983dd9776..3772bbf961 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
@@ -2856,3 +2856,4 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
index d8c4d03cee..81fdbf5528 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
@@ -2853,3 +2853,4 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
index 8431dca4fc..8bf825fbd0 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 ff0d3bcb1b..3995eb7112 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 834ca53a26..c7f9d75936 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 e8dcdec523..fa4c0b6abb 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x8
+GLIBC_2.43 opttextdomain D 0x8
 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 f69e29d8ec..685e674205 100644
--- a/sysdeps/unix/sysv/linux/or1k/libc.abilist
+++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist
@@ -2281,3 +2281,4 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
index 313b5ac2c2..b739c5b3dd 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 9ac04c675a..25a45c7596 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 030c44cfd6..88979415c3 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x8
+GLIBC_2.43 opttextdomain D 0x8
 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 ba27c807a8..f55d5abaa1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
@@ -2990,3 +2990,4 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x8
+GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
index 59901b5a84..d644e2b658 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
@@ -2534,3 +2534,4 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
index d861e9348a..8f90416e6f 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
@@ -2734,3 +2734,4 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x8
+GLIBC_2.43 opttextdomain D 0x8
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
index 94eddb2157..2eb7244ede 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
index a8279df601..0418207b55 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x8
+GLIBC_2.43 opttextdomain D 0x8
 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 dab732c1d3..c882ecd323 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 54fc47ab6c..d8ad0073b8 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 b73cd54dbb..fee6128da5 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
 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 dcd144bb46..78e1358a87 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x8
+GLIBC_2.43 opttextdomain D 0x8
 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 b9549a8de1..33afb283fa 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 memset_explicit F
 GLIBC_2.43 optctxt D 0x8
+GLIBC_2.43 opttextdomain D 0x8
 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 35fc746c3b..6bf8159064 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2785,3 +2785,4 @@ GLIBC_2.42 ullabs F
 GLIBC_2.43 __memset_explicit_chk F
 GLIBC_2.43 memset_explicit F
 GLIBC_2.43 optctxt D 0x4
+GLIBC_2.43 opttextdomain D 0x4
-- 
2.34.1



More information about the Libc-alpha mailing list