All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH v2 2/4] modpost: inform compilers that fatal() never returns
@ 2024-01-22  3:48 Aiden Leong
  2024-01-22 13:29 ` Masahiro Yamada
  0 siblings, 1 reply; 5+ messages in thread
From: Aiden Leong @ 2024-01-22  3:48 UTC (permalink / raw)
  To: masahiroy; +Cc: linux-kbuild, linux-kernel, nathan, ndesaulniers, nicolas


 > The function fatal() never returns because modpost_log() calls exit(1)

 > when LOG_FATAL is passed.
 >
 > Inform compilers of this fact so that unreachable code flow can be
 > identified at compile time.
 >
 > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
 > Reviewed-by: Nathan Chancellor <nathan@kernel.org>
 > ---
 >
 > Changes in v2:
 >   - Use noreturn attribute together with alias
 >
 >  scripts/mod/modpost.c | 3 +++
 >  scripts/mod/modpost.h | 5 ++++-
 >  2 files changed, 7 insertions(+), 1 deletion(-)
 >
 > diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
 > index ca0a90158f85..c13bc9095df3 100644
 > --- a/scripts/mod/modpost.c
 > +++ b/scripts/mod/modpost.c
 > @@ -90,6 +90,9 @@ void modpost_log(enum loglevel loglevel, const char 
*fmt, ...)
 >          error_occurred = true;
 >  }
 >
 > +void __attribute__((alias("modpost_log")))

Hi Masahiro,
I cross-compile kernel on Apple Silicon MacBook Pro
and every thing works well until this patch.

My build command:
make ARCH=arm CROSS_COMPILE=arm-none-eabi- \
HOSTCFLAGS="-I/opt/homebrew/opt/openssl/include" \
HOSTLDFLAGS="-L/opt/homebrew/opt/openssl/lib"

Error message:
scripts/mod/modpost.c:93:21: error: aliases are not supported on darwin

Aiden Leong

 > +modpost_log_noret(enum loglevel loglevel, const char *fmt, ...);
 > +
 >  static inline bool strends(const char *str, const char *postfix)
 >  {
 >      if (strlen(str) < strlen(postfix))
 > diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
 > index 9fe974dc1a52..835cababf1b0 100644
 > --- a/scripts/mod/modpost.h
 > +++ b/scripts/mod/modpost.h
 > @@ -200,6 +200,9 @@ enum loglevel {
 >  void __attribute__((format(printf, 2, 3)))
 >  modpost_log(enum loglevel loglevel, const char *fmt, ...);
 >
 > +void __attribute__((format(printf, 2, 3), noreturn))
 > +modpost_log_noret(enum loglevel loglevel, const char *fmt, ...);
 > +
 >  /*
 >   * warn - show the given message, then let modpost continue running, 
still
 >   *        allowing modpost to exit successfully. This should be used 
when
 > @@ -215,4 +218,4 @@ modpost_log(enum loglevel loglevel, const char 
*fmt, ...);
 >   */
 >  #define warn(fmt, args...)    modpost_log(LOG_WARN, fmt, ##args)
 >  #define error(fmt, args...)    modpost_log(LOG_ERROR, fmt, ##args)
 > -#define fatal(fmt, args...)    modpost_log(LOG_FATAL, fmt, ##args)
 > +#define fatal(fmt, args...)    modpost_log_noret(LOG_FATAL, fmt, ##args)
 > --
 > 2.40.1

^ permalink raw reply	[flat|nested] 5+ messages in thread
* [PATCH v2 1/4] modpost: move __attribute__((format(printf, 2, 3))) to modpost.h
@ 2023-12-03  9:49 Masahiro Yamada
  2023-12-03  9:49 ` [PATCH v2 2/4] modpost: inform compilers that fatal() never returns Masahiro Yamada
  0 siblings, 1 reply; 5+ messages in thread
From: Masahiro Yamada @ 2023-12-03  9:49 UTC (permalink / raw)
  To: linux-kbuild
  Cc: Masahiro Yamada, Nathan Chancellor, Andi Kleen, Nick Desaulniers,
	Nicolas Schier, Sam Ravnborg, linux-kernel

This attribute must be added to the function declaration in a header
for comprehensive checking of all the callsites.

Fixes: 6d9a89ea4b06 ("kbuild: declare the modpost error functions as printf like")
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
---

(no changes since v1)

 scripts/mod/modpost.c | 3 +--
 scripts/mod/modpost.h | 3 ++-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index cb6406f485a9..ca0a90158f85 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -60,8 +60,7 @@ static unsigned int nr_unresolved;
 
 #define MODULE_NAME_LEN (64 - sizeof(Elf_Addr))
 
-void __attribute__((format(printf, 2, 3)))
-modpost_log(enum loglevel loglevel, const char *fmt, ...)
+void modpost_log(enum loglevel loglevel, const char *fmt, ...)
 {
 	va_list arglist;
 
diff --git a/scripts/mod/modpost.h b/scripts/mod/modpost.h
index 69baf014da4f..9fe974dc1a52 100644
--- a/scripts/mod/modpost.h
+++ b/scripts/mod/modpost.h
@@ -197,7 +197,8 @@ enum loglevel {
 	LOG_FATAL
 };
 
-void modpost_log(enum loglevel loglevel, const char *fmt, ...);
+void __attribute__((format(printf, 2, 3)))
+modpost_log(enum loglevel loglevel, const char *fmt, ...);
 
 /*
  * warn - show the given message, then let modpost continue running, still
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-01-27 13:41 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-22  3:48 [PATCH v2 2/4] modpost: inform compilers that fatal() never returns Aiden Leong
2024-01-22 13:29 ` Masahiro Yamada
2024-01-22 23:02   ` Nathan Chancellor
2024-01-27 13:41     ` Masahiro Yamada
  -- strict thread matches above, loose matches on Subject: below --
2023-12-03  9:49 [PATCH v2 1/4] modpost: move __attribute__((format(printf, 2, 3))) to modpost.h Masahiro Yamada
2023-12-03  9:49 ` [PATCH v2 2/4] modpost: inform compilers that fatal() never returns Masahiro Yamada

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.