From: Mark Wielaard Date: Sat, 2 Apr 2016 22:07:59 +0000 (+0000) Subject: drd/tests/std_thread[2].cpp rename execute_native_thread_routine. X-Git-Tag: svn/VALGRIND_3_12_0~181 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f2369cbf31f46fb19bec8e9444ad8a11a887dd51;p=thirdparty%2Fvalgrind.git drd/tests/std_thread[2].cpp rename execute_native_thread_routine. Both tests define a execute_native_thread_routine function that we took from libstdc++. Unfortunately because of a bug this function is not local in some versions of libstdc++ and so our similar named function will clash when trying to link. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70476#c2 Simply rename our version to work around this. Since we don't build this part of the test code for gcc >= 6, this issue only happens if the buggy libstdc++ thread code is used together with gcc 5. This is the case with for example devtoolset-4-gcc-5. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15842 --- diff --git a/drd/tests/std_thread.cpp b/drd/tests/std_thread.cpp index 6af7455b5b..27f9e2caad 100644 --- a/drd/tests/std_thread.cpp +++ b/drd/tests/std_thread.cpp @@ -26,7 +26,7 @@ int main(int argc, char** argv) // From libstdc++-v3/src/c++11/thread.cc // -extern "C" void* execute_native_thread_routine(void* __p) +extern "C" void* _v_execute_native_thread_routine(void* __p) { std::thread::_Impl_base* __t = static_cast(__p); std::thread::__shared_base_type __local; @@ -58,7 +58,7 @@ namespace std #endif __b->_M_this_ptr = __b; - int __e = __gthread_create(&_M_id._M_thread, execute_native_thread_routine, + int __e = __gthread_create(&_M_id._M_thread, _v_execute_native_thread_routine, __b.get()); if (__e) { __b->_M_this_ptr.reset(); diff --git a/drd/tests/std_thread2.cpp b/drd/tests/std_thread2.cpp index 7de4f9d862..5a4aff9294 100644 --- a/drd/tests/std_thread2.cpp +++ b/drd/tests/std_thread2.cpp @@ -31,7 +31,7 @@ int main(int argc, char** argv) // From libstdc++-v3/src/c++11/thread.cc // -extern "C" void* execute_native_thread_routine(void* __p) +extern "C" void* _v_execute_native_thread_routine(void* __p) { std::thread::_Impl_base* __t = static_cast(__p); std::thread::__shared_base_type __local; @@ -63,7 +63,7 @@ namespace std #endif __b->_M_this_ptr = __b; - int __e = __gthread_create(&_M_id._M_thread, execute_native_thread_routine, + int __e = __gthread_create(&_M_id._M_thread, _v_execute_native_thread_routine, __b.get()); if (__e) { __b->_M_this_ptr.reset();