Comment 23 for bug 1533009

Revision history for this message
Christophe Lyon (christophe-lyon) wrote :

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:
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.