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