On 28 May 2013 17:10, Steve Ellcey wrote:
> On Wed, 2013-05-22 at 09:14 +0100, Jonathan Wakely wrote:
>> This alters the configure script to enable C++11 thread library
>> features based on targets that are known to support the features,
>> rather than based on link tests which are disabled by default.  With
>> Glibc 2.17 this enables a nanosecond resolution std::system_clock in
>> the default configuration, yay!
>>
>> I've tested this on two versions of Fedora and Debian, but would be
>> grateful for test results on Solaris, Cygwin and BSD targets, and for
>> cross-compilers to any of those targets.
>>
>>         * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Add KIND=auto to
>>         enable features if target OS is known to support them.
>>         * configure.ac (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Default to 'auto'.
>>         * configure: Regenerate.
>>
>>
>> Tested x86_64-linux, committed to trunk.
>
> Jonathan,
>
> This has broken the mips-mti-elf build for me,

I don't think it was my patch that broke it, because
compatibility-chrono.cc didn't exist when my patch went in  :-)


> this target uses newlib
> and I am building with the latest newlib sources as well as the latest
> GCC sources.  I don't know if this is related to the problem that others
> have had or not.  I saw emails about test failures but not about build
> failures.  The problem I get when building a x86 to mips cross compiler
> is:
>
> /local/home/sellcey/nightly2/src/gcc/libstdc++-v3/src/c++11/compatibility-chrono.cc:
>  In static member function 'static std::chrono::system_clock::time_point 
> std::chrono::system_clock::now()':
> /local/home/sellcey/nightly2/src/gcc/libstdc++-v3/src/c++11/compatibility-chrono.cc:81:14:
>  error: 'from_time_t' is not a member of 'std::chrono::system_clock'
>        return system_clock::from_time_t(__sec);
>               ^
> /local/home/sellcey/nightly2/src/gcc/libstdc++-v3/src/c++11/compatibility-chrono.cc:83:5:
>  warning: control reaches end of non-void function [-Wreturn-type]
>      }
>
> I will dig around some more but I thought I would see if you had any
> ideas on what the problem was and how to fix it.

Does this help?

--- src/c++11/compatibility-chrono.cc.orig      2013-05-28
17:27:54.631919423 +0100
+++ src/c++11/compatibility-chrono.cc   2013-05-28 17:28:43.697861786 +0100
@@ -78,7 +78,9 @@
                                 + chrono::microseconds(tv.tv_usec)));
 #else
       std::time_t __sec = std::time(0);
-      return system_clock::from_time_t(__sec);
+      typedef chrono::time_point<system_clock, seconds>        __from;
+      return time_point_cast<system_clock::duration>
+              (__from(chrono::seconds(__sec)));
 #endif
     }

Reply via email to