• Masahiro Yamada's avatar
    kbuild: record symbol versions in *.cmd files · 78e9e56a
    Masahiro Yamada authored
    
    
    When CONFIG_MODVERSIONS=y, the output from genksyms is saved in
    separate *.symversions files, and will be used much later when
    CONFIG_LTO_CLANG=y because it is impossible to update LLVM bit code
    here.
    
    This approach is not robust because:
    
     - *.symversions may or may not exist. If *.symversions does not
       exist, we never know if it is missing for legitimate reason
       (i.e. no EXPORT_SYMBOL) or something bad has happened (for
       example, the user accidentally deleted it). Once it occurs,
       it is not self-healing because *.symversions is generated
       as a side effect.
    
     - stale (i.e. invalid) *.symversions might be picked up if an
       object is generated in a non-ordinary way, and corresponding
       *.symversions (, which was generated by old builds) just happen
       to exist.
    
    A more robust approach is to save symbol versions in *.cmd files
    because:
    
     - *.cmd always exists (if the object is generated by if_changed
       rule or friends). Even if the user accidentally deletes it,
       it will be regenerated in the next build.
    
     - *.cmd is always re-generated when the object is updated. This
       avoid stale version information being picked up.
    
    I will remove *.symversions later.
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Tested-by: default avatarNicolas Schier <nicolas@fjasle.eu>
    Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
    Tested-by: default avatarNathan Chancellor <nathan@kernel.org>
    78e9e56a
Makefile.build 18.5 KB