diff --git a/linux/linux.mk b/linux/linux.mk index 7f4c916671..7527b11673 100644 --- a/linux/linux.mk +++ b/linux/linux.mk @@ -121,6 +121,16 @@ LINUX_MAKE_ENV += \ KBUILD_BUILD_TIMESTAMP="$(shell LC_ALL=C date -d @$(SOURCE_DATE_EPOCH))" endif +# gcc-8 started warning about function aliases that have a +# non-matching prototype. This seems rather useful in general, but it +# causes tons of warnings in the Linux kernel, where we rely on +# abusing those aliases for system call entry points, in order to +# sanitize the arguments passed from user space in registers. +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82435 +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_8),y) +LINUX_MAKE_ENV += KCFLAGS=-Wno-attribute-alias +endif + # Get the real Linux version, which tells us where kernel modules are # going to be installed in the target filesystem. LINUX_VERSION_PROBED = `$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelrelease 2>/dev/null`