• Ojaswin Mujoo's avatar
    powerpc/boot: Fix incorrect version calculation issue in ld_version · 3287ebd7
    Ojaswin Mujoo authored
    The ld_version() function computes the wrong version value for certain
    ld versions such as the following:
    
      $ ld --version
      GNU ld (GNU Binutils; SUSE Linux Enterprise 15)
      2.37.20211103-150100.7.37
    
    For input 2.37.20211103, the value computed is 202348030000 which is
    higher than the value for a later version like 2.39.0, which is
    23900000.
    
    This issue was highlighted because with the above ld version, the
    powerpc kernel build started failing with ld error: "unrecognized option
    --no-warn-rwx-segments". This was caused due to the recent commit
    579aee9f ("powerpc: suppress some linker warnings in recent linker
    versions") which added the --no-warn-rwx-segments linker flag if the ld
    version is greater than 2.39.
    
    Due to the bug in ld_version(), ld version 2.37.20111103 is wrongly
    calculated to be greater than 2.39 and the unsupported flag is added.
    
    To fix it, if version is of the form x.y.z and length(z) == 8, then most
    probably it is a date [yyyymmdd] commonly used for release snapshots and
    not an actual new version. Hence, ignore the date part replacing it with
    0.
    
    Fixes: 579aee9f ("powerpc: suppress some linker warnings in recent linker versions")
    Signed-off-by: default avatarOjaswin Mujoo <ojaswin@linux.ibm.com>
    [mpe: Tweak change log wording/formatting, add Fixes tag]
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20230104202437.90039-1-ojaswin@linux.ibm.com
    3287ebd7
wrapper 14.5 KB