mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-29 19:30:36 +02:00
Update Gnulib to v0.0-5874-g7170ee0.
This commit is contained in:
parent
97ec95b728
commit
231c0e0e61
20 changed files with 391 additions and 63 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -142,3 +142,4 @@ INSTALL
|
|||
/test-suite/standalone/test-scm-spawn-thread
|
||||
/test-suite/standalone/test-pthread-create
|
||||
/test-suite/standalone/test-pthread-create-secondary
|
||||
/lib/fcntl.h
|
||||
|
|
|
@ -420,7 +420,9 @@ float.h: $(top_builddir)/config.status
|
|||
endif
|
||||
MOSTLYCLEANFILES += float.h float.h-t
|
||||
|
||||
EXTRA_DIST += float.in.h
|
||||
EXTRA_DIST += float.c float.in.h
|
||||
|
||||
EXTRA_libgnu_la_SOURCES += float.c
|
||||
|
||||
## end gnulib module float
|
||||
|
||||
|
|
33
lib/float.c
Normal file
33
lib/float.c
Normal file
|
@ -0,0 +1,33 @@
|
|||
/* Auxiliary definitions for <float.h>.
|
||||
Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
Written by Bruno Haible <bruno@clisp.org>, 2011.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
/* Specification. */
|
||||
#include <float.h>
|
||||
|
||||
#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
|
||||
const union gl_long_double_union gl_LDBL_MAX =
|
||||
{ { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } };
|
||||
#elif defined __i386__
|
||||
const union gl_long_double_union gl_LDBL_MAX =
|
||||
{ { 0xFFFFFFFF, 0xFFFFFFFF, 32766 } };
|
||||
#else
|
||||
/* This declaration is solely to ensure that after preprocessing
|
||||
this file is never empty. */
|
||||
typedef int dummy;
|
||||
#endif
|
111
lib/float.in.h
111
lib/float.in.h
|
@ -29,6 +29,7 @@
|
|||
#define _@GUARD_PREFIX@_FLOAT_H
|
||||
|
||||
/* 'long double' properties. */
|
||||
|
||||
#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
|
||||
/* Number of mantissa units, in base FLT_RADIX. */
|
||||
# undef LDBL_MANT_DIG
|
||||
|
@ -59,5 +60,115 @@
|
|||
# define LDBL_MAX_10_EXP 4932
|
||||
#endif
|
||||
|
||||
/* On FreeBSD/x86 6.4, the 'long double' type really has only 53 bits of
|
||||
precision in the compiler but 64 bits of precision at runtime. See
|
||||
<http://lists.gnu.org/archive/html/bug-gnulib/2008-07/msg00063.html>. */
|
||||
#if defined __i386__ && defined __FreeBSD__
|
||||
/* Number of mantissa units, in base FLT_RADIX. */
|
||||
# undef LDBL_MANT_DIG
|
||||
# define LDBL_MANT_DIG 64
|
||||
/* Number of decimal digits that is sufficient for representing a number. */
|
||||
# undef LDBL_DIG
|
||||
# define LDBL_DIG 18
|
||||
/* x-1 where x is the smallest representable number > 1. */
|
||||
# undef LDBL_EPSILON
|
||||
# define LDBL_EPSILON 1.084202172485504434007452800869941711426e-19L /* 2^-63 */
|
||||
/* Minimum e such that FLT_RADIX^(e-1) is a normalized number. */
|
||||
# undef LDBL_MIN_EXP
|
||||
# define LDBL_MIN_EXP (-16381)
|
||||
/* Maximum e such that FLT_RADIX^(e-1) is a representable finite number. */
|
||||
# undef LDBL_MAX_EXP
|
||||
# define LDBL_MAX_EXP 16384
|
||||
/* Minimum positive normalized number. */
|
||||
# undef LDBL_MIN
|
||||
# define LDBL_MIN 3.3621031431120935E-4932L /* = 0x1p-16382L */
|
||||
/* Maximum representable finite number. */
|
||||
# undef LDBL_MAX
|
||||
/* LDBL_MAX is represented as { 0xFFFFFFFF, 0xFFFFFFFF, 32766 }.
|
||||
But the largest literal that GCC allows us to write is
|
||||
0x0.fffffffffffff8p16384L = { 0xFFFFF800, 0xFFFFFFFF, 32766 }.
|
||||
So, define it like this through a reference to an external variable
|
||||
|
||||
const unsigned int LDBL_MAX[3] = { 0xFFFFFFFF, 0xFFFFFFFF, 32766 };
|
||||
extern const long double LDBL_MAX;
|
||||
|
||||
Unfortunately, this is not a constant expression. */
|
||||
union gl_long_double_union
|
||||
{
|
||||
struct { unsigned int lo; unsigned int hi; unsigned int exponent; } xd;
|
||||
long double ld;
|
||||
};
|
||||
extern const union gl_long_double_union gl_LDBL_MAX;
|
||||
# define LDBL_MAX (gl_LDBL_MAX.ld)
|
||||
/* Minimum e such that 10^e is in the range of normalized numbers. */
|
||||
# undef LDBL_MIN_10_EXP
|
||||
# define LDBL_MIN_10_EXP (-4931)
|
||||
/* Maximum e such that 10^e is in the range of representable finite numbers. */
|
||||
# undef LDBL_MAX_10_EXP
|
||||
# define LDBL_MAX_10_EXP 4932
|
||||
#endif
|
||||
|
||||
/* On AIX 7.1 with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX are
|
||||
wrong. */
|
||||
#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
|
||||
# undef LDBL_MIN_EXP
|
||||
# define LDBL_MIN_EXP DBL_MIN_EXP
|
||||
# undef LDBL_MIN_10_EXP
|
||||
# define LDBL_MIN_10_EXP DBL_MIN_10_EXP
|
||||
# undef LDBL_MIN
|
||||
# define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */
|
||||
# undef LDBL_MAX
|
||||
/* LDBL_MAX is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xFFFFFFFF }.
|
||||
It is not easy to define:
|
||||
#define LDBL_MAX 1.79769313486231580793728971405302307166e308L
|
||||
is too small, whereas
|
||||
#define LDBL_MAX 1.79769313486231580793728971405302307167e308L
|
||||
is too large. Apparently a bug in GCC decimal-to-binary conversion.
|
||||
Also, I can't get values larger than
|
||||
#define LDBL63 ((long double) (1ULL << 63))
|
||||
#define LDBL882 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63)
|
||||
#define LDBL945 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63)
|
||||
#define LDBL1008 (LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63 * LDBL63)
|
||||
#define LDBL_MAX (LDBL1008 * 65535.0L + LDBL945 * (long double) 9223372036821221375ULL + LDBL882 * (long double) 4611686018427387904ULL)
|
||||
which is represented as { 0x7FEFFFFF, 0xFFFFFFFF, 0x7C8FFFFF, 0xF8000000 }.
|
||||
So, define it like this through a reference to an external variable
|
||||
|
||||
const double LDBL_MAX[2] = { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL };
|
||||
extern const long double LDBL_MAX;
|
||||
|
||||
or through a pointer cast
|
||||
|
||||
#define LDBL_MAX \
|
||||
(*(const long double *) (double[]) { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL })
|
||||
|
||||
Unfortunately, this is not a constant expression, and the latter expression
|
||||
does not work well when GCC is optimizing.. */
|
||||
union gl_long_double_union
|
||||
{
|
||||
struct { double hi; double lo; } dd;
|
||||
long double ld;
|
||||
};
|
||||
extern const union gl_long_double_union gl_LDBL_MAX;
|
||||
# define LDBL_MAX (gl_LDBL_MAX.ld)
|
||||
#endif
|
||||
|
||||
/* On IRIX 6.5, with cc, the value of LDBL_MANT_DIG is wrong.
|
||||
On IRIX 6.5, with gcc 4.2, the values of LDBL_MIN_EXP, LDBL_MIN, LDBL_EPSILON
|
||||
are wrong. */
|
||||
#if defined __sgi && (LDBL_MANT_DIG >= 106)
|
||||
# undef LDBL_MANT_DIG
|
||||
# define LDBL_MANT_DIG 106
|
||||
# if defined __GNUC__
|
||||
# undef LDBL_MIN_EXP
|
||||
# define LDBL_MIN_EXP DBL_MIN_EXP
|
||||
# undef LDBL_MIN_10_EXP
|
||||
# define LDBL_MIN_10_EXP DBL_MIN_10_EXP
|
||||
# undef LDBL_MIN
|
||||
# define LDBL_MIN 2.22507385850720138309023271733240406422e-308L /* DBL_MIN = 2^-1022 */
|
||||
# undef LDBL_EPSILON
|
||||
# define LDBL_EPSILON 2.46519032881566189191165176650870696773e-32L /* 2^-105 */
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif /* _@GUARD_PREFIX@_FLOAT_H */
|
||||
#endif /* _@GUARD_PREFIX@_FLOAT_H */
|
||||
|
|
|
@ -21,17 +21,20 @@
|
|||
|
||||
#include <float.h>
|
||||
|
||||
int gl_isinff (float x)
|
||||
int
|
||||
gl_isinff (float x)
|
||||
{
|
||||
return x < -FLT_MAX || x > FLT_MAX;
|
||||
}
|
||||
|
||||
int gl_isinfd (double x)
|
||||
int
|
||||
gl_isinfd (double x)
|
||||
{
|
||||
return x < -DBL_MAX || x > DBL_MAX;
|
||||
}
|
||||
|
||||
int gl_isinfl (long double x)
|
||||
int
|
||||
gl_isinfl (long double x)
|
||||
{
|
||||
return x < -LDBL_MAX || x > LDBL_MAX;
|
||||
}
|
||||
|
|
|
@ -19,6 +19,12 @@
|
|||
#ifndef _PATHMAX_H
|
||||
# define _PATHMAX_H
|
||||
|
||||
/* POSIX:2008 defines PATH_MAX to be the maximum number of bytes in a filename,
|
||||
including the terminating NUL byte.
|
||||
<http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html>
|
||||
PATH_MAX is not defined on systems which have no limit on filename length,
|
||||
such as GNU/Hurd. */
|
||||
|
||||
# include <unistd.h>
|
||||
|
||||
# include <limits.h>
|
||||
|
@ -45,4 +51,13 @@
|
|||
# define PATH_MAX _POSIX_PATH_MAX
|
||||
# endif
|
||||
|
||||
# ifdef __hpux
|
||||
/* On HP-UX, PATH_MAX designates the maximum number of bytes in a filename,
|
||||
*not* including the terminating NUL byte, and is set to 1023.
|
||||
Additionally, when _XOPEN_SOURCE is defined to 500 or more, PATH_MAX is
|
||||
not defined at all any more. */
|
||||
# undef PATH_MAX
|
||||
# define PATH_MAX 1024
|
||||
# endif
|
||||
|
||||
#endif /* _PATHMAX_H */
|
||||
|
|
15
lib/pipe2.c
15
lib/pipe2.c
|
@ -40,6 +40,13 @@
|
|||
int
|
||||
pipe2 (int fd[2], int flags)
|
||||
{
|
||||
/* Mingw _pipe() corrupts fd on failure; also, if we succeed at
|
||||
creating the pipe but later fail at changing fcntl, we want
|
||||
to leave fd unchanged: http://austingroupbugs.net/view.php?id=467 */
|
||||
int tmp[2];
|
||||
tmp[0] = fd[0];
|
||||
tmp[1] = fd[1];
|
||||
|
||||
#if HAVE_PIPE2
|
||||
# undef pipe2
|
||||
/* Try the system call first, if it exists. (We may be running with a glibc
|
||||
|
@ -71,7 +78,11 @@ pipe2 (int fd[2], int flags)
|
|||
/* Native Woe32 API. */
|
||||
|
||||
if (_pipe (fd, 4096, flags & ~O_NONBLOCK) < 0)
|
||||
return -1;
|
||||
{
|
||||
fd[0] = tmp[0];
|
||||
fd[1] = tmp[1];
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* O_NONBLOCK handling.
|
||||
On native Windows platforms, O_NONBLOCK is defined by gnulib. Use the
|
||||
|
@ -145,6 +156,8 @@ pipe2 (int fd[2], int flags)
|
|||
int saved_errno = errno;
|
||||
close (fd[0]);
|
||||
close (fd[1]);
|
||||
fd[0] = tmp[0];
|
||||
fd[1] = tmp[1];
|
||||
errno = saved_errno;
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -38,6 +38,7 @@ orig_stat (const char *filename, struct stat *buf)
|
|||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#include "dosname.h"
|
||||
#include "verify.h"
|
||||
|
||||
/* Store information about NAME into ST. Work around bugs with
|
||||
trailing slashes. Mingw has other bugs (such as st_ino always
|
||||
|
@ -63,6 +64,12 @@ rpl_stat (char const *name, struct stat *st)
|
|||
}
|
||||
#endif /* REPLACE_FUNC_STAT_FILE */
|
||||
#if REPLACE_FUNC_STAT_DIR
|
||||
/* The only known systems where REPLACE_FUNC_STAT_DIR is needed also
|
||||
have a constant PATH_MAX. */
|
||||
# ifndef PATH_MAX
|
||||
# error "Please port this replacement to your platform"
|
||||
# endif
|
||||
|
||||
if (result == -1 && errno == ENOENT)
|
||||
{
|
||||
/* Due to mingw's oddities, there are some directories (like
|
||||
|
@ -77,6 +84,7 @@ rpl_stat (char const *name, struct stat *st)
|
|||
char fixed_name[PATH_MAX + 1] = {0};
|
||||
size_t len = strlen (name);
|
||||
bool check_dir = false;
|
||||
verify (PATH_MAX <= 4096);
|
||||
if (PATH_MAX <= len)
|
||||
errno = ENAMETOOLONG;
|
||||
else if (len)
|
||||
|
|
|
@ -1062,6 +1062,7 @@ _GL_WARN_ON_USE (pipe2, "pipe2 is unportable - "
|
|||
specification <http://www.opengroup.org/susv3xsh/pread.html>. */
|
||||
# if @REPLACE_PREAD@
|
||||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||||
# undef pread
|
||||
# define pread rpl_pread
|
||||
# endif
|
||||
_GL_FUNCDECL_RPL (pread, ssize_t,
|
||||
|
@ -1096,6 +1097,7 @@ _GL_WARN_ON_USE (pread, "pread is unportable - "
|
|||
<http://www.opengroup.org/susv3xsh/pwrite.html>. */
|
||||
# if @REPLACE_PWRITE@
|
||||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||||
# undef pwrite
|
||||
# define pwrite rpl_pwrite
|
||||
# endif
|
||||
_GL_FUNCDECL_RPL (pwrite, ssize_t,
|
||||
|
|
79
m4/alloca.m4
79
m4/alloca.m4
|
@ -1,4 +1,4 @@
|
|||
# alloca.m4 serial 11
|
||||
# alloca.m4 serial 12
|
||||
dnl Copyright (C) 2002-2004, 2006-2007, 2009-2011 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
|
@ -42,3 +42,80 @@ AC_DEFUN([gl_FUNC_ALLOCA],
|
|||
# Prerequisites of lib/alloca.c.
|
||||
# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA.
|
||||
AC_DEFUN([gl_PREREQ_ALLOCA], [:])
|
||||
|
||||
# This works around a bug in autoconf <= 2.68.
|
||||
# See <http://lists.gnu.org/archive/html/bug-gnulib/2011-06/msg00277.html>.
|
||||
|
||||
m4_version_prereq([2.69], [] ,[
|
||||
|
||||
# This is taken from the following Autoconf patch:
|
||||
# http://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=6cd9f12520b0d6f76d3230d7565feba1ecf29497
|
||||
|
||||
# _AC_LIBOBJ_ALLOCA
|
||||
# -----------------
|
||||
# Set up the LIBOBJ replacement of `alloca'. Well, not exactly
|
||||
# AC_LIBOBJ since we actually set the output variable `ALLOCA'.
|
||||
# Nevertheless, for Automake, AC_LIBSOURCES it.
|
||||
m4_define([_AC_LIBOBJ_ALLOCA],
|
||||
[# The SVR3 libPW and SVR4 libucb both contain incompatible functions
|
||||
# that cause trouble. Some versions do not even contain alloca or
|
||||
# contain a buggy version. If you still want to use their alloca,
|
||||
# use ar to extract alloca.o from them instead of compiling alloca.c.
|
||||
AC_LIBSOURCES(alloca.c)
|
||||
AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl
|
||||
AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using `alloca.c'.])
|
||||
|
||||
AC_CACHE_CHECK(whether `alloca.c' needs Cray hooks, ac_cv_os_cray,
|
||||
[AC_EGREP_CPP(webecray,
|
||||
[#if defined CRAY && ! defined CRAY2
|
||||
webecray
|
||||
#else
|
||||
wenotbecray
|
||||
#endif
|
||||
], ac_cv_os_cray=yes, ac_cv_os_cray=no)])
|
||||
if test $ac_cv_os_cray = yes; then
|
||||
for ac_func in _getb67 GETB67 getb67; do
|
||||
AC_CHECK_FUNC($ac_func,
|
||||
[AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func,
|
||||
[Define to one of `_getb67', `GETB67',
|
||||
`getb67' for Cray-2 and Cray-YMP
|
||||
systems. This function is required for
|
||||
`alloca.c' support on those systems.])
|
||||
break])
|
||||
done
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([stack direction for C alloca],
|
||||
[ac_cv_c_stack_direction],
|
||||
[AC_RUN_IFELSE([AC_LANG_SOURCE(
|
||||
[AC_INCLUDES_DEFAULT
|
||||
int
|
||||
find_stack_direction (int *addr, int depth)
|
||||
{
|
||||
int dir, dummy = 0;
|
||||
if (! addr)
|
||||
addr = &dummy;
|
||||
*addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
|
||||
dir = depth ? find_stack_direction (addr, depth - 1) : 0;
|
||||
return dir + dummy;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
return find_stack_direction (0, argc + !argv + 20) < 0;
|
||||
}])],
|
||||
[ac_cv_c_stack_direction=1],
|
||||
[ac_cv_c_stack_direction=-1],
|
||||
[ac_cv_c_stack_direction=0])])
|
||||
AH_VERBATIM([STACK_DIRECTION],
|
||||
[/* If using the C implementation of alloca, define if you know the
|
||||
direction of stack growth for your system; otherwise it will be
|
||||
automatically deduced at runtime.
|
||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||
@%:@undef STACK_DIRECTION])dnl
|
||||
AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)
|
||||
])# _AC_LIBOBJ_ALLOCA
|
||||
])
|
||||
|
|
16
m4/ceil.m4
16
m4/ceil.m4
|
@ -1,4 +1,4 @@
|
|||
# ceil.m4 serial 6
|
||||
# ceil.m4 serial 8
|
||||
dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
@ -28,12 +28,18 @@ AC_DEFUN([gl_FUNC_CEIL],
|
|||
#include <math.h>
|
||||
]gl_DOUBLE_MINUS_ZERO_CODE[
|
||||
]gl_DOUBLE_SIGNBIT_CODE[
|
||||
int main()
|
||||
static double dummy (double f) { return 0; }
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
double (*my_ceil) (double) = argc ? ceil : dummy;
|
||||
int result = 0;
|
||||
/* Test whether ceil (-0.0) is -0.0. */
|
||||
if (signbitd (minus_zerod) && !signbitd (ceil (minus_zerod)))
|
||||
return 1;
|
||||
return 0;
|
||||
if (signbitd (minus_zerod) && !signbitd (my_ceil (minus_zerod)))
|
||||
result |= 1;
|
||||
/* Test whether ceil (-0.3) is -0.0. */
|
||||
if (signbitd (-0.3) && !signbitd (my_ceil (-0.3)))
|
||||
result |= 2;
|
||||
return result;
|
||||
}
|
||||
]])],
|
||||
[gl_cv_func_ceil_ieee=yes],
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# float_h.m4 serial 6
|
||||
# float_h.m4 serial 7
|
||||
dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
@ -9,12 +9,41 @@ AC_DEFUN([gl_FLOAT_H],
|
|||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
FLOAT_H=
|
||||
REPLACE_FLOAT_LDBL=0
|
||||
case "$host_os" in
|
||||
beos* | openbsd* | mirbsd*)
|
||||
aix* | beos* | openbsd* | mirbsd* | irix*)
|
||||
FLOAT_H=float.h
|
||||
gl_NEXT_HEADERS([float.h])
|
||||
;;
|
||||
freebsd*)
|
||||
case "$host_cpu" in
|
||||
changequote(,)dnl
|
||||
i[34567]86 )
|
||||
changequote([,])dnl
|
||||
FLOAT_H=float.h
|
||||
;;
|
||||
x86_64 )
|
||||
# On x86_64 systems, the C compiler may still be generating
|
||||
# 32-bit code.
|
||||
AC_EGREP_CPP([yes],
|
||||
[#if defined __LP64__ || defined __x86_64__ || defined __amd64__
|
||||
yes
|
||||
#endif],
|
||||
[],
|
||||
[FLOAT_H=float.h])
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
case "$host_os" in
|
||||
aix* | freebsd*)
|
||||
if test -n "$FLOAT_H"; then
|
||||
REPLACE_FLOAT_LDBL=1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if test -n "$FLOAT_H"; then
|
||||
gl_NEXT_HEADERS([float.h])
|
||||
fi
|
||||
AC_SUBST([FLOAT_H])
|
||||
AM_CONDITIONAL([GL_GENERATE_FLOAT_H], [test -n "$FLOAT_H"])
|
||||
])
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# floor.m4 serial 6
|
||||
# floor.m4 serial 7
|
||||
dnl Copyright (C) 2007, 2009-2011 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
@ -28,10 +28,12 @@ AC_DEFUN([gl_FUNC_FLOOR],
|
|||
#include <math.h>
|
||||
]gl_DOUBLE_MINUS_ZERO_CODE[
|
||||
]gl_DOUBLE_SIGNBIT_CODE[
|
||||
int main()
|
||||
static double dummy (double f) { return 0; }
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
double (*my_floor) (double) = argc ? floor : dummy;
|
||||
/* Test whether floor (-0.0) is -0.0. */
|
||||
if (signbitd (minus_zerod) && !signbitd (floor (minus_zerod)))
|
||||
if (signbitd (minus_zerod) && !signbitd (my_floor (minus_zerod)))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -257,6 +257,9 @@ fi
|
|||
gl_MODULE_INDICATOR([fflush])
|
||||
gl_STDIO_MODULE_INDICATOR([fflush])
|
||||
gl_FLOAT_H
|
||||
if test $REPLACE_FLOAT_LDBL = 1; then
|
||||
AC_LIBOBJ([float])
|
||||
fi
|
||||
gl_FUNC_FLOCK
|
||||
if test $HAVE_FLOCK = 0; then
|
||||
AC_LIBOBJ([flock])
|
||||
|
@ -778,6 +781,7 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
lib/fd-hook.h
|
||||
lib/fflush.c
|
||||
lib/float+.h
|
||||
lib/float.c
|
||||
lib/float.in.h
|
||||
lib/flock.c
|
||||
lib/floor.c
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# isinf.m4 serial 4
|
||||
# isinf.m4 serial 5
|
||||
dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
@ -11,7 +11,7 @@ AC_DEFUN([gl_ISINF],
|
|||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||||
AC_CHECK_DECLS([isinf], , , [#include <math.h>])
|
||||
if test "$ac_cv_have_decl_isinf" = yes; then
|
||||
gl_CHECK_MATH_LIB([ISINF_LIBM], [x = isinf (x);])
|
||||
gl_CHECK_MATH_LIB([ISINF_LIBM], [x = isinf (x) + isinf ((float) x);])
|
||||
if test "$ISINF_LIBM" != missing; then
|
||||
dnl Test whether isinf() on 'long double' works.
|
||||
gl_ISINFL_WORKS
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# serial 22
|
||||
# serial 23
|
||||
|
||||
# Copyright (C) 1997-2001, 2003-2011 Free Software Foundation, Inc.
|
||||
#
|
||||
|
@ -15,7 +15,7 @@ AC_DEFUN([gl_FUNC_LSTAT],
|
|||
dnl "#define lstat stat", and lstat.c is a no-op.
|
||||
AC_CHECK_FUNCS_ONCE([lstat])
|
||||
if test $ac_cv_func_lstat = yes; then
|
||||
AC_REQUIRE([AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
|
||||
AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
|
||||
if test $gl_cv_func_lstat_dereferences_slashed_symlink = no; then
|
||||
REPLACE_LSTAT=1
|
||||
fi
|
||||
|
|
|
@ -27,18 +27,18 @@ AC_DEFUN([gl_FUNC_MMAP_ANON],
|
|||
gl_have_mmap_anonymous=no
|
||||
if test $gl_have_mmap = yes; then
|
||||
AC_MSG_CHECKING([for MAP_ANONYMOUS])
|
||||
AC_EGREP_CPP([I cant identify this map.], [
|
||||
AC_EGREP_CPP([I cant identify this map], [
|
||||
#include <sys/mman.h>
|
||||
#ifdef MAP_ANONYMOUS
|
||||
I cant identify this map.
|
||||
I cant identify this map
|
||||
#endif
|
||||
],
|
||||
[gl_have_mmap_anonymous=yes])
|
||||
if test $gl_have_mmap_anonymous != yes; then
|
||||
AC_EGREP_CPP([I cant identify this map.], [
|
||||
AC_EGREP_CPP([I cant identify this map], [
|
||||
#include <sys/mman.h>
|
||||
#ifdef MAP_ANON
|
||||
I cant identify this map.
|
||||
I cant identify this map
|
||||
#endif
|
||||
],
|
||||
[AC_DEFINE([MAP_ANONYMOUS], [MAP_ANON],
|
||||
|
|
11
m4/printf.m4
11
m4/printf.m4
|
@ -1,4 +1,4 @@
|
|||
# printf.m4 serial 42
|
||||
# printf.m4 serial 43
|
||||
dnl Copyright (C) 2003, 2007-2011 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
@ -892,7 +892,8 @@ dnl On mingw, precisions larger than 512 are treated like 512, in integer,
|
|||
dnl floating-point or pointer output. On Solaris 10/x86, precisions larger
|
||||
dnl than 510 in floating-point output crash the program. On Solaris 10/SPARC,
|
||||
dnl precisions larger than 510 in floating-point output yield wrong results.
|
||||
dnl On BeOS, precisions larger than 1044 crash the program.
|
||||
dnl On AIX 7.1, precisions larger than 998 in floating-point output yield
|
||||
dnl wrong results. On BeOS, precisions larger than 1044 crash the program.
|
||||
dnl Result is gl_cv_func_printf_precision.
|
||||
|
||||
AC_DEFUN([gl_PRINTF_PRECISION],
|
||||
|
@ -921,6 +922,9 @@ int main ()
|
|||
if (sprintf (buf, "%.511f %d", 1.0, 33, 44) < 511 + 5
|
||||
|| buf[0] != '1')
|
||||
result |= 4;
|
||||
if (sprintf (buf, "%.999f %d", 1.0, 33, 44) < 999 + 5
|
||||
|| buf[0] != '1')
|
||||
result |= 4;
|
||||
return result;
|
||||
}]])],
|
||||
[gl_cv_func_printf_precision=yes],
|
||||
|
@ -1465,7 +1469,8 @@ dnl Solaris 11 2010-11 . . # # # . . # . . . # . . .
|
|||
dnl Solaris 10 . . # # # . . # . . . # # . . . . . . .
|
||||
dnl Solaris 2.6 ... 9 # . # # # # . # . . . # # . . . # . . .
|
||||
dnl Solaris 2.5.1 # . # # # # . # . . . # . . # # # # # #
|
||||
dnl AIX 5.2, 7.1 . . # # # . . . . . . # . . . . . . . .
|
||||
dnl AIX 7.1 . . # # # . . . . . . # # . . . . . . .
|
||||
dnl AIX 5.2 . . # # # . . . . . . # . . . . . . . .
|
||||
dnl AIX 4.3.2, 5.1 # . # # # # . . . . . # . . . . # . . .
|
||||
dnl HP-UX 11.31 . . . . # . . . . . . # . . . . # # . .
|
||||
dnl HP-UX 11.{00,11,23} # . . . # # . . . . . # . . . . # # . #
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# trunc.m4 serial 6
|
||||
# trunc.m4 serial 7
|
||||
dnl Copyright (C) 2007, 2010-2011 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
|
@ -56,10 +56,12 @@ AC_DEFUN([gl_FUNC_TRUNC],
|
|||
#include <math.h>
|
||||
]gl_DOUBLE_MINUS_ZERO_CODE[
|
||||
]gl_DOUBLE_SIGNBIT_CODE[
|
||||
int main()
|
||||
static double dummy (double f) { return 0; }
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
double (*my_trunc) (double) = argc ? trunc : dummy;
|
||||
/* Test whether trunc (-0.0) is -0.0. */
|
||||
if (signbitd (minus_zerod) && !signbitd (trunc (minus_zerod)))
|
||||
if (signbitd (minus_zerod) && !signbitd (my_trunc (minus_zerod)))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
79
maint.mk
79
maint.mk
|
@ -405,11 +405,11 @@ sc_prohibit_HAVE_MBRTOWC:
|
|||
$(_sc_search_regexp)
|
||||
|
||||
# To use this "command" macro, you must first define two shell variables:
|
||||
# h: the header, enclosed in <> or ""
|
||||
# h: the header name, with no enclosing <> or ""
|
||||
# re: a regular expression that matches IFF something provided by $h is used.
|
||||
define _sc_header_without_use
|
||||
dummy=; : so we do not need a semicolon before each use; \
|
||||
h_esc=`echo "$$h"|sed 's/\./\\\\./g'`; \
|
||||
h_esc=`echo '[<"]'"$$h"'[">]'|sed 's/\./\\\\./g'`; \
|
||||
if $(VC_LIST_EXCEPT) | grep -l '\.c$$' > /dev/null; then \
|
||||
files=$$(grep -l '^# *include '"$$h_esc" \
|
||||
$$($(VC_LIST_EXCEPT) | grep '\.c$$')) && \
|
||||
|
@ -422,42 +422,42 @@ endef
|
|||
|
||||
# Prohibit the inclusion of assert.h without an actual use of assert.
|
||||
sc_prohibit_assert_without_use:
|
||||
@h='<assert.h>' re='\<assert *\(' $(_sc_header_without_use)
|
||||
@h='assert.h' re='\<assert *\(' $(_sc_header_without_use)
|
||||
|
||||
# Prohibit the inclusion of close-stream.h without an actual use.
|
||||
sc_prohibit_close_stream_without_use:
|
||||
@h='"close-stream.h"' re='\<close_stream *\(' $(_sc_header_without_use)
|
||||
@h='close-stream.h' re='\<close_stream *\(' $(_sc_header_without_use)
|
||||
|
||||
# Prohibit the inclusion of getopt.h without an actual use.
|
||||
sc_prohibit_getopt_without_use:
|
||||
@h='<getopt.h>' re='\<getopt(_long)? *\(' $(_sc_header_without_use)
|
||||
@h='getopt.h' re='\<getopt(_long)? *\(' $(_sc_header_without_use)
|
||||
|
||||
# Don't include quotearg.h unless you use one of its functions.
|
||||
sc_prohibit_quotearg_without_use:
|
||||
@h='"quotearg.h"' re='\<quotearg(_[^ ]+)? *\(' $(_sc_header_without_use)
|
||||
@h='quotearg.h' re='\<quotearg(_[^ ]+)? *\(' $(_sc_header_without_use)
|
||||
|
||||
# Don't include quote.h unless you use one of its functions.
|
||||
sc_prohibit_quote_without_use:
|
||||
@h='"quote.h"' re='\<quote(_n)? *\(' $(_sc_header_without_use)
|
||||
@h='quote.h' re='\<quote(_n)? *\(' $(_sc_header_without_use)
|
||||
|
||||
# Don't include this header unless you use one of its functions.
|
||||
sc_prohibit_long_options_without_use:
|
||||
@h='"long-options.h"' re='\<parse_long_options *\(' \
|
||||
@h='long-options.h' re='\<parse_long_options *\(' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
# Don't include this header unless you use one of its functions.
|
||||
sc_prohibit_inttostr_without_use:
|
||||
@h='"inttostr.h"' re='\<(off|[iu]max|uint)tostr *\(' \
|
||||
@h='inttostr.h' re='\<(off|[iu]max|uint)tostr *\(' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
# Don't include this header unless you use one of its functions.
|
||||
sc_prohibit_ignore_value_without_use:
|
||||
@h='"ignore-value.h"' re='\<ignore_(value|ptr) *\(' \
|
||||
@h='ignore-value.h' re='\<ignore_(value|ptr) *\(' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
# Don't include this header unless you use one of its functions.
|
||||
sc_prohibit_error_without_use:
|
||||
@h='"error.h"' \
|
||||
@h='error.h' \
|
||||
re='\<error(_at_line|_print_progname|_one_per_line|_message_count)? *\('\
|
||||
$(_sc_header_without_use)
|
||||
|
||||
|
@ -480,7 +480,7 @@ sc_prohibit_error_without_use:
|
|||
_xa1 = x(((2n?)?re|char|n(re|m)|[cmz])alloc|alloc_(oversized|die)|(mem|str)dup)
|
||||
_xa2 = X([CZ]|N?M)ALLOC
|
||||
sc_prohibit_xalloc_without_use:
|
||||
@h='"xalloc.h"' \
|
||||
@h='xalloc.h' \
|
||||
re='\<($(_xa1)|$(_xa2)) *\('\
|
||||
$(_sc_header_without_use)
|
||||
|
||||
|
@ -491,46 +491,46 @@ clear|delete|free|get_(first|next)|insert|lookup|print_statistics|reset_tuning
|
|||
_hash_fn = \<($(_hash_re)) *\(
|
||||
_hash_struct = (struct )?\<[Hh]ash_(table|tuning)\>
|
||||
sc_prohibit_hash_without_use:
|
||||
@h='"hash.h"' \
|
||||
@h='hash.h' \
|
||||
re='$(_hash_fn)|$(_hash_struct)'\
|
||||
$(_sc_header_without_use)
|
||||
|
||||
sc_prohibit_cloexec_without_use:
|
||||
@h='"cloexec.h"' re='\<(set_cloexec_flag|dup_cloexec) *\(' \
|
||||
@h='cloexec.h' re='\<(set_cloexec_flag|dup_cloexec) *\(' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
sc_prohibit_posixver_without_use:
|
||||
@h='"posixver.h"' re='\<posix2_version *\(' $(_sc_header_without_use)
|
||||
@h='posixver.h' re='\<posix2_version *\(' $(_sc_header_without_use)
|
||||
|
||||
sc_prohibit_same_without_use:
|
||||
@h='"same.h"' re='\<same_name *\(' $(_sc_header_without_use)
|
||||
@h='same.h' re='\<same_name *\(' $(_sc_header_without_use)
|
||||
|
||||
sc_prohibit_hash_pjw_without_use:
|
||||
@h='"hash-pjw.h"' \
|
||||
@h='hash-pjw.h' \
|
||||
re='\<hash_pjw *\(' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
sc_prohibit_safe_read_without_use:
|
||||
@h='"safe-read.h"' re='(\<SAFE_READ_ERROR\>|\<safe_read *\()' \
|
||||
@h='safe-read.h' re='(\<SAFE_READ_ERROR\>|\<safe_read *\()' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
sc_prohibit_argmatch_without_use:
|
||||
@h='"argmatch.h"' \
|
||||
@h='argmatch.h' \
|
||||
re='(\<(ARRAY_CARDINALITY|X?ARGMATCH(|_TO_ARGUMENT|_VERIFY))\>|\<argmatch(_exit_fn|_(in)?valid) *\()' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
sc_prohibit_canonicalize_without_use:
|
||||
@h='"canonicalize.h"' \
|
||||
@h='canonicalize.h' \
|
||||
re='CAN_(EXISTING|ALL_BUT_LAST|MISSING)|canonicalize_(mode_t|filename_mode)' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
sc_prohibit_root_dev_ino_without_use:
|
||||
@h='"root-dev-ino.h"' \
|
||||
@h='root-dev-ino.h' \
|
||||
re='(\<ROOT_DEV_INO_(CHECK|WARN)\>|\<get_root_dev_ino *\()' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
sc_prohibit_openat_without_use:
|
||||
@h='"openat.h"' \
|
||||
@h='openat.h' \
|
||||
re='\<(openat_(permissive|needs_fchdir|(save|restore)_fail)|l?(stat|ch(own|mod))at|(euid)?accessat)\>' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
|
@ -538,7 +538,7 @@ sc_prohibit_openat_without_use:
|
|||
ctype_re = isalnum|isalpha|isascii|isblank|iscntrl|isdigit|isgraph|islower\
|
||||
|isprint|ispunct|isspace|isupper|isxdigit|tolower|toupper
|
||||
sc_prohibit_c_ctype_without_use:
|
||||
@h='[<"]c-ctype.h[">]' re='\<c_($(ctype_re)) *\(' \
|
||||
@h='c-ctype.h' re='\<c_($(ctype_re)) *\(' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
_empty =
|
||||
|
@ -574,50 +574,56 @@ _sig_syms_re = $(subst $(_sp),|,$(strip $(_sig_names) $(_sig_types_and_consts)))
|
|||
|
||||
# Prohibit the inclusion of signal.h without an actual use.
|
||||
sc_prohibit_signal_without_use:
|
||||
@h='<signal.h>' \
|
||||
@h='signal.h' \
|
||||
re='\<($(_sig_function_re)) *\(|\<($(_sig_syms_re))\>' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
# Don't include stdio--.h unless you use one of its functions.
|
||||
sc_prohibit_stdio--_without_use:
|
||||
@h='"stdio--.h"' re='\<((f(re)?|p)open|tmpfile) *\(' \
|
||||
@h='stdio--.h' re='\<((f(re)?|p)open|tmpfile) *\(' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
# Don't include stdio-safer.h unless you use one of its functions.
|
||||
sc_prohibit_stdio-safer_without_use:
|
||||
@h='"stdio-safer.h"' re='\<((f(re)?|p)open|tmpfile)_safer *\(' \
|
||||
@h='stdio-safer.h' re='\<((f(re)?|p)open|tmpfile)_safer *\(' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
# Prohibit the inclusion of strings.h without a sensible use.
|
||||
# Using the likes of bcmp, bcopy, bzero, index or rindex is not sensible.
|
||||
sc_prohibit_strings_without_use:
|
||||
@h='<strings.h>' \
|
||||
@h='strings.h' \
|
||||
re='\<(strn?casecmp|ffs(ll)?)\>' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
# Get the list of symbol names with this:
|
||||
# perl -lne '/^# *define (\w+)\(/ and print $1' lib/intprops.h|grep -v '^s'|fmt
|
||||
# perl -lne '/^# *define ([A-Z]\w+)\(/ and print $1' lib/intprops.h|fmt
|
||||
_intprops_names = \
|
||||
TYPE_IS_INTEGER TYPE_TWOS_COMPLEMENT TYPE_ONES_COMPLEMENT \
|
||||
TYPE_SIGNED_MAGNITUDE TYPE_SIGNED TYPE_MINIMUM TYPE_MAXIMUM \
|
||||
INT_STRLEN_BOUND INT_BUFSIZE_BOUND
|
||||
INT_BITS_STRLEN_BOUND INT_STRLEN_BOUND INT_BUFSIZE_BOUND \
|
||||
INT_ADD_RANGE_OVERFLOW INT_SUBTRACT_RANGE_OVERFLOW \
|
||||
INT_NEGATE_RANGE_OVERFLOW INT_MULTIPLY_RANGE_OVERFLOW \
|
||||
INT_DIVIDE_RANGE_OVERFLOW INT_REMAINDER_RANGE_OVERFLOW \
|
||||
INT_LEFT_SHIFT_RANGE_OVERFLOW INT_ADD_OVERFLOW INT_SUBTRACT_OVERFLOW \
|
||||
INT_NEGATE_OVERFLOW INT_MULTIPLY_OVERFLOW INT_DIVIDE_OVERFLOW \
|
||||
INT_REMAINDER_OVERFLOW INT_LEFT_SHIFT_OVERFLOW
|
||||
_intprops_syms_re = $(subst $(_sp),|,$(strip $(_intprops_names)))
|
||||
# Prohibit the inclusion of intprops.h without an actual use.
|
||||
sc_prohibit_intprops_without_use:
|
||||
@h='"intprops.h"' \
|
||||
@h='intprops.h' \
|
||||
re='\<($(_intprops_syms_re)) *\(' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
_stddef_syms_re = NULL|offsetof|ptrdiff_t|size_t|wchar_t
|
||||
# Prohibit the inclusion of stddef.h without an actual use.
|
||||
sc_prohibit_stddef_without_use:
|
||||
@h='<stddef.h>' \
|
||||
@h='stddef.h' \
|
||||
re='\<($(_stddef_syms_re)) *\(' \
|
||||
$(_sc_header_without_use)
|
||||
|
||||
# Don't include xfreopen.h unless you use one of its functions.
|
||||
sc_prohibit_xfreopen_without_use:
|
||||
@h='"xfreopen.h"' re='\<xfreopen *\(' $(_sc_header_without_use)
|
||||
@h='xfreopen.h' re='\<xfreopen *\(' $(_sc_header_without_use)
|
||||
|
||||
sc_obsolete_symbols:
|
||||
@prohibit='\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \
|
||||
|
@ -1106,6 +1112,7 @@ sc_copyright_check:
|
|||
# the other init.sh-using tests also get it right.
|
||||
_hv_file ?= $(srcdir)/tests/help-version
|
||||
_hv_regex_weak ?= ^ *\. .*/init\.sh"
|
||||
# Fix syntax-highlighters "
|
||||
_hv_regex_strong ?= ^ *\. "\$${srcdir=\.}/init\.sh"
|
||||
sc_cross_check_PATH_usage_in_tests:
|
||||
@if test -f $(_hv_file); then \
|
||||
|
@ -1133,6 +1140,14 @@ sc_Wundef_boolean:
|
|||
halt='Use 0 or 1 for macro values' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
# Even if you use pathmax.h to guarantee that PATH_MAX is defined, it might
|
||||
# not be constant, or might overflow a stack. In general, use PATH_MAX as
|
||||
# a limit, not an array or alloca size.
|
||||
sc_prohibit_path_max_allocation:
|
||||
@prohibit='(\balloca *\([^)]*|\[[^]]*)PATH_MAX' \
|
||||
halt='Avoid stack allocations of size PATH_MAX' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_vulnerable_makefile_CVE-2009-4029:
|
||||
@prohibit='perm -777 -exec chmod a\+rwx|chmod 777 \$$\(distdir\)' \
|
||||
in_files=$$(find $(srcdir) -name Makefile.in) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue