Commit c8248faf authored by Kees Cook's avatar Kees Cook
Browse files

Compiler Attributes: counted_by: Adjust name and identifier expansion



GCC and Clang's current RFCs name this attribute "counted_by", and have
moved away from using a string for the member name. Update the kernel's
macros to match. Additionally provide a UAPI no-op macro for UAPI structs
that will gain annotations.

Cc: Miguel Ojeda <ojeda@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Fixes: dd06e72e ("Compiler Attributes: Add __counted_by macro")
Acked-by: default avatarMiguel Ojeda <ojeda@kernel.org>
Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20230817200558.never.077-kees@kernel.org


Signed-off-by: default avatarKees Cook <keescook@chromium.org>
parent be8dffa0
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -94,6 +94,19 @@
# define __copy(symbol)
#endif

/*
 * Optional: only supported since gcc >= 14
 * Optional: only supported since clang >= 18
 *
 *   gcc: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108896
 * clang: https://reviews.llvm.org/D148381
 */
#if __has_attribute(__counted_by__)
# define __counted_by(member)		__attribute__((__counted_by__(member)))
#else
# define __counted_by(member)
#endif

/*
 * Optional: not supported by gcc
 * Optional: only supported since clang >= 14.0
@@ -129,19 +142,6 @@
# define __designated_init
#endif

/*
 * Optional: only supported since gcc >= 14
 * Optional: only supported since clang >= 17
 *
 *   gcc: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108896
 * clang: https://reviews.llvm.org/D148381
 */
#if __has_attribute(__element_count__)
# define __counted_by(member)		__attribute__((__element_count__(#member)))
#else
# define __counted_by(member)
#endif

/*
 * Optional: only supported since clang >= 14.0
 *
+4 −0
Original line number Diff line number Diff line
@@ -45,3 +45,7 @@
		TYPE NAME[]; \
	}
#endif

#ifndef __counted_by
#define __counted_by(m)
#endif