mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-08 14:20:07 +00:00
Ensure isinff, isinfl, isnanf, and isnanl are defined (Bug 19439)
In ICO C++11 mode ensure that isinff, isinfl, isnanf, and isnanl
are defined. These functions were accidentally removed from the
header as part of commit d9b965fa56
,
but being GNU extensions, they should have been left in place.
This commit is contained in:
parent
1233be7669
commit
3c47c83a97
15
ChangeLog
15
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2016-02-14 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
Carlos O'Donell <carlos@redhat.com>
|
||||||
|
|
||||||
|
[BZ 19439]
|
||||||
|
* math/Makefile (tests): Add test-math-isinff.
|
||||||
|
(CFLAGS-test-math-isinff.cc): Use -std=gnu++11.
|
||||||
|
* math/bits/mathcalls.h [__USE_MISC]: Use
|
||||||
|
'|| __MATH_DECLARING_DOUBLE == 0' to relax definition of
|
||||||
|
functions not in C++11 and which don't conflict e.g. isinff,
|
||||||
|
isinfl etc.
|
||||||
|
* math/test-math-isinff.cc: New file.
|
||||||
|
|
||||||
2016-02-12 Florian Weimer <fweimer@redhat.com>
|
2016-02-12 Florian Weimer <fweimer@redhat.com>
|
||||||
|
|
||||||
* misc/bug18240.c (do_test): Set RLIMIT_AS.
|
* misc/bug18240.c (do_test): Set RLIMIT_AS.
|
||||||
@ -38,7 +51,7 @@
|
|||||||
* misc/Makefile (tests): Add it.
|
* misc/Makefile (tests): Add it.
|
||||||
|
|
||||||
2016-01-28 Steve Ellcey <sellcey@imgtec.com>
|
2016-01-28 Steve Ellcey <sellcey@imgtec.com>
|
||||||
Joseph Myers <joseph@codesourcery.com>
|
Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* sysdeps/mips/memcpy.S (MEMCPY_NAME) [USE_DOUBLE]: Avoid word
|
* sysdeps/mips/memcpy.S (MEMCPY_NAME) [USE_DOUBLE]: Avoid word
|
||||||
load in branch delay slot when less than a word of input left.
|
load in branch delay slot when less than a word of input left.
|
||||||
|
@ -114,6 +114,7 @@ tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
|
|||||||
test-nearbyint-except-2 test-signgam-uchar test-signgam-uchar-init \
|
test-nearbyint-except-2 test-signgam-uchar test-signgam-uchar-init \
|
||||||
test-signgam-uint test-signgam-uint-init test-signgam-ullong \
|
test-signgam-uint test-signgam-uint-init test-signgam-ullong \
|
||||||
test-signgam-ullong-init test-nan-overflow test-nan-payload \
|
test-signgam-ullong-init test-nan-overflow test-nan-payload \
|
||||||
|
test-math-isinff \
|
||||||
$(tests-static)
|
$(tests-static)
|
||||||
tests-static = test-fpucw-static test-fpucw-ieee-static \
|
tests-static = test-fpucw-static test-fpucw-ieee-static \
|
||||||
test-signgam-uchar-static test-signgam-uchar-init-static \
|
test-signgam-uchar-static test-signgam-uchar-init-static \
|
||||||
@ -220,6 +221,8 @@ CFLAGS-test-signgam-ullong-init.c = -std=c99
|
|||||||
CFLAGS-test-signgam-ullong-static.c = -std=c99
|
CFLAGS-test-signgam-ullong-static.c = -std=c99
|
||||||
CFLAGS-test-signgam-ullong-init-static.c = -std=c99
|
CFLAGS-test-signgam-ullong-init-static.c = -std=c99
|
||||||
|
|
||||||
|
CFLAGS-test-math-isinff.cc = -std=gnu++11
|
||||||
|
|
||||||
# The -lieee module sets the _LIB_VERSION_ switch to IEEE mode
|
# The -lieee module sets the _LIB_VERSION_ switch to IEEE mode
|
||||||
# for error handling in the -lm functions.
|
# for error handling in the -lm functions.
|
||||||
install-lib += libieee.a
|
install-lib += libieee.a
|
||||||
|
@ -196,7 +196,9 @@ __MATHDECL_1 (int,__finite,, (_Mdouble_ __value)) __attribute__ ((__const__));
|
|||||||
_Mdouble_END_NAMESPACE
|
_Mdouble_END_NAMESPACE
|
||||||
|
|
||||||
#ifdef __USE_MISC
|
#ifdef __USE_MISC
|
||||||
# if !defined __cplusplus || __cplusplus < 201103L /* Conflicts with C++11. */
|
# if (!defined __cplusplus \
|
||||||
|
|| __cplusplus < 201103L /* isinf conflicts with C++11. */ \
|
||||||
|
|| __MATH_DECLARING_DOUBLE == 0) /* isinff or isinfl don't. */
|
||||||
/* Return 0 if VALUE is finite or NaN, +1 if it
|
/* Return 0 if VALUE is finite or NaN, +1 if it
|
||||||
is +Infinity, -1 if it is -Infinity. */
|
is +Infinity, -1 if it is -Infinity. */
|
||||||
__MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));
|
__MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));
|
||||||
@ -232,7 +234,9 @@ __END_NAMESPACE_C99
|
|||||||
__MATHDECL_1 (int,__isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
|
__MATHDECL_1 (int,__isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
|
||||||
|
|
||||||
#if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
|
#if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
|
||||||
# if !defined __cplusplus || __cplusplus < 201103L /* Conflicts with C++11. */
|
# if (!defined __cplusplus \
|
||||||
|
|| __cplusplus < 201103L /* isnan conflicts with C++11. */ \
|
||||||
|
|| __MATH_DECLARING_DOUBLE == 0) /* isnanf or isnanl don't. */
|
||||||
/* Return nonzero if VALUE is not a number. */
|
/* Return nonzero if VALUE is not a number. */
|
||||||
__MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
|
__MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
|
||||||
# endif
|
# endif
|
||||||
|
48
math/test-math-isinff.cc
Normal file
48
math/test-math-isinff.cc
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/* Test for bug 19439.
|
||||||
|
Copyright (C) 2016 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Marek Polacek <polacek@redhat.com>, 2012.
|
||||||
|
|
||||||
|
The GNU C Library 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 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library 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 the GNU C Library; if not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#define _GNU_SOURCE 1
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
static int
|
||||||
|
do_test (void)
|
||||||
|
{
|
||||||
|
/* Verify that isinff, isinfl, isnanf, and isnanlf are defined
|
||||||
|
in the header under C++11 and can be called. Without the
|
||||||
|
header fix this test will not compile. */
|
||||||
|
if (isinff (1.0f)
|
||||||
|
|| !isinff (INFINITY)
|
||||||
|
|| isinfl (1.0L)
|
||||||
|
|| !isinfl (INFINITY)
|
||||||
|
|| isnanf (2.0f)
|
||||||
|
|| !isnanf (NAN)
|
||||||
|
|| isnanl (2.0L)
|
||||||
|
|| !isnanl (NAN))
|
||||||
|
{
|
||||||
|
printf ("FAIL: Failed to call is* functions.\n");
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
printf ("PASS: Able to call isinff, isinfl, isnanf, and isnanl.\n");
|
||||||
|
exit (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define TEST_FUNCTION do_test ()
|
||||||
|
#include "../test-skeleton.c"
|
Loading…
Reference in New Issue
Block a user