[PATCH v1] kbuild: Fix CC_CAN_LINK detection

Mickaël Salaün posted 1 patch 1 month, 2 weeks ago
scripts/cc-can-link.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH v1] kbuild: Fix CC_CAN_LINK detection
Posted by Mickaël Salaün 1 month, 2 weeks ago
Most samples cannot be build on some environments because they depend
on CC_CAN_LINK, which is set according to the result of
scripts/cc-can-link.sh called by cc_can_link_user.

Because cc-can-link.sh must now build without warning, it may fail
because it is calling printf() with an empty string:

  + cat
  + gcc -m32 -Werror -Wl,--fatal-warnings -x c - -o /dev/null
  <stdin>: In function ‘main’:
  <stdin>:4:9: error: zero-length gnu_printf format string [-Werror=format-zero-length]
  cc1: all warnings being treated as errors

Fix this warning and the samples build by actually printing something.

Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nicolas Schier <nsc@kernel.org>
Cc: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Cc: stable@vger.kernel.org
Fixes: d81d9d389b9b ("kbuild: don't enable CC_CAN_LINK if the dummy program generates warnings")
Signed-off-by: Mickaël Salaün <mic@digikod.net>
---
 scripts/cc-can-link.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/cc-can-link.sh b/scripts/cc-can-link.sh
index e67fd8d7b684..58dc7dd6d556 100755
--- a/scripts/cc-can-link.sh
+++ b/scripts/cc-can-link.sh
@@ -5,7 +5,7 @@ cat << "END" | $@ -Werror -Wl,--fatal-warnings -x c - -o /dev/null >/dev/null 2>
 #include <stdio.h>
 int main(void)
 {
-	printf("");
+	printf("\n");
 	return 0;
 }
 END
-- 
2.53.0

Re: [PATCH v1] kbuild: Fix CC_CAN_LINK detection
Posted by Nathan Chancellor 1 month, 1 week ago
On Thu, 12 Feb 2026 14:35:43 +0100, Mickaël Salaün wrote:
> Most samples cannot be build on some environments because they depend
> on CC_CAN_LINK, which is set according to the result of
> scripts/cc-can-link.sh called by cc_can_link_user.
> 
> Because cc-can-link.sh must now build without warning, it may fail
> because it is calling printf() with an empty string:
> 
> [...]

Applied to

  https://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux.git kbuild-fixes

Thanks!

[1/1] kbuild: Fix CC_CAN_LINK detection
      https://git.kernel.org/kbuild/c/be55899b71630

Please look out for regression or issue reports or other follow up
comments, as they may result in the patch/series getting dropped or
reverted. Patches applied to an "unstable" branch are accepted pending
wider testing in -next and any post-commit review; they will generally
be moved to the main branch in a week if no issues are found.

Best regards,
-- 
Nathan Chancellor <nathan@kernel.org>

Re: [PATCH v1] kbuild: Fix CC_CAN_LINK detection
Posted by Nicolas Schier 1 month, 2 weeks ago
On Thu, Feb 12, 2026 at 02:35:43PM +0100, Mickaël Salaün wrote:
> Most samples cannot be build on some environments because they depend
> on CC_CAN_LINK, which is set according to the result of
> scripts/cc-can-link.sh called by cc_can_link_user.
> 
> Because cc-can-link.sh must now build without warning, it may fail
> because it is calling printf() with an empty string:
> 
>   + cat
>   + gcc -m32 -Werror -Wl,--fatal-warnings -x c - -o /dev/null
>   <stdin>: In function ‘main’:
>   <stdin>:4:9: error: zero-length gnu_printf format string [-Werror=format-zero-length]
>   cc1: all warnings being treated as errors
> 
> Fix this warning and the samples build by actually printing something.
> 
> Cc: Nathan Chancellor <nathan@kernel.org>
> Cc: Nicolas Schier <nsc@kernel.org>
> Cc: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> Cc: stable@vger.kernel.org
> Fixes: d81d9d389b9b ("kbuild: don't enable CC_CAN_LINK if the dummy program generates warnings")
> Signed-off-by: Mickaël Salaün <mic@digikod.net>
> ---
>  scripts/cc-can-link.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 

Thanks!

