Fix bootstrap on x86_64-apple-darwin14 after r229119.
authorMax Ostapenko <m.ostapenko@partner.samsung.com>
Thu, 22 Oct 2015 09:47:17 +0000 (12:47 +0300)
committerMaxim Ostapenko <chefmax@gcc.gnu.org>
Thu, 22 Oct 2015 09:47:17 +0000 (12:47 +0300)
libsanitizer/

PR bootstrap/68041
* configure.ac (link_sanitizer_common): Link against librt only if it
contains shm_open, required by sanitizers.
(CXX_ABI_NEEDED): Remove variable.
* configure: Regenerate.
* ubsan/Makefile.am (libubsan_la_LIBADD): Do not add -lc++abi anymore.
* ubsan/Makefile.in: Regenerate.

From-SVN: r229168

libsanitizer/ChangeLog
libsanitizer/configure
libsanitizer/configure.ac
libsanitizer/ubsan/Makefile.am
libsanitizer/ubsan/Makefile.in

index cead59d6ebb635c33d61b2242650a4b70b35c7ef..f105e47b9f0537988c28f1d3b187bcf5a0c046e4 100644 (file)
@@ -1,3 +1,13 @@
+2015-10-22  Maxim Ostapenko  <m.ostapenko@partner.samsung.com>
+
+       PR bootstrap/68041
+       * configure.ac (link_sanitizer_common): Link against librt only if it
+       contains shm_open, required by sanitizers.
+       (CXX_ABI_NEEDED): Remove variable.
+       * configure: Regenerate.
+       * ubsan/Makefile.am (libubsan_la_LIBADD): Do not add -lc++abi anymore.
+       * ubsan/Makefile.in: Regenerate.
+
 2015-10-21  Maxim Ostapenko  <m.ostapenko@partner.samsung.com>
 
        * HOWTO_MERGE: New file.
index 80655f05e9754b70983fe5cc56072cfa94ac6f4f..2701ee7a8ee0a1423810a43c1867b661e5f5f65b 100755 (executable)
@@ -616,8 +616,6 @@ BACKTRACE_SUPPORTED
 FORMAT_FILE
 SANITIZER_SUPPORTED_FALSE
 SANITIZER_SUPPORTED_TRUE
-USE_CXX_ABI_FLAG_FALSE
-USE_CXX_ABI_FLAG_TRUE
 USING_MAC_INTERPOSE_FALSE
 USING_MAC_INTERPOSE_TRUE
 link_liblsan
@@ -12029,7 +12027,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12032 "configure"
+#line 12030 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12135,7 +12133,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12138 "configure"
+#line 12136 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -15516,7 +15514,51 @@ done
 
 
 # Common libraries that we need to link against for all sanitizer libs.
-link_sanitizer_common='-lrt -lpthread -ldl -lm'
+link_sanitizer_common='-lpthread -ldl -lm'
+
+# At least for glibc, shm_open is in librt.  But don't pull that
+# in if it still doesn't give us the function we want.  This
+# test is copied from libgomp.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for shm_open in -lrt" >&5
+$as_echo_n "checking for shm_open in -lrt... " >&6; }
+if test "${ac_cv_lib_rt_shm_open+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lrt  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shm_open ();
+int
+main ()
+{
+return shm_open ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_rt_shm_open=yes
+else
+  ac_cv_lib_rt_shm_open=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_shm_open" >&5
+$as_echo "$ac_cv_lib_rt_shm_open" >&6; }
+if test "x$ac_cv_lib_rt_shm_open" = x""yes; then :
+  link_sanitizer_common="-lrt $link_sanitizer_common"
+fi
+
 
 # Set up the set of additional libraries that we need to link against for libasan.
 link_libasan=$link_sanitizer_common
@@ -15534,9 +15576,57 @@ link_libubsan=$link_sanitizer_common
 link_liblsan=$link_sanitizer_common
 
 
+
+# At least for glibc, clock_gettime is in librt.  But don't pull that
+# in if it still doesn't give us the function we want.  This
+# test is copied from libgomp.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
+$as_echo_n "checking for clock_gettime in -lrt... " >&6; }
+if test "${ac_cv_lib_rt_clock_gettime+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lrt  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clock_gettime ();
+int
+main ()
+{
+return clock_gettime ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_rt_clock_gettime=yes
+else
+  ac_cv_lib_rt_clock_gettime=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5
+$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; }
+if test "x$ac_cv_lib_rt_clock_gettime" = x""yes; then :
+  link_libasan="-lrt $link_libasan"
+link_libtsan="-lrt $link_libtsan"
+# Other sanitizers do not override clock_* API
+
+fi
+
+
 case "$host" in
-  *-*-darwin*) MAC_INTERPOSE=true ; enable_static=no ; CXX_ABI_NEEDED=true ;;
-  *) MAC_INTERPOSE=false ; CXX_ABI_NEEDED=false ;;
+  *-*-darwin*) MAC_INTERPOSE=true ; enable_static=no ;;
+  *) MAC_INTERPOSE=false ;;
 esac
  if $MAC_INTERPOSE; then
   USING_MAC_INTERPOSE_TRUE=
@@ -15546,14 +15636,6 @@ else
   USING_MAC_INTERPOSE_FALSE=
 fi
 
- if $CXX_ABI_NEEDED; then
-  USE_CXX_ABI_FLAG_TRUE=
-  USE_CXX_ABI_FLAG_FALSE='#'
-else
-  USE_CXX_ABI_FLAG_TRUE='#'
-  USE_CXX_ABI_FLAG_FALSE=
-fi
-
 
 backtrace_supported=yes
 
