• Wolfgang Denk's avatar
    Fix all linker scripts for older binutils versions (pre-2.16) · 1aada9cd
    Wolfgang Denk authored
    Commit f62fb999
    
     fixed handling of all rodata sections by using a
    wildcard combined with calls to ld's builtin functions SORT_BY_ALIGNMENT()
    and SORT_BY_NAME().  Unfortunately these functions were only
    introduced with biunutils version 2.16, so the modification broke
    building with all tool chains using older binutils.
    
    This patch makes it work again.  This is done by omitting the use of
    these functions for such old tool chains.  This will result in
    slightly larger target binaries, as the rodata sections are no longer
    in optimal order alignment-wise which reauls in unused gaps, but the
    effect was found to be insignificant - especially compared to the fact
    that you cannot build U-Boot at all in the current state.
    
    As ld seems to have no support for conditionals we run the linker
    script through the C preprocessor which can be easily used to remove
    the unwanted function calls.
    
    Note that the C preprocessor must be run with the "-ansi" (or a
    "-std=") option to make sure all the system-specific predefined
    macros outside the reserved namespace are suppressed. Otherise, cpp
    might for example substitute "powerpc" to "1", thus corrupting for
    example "OUTPUT_ARCH(powerpc)" etc.
    
    Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
    Cc: Mike Frysinger <vapier@gentoo.org>
    1aada9cd