By default, GCC now uses adrp / ldr or adrp / add instructions to address the literal pools under the use of a command line
option, and this mode is on by default.
OTOH, CONFIG_ARM64_ERRATUM_843419 removes support for the related relocations from the kernel, hence the error you are seeing.
Modifying arch/arm64/Makefile in the kernel sources to have:
ifeq ($(CONFIG_ARM64_ERRATUM_843419), y)
KBUILD_CFLAGS_MODULE += -mcmodel=large -mpc-relative-literal-loads
endif
makes the problem disappear.
However, the -mpc-relative-literal-loads option is not recognized by GCC if it doesn't include the patch for GCC PR 63304, so it may not be easy to patch the Makefile.
We backported fixes for GCC PR63304 (https:/ /gcc.gnu. org/bugzilla/ show_bug. cgi?id= 63304) in our 2015.12 snapshot.
By default, GCC now uses adrp / ldr or adrp / add instructions to address the literal pools under the use of a command line
option, and this mode is on by default.
OTOH, CONFIG_ ARM64_ERRATUM_ 843419 removes support for the related relocations from the kernel, hence the error you are seeing.
Modifying arch/arm64/Makefile in the kernel sources to have: ARM64_ERRATUM_ 843419) , y) CFLAGS_ MODULE += -mcmodel=large -mpc-relative- literal- loads
ifeq ($(CONFIG_
KBUILD_
endif
makes the problem disappear.
However, the -mpc-relative- literal- loads option is not recognized by GCC if it doesn't include the patch for GCC PR 63304, so it may not be easy to patch the Makefile.