]> git.baikalelectronics.ru Git - kernel.git/commit
tools: compiler-gcc.h: Guard error attribute use with __has_attribute
authorNathan Chancellor <nathan@kernel.org>
Mon, 13 Sep 2021 22:09:00 +0000 (15:09 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 13 Sep 2021 22:51:41 +0000 (15:51 -0700)
commitdffa19a9d1b871c85ace3840970a3af9fd329437
tree871edf27288358a38e8e0983d20fe1bc75888f71
parentdfe13d5f031797680e4e8c2daf0ab1c1cedc355e
tools: compiler-gcc.h: Guard error attribute use with __has_attribute

When building objtool with HOSTCC=clang, there are several errors along
the lines of

  orc_dump.c:201:28: error: unknown attribute 'error' ignored [-Werror,-Wunknown-attributes]

This occurs after commit 97d1d8a7a0cf ("compiler-gcc.h: drop checks for
older GCC versions"), which removed the GCC_VERSION gating.  The removed
version check just so happened to prevent __compiletime_error() from
being defined with clang because it pretends to be GCC 4.2.1 for
compatibility but the error attribute was not added to clang until
14.0.0.

Commit bf82e747dd2a ("include/linux/compiler*.h: make compiler-*.h
mutually exclusive") and commit c241cff07672 ("Compiler Attributes: use
feature checks instead of version checks") refactored the handling of
attributes in the main kernel to avoid situations like this but that
refactoring has never been done for the tools directory.

Refactoring is a rather large undertaking and this has never been an
issue before so instead, just guard the definition of
__compiletime_error() with __has_attribute() so that there are no more
errors.

Fixes: 97d1d8a7a0cf ("compiler-gcc.h: drop checks for older GCC versions")
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
tools/include/linux/compiler-gcc.h