aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/glibc/glibc/0030-sysdeps-ieee754-prevent-maybe-uninitialized-errors-w.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-core/glibc/glibc/0030-sysdeps-ieee754-prevent-maybe-uninitialized-errors-w.patch')
-rw-r--r--meta/recipes-core/glibc/glibc/0030-sysdeps-ieee754-prevent-maybe-uninitialized-errors-w.patch138
1 files changed, 138 insertions, 0 deletions
diff --git a/meta/recipes-core/glibc/glibc/0030-sysdeps-ieee754-prevent-maybe-uninitialized-errors-w.patch b/meta/recipes-core/glibc/glibc/0030-sysdeps-ieee754-prevent-maybe-uninitialized-errors-w.patch
new file mode 100644
index 0000000000..350a2567ce
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/0030-sysdeps-ieee754-prevent-maybe-uninitialized-errors-w.patch
@@ -0,0 +1,138 @@
+From 1eb9f04cf243712155063b848a40b5c103985bf5 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <martin.jansa@gmail.com>
+Date: Mon, 17 Dec 2018 21:32:23 +0000
+Subject: [PATCH 30/31] sysdeps/ieee754: prevent maybe-uninitialized errors
+ with -O [BZ #19444]
+
+With -O included in CFLAGS it fails to build with:
+
+../sysdeps/ieee754/ldbl-96/e_jnl.c: In function '__ieee754_jnl':
+../sysdeps/ieee754/ldbl-96/e_jnl.c:146:20: error: 'temp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ b = invsqrtpi * temp / sqrtl (x);
+ ~~~~~~~~~~^~~~~~
+../sysdeps/ieee754/ldbl-96/e_jnl.c: In function '__ieee754_ynl':
+../sysdeps/ieee754/ldbl-96/e_jnl.c:375:16: error: 'temp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ b = invsqrtpi * temp / sqrtl (x);
+ ~~~~~~~~~~^~~~~~
+../sysdeps/ieee754/dbl-64/e_jn.c: In function '__ieee754_jn':
+../sysdeps/ieee754/dbl-64/e_jn.c:113:20: error: 'temp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ b = invsqrtpi * temp / sqrt (x);
+ ~~~~~~~~~~^~~~~~
+../sysdeps/ieee754/dbl-64/e_jn.c: In function '__ieee754_yn':
+../sysdeps/ieee754/dbl-64/e_jn.c:320:16: error: 'temp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+ b = invsqrtpi * temp / sqrt (x);
+ ~~~~~~~~~~^~~~~~
+
+Build tested with Yocto for ARM, AARCH64, X86, X86_64, PPC, MIPS, MIPS64
+with -O, -O1, -Os.
+For soft-fp ARM it needs one more fix for -O1:
+https://sourceware.org/ml/libc-alpha/2018-09/msg00300.html
+For AARCH64 it needs one more fix in locale for -Os:
+https://sourceware.org/ml/libc-alpha/2018-09/msg00539.html
+
+ [BZ #19444]
+ * sysdeps/ieee754/dbl-96/e_jnl.c: Fix build with -O
+ * sysdeps/ieee754/ldbl-96/e_jnl.c: Likewise.
+ * sysdeps/ieee754/ldbl-128/e_jnl.c: Likewise.
+ * sysdeps/ieee754/ldbl-128ibm/e_jnl.c: Likewise.
+
+Upstream-Status: Submitted [https://patchwork.ozlabs.org/patch/1014765]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ sysdeps/ieee754/dbl-64/e_jn.c | 2 ++
+ sysdeps/ieee754/ldbl-128/e_jnl.c | 4 ++++
+ sysdeps/ieee754/ldbl-128ibm/e_jnl.c | 4 ++++
+ sysdeps/ieee754/ldbl-96/e_jnl.c | 4 ++++
+ 4 files changed, 14 insertions(+)
+
+diff --git a/sysdeps/ieee754/dbl-64/e_jn.c b/sysdeps/ieee754/dbl-64/e_jn.c
+index aff06ead16..90a7e77270 100644
+--- a/sysdeps/ieee754/dbl-64/e_jn.c
++++ b/sysdeps/ieee754/dbl-64/e_jn.c
+@@ -109,6 +109,7 @@ __ieee754_jn (int n, double x)
+ case 1: temp = -c + s; break;
+ case 2: temp = -c - s; break;
+ case 3: temp = c - s; break;
++ default: __builtin_unreachable ();
+ }
+ b = invsqrtpi * temp / sqrt (x);
+ }
+@@ -316,6 +317,7 @@ __ieee754_yn (int n, double x)
+ case 1: temp = -s - c; break;
+ case 2: temp = -s + c; break;
+ case 3: temp = s + c; break;
++ default: __builtin_unreachable ();
+ }
+ b = invsqrtpi * temp / sqrt (x);
+ }
+diff --git a/sysdeps/ieee754/ldbl-128/e_jnl.c b/sysdeps/ieee754/ldbl-128/e_jnl.c
+index 7610d18c67..3c90072a22 100644
+--- a/sysdeps/ieee754/ldbl-128/e_jnl.c
++++ b/sysdeps/ieee754/ldbl-128/e_jnl.c
+@@ -150,6 +150,8 @@ __ieee754_jnl (int n, _Float128 x)
+ case 3:
+ temp = c - s;
+ break;
++ default:
++ __builtin_unreachable ();
+ }
+ b = invsqrtpi * temp / sqrtl (x);
+ }
+@@ -386,6 +388,8 @@ __ieee754_ynl (int n, _Float128 x)
+ case 3:
+ temp = s + c;
+ break;
++ default:
++ __builtin_unreachable ();
+ }
+ b = invsqrtpi * temp / sqrtl (x);
+ }
+diff --git a/sysdeps/ieee754/ldbl-128ibm/e_jnl.c b/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
+index 50b4558e74..478824c8fa 100644
+--- a/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
++++ b/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
+@@ -150,6 +150,8 @@ __ieee754_jnl (int n, long double x)
+ case 3:
+ temp = c - s;
+ break;
++ default:
++ __builtin_unreachable ();
+ }
+ b = invsqrtpi * temp / sqrtl (x);
+ }
+@@ -386,6 +388,8 @@ __ieee754_ynl (int n, long double x)
+ case 3:
+ temp = s + c;
+ break;
++ default:
++ __builtin_unreachable ();
+ }
+ b = invsqrtpi * temp / sqrtl (x);
+ }
+diff --git a/sysdeps/ieee754/ldbl-96/e_jnl.c b/sysdeps/ieee754/ldbl-96/e_jnl.c
+index 855190841b..6c1c4b4653 100644
+--- a/sysdeps/ieee754/ldbl-96/e_jnl.c
++++ b/sysdeps/ieee754/ldbl-96/e_jnl.c
+@@ -143,6 +143,8 @@ __ieee754_jnl (int n, long double x)
+ case 3:
+ temp = c - s;
+ break;
++ default:
++ __builtin_unreachable ();
+ }
+ b = invsqrtpi * temp / sqrtl (x);
+ }
+@@ -372,6 +374,8 @@ __ieee754_ynl (int n, long double x)
+ case 3:
+ temp = s + c;
+ break;
++ default:
++ __builtin_unreachable ();
+ }
+ b = invsqrtpi * temp / sqrtl (x);
+ }
+--
+2.20.1
+