@@ -16511,10 +16593,6 @@ if test -z "${USING_MAC_INTERPOSE_TRUE}" && test -z "${USING_MAC_INTERPOSE_FALSE
   as_fn_error "conditional \"USING_MAC_INTERPOSE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${USE_CXX_ABI_FLAG_TRUE}" && test -z "${USE_CXX_ABI_FLAG_FALSE}"; then
-  as_fn_error "conditional \"USE_CXX_ABI_FLAG\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${SANITIZER_SUPPORTED_TRUE}" && test -z "${SANITIZER_SUPPORTED_FALSE}"; then
   as_fn_error "conditional \"SANITIZER_SUPPORTED\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
index ece15ed13dcbbc369600b833845b4056aae1f2c2..81fd46d2980ae41c121051e71c630f2a31951c01 100644 (file)
@@ -96,7 +96,13 @@ AM_CONDITIONAL(LSAN_SUPPORTED, [test "x$LSAN_SUPPORTED" = "xyes"])
 AC_CHECK_FUNCS(clock_getres clock_gettime clock_settime)
 
 # Common libraries that we need to link against for all sanitizer libs.
-link_sanitizer_common='-lrt -lpthread -ldl -lm'
+link_sanitizer_common='-lpthread -ldl -lm'
+
+# At least for glibc, shm_open is in librt.  But don't pull that
+# in if it still doesn't give us the function we want.  This
+# test is copied from libgomp.
+AC_CHECK_LIB(rt, shm_open,
+  [link_sanitizer_common="-lrt $link_sanitizer_common"])
 
 # Set up the set of additional libraries that we need to link against for libasan.
 link_libasan=$link_sanitizer_common
@@ -114,12 +120,21 @@ AC_SUBST(link_libubsan)
 link_liblsan=$link_sanitizer_common
 AC_SUBST(link_liblsan)
 
+
+# At least for glibc, clock_gettime is in librt.  But don't pull that
+# in if it still doesn't give us the function we want.  This
+# test is copied from libgomp.
+AC_CHECK_LIB(rt, clock_gettime,
+  [link_libasan="-lrt $link_libasan"
+link_libtsan="-lrt $link_libtsan"
+# Other sanitizers do not override clock_* API
+])
+
 case "$host" in
-  *-*-darwin*) MAC_INTERPOSE=true ; enable_static=no ; CXX_ABI_NEEDED=true ;;
-  *) MAC_INTERPOSE=false ; CXX_ABI_NEEDED=false ;;
+  *-*-darwin*) MAC_INTERPOSE=true ; enable_static=no ;;
+  *) MAC_INTERPOSE=false ;;
 esac
 AM_CONDITIONAL(USING_MAC_INTERPOSE, $MAC_INTERPOSE)
-AM_CONDITIONAL(USE_CXX_ABI_FLAG, $CXX_ABI_NEEDED)
 
 backtrace_supported=yes
 
index 29b4115389ff64f53246c68578aed7bb1f370184..9e70b12d3fdc6cfd66cbb32c67c84018fda9b728 100644 (file)
@@ -35,9 +35,6 @@ if LIBBACKTRACE_SUPPORTED
 libubsan_la_LIBADD += $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
 endif
 libubsan_la_LIBADD += $(LIBSTDCXX_RAW_CXX_LDFLAGS)
-if USE_CXX_ABI_FLAG
-libubsan_la_LIBADD += -lc++abi
-endif
 libubsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(link_libubsan)
 
 # Use special rules for files that require RTTI support.
index 3b5cfbf3778a634115d04423e8dc6d5b131de194..51d4da58516bcd4be6bd250df1e609002fec608e 100644 (file)
@@ -54,7 +54,6 @@ host_triplet = @host@
 target_triplet = @target@
 @USING_MAC_INTERPOSE_FALSE@am__append_1 = $(top_builddir)/interception/libinterception.la
 @LIBBACKTRACE_SUPPORTED_TRUE@am__append_2 = $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la
-@USE_CXX_ABI_FLAG_TRUE@am__append_3 = -lc++abi
 subdir = ubsan
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -107,8 +106,7 @@ LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libubsan_la_DEPENDENCIES =  \
        $(top_builddir)/sanitizer_common/libsanitizer_common.la \
-       $(am__append_1) $(am__append_2) $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_1)
+       $(am__append_1) $(am__append_2) $(am__DEPENDENCIES_1)
 am__objects_1 = ubsan_diag.lo ubsan_flags.lo ubsan_handlers.lo \
        ubsan_handlers_cxx.lo ubsan_init.lo ubsan_type_hash.lo \
        ubsan_type_hash_itanium.lo ubsan_type_hash_win.lo \
@@ -312,8 +310,7 @@ ubsan_files = \
 libubsan_la_SOURCES = $(ubsan_files) 
 libubsan_la_LIBADD =  \
        $(top_builddir)/sanitizer_common/libsanitizer_common.la \
-       $(am__append_1) $(am__append_2) $(LIBSTDCXX_RAW_CXX_LDFLAGS) \
-       $(am__append_3)
+       $(am__append_1) $(am__append_2) $(LIBSTDCXX_RAW_CXX_LDFLAGS)
 libubsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(link_libubsan)
 
 # Work around what appears to be a GNU make bug handling MAKEFLAGS