• M
    modpost: change the license of EXPORT_SYMBOL to bool type · 2a66c312
    Masahiro Yamada 提交于
    There were more EXPORT_SYMBOL types in the past. The following commits
    removed unused ones.
    
     - f1c3d73e ("module: remove EXPORT_SYMBOL_GPL_FUTURE")
     - 36794822 ("module: remove EXPORT_UNUSED_SYMBOL*")
    
    There are 3 remaining in enum export, but export_unknown does not make
    any sense because we never expect such a situation like "we do not know
    how it was exported".
    
    If the symbol name starts with "__ksymtab_", but the section name
    does not start with "___ksymtab+" or "___ksymtab_gpl+", it is not an
    exported symbol.
    
    It occurs when a variable starting with "__ksymtab_" is directly defined:
    
       int __ksymtab_foo;
    
    Presumably, there is no practical issue for using such a weird variable
    name (but there is no good reason for doing so, either).
    
    Anyway, that is not an exported symbol. Setting export_unknown is not
    the right thing to do. Do not call sym_add_exported() in this case.
    
    With pointless export_unknown removed, the export type finally becomes
    boolean (either EXPORT_SYMBOL or EXPORT_SYMBOL_GPL).
    
    I renamed the field name to is_gpl_only. EXPORT_SYMBOL_GPL sets it true.
    Only GPL-compatible modules can use it.
    
    I removed the orphan comment, "How a symbol is exported", which is
    unrelated to sec_mismatch_count. It is about enum export.
    See commit bd5cbced ("kbuild: export-type enhancement to modpost.c")
    Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: NNicolas Schier <nicolas@fjasle.eu>
    Tested-by: NNathan Chancellor <nathan@kernel.org>
    2a66c312
modpost.c 66.0 KB