PR 47571 Fix bootstrap regression on alpha-dec-osf
From-SVN: r172469
This commit is contained in:
parent
f54d331e46
commit
2aadeae27f
@ -1,3 +1,13 @@
|
|||||||
|
2011-04-15 Janne Blomqvist <jb@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR libfortran/47571
|
||||||
|
* configure: Regenerated.
|
||||||
|
* config.h.in: Regenerated.
|
||||||
|
* acinclude.m4: Add alpha*-dec-osf* to gthread blacklist.
|
||||||
|
* configure.ac: Use separate symbol for clock_gettime in librt.
|
||||||
|
* intrinsics/system_clock.c: Use weakrefs only when needed and
|
||||||
|
supported.
|
||||||
|
|
||||||
2011-04-12 Janne Blomqvist <jb@gcc.gnu.org>
|
2011-04-12 Janne Blomqvist <jb@gcc.gnu.org>
|
||||||
|
|
||||||
* configure.ac: Use AC_TYPE_* to make sure we have (u)intptr_t,
|
* configure.ac: Use AC_TYPE_* to make sure we have (u)intptr_t,
|
||||||
|
@ -110,7 +110,7 @@ void foo (void);
|
|||||||
[Define to 1 if the target supports #pragma weak])
|
[Define to 1 if the target supports #pragma weak])
|
||||||
fi
|
fi
|
||||||
case "$host" in
|
case "$host" in
|
||||||
*-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* )
|
*-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | alpha*-dec-osf* )
|
||||||
AC_DEFINE(GTHREAD_USE_WEAK, 0,
|
AC_DEFINE(GTHREAD_USE_WEAK, 0,
|
||||||
[Define to 0 if the target shouldn't use #pragma weak])
|
[Define to 0 if the target shouldn't use #pragma weak])
|
||||||
;;
|
;;
|
||||||
|
@ -210,6 +210,9 @@
|
|||||||
/* Define to 1 if you have the `clock_gettime' function. */
|
/* Define to 1 if you have the `clock_gettime' function. */
|
||||||
#undef HAVE_CLOCK_GETTIME
|
#undef HAVE_CLOCK_GETTIME
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `clock_gettime' function in librt. */
|
||||||
|
#undef HAVE_CLOCK_GETTIME_LIBRT
|
||||||
|
|
||||||
/* libm includes clog */
|
/* libm includes clog */
|
||||||
#undef HAVE_CLOG
|
#undef HAVE_CLOG
|
||||||
|
|
||||||
|
13
libgfortran/configure
vendored
13
libgfortran/configure
vendored
@ -25375,10 +25375,11 @@ $as_echo "#define HAVE_FEENABLEEXCEPT 1" >>confdefs.h
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# At least for glibc, clock_gettime is in librt. But don't pull that
|
# At least for glibc and Tru64, clock_gettime is in librt. But don't
|
||||||
# in if it still doesn't give us the function we want.
|
# pull that in if it still doesn't give us the function we want. This
|
||||||
# This test is copied from libgomp, and modified to not link in -lrt
|
# test is copied from libgomp, and modified to not link in -lrt as
|
||||||
# as libgfortran calls clock_gettime via a weak reference.
|
# libgfortran calls clock_gettime via a weak reference if it's found
|
||||||
|
# in librt.
|
||||||
if test $ac_cv_func_clock_gettime = no; then
|
if test $ac_cv_func_clock_gettime = no; then
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
|
||||||
$as_echo_n "checking for clock_gettime in -lrt... " >&6; }
|
$as_echo_n "checking for clock_gettime in -lrt... " >&6; }
|
||||||
@ -25421,7 +25422,7 @@ fi
|
|||||||
$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; }
|
$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; }
|
||||||
if test "x$ac_cv_lib_rt_clock_gettime" = x""yes; then :
|
if test "x$ac_cv_lib_rt_clock_gettime" = x""yes; then :
|
||||||
|
|
||||||
$as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
|
$as_echo "#define HAVE_CLOCK_GETTIME_LIBRT 1" >>confdefs.h
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -25761,7 +25762,7 @@ $as_echo "#define SUPPORTS_WEAK 1" >>confdefs.h
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
case "$host" in
|
case "$host" in
|
||||||
*-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* )
|
*-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | alpha*-dec-osf* )
|
||||||
|
|
||||||
$as_echo "#define GTHREAD_USE_WEAK 0" >>confdefs.h
|
$as_echo "#define GTHREAD_USE_WEAK 0" >>confdefs.h
|
||||||
|
|
||||||
|
@ -492,14 +492,15 @@ LIBGFOR_CHECK_FLOAT128
|
|||||||
# Check for GNU libc feenableexcept
|
# Check for GNU libc feenableexcept
|
||||||
AC_CHECK_LIB([m],[feenableexcept],[have_feenableexcept=yes AC_DEFINE([HAVE_FEENABLEEXCEPT],[1],[libm includes feenableexcept])])
|
AC_CHECK_LIB([m],[feenableexcept],[have_feenableexcept=yes AC_DEFINE([HAVE_FEENABLEEXCEPT],[1],[libm includes feenableexcept])])
|
||||||
|
|
||||||
# At least for glibc, clock_gettime is in librt. But don't pull that
|
# At least for glibc and Tru64, clock_gettime is in librt. But don't
|
||||||
# in if it still doesn't give us the function we want.
|
# pull that in if it still doesn't give us the function we want. This
|
||||||
# This test is copied from libgomp, and modified to not link in -lrt
|
# test is copied from libgomp, and modified to not link in -lrt as
|
||||||
# as libgfortran calls clock_gettime via a weak reference.
|
# libgfortran calls clock_gettime via a weak reference if it's found
|
||||||
|
# in librt.
|
||||||
if test $ac_cv_func_clock_gettime = no; then
|
if test $ac_cv_func_clock_gettime = no; then
|
||||||
AC_CHECK_LIB(rt, clock_gettime,
|
AC_CHECK_LIB(rt, clock_gettime,
|
||||||
[AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
|
[AC_DEFINE(HAVE_CLOCK_GETTIME_LIBRT, 1,
|
||||||
[Define to 1 if you have the `clock_gettime' function.])])
|
[Define to 1 if you have the `clock_gettime' function in librt.])])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for SysV fpsetmask
|
# Check for SysV fpsetmask
|
||||||
|
@ -29,14 +29,16 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|||||||
|
|
||||||
#include "time_1.h"
|
#include "time_1.h"
|
||||||
|
|
||||||
#ifdef HAVE_CLOCK_GETTIME
|
|
||||||
/* POSIX states that CLOCK_REALTIME must be present if clock_gettime
|
/* POSIX states that CLOCK_REALTIME must be present if clock_gettime
|
||||||
is available, others are optional. */
|
is available, others are optional. */
|
||||||
|
#if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_CLOCK_GETTIME_LIBRT)
|
||||||
#ifdef CLOCK_MONOTONIC
|
#ifdef CLOCK_MONOTONIC
|
||||||
#define GF_CLOCK_MONOTONIC CLOCK_MONOTONIC
|
#define GF_CLOCK_MONOTONIC CLOCK_MONOTONIC
|
||||||
#else
|
#else
|
||||||
#define GF_CLOCK_MONOTONIC CLOCK_REALTIME
|
#define GF_CLOCK_MONOTONIC CLOCK_REALTIME
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Weakref trickery for clock_gettime(). On Glibc, clock_gettime()
|
/* Weakref trickery for clock_gettime(). On Glibc, clock_gettime()
|
||||||
requires us to link in librt, which also pulls in libpthread. In
|
requires us to link in librt, which also pulls in libpthread. In
|
||||||
@ -50,15 +52,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|||||||
#define GTHREAD_USE_WEAK 1
|
#define GTHREAD_USE_WEAK 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SUPPORTS_WEAK && GTHREAD_USE_WEAK
|
#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")));
|
||||||
#else
|
|
||||||
static inline int weak_gettime (clockid_t clk_id, struct timespec *res)
|
|
||||||
{
|
|
||||||
return clock_gettime (clk_id, res);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -84,6 +80,13 @@ gf_gettime_mono (time_t * secs, long * nanosecs)
|
|||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
#ifdef HAVE_CLOCK_GETTIME
|
#ifdef HAVE_CLOCK_GETTIME
|
||||||
|
struct timespec ts;
|
||||||
|
err = clock_gettime (GF_CLOCK_MONOTONIC, &ts);
|
||||||
|
*secs = ts.tv_sec;
|
||||||
|
*nanosecs = ts.tv_nsec;
|
||||||
|
return err;
|
||||||
|
#else
|
||||||
|
#if defined(HAVE_CLOCK_GETTIME_LIBRT) && SUPPORTS_WEAK && GTHREAD_USE_WEAK
|
||||||
if (weak_gettime)
|
if (weak_gettime)
|
||||||
{
|
{
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
@ -96,6 +99,7 @@ gf_gettime_mono (time_t * secs, long * nanosecs)
|
|||||||
err = gf_gettime (secs, nanosecs);
|
err = gf_gettime (secs, nanosecs);
|
||||||
*nanosecs *= 1000;
|
*nanosecs *= 1000;
|
||||||
return err;
|
return err;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void system_clock_4 (GFC_INTEGER_4 *, GFC_INTEGER_4 *, GFC_INTEGER_4 *);
|
extern void system_clock_4 (GFC_INTEGER_4 *, GFC_INTEGER_4 *, GFC_INTEGER_4 *);
|
||||||
|
Loading…
Reference in New Issue
Block a user