From patchwork Fri May 24 08:58:23 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Jelinek X-Patchwork-Id: 246108 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "localhost", Issuer "www.qmailtoaster.com" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 8C6DA2C009E for ; Fri, 24 May 2013 18:58:55 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:reply-to:references:mime-version :content-type:in-reply-to; q=dns; s=default; b=IzrUUqVgk2hmDnqG3 Bwh1sWexPMokTcuVIHFXUH+iPJaOut7jdCYC+M4atchp9T5pzyiCnDw/s57v1VdX Ih+f9P0G6kNLaeTTjnyreFmTt+5Nzg3yK43sABgdLY1ZoXlXNizwiRrK533xnip7 poMDfNn17J8Uhb/kP0mgPMN1Cw= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:cc:subject:message-id:reply-to:references:mime-version :content-type:in-reply-to; s=default; bh=PTD7hjLksJJztCnHvBNsLJF qxF8=; b=NnwEZk9uwCcSE1qryN4DeUkQQrjBT9ZVf6tFE94WjZ7PmeXXKBXw1CO gIV25ywd3wpvpmUqcIv2a0BbNJ3djw1KntF1XxI/f/omLlNbOpgaDtc5VZclpNHw TrRiNPWQ4cwDUpjPGtWi/FPY8iFPOxNpzo6OYFZgFMa5VFch1VXc= Received: (qmail 28766 invoked by alias); 24 May 2013 08:58:38 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 28746 invoked by uid 89); 24 May 2013 08:58:38 -0000 X-Spam-SWARE-Status: No, score=-4.7 required=5.0 tests=AWL, BAYES_50, KAM_STOCKGEN, RCVD_IN_HOSTKARMA_W, RCVD_IN_HOSTKARMA_WL, RP_MATCHES_RCVD, SPF_HELO_PASS, SPF_PASS, TW_CX, TW_DC autolearn=no version=3.3.1 X-Spam-User: qpsmtpd, 2 recipients Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Fri, 24 May 2013 08:58:35 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r4O8wVRT011482 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 24 May 2013 04:58:31 -0400 Received: from zalov.cz (vpn-49-71.rdu2.redhat.com [10.10.49.71]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r4O8wT2a019047 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 24 May 2013 04:58:30 -0400 Received: from zalov.cz (localhost [127.0.0.1]) by zalov.cz (8.14.5/8.14.5) with ESMTP id r4O8wR5U029059; Fri, 24 May 2013 10:58:28 +0200 Received: (from jakub@localhost) by zalov.cz (8.14.5/8.14.5/Submit) id r4O8wOX5029056; Fri, 24 May 2013 10:58:24 +0200 Date: Fri, 24 May 2013 10:58:23 +0200 From: Jakub Jelinek To: Rainer Orth Cc: Jonathan Wakely , Benjamin Kosnik , Paolo Carlini , libstdc++ , gcc-patches Subject: Re: [patch] Default to --enable-libstdcxx-time=auto Message-ID: <20130524085822.GM1377@tucnak.redhat.com> Reply-To: Jakub Jelinek References: <20130523140218.GW1377@tucnak.redhat.com> <20130523162611.GA1377@tucnak.redhat.com> <20130523205022.GF1377@tucnak.redhat.com> <20130523210611.GH1377@tucnak.redhat.com> <20130524075705.GK1377@tucnak.redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20130524075705.GK1377@tucnak.redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Virus-Found: No On Fri, May 24, 2013 at 09:57:05AM +0200, Jakub Jelinek wrote: > Thus, what about this version (just slightly modified, headers remain the > same, but we export _ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 > even if monotonic clock isn't supported, it will just be work the same as > _ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 . Programs compiled > against headers of the same libstdc++ as will be linked in dynamically > won't see a change, because they will never use this symbol of monotonic > clocks weren't determined to be there at configure time. And we have a > fallback for the unlikely matching of newer headers with older libstdc++, > it will work roughly as before (in that steady_clock::now () will not be > steady), just with the tiny exception that in that case the code could > see that steady_clock::is_steady is true rather than false (but, can't > the code assume it from the standard anyway)? > > I've also added the #ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT > guards in gnu.ver. Oops, posted too early, while that worked on Linux due to _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL, it didn't work when _GLIBCXX_USE_CLOCK_MONOTONIC wasn't defined, the return of the other clock now() result resulted in error. So here is once more updated version that works even when _GLIBCXX_USE_CLOCK_MONOTONIC isn't defined. Jakub 2013-05-24 Jakub Jelinek * src/c++11/chrono.cc: If _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL, include unistd.h and sys/syscall.h. If _GLIBCXX_COMPATIBILITY_CXX0X, don't define system_clock::is_steady, system_clock::now() and steady_clock::is_steady. (std::chrono::system_clock::now()): If _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL, call syscall (SYS_clock_gettime, ...) instead of clock_gettime (...). (std::chrono::system_clock::now()): Likewise. Add weak attribute if _GLIBCXX_COMPATIBILITY_CXX0X and compatibility-chrono.cc will be non-empty. * src/Makefile.am (cxx11_sources): Add compatibility-chrono.cc. (compatibility-chrono.lo, compatibility-chrono.o): New goals. * src/c++11/compatibility-chrono.cc: New file. * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): On linux*, check for syscall (SYS_clock_gettime, CLOCK_MONOTONIC, &tp). * testsuite/util/testsuite_abi.cc (check_version): Add GLIBCXX_3.4.20 version and make it the latest. * config/abi/pre/gnu.ver (_ZNSt6chrono12steady_clock3nowEv): Export also @@GLIBCXX_3.4.19. Move all symbols so far added for GCC 4.9 to @@GLIBCXX_3.4.20 instead. * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Regenerated. * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Regenerated. * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Regenerated. * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Regenerated. * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Regenerated. * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Regenerated. * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Regenerated. * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Regenerated. * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Regenerated. * config.h.in: Regenerated. * src/Makefile.in: Regenerated. * configure: Regenerated. 2013-05-24 Jakub Jelinek * src/c++11/chrono.cc: If _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL, include unistd.h and sys/syscall.h. If _GLIBCXX_COMPATIBILITY_CXX0X, don't define system_clock::is_steady, system_clock::now() and steady_clock::is_steady. (std::chrono::system_clock::now()): If _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL, call syscall (SYS_clock_gettime, ...) instead of clock_gettime (...). (std::chrono::system_clock::now()): Likewise. Add weak attribute if _GLIBCXX_COMPATIBILITY_CXX0X and compatibility-chrono.cc will be non-empty. * src/Makefile.am (cxx11_sources): Add compatibility-chrono.cc. (compatibility-chrono.lo, compatibility-chrono.o): New goals. * src/c++11/compatibility-chrono.cc: New file. * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): On linux*, check for syscall (SYS_clock_gettime, CLOCK_MONOTONIC, &tp). * testsuite/util/testsuite_abi.cc (check_version): Add GLIBCXX_3.4.19 version and make it the latest. * config/abi/pre/gnu.ver (_ZNSt6chrono12steady_clock3nowEv): Export also @@GLIBCXX_3.4.19. * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Regenerated. * config/abi/post/s390x-linux-gnu/baseline_symbols.txt: Regenerated. * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Regenerated. * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Regenerated. * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Regenerated. * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Regenerated. * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Regenerated. * config/abi/post/s390-linux-gnu/baseline_symbols.txt: Regenerated. * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Regenerated. * config.h.in: Regenerated. * src/Makefile.in: Regenerated. * configure: Regenerated. --- libstdc++-v3/src/c++11/chrono.cc.jj 2013-03-16 08:07:57.000000000 +0100 +++ libstdc++-v3/src/c++11/chrono.cc 2013-05-23 15:33:07.238690149 +0200 @@ -22,7 +22,20 @@ // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see // . +#include + +#ifndef _GLIBCXX_USE_CLOCK_MONOTONIC +// If !_GLIBCXX_USE_CLOCK_MONOTONIC, std::chrono::steady_clock +// is just a typedef to std::chrono::system_clock, for ABI compatibility +// force it not to be a typedef now and export it anyway. Programs +// using the headers where it is a typedef will actually just use +// std::chrono::system_clock instead, and this remains here just a fallback. +#define _GLIBCXX_USE_CLOCK_MONOTONIC +#include +#undef _GLIBCXX_USE_CLOCK_MONOTONIC +#else #include +#endif #ifdef _GLIBCXX_USE_C99_STDINT_TR1 @@ -32,13 +45,18 @@ defined(_GLIBCXX_USE_GETTIMEOFDAY) #include #endif +#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL +#include +#include +#endif namespace std _GLIBCXX_VISIBILITY(default) { namespace chrono { _GLIBCXX_BEGIN_NAMESPACE_VERSION - + +#ifndef _GLIBCXX_COMPATIBILITY_CXX0X constexpr bool system_clock::is_steady; system_clock::time_point @@ -47,7 +65,11 @@ namespace std _GLIBCXX_VISIBILITY(defaul #ifdef _GLIBCXX_USE_CLOCK_REALTIME timespec tp; // -EINVAL, -EFAULT +#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL + syscall(SYS_clock_gettime, CLOCK_REALTIME, &tp); +#else clock_gettime(CLOCK_REALTIME, &tp); +#endif return time_point(duration(chrono::seconds(tp.tv_sec) + chrono::nanoseconds(tp.tv_nsec))); #elif defined(_GLIBCXX_USE_GETTIMEOFDAY) @@ -61,20 +83,48 @@ namespace std _GLIBCXX_VISIBILITY(defaul return system_clock::from_time_t(__sec); #endif } +#endif -#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC +#ifndef _GLIBCXX_COMPATIBILITY_CXX0X constexpr bool steady_clock::is_steady; +#endif +#if defined(_GLIBCXX_SYMVER_GNU) && defined(_GLIBCXX_SHARED) \ + && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \ + && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) \ + && !defined(_GLIBCXX_COMPATIBILITY_CXX0X) + __attribute__((__weak__)) +#endif steady_clock::time_point steady_clock::now() noexcept { +#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC timespec tp; // -EINVAL, -EFAULT +#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL + syscall(SYS_clock_gettime, CLOCK_MONOTONIC, &tp); +#else clock_gettime(CLOCK_MONOTONIC, &tp); +#endif return time_point(duration(chrono::seconds(tp.tv_sec) + chrono::nanoseconds(tp.tv_nsec))); - } +#elif defined(_GLIBCXX_USE_CLOCK_REALTIME) + timespec tp; + // -EINVAL, -EFAULT + clock_gettime(CLOCK_REALTIME, &tp); + return time_point(duration(chrono::seconds(tp.tv_sec) + + chrono::nanoseconds(tp.tv_nsec))); +#elif defined(_GLIBCXX_USE_GETTIMEOFDAY) + timeval tv; + // EINVAL, EFAULT + gettimeofday(&tv, 0); + return time_point(duration(chrono::seconds(tv.tv_sec) + + chrono::microseconds(tv.tv_usec))); +#else + std::time_t __sec = std::time(0); + return system_clock::from_time_t(__sec); #endif + } _GLIBCXX_END_NAMESPACE_VERSION } // namespace chrono --- libstdc++-v3/src/Makefile.am.jj 2013-03-22 15:05:13.000000000 +0100 +++ libstdc++-v3/src/Makefile.am 2013-05-23 15:18:13.030217244 +0200 @@ -50,7 +50,8 @@ cxx98_sources = \ cxx11_sources = \ compatibility-c++0x.cc \ compatibility-atomic-c++0x.cc \ - compatibility-thread-c++0x.cc + compatibility-thread-c++0x.cc \ + compatibility-chrono.cc libstdc___la_SOURCES = $(cxx98_sources) $(cxx11_sources) @@ -97,6 +98,11 @@ compatibility-thread-c++0x.lo: compatibi compatibility-thread-c++0x.o: compatibility-thread-c++0x.cc $(CXXCOMPILE) -std=gnu++11 -c $< +compatibility-chrono.lo: compatibility-chrono.cc + $(LTCXXCOMPILE) -std=gnu++11 -c $< +compatibility-chrono.o: compatibility-chrono.cc + $(CXXCOMPILE) -std=gnu++11 -c $< + # A note on compatibility and static libraries. # # static lib == linked against only this version, should not need compat --- libstdc++-v3/src/c++11/compatibility-chrono.cc.jj 2013-05-23 15:05:13.907962675 +0200 +++ libstdc++-v3/src/c++11/compatibility-chrono.cc 2013-05-23 15:33:07.238690149 +0200 @@ -0,0 +1,58 @@ +// Compatibility symbols for previous versions, C++0x bits -*- C++ -*- + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +#define _GLIBCXX_COMPATIBILITY_CXX0X +#include + +#if defined(_GLIBCXX_SYMVER_GNU) && defined(_GLIBCXX_SHARED) \ + && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE)\ + && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) + +#define steady_clock steady_clockXX +#include "chrono.cc" + +// The rename syntax for default exported names is +// asm (".symver name1,exportedname@GLIBCXX_3.4.17") +// asm (".symver name2,exportedname@@GLIBCXX_3.4.19") +// In the future, GLIBCXX_ABI > 6 should remove all uses of +// _GLIBCXX_*_SYMVER macros in this file. + +#define _GLIBCXX_3_4_17_SYMVER(XXname, name) \ + extern "C" void \ + _X##name() \ + __attribute__ ((alias(#XXname))); \ + asm (".symver " "_X" #name "," #name "@GLIBCXX_3.4.17"); + +#define _GLIBCXX_3_4_19_SYMVER(XXname, name) \ + extern "C" void \ + _Y##name() \ + __attribute__ ((alias(#XXname))); \ + asm (".symver " "_Y" #name "," #name "@@GLIBCXX_3.4.19"); + +_GLIBCXX_3_4_17_SYMVER(_ZNSt6chrono14steady_clockXX3nowEv, + _ZNSt6chrono12steady_clock3nowEv) +_GLIBCXX_3_4_19_SYMVER(_ZNSt6chrono14steady_clockXX3nowEv, + _ZNSt6chrono12steady_clock3nowEv) + +#endif --- libstdc++-v3/acinclude.m4.jj 2013-04-10 08:32:08.000000000 +0200 +++ libstdc++-v3/acinclude.m4 2013-05-23 14:13:34.546224986 +0200 @@ -1274,6 +1274,31 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME] fi fi + if test x"$ac_has_clock_monotonic" != x"yes"; then + case ${target_os} in + linux*) + AC_MSG_CHECKING([for clock_gettime syscall]) + AC_TRY_COMPILE( + [#include + #include + #include + ], + [#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) + timespec tp; + #endif + syscall(SYS_clock_gettime, CLOCK_MONOTONIC, &tp); + syscall(SYS_clock_gettime, CLOCK_REALTIME, &tp); + ], [ac_has_clock_monotonic_syscall=yes], [ac_has_clock_monotonic_syscall=no]) + AC_MSG_RESULT($ac_has_clock_monotonic_syscall) + if test x"$ac_has_clock_monotonic_syscall" = x"yes"; then + AC_DEFINE(_GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL, 1, + [ Defined if clock_gettime syscall has monotonic clock support. ]) + ac_has_clock_monotonic=yes + ac_has_clock_realtime=yes + fi;; + esac + fi + if test x"$ac_has_clock_monotonic" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_CLOCK_MONOTONIC, 1, [ Defined if clock_gettime has monotonic clock support. ]) --- libstdc++-v3/testsuite/util/testsuite_abi.cc.jj 2013-03-16 08:09:29.000000000 +0100 +++ libstdc++-v3/testsuite/util/testsuite_abi.cc 2013-05-23 15:37:48.226285549 +0200 @@ -195,6 +195,7 @@ check_version(symbol& test, bool added) known_versions.push_back("GLIBCXX_3.4.16"); known_versions.push_back("GLIBCXX_3.4.17"); known_versions.push_back("GLIBCXX_3.4.18"); + known_versions.push_back("GLIBCXX_3.4.19"); known_versions.push_back("GLIBCXX_LDBL_3.4"); known_versions.push_back("GLIBCXX_LDBL_3.4.7"); known_versions.push_back("GLIBCXX_LDBL_3.4.10"); @@ -223,7 +224,7 @@ check_version(symbol& test, bool added) test.version_status = symbol::incompatible; // Check that added symbols are added in the latest pre-release version. - bool latestp = (test.version_name == "GLIBCXX_3.4.18" + bool latestp = (test.version_name == "GLIBCXX_3.4.19" || test.version_name == "CXXABI_1.3.7" || test.version_name == "CXXABI_TM_1"); if (added && !latestp) --- libstdc++-v3/config/abi/pre/gnu.ver.jj 2013-03-16 08:09:38.000000000 +0100 +++ libstdc++-v3/config/abi/pre/gnu.ver 2013-05-23 15:29:15.511112789 +0200 @@ -1303,9 +1303,6 @@ GLIBCXX_3.4.17 { _ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb; _ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv; - # std::chrono::steady_clock::now() - _ZNSt6chrono12steady_clock3nowEv; - # std::numeric_limits<__int128> and _ZNSt14numeric_limitsInE*; _ZNSt14numeric_limitsIoE*; @@ -1323,6 +1320,12 @@ GLIBCXX_3.4.17 { _ZNSt13__future_base19_Async_state_commonD1Ev; _ZNSt13__future_base19_Async_state_commonD2Ev; +#ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT + # GLIBCXX_ABI compatibility only. + # std::chrono::steady_clock::now() + _ZNSt6chrono12steady_clock3nowEv; +#endif + } GLIBCXX_3.4.16; GLIBCXX_3.4.18 { @@ -1344,6 +1347,13 @@ GLIBCXX_3.4.18 { } GLIBCXX_3.4.17; +GLIBCXX_3.4.19 { + + # std::chrono::steady_clock::now() + _ZNSt6chrono12steady_clock3nowEv; + +} GLIBCXX_3.4.18; + # Symbols in the support library (libsupc++) have their own tag. CXXABI_1.3 { --- libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt.jj 2013-03-16 08:09:37.423570786 +0100 +++ libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt 2013-05-23 15:43:37.846877915 +0200 @@ -1938,6 +1938,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2514,6 +2516,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt.jj 2013-03-16 08:09:36.882574033 +0100 +++ libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt 2013-05-23 15:45:51.432944873 +0200 @@ -2128,6 +2128,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2748,6 +2750,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt.jj 2013-03-16 08:09:37.648569439 +0100 +++ libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt 2013-05-23 15:45:08.736291429 +0200 @@ -2128,6 +2128,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2748,6 +2750,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt.jj 2013-03-16 08:09:37.489570393 +0100 +++ libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt 2013-05-23 15:45:13.783372530 +0200 @@ -2128,6 +2128,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2748,6 +2750,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt.jj 2013-03-16 08:09:36.000000000 +0100 +++ libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt 2013-05-23 15:41:27.344826481 +0200 @@ -1938,6 +1938,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2514,6 +2516,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt.jj 2013-03-16 08:09:35.000000000 +0100 +++ libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt 2013-05-23 15:41:36.474966903 +0200 @@ -1938,6 +1938,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2514,6 +2516,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt.jj 2013-03-16 08:09:36.175578273 +0100 +++ libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt 2013-05-23 15:44:36.216771955 +0200 @@ -2128,6 +2128,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2748,6 +2750,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt.jj 2013-03-16 08:09:35.702581217 +0100 +++ libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt 2013-05-23 15:45:32.397667896 +0200 @@ -2128,6 +2128,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2748,6 +2750,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt.jj 2013-03-16 08:09:38.030567148 +0100 +++ libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt 2013-05-23 15:43:55.152138816 +0200 @@ -1938,6 +1938,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2514,6 +2516,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config.h.in.jj 2013-04-10 08:32:08.000000000 +0200 +++ libstdc++-v3/config.h.in 2013-05-23 14:10:35.000000000 +0200 @@ -813,6 +813,9 @@ /* Defined if clock_gettime has monotonic clock support. */ #undef _GLIBCXX_USE_CLOCK_MONOTONIC +/* Defined if clock_gettime syscall has monotonic clock support. */ +#undef _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL + /* Defined if clock_gettime has realtime clock support. */ #undef _GLIBCXX_USE_CLOCK_REALTIME --- libstdc++-v3/src/Makefile.in.jj 2013-03-22 15:05:13.000000000 +0100 +++ libstdc++-v3/src/Makefile.in 2013-05-23 15:19:26.341768018 +0200 @@ -93,7 +93,7 @@ am__DEPENDENCIES_1 = am__objects_2 = compatibility.lo compatibility-debug_list.lo \ compatibility-debug_list-2.lo $(am__objects_1) am__objects_3 = compatibility-c++0x.lo compatibility-atomic-c++0x.lo \ - compatibility-thread-c++0x.lo + compatibility-thread-c++0x.lo compatibility-chrono.lo am_libstdc___la_OBJECTS = $(am__objects_2) $(am__objects_3) libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) @@ -351,7 +351,8 @@ cxx98_sources = \ cxx11_sources = \ compatibility-c++0x.cc \ compatibility-atomic-c++0x.cc \ - compatibility-thread-c++0x.cc + compatibility-thread-c++0x.cc \ + compatibility-chrono.cc libstdc___la_SOURCES = $(cxx98_sources) $(cxx11_sources) libstdc___la_LIBADD = \ @@ -848,6 +849,11 @@ compatibility-thread-c++0x.lo: compatibi compatibility-thread-c++0x.o: compatibility-thread-c++0x.cc $(CXXCOMPILE) -std=gnu++11 -c $< +compatibility-chrono.lo: compatibility-chrono.cc + $(LTCXXCOMPILE) -std=gnu++11 -c $< +compatibility-chrono.o: compatibility-chrono.cc + $(CXXCOMPILE) -std=gnu++11 -c $< + # Symbol versioning for shared libraries. @ENABLE_SYMVERS_TRUE@libstdc++-symbols.ver: ${glibcxx_srcdir}/$(SYMVER_FILE) \ @ENABLE_SYMVERS_TRUE@ $(port_specific_symbol_files) --- libstdc++-v3/configure.jj 2013-04-10 08:32:08.000000000 +0200 +++ libstdc++-v3/configure 2013-05-23 14:16:06.508039167 +0200 @@ -19828,6 +19828,48 @@ $as_echo "$ac_has_nanosleep" >&6; } fi fi + if test x"$ac_has_clock_monotonic" != x"yes"; then + case ${target_os} in + linux*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime syscall" >&5 +$as_echo_n "checking for clock_gettime syscall... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + +int +main () +{ +#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) + timespec tp; + #endif + syscall(SYS_clock_gettime, CLOCK_MONOTONIC, &tp); + syscall(SYS_clock_gettime, CLOCK_REALTIME, &tp); + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_has_clock_monotonic_syscall=yes +else + ac_has_clock_monotonic_syscall=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_has_clock_monotonic_syscall" >&5 +$as_echo "$ac_has_clock_monotonic_syscall" >&6; } + if test x"$ac_has_clock_monotonic_syscall" = x"yes"; then + +$as_echo "#define _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL 1" >>confdefs.h + + ac_has_clock_monotonic=yes + ac_has_clock_realtime=yes + fi;; + esac + fi + if test x"$ac_has_clock_monotonic" = x"yes"; then $as_echo "#define _GLIBCXX_USE_CLOCK_MONOTONIC 1" >>confdefs.h --- libstdc++-v3/src/c++11/chrono.cc.jj 2013-02-04 18:15:15.078395533 +0100 +++ libstdc++-v3/src/c++11/chrono.cc 2013-05-23 18:06:40.562825017 +0200 @@ -22,7 +22,20 @@ // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see // . +#include + +#ifndef _GLIBCXX_USE_CLOCK_MONOTONIC +// If !_GLIBCXX_USE_CLOCK_MONOTONIC, std::chrono::steady_clock +// is just a typedef to std::chrono::system_clock, for ABI compatibility +// force it not to be a typedef now and export it anyway. Programs +// using the headers where it is a typedef will actually just use +// std::chrono::system_clock instead, and this remains here just a fallback. +#define _GLIBCXX_USE_CLOCK_MONOTONIC +#include +#undef _GLIBCXX_USE_CLOCK_MONOTONIC +#else #include +#endif #ifdef _GLIBCXX_USE_C99_STDINT_TR1 @@ -32,13 +45,18 @@ defined(_GLIBCXX_USE_GETTIMEOFDAY) #include #endif +#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL +#include +#include +#endif namespace std _GLIBCXX_VISIBILITY(default) { namespace chrono { _GLIBCXX_BEGIN_NAMESPACE_VERSION - + +#ifndef _GLIBCXX_COMPATIBILITY_CXX0X constexpr bool system_clock::is_steady; system_clock::time_point @@ -47,7 +65,11 @@ namespace std _GLIBCXX_VISIBILITY(defaul #ifdef _GLIBCXX_USE_CLOCK_REALTIME timespec tp; // -EINVAL, -EFAULT +#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL + syscall(SYS_clock_gettime, CLOCK_REALTIME, &tp); +#else clock_gettime(CLOCK_REALTIME, &tp); +#endif return time_point(duration(chrono::seconds(tp.tv_sec) + chrono::nanoseconds(tp.tv_nsec))); #elif defined(_GLIBCXX_USE_GETTIMEOFDAY) @@ -61,20 +83,48 @@ namespace std _GLIBCXX_VISIBILITY(defaul return system_clock::from_time_t(__sec); #endif } +#endif -#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC +#ifndef _GLIBCXX_COMPATIBILITY_CXX0X constexpr bool steady_clock::is_steady; +#endif +#if defined(_GLIBCXX_SYMVER_GNU) && defined(_GLIBCXX_SHARED) \ + && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE) \ + && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) \ + && !defined(_GLIBCXX_COMPATIBILITY_CXX0X) + __attribute__((__weak__)) +#endif steady_clock::time_point steady_clock::now() noexcept { +#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC timespec tp; // -EINVAL, -EFAULT +#ifdef _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL + syscall(SYS_clock_gettime, CLOCK_MONOTONIC, &tp); +#else clock_gettime(CLOCK_MONOTONIC, &tp); +#endif return time_point(duration(chrono::seconds(tp.tv_sec) + chrono::nanoseconds(tp.tv_nsec))); - } +#elif defined(_GLIBCXX_USE_CLOCK_REALTIME) + timespec tp; + // -EINVAL, -EFAULT + clock_gettime(CLOCK_REALTIME, &tp); + return time_point(duration(chrono::seconds(tp.tv_sec) + + chrono::nanoseconds(tp.tv_nsec))); +#elif defined(_GLIBCXX_USE_GETTIMEOFDAY) + timeval tv; + // EINVAL, EFAULT + gettimeofday(&tv, 0); + return time_point(duration(chrono::seconds(tv.tv_sec) + + chrono::microseconds(tv.tv_usec))); +#else + std::time_t __sec = std::time(0); + return system_clock::from_time_t(__sec); #endif + } _GLIBCXX_END_NAMESPACE_VERSION } // namespace chrono --- libstdc++-v3/src/Makefile.am.jj 2013-02-14 20:11:41.491575233 +0100 +++ libstdc++-v3/src/Makefile.am 2013-05-23 18:06:40.578824061 +0200 @@ -50,7 +50,8 @@ cxx98_sources = \ cxx11_sources = \ compatibility-c++0x.cc \ compatibility-atomic-c++0x.cc \ - compatibility-thread-c++0x.cc + compatibility-thread-c++0x.cc \ + compatibility-chrono.cc libstdc___la_SOURCES = $(cxx98_sources) $(cxx11_sources) @@ -97,6 +98,11 @@ compatibility-thread-c++0x.lo: compatibi compatibility-thread-c++0x.o: compatibility-thread-c++0x.cc $(CXXCOMPILE) -std=gnu++11 -c $< +compatibility-chrono.lo: compatibility-chrono.cc + $(LTCXXCOMPILE) -std=gnu++11 -c $< +compatibility-chrono.o: compatibility-chrono.cc + $(CXXCOMPILE) -std=gnu++11 -c $< + # A note on compatibility and static libraries. # # static lib == linked against only this version, should not need compat --- libstdc++-v3/src/c++11/compatibility-chrono.cc.jj 2013-05-23 18:06:40.585823828 +0200 +++ libstdc++-v3/src/c++11/compatibility-chrono.cc 2013-05-23 18:06:40.585823828 +0200 @@ -0,0 +1,58 @@ +// Compatibility symbols for previous versions, C++0x bits -*- C++ -*- + +// Copyright (C) 2013 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +#define _GLIBCXX_COMPATIBILITY_CXX0X +#include + +#if defined(_GLIBCXX_SYMVER_GNU) && defined(_GLIBCXX_SHARED) \ + && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE)\ + && defined(_GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT) + +#define steady_clock steady_clockXX +#include "chrono.cc" + +// The rename syntax for default exported names is +// asm (".symver name1,exportedname@GLIBCXX_3.4.17") +// asm (".symver name2,exportedname@@GLIBCXX_3.4.19") +// In the future, GLIBCXX_ABI > 6 should remove all uses of +// _GLIBCXX_*_SYMVER macros in this file. + +#define _GLIBCXX_3_4_17_SYMVER(XXname, name) \ + extern "C" void \ + _X##name() \ + __attribute__ ((alias(#XXname))); \ + asm (".symver " "_X" #name "," #name "@GLIBCXX_3.4.17"); + +#define _GLIBCXX_3_4_19_SYMVER(XXname, name) \ + extern "C" void \ + _Y##name() \ + __attribute__ ((alias(#XXname))); \ + asm (".symver " "_Y" #name "," #name "@@GLIBCXX_3.4.19"); + +_GLIBCXX_3_4_17_SYMVER(_ZNSt6chrono14steady_clockXX3nowEv, + _ZNSt6chrono12steady_clock3nowEv) +_GLIBCXX_3_4_19_SYMVER(_ZNSt6chrono14steady_clockXX3nowEv, + _ZNSt6chrono12steady_clock3nowEv) + +#endif --- libstdc++-v3/acinclude.m4.jj 2013-05-23 18:06:19.841949134 +0200 +++ libstdc++-v3/acinclude.m4 2013-05-23 18:06:40.586823808 +0200 @@ -1322,6 +1322,31 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME] fi fi + if test x"$ac_has_clock_monotonic" != x"yes"; then + case ${target_os} in + linux*) + AC_MSG_CHECKING([for clock_gettime syscall]) + AC_TRY_COMPILE( + [#include + #include + #include + ], + [#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) + timespec tp; + #endif + syscall(SYS_clock_gettime, CLOCK_MONOTONIC, &tp); + syscall(SYS_clock_gettime, CLOCK_REALTIME, &tp); + ], [ac_has_clock_monotonic_syscall=yes], [ac_has_clock_monotonic_syscall=no]) + AC_MSG_RESULT($ac_has_clock_monotonic_syscall) + if test x"$ac_has_clock_monotonic_syscall" = x"yes"; then + AC_DEFINE(_GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL, 1, + [ Defined if clock_gettime syscall has monotonic clock support. ]) + ac_has_clock_monotonic=yes + ac_has_clock_realtime=yes + fi;; + esac + fi + if test x"$ac_has_clock_monotonic" = x"yes"; then AC_DEFINE(_GLIBCXX_USE_CLOCK_MONOTONIC, 1, [ Defined if clock_gettime has monotonic clock support. ]) --- libstdc++-v3/testsuite/util/testsuite_abi.cc.jj 2013-05-10 10:36:28.000000000 +0200 +++ libstdc++-v3/testsuite/util/testsuite_abi.cc 2013-05-23 18:12:15.933965878 +0200 @@ -199,6 +199,7 @@ check_version(symbol& test, bool added) known_versions.push_back("GLIBCXX_3.4.17"); known_versions.push_back("GLIBCXX_3.4.18"); known_versions.push_back("GLIBCXX_3.4.19"); + known_versions.push_back("GLIBCXX_3.4.20"); known_versions.push_back("CXXABI_1.3"); known_versions.push_back("CXXABI_LDBL_1.3"); known_versions.push_back("CXXABI_1.3.1"); @@ -225,7 +226,7 @@ check_version(symbol& test, bool added) test.version_status = symbol::incompatible; // Check that added symbols are added in the latest pre-release version. - bool latestp = (test.version_name == "GLIBCXX_3.4.19" + bool latestp = (test.version_name == "GLIBCXX_3.4.20" || test.version_name == "CXXABI_1.3.8" || test.version_name == "CXXABI_TM_1"); if (added && !latestp) --- libstdc++-v3/config/abi/pre/gnu.ver.jj 2013-05-10 10:36:28.640688086 +0200 +++ libstdc++-v3/config/abi/pre/gnu.ver 2013-05-23 18:11:51.087096178 +0200 @@ -1303,9 +1303,6 @@ GLIBCXX_3.4.17 { _ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb; _ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv; - # std::chrono::steady_clock::now() - _ZNSt6chrono12steady_clock3nowEv; - # std::numeric_limits<__int128> and _ZNSt14numeric_limitsInE*; _ZNSt14numeric_limitsIoE*; @@ -1323,6 +1320,12 @@ GLIBCXX_3.4.17 { _ZNSt13__future_base19_Async_state_commonD1Ev; _ZNSt13__future_base19_Async_state_commonD2Ev; +#ifdef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT + # GLIBCXX_ABI compatibility only. + # std::chrono::steady_clock::now() + _ZNSt6chrono12steady_clock3nowEv; +#endif + } GLIBCXX_3.4.16; GLIBCXX_3.4.18 { @@ -1345,6 +1345,13 @@ GLIBCXX_3.4.18 { } GLIBCXX_3.4.17; GLIBCXX_3.4.19 { + + # std::chrono::steady_clock::now() + _ZNSt6chrono12steady_clock3nowEv; + +} GLIBCXX_3.4.18; + +GLIBCXX_3.4.20 { # std::get_new_handler() _ZSt15get_new_handlerv; @@ -1355,7 +1360,7 @@ GLIBCXX_3.4.19 { # std::get_unexpected() _ZSt14get_unexpectedv; -} GLIBCXX_3.4.18; +} GLIBCXX_3.4.19; # Symbols in the support library (libsupc++) have their own tag. CXXABI_1.3 { --- libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt.jj 2013-03-07 16:47:15.756981144 +0100 +++ libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt 2013-05-23 18:06:40.635823435 +0200 @@ -1938,6 +1938,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2514,6 +2516,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt.jj 2013-03-07 16:47:15.917980229 +0100 +++ libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt 2013-05-23 18:06:40.662823272 +0200 @@ -2128,6 +2128,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2748,6 +2750,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt.jj 2013-03-07 16:47:15.871980491 +0100 +++ libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt 2013-05-23 18:06:40.689823108 +0200 @@ -2128,6 +2128,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2748,6 +2750,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt.jj 2013-03-07 16:47:15.847980627 +0100 +++ libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt 2013-05-23 18:06:40.717822939 +0200 @@ -2128,6 +2128,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2748,6 +2750,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt.jj 2013-03-07 16:47:16.001979751 +0100 +++ libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt 2013-05-23 18:06:40.739822806 +0200 @@ -1938,6 +1938,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2514,6 +2516,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt.jj 2013-03-07 16:47:15.953980024 +0100 +++ libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt 2013-05-23 18:06:40.763822661 +0200 @@ -1938,6 +1938,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2514,6 +2516,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt.jj 2013-03-07 16:47:15.884980416 +0100 +++ libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt 2013-05-23 18:06:40.782822546 +0200 @@ -2128,6 +2128,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2748,6 +2750,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt.jj 2013-03-07 16:47:15.892980371 +0100 +++ libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt 2013-05-23 18:06:40.792822486 +0200 @@ -2128,6 +2128,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2748,6 +2750,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt.jj 2013-03-07 16:47:15.807980856 +0100 +++ libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt 2013-05-23 18:06:40.806822401 +0200 @@ -1938,6 +1938,8 @@ FUNC:_ZNSt6__norm15_List_node_base7rever FUNC:_ZNSt6__norm15_List_node_base8transferEPS0_S1_@@GLIBCXX_3.4.9 FUNC:_ZNSt6__norm15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.14 FUNC:_ZNSt6chrono12system_clock3nowEv@@GLIBCXX_3.4.11 +FUNC:_ZNSt6chrono12steady_clock3nowEv@@GLIBCXX_3.4.19 +FUNC:_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17 FUNC:_ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@@GLIBCXX_3.4 FUNC:_ZNSt6locale11_M_coalesceERKS_S1_i@@GLIBCXX_3.4 @@ -2514,6 +2516,7 @@ OBJECT:0:GLIBCXX_3.4.15 OBJECT:0:GLIBCXX_3.4.16 OBJECT:0:GLIBCXX_3.4.17 OBJECT:0:GLIBCXX_3.4.18 +OBJECT:0:GLIBCXX_3.4.19 OBJECT:0:GLIBCXX_3.4.2 OBJECT:0:GLIBCXX_3.4.3 OBJECT:0:GLIBCXX_3.4.4 --- libstdc++-v3/config.h.in.jj 2013-04-10 08:32:04.601960092 +0200 +++ libstdc++-v3/config.h.in 2013-05-23 18:06:40.828822268 +0200 @@ -813,6 +813,9 @@ /* Defined if clock_gettime has monotonic clock support. */ #undef _GLIBCXX_USE_CLOCK_MONOTONIC +/* Defined if clock_gettime syscall has monotonic clock support. */ +#undef _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL + /* Defined if clock_gettime has realtime clock support. */ #undef _GLIBCXX_USE_CLOCK_REALTIME --- libstdc++-v3/src/Makefile.in.jj 2013-02-14 20:11:41.438575540 +0100 +++ libstdc++-v3/src/Makefile.in 2013-05-23 18:06:40.844822172 +0200 @@ -93,7 +93,7 @@ am__DEPENDENCIES_1 = am__objects_2 = compatibility.lo compatibility-debug_list.lo \ compatibility-debug_list-2.lo $(am__objects_1) am__objects_3 = compatibility-c++0x.lo compatibility-atomic-c++0x.lo \ - compatibility-thread-c++0x.lo + compatibility-thread-c++0x.lo compatibility-chrono.lo am_libstdc___la_OBJECTS = $(am__objects_2) $(am__objects_3) libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) @@ -351,7 +351,8 @@ cxx98_sources = \ cxx11_sources = \ compatibility-c++0x.cc \ compatibility-atomic-c++0x.cc \ - compatibility-thread-c++0x.cc + compatibility-thread-c++0x.cc \ + compatibility-chrono.cc libstdc___la_SOURCES = $(cxx98_sources) $(cxx11_sources) libstdc___la_LIBADD = \ @@ -848,6 +849,11 @@ compatibility-thread-c++0x.lo: compatibi compatibility-thread-c++0x.o: compatibility-thread-c++0x.cc $(CXXCOMPILE) -std=gnu++11 -c $< +compatibility-chrono.lo: compatibility-chrono.cc + $(LTCXXCOMPILE) -std=gnu++11 -c $< +compatibility-chrono.o: compatibility-chrono.cc + $(CXXCOMPILE) -std=gnu++11 -c $< + # Symbol versioning for shared libraries. @ENABLE_SYMVERS_TRUE@libstdc++-symbols.ver: ${glibcxx_srcdir}/$(SYMVER_FILE) \ @ENABLE_SYMVERS_TRUE@ $(port_specific_symbol_files) --- libstdc++-v3/configure.jj 2013-05-23 18:06:19.685950078 +0200 +++ libstdc++-v3/configure 2013-05-23 18:06:40.862822063 +0200 @@ -19883,6 +19883,48 @@ $as_echo "$ac_has_nanosleep" >&6; } fi fi + if test x"$ac_has_clock_monotonic" != x"yes"; then + case ${target_os} in + linux*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime syscall" >&5 +$as_echo_n "checking for clock_gettime syscall... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + +int +main () +{ +#if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) + timespec tp; + #endif + syscall(SYS_clock_gettime, CLOCK_MONOTONIC, &tp); + syscall(SYS_clock_gettime, CLOCK_REALTIME, &tp); + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_has_clock_monotonic_syscall=yes +else + ac_has_clock_monotonic_syscall=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_has_clock_monotonic_syscall" >&5 +$as_echo "$ac_has_clock_monotonic_syscall" >&6; } + if test x"$ac_has_clock_monotonic_syscall" = x"yes"; then + +$as_echo "#define _GLIBCXX_USE_CLOCK_MONOTONIC_SYSCALL 1" >>confdefs.h + + ac_has_clock_monotonic=yes + ac_has_clock_realtime=yes + fi;; + esac + fi + if test x"$ac_has_clock_monotonic" = x"yes"; then $as_echo "#define _GLIBCXX_USE_CLOCK_MONOTONIC 1" >>confdefs.h