From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 73003 invoked by alias); 21 Oct 2016 19:35:24 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 72984 invoked by uid 89); 21 Oct 2016 19:35:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=our X-Spam-User: qpsmtpd, 2 recipients X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 21 Oct 2016 19:35:13 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 655AA3D94B; Fri, 21 Oct 2016 19:35:12 +0000 (UTC) Received: from localhost (ovpn-116-70.ams2.redhat.com [10.36.116.70]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u9LJZBTc012918; Fri, 21 Oct 2016 15:35:11 -0400 Date: Fri, 21 Oct 2016 19:35:00 -0000 From: Jonathan Wakely To: =?iso-8859-1?Q?Fran=E7ois?= Dumont Cc: "libstdc++@gcc.gnu.org" , gcc-patches Subject: Re: Use version namespace in normal mode Message-ID: <20161021193511.GA2922@redhat.com> References: <34ba2c69-d663-4bd3-dc7a-8efef3e56afe@gmail.com> <20160930154034.GV29482@redhat.com> <13dd85eb-5d2d-7d4b-4bce-810b9281553f@gmail.com> <20161006160649.GT29482@redhat.com> <44095163-84f6-8d68-9195-eecb7d5cfbe1@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <44095163-84f6-8d68-9195-eecb7d5cfbe1@gmail.com> X-Clacks-Overhead: GNU Terry Pratchett User-Agent: Mutt/1.7.0 (2016-08-17) X-SW-Source: 2016-10/txt/msg01797.txt.bz2 Some quick comments before I go offline ... On 21/10/16 21:21 +0200, François Dumont wrote: >Hi > > I configured libstdc++ to use gnu-version-namespace and there are >a number of failures, see below. But none of them related to this >patch so is it ok to commit ? > >The results: > >FAIL: libstdc++-abi/abi_check > > 3709 symbols reported as added. I don't know what to think about >it. I see a gnu-versioned-namespace.ver in config/abi/pre, is it the >list of symbols to support when versioned namespace is activated ? The >list looks pretty limited. Because everything gets matched by widlcards and added to a single symbol version. I just ignore abi-check for the versioned namespace, since it's explicitly not ABI compatible. Does the test even work for the versioned namespace or does it only use the normal baselines? >FAIL: 18_support/headers/limits/synopsis.cc (test for excess errors) >FAIL: 20_util/headers/functional/synopsis.cc (test for excess errors) >FAIL: 20_util/headers/memory/synopsis.cc (test for excess errors) >FAIL: 20_util/headers/utility/synopsis.cc (test for excess errors) >FAIL: 21_strings/headers/string/synopsis.cc (test for excess errors) >FAIL: 22_locale/headers/locale/synopsis.cc (test for excess errors) >FAIL: 23_containers/headers/bitset/synopsis.cc (test for excess errors) >FAIL: 23_containers/headers/deque/synopsis.cc (test for excess errors) >FAIL: 23_containers/headers/forward_list/synopsis.cc (test for excess >errors) >FAIL: 23_containers/headers/list/synopsis.cc (test for excess errors) >FAIL: 23_containers/headers/map/synopsis.cc (test for excess errors) >FAIL: 23_containers/headers/queue/synopsis.cc (test for excess errors) >FAIL: 23_containers/headers/set/synopsis.cc (test for excess errors) >FAIL: 23_containers/headers/stack/synopsis.cc (test for excess errors) >FAIL: 23_containers/headers/vector/synopsis.cc (test for excess errors) >FAIL: 24_iterators/headers/iterator/synopsis.cc (test for excess errors) >FAIL: 24_iterators/headers/iterator/synopsis_c++11.cc (test for excess >errors) >FAIL: 24_iterators/headers/iterator/synopsis_c++14.cc (test for excess >errors) >FAIL: 24_iterators/headers/iterator/synopsis_c++17.cc (test for excess >errors) >FAIL: 26_numerics/headers/complex/synopsis.cc (test for excess errors) >FAIL: 26_numerics/headers/valarray/synopsis.cc (test for excess errors) >FAIL: 27_io/headers/fstream/synopsis.cc (test for excess errors) >FAIL: 27_io/headers/ios/synopsis.cc (test for excess errors) >FAIL: 27_io/headers/istream/synopsis.cc (test for excess errors) >FAIL: 27_io/headers/ostream/synopsis.cc (test for excess errors) >FAIL: 27_io/headers/sstream/synopsis.cc (test for excess errors) >FAIL: 27_io/headers/streambuf/synopsis.cc (test for excess errors) >FAIL: tr1/2_general_utilities/headers/functional/synopsis.cc (test for >excess errors) >FAIL: tr1/2_general_utilities/headers/memory/synopsis.cc (test for >excess errors) >FAIL: tr1/3_function_objects/headers/functional/synopsis.cc (test for >excess errors) >FAIL: tr1/4_metaprogramming/headers/type_traits/synopsis.cc (test for >excess errors) >FAIL: tr1/6_containers/headers/array/synopsis.cc (test for excess errors) >FAIL: tr1/6_containers/headers/unordered_map/synopsis.cc (test for >excess errors) >FAIL: tr1/6_containers/headers/unordered_set/synopsis.cc (test for >excess errors) > > All those failures are coming from declaration or explicit >instantiations of template types expected to be in std but being in >fact in std::__7. Should I add usage of >_GLIBCXX_BEGIN_NAMESPACE_VERSION/_GLIBCXX_END_NAMESSPACE_VERSION in >those files ? Or introduce a dg-require-no-versioned-namespace ? I've just been ignoring those failures, as the reason is known. Either of your suggestions would work, although I've been thinking we should avoid using _GLIBCXX_ macros in the tests, so they are independent of our implementation details. We could define GLIBCXX_TEST_ macros for use in the tests, and define them independently, so we could add a GLIBCXX_TEST_INLINE_NS to those tests which would add the "inline namespace __7" bit. We don't need to worry about it for now though. >FAIL: 17_intro/using_namespace_std_tr1_neg.cc (test for errors, line 65) >FAIL: 21_strings/basic_string/cons/char/7.cc (test for excess errors) >FAIL: 21_strings/basic_string/cons/wchar_t/7.cc (test for excess errors) >FAIL: 21_strings/basic_string/lwg2758.cc (test for excess errors) >FAIL: 21_strings/basic_string/modifiers/append/char/4.cc (test for >excess errors) >FAIL: 21_strings/basic_string/modifiers/append/wchar_t/4.cc (test for >excess errors) >FAIL: 21_strings/basic_string/modifiers/assign/char/4.cc (test for >excess errors) >FAIL: 21_strings/basic_string/modifiers/assign/wchar_t/4.cc (test for >excess errors) >FAIL: 21_strings/basic_string/modifiers/insert/char/3.cc (test for >excess errors) >FAIL: 21_strings/basic_string/modifiers/insert/wchar_t/3.cc (test for >excess errors) >FAIL: 21_strings/basic_string/modifiers/replace/char/7.cc (test for >excess errors) >FAIL: 21_strings/basic_string/modifiers/replace/wchar_t/7.cc (test for >excess errors) >FAIL: 21_strings/basic_string/operations/compare/char/2.cc (test for >excess errors) >FAIL: 21_strings/basic_string/operations/compare/wchar_t/2.cc (test >for excess errors) >FAIL: 21_strings/basic_string/operations/find/char/5.cc (test for >excess errors) >FAIL: 21_strings/basic_string/operations/find/wchar_t/5.cc (test for >excess errors) >FAIL: 21_strings/basic_string/operators/char/5.cc (test for excess errors) >FAIL: 21_strings/basic_string/operators/wchar_t/5.cc (test for excess >errors) >FAIL: 21_strings/basic_string_view/cons/char/1.cc (test for excess errors) >FAIL: 21_strings/basic_string_view/cons/wchar_t/1.cc (test for excess >errors) >FAIL: 21_strings/basic_string_view/inserters/char/1.cc (test for >excess errors) >FAIL: 21_strings/basic_string_view/inserters/char/2.cc (test for >excess errors) >FAIL: 21_strings/basic_string_view/inserters/char/3.cc (test for >excess errors) >FAIL: 21_strings/basic_string_view/inserters/wchar_t/1.cc (test for >excess errors) >FAIL: 21_strings/basic_string_view/inserters/wchar_t/2.cc (test for >excess errors) >FAIL: 21_strings/basic_string_view/inserters/wchar_t/3.cc (test for >excess errors) >FAIL: 21_strings/basic_string_view/operations/string_conversion/1.cc >(test for excess errors) >FAIL: 23_containers/map/modifiers/erase/abi_tag.cc scan-assembler _ZNSt3mapIiiSt4lessIiESaISt4pairIKiiEEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS4_E >FAIL: 23_containers/multimap/modifiers/erase/abi_tag.cc scan-assembler _ZNSt8multimapIiiSt4lessIiESaISt4pairIKiiEEE5eraseB5cxx11ESt17_Rb_tree_iteratorIS4_E >FAIL: 23_containers/multiset/modifiers/erase/abi_tag.cc scan-assembler _ZNSt8multisetIiSt4lessIiESaIiEE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIiE >FAIL: 23_containers/multiset/modifiers/erase/abi_tag.cc scan-assembler _ZNSt8multisetIiSt4lessIiESaIiEE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIiES5_ >FAIL: 23_containers/set/modifiers/erase/abi_tag.cc scan-assembler _ZNSt3setIiSt4lessIiESaIiEE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIiE >FAIL: 23_containers/set/modifiers/erase/abi_tag.cc scan-assembler _ZNSt3setIiSt4lessIiESaIiEE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIiES5_ >FAIL: 26_numerics/complex/abi_tag.cc scan-assembler >_ZNKSt7complexIfE4realB5cxx11Ev > > Those failures are due to dual abi being disable when versioned >namespace is being used, in configure: > > if test x$enable_symvers = xgnu-versioned-namespace; then > # gnu-versioned-namespace is incompatible with the dual ABI. > enable_libstdcxx_dual_abi="no" > fi > > Should I add a dg-require-cxx11-abi ? I have a patch to do that already, but it needs a bit more work. >FAIL: 20_util/allocator/overaligned.cc (test for excess errors) >FAIL: ext/bitmap_allocator/overaligned.cc (test for excess errors) >FAIL: ext/mt_allocator/overaligned.cc (test for excess errors) >FAIL: ext/new_allocator/overaligned.cc (test for excess errors) >FAIL: ext/pool_allocator/overaligned.cc (test for excess errors) > >Failures coming from always the same undefined symbols: >/home/fdt/dev/gcc/build_git/x86_64-pc-linux-gnu/libstdc++-v3/include/ext/new_allocator.h:108: >undefined reference to `operator new(unsigned long, std::align_val_t)' > > I don't understand those failures for now but same failures >without patch so unrelated. Those new symbols need to be added to the linker script, gnu-versioned-namespace.ver >FAIL: libstdc++-prettyprinters/cxx11.cc print efl >... > >Of course many pretty printers failures. IMO should be set as >unsupported in this mode but I don't know how to do so. No, we should fix the printers (they already try to work, but have bitrotted).