From: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
To: Jonathan Wakely <jwakely@redhat.com>
Cc: Ville Voutilainen <ville.voutilainen@gmail.com>,
libstdc++ <libstdc++@gcc.gnu.org>,
"gcc-patches\@gcc.gnu.org" <gcc-patches@gcc.gnu.org>
Subject: Re: [v3 PATCH] Implement LWG 2221, No formatted output operator for nullptr
Date: Thu, 10 Jan 2019 21:27:00 -0000 [thread overview]
Message-ID: <yddd0p4ursd.fsf@CeBiTec.Uni-Bielefeld.DE> (raw)
In-Reply-To: <20190110131519.GC15627@redhat.com> (Jonathan Wakely's message of "Thu, 10 Jan 2019 13:15:19 +0000")
[-- Attachment #1: Type: text/plain, Size: 2796 bytes --]
Hi Jonathan,
> On 04/12/17 23:04 +0000, Jonathan Wakely wrote:
>>On 03/12/17 23:08 +0200, Ville Voutilainen wrote:
>>>Tested on Linux-x64.
>>>
>>>2017-11-14 Ville Voutilainen <ville.voutilainen@gmail.com>
>>>
>>> Implement LWG 2221
>>> * include/std/ostream (operator<<(nullptr_t)): New.
>>> * testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc: New.
>>
>>>diff --git a/libstdc++-v3/include/std/ostream
>>> b/libstdc++-v3/include/std/ostream
>>>index f7cab03..18011bc 100644
>>>--- a/libstdc++-v3/include/std/ostream
>>>+++ b/libstdc++-v3/include/std/ostream
>>>@@ -245,6 +245,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>>> operator<<(const void* __p)
>>> { return _M_insert(__p); }
>>>
>>>+#if __cplusplus > 201402L
>>>+ __ostream_type&
>>>+ operator<<(nullptr_t)
>>>+ { return *this << "nullptr"; }
>>>+#endif
>>
>>As discussed on IRC, this requires a new symbol to be exported for the
>>std::ostream and std::wostream explicit instantiations, or the new
>>test will fail to link at -O0.
>>
>>That should wait for stage 1.
>>
>
> This patch for a C++17 feature (posted over a year ago) should have
> gone in during stage 1. I've taken care of the symbol exports that
> were missing from the original patch.
>
> Tested x86_64-linux, committed to trunk.
this patch broke Solaris bootstrap:
ld: fatal: libstdc++-symbols.ver-sun: 7117: symbol 'std::basic_ostream<char, std::char_traits<char> >::operator<<(decltype(nullptr))': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 7119: symbol 'std::basic_ostream<wchar_t, std::char_traits<wchar_t> >::operator<<(decltype(nullptr))': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 7117: symbol '_ZNSolsEDn': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 7119: symbol '_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEDn': symbol version conflict
Again, there were two matches for those two symbols:
GLIBCXX_3.4
##_ZNSolsE*[^Dg] (glob)
_ZNSolsEDn;
GLIBCXX_3.4.26
##_ZNSolsEDn (glob)
_ZNSolsEDn;
GLIBCXX_3.4
##_ZNSt13basic_ostreamIwSt11char_traitsIwEElsE*[^Dg] (glob)
_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEDn;
GLIBCXX_3.4.26
##_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEDn (glob)
_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEDn;
ISTM that the patterns were backwards. The following patch fixes this
and allowed i386-pc-solaris2.11 bootstrap to complete without
regressions relative to the last successful one.
Ok for mainline?
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
2019-01-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* config/abi/pre/gnu.ver(GLIBCXX_3.4): Fix pattern.
(GLIBCXX_3.4.21): Likewise.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: sol2-v3-lwg2221.patch --]
[-- Type: text/x-patch, Size: 983 bytes --]
# HG changeset patch
# Parent f8d5e17fd8042e330c31d714b9c619c1807d93cb
Fix libstdc++.so link on Solaris with C++17 LWG 2221 support
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -495,7 +495,7 @@ GLIBCXX_3.4 {
_ZNSo8_M_writeEPKc[ilx];
_ZNSo3put*;
_ZNSo[5-9][a-z]*;
- _ZNSolsE*[^Dg];
+ _ZNSolsE[^Dg]*;
# std::basic_ostream<wchar_t>
_ZNSt13basic_ostreamIwSt11char_traitsIwEEC[12]Ev;
@@ -509,7 +509,7 @@ GLIBCXX_3.4 {
_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKw*;
_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentry*;
_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKw[ilx];
- _ZNSt13basic_ostreamIwSt11char_traitsIwEElsE*[^Dg];
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsE[^Dg]*;
# std::ostream operators and inserters
_ZSt4end[ls]I[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
next prev parent reply other threads:[~2019-01-10 21:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-03 21:08 Ville Voutilainen
2017-12-04 23:04 ` Jonathan Wakely
2019-01-10 13:15 ` Jonathan Wakely
2019-01-10 21:27 ` Rainer Orth [this message]
2019-01-11 0:01 ` Jonathan Wakely
2019-01-11 9:07 ` Rainer Orth
2019-01-11 11:01 ` Jonathan Wakely
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=yddd0p4ursd.fsf@CeBiTec.Uni-Bielefeld.DE \
--to=ro@cebitec.uni-bielefeld.de \
--cc=gcc-patches@gcc.gnu.org \
--cc=jwakely@redhat.com \
--cc=libstdc++@gcc.gnu.org \
--cc=ville.voutilainen@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).