tools/nolibc: compiler: introduce __nolibc_has_attribute()
authorThomas Weißschuh <linux@weissschuh.net>
Wed, 7 Aug 2024 21:51:40 +0000 (23:51 +0200)
committerThomas Weißschuh <linux@weissschuh.net>
Sat, 10 Aug 2024 15:08:19 +0000 (17:08 +0200)
commit02a62b551cee585f7c2c93f54d1230d5714ff7d4
treecddf153004d369fe40c4df3a4c8b25a20e6f230c
parent1daea158d0aae0770371f3079305a29fdb66829e
tools/nolibc: compiler: introduce __nolibc_has_attribute()

Recent compilers support __has_attribute() to check if a certain
compiler attribute is supported.
Unfortunately we have to first check if __has_attribute is supported in
the first place and then if a specific attribute is present.
These two checks can't be folded into a single condition as that would
lead to errors.

Nesting the two conditions like below works, but becomes ugly as soon
as #else blocks are used as those need to be duplicated for both levels
of #if.

    #if defined __has_attribute
    #  if __has_attribute (nonnull)
    #    define ATTR_NONNULL __attribute__ ((nonnull))
    #  endif
    #endif

Introduce a new helper which makes the usage of __has_attribute() nicer
and migrate the current user to it.

Acked-by: Willy Tarreau <w@1wt.eu>
Link: https://lore.kernel.org/r/20240807-nolibc-llvm-v2-4-c20f2f5fc7c2@weissschuh.net
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
tools/include/nolibc/compiler.h