binutils-gdb/gdb/gnulib/import/m4/frexp.m4
Pedro Alves 49e4877c54 Update gnulib to current upstream master
I tried building gdb with G++ 4.7 and CXX="g++ -std=gnu+11", and that
tripped on a build error:

  In file included from build-gnulib/import/stdio.h:53:0,
		   from /home/pedro/gdb/mygit/cxx-convertion/src/gdb/common/common-defs.h:31,
		   from /home/pedro/gdb/mygit/cxx-convertion/src/gdb/defs.h:28,
		   from /home/pedro/gdb/mygit/cxx-convertion/src/gdb/armobsd-tdep.c:20:
  build-gnulib/import/stddef.h:104:3: error: conflicting declaration ‘typedef union max_align_t max_align_t’
  In file included from build-gnulib/import/stddef.h:55:0,
		   from build-gnulib/import/stdio.h:53,
		   from /home/pedro/gdb/mygit/cxx-convertion/src/gdb/common/common-defs.h:31,
		   from /home/pedro/gdb/mygit/cxx-convertion/src/gdb/defs.h:28,
		   from /home/pedro/gdb/mygit/cxx-convertion/src/gdb/armobsd-tdep.c:20:
  /opt/gcc-4.7/lib/gcc/x86_64-unknown-linux-gnu/4.7.4/include/stddef.h:426:3: error: ‘max_align_t’ has a previous declaration as ‘typedef struct max_align_t max_align_t’

Updating gnulib to current master fixes it, since it brings in this
fix:

 http://lists.gnu.org/archive/html/bug-gnulib/2016-04/msg00000.html

Our last update was in August 2015.  This doesn't bring in much added
baggage, it's mostly bug fixes.  It pulled in the "limits-h" module as
automatic dependency, and given that looks potentially useful I added
it to the set of modules we require.

Tested on x86_64 Fedora 23, with g++ 4.7 and g++ 5.3, native and gdbserver.

