• Marco Elver's avatar
    genksyms: Ignore module scoped _Static_assert() · 9ab55d7f
    Marco Elver authored
    The C11 _Static_assert() keyword may be used at module scope, and we
    need to teach genksyms about it to not abort with an error. We currently
    have a growing number of static_assert() (but also direct usage of
    _Static_assert()) users at module scope:
    
    	git grep -E '^_Static_assert\(|^static_assert\(' | grep -v '^tools' | wc -l
    	135
    
    More recently, when enabling CONFIG_MODVERSIONS with CONFIG_KCSAN, we
    observe a number of warnings:
    
    	WARNING: modpost: EXPORT symbol "<..all kcsan symbols..>" [vmlinux] [...]
    
    When running a preprocessed source through 'genksyms -w' a number of
    syntax errors point at usage of static_assert()s. In the case of
    kernel/kcsan/encoding.h, new static_assert()s had been introduced which
    used expressions that appear to cause genksyms to not even be able to
    recover from the syntax error gracefully (as it appears was the case
    previously).
    
    Therefore, make genksyms ignore all _Static_assert() and the contained
    expression. With the fix, usage of _Static_assert() no longer cause
    "syntax error" all over the kernel, and the above modpost warnings for
    KCSAN are gone, too.
    Signed-off-by: default avatarMarco Elver <elver@google.com>
    Acked-by: default avatarNick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    9ab55d7f
parse.y 10.6 KB