linux4.19: add patch to unbreak build on big-endian ppc64 + gcc9
This commit is contained in:
parent
3529745664
commit
8102e009d4
1 changed files with 28 additions and 0 deletions
28
srcpkgs/linux4.19/patches/ppc64-be-gcc91.patch
Normal file
28
srcpkgs/linux4.19/patches/ppc64-be-gcc91.patch
Normal file
|
@ -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))
|
Loading…
Reference in a new issue