From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com [IPv6:2a00:1450:4864:20::636]) by sourceware.org (Postfix) with ESMTPS id B82DC3858D20; Fri, 11 Aug 2023 07:51:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B82DC3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-986d8332f50so240040166b.0; Fri, 11 Aug 2023 00:51:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691740314; x=1692345114; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=AYzesnMBYuSWtAbfENZRzCVLn43CqSl6WQxtMR5nfxw=; b=IoD7nHHxLc6ylu/hYn34tebtvXRMxyBQVNiExkwDzRTGAYMWLC6bxpLx3S6yjIQoyn ies1+2+sSw+GuF2QF3AwbeaYvgQJN5Y1eHsXmQYKigb7HgJbOLYmIzxGP7hadamjKxUq 4pto1qwBZs5YhkhcpsnGADviwkIsnVc96uWcocSbryJ1t9CZzIKAo7Lr840DNuxke2QZ dn2erqsov9R64RGolCm3BMv4qeyFeViuXqyJuUhYBLNw5729lJ7HQpGW2CWp8BTr2MO+ iEvx9f0HrHy8NO6x9DnmWqlU3cSY/ULb8FvTWxBwMI0p9JoetscUGblDVtyf0bp5emaq OXIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691740314; x=1692345114; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=AYzesnMBYuSWtAbfENZRzCVLn43CqSl6WQxtMR5nfxw=; b=WAMPnn9NKhdbpdgPXgHMC7liC7zJtQ5d7C8EMYf0/cGYJzUVKzYeFerv+Y5XGPKkTR LiKTuBeQyTnwsYn7FrYM2/rv1c4QIL4nLxB89c2NC+7HiU8+l5G+1O58zszfk+DnjnpJ 5qnclYAj6Hbu6XbXPvMXuMhaEfrp55AJNPgawsyQTuVZEiuedRy45I3gtC1UHRCxpA2i UjmuaHelA4fAIRBybVP4F2e5ojNORMmY/KTY4vsjy4BwnY3dHfU2RSAal8G/jM78VacS 9X/fiz9pe/qcpwDvG37c0mfmSVAUM0i4C7LgjRi2rm2HDRPUE8c4mjG43t9Osj6Y/cFr T0iA== X-Gm-Message-State: AOJu0YxAl9uvp/EXoPm1e4AgKLIZW1N83s0Tp2dfT2pzMwnbVQZh2WyQ hF3Vp7BrmuS6UlDmMyU/6Hxr5+I1D6VcNrWJPpI= X-Google-Smtp-Source: AGHT+IFpL35r7O8ZCD4t+AnQzo+rzeqZwPD1Se0EwnCMuxbWnXZch/tDaiTl8AD+ia1TxJ+lnsjCMsnMHdJv8PV/fSM= X-Received: by 2002:a17:906:5306:b0:993:dcca:9607 with SMTP id h6-20020a170906530600b00993dcca9607mr919262ejo.2.1691740314346; Fri, 11 Aug 2023 00:51:54 -0700 (PDT) MIME-Version: 1.0 References: <1dc681f4-41b7-d171-02ac-b0194617bdee@gmail.com> In-Reply-To: From: Jonathan Wakely Date: Fri, 11 Aug 2023 08:51:42 +0100 Message-ID: Subject: Re: [PATCH] sso-string@gnu-versioned-namespace [PR83077] To: =?UTF-8?Q?Fran=C3=A7ois_Dumont?= Cc: "libstdc++" , gcc-patches Content-Type: multipart/alternative; boundary="0000000000007d2a9e0602a0fcb4" X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --0000000000007d2a9e0602a0fcb4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, 11 Aug 2023, 06:44 Fran=C3=A7ois Dumont via Libstdc++, < libstdc++@gcc.gnu.org> wrote: > I hadn't tested the most basic default configuration and it is failing, I did wonder about that when you said which configurations you had tested :) > I need some more time yet. > OK, no problem. I actually have an idea for replacing the __cow_string hack with something better, which I will try to work on next week. That might make things simpler for you, as you won't need the __std_cow_string macro. > Fran=C3=A7ois > > > On 10/08/2023 07:13, Fran=C3=A7ois Dumont wrote: > > Hi > > > > I've eventually completed this work. > > > > This evolution will allow to build libstdc++ without dual abi and > > using cxx11 abi. For the moment such a config is only accessible > > through the --enable-symvers=3Dgnu-versioned-namespace configuration. > > > > libstdc++: [_GLIBCXX_INLINE_VERSION] Use cxx11 abi [PR83077] > > > > Use cxx11 abi when activating versioned namespace mode. > > > > libstdcxx-v3/ChangeLog: > > > > PR libstdc++/83077 > > * acinclude.m4 [GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI]: > > Default to "new" libstdcxx abi. > > * config/locale/dragonfly/monetary_members.cc > > [!_GLIBCXX_USE_DUAL_ABI]: Define money_base > > members. > > * config/locale/generic/monetary_members.cc > > [!_GLIBCXX_USE_DUAL_ABI]: Likewise. > > * config/locale/gnu/monetary_members.cc > > [!_GLIBCXX_USE_DUAL_ABI]: Likewise. > > * config/locale/gnu/numeric_members.cc > > [!_GLIBCXX_USE_DUAL_ABI](__narrow_multibyte_chars): Define. > > * configure: Regenerate. > > * include/bits/c++config > > [_GLIBCXX_INLINE_VERSION](_GLIBCXX_NAMESPACE_CXX11, > > _GLIBCXX_BEGIN_NAMESPACE_CXX11): > > Define empty. > > [_GLIBCXX_INLINE_VERSION](_GLIBCXX_END_NAMESPACE_CXX11, > > _GLIBCXX_DEFAULT_ABI_TAG): > > Likewise. > > * include/bits/cow_string.h [!_GLIBCXX_USE_CXX11_ABI]: > > Define a light version of COW > > basic_string as __std_cow_string for use in stdexcept. > > * include/std/stdexcept [_GLIBCXX_USE_CXX11_ABI]: Define > > __cow_string. > > (__cow_string(const char*)): New. > > (__cow_string::c_str()): New. > > * python/libstdcxx/v6/printers.py > > (StdStringPrinter::__init__): Set self.new_string to True > > when std::__8::basic_string type is found. > > * src/Makefile.am > > [ENABLE_SYMVERS_GNU_NAMESPACE](ldbl_alt128_compat_sources): Define empt= y. > > * src/Makefile.in: Regenerate. > > * src/c++11/Makefile.am (cxx11_abi_sources): Rename into... > > (dual_abi_sources): ...this. Also move cow-local_init.cc, > > cxx11-hash_tr1.cc, > > cxx11-ios_failure.cc entries to... > > (sources): ...this. > > (extra_string_inst_sources): Move cow-fstream-inst.cc, > > cow-sstream-inst.cc, cow-string-inst.cc, > > cow-string-io-inst.cc, cow-wtring-inst.cc, > > cow-wstring-io-inst.cc, cxx11-locale-inst.cc, > > cxx11-wlocale-inst.cc entries to... > > (inst_sources): ...this. > > * src/c++11/Makefile.in: Regenerate. > > * src/c++11/cow-fstream-inst.cc [_GLIBCXX_USE_CXX11_ABI]: > > Skip definitions. > > * src/c++11/cow-locale_init.cc [_GLIBCXX_USE_CXX11_ABI]: > > Skip definitions. > > * src/c++11/cow-sstream-inst.cc [_GLIBCXX_USE_CXX11_ABI]: > > Skip definitions. > > * src/c++11/cow-stdexcept.cc [_GLIBCXX_USE_CXX11_ABI]: > > Include . > > [_GLIBCXX_USE_DUAL_ABI || > > _GLIBCXX_USE_CXX11_ABI](__cow_string): Redefine before including > > . Define > > _GLIBCXX_DEFINE_STDEXCEPT_INSTANTIATIONS so that __cow_string definition > > in is skipped. > > [_GLIBCXX_USE_CXX11_ABI]: Skip Transaction Memory TS > > definitions. > > * src/c++11/cow-string-inst.cc [_GLIBCXX_USE_CXX11_ABI]: > > Skip definitions. > > * src/c++11/cow-string-io-inst.cc > > [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. > > * src/c++11/cow-wstring-inst.cc [_GLIBCXX_USE_CXX11_ABI]: > > Skip definitions. > > * src/c++11/cow-wstring-io-inst.cc > > [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. > > * src/c++11/cxx11-hash_tr1.cc [!_GLIBCXX_USE_CXX11_ABI]: > > Skip definitions. > > * src/c++11/cxx11-ios_failure.cc > > [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. > > [!_GLIBCXX_USE_DUAL_ABI] (__ios_failure): Remove. > > * src/c++11/cxx11-locale-inst.cc: Cleanup, just include > > locale-inst.cc. > > * src/c++11/cxx11-stdexcept.cc [!_GLIBCXX_USE_CXX11_ABI]: > > Skip definitions. > > * src/c++11/cxx11-wlocale-inst.cc > > [!_GLIBCXX_USE_CXX11_ABI]: Skip definitions. > > * src/c++11/locale-inst-numeric.h > > [!_GLIBCXX_USE_DUAL_ABI](std::use_facet>, > > std::use_facet>): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](std::has_facet>, > > std::has_facet>): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](std::num_get > istreambuf_iterator>): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](std::num_put > ostreambuf_iterator>): Instantiate. > > * src/c++11/locale-inst.cc [!_GLIBCXX_USE_DUAL_ABI]: Build > > only when configured > > _GLIBCXX_USE_CXX11_ABI is equal to currently built abi. > > [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): > > Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](__moneypunct_cache): > > Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](__numpunct_cache): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](__timepunct): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](__timepunct_cache): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](time_put > ostreambuf_iterator>): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](time_put_byname > ostreambuf_iterator>): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](__ctype_abstract_base): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](ctype_byname): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](__codecvt_abstract_base > mbstate_t>): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](codecvt_byname > mbstate_t>): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](codecvt_byname > mbstate_t>): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): > > Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](use_facet > mbstate_t>>(const locale&)): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](use_facet<__timepunct>(const locale&)): > > Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](use_facet>(const locale&)): > > Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): > > Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](has_facet > mbstate_t>>(const locale&)): Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](has_facet<__timepunct>(const locale&)): > > Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](has_facet>(const locale&)): > > Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](__add_grouping): Define. > > [!_GLIBCXX_USE_DUAL_ABI](__pad>): > > Instantiate. > > [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long, > > const C*, > > ios_base::fmtflags, bool)): Define. > > [!_GLIBCXX_USE_DUAL_ABI](__int_to_char(C*, unsigned long > > long, const C*, > > ios_base::fmtflags, bool)): Define. > > * src/c++11/string-inst.cc > > (_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS): Define following > > _GLIBCXX_USE_CXX11_ABI value. > > [_GLIBCXX_USE_CXX11_ABI && > > !_GLIBCXX_DEFINING_CXX11_ABI_INSTANTIATIONS]: > > Define _GLIBCXX_DEFINING_COW_STRING_INSTANTIATIONS. > > Include . > > Define basic_string as __std_cow_string for the current > > translation unit. > > * src/c++11/wlocale-inst.cc [!_GLIBCXX_USE_CXX11_ABI]: > > Skip definitions. > > * src/c++98/Makefile.am (cxx11_abi_sources): Remove, > > unique cow-istream-string.cc entry > > move to... > > (inst_sources): ...this. > > * src/c++98/Makefile.in: Regenerate. > > * src/c++98/cow-istream-string.cc: Include > > . > > [_GLIBCXX_USE_CXX11_ABI]: Skip definitions. > > * src/c++98/hash_tr1.cc [_GLIBCXX_USE_CXX11_ABI]: Skip > > definitions. > > * src/c++98/ios_failure.cc > > [_GLIBCXX_USE_CXX11_ABI][_GLIBCXX_USE_DUAL_ABI]: Skip definitions. > > * src/c++98/istream-string.cc [!_GLIBCXX_USE_DUAL_ABI]: > > Build only when configured > > _GLIBCXX_USE_CXX11_ABI is equal to currently built abi. > > * src/c++98/locale_facets.cc > > [_GLIBCXX_USE_CXX11_ABI](__verify_grouping): Remove. > > * src/c++98/stdexcept.cc > > [_GLIBCXX_USE_CXX11_ABI](logic_error(const string&): Remove. > > [_GLIBCXX_USE_CXX11_ABI](domain_error(const string&): Remov= e. > > [_GLIBCXX_USE_CXX11_ABI](invalid_argument(const string&): > > Remove. > > [_GLIBCXX_USE_CXX11_ABI](length_error(const string&): Remov= e. > > [_GLIBCXX_USE_CXX11_ABI](out_of_range(const string&): Remov= e. > > [_GLIBCXX_USE_CXX11_ABI](runtime_error(const string&): > > Remove. > > [_GLIBCXX_USE_CXX11_ABI](range_error(const string&): Remove. > > [_GLIBCXX_USE_CXX11_ABI](overflow_error(const string&): > > Remove. > > [_GLIBCXX_USE_CXX11_ABI](underflow_error(const string&): > > Remove. > > > > Tested under linux x86_64 with following configs: > > > > --enable-symvers=3Dgnu-versioned-namespace > > > > --disable-libstdcxx-dual-abi > > > > Ok to commit ? > > > > Fran=C3=A7ois > > > > > --0000000000007d2a9e0602a0fcb4--