Reviewed-by: Nicolas Schier <nsc@kernel.org>
Re: [PATCH v1] kbuild: Fix CC_CAN_LINK detection
Posted by Thomas Weißschuh 1 month, 2 weeks ago
On Thu, Feb 12, 2026 at 02:35:43PM +0100, Mickaël Salaün wrote:
> Most samples cannot be build on some environments because they depend
> on CC_CAN_LINK, which is set according to the result of
> scripts/cc-can-link.sh called by cc_can_link_user.
> 
> Because cc-can-link.sh must now build without warning, it may fail
> because it is calling printf() with an empty string:
> 
>   + cat
>   + gcc -m32 -Werror -Wl,--fatal-warnings -x c - -o /dev/null
>   <stdin>: In function ‘main’:
>   <stdin>:4:9: error: zero-length gnu_printf format string [-Werror=format-zero-length]
>   cc1: all warnings being treated as errors
> 
> Fix this warning and the samples build by actually printing something.
> 
> Cc: Nathan Chancellor <nathan@kernel.org>
> Cc: Nicolas Schier <nsc@kernel.org>
> Cc: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> Cc: stable@vger.kernel.org
> Fixes: d81d9d389b9b ("kbuild: don't enable CC_CAN_LINK if the dummy program generates warnings")

Thanks!

Reviewed-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>

In my GCC 15.2 this warning is not enabled by default.

> Signed-off-by: Mickaël Salaün <mic@digikod.net>
> ---
>  scripts/cc-can-link.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/scripts/cc-can-link.sh b/scripts/cc-can-link.sh
> index e67fd8d7b684..58dc7dd6d556 100755
> --- a/scripts/cc-can-link.sh
> +++ b/scripts/cc-can-link.sh
> @@ -5,7 +5,7 @@ cat << "END" | $@ -Werror -Wl,--fatal-warnings -x c - -o /dev/null >/dev/null 2>
>  #include <stdio.h>
>  int main(void)
>  {
> -	printf("");
> +	printf("\n");
>  	return 0;
>  }
>  END
> -- 
> 2.53.0
> 
Re: [PATCH v1] kbuild: Fix CC_CAN_LINK detection
Posted by Mickaël Salaün 1 month, 2 weeks ago
On Thu, Feb 12, 2026 at 03:15:47PM +0100, Thomas Weißschuh wrote:
> On Thu, Feb 12, 2026 at 02:35:43PM +0100, Mickaël Salaün wrote:
> > Most samples cannot be build on some environments because they depend
> > on CC_CAN_LINK, which is set according to the result of
> > scripts/cc-can-link.sh called by cc_can_link_user.
> > 
> > Because cc-can-link.sh must now build without warning, it may fail
> > because it is calling printf() with an empty string:
> > 
> >   + cat
> >   + gcc -m32 -Werror -Wl,--fatal-warnings -x c - -o /dev/null
> >   <stdin>: In function ‘main’:
> >   <stdin>:4:9: error: zero-length gnu_printf format string [-Werror=format-zero-length]
> >   cc1: all warnings being treated as errors
> > 
> > Fix this warning and the samples build by actually printing something.
> > 
> > Cc: Nathan Chancellor <nathan@kernel.org>
> > Cc: Nicolas Schier <nsc@kernel.org>
> > Cc: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> > Cc: stable@vger.kernel.org
> > Fixes: d81d9d389b9b ("kbuild: don't enable CC_CAN_LINK if the dummy program generates warnings")
> 
> Thanks!
> 
> Reviewed-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> 
> In my GCC 15.2 this warning is not enabled by default.

Some for me, but it is the case with GCC 13.3.0 on Ubuntu 24 LTS.

> 
> > Signed-off-by: Mickaël Salaün <mic@digikod.net>
> > ---
> >  scripts/cc-can-link.sh | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/scripts/cc-can-link.sh b/scripts/cc-can-link.sh
> > index e67fd8d7b684..58dc7dd6d556 100755
> > --- a/scripts/cc-can-link.sh
> > +++ b/scripts/cc-can-link.sh
> > @@ -5,7 +5,7 @@ cat << "END" | $@ -Werror -Wl,--fatal-warnings -x c - -o /dev/null >/dev/null 2>
> >  #include <stdio.h>
> >  int main(void)
> >  {
> > -	printf("");
> > +	printf("\n");
> >  	return 0;
> >  }
> >  END
> > -- 
> > 2.53.0
> >