Jakub Jelinek <[email protected]> writes:
> On Thu, May 23, 2013 at 10:45:32PM +0200, Rainer Orth wrote:
>> Jakub Jelinek <[email protected]> writes:
>>
>> > On Thu, May 23, 2013 at 04:02:18PM +0200, Jakub Jelinek wrote:
>> >> So, here is an untested 4.8 branch patch. The @GLIBCXX_3.4.17 +
>> >> @@GLIBCXX_3.4.19 stuff gets ugly, I admit, but don't have other solution.
>> >> Tested just that it compiles/links, abi list looks good and abi.exp
>> >> testing,
>> >> haven't actually tried to test it more than that.
>> >
>> > Now fully bootstrapped/regtested on x86_64-linux and i686-linux.
>>
>> This patch breaks Solaris bootstrap:
>>
>> ld: fatal: libstdc++-symbols.ver-sun: 4423: symbol
>> 'std::chrono::steady_clock::now()' is already defined in file:
>> libstdc++-symbols.ver-sun: symbol version conflict
>> collect2: error: ld returned 1 exit status
>> make[6]: *** [libstdc++.la] Error 1
>>
>> I think std::chrono::steady_clock::now() needs to be protected with
>> !(__sun__ && __svr4__) in GLIBCXX_3.4.17 since it only became available
>> by default with Jonathan's patch.
>
> Ah, I see, gnu.ver has some
> #ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT
> #endif
> guards there, does it work if you add it around the
> GLIBCXX_3.4.17 std::chrono::steady_clock::now() definition?
If I do so, I would probably get an abi_check failure: with your patch,
std::chrono::steady_clock::now() ends up in GLIBCXX_3.4.19 while it
should appear in GLIBCXX_3.4.20 since this is new in GCC 4.9.
> Seems the solaris baseline_symbols.txt files don't meantion
> this symbol, thus it wasn't exported before and thus the
> compat definition there isn't really needed for Solaris.
Right, it only got enable by defaulting --enable-libstdcxx-time to auto.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University