Re: next build: 143 builds: 1 failed, 142 passed, 1 error, 22 warnings (next-20160801)

From: Arnd Bergmann
Date: Mon Aug 01 2016 - 09:19:12 EST


On Sunday, July 31, 2016 10:49:26 PM CEST kernelci. org bot wrote:
> next build: 143 builds: 1 failed, 142 passed, 1 error, 22 warnings (next-20160801)
>
> Full Build Summary: https://kernelci.org/build/next/kernel/next-20160801/
>
> Tree: next
> Branch: local/master
> Git Describe: next-20160801
> Git Commit: c24c1308a5b274bbd90db927cb18efddc95340c7
> Git URL: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
> Built: 3 unique architectures
>
> Build Failure Detected:
>
> arm: gcc version 5.3.1 20160113 (Linaro GCC 5.3-2016.02)
>
> rpc_defconfig: FAIL

I have verified that Linaro GCC 5.3-2016.05 is fixed, only Linaro GCC
5.3-2016.02 and earlier have this problem, please upgrade if possible

> Errors and Warnings Detected:
>
> arm64: gcc version 5.2.1 20151005 (Linaro GCC 5.2-2015.11-2)
>
> tinyconfig: 2 warnings

I now have a patch for it, just need to figure out who will
merge it.

>
> Warnings:
> drivers/tty/serial/8250/8250_fintek.c:34:0: warning: "IRQ_MODE" redefined

As commented in another thread, my patch is waiting to be picked up by
Greg, and has been in that state for a while.

> --------------------------------------------------------------------------------
> allmodconfig (arm64) â PASS, 0 errors, 0 warnings, 0 section mismatches
>
> --------------------------------------------------------------------------------
> allmodconfig (x86) â PASS, 0 errors, 5 warnings, 0 section mismatches
>
> Warnings:
> lib/test_hash.c:224:7: warning: "HAVE_ARCH__HASH_32" is not defined [-Wundef]
> lib/test_hash.c:229:7: warning: "HAVE_ARCH_HASH_32" is not defined [-Wundef]
> lib/test_hash.c:234:7: warning: "HAVE_ARCH_HASH_64" is not defined [-Wundef]
> lib/test_hash.c:146:2: warning: missing braces around initializer [-Wmissing-braces]
> lib/test_hash.c:146:2: warning: (near initialization for 'hash_or[0]') [-Wmissing-braces]

Upgrading to gcc-4.9 will fix avoid that, and a couple of workarounds have
been discussed before, but I don't know why none of them got merged.

George, how about this version:

commit 9b3cb7d0777a81522b799b0362ea0864ab7de6e0
Author: Arnd Bergmann <arnd@xxxxxxxx>
Date: Tue May 31 10:27:08 2016 +0200

hash: fix gcc-4 build warnings in test_hash.c

The newly added lib/test_hash.c file builds fine with gcc-5 or newer,
but causes some annoying warnings witih gcc-4.9 and older:

lib/test_hash.c: In function âtest_hash_initâ:
lib/test_hash.c:146:2: error: missing braces around initializer [-Werror=missing-braces]
lib/test_hash.c:146:2: error: (near initialization for âhash_or[0]â) [-Werror=missing-braces]
lib/test_hash.c:224:7: error: "HAVE_ARCH__HASH_32" is not defined [-Werror=undef]
lib/test_hash.c:229:7: error: "HAVE_ARCH_HASH_32" is not defined [-Werror=undef]
lib/test_hash.c:234:7: error: "HAVE_ARCH_HASH_64" is not defined [-Werror=undef]

This adds the braces and extra #ifdef checks for the macros to shut up those
warnings.

Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
Cc: George Spelvin <linux@xxxxxxxxxxxxxxxxxxx>

diff --git a/lib/test_hash.c b/lib/test_hash.c
index 66c5fc8351e8..91a1dfa788d7 100644
--- a/lib/test_hash.c
+++ b/lib/test_hash.c
@@ -143,7 +143,7 @@ static int __init
test_hash_init(void)
{
char buf[SIZE+1];
- u32 string_or = 0, hash_or[2][33] = { 0 };
+ u32 string_or = 0, hash_or[2][33] = { { 0 } };
unsigned tests = 0;
unsigned long long h64 = 0;
int i, j;
@@ -221,17 +221,17 @@ test_hash_init(void)
/* Issue notices about skipped tests. */
#ifndef HAVE_ARCH__HASH_32
pr_info("__hash_32() has no arch implementation to test.");
-#elif HAVE_ARCH__HASH_32 != 1
+#elif defined(HAVE_ARCH__HASH_32) && HAVE_ARCH__HASH_32 != 1
pr_info("__hash_32() is arch-specific; not compared to generic.");
#endif
#ifndef HAVE_ARCH_HASH_32
pr_info("hash_32() has no arch implementation to test.");
-#elif HAVE_ARCH_HASH_32 != 1
+#elif defined(HAVE_ARCH_HASH_32) && HAVE_ARCH_HASH_32 != 1
pr_info("hash_32() is arch-specific; not compared to generic.");
#endif
#ifndef HAVE_ARCH_HASH_64
pr_info("hash_64() has no arch implementation to test.");
-#elif HAVE_ARCH_HASH_64 != 1
+#elif defined(HAVE_ARCH_HASH_64) && HAVE_ARCH_HASH_64 != 1
pr_info("hash_64() is arch-specific; not compared to generic.");
#endif


> --------------------------------------------------------------------------------
> aspeed_g4_defconfig (arm) â PASS, 0 errors, 1 warning, 0 section mismatches
>
> Warnings:
> arch/arm/configs/aspeed_g4_defconfig:61:warning: symbol value '1' invalid for PRINTK_TIME
>
> --------------------------------------------------------------------------------
> aspeed_g5_defconfig (arm) â PASS, 0 errors, 1 warning, 0 section mismatches
>
> Warnings:
> arch/arm/configs/aspeed_g5_defconfig:62:warning: symbol value '1' invalid for PRINTK_TIME

This was caused by a commit I did to prepare for a patch turning the 'bool'
symbol into an integer symbol. That patch is no longer in -next and
we should revert my patch.


Arnd