diff options
| author | Borislav Petkov (AMD) <bp@alien8.de> | 2025-11-01 13:37:51 +0100 |
|---|---|---|
| committer | Borislav Petkov (AMD) <bp@alien8.de> | 2025-11-10 12:46:08 +0100 |
| commit | 249092174caa3fe9fb8f7914991a8c0de484bcf8 (patch) | |
| tree | d3df2aa0f3bd2a20284bc1f2a9a03abe5f35d80d /tools/objtool | |
| parent | 6568f14cb5ae68cd6c612604ca0c89301cf3a0d0 (diff) | |
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 <nathan@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20251031114919.GBaQSiPxZrziOs3RCW@fat_crate.local
Diffstat (limited to 'tools/objtool')
| -rw-r--r-- | tools/objtool/include/objtool/warn.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/tools/objtool/include/objtool/warn.h b/tools/objtool/include/objtool/warn.h index e88322d97573..a1e3927d8e7c 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++ |