]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
nptl: Add workaround for ASSERT_PTHREAD_INTERNAL_SIZE with GCC 4.9
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 21 Nov 2017 11:44:42 +0000 (09:44 -0200)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 21 Nov 2017 12:19:56 +0000 (10:19 -0200)
GCC 4.9 (the minimum current supported) emits an warning for universal
zero initializer ({0}) on ASSERT_PTHREAD_INTERNAL_SIZE:

pthread_attr_init.c: In function ‘__pthread_attr_init_2_1’:
pthread_attr_init.c:37:3: error: missing braces around initializer [-Werror=missing-braces]
   ASSERT_PTHREAD_INTERNAL_SIZE (pthread_attr_t, struct pthread_attr);
   ^
pthread_attr_init.c:37:3: error: (near initialization for ‘(anonymous).__size’) [-Werror=missing-braces]

It is fact GCC BZ#53119 [1] fixed in later version (GCC5+).  Since
current branch is closed and there is no indication it will be backports
(comment #20 in same bug report) this patch fixes by using a double
bracket to zero initialize the struct.

Checked on x86_64-linux-gnu with GCC 7 and GCC 4.9.

* nptl/pthreadP.h (ASSERT_PTHREAD_INTERNAL_SIZE): Add workarond for
-Wmissing-braces on GCC 4.9.

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119

Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
ChangeLog
nptl/pthreadP.h

index f9e2e18e506af713ecf4d5329337882a6e8367f3..c72be0c3012e67426a0bf8d24f113d71525af238 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-11-21  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+
+       * nptl/pthreadP.h (ASSERT_PTHREAD_INTERNAL_SIZE): Add workarond for
+       -Wmissing-braces on GCC 4.9.
+
 2017-11-21  Stefan Liebler  <stli@linux.vnet.ibm.com>
 
        * sysdeps/s390/s390-64/start.S (_start): Add cfi information for r14.
index 1cc80b6e3a36da61bff97995eca2140ff88517d9..713000e32d470ad1bfde34e1d83b5e06f341dbf1 100644 (file)
@@ -644,7 +644,7 @@ check_stacksize_attr (size_t st)
                  "sizeof (" #type ") != " #size)
 
 #define ASSERT_PTHREAD_INTERNAL_SIZE(type, internal)                   \
-  _Static_assert (sizeof ((type) { 0 }).__size >= sizeof (internal),   \
+  _Static_assert (sizeof ((type) { { 0 } }).__size >= sizeof (internal),\
                  "sizeof (" #type ".__size) < sizeof (" #internal ")")
 
 #define ASSERT_PTHREAD_STRING(x) __STRING (x)