OS: Arch Linux
gcc -v [93b67583; 12:56:13]
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release
Thread model: posix
gcc version 7.1.1 20170516 (GCC)
Error:
$ make [93b67583; 12:51:20]
(CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /home/dori/Projects/3rdpart/watchman/missing autoheader)
rm -f stamp-h1
touch config.h.in
cd . && /bin/sh ./config.status config.h
config.status: creating config.h
config.status: config.h is unchanged
make all-am
make[1]: Entering directory '/home/dori/Projects/3rdpart/watchman'
CC thirdparty/libart/src/art.o
AR libart.a
ar: `u' modifier ignored since `D' is the default (see `U')
CC thirdparty/libtap_a-tap.o
AR libtap.a
ar: `u' modifier ignored since `D' is the default (see `U')
CC thirdparty/wildmatch/wildmatch.o
AR libwildmatch.a
ar: `u' modifier ignored since `D' is the default (see `U')
CC thirdparty/jansson/libwmanjson_a-dump.o
CC thirdparty/jansson/libwmanjson_a-error.o
CC thirdparty/jansson/libwmanjson_a-hashtable.o
CC thirdparty/jansson/libwmanjson_a-load.o
CC thirdparty/jansson/libwmanjson_a-memory.o
CC thirdparty/jansson/libwmanjson_a-pack_unpack.o
CC thirdparty/jansson/libwmanjson_a-strbuffer.o
CC thirdparty/jansson/libwmanjson_a-strconv.o
CC thirdparty/jansson/libwmanjson_a-utf.o
CC thirdparty/jansson/libwmanjson_a-value.o
AR libwmanjson.a
ar: `u' modifier ignored since `D' is the default (see `U')
CC watchman-argv.o
CC watchman-envp.o
CC watchman-spawn.o
CC watchman-opt.o
CC watchman-cfg.o
CC watchman-clockspec.o
CC watchman-checksock.o
CC watchman-fstype.o
CC watchman-log.o
CC watchman-ignore.o
CC watchman-json.o
CC watchman-bser.o
CC watchman-expflags.o
CC watchman-hash.o
hash.c: In function ‘w_hash_bytes’:
hash.c:228:17: error: this statement may fall through [-Werror=implicit-fallthrough=]
case 12: c+=((uint32_t)k[11])<<24;
~^~~~~~~~~~~~~~~~~~~~~~~
hash.c:229:7: note: here
case 11: c+=((uint32_t)k[10])<<16;
^~~~
hash.c:229:17: error: this statement may fall through [-Werror=implicit-fallthrough=]
case 11: c+=((uint32_t)k[10])<<16;
~^~~~~~~~~~~~~~~~~~~~~~~
hash.c:230:7: note: here
case 10: c+=((uint32_t)k[9])<<8;
^~~~
hash.c:230:17: error: this statement may fall through [-Werror=implicit-fallthrough=]
case 10: c+=((uint32_t)k[9])<<8;
~^~~~~~~~~~~~~~~~~~~~~
hash.c:231:7: note: here
case 9 : c+=k[8];
^~~~
hash.c:231:17: error: this statement may fall through [-Werror=implicit-fallthrough=]
case 9 : c+=k[8];
~^~~~~~
hash.c:232:7: note: here
case 8 : b+=((uint32_t)k[7])<<24;
^~~~
hash.c:232:17: error: this statement may fall through [-Werror=implicit-fallthrough=]
case 8 : b+=((uint32_t)k[7])<<24;
~^~~~~~~~~~~~~~~~~~~~~~
hash.c:233:7: note: here
case 7 : b+=((uint32_t)k[6])<<16;
^~~~
hash.c:233:17: error: this statement may fall through [-Werror=implicit-fallthrough=]
case 7 : b+=((uint32_t)k[6])<<16;
~^~~~~~~~~~~~~~~~~~~~~~
hash.c:234:7: note: here
case 6 : b+=((uint32_t)k[5])<<8;
^~~~
hash.c:234:17: error: this statement may fall through [-Werror=implicit-fallthrough=]
case 6 : b+=((uint32_t)k[5])<<8;
~^~~~~~~~~~~~~~~~~~~~~
hash.c:235:7: note: here
case 5 : b+=k[4];
^~~~
hash.c:235:17: error: this statement may fall through [-Werror=implicit-fallthrough=]
case 5 : b+=k[4];
~^~~~~~
hash.c:236:7: note: here
case 4 : a+=((uint32_t)k[3])<<24;
^~~~
hash.c:236:17: error: this statement may fall through [-Werror=implicit-fallthrough=]
case 4 : a+=((uint32_t)k[3])<<24;
~^~~~~~~~~~~~~~~~~~~~~~
hash.c:237:7: note: here
case 3 : a+=((uint32_t)k[2])<<16;
^~~~
hash.c:237:17: error: this statement may fall through [-Werror=implicit-fallthrough=]
case 3 : a+=((uint32_t)k[2])<<16;
~^~~~~~~~~~~~~~~~~~~~~~
hash.c:238:7: note: here
case 2 : a+=((uint32_t)k[1])<<8;
^~~~
hash.c:238:17: error: this statement may fall through [-Werror=implicit-fallthrough=]
case 2 : a+=((uint32_t)k[1])<<8;
~^~~~~~~~~~~~~~~~~~~~~
hash.c:239:7: note: here
case 1 : a+=k[0];
^~~~
cc1: all warnings being treated as errors
make[1]: *** [Makefile:2312: watchman-hash.o] Error 1
make[1]: Leaving directory '/home/dori/Projects/3rdpart/watchman'
make: *** [Makefile:867: all] Error 2
Fixed by adding /* fall through */ next to each cases l.228 ~ l.238. Problem seems fixed on master, I only checked out v4.7.0 because it was recommended in the doc
This is a duplicate of #467 and is fixed in master. I'm planning on cutting a release this week, but in the meantime, you can use ./configure --enable-lenient to relax the warning -> error promotion and build the 4.7 tag.
Most helpful comment
This is a duplicate of #467 and is fixed in master. I'm planning on cutting a release this week, but in the meantime, you can use
./configure --enable-lenientto relax the warning -> error promotion and build the 4.7 tag.