Skip to content
  1. Mar 17, 2011
  2. Mar 15, 2011
  3. Mar 11, 2011
    • Dave Martin's avatar
      ARM: 6781/1: Thumb-2: Work around buggy Thumb-2 short branch relocations in gas · 6f685c5c
      Dave Martin authored
      Various binutils versions can resolve Thumb-2 branches to
      locally-defined, preemptible global symbols as short-range "b.n"
      branch instructions.
      
      This is a problem, because there's no guarantee the final
      destination of the symbol, or any candidate locations for a
      trampoline, are within range of the branch.  For this reason, the
      kernel does not support fixing up the R_ARM_THM_JUMP11 (102)
      relocation in modules at all, and it makes little sense to add
      support.
      
      The symptom is that the kernel fails with an "unsupported
      relocation" error when loading some modules.
      
      Until fixed tools are available, passing
      -fno-optimize-sibling-calls to gcc should prevent gcc generating
      code which hits this problem, at the cost of a bit of extra runtime
      stack usage in some cases.
      
      The problem is described in more detail at:
          https://bugs.launchpad.net/binutils-linaro/+bug/725126
      
      
      
      Only Thumb-2 kernels are affected.
      
      This patch adds a new CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11 config
      option which adds -fno-optimize-sibling-calls to CFLAGS_MODULE
      when building a Thumb-2 kernel.
      
      Signed-off-by: default avatarDave Martin <dave.martin@linaro.org>
      Acked-by: default avatarNicolas Pitre <nicolas.pitre@linaro.org>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      6f685c5c
  4. Mar 10, 2011
  5. Mar 09, 2011
  6. Mar 08, 2011