From 8102e009d4244d0414811907fd08e82c3c5974f2 Mon Sep 17 00:00:00 2001 From: q66 Date: Thu, 4 Jul 2019 21:28:30 +0200 Subject: [PATCH] linux4.19: add patch to unbreak build on big-endian ppc64 + gcc9 --- .../linux4.19/patches/ppc64-be-gcc91.patch | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 srcpkgs/linux4.19/patches/ppc64-be-gcc91.patch diff --git a/srcpkgs/linux4.19/patches/ppc64-be-gcc91.patch b/srcpkgs/linux4.19/patches/ppc64-be-gcc91.patch new file mode 100644 index 00000000000..f168c161e6c --- /dev/null +++ b/srcpkgs/linux4.19/patches/ppc64-be-gcc91.patch @@ -0,0 +1,28 @@ +Since gcc 9.1, adding `-mcall-aixdesc` to cflags makes it no longer define +`__linux__`, which breaks compilation of the kernel in places where the macro +is checked (which is multiple). This behavior is actually more correct than +it was before, as `-mcall-aixdesc` is only meant to be used when compiling +for AIX. + +However, it is not enough to just drop it and use `-mabi=elfv1`, as that +results in a ton of undefined references all over the place when linking. +So work around it until upstream sorts it out. + +--- a/arch/powerpc/Makefile ++++ b/arch/powerpc/Makefile +@@ -96,6 +96,7 @@ endif + ifdef CONFIG_PPC64 + cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1) + cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mcall-aixdesc) ++cflags-$(CONFIG_CPU_BIG_ENDIAN) += -D__linux__ + aflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1) + aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mabi=elfv2 + endif +@@ -151,6 +152,7 @@ AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2) + else + CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1) + CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcall-aixdesc) ++CFLAGS-$(CONFIG_PPC64) += -D__linux__ + AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1) + endif + CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcmodel=medium,$(call cc-option,-mminimal-toc))