On 22 September 2016 at 13:15, Jonathan Wakely <jwak...@redhat.com> wrote: > On 22/09/16 11:16 +0100, Jonathan Wakely wrote: >> >> (Somebody should fix PR58938 so exception_ptr is portable). > > > Christophe, would you be able to test this patch? > > It uses a single global mutex for exception_ptr objects, which doesn't > scale well but that probably isn't a problem for processors without > lock-free atomics for single words. > > This also solves the problem of mismatched -march options, where the > header is compiled for a CPU that supports the atomics but > libstdc++.so was built for an older CPU that doesn't support them, and > linking fails (as in https://gcc.gnu.org/PR58938#c13). > > Hi Jonathan,
This is not quite right. In most cases, it moves 18_support/exception_ptr/requirements_neg.cc (test for errors, line 30) to line 27 (not sure why, since you removed 1 line only) but on older arm architectures, the tests you updated fail to compile: 18_support/exception_ptr/40296.cc (test for excess errors) 18_support/exception_ptr/60612-terminate.cc (test for excess errors) 18_support/exception_ptr/60612-unexpected.cc (test for excess errors) 18_support/exception_ptr/62258.cc (test for excess errors) 18_support/exception_ptr/64241.cc (test for excess errors) 18_support/exception_ptr/current_exception.cc (test for excess errors) 18_support/exception_ptr/lifespan.cc (test for excess errors) 18_support/exception_ptr/make_exception_ptr.cc (test for excess errors) 18_support/exception_ptr/move.cc (test for excess errors) 18_support/exception_ptr/requirements.cc (test for excess errors) 18_support/exception_ptr/requirements_neg.cc (test for errors, line 27) 18_support/exception_ptr/requirements_neg.cc (test for errors, line 28) 18_support/exception_ptr/requirements_neg.cc (test for errors, line 29) 18_support/exception_ptr/requirements_neg.cc (test for excess errors) 18_support/exception_ptr/rethrow_exception.cc (test for excess errors) For instance: /aci-gcc-fsf/sources/gcc-fsf/gccsrc/libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc: In function 'bool test01()': /aci-gcc-fsf/sources/gcc-fsf/gccsrc/libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc:25: error: 'exception_ptr' is not a member of 'std' /aci-gcc-fsf/sources/gcc-fsf/gccsrc/libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc:25: note: suggested alternative: 'fexcept_t' /aci-gcc-fsf/sources/gcc-fsf/gccsrc/libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc:27: error: 'p' was not declared in this scope /aci-gcc-fsf/sources/gcc-fsf/gccsrc/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc: In function 'void f()': /aci-gcc-fsf/sources/gcc-fsf/gccsrc/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc:34: error: 'rethrow_exception' is not a member of 'std' /aci-gcc-fsf/sources/gcc-fsf/gccsrc/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc:34: note: suggested alternative: '__exception' /aci-gcc-fsf/sources/gcc-fsf/gccsrc/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc:34: error: 'current_exception' is not a member of 'std' /aci-gcc-fsf/sources/gcc-fsf/gccsrc/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc:34: note: suggested alternative: '_ZTISt9exception' For more details: http://people.linaro.org/~christophe.lyon/cross-validation/gcc-test-patches/240339-pr58938-v2/report-build-info.html Thanks, Christophe