aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Romain Naour <romain.naour@gmail.com>2018-06-02 16:34:07 +0200
committerGravatar Thomas Petazzoni <thomas.petazzoni@bootlin.com>2018-07-20 09:46:05 +0200
commit9a50447b5d4b2ab0162e3235395ab9a4c8a647d5 (patch)
tree20d9f591b025f15d68dc288a61f66695400ed996
parente40cdee9ccfaf279465826af8f68f611fd6afcf5 (diff)
downloadbuildroot-9a50447b5d4b2ab0162e3235395ab9a4c8a647d5.tar.gz
buildroot-9a50447b5d4b2ab0162e3235395ab9a4c8a647d5.tar.bz2
linux: disable attribute alias with gcc >= 8.1
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 sanitze the arguments passed from user space in registers. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82435 Disable the attribute-alias warning introduced by gcc-8 by adding -Wno-attribute-alias to KCFLAGS. Signed-off-by: Romain Naour <romain.naour@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
-rw-r--r--linux/linux.mk10
1 files changed, 10 insertions, 0 deletions
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`