SHA256
1
0
forked from pool/glibc

Accepting request 360162 from home:Andreas_Schwab:Factory

- isinf-cxx11-conflict.patch: Fix isinf/isnan declaration conflict with
  C++11 (bsc#963700, BZ #19439)

OBS-URL: https://build.opensuse.org/request/show/360162
OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=422
This commit is contained in:
Andreas Schwab 2016-02-18 15:07:14 +00:00 committed by Git OBS Bridge
parent 5005d4836d
commit 70e1405cd7
7 changed files with 154 additions and 0 deletions

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Thu Feb 18 13:22:19 UTC 2016 - schwab@suse.de
- isinf-cxx11-conflict.patch: Fix isinf/isnan declaration conflict with
C++11 (bsc#963700, BZ #19439)
-------------------------------------------------------------------
Wed Feb 17 09:48:26 UTC 2016 - schwab@suse.de

View File

@ -266,6 +266,8 @@ Patch1014: errorcheck-mutex-no-elision.patch
Patch1015: refactor-nan-parsing.patch
# PATCH-FIX-UPSTREAM Fix getaddrinfo stack-based buffer overflow (CVE-2015-7547, BZ #18665)
Patch1016: send-dg-buffer-overflow.patch
# PATCH-FIX-UPSTREAM Fix isinf/isnan declaration conflict with C++11 (BZ #19439)
Patch1017: isinf-cxx11-conflict.patch
###
# Patches awaiting upstream approval
@ -510,6 +512,7 @@ rm nscd/s-stamp
%patch1014 -p1
%patch1015 -p1
%patch1016 -p1
%patch1017 -p1
%patch2000 -p1
%patch2002 -p1

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Thu Feb 18 13:22:19 UTC 2016 - schwab@suse.de
- isinf-cxx11-conflict.patch: Fix isinf/isnan declaration conflict with
C++11 (bsc#963700, BZ #19439)
-------------------------------------------------------------------
Wed Feb 17 09:48:26 UTC 2016 - schwab@suse.de

View File

@ -265,6 +265,8 @@ Patch1014: errorcheck-mutex-no-elision.patch
Patch1015: refactor-nan-parsing.patch
# PATCH-FIX-UPSTREAM Fix getaddrinfo stack-based buffer overflow (CVE-2015-7547, BZ #18665)
Patch1016: send-dg-buffer-overflow.patch
# PATCH-FIX-UPSTREAM Fix isinf/isnan declaration conflict with C++11 (BZ #19439)
Patch1017: isinf-cxx11-conflict.patch
###
# Patches awaiting upstream approval
@ -510,6 +512,7 @@ rm nscd/s-stamp
%patch1014 -p1
%patch1015 -p1
%patch1016 -p1
%patch1017 -p1
%patch2000 -p1
%patch2002 -p1

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Thu Feb 18 13:22:19 UTC 2016 - schwab@suse.de
- isinf-cxx11-conflict.patch: Fix isinf/isnan declaration conflict with
C++11 (bsc#963700, BZ #19439)
-------------------------------------------------------------------
Wed Feb 17 09:48:26 UTC 2016 - schwab@suse.de

View File

@ -266,6 +266,8 @@ Patch1014: errorcheck-mutex-no-elision.patch
Patch1015: refactor-nan-parsing.patch
# PATCH-FIX-UPSTREAM Fix getaddrinfo stack-based buffer overflow (CVE-2015-7547, BZ #18665)
Patch1016: send-dg-buffer-overflow.patch
# PATCH-FIX-UPSTREAM Fix isinf/isnan declaration conflict with C++11 (BZ #19439)
Patch1017: isinf-cxx11-conflict.patch
###
# Patches awaiting upstream approval
@ -510,6 +512,7 @@ rm nscd/s-stamp
%patch1014 -p1
%patch1015 -p1
%patch1016 -p1
%patch1017 -p1
%patch2000 -p1
%patch2002 -p1

127
isinf-cxx11-conflict.patch Normal file
View File

@ -0,0 +1,127 @@
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-01-11 Jonathan Wakely <jwakely.gcc@gmail.com>
Adhemerval Zanella <adhemerval.zanella@linaro.org>
[BZ #19439]
* math/bits/mathcalls.h
[!__cplusplus || __cplusplus < 201103L] (isinf): Do not declare
prototype.
[!__cplusplus || __cplusplus < 201103L] (isnan): Likewise.
Index: glibc-2.22/math/Makefile
===================================================================
--- glibc-2.22.orig/math/Makefile
+++ glibc-2.22/math/Makefile
@@ -108,6 +108,7 @@ tests = test-matherr test-fenv atest-exp
test-tgmath-ret bug-nextafter bug-nexttoward bug-tgmath1 \
test-tgmath-int test-tgmath2 test-powl tst-CMPLX tst-CMPLX2 test-snan \
test-fenv-tls test-fenv-preserve test-fenv-return test-fenvinline \
+ test-math-isinff \
$(tests-static)
tests-static = test-fpucw-static test-fpucw-ieee-static
# We do the `long double' tests only if this data type is available and
@@ -184,6 +185,8 @@ CPPFLAGS-test-ildoubl.c = -U__LIBC_INTER
$(libm-test-fast-math-cflags)
+CFLAGS-test-math-isinff.cc = -std=gnu++11
+
# The -lieee module sets the _LIB_VERSION_ switch to IEEE mode
# for error handling in the -lm functions.
install-lib += libieee.a
Index: glibc-2.22/math/bits/mathcalls.h
===================================================================
--- glibc-2.22.orig/math/bits/mathcalls.h
+++ glibc-2.22/math/bits/mathcalls.h
@@ -196,9 +196,13 @@ __MATHDECL_1 (int,__finite,, (_Mdouble_
_Mdouble_END_NAMESPACE
#ifdef __USE_MISC
+# 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
is +Infinity, -1 if it is -Infinity. */
__MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));
+# endif
/* Return nonzero if VALUE is finite and not NaN. */
__MATHDECL_1 (int,finite,, (_Mdouble_ __value)) __attribute__ ((__const__));
@@ -230,8 +234,12 @@ __END_NAMESPACE_C99
__MATHDECL_1 (int,__isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
#if defined __USE_MISC || defined __USE_XOPEN
+# 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. */
__MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
+# endif
/* Bessel functions. */
__MATHCALL (j0,, (_Mdouble_));
Index: glibc-2.22/math/test-math-isinff.cc
===================================================================
--- /dev/null
+++ glibc-2.22/math/test-math-isinff.cc
@@ -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"