[{"id":3678257,"web_url":"http://patchwork.ozlabs.org/comment/3678257/","msgid":"<CACb0b4kPW3o95zOSyGQp8pJcNGNGS4NrkKUWRXbJN719wxwtAg@mail.gmail.com>","list_archive_url":null,"date":"2026-04-16T15:31:57","subject":"Re: [PATCH v2] libstdc++: Add module initialization functions to the\n library [PR124268]","submitter":{"id":48004,"url":"http://patchwork.ozlabs.org/api/people/48004/","name":"Jonathan Wakely","email":"jwakely@redhat.com"},"content":"On Thu, 16 Apr 2026 at 16:20, Jonathan Wakely <jwakely@redhat.com> wrote:\n>\n> This tries to ensure that the module init functions are present in\n> libstdc++.so and libstdc++.a, so that users of the std and std.compat\n> modules don't need to manually link to std.o and/or std.compat.o in\n> addition to compiling the CMIs.\n>\n> This also adds a clean-local target to remove the generated interface\n> units and manifest, and the gcm.cache directory for the CMIs.\n>\n> This was previously committed and then reverted because it broke\n> bootstrap on a few targets. Most of the reasons the module interface\n> units failed to compile have (we believe) now been addressed with G++\n> changes, although there's still a problem on amdgcn (PR124554). Due to\n> that problem, and any not yet known problems, this version of the patch\n> tries to avoid breaking bootstrap again by allowing the modules to fail\n> to compile. If compiling std.o or std.compat.o fails then an empty\n> translation unit will be compiled and added to libstdc++.so instead.\n>\n> This means that we will only export the module initialization functions\n> from the library if the module can be compiled for the target. This\n> seems fine because we don't need to initialize anything for a module\n> that cannot even be compiled! Fixing PR124554 and removing this kluge\n> should be done for GCC 17 in stage 1.\n>\n> libstdc++-v3/ChangeLog:\n>\n>         PR libstdc++/124268\n>         * config/abi/pre/gnu.ver: Export symbols.\n>         * src/Makefile.am: Add libmodulesconvenience.la to libstdc++\n>         link.\n>         * src/Makefile.in: Regenerate.\n>         * src/c++23/Makefile.am: Create libmodulesconvenience.la\n>         and populate it with std.o and std.compat.o interface units,\n>         with empty fallback objects if compiling the interface units\n>         fails. Add clean-local target.\n>         * src/c++23/Makefile.in: Regenerate.\n> ---\n>\n> v2: Replace the module interface units with empty translation units if\n> they fail to compile.\n>\n> Tested x86_64-linux, sparc-solaris, aarch64-linux.\n>\n> Bootstrapped on xtensa-esp32-elf before Jakub's r16-8703 and this patch\n> allows bootstrap to complete even though std.cc fails:\n>\n> std.cc:4150:14: error: exporting 'typedef __gnuc_va_list va_list' that does not have external linkage\n>  4150 |   using std::va_list;\n>       |              ^~~~~~~\n> <built-in>: note: 'typedef struct __va_list_tag __va_list_tag' declared here with internal linkage\n> Cannot compile std module\n> Module initialization function will be missing\n\nAlso successfully bootstrapped on x86_64-unknown-freebsd16.0 which has\nthe upstream fix for the static inline fenv.h functions and on\nx86_64-unknown-freebsd14.0 which does not have the upstream fix and so\nwould have failed to compile std.cc without Nathaniel's\nr16-8488-g8b9a294a484ed5. It now compiles, and adds std.o to\nlibstdc++.so for both freebsd targets.\n\n\n\n>\n>  libstdc++-v3/config/abi/pre/gnu.ver |  4 ++\n>  libstdc++-v3/src/Makefile.am        |  6 ++-\n>  libstdc++-v3/src/Makefile.in        |  6 ++-\n>  libstdc++-v3/src/c++23/Makefile.am  | 45 ++++++++++++++++-\n>  libstdc++-v3/src/c++23/Makefile.in  | 76 +++++++++++++++++++++++------\n>  5 files changed, 117 insertions(+), 20 deletions(-)\n>\n> diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver\n> index 71b3c175bbdf..bd4da6418295 100644\n> --- a/libstdc++-v3/config/abi/pre/gnu.ver\n> +++ b/libstdc++-v3/config/abi/pre/gnu.ver\n> @@ -2617,6 +2617,10 @@ GLIBCXX_3.4.35 {\n>      _ZSt15__get_once_callv;\n>  #endif\n>\n> +    # Module inititialization symbols for std and std.compat modules.\n> +    _ZGIW3std;\n> +    _ZGIW3stdW6compat;\n> +\n>  } GLIBCXX_3.4.34;\n>\n>  # Symbols in the support library (libsupc++) have their own tag.\n> diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am\n> index 55a8c88a0e12..35a497a15886 100644\n> --- a/libstdc++-v3/src/Makefile.am\n> +++ b/libstdc++-v3/src/Makefile.am\n> @@ -145,7 +145,8 @@ libstdc___la_LIBADD = \\\n>         $(top_builddir)/src/c++98/libc++98convenience.la \\\n>         $(top_builddir)/src/c++11/libc++11convenience.la \\\n>         $(top_builddir)/src/c++17/libc++17convenience.la \\\n> -       $(top_builddir)/src/c++20/libc++20convenience.la\n> +       $(top_builddir)/src/c++20/libc++20convenience.la \\\n> +       $(top_builddir)/src/c++23/libmodulesconvenience.la\n>\n>  libstdc___la_DEPENDENCIES = \\\n>         ${version_dep} \\\n> @@ -153,7 +154,8 @@ libstdc___la_DEPENDENCIES = \\\n>         $(top_builddir)/src/c++98/libc++98convenience.la \\\n>         $(top_builddir)/src/c++11/libc++11convenience.la \\\n>         $(top_builddir)/src/c++17/libc++17convenience.la \\\n> -       $(top_builddir)/src/c++20/libc++20convenience.la\n> +       $(top_builddir)/src/c++20/libc++20convenience.la \\\n> +       $(top_builddir)/src/c++23/libmodulesconvenience.la\n>\n>  if ENABLE_DARWIN_AT_RPATH\n>  libstdc___darwin_rpath = -Wc,-nodefaultrpaths\n> diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in\n> index f0ad019a71fd..811d0a5ce4a8 100644\n> --- a/libstdc++-v3/src/Makefile.in\n> +++ b/libstdc++-v3/src/Makefile.in\n> @@ -555,7 +555,8 @@ libstdc___la_LIBADD = \\\n>         $(top_builddir)/src/c++98/libc++98convenience.la \\\n>         $(top_builddir)/src/c++11/libc++11convenience.la \\\n>         $(top_builddir)/src/c++17/libc++17convenience.la \\\n> -       $(top_builddir)/src/c++20/libc++20convenience.la\n> +       $(top_builddir)/src/c++20/libc++20convenience.la \\\n> +       $(top_builddir)/src/c++23/libmodulesconvenience.la\n>\n>  libstdc___la_DEPENDENCIES = \\\n>         ${version_dep} \\\n> @@ -563,7 +564,8 @@ libstdc___la_DEPENDENCIES = \\\n>         $(top_builddir)/src/c++98/libc++98convenience.la \\\n>         $(top_builddir)/src/c++11/libc++11convenience.la \\\n>         $(top_builddir)/src/c++17/libc++17convenience.la \\\n> -       $(top_builddir)/src/c++20/libc++20convenience.la\n> +       $(top_builddir)/src/c++20/libc++20convenience.la \\\n> +       $(top_builddir)/src/c++23/libmodulesconvenience.la\n>\n>  @ENABLE_DARWIN_AT_RPATH_TRUE@libstdc___darwin_rpath =  \\\n>  @ENABLE_DARWIN_AT_RPATH_TRUE@  -Wc,-nodefaultrpaths \\\n> diff --git a/libstdc++-v3/src/c++23/Makefile.am b/libstdc++-v3/src/c++23/Makefile.am\n> index b031ec69576c..5b2812abd228 100644\n> --- a/libstdc++-v3/src/c++23/Makefile.am\n> +++ b/libstdc++-v3/src/c++23/Makefile.am\n> @@ -23,10 +23,13 @@\n>  include $(top_srcdir)/fragment.am\n>\n>  # Convenience library for C++23 runtime.\n> -noinst_LTLIBRARIES = libc++23convenience.la\n> +# This libc++23convenience.la one isn't linked into libstdc++.la yet,\n> +# so build an additional libmodulesconvenience.la which is linked in.\n> +noinst_LTLIBRARIES = libc++23convenience.la libmodulesconvenience.la\n>\n> -# Module std support.  Not compiled for now, only installed.\n> +# Module std support.\n>  # Let's install the interface units in the bits subdirectory.\n> +# We also compile them and include them in libmodulesconvenience.la\n>  toolexeclib_DATA = libstdc++.modules.json\n>  includebitsdir = $(gxx_include_dir)/bits\n>  includebits_DATA = std.cc std.compat.cc\n> @@ -59,6 +62,9 @@ stamp-modules-bits: $(includebits_DATA)\n>\n>  all-local: stamp-module-manifest stamp-modules-bits\n>\n> +clean-local:\n> +       rm -rf stamp* libstdc++.modules.json std.cc std.compat.cc gcm.cache\n> +\n>  headers =\n>\n>  if ENABLE_EXTERN_TEMPLATE\n> @@ -80,12 +86,47 @@ else\n>  libc__23convenience_la_SOURCES =\n>  endif\n>\n> +libmodulesconvenience_la_SOURCES = std.cc std.compat.cc\n> +\n>  # Use C++26 so that std::filebuf::native_handle() is available.\n>  print.lo: print.cc\n>         $(LTCXXCOMPILE) -std=gnu++26 -c $<\n>  print.o: print.cc\n>         $(CXXCOMPILE) -std=gnu++26 -c $<\n>\n> +MODULES_FLAGS = -isystem ${glibcxx_srcdir}/include/backward -fmodules \\\n> +       -Wno-unknown-pragmas\n> +\n> +# These go into libmodulesconvenience.la and are linked into libstdc++\n> +std.lo: std.cc\n> +       if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n> +         echo \"Cannot compile std module\" >&2; \\\n> +         echo \"Module initialization function will be missing\" >&2; \\\n> +         echo > $<.tmp && mv $<.tmp $< && \\\n> +         $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n> +       fi\n> +std.o: std.cc\n> +       if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n> +         echo \"Cannot compile std module\" >&2; \\\n> +         echo \"Module initialization function will be missing\" >&2; \\\n> +         echo > $<.tmp && mv $<.tmp $< && \\\n> +         $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n> +       fi\n> +std.compat.lo: std.compat.cc std.lo\n> +       if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n> +         echo \"Cannot compile std.compat module\" >&2; \\\n> +         echo \"Module initialization function will be missing\" >&2; \\\n> +         echo > $<.tmp && mv $<.tmp $< && \\\n> +         $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n> +       fi\n> +std.compat.o: std.compat.cc std.o\n> +       if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n> +         echo \"Cannot compile std.compat module\" >&2; \\\n> +         echo \"Module initialization function will be missing\" >&2; \\\n> +         echo > $<.tmp && mv $<.tmp $< && \\\n> +         $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n> +       fi\n> +\n>  # AM_CXXFLAGS needs to be in each subdirectory so that it can be\n>  # modified in a per-library or per-sub-library way.  Need to manually\n>  # set this option because CONFIG_CXXFLAGS has to be after\n> diff --git a/libstdc++-v3/src/c++23/Makefile.in b/libstdc++-v3/src/c++23/Makefile.in\n> index fd9110ab8ad2..75da9c008ab6 100644\n> --- a/libstdc++-v3/src/c++23/Makefile.in\n> +++ b/libstdc++-v3/src/c++23/Makefile.in\n> @@ -133,6 +133,10 @@ AM_V_lt = $(am__v_lt_@AM_V@)\n>  am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)\n>  am__v_lt_0 = --silent\n>  am__v_lt_1 =\n> +libmodulesconvenience_la_LIBADD =\n> +am_libmodulesconvenience_la_OBJECTS = std.lo std.compat.lo\n> +libmodulesconvenience_la_OBJECTS =  \\\n> +       $(am_libmodulesconvenience_la_OBJECTS)\n>  AM_V_P = $(am__v_P_@AM_V@)\n>  am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)\n>  am__v_P_0 = false\n> @@ -159,7 +163,8 @@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)\n>  am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)\n>  am__v_CXXLD_0 = @echo \"  CXXLD   \" $@;\n>  am__v_CXXLD_1 =\n> -SOURCES = $(libc__23convenience_la_SOURCES)\n> +SOURCES = $(libc__23convenience_la_SOURCES) \\\n> +       $(libmodulesconvenience_la_SOURCES)\n>  am__can_run_installinfo = \\\n>    case $$AM_UPDATE_INFO_DIR in \\\n>      n|no|NO) false;; \\\n> @@ -457,10 +462,13 @@ WARN_CXXFLAGS = \\\n>  AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS)\n>\n>  # Convenience library for C++23 runtime.\n> -noinst_LTLIBRARIES = libc++23convenience.la\n> +# This libc++23convenience.la one isn't linked into libstdc++.la yet,\n> +# so build an additional libmodulesconvenience.la which is linked in.\n> +noinst_LTLIBRARIES = libc++23convenience.la libmodulesconvenience.la\n>\n> -# Module std support.  Not compiled for now, only installed.\n> +# Module std support.\n>  # Let's install the interface units in the bits subdirectory.\n> +# We also compile them and include them in libmodulesconvenience.la\n>  toolexeclib_DATA = libstdc++.modules.json\n>  includebitsdir = $(gxx_include_dir)/bits\n>  includebits_DATA = std.cc std.compat.cc\n> @@ -473,6 +481,10 @@ headers =\n>  sources = stacktrace.cc print.cc\n>  @GLIBCXX_HOSTED_FALSE@libc__23convenience_la_SOURCES =\n>  @GLIBCXX_HOSTED_TRUE@libc__23convenience_la_SOURCES = $(sources)  $(inst_sources)\n> +libmodulesconvenience_la_SOURCES = std.cc std.compat.cc\n> +MODULES_FLAGS = -isystem ${glibcxx_srcdir}/include/backward -fmodules \\\n> +       -Wno-unknown-pragmas\n> +\n>\n>  # AM_CXXFLAGS needs to be in each subdirectory so that it can be\n>  # modified in a per-library or per-sub-library way.  Need to manually\n> @@ -586,6 +598,9 @@ clean-noinstLTLIBRARIES:\n>  libc++23convenience.la: $(libc__23convenience_la_OBJECTS) $(libc__23convenience_la_DEPENDENCIES) $(EXTRA_libc__23convenience_la_DEPENDENCIES)\n>         $(AM_V_CXXLD)$(CXXLINK)  $(libc__23convenience_la_OBJECTS) $(libc__23convenience_la_LIBADD) $(LIBS)\n>\n> +libmodulesconvenience.la: $(libmodulesconvenience_la_OBJECTS) $(libmodulesconvenience_la_DEPENDENCIES) $(EXTRA_libmodulesconvenience_la_DEPENDENCIES)\n> +       $(AM_V_CXXLD)$(CXXLINK)  $(libmodulesconvenience_la_OBJECTS) $(libmodulesconvenience_la_LIBADD) $(LIBS)\n> +\n>  mostlyclean-compile:\n>         -rm -f *.$(OBJEXT)\n>\n> @@ -739,8 +754,8 @@ maintainer-clean-generic:\n>         @echo \"it deletes files that may require special tools to rebuild.\"\n>  clean: clean-am\n>\n> -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \\\n> -       mostlyclean-am\n> +clean-am: clean-generic clean-libtool clean-local \\\n> +       clean-noinstLTLIBRARIES mostlyclean-am\n>\n>  distclean: distclean-am\n>         -rm -f Makefile\n> @@ -809,15 +824,15 @@ uninstall-am: uninstall-includebitsDATA uninstall-toolexeclibDATA\n>  .MAKE: install-am install-strip\n>\n>  .PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \\\n> -       clean-generic clean-libtool clean-noinstLTLIBRARIES \\\n> -       cscopelist-am ctags ctags-am distclean distclean-compile \\\n> -       distclean-generic distclean-libtool distclean-tags dvi dvi-am \\\n> -       html html-am info info-am install install-am install-data \\\n> -       install-data-am install-dvi install-dvi-am install-exec \\\n> -       install-exec-am install-html install-html-am \\\n> -       install-includebitsDATA install-info install-info-am \\\n> -       install-man install-pdf install-pdf-am install-ps \\\n> -       install-ps-am install-strip install-toolexeclibDATA \\\n> +       clean-generic clean-libtool clean-local \\\n> +       clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \\\n> +       distclean-compile distclean-generic distclean-libtool \\\n> +       distclean-tags dvi dvi-am html html-am info info-am install \\\n> +       install-am install-data install-data-am install-dvi \\\n> +       install-dvi-am install-exec install-exec-am install-html \\\n> +       install-html-am install-includebitsDATA install-info \\\n> +       install-info-am install-man install-pdf install-pdf-am \\\n> +       install-ps install-ps-am install-strip install-toolexeclibDATA \\\n>         installcheck installcheck-am installdirs maintainer-clean \\\n>         maintainer-clean-generic mostlyclean mostlyclean-compile \\\n>         mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \\\n> @@ -855,6 +870,9 @@ stamp-modules-bits: $(includebits_DATA)\n>\n>  all-local: stamp-module-manifest stamp-modules-bits\n>\n> +clean-local:\n> +       rm -rf stamp* libstdc++.modules.json std.cc std.compat.cc gcm.cache\n> +\n>  vpath % $(top_srcdir)/src/c++23\n>\n>  # Use C++26 so that std::filebuf::native_handle() is available.\n> @@ -863,6 +881,36 @@ print.lo: print.cc\n>  print.o: print.cc\n>         $(CXXCOMPILE) -std=gnu++26 -c $<\n>\n> +# These go into libmodulesconvenience.la and are linked into libstdc++\n> +std.lo: std.cc\n> +       if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n> +         echo \"Cannot compile std module\" >&2; \\\n> +         echo \"Module initialization function will be missing\" >&2; \\\n> +         echo > $<.tmp && mv $<.tmp $< && \\\n> +         $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n> +       fi\n> +std.o: std.cc\n> +       if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n> +         echo \"Cannot compile std module\" >&2; \\\n> +         echo \"Module initialization function will be missing\" >&2; \\\n> +         echo > $<.tmp && mv $<.tmp $< && \\\n> +         $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n> +       fi\n> +std.compat.lo: std.compat.cc std.lo\n> +       if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n> +         echo \"Cannot compile std.compat module\" >&2; \\\n> +         echo \"Module initialization function will be missing\" >&2; \\\n> +         echo > $<.tmp && mv $<.tmp $< && \\\n> +         $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n> +       fi\n> +std.compat.o: std.compat.cc std.o\n> +       if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \\\n> +         echo \"Cannot compile std.compat module\" >&2; \\\n> +         echo \"Module initialization function will be missing\" >&2; \\\n> +         echo > $<.tmp && mv $<.tmp $< && \\\n> +         $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \\\n> +       fi\n> +\n>  # Tell versions [3.59,3.63) of GNU make to not export all variables.\n>  # Otherwise a system limit (for SysV at least) may be exceeded.\n>  .NOEXPORT:\n> --\n> 2.53.0\n>","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=SaI1Mc4x;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=SaI1Mc4x","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.133.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxMTh0NPGz1yG9\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 01:32:54 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 018C14BB3BA8\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 15:32:52 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by sourceware.org (Postfix) with ESMTP id C02434BB3BC1\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 15:32:16 +0000 (GMT)","from mail-yx1-f69.google.com (mail-yx1-f69.google.com\n [74.125.224.69]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-198-dHpybj4mNxiDk6WW-okJQA-1; Thu, 16 Apr 2026 11:32:15 -0400","by mail-yx1-f69.google.com with SMTP id\n 956f58d0204a3-651b8f743aaso7862177d50.3\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 08:32:14 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 018C14BB3BA8","OpenDKIM Filter v2.11.0 sourceware.org C02434BB3BC1"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org C02434BB3BC1","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org C02434BB3BC1","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776353536; cv=none;\n b=wtcwlvBY6IKd6vVwhN5XetJBQDvufEvVKKIlkHv73MAex0JI4z0x7IitBWpWvMKLNY7F6fVHWh3439MXywnsb1LrdfOrdBlwmyzU0etGF4k281o1qPfFOE3r+60zuqFYtErboIgCv/Hn7KpBCOwVlzCWnSjsrYQyK0NXRfOqzrk=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776353536; c=relaxed/simple;\n bh=phZLVtqB1rlO/72baH7SGvMsI9olkJwLvC3E3Y/xocI=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=C+s/GgwCKaMJ7Oj7cSHLFq4Ycb82qrSlPduye7DMAdEvY4uB3VziU92z5DyB+F/H9nG+tNqolLCm6j/9Oy2rqKdlRG4h9kSETaG063NqF03SrEnS6LjZXYHGHj5F0/9315m7La69D0N+kZk+SlExkW/WslWEDkzRbawN2F84SWk=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776353536;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=bTM8L/349fdU+b31z8NdsmxSOvppSVngBPXsP3IhGgw=;\n b=SaI1Mc4xOKyvGfkYIyEa/q6IwLoB9DKgXXrvdM9a8f0KpmMYkduP+Vbob+VstylayF+++Z\n tMLahC3pcYdbrsWg1xOOTmk1R37d31Qt/C4kiqszpTsuxp8qwG5HGBDVUyil1Ji82vBw8c\n ierjcKjjeK+8NE5SxhdqEocD8jhSTYg=","X-MC-Unique":"dHpybj4mNxiDk6WW-okJQA-1","X-Mimecast-MFC-AGG-ID":"dHpybj4mNxiDk6WW-okJQA_1776353534","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776353534; x=1776958334;\n h=to:subject:message-id:date:from:in-reply-to:references:mime-version\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=bTM8L/349fdU+b31z8NdsmxSOvppSVngBPXsP3IhGgw=;\n b=kBp5QV+DK0mHWp3a45aRX2B29fte6mHolm2Jr/yz05mjfYuCvj0AkmeQGxclYXtuAS\n 620oit9YIEJt5w7eFK4KQzu3pAGXE/xJL4nrQb1ikq7+5RKCw6lJp8dNi14fuoaQ18Ta\n Lv11gqW6UnHucI5cb4LjF2m/UO6Aw/o9Ak4b+dFeYv8WK9BlwjHxWMtHFgp2GpB2uPXN\n W1MGaL5otG0YhFljDnuFnIlSEqfuhsFDf9RssQHZafuvGQs8nC5uedtGqfWm7YHlybfM\n SGj0xyqqeA9FT5rTlE92oxdOikKFtKHPR4IaxtRQASZiKUVwjdIdCZfMhQqifvmyW/k4\n Z+mQ==","X-Gm-Message-State":"AOJu0Yw0B9S/6eu0oWvtAz6P0ymBbtEeAQlEPa5xhPtD0ZfgjFhVh2S+\n KhXj21a1snslWfTyl5eiq/b6ww4jhftXfKU/JuU30YR0w8hgQgS4P2PElmOyHk6J/SCmHfgfBw6\n LQjgdYSZxWzktt209Yg/FaBxpfhIJacTNXpG3TGGZobtPU8SaMo7NYfQLXaAwe1cif9wiGfVA7S\n YuNIsaM6pJBIEoL+DZNjiKQ2CwVKHfyZYkHMi3MHMINwjO","X-Gm-Gg":"AeBDietlWXu4CxO3shR+rVat63VNMTtMtaffz3MvGpnsX9mSzc1muPnK5nITRz8a5ZZ\n 2pkVEGiXvOeY8NCZeU7r9E6EBol97PGMcBrrXrZszR/tEUaM2rmtspgwUMU7IyUibRwTkhDZsLZ\n /tfeK5fY+7HV7HkmsvsA3u6Cw+YFODR92+MvOTVldQlCR+SOWIRhYNoGISmb04tHZ7YkS3JTDQW\n OmY0v0p2crs15QNEhHdMEkI7V4VfwhT91bm1VBb93/FQt48Kh6sW+Ig1soDiMTcAzE=","X-Received":["by 2002:a53:dd4a:0:b0:650:5ef1:6805 with SMTP id\n 956f58d0204a3-65198c0e6a0mr18063394d50.60.1776353534004;\n Thu, 16 Apr 2026 08:32:14 -0700 (PDT)","by 2002:a53:dd4a:0:b0:650:5ef1:6805 with SMTP id\n 956f58d0204a3-65198c0e6a0mr18063345d50.60.1776353533161; Thu, 16 Apr 2026\n 08:32:13 -0700 (PDT)"],"MIME-Version":"1.0","References":"<20260416151959.177955-1-jwakely@redhat.com>","In-Reply-To":"<20260416151959.177955-1-jwakely@redhat.com>","From":"Jonathan Wakely <jwakely@redhat.com>","Date":"Thu, 16 Apr 2026 16:31:57 +0100","X-Gm-Features":"AQROBzC2nfyoq57fvzSJyyaUkfMJAY-DZuDoZYxcjvyzjqrjnjyzf2DkWQWMNJI","Message-ID":"\n <CACb0b4kPW3o95zOSyGQp8pJcNGNGS4NrkKUWRXbJN719wxwtAg@mail.gmail.com>","Subject":"Re: [PATCH v2] libstdc++: Add module initialization functions to the\n library [PR124268]","To":"gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"L_xdYgikLFYb25ImTNS8FpirsmoshrRObK8AlKpFGzs_1776353534","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain; charset=\"UTF-8\"","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]