From b894de417618c4a79df074dc22912466e2501ad5 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 14 Nov 2017 19:02:09 -0800 Subject: glibc: Upgrade to latest on 2.26 release For detailed view of changes see https://github.com/kraj/glibc/compare/glibc-2.26...77f921dac17c5fa99bd9e926d926c327982895f7 Drop two upstreamed patches (From OE-Core rev: e53bf781cdb896bdb02e69fdbfd0d144c5f39504) Signed-off-by: Khem Raj Signed-off-by: Richard Purdie --- ...ress-pedantic-warning-caused-by-statement.patch | 90 ---------- ...pport-types-without-operator-int-BZ-21972.patch | 194 --------------------- meta/recipes-core/glibc/glibc_2.26.bb | 4 +- 3 files changed, 1 insertion(+), 287 deletions(-) delete mode 100644 meta/recipes-core/glibc/glibc/0026-assert-Suppress-pedantic-warning-caused-by-statement.patch delete mode 100644 meta/recipes-core/glibc/glibc/0029-assert-Support-types-without-operator-int-BZ-21972.patch diff --git a/meta/recipes-core/glibc/glibc/0026-assert-Suppress-pedantic-warning-caused-by-statement.patch b/meta/recipes-core/glibc/glibc/0026-assert-Suppress-pedantic-warning-caused-by-statement.patch deleted file mode 100644 index b2bb96b818..0000000000 --- a/meta/recipes-core/glibc/glibc/0026-assert-Suppress-pedantic-warning-caused-by-statement.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 037283cbc74739b72f36dfec827d120faa243406 Mon Sep 17 00:00:00 2001 -From: Florian Weimer -Date: Thu, 6 Jul 2017 11:50:55 +0200 -Subject: [PATCH 26/26] assert: Suppress pedantic warning caused by statement - expression [BZ# 21242] - -On 07/05/2017 10:15 PM, Zack Weinberg wrote: -> On Wed, Jul 5, 2017 at 11:51 AM, Florian Weimer wrote: ->> On 07/05/2017 05:46 PM, Zack Weinberg wrote: ->>> A problem occurs to me: expressions involving VLAs _are_ evaluated ->>> inside sizeof. ->> ->> The type of the sizeof argument would still be int (due to the ->> comparison against 0), so this doesn't actually occur. -> -> I rechecked what C99 says about sizeof and VLAs, and you're right - -> the operand of sizeof is only evaluated when sizeof is _directly_ -> applied to a VLA. So this is indeed safe, but I think this wrinkle -> should be mentioned in the comment. Perhaps -> -> /* The first occurrence of EXPR is not evaluated due to the sizeof, -> but will trigger any pedantic warnings masked by the __extension__ -> for the second occurrence. The explicit comparison against zero -> ensures that sizeof is not directly applied to a function pointer or -> bit-field (which would be ill-formed) or VLA (which would be evaluated). */ -> -> zw - -What about the attached patch? - -Siddhesh, is this okay during the freeze? I'd like to backport it to -2.25 as well. - -Thanks, -Florian - -assert: Suppress pedantic warning caused by statement expression - -2017-07-06 Florian Weimer - - [BZ #21242] - * assert/assert.h [__GNUC__ && !__STRICT_ANSI__] (assert): - Suppress pedantic warning resulting from statement expression. - (__ASSERT_FUNCTION): Add missing __extendsion__. ---- - -Upstream-Status: Submitted -Signed-off-by: Khem Raj - - assert/assert.h | 12 +++++++++--- - 1 file changed, 9 insertions(+), 3 deletions(-) - -diff --git a/assert/assert.h b/assert/assert.h -index 22f019537c..6801cfeb10 100644 ---- a/assert/assert.h -+++ b/assert/assert.h -@@ -91,13 +91,19 @@ __END_DECLS - ? __ASSERT_VOID_CAST (0) \ - : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION)) - # else -+/* The first occurrence of EXPR is not evaluated due to the sizeof, -+ but will trigger any pedantic warnings masked by the __extension__ -+ for the second occurrence. The explicit comparison against zero is -+ required to support function pointers and bit fields in this -+ context, and to suppress the evaluation of variable length -+ arrays. */ - # define assert(expr) \ -- ({ \ -+ ((void) sizeof ((expr) == 0), __extension__ ({ \ - if (expr) \ - ; /* empty */ \ - else \ - __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION); \ -- }) -+ })) - # endif - - # ifdef __USE_GNU -@@ -113,7 +119,7 @@ __END_DECLS - C9x has a similar variable called __func__, but prefer the GCC one since - it demangles C++ function names. */ - # if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4) --# define __ASSERT_FUNCTION __PRETTY_FUNCTION__ -+# define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__ - # else - # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L - # define __ASSERT_FUNCTION __func__ --- -2.13.3 - diff --git a/meta/recipes-core/glibc/glibc/0029-assert-Support-types-without-operator-int-BZ-21972.patch b/meta/recipes-core/glibc/glibc/0029-assert-Support-types-without-operator-int-BZ-21972.patch deleted file mode 100644 index 3c7050f078..0000000000 --- a/meta/recipes-core/glibc/glibc/0029-assert-Support-types-without-operator-int-BZ-21972.patch +++ /dev/null @@ -1,194 +0,0 @@ -Upstream-Status: Backport - -* fixes "lambda-expression in unevaluated context" compile failures such as - https://github.com/nlohmann/json/issues/705 - -* fixes "no match for 'operator==" compile failures such as - https://bugzilla.redhat.com/show_bug.cgi?id=1482990 - -* Changelog edit was removed from upstream commit because it caused conflict - -Signed-off-by: S. Lockwood-Childs - -From b5889d25e9bf944a89fdd7bcabf3b6c6f6bb6f7c Mon Sep 17 00:00:00 2001 -From: Florian Weimer -Date: Mon, 21 Aug 2017 13:03:29 +0200 -Subject: [PATCH] assert: Support types without operator== (int) [BZ #21972] - ---- - assert/Makefile | 11 ++++++- - assert/assert.h | 16 ++++++---- - assert/tst-assert-c++.cc | 78 ++++++++++++++++++++++++++++++++++++++++++++++++ - assert/tst-assert-g++.cc | 19 ++++++++++++ - 4 files changed, 128 insertions(+), 7 deletions(-) - create mode 100644 assert/tst-assert-c++.cc - create mode 100644 assert/tst-assert-g++.cc - -diff --git a/assert/Makefile b/assert/Makefile -index 1c3be9b..9ec1be8 100644 ---- a/assert/Makefile -+++ b/assert/Makefile -@@ -25,6 +25,15 @@ include ../Makeconfig - headers := assert.h - - routines := assert assert-perr __assert --tests := test-assert test-assert-perr -+tests := test-assert test-assert-perr tst-assert-c++ tst-assert-g++ - - include ../Rules -+ -+ifeq ($(have-cxx-thread_local),yes) -+CFLAGS-tst-assert-c++.o = -std=c++11 -+LDLIBS-tst-assert-c++ = -lstdc++ -+CFLAGS-tst-assert-g++.o = -std=gnu++11 -+LDLIBS-tst-assert-g++ = -lstdc++ -+else -+tests-unsupported += tst-assert-c++ tst-assert-g++ -+endif -diff --git a/assert/assert.h b/assert/assert.h -index 6801cfe..640c95c 100644 ---- a/assert/assert.h -+++ b/assert/assert.h -@@ -85,7 +85,12 @@ __END_DECLS - /* When possible, define assert so that it does not add extra - parentheses around EXPR. Otherwise, those added parentheses would - suppress warnings we'd expect to be detected by gcc's -Wparentheses. */ --# if !defined __GNUC__ || defined __STRICT_ANSI__ -+# if defined __cplusplus -+# define assert(expr) \ -+ (static_cast (expr) \ -+ ? void (0) \ -+ : __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION)) -+# elif !defined __GNUC__ || defined __STRICT_ANSI__ - # define assert(expr) \ - ((expr) \ - ? __ASSERT_VOID_CAST (0) \ -@@ -93,12 +98,11 @@ __END_DECLS - # else - /* The first occurrence of EXPR is not evaluated due to the sizeof, - but will trigger any pedantic warnings masked by the __extension__ -- for the second occurrence. The explicit comparison against zero is -- required to support function pointers and bit fields in this -- context, and to suppress the evaluation of variable length -- arrays. */ -+ for the second occurrence. The ternary operator is required to -+ support function pointers and bit fields in this context, and to -+ suppress the evaluation of variable length arrays. */ - # define assert(expr) \ -- ((void) sizeof ((expr) == 0), __extension__ ({ \ -+ ((void) sizeof ((expr) ? 1 : 0), __extension__ ({ \ - if (expr) \ - ; /* empty */ \ - else \ -diff --git a/assert/tst-assert-c++.cc b/assert/tst-assert-c++.cc -new file mode 100644 -index 0000000..12a5e69 ---- /dev/null -+++ b/assert/tst-assert-c++.cc -@@ -0,0 +1,78 @@ -+/* Tests for interactions between C++ and assert. -+ Copyright (C) 2017 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ 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 -+ . */ -+ -+#include -+ -+/* The C++ standard requires that if the assert argument is a constant -+ subexpression, then the assert itself is one, too. */ -+constexpr int -+check_constexpr () -+{ -+ return (assert (true), 1); -+} -+ -+/* Objects of this class can be contextually converted to bool, but -+ cannot be compared to int. */ -+struct no_int -+{ -+ no_int () = default; -+ no_int (const no_int &) = delete; -+ -+ explicit operator bool () const -+ { -+ return true; -+ } -+ -+ bool operator! () const; /* No definition. */ -+ template bool operator== (T) const; /* No definition. */ -+ template bool operator!= (T) const; /* No definition. */ -+}; -+ -+/* This class tests that operator== is not used by assert. */ -+struct bool_and_int -+{ -+ bool_and_int () = default; -+ bool_and_int (const no_int &) = delete; -+ -+ explicit operator bool () const -+ { -+ return true; -+ } -+ -+ bool operator! () const; /* No definition. */ -+ template bool operator== (T) const; /* No definition. */ -+ template bool operator!= (T) const; /* No definition. */ -+}; -+ -+static int -+do_test () -+{ -+ { -+ no_int value; -+ assert (value); -+ } -+ -+ { -+ bool_and_int value; -+ assert (value); -+ } -+ -+ return 0; -+} -+ -+#include -diff --git a/assert/tst-assert-g++.cc b/assert/tst-assert-g++.cc -new file mode 100644 -index 0000000..8c06402 ---- /dev/null -+++ b/assert/tst-assert-g++.cc -@@ -0,0 +1,19 @@ -+/* Tests for interactions between C++ and assert. GNU C++11 version. -+ Copyright (C) 2017 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ 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 -+ . */ -+ -+#include --- -1.9.4 - diff --git a/meta/recipes-core/glibc/glibc_2.26.bb b/meta/recipes-core/glibc/glibc_2.26.bb index 7dd025ae68..5213a6a942 100644 --- a/meta/recipes-core/glibc/glibc_2.26.bb +++ b/meta/recipes-core/glibc/glibc_2.26.bb @@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://LICENSES;md5=e9a558e243b36d3209f380deb394b213 \ DEPENDS += "gperf-native" -SRCREV ?= "1c9a5c270d8b66f30dcfaf1cb2d6cf39d3e18369" +SRCREV ?= "77f921dac17c5fa99bd9e926d926c327982895f7" SRCBRANCH ?= "release/${PV}/master" @@ -40,10 +40,8 @@ SRC_URI = "${GLIBC_GIT_URI};branch=${SRCBRANCH};name=glibc \ file://0023-Define-DUMMY_LOCALE_T-if-not-defined.patch \ file://0024-elf-dl-deps.c-Make-_dl_build_local_scope-breadth-fir.patch \ file://0025-locale-fix-hard-coded-reference-to-gcc-E.patch \ - file://0026-assert-Suppress-pedantic-warning-caused-by-statement.patch \ file://0027-glibc-reset-dl-load-write-lock-after-forking.patch \ file://0028-Bug-4578-add-ld.so-lock-while-fork.patch \ - file://0029-assert-Support-types-without-operator-int-BZ-21972.patch \ " NATIVESDKFIXES ?= "" -- cgit v1.2.3-54-g00ecf