libstdc++: Mark pieces of gnu-linux/os_support.h linux-specific
This is notably needed because in glibc 2.34, the move of pthread functions into libc.so happened for Linux only, not GNU/Hurd. The pthread_self() function can also always be used fine as it is on GNU/Hurd. libstdc++-v3/ChangeLog: * config/os/gnu-linux/os_defines.h [!__linux__] (_GLIBCXX_NATIVE_THREAD_ID, _GLIBCXX_GTHREAD_USE_WEAK): Do not define. Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
This commit is contained in:
parent
8d2c5b6101
commit
f0065f207c
1 changed files with 13 additions and 9 deletions
|
@ -60,22 +60,26 @@
|
|||
# define _GLIBCXX_HAVE_FLOAT128_MATH 1
|
||||
#endif
|
||||
|
||||
#if __GLIBC_PREREQ(2, 27)
|
||||
#ifdef __linux__
|
||||
// The following libpthread properties only apply to Linux, not GNU/Hurd.
|
||||
|
||||
# if __GLIBC_PREREQ(2, 27)
|
||||
// Since glibc 2.27 pthread_self() is usable without linking to libpthread.
|
||||
# define _GLIBCXX_NATIVE_THREAD_ID pthread_self()
|
||||
#else
|
||||
# define _GLIBCXX_NATIVE_THREAD_ID pthread_self()
|
||||
# else
|
||||
// Before then it was in libc.so.6 but not libc.a, and always returns 0,
|
||||
// which breaks the invariant this_thread::get_id() != thread::id{}.
|
||||
// So only use it if we know the libpthread version is available.
|
||||
// Otherwise use (__gthread_t)1 as the ID of the main (and only) thread.
|
||||
# define _GLIBCXX_NATIVE_THREAD_ID \
|
||||
(__gthread_active_p() ? __gthread_self() : (__gthread_t)1)
|
||||
#endif
|
||||
# define _GLIBCXX_NATIVE_THREAD_ID \
|
||||
(__gthread_active_p() ? __gthread_self() : (__gthread_t)1)
|
||||
# endif
|
||||
|
||||
#if __GLIBC_PREREQ(2, 34)
|
||||
# if __GLIBC_PREREQ(2, 34)
|
||||
// Since glibc 2.34 all pthreads functions are usable without linking to
|
||||
// libpthread.
|
||||
# define _GLIBCXX_GTHREAD_USE_WEAK 0
|
||||
#endif
|
||||
# define _GLIBCXX_GTHREAD_USE_WEAK 0
|
||||
# endif
|
||||
#endif // __linux__
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue