ARM: 8321/1: asm-generic: introduce .text.fixup input section
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Tue, 24 Mar 2015 09:39:10 +0000 (10:39 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 29 Mar 2015 22:11:55 +0000 (23:11 +0100)
This introduces a new .text.fixup input section that gets emitted
together with the .text section for each input object file.

Note that

  *(.text)
  *(.text.fixup)

is not the same as

  *(.text .text.fixup)

and we are looking for the latter, to ensure that fixup snippets that
are assembled into a separate section in the object file do not end
up out of range for the relative branch instructions it contains if
the .text section itself grows very large.

This helps prevent linker failures on large ARM kernels.

Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
include/asm-generic/vmlinux.lds.h

index ac78910d7416c5f7f2a68cfbde0d950d58ab0d9c..463231d5bfc79c3528c880e1b18554d6d4769fb7 100644 (file)
 #define TEXT_TEXT                                                      \
                ALIGN_FUNCTION();                                       \
                *(.text.hot)                                            \
-               *(.text)                                                \
+               *(.text .text.fixup)                                    \
                *(.ref.text)                                            \
        MEM_KEEP(init.text)                                             \
        MEM_KEEP(exit.text)                                             \