re PR fortran/47571 (undefined reference to clock_gettime in Linux build of 02/01/2011)
PR libfortran/47571 * acinclude.m4 (LIBGFOR_GTHREAD_WEAK): Remove. (LIBGFOR_CHECK_WEAKREF): New test. * configure.ac: Call LIBGFOR_CHECK_WEAKREF instead of LIBGFOR_GTHREAD_WEAK. * config.h.in: Regenerate. * configure: Regenerate. * intrinsics/system_clock.c: Use SUPPORTS_WEAKREF instead of SUPPORTS_WEAK and GTHREAD_USE_WEAK. From-SVN: r227335
This commit is contained in:
parent
4ba00e9dba
commit
e78549932d
|
@ -1,3 +1,15 @@
|
||||||
|
2015-08-31 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR libfortran/47571
|
||||||
|
* acinclude.m4 (LIBGFOR_GTHREAD_WEAK): Remove.
|
||||||
|
(LIBGFOR_CHECK_WEAKREF): New test.
|
||||||
|
* configure.ac: Call LIBGFOR_CHECK_WEAKREF instead of
|
||||||
|
LIBGFOR_GTHREAD_WEAK.
|
||||||
|
* config.h.in: Regenerate.
|
||||||
|
* configure: Regenerate.
|
||||||
|
* intrinsics/system_clock.c: Use SUPPORTS_WEAKREF instead of
|
||||||
|
SUPPORTS_WEAK and GTHREAD_USE_WEAK.
|
||||||
|
|
||||||
2015-08-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
2015-08-29 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||||
|
|
||||||
PR libgfortran/67367
|
PR libgfortran/67367
|
||||||
|
|
|
@ -69,27 +69,21 @@ if (foovar > 10) return __sync_add_and_fetch (&foovar, -1);]])],
|
||||||
[Define to 1 if the target supports __sync_fetch_and_add])
|
[Define to 1 if the target supports __sync_fetch_and_add])
|
||||||
fi])
|
fi])
|
||||||
|
|
||||||
dnl Check for pragma weak.
|
dnl Check whether target effectively supports weakref
|
||||||
AC_DEFUN([LIBGFOR_GTHREAD_WEAK], [
|
AC_DEFUN([LIBGFOR_CHECK_WEAKREF], [
|
||||||
AC_CACHE_CHECK([whether pragma weak works],
|
AC_CACHE_CHECK([whether the target supports weakref],
|
||||||
libgfor_cv_have_pragma_weak, [
|
libgfor_cv_have_weakref, [
|
||||||
gfor_save_CFLAGS="$CFLAGS"
|
save_CFLAGS="$CFLAGS"
|
||||||
CFLAGS="$CFLAGS -Wunknown-pragmas"
|
CFLAGS="$CFLAGS -Wunknown-pragmas -Werror"
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||||
void foo (void);
|
static int mytoto (int) __attribute__((__weakref__("toto")));
|
||||||
#pragma weak foo
|
]], [[return (mytoto != 0);]])],
|
||||||
]], [[if (foo) foo ();]])],
|
libgfor_cv_have_weakref=yes, libgfor_cv_have_weakref=no)
|
||||||
libgfor_cv_have_pragma_weak=yes, libgfor_cv_have_pragma_weak=no)])
|
CFLAGS="$save_CFLAGS"])
|
||||||
if test $libgfor_cv_have_pragma_weak = yes; then
|
if test $libgfor_cv_have_weakref = yes; then
|
||||||
AC_DEFINE(SUPPORTS_WEAK, 1,
|
AC_DEFINE(SUPPORTS_WEAKREF, 1,
|
||||||
[Define to 1 if the target supports #pragma weak])
|
[Define to 1 if the target supports weakref])
|
||||||
fi
|
fi])
|
||||||
case "$host" in
|
|
||||||
*-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* )
|
|
||||||
AC_DEFINE(GTHREAD_USE_WEAK, 0,
|
|
||||||
[Define to 0 if the target shouldn't use #pragma weak])
|
|
||||||
;;
|
|
||||||
esac])
|
|
||||||
|
|
||||||
dnl Check whether target can unlink a file still open.
|
dnl Check whether target can unlink a file still open.
|
||||||
AC_DEFUN([LIBGFOR_CHECK_UNLINK_OPEN_FILE], [
|
AC_DEFUN([LIBGFOR_CHECK_UNLINK_OPEN_FILE], [
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
/* Define to 0 if the target shouldn't use #pragma weak */
|
|
||||||
#undef GTHREAD_USE_WEAK
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `access' function. */
|
/* Define to 1 if you have the `access' function. */
|
||||||
#undef HAVE_ACCESS
|
#undef HAVE_ACCESS
|
||||||
|
|
||||||
|
@ -874,8 +871,8 @@
|
||||||
/* Define to 1 if you have the ANSI C header files. */
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
#undef STDC_HEADERS
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
/* Define to 1 if the target supports #pragma weak */
|
/* Define to 1 if the target supports weakref */
|
||||||
#undef SUPPORTS_WEAK
|
#undef SUPPORTS_WEAKREF
|
||||||
|
|
||||||
/* Enable extensions on AIX 3, Interix. */
|
/* Enable extensions on AIX 3, Interix. */
|
||||||
#ifndef _ALL_SOURCE
|
#ifndef _ALL_SOURCE
|
||||||
|
|
|
@ -25953,51 +25953,48 @@ $as_echo "#define HAVE_SYNC_FETCH_AND_ADD 1" >>confdefs.h
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check out #pragma weak.
|
# Check out weakref support.
|
||||||
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pragma weak works" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the target supports weakref" >&5
|
||||||
$as_echo_n "checking whether pragma weak works... " >&6; }
|
$as_echo_n "checking whether the target supports weakref... " >&6; }
|
||||||
if test "${libgfor_cv_have_pragma_weak+set}" = set; then :
|
if test "${libgfor_cv_have_weakref+set}" = set; then :
|
||||||
$as_echo_n "(cached) " >&6
|
$as_echo_n "(cached) " >&6
|
||||||
else
|
else
|
||||||
|
|
||||||
gfor_save_CFLAGS="$CFLAGS"
|
save_CFLAGS="$CFLAGS"
|
||||||
CFLAGS="$CFLAGS -Wunknown-pragmas"
|
CFLAGS="$CFLAGS -Wunknown-pragmas -Werror"
|
||||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
if test x$gcc_no_link = xyes; then
|
||||||
|
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
|
||||||
|
fi
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
/* end confdefs.h. */
|
/* end confdefs.h. */
|
||||||
|
|
||||||
void foo (void);
|
static int mytoto (int) __attribute__((__weakref__("toto")));
|
||||||
#pragma weak foo
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
if (foo) foo ();
|
return (mytoto != 0);
|
||||||
;
|
;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
_ACEOF
|
_ACEOF
|
||||||
if ac_fn_c_try_compile "$LINENO"; then :
|
if ac_fn_c_try_link "$LINENO"; then :
|
||||||
libgfor_cv_have_pragma_weak=yes
|
libgfor_cv_have_weakref=yes
|
||||||
else
|
else
|
||||||
libgfor_cv_have_pragma_weak=no
|
libgfor_cv_have_weakref=no
|
||||||
fi
|
fi
|
||||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
rm -f core conftest.err conftest.$ac_objext \
|
||||||
|
conftest$ac_exeext conftest.$ac_ext
|
||||||
|
CFLAGS="$save_CFLAGS"
|
||||||
fi
|
fi
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgfor_cv_have_pragma_weak" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgfor_cv_have_weakref" >&5
|
||||||
$as_echo "$libgfor_cv_have_pragma_weak" >&6; }
|
$as_echo "$libgfor_cv_have_weakref" >&6; }
|
||||||
if test $libgfor_cv_have_pragma_weak = yes; then
|
if test $libgfor_cv_have_weakref = yes; then
|
||||||
|
|
||||||
$as_echo "#define SUPPORTS_WEAK 1" >>confdefs.h
|
$as_echo "#define SUPPORTS_WEAKREF 1" >>confdefs.h
|
||||||
|
|
||||||
fi
|
fi
|
||||||
case "$host" in
|
|
||||||
*-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* )
|
|
||||||
|
|
||||||
$as_echo "#define GTHREAD_USE_WEAK 0" >>confdefs.h
|
|
||||||
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Various other checks on target
|
# Various other checks on target
|
||||||
|
|
||||||
|
|
|
@ -595,8 +595,8 @@ LIBGFOR_CHECK_ATTRIBUTE_ALIAS
|
||||||
# Check out sync builtins support.
|
# Check out sync builtins support.
|
||||||
LIBGFOR_CHECK_SYNC_FETCH_AND_ADD
|
LIBGFOR_CHECK_SYNC_FETCH_AND_ADD
|
||||||
|
|
||||||
# Check out #pragma weak.
|
# Check out weakref support.
|
||||||
LIBGFOR_GTHREAD_WEAK
|
LIBGFOR_CHECK_WEAKREF
|
||||||
|
|
||||||
# Various other checks on target
|
# Various other checks on target
|
||||||
LIBGFOR_CHECK_UNLINK_OPEN_FILE
|
LIBGFOR_CHECK_UNLINK_OPEN_FILE
|
||||||
|
|
|
@ -45,16 +45,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
/* Weakref trickery for clock_gettime(). On Glibc <= 2.16,
|
/* Weakref trickery for clock_gettime(). On Glibc <= 2.16,
|
||||||
clock_gettime() requires us to link in librt, which also pulls in
|
clock_gettime() requires us to link in librt, which also pulls in
|
||||||
libpthread. In order to avoid this by default, only call
|
libpthread. In order to avoid this by default, only call
|
||||||
clock_gettime() through a weak reference.
|
clock_gettime() through a weak reference. */
|
||||||
|
#if SUPPORTS_WEAKREF && defined(HAVE_CLOCK_GETTIME_LIBRT)
|
||||||
Some targets don't support weak undefined references; on these
|
|
||||||
GTHREAD_USE_WEAK is 0. So we need to define it to 1 on other
|
|
||||||
targets. */
|
|
||||||
#ifndef GTHREAD_USE_WEAK
|
|
||||||
#define GTHREAD_USE_WEAK 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if SUPPORTS_WEAK && GTHREAD_USE_WEAK && defined(HAVE_CLOCK_GETTIME_LIBRT)
|
|
||||||
static int weak_gettime (clockid_t, struct timespec *)
|
static int weak_gettime (clockid_t, struct timespec *)
|
||||||
__attribute__((__weakref__("clock_gettime")));
|
__attribute__((__weakref__("clock_gettime")));
|
||||||
#endif
|
#endif
|
||||||
|
@ -90,7 +82,7 @@ gf_gettime_mono (time_t * secs, long * fracsecs, long * tck)
|
||||||
*fracsecs = ts.tv_nsec;
|
*fracsecs = ts.tv_nsec;
|
||||||
return err;
|
return err;
|
||||||
#else
|
#else
|
||||||
#if defined(HAVE_CLOCK_GETTIME_LIBRT) && SUPPORTS_WEAK && GTHREAD_USE_WEAK
|
#if SUPPORTS_WEAKREF && defined(HAVE_CLOCK_GETTIME_LIBRT)
|
||||||
if (weak_gettime)
|
if (weak_gettime)
|
||||||
{
|
{
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
|
|
Loading…
Reference in New Issue