From 249092174caa3fe9fb8f7914991a8c0de484bcf8 Mon Sep 17 00:00:00 2001 From: "Borislav Petkov (AMD)" Date: Sat, 1 Nov 2025 13:37:51 +0100 Subject: [PATCH] tools/objtool: Copy the __cleanup unused variable fix for older clang Copy from 54da6a092431 ("locking: Introduce __cleanup() based infrastructure") the bits which mark the variable with a cleanup attribute unused so that my clang 15 can dispose of it properly instead of warning that it is unused which then fails the build due to -Werror. Suggested-by: Nathan Chancellor Signed-off-by: Borislav Petkov (AMD) Reviewed-by: Nathan Chancellor Link: https://lore.kernel.org/r/20251031114919.GBaQSiPxZrziOs3RCW@fat_crate.local --- tools/objtool/include/objtool/warn.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tools/objtool/include/objtool/warn.h b/tools/objtool/include/objtool/warn.h index e88322d97573e..a1e3927d8e7ce 100644 --- a/tools/objtool/include/objtool/warn.h +++ b/tools/objtool/include/objtool/warn.h @@ -107,6 +107,15 @@ extern int indent; static inline void unindent(int *unused) { indent--; } +/* + * Clang prior to 17 is being silly and considers many __cleanup() variables + * as unused (because they are, their sole purpose is to go out of scope). + * + * https://github.com/llvm/llvm-project/commit/877210faa447f4cc7db87812f8ed80e398fedd61 + */ +#undef __cleanup +#define __cleanup(func) __maybe_unused __attribute__((__cleanup__(func))) + #define __dbg(format, ...) \ fprintf(stderr, \ "DEBUG: %s%s" format "\n", \ @@ -127,7 +136,7 @@ static inline void unindent(int *unused) { indent--; } }) #define dbg_indent(args...) \ - int __attribute__((cleanup(unindent))) __dummy_##__COUNTER__; \ + int __cleanup(unindent) __dummy_##__COUNTER__; \ __dbg_indent(args); \ indent++ -- 2.47.3