<div dir="ltr"><div dir="ltr"><div>I&#39;ve submitted them now:</div><div><br></div><div dir="ltr"><a href="https://www.sourceware.org/ml/libc-alpha/2018-09/msg00299.html">https://www.sourceware.org/ml/libc-alpha/2018-09/msg00299.html</a><br></div><div dir="ltr"><a href="https://www.sourceware.org/ml/libc-alpha/2018-09/msg00300.html">https://www.sourceware.org/ml/libc-alpha/2018-09/msg00300.html</a><br></div><div dir="ltr"><br></div><div>I didn&#39;t update the Upstream-Status, because it would cause whole world to rebuild again.</div></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Sep 19, 2018 at 6:13 AM Khem Raj &lt;<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">please submit upstream as well<br>
On Sun, Sep 16, 2018 at 10:49 PM Martin Jansa &lt;<a href="mailto:martin.jansa@gmail.com" target="_blank">martin.jansa@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; * tested for qemuarm, qemux86 with -O, -O0, -Os, with gcc<br>
&gt; * to build with -O0 I had to remove restriction from systemtap first<br>
&gt;<br>
&gt; Signed-off-by: Martin Jansa &lt;<a href="mailto:Martin.Jansa@gmail.com" target="_blank">Martin.Jansa@gmail.com</a>&gt;<br>
&gt; ---<br>
&gt;  meta/recipes-core/glibc/glibc.inc             | 12 ---<br>
&gt;  ...4-prevent-maybe-uninitialized-errors.patch | 95 +++++++++++++++++++<br>
&gt;  ...2-soft-fp-ignore-maybe-uninitialized.patch | 72 ++++++++++++++<br>
&gt;  meta/recipes-core/glibc/<a href="http://glibc_2.28.bb" rel="noreferrer" target="_blank">glibc_2.28.bb</a>         |  2 +<br>
&gt;  4 files changed, 169 insertions(+), 12 deletions(-)<br>
&gt;  create mode 100644 meta/recipes-core/glibc/glibc/0031-sysdeps-ieee754-prevent-maybe-uninitialized-errors.patch<br>
&gt;  create mode 100644 meta/recipes-core/glibc/glibc/0032-soft-fp-ignore-maybe-uninitialized.patch<br>
&gt;<br>
&gt; diff --git a/meta/recipes-core/glibc/glibc.inc b/meta/recipes-core/glibc/glibc.inc<br>
&gt; index 91491a35f0..e673707369 100644<br>
&gt; --- a/meta/recipes-core/glibc/glibc.inc<br>
&gt; +++ b/meta/recipes-core/glibc/glibc.inc<br>
&gt; @@ -6,18 +6,6 @@ STAGINGCC = &quot;gcc-cross-initial-${TARGET_ARCH}&quot;<br>
&gt;  STAGINGCC_class-nativesdk = &quot;gcc-crosssdk-initial-${SDK_SYS}&quot;<br>
&gt;  PATH_prepend = &quot;${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:&quot;<br>
&gt;<br>
&gt; -python () {<br>
&gt; -    opt_effective = &quot;-O&quot;<br>
&gt; -    for opt in d.getVar(&#39;SELECTED_OPTIMIZATION&#39;).split():<br>
&gt; -        if opt in (&quot;-O0&quot;, &quot;-O&quot;, &quot;-O1&quot;, &quot;-O2&quot;, &quot;-O3&quot;, &quot;-Os&quot;):<br>
&gt; -            opt_effective = opt<br>
&gt; -    if opt_effective == &quot;-O0&quot;:<br>
&gt; -        bb.fatal(&quot;%s can&#39;t be built with %s, try -O1 instead&quot; % (d.getVar(&#39;PN&#39;), opt_effective))<br>
&gt; -    if opt_effective in (&quot;-O&quot;, &quot;-O1&quot;, &quot;-Os&quot;):<br>
&gt; -        bb.note(&quot;%s doesn&#39;t build cleanly with %s, adding -Wno-error to SELECTED_OPTIMIZATION&quot; % (d.getVar(&#39;PN&#39;), opt_effective))<br>
&gt; -        d.appendVar(&quot;SELECTED_OPTIMIZATION&quot;, &quot; -Wno-error&quot;)<br>
&gt; -}<br>
&gt; -<br>
&gt;  # siteconfig.bbclass runs configure which needs a working compiler<br>
&gt;  # For the compiler to work we need a working libc yet libc isn&#39;t<br>
&gt;  # in the sysroots directory at this point. This means the libc.so<br>
&gt; diff --git a/meta/recipes-core/glibc/glibc/0031-sysdeps-ieee754-prevent-maybe-uninitialized-errors.patch b/meta/recipes-core/glibc/glibc/0031-sysdeps-ieee754-prevent-maybe-uninitialized-errors.patch<br>
&gt; new file mode 100644<br>
&gt; index 0000000000..d9d36b8244<br>
&gt; --- /dev/null<br>
&gt; +++ b/meta/recipes-core/glibc/glibc/0031-sysdeps-ieee754-prevent-maybe-uninitialized-errors.patch<br>
&gt; @@ -0,0 +1,95 @@<br>
&gt; +From c6cc5a6ef46837e341fe271b5ffa6def23810082 Mon Sep 17 00:00:00 2001<br>
&gt; +From: Martin Jansa &lt;<a href="mailto:Martin.Jansa@gmail.com" target="_blank">Martin.Jansa@gmail.com</a>&gt;<br>
&gt; +Date: Fri, 14 Sep 2018 23:23:03 +0000<br>
&gt; +Subject: [PATCH] sysdeps/ieee754: prevent maybe-uninitialized errors<br>
&gt; +<br>
&gt; +* with -O included in BUILD_OPTIMIZATION when DEBUG_BUILD<br>
&gt; +  is used, nativesdk-glibc fails with:<br>
&gt; +../sysdeps/ieee754/ldbl-96/e_jnl.c: In function &#39;__ieee754_jnl&#39;:<br>
&gt; +../sysdeps/ieee754/ldbl-96/e_jnl.c:146:20: error: &#39;temp&#39; may be used uninitialized in this function [-Werror=maybe-uninitialized]<br>
&gt; +      b = invsqrtpi * temp / sqrtl (x);<br>
&gt; +          ~~~~~~~~~~^~~~~~<br>
&gt; +../sysdeps/ieee754/ldbl-96/e_jnl.c: In function &#39;__ieee754_ynl&#39;:<br>
&gt; +../sysdeps/ieee754/ldbl-96/e_jnl.c:375:16: error: &#39;temp&#39; may be used uninitialized in this function [-Werror=maybe-uninitialized]<br>
&gt; +  b = invsqrtpi * temp / sqrtl (x);<br>
&gt; +      ~~~~~~~~~~^~~~~~<br>
&gt; +<br>
&gt; +* work around the issue instead of removing -O like we do with<br>
&gt; +  SELECTED_OPTIMIZATION<br>
&gt; +<br>
&gt; +Upstream-Status: Pending<br>
&gt; +<br>
&gt; +Signed-off-by: Martin Jansa &lt;<a href="mailto:Martin.Jansa@gmail.com" target="_blank">Martin.Jansa@gmail.com</a>&gt;<br>
&gt; +---<br>
&gt; + sysdeps/ieee754/dbl-64/e_jn.c    | 2 ++<br>
&gt; + sysdeps/ieee754/ldbl-128/e_jnl.c | 4 ++++<br>
&gt; + sysdeps/ieee754/ldbl-96/e_jnl.c  | 4 ++++<br>
&gt; + 3 files changed, 10 insertions(+)<br>
&gt; +<br>
&gt; +diff --git a/sysdeps/ieee754/dbl-64/e_jn.c b/sysdeps/ieee754/dbl-64/e_jn.c<br>
&gt; +index 9181b22bb8..74a6b5f149 100644<br>
&gt; +--- a/sysdeps/ieee754/dbl-64/e_jn.c<br>
&gt; ++++ b/sysdeps/ieee754/dbl-64/e_jn.c<br>
&gt; +@@ -108,6 +108,7 @@ __ieee754_jn (int n, double x)<br>
&gt; +             case 1: temp = -c + s; break;<br>
&gt; +             case 2: temp = -c - s; break;<br>
&gt; +             case 3: temp = c - s; break;<br>
&gt; ++            default: temp = 0; // just to prevent error: &#39;temp&#39; may be used uninitialized in this function [-Werror=maybe-uninitialized]<br>
&gt; +             }<br>
&gt; +           b = invsqrtpi * temp / sqrt (x);<br>
&gt; +         }<br>
&gt; +@@ -315,6 +316,7 @@ __ieee754_yn (int n, double x)<br>
&gt; +         case 1: temp = -s - c; break;<br>
&gt; +         case 2: temp = -s + c; break;<br>
&gt; +         case 3: temp = s + c; break;<br>
&gt; ++        default: temp = 0; // just to prevent error: &#39;temp&#39; may be used uninitialized in this function [-Werror=maybe-uninitialized]<br>
&gt; +         }<br>
&gt; +       b = invsqrtpi * temp / sqrt (x);<br>
&gt; +       }<br>
&gt; +diff --git a/sysdeps/ieee754/ldbl-128/e_jnl.c b/sysdeps/ieee754/ldbl-128/e_jnl.c<br>
&gt; +index 7739eec291..b6a1275464 100644<br>
&gt; +--- a/sysdeps/ieee754/ldbl-128/e_jnl.c<br>
&gt; ++++ b/sysdeps/ieee754/ldbl-128/e_jnl.c<br>
&gt; +@@ -149,6 +149,8 @@ __ieee754_jnl (int n, _Float128 x)<br>
&gt; +             case 3:<br>
&gt; +               temp = c - s;<br>
&gt; +               break;<br>
&gt; ++            default:<br>
&gt; ++              temp = 0; // just to prevent error: &#39;temp&#39; may be used uninitialized in this function [-Werror=maybe-uninitialized]<br>
&gt; +             }<br>
&gt; +           b = invsqrtpi * temp / sqrtl (x);<br>
&gt; +         }<br>
&gt; +@@ -385,6 +387,8 @@ __ieee754_ynl (int n, _Float128 x)<br>
&gt; +         case 3:<br>
&gt; +           temp = s + c;<br>
&gt; +           break;<br>
&gt; ++        default:<br>
&gt; ++          temp = 0; // just to prevent error: &#39;temp&#39; may be used uninitialized in this function [-Werror=maybe-uninitialized]<br>
&gt; +         }<br>
&gt; +       b = invsqrtpi * temp / sqrtl (x);<br>
&gt; +       }<br>
&gt; +diff --git a/sysdeps/ieee754/ldbl-96/e_jnl.c b/sysdeps/ieee754/ldbl-96/e_jnl.c<br>
&gt; +index 394921f564..2263b02203 100644<br>
&gt; +--- a/sysdeps/ieee754/ldbl-96/e_jnl.c<br>
&gt; ++++ b/sysdeps/ieee754/ldbl-96/e_jnl.c<br>
&gt; +@@ -142,6 +142,8 @@ __ieee754_jnl (int n, long double x)<br>
&gt; +             case 3:<br>
&gt; +               temp = c - s;<br>
&gt; +               break;<br>
&gt; ++            default:<br>
&gt; ++              temp = 0; // just to prevent error: &#39;temp&#39; may be used uninitialized in this function [-Werror=maybe-uninitialized]<br>
&gt; +             }<br>
&gt; +           b = invsqrtpi * temp / sqrtl (x);<br>
&gt; +         }<br>
&gt; +@@ -371,6 +373,8 @@ __ieee754_ynl (int n, long double x)<br>
&gt; +         case 3:<br>
&gt; +           temp = s + c;<br>
&gt; +           break;<br>
&gt; ++        default:<br>
&gt; ++          temp = 0; // just to prevent error: &#39;temp&#39; may be used uninitialized in this function [-Werror=maybe-uninitialized]<br>
&gt; +         }<br>
&gt; +       b = invsqrtpi * temp / sqrtl (x);<br>
&gt; +       }<br>
&gt; +--<br>
&gt; +2.17.1<br>
&gt; +<br>
&gt; diff --git a/meta/recipes-core/glibc/glibc/0032-soft-fp-ignore-maybe-uninitialized.patch b/meta/recipes-core/glibc/glibc/0032-soft-fp-ignore-maybe-uninitialized.patch<br>
&gt; new file mode 100644<br>
&gt; index 0000000000..d3c9902fbc<br>
&gt; --- /dev/null<br>
&gt; +++ b/meta/recipes-core/glibc/glibc/0032-soft-fp-ignore-maybe-uninitialized.patch<br>
&gt; @@ -0,0 +1,72 @@<br>
&gt; +From 0efa7fd1c800277d5323d05cb245c0536fe9ce22 Mon Sep 17 00:00:00 2001<br>
&gt; +From: Martin Jansa &lt;<a href="mailto:Martin.Jansa@gmail.com" target="_blank">Martin.Jansa@gmail.com</a>&gt;<br>
&gt; +Date: Sun, 16 Sep 2018 12:39:22 +0000<br>
&gt; +Subject: [PATCH] soft-fp: ignore maybe-uninitialized<br>
&gt; +<br>
&gt; +* with -O it fails with:<br>
&gt; +<br>
&gt; +In file included from ../soft-fp/soft-fp.h:318,<br>
&gt; +                 from ../sysdeps/ieee754/soft-fp/s_fdiv.c:28:<br>
&gt; +../sysdeps/ieee754/soft-fp/s_fdiv.c: In function &#39;__fdiv&#39;:<br>
&gt; +../soft-fp/op-2.h:98:25: error: &#39;R_f1&#39; may be used uninitialized in this function [-Werror=maybe-uninitialized]<br>
&gt; +        X##_f0 = (X##_f1 &lt;&lt; (_FP_W_TYPE_SIZE - (N)) | X##_f0 &gt;&gt; (N) \<br>
&gt; +                         ^~<br>
&gt; +../sysdeps/ieee754/soft-fp/s_fdiv.c:38:14: note: &#39;R_f1&#39; was declared here<br>
&gt; +   FP_DECL_D (R);<br>
&gt; +              ^<br>
&gt; +../soft-fp/op-2.h:37:36: note: in definition of macro &#39;_FP_FRAC_DECL_2&#39;<br>
&gt; +   _FP_W_TYPE X##_f0 _FP_ZERO_INIT, X##_f1 _FP_ZERO_INIT<br>
&gt; +                                    ^<br>
&gt; +../soft-fp/double.h:95:24: note: in expansion of macro &#39;_FP_DECL&#39;<br>
&gt; + # define FP_DECL_D(X)  _FP_DECL (2, X)<br>
&gt; +                        ^~~~~~~~<br>
&gt; +../sysdeps/ieee754/soft-fp/s_fdiv.c:38:3: note: in expansion of macro &#39;FP_DECL_D&#39;<br>
&gt; +   FP_DECL_D (R);<br>
&gt; +   ^~~~~~~~~<br>
&gt; +../soft-fp/op-2.h:101:17: error: &#39;R_f0&#39; may be used uninitialized in this function [-Werror=maybe-uninitialized]<br>
&gt; +       : (X##_f0 &lt;&lt; (_FP_W_TYPE_SIZE - (N))) != 0)); \<br>
&gt; +                 ^~<br>
&gt; +../sysdeps/ieee754/soft-fp/s_fdiv.c:38:14: note: &#39;R_f0&#39; was declared here<br>
&gt; +   FP_DECL_D (R);<br>
&gt; +              ^<br>
&gt; +../soft-fp/op-2.h:37:14: note: in definition of macro &#39;_FP_FRAC_DECL_2&#39;<br>
&gt; +   _FP_W_TYPE X##_f0 _FP_ZERO_INIT, X##_f1 _FP_ZERO_INIT<br>
&gt; +              ^<br>
&gt; +../soft-fp/double.h:95:24: note: in expansion of macro &#39;_FP_DECL&#39;<br>
&gt; + # define FP_DECL_D(X)  _FP_DECL (2, X)<br>
&gt; +                        ^~~~~~~~<br>
&gt; +../sysdeps/ieee754/soft-fp/s_fdiv.c:38:3: note: in expansion of macro &#39;FP_DECL_D&#39;<br>
&gt; +   FP_DECL_D (R);<br>
&gt; +   ^~~~~~~~~<br>
&gt; +<br>
&gt; +Upstream-Status: Pending<br>
&gt; +<br>
&gt; +Signed-off-by: Martin Jansa &lt;<a href="mailto:Martin.Jansa@gmail.com" target="_blank">Martin.Jansa@gmail.com</a>&gt;<br>
&gt; +---<br>
&gt; + soft-fp/op-2.h | 3 +++<br>
&gt; + 1 file changed, 3 insertions(+)<br>
&gt; +<br>
&gt; +diff --git a/soft-fp/op-2.h b/soft-fp/op-2.h<br>
&gt; +index 6020d663d4..6672337949 100644<br>
&gt; +--- a/soft-fp/op-2.h<br>
&gt; ++++ b/soft-fp/op-2.h<br>
&gt; +@@ -92,6 +92,8 @@<br>
&gt; +             X##_f1 = 0;                                               \<br>
&gt; +           }))<br>
&gt; +<br>
&gt; ++#pragma GCC diagnostic push<br>
&gt; ++#pragma GCC diagnostic ignored &quot;-Wmaybe-uninitialized&quot;<br>
&gt; + #define _FP_FRAC_SRS_2(X, N, sz)                                      \<br>
&gt; +   (void) (((N) &lt; _FP_W_TYPE_SIZE)                                     \<br>
&gt; +         ? ({                                                          \<br>
&gt; +@@ -109,6 +111,7 @@<br>
&gt; +                           | X##_f0) != 0));                           \<br>
&gt; +             X##_f1 = 0;                                               \<br>
&gt; +           }))<br>
&gt; ++#pragma GCC diagnostic pop<br>
&gt; +<br>
&gt; + #define _FP_FRAC_ADDI_2(X, I) \<br>
&gt; +   __FP_FRAC_ADDI_2 (X##_f1, X##_f0, I)<br>
&gt; +--<br>
&gt; +2.17.1<br>
&gt; +<br>
&gt; diff --git a/meta/recipes-core/glibc/<a href="http://glibc_2.28.bb" rel="noreferrer" target="_blank">glibc_2.28.bb</a> b/meta/recipes-core/glibc/<a href="http://glibc_2.28.bb" rel="noreferrer" target="_blank">glibc_2.28.bb</a><br>
&gt; index 0ebbaf9610..df60ba8445 100644<br>
&gt; --- a/meta/recipes-core/glibc/<a href="http://glibc_2.28.bb" rel="noreferrer" target="_blank">glibc_2.28.bb</a><br>
&gt; +++ b/meta/recipes-core/glibc/<a href="http://glibc_2.28.bb" rel="noreferrer" target="_blank">glibc_2.28.bb</a><br>
&gt; @@ -45,6 +45,8 @@ SRC_URI = &quot;${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \<br>
&gt;             file://0028-bits-siginfo-consts.h-enum-definition-for-TRAP_HWBKP.patch \<br>
&gt;             file://0029-localedef-add-to-archive-uses-a-hard-coded-locale-pa.patch \<br>
&gt;             file://0030-intl-Emit-no-lines-in-bison-generated-files.patch \<br>
&gt; +           file://0031-sysdeps-ieee754-prevent-maybe-uninitialized-errors.patch \<br>
&gt; +           file://0032-soft-fp-ignore-maybe-uninitialized.patch \<br>
&gt;  &quot;<br>
&gt;<br>
&gt;  NATIVESDKFIXES ?= &quot;&quot;<br>
&gt; --<br>
&gt; 2.17.1<br>
&gt;<br>
&gt; --<br>
&gt; _______________________________________________<br>
&gt; Openembedded-core mailing list<br>
&gt; <a href="mailto:Openembedded-core@lists.openembedded.org" target="_blank">Openembedded-core@lists.openembedded.org</a><br>
&gt; <a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/mailman/listinfo/openembedded-core</a><br>
</blockquote></div>