Skip to content

Commit

Permalink
Silence objtool warnings from 55d7afa
Browse files Browse the repository at this point in the history
The use of __noreturn__ in 55d7afa on
spl_panic() caused objtool warnings on Linux when the kernel is built
with CONFIG_STACK_VALIDATION=y. This patch works around that by
restricting the application of __noreturn__ to builds for static
analyzers.

Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Ryan Moeller <[email protected]>
Signed-off-by: Richard Yao <[email protected]>
Closes openzfs#14068
  • Loading branch information
ryao authored and andrewc12 committed Nov 9, 2022
1 parent c4fc44c commit 337bbba
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
3 changes: 3 additions & 0 deletions include/os/freebsd/spl/sys/debug.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@
/*
* Common DEBUG functionality.
*/
#if defined(__COVERITY__) || defined(__clang_analyzer__)
__attribute__((__noreturn__))
#endif
extern void spl_panic(const char *file, const char *func, int line,
const char *fmt, ...) __attribute__((__noreturn__));
extern void spl_dumpstack(void);
Expand Down
15 changes: 14 additions & 1 deletion include/os/linux/spl/sys/debug.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,21 @@
#define __maybe_unused __attribute__((unused))
#endif

/*
* Without this, we see warnings from objtool during normal Linux builds when
* the kernel is built with CONFIG_STACK_VALIDATION=y:
*
* warning: objtool: tsd_create() falls through to next function __list_add()
* warning: objtool: .text: unexpected end of section
*
* Until the toolchain stops doing this, we must only define this attribute on
* spl_panic() when doing static analysis.
*/
#if defined(__COVERITY__) || defined(__clang_analyzer__)
__attribute__((__noreturn__))
#endif
extern void spl_panic(const char *file, const char *func, int line,
const char *fmt, ...) __attribute__((__noreturn__));
const char *fmt, ...);
extern void spl_dumpstack(void);

static inline int
Expand Down

0 comments on commit 337bbba

Please sign in to comment.