Skip to content

Commit

Permalink
tools: compiler-gcc.h: Guard error attribute use with __has_attribute
Browse files Browse the repository at this point in the history
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 4e59869 ("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 815f0dd ("include/linux/compiler*.h: make compiler-*.h
mutually exclusive") and commit a3f8a30 ("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: 4e59869 ("compiler-gcc.h: drop checks for older GCC versions")
Signed-off-by: Nathan Chancellor <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
nathanchance authored and torvalds committed Sep 13, 2021
1 parent 3163462 commit d0ee23f
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion tools/include/linux/compiler-gcc.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
# define __fallthrough __attribute__ ((fallthrough))
#endif

#define __compiletime_error(message) __attribute__((error(message)))
#if __has_attribute(__error__)
# define __compiletime_error(message) __attribute__((error(message)))
#endif

/* &a[0] degrades to a pointer: a different type from an array */
#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
Expand Down

0 comments on commit d0ee23f

Please sign in to comment.