gdb/ChangeLog:
2016-10-18  Pedro Alves  <palves@redhat.com>

	* gnulib/update-gnulib.sh (GNULIB_COMMIT_SHA1): Set to
	2692e23a48e21f6daa029e8af9f1a143b7532f47.
	* gnulib/configure, gnulib/config.in, gnulib/aclocal.m4:
	Regenerate.
	* gnulib/import/Makefile: Update.
	* gnulib/import/alloca: Update.
	* gnulib/import/basename-lgpl: Update.
	* gnulib/import/canonicalize-lgpl: Update.
	* gnulib/import/config: Update.
	* gnulib/import/dirent: Update.
	* gnulib/import/dirfd: Update.
	* gnulib/import/dirname-lgpl: Update.
	* gnulib/import/dirname.h: Update.
	* gnulib/import/dosname.h: Update.
	* gnulib/import/errno: Update.
	* gnulib/import/extra/snippet/arg-nonnull.h: Update.
	* gnulib/import/extra/snippet/c++defs.h: Update.
	* gnulib/import/extra/snippet/warn-on-use.h: Update.
	* gnulib/import/extra/update-copyright: Update.
	* gnulib/import/flexmember.h: Update.
	* gnulib/import/float+.h: Update.
	* gnulib/import/float: Update.
	* gnulib/import/float: Update.
	* gnulib/import/fnmatch: Update.
	* gnulib/import/fnmatch: Update.
	* gnulib/import/fnmatch_loop: Update.
	* gnulib/import/fpucw.h: Update.
	* gnulib/import/frexp: Update.
	* gnulib/import/frexpl: Update.
	* gnulib/import/gettimeofday: Update.
	* gnulib/import/hard-locale: Update.
	* gnulib/import/hard-locale.h: Update.
	* gnulib/import/inttypes: Update.
	* gnulib/import/isnan: Update.
	* gnulib/import/isnand-nolibm.h: Update.
	* gnulib/import/isnand: Update.
	* gnulib/import/isnanl-nolibm.h: Update.
	* gnulib/import/isnanl: Update.
	* gnulib/import/itold: Update.
	* gnulib/import/limits: Update.
	* gnulib/import/localcharset: Update.
	* gnulib/import/localcharset.h: Update.
	* gnulib/import/lstat: Update.
	* gnulib/import/m4/00gnulib: Update.
	* gnulib/import/m4/absolute-header: Update.
	* gnulib/import/m4/alloca: Update.
	* gnulib/import/m4/canonicalize: Update.
	* gnulib/import/m4/codeset: Update.
	* gnulib/import/m4/configmake: Update.
	* gnulib/import/m4/dirent_h: Update.
	* gnulib/import/m4/dirfd: Update.
	* gnulib/import/m4/dirname: Update.
	* gnulib/import/m4/double-slash-root: Update.
	* gnulib/import/m4/eealloc: Update.
	* gnulib/import/m4/errno_h: Update.
	* gnulib/import/m4/exponentd: Update.
	* gnulib/import/m4/exponentl: Update.
	* gnulib/import/m4/extensions: Update.
	* gnulib/import/m4/extern-inline: Update.
	* gnulib/import/m4/fcntl-o: Update.
	* gnulib/import/m4/flexmember: Update.
	* gnulib/import/m4/float_h: Update.
	* gnulib/import/m4/fnmatch: Update.
	* gnulib/import/m4/fpieee: Update.
	* gnulib/import/m4/frexp: Update.
	* gnulib/import/m4/frexpl: Update.
	* gnulib/import/m4/gettimeofday: Update.
	* gnulib/import/m4/glibc21: Update.
	* gnulib/import/m4/gnulib-cache: Update.
	* gnulib/import/m4/gnulib-common: Update.
	* gnulib/import/m4/gnulib-comp: Update.
	* gnulib/import/m4/gnulib-tool: Update.
	* gnulib/import/m4/hard-locale: Update.
	* gnulib/import/m4/include_next: Update.
	* gnulib/import/m4/inttypes-pri: Update.
	* gnulib/import/m4/inttypes: Update.
	* gnulib/import/m4/isnand: Update.
	* gnulib/import/m4/isnanl: Update.
	* gnulib/import/m4/largefile: Update.
	* gnulib/import/m4/limits-h: Update.
	* gnulib/import/m4/localcharset: Update.
	* gnulib/import/m4/locale-fr: Update.
	* gnulib/import/m4/locale-ja: Update.
	* gnulib/import/m4/locale-zh: Update.
	* gnulib/import/m4/longlong: Update.
	* gnulib/import/m4/lstat: Update.
	* gnulib/import/m4/malloc: Update.
	* gnulib/import/m4/malloca: Update.
	* gnulib/import/m4/math_h: Update.
	* gnulib/import/m4/mbrtowc: Update.
	* gnulib/import/m4/mbsinit: Update.
	* gnulib/import/m4/mbsrtowcs: Update.
	* gnulib/import/m4/mbstate_t: Update.
	* gnulib/import/m4/memchr: Update.
	* gnulib/import/m4/memmem: Update.
	* gnulib/import/m4/mmap-anon: Update.
	* gnulib/import/m4/multiarch: Update.
	* gnulib/import/m4/nocrash: Update.
	* gnulib/import/m4/off_t: Update.
	* gnulib/import/m4/pathmax: Update.
	* gnulib/import/m4/rawmemchr: Update.
	* gnulib/import/m4/readlink: Update.
	* gnulib/import/m4/rename: Update.
	* gnulib/import/m4/rmdir: Update.
	* gnulib/import/m4/signal_h: Update.
	* gnulib/import/m4/ssize_t: Update.
	* gnulib/import/m4/stat: Update.
	* gnulib/import/m4/stdbool: Update.
	* gnulib/import/m4/stddef_h: Update.
	* gnulib/import/m4/stdint: Update.
	* gnulib/import/m4/stdio_h: Update.
	* gnulib/import/m4/stdlib_h: Update.
	* gnulib/import/m4/strchrnul: Update.
	* gnulib/import/m4/string_h: Update.
	* gnulib/import/m4/strstr: Update.
	* gnulib/import/m4/strtok_r: Update.
	* gnulib/import/m4/sys_socket_h: Update.
	* gnulib/import/m4/sys_stat_h: Update.
	* gnulib/import/m4/sys_time_h: Update.
	* gnulib/import/m4/sys_types_h: Update.
	* gnulib/import/m4/time_h: Update.
	* gnulib/import/m4/unistd_h: Update.
	* gnulib/import/m4/warn-on-use: Update.
	* gnulib/import/m4/wchar_h: Update.
	* gnulib/import/m4/wchar_t: Update.
	* gnulib/import/m4/wctype_h: Update.
	* gnulib/import/m4/wint_t: Update.
	* gnulib/import/malloc: Update.
	* gnulib/import/malloca: Update.
	* gnulib/import/malloca.h: Update.
	* gnulib/import/math: Update.
	* gnulib/import/math: Update.
	* gnulib/import/mbrtowc: Update.
	* gnulib/import/mbsinit: Update.
	* gnulib/import/mbsrtowcs-impl.h: Update.
	* gnulib/import/mbsrtowcs-state: Update.
	* gnulib/import/mbsrtowcs: Update.
	* gnulib/import/memchr: Update.
	* gnulib/import/memmem: Update.
	* gnulib/import/pathmax.h: Update.
	* gnulib/import/rawmemchr: Update.
	* gnulib/import/readlink: Update.
	* gnulib/import/ref-add.sin: Update.
	* gnulib/import/ref-del.sin: Update.
	* gnulib/import/rename: Update.
	* gnulib/import/rmdir: Update.
	* gnulib/import/same-inode.h: Update.
	* gnulib/import/signal: Update.
	* gnulib/import/stat: Update.
	* gnulib/import/stdbool: Update.
	* gnulib/import/stddef: Update.
	* gnulib/import/stdint: Update.
	* gnulib/import/stdio: Update.
	* gnulib/import/stdlib: Update.
	* gnulib/import/str-two-way.h: Update.
	* gnulib/import/strchrnul: Update.
	* gnulib/import/streq.h: Update.
	* gnulib/import/string: Update.
	* gnulib/import/stripslash: Update.
	* gnulib/import/strnlen1: Update.
	* gnulib/import/strnlen1.h: Update.
	* gnulib/import/strstr: Update.
	* gnulib/import/strtok_r: Update.
	* gnulib/import/sys_stat: Update.
	* gnulib/import/sys_time: Update.
	* gnulib/import/sys_types: Update.
	* gnulib/import/time: Update.
	* gnulib/import/unistd: Update.
	* gnulib/import/unistd: Update.
	* gnulib/import/verify.h: Update.
	* gnulib/import/wchar: Update.
	* gnulib/import/wctype: Update.
	* gnulib/import/flexmember.h: New file.
	* gnulib/import/hard-locale.c: New file.
	* gnulib/import/hard-locale.h: New file.
	* gnulib/import/limits.in.h: New file.
	* gnulib/import/m4/flexmember.m4: New file.
	* gnulib/import/m4/hard-locale.m4: New file.
	* gnulib/import/m4/limits-h.m4: New file.
2016-10-18 17:18:29 +01:00

173 lines
4.8 KiB
Plaintext

# frexp.m4 serial 15
dnl Copyright (C) 2007-2016 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_FUNC_FREXP],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM])
FREXP_LIBM=
if test $gl_cv_func_frexp_no_libm = no; then
AC_CACHE_CHECK([whether frexp() can be used with libm],
[gl_cv_func_frexp_in_libm],
[
save_LIBS="$LIBS"
LIBS="$LIBS -lm"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <math.h>
double x;]],
[[int e; return frexp (x, &e) > 0;]])],
[gl_cv_func_frexp_in_libm=yes],
[gl_cv_func_frexp_in_libm=no])
LIBS="$save_LIBS"
])
if test $gl_cv_func_frexp_in_libm = yes; then
FREXP_LIBM=-lm
fi
fi
if test $gl_cv_func_frexp_no_libm = yes \
|| test $gl_cv_func_frexp_in_libm = yes; then
save_LIBS="$LIBS"
LIBS="$LIBS $FREXP_LIBM"
gl_FUNC_FREXP_WORKS
LIBS="$save_LIBS"
case "$gl_cv_func_frexp_works" in
*yes) gl_func_frexp=yes ;;
*) gl_func_frexp=no; REPLACE_FREXP=1; FREXP_LIBM= ;;
esac
else
gl_func_frexp=no
fi
if test $gl_func_frexp = yes; then
AC_DEFINE([HAVE_FREXP], [1],
[Define if the frexp() function is available and works.])
fi
AC_SUBST([FREXP_LIBM])
])
AC_DEFUN([gl_FUNC_FREXP_NO_LIBM],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM])
if test $gl_cv_func_frexp_no_libm = yes; then
gl_FUNC_FREXP_WORKS
case "$gl_cv_func_frexp_works" in
*yes) gl_func_frexp_no_libm=yes ;;
*) gl_func_frexp_no_libm=no; REPLACE_FREXP=1 ;;
esac
else
gl_func_frexp_no_libm=no
dnl Set REPLACE_FREXP here because the system may have frexp in libm.
REPLACE_FREXP=1
fi
if test $gl_func_frexp_no_libm = yes; then
AC_DEFINE([HAVE_FREXP_IN_LIBC], [1],
[Define if the frexp() function is available in libc.])
fi
])
dnl Test whether frexp() can be used without linking with libm.
dnl Set gl_cv_func_frexp_no_libm to 'yes' or 'no' accordingly.
AC_DEFUN([gl_CHECK_FREXP_NO_LIBM],
[
AC_CACHE_CHECK([whether frexp() can be used without linking with libm],
[gl_cv_func_frexp_no_libm],
[
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <math.h>
double x;]],
[[int e; return frexp (x, &e) > 0;]])],
[gl_cv_func_frexp_no_libm=yes],
[gl_cv_func_frexp_no_libm=no])
])
])
dnl Test whether frexp() works also on denormalized numbers (this fails e.g. on
dnl NetBSD 3.0), on infinite numbers (this fails e.g. on IRIX 6.5 and mingw),
dnl and on negative zero (this fails e.g. on NetBSD 4.99 and mingw).
AC_DEFUN([gl_FUNC_FREXP_WORKS],
[
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CHECK_DECLS_ONCE([alarm])
AC_CACHE_CHECK([whether frexp works], [gl_cv_func_frexp_works],
[
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <float.h>
#include <math.h>
#include <string.h>
#if HAVE_DECL_ALARM
# include <signal.h>
# include <unistd.h>
#endif
/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
ICC 10.0 has a bug when optimizing the expression -zero.
The expression -DBL_MIN * DBL_MIN does not work when cross-compiling
to PowerPC on Mac OS X 10.5. */
#if defined __hpux || defined __sgi || defined __ICC
static double
compute_minus_zero (void)
{
return -DBL_MIN * DBL_MIN;
}
# define minus_zero compute_minus_zero ()
#else
double minus_zero = -0.0;
#endif
int main()
{
int result = 0;
int i;
volatile double x;
double zero = 0.0;
#if HAVE_DECL_ALARM
/* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite
number. Let the test fail in this case. */
signal (SIGALRM, SIG_DFL);
alarm (5);
#endif
/* Test on denormalized numbers. */
for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5)
;
if (x > 0.0)
{
int exp;
double y = frexp (x, &exp);
/* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022.
On NetBSD: y = 0.75. Correct: y = 0.5. */
if (y != 0.5)
result |= 1;
}
/* Test on infinite numbers. */
x = 1.0 / zero;
{
int exp;
double y = frexp (x, &exp);
if (y != x)
result |= 2;
}
/* Test on negative zero. */
x = minus_zero;
{
int exp;
double y = frexp (x, &exp);
if (memcmp (&y, &x, sizeof x))
result |= 4;
}
return result;
}]])],
[gl_cv_func_frexp_works=yes],
[gl_cv_func_frexp_works=no],
[case "$host_os" in
netbsd* | irix* | mingw*) gl_cv_func_frexp_works="guessing no";;
*) gl_cv_func_frexp_works="guessing yes";;
esac
])
])
])