forked from mirrors/linux
		
	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: dd06e72e68 ("Compiler Attributes: Add __counted_by macro")
Acked-by: Miguel Ojeda <ojeda@kernel.org>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20230817200558.never.077-kees@kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
			
			
This commit is contained in:
		
							parent
							
								
									be8dffa04d
								
							
						
					
					
						commit
						c8248faf3c
					
				
					 2 changed files with 17 additions and 13 deletions
				
			
		|  | @ -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 | ||||
|  * | ||||
|  |  | |||
|  | @ -45,3 +45,7 @@ | |||
| 		TYPE NAME[]; \ | ||||
| 	} | ||||
| #endif | ||||
| 
 | ||||
| #ifndef __counted_by | ||||
| #define __counted_by(m) | ||||
| #endif | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Kees Cook
						Kees Cook