diff options
author | Jerome Lambourg <lambourg@adacore.com> | 2019-12-20 09:30:48 +0000 |
---|---|---|
committer | Jerome Lambourg <lambourg@gcc.gnu.org> | 2019-12-20 09:30:48 +0000 |
commit | 7607ff49afaa8fc1bdd506c4d68862f350a2f05f (patch) | |
tree | af17ece8ed22d252f36dec0a24b9ed18bb232f87 | |
parent | 211c667faf4edff934894776ac0f8c81fe1b1708 (diff) |
libstdc++: Strengthen the check for availability of pthread_rwlock_t
* acinclude.m4 (_GLIBCXX_USE_PTHREAD_RWLOCK_T): Checks that
_PTHREADS is defined after including gthr.h.
* configure: Regenerate.
From-SVN: r279635
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/acinclude.m4 | 32 | ||||
-rwxr-xr-x | libstdc++-v3/configure | 29 |
3 files changed, 56 insertions, 11 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 91d60d0bff4..126f3d386b5 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2019-12-20 Jerome Lambourg <lambourg@adacore.com> + + * acinclude.m4 (_GLIBCXX_USE_PTHREAD_RWLOCK_T): Checks that _PTHREADS + is defined after including gthr.h. + * configure: Regenerate. + 2019-12-12 Jonathan Wakely <jwakely@redhat.com> * libsupc++/compare (common_comparison_category): Define without using diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 016b0c583d0..8401696b5b5 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -1410,7 +1410,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [ [#include <features.h>], [ #if ! __GLIBC_PREREQ(2, 17) - #error + #error #endif ], [glibcxx_glibc217=yes], [glibcxx_glibc217=no]) @@ -2163,7 +2163,7 @@ AC_DEFUN([GLIBCXX_CHECK_STDIO_PROTO], [ AC_CACHE_VAL(glibcxx_cv_gets, [ AC_COMPILE_IFELSE([AC_LANG_SOURCE( [#include <stdio.h> - namespace test + namespace test { using ::gets; } @@ -2780,9 +2780,9 @@ AC_DEFUN([GLIBCXX_ENABLE_VTABLE_VERIFY], [ esac VTV_PCH_CXXFLAGS="-fvtable-verify=std" else - VTV_CXXFLAGS= + VTV_CXXFLAGS= VTV_PCH_CXXFLAGS= - VTV_CXXLINKFLAGS= + VTV_CXXLINKFLAGS= fi AC_SUBST(VTV_CXXFLAGS) @@ -3964,7 +3964,7 @@ dnl AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [ GLIBCXX_ENABLE(libstdcxx-threads,auto,,[enable C++11 threads support]) - if test x$enable_libstdcxx_threads = xauto || + if test x$enable_libstdcxx_threads = xauto || test x$enable_libstdcxx_threads = xyes; then AC_LANG_SAVE @@ -4017,11 +4017,23 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [ [Define if gthreads library is available.]) # Also check for pthread_rwlock_t for std::shared_timed_mutex in C++14 - AC_CHECK_TYPE([pthread_rwlock_t], - [AC_DEFINE([_GLIBCXX_USE_PTHREAD_RWLOCK_T], 1, - [Define if POSIX read/write locks are available in <gthr.h>.])], - [], - [#include "gthr.h"]) + # but only do so if we're using pthread in the gthread library. + # On VxWorks for example, pthread_rwlock_t is defined in sys/types.h + # but the pthread library is not there by default and the gthread library + # does not use it. + AC_TRY_COMPILE([#include "gthr.h"], + [ + #if (!defined(_PTHREADS)) + #error + #endif + ], [ac_gthread_use_pthreads=yes], [ac_gthread_use_pthreads=no]) + if test x"$ac_gthread_use_pthreads" = x"yes"; then + AC_CHECK_TYPE([pthread_rwlock_t], + [AC_DEFINE([_GLIBCXX_USE_PTHREAD_RWLOCK_T], 1, + [Define if POSIX read/write locks are available in <gthr.h>.])], + [], + [#include "gthr.h"]) + fi fi CXXFLAGS="$ac_save_CXXFLAGS" diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index b7242157107..3c51166fe9f 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -74654,7 +74654,33 @@ $as_echo "#define _GLIBCXX_HAS_GTHREADS 1" >>confdefs.h # Also check for pthread_rwlock_t for std::shared_timed_mutex in C++14 - ac_fn_cxx_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include \"gthr.h\" + # but only do so if we're using pthread in the gthread library. + # On VxWorks for example, pthread_rwlock_t is defined in sys/types.h + # but the pthread library is not there by default and the gthread library + # does not use it. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include "gthr.h" +int +main () +{ + + #if (!defined(_PTHREADS)) + #error + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_gthread_use_pthreads=yes +else + ac_gthread_use_pthreads=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test x"$ac_gthread_use_pthreads" = x"yes"; then + ac_fn_cxx_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include \"gthr.h\" " if test "x$ac_cv_type_pthread_rwlock_t" = xyes; then : @@ -74662,6 +74688,7 @@ $as_echo "#define _GLIBCXX_USE_PTHREAD_RWLOCK_T 1" >>confdefs.h fi + fi fi CXXFLAGS="$ac_save_CXXFLAGS" |