Skip to content
  • Nathan Lynch's avatar
    ARM: 8405/1: VDSO: fix regression with toolchains lacking ld.bfd executable · 3473f265
    Nathan Lynch authored
    The Sourcery CodeBench Lite 2014.05 toolchain (gcc 4.8.3, binutils
    2.24.51) has a GCC which implements -fuse-ld, and it doesn't include
    the gold linker, but it lacks an ld.bfd executable in its
    installation.  This means that passing -fuse-ld=bfd fails with:
    
          VDSO    arch/arm/vdso/vdso.so.raw
        collect2: fatal error: cannot find 'ld'
    
    Arguably this is a deficiency in the toolchain, but I suspect it's
    commonly used enough that it's worth accommodating: just use
    
    cc-ldoption (to cause a link attempt) instead of cc-option to test
    whether we can use -fuse-ld.  So -fuse-ld=bfd won't be used with this
    toolchain, but the build will rightly succeed, just as it does for
    toolchains which don't implement -fuse-ld (and don't use gold as the
    default linker).
    
    Note: this will change the failure mode for a corner case I was trying
    to handle in d2b30cd4
    
    , where the toolchain defaults to the gold
    linker and the BFD linker is not found in PATH, from:
    
          VDSO    arch/arm/vdso/vdso.so.raw
        collect2: fatal error: cannot find 'ld'
    
    i.e. the BFD linker is not found, to:
    
          OBJCOPY arch/arm/vdso/vdso.so
        BFD: arch/arm/vdso/vdso.so: Not enough room for program headers, try
        linking with -N
    
    that is, we fail to prevent gold from being used as the linker, and it
    produces an object that objcopy can't digest.
    
    Reported-by: default avatarBaruch Siach <baruch@tkos.co.il>
    Tested-by: default avatarBaruch Siach <baruch@tkos.co.il>
    Tested-by: default avatarRaphaël Poggi <poggi.raph@gmail.com>
    Fixes: d2b30cd4
    
     ("ARM: 8384/1: VDSO: force use of BFD linker")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarNathan Lynch <nathan_lynch@mentor.com>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    3473f265