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
// 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<std::thread::_Impl_base*>(__p);
std::thread::__shared_base_type __local;
#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();
// 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<std::thread::_Impl_base*>(__p);
std::thread::__shared_base_type __local;
#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();