[PATCH] kbuild: prefer ${NM} in check-function-names.sh

Carlos Llamas posted 1 patch 1 month, 2 weeks ago
scripts/check-function-names.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] kbuild: prefer ${NM} in check-function-names.sh
Posted by Carlos Llamas 1 month, 2 weeks ago
The check-function-names.sh scripts invokes 'nm' directly and this can
be problematic during cross-compilation when the toolchain is different
from the system's default (e.g. LLVM=1).

  scripts/check-function-names.sh: nm: not found

Let's prefer the ${NM} variable which is already set by kbuild. However,
still fallback to plain 'nm' to ensure the script is still usable when
called directly.

Fixes: 93863f3f859a ("kbuild: Check for functions with ambiguous -ffunction-sections section names")
Signed-off-by: Carlos Llamas <cmllamas@google.com>
---
 scripts/check-function-names.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/check-function-names.sh b/scripts/check-function-names.sh
index 410042591cfc..08071133e5a5 100755
--- a/scripts/check-function-names.sh
+++ b/scripts/check-function-names.sh
@@ -13,7 +13,7 @@ if [ ! -f "$objfile" ]; then
 	exit 1
 fi
 
-bad_symbols=$(nm "$objfile" | awk '$2 ~ /^[TtWw]$/ {print $3}' | grep -E '^(startup|exit|split|unlikely|hot|unknown)(\.|$)')
+bad_symbols=$(${NM:-nm} "$objfile" | awk '$2 ~ /^[TtWw]$/ {print $3}' | grep -E '^(startup|exit|split|unlikely|hot|unknown)(\.|$)')
 
 if [ -n "$bad_symbols" ]; then
 	echo "$bad_symbols" | while read -r sym; do
-- 
2.52.0.351.gbe84eed79e-goog
Re: [PATCH] kbuild: prefer ${NM} in check-function-names.sh
Posted by Nicolas Schier 3 weeks, 2 days ago
On Thu, 18 Dec 2025 17:58:06 +0000, Carlos Llamas wrote:
> The check-function-names.sh scripts invokes 'nm' directly and this can
> be problematic during cross-compilation when the toolchain is different
> from the system's default (e.g. LLVM=1).
> 
>   scripts/check-function-names.sh: nm: not found
> 
> Let's prefer the ${NM} variable which is already set by kbuild. However,
> still fallback to plain 'nm' to ensure the script is still usable when
> called directly.
> 
> [...]

Applied, thanks!

[1/1] kbuild: prefer ${NM} in check-function-names.sh
      https://git.kernel.org/kbuild/c/946d4623

Best regards,
-- 
Nicolas
Re: [PATCH] kbuild: prefer ${NM} in check-function-names.sh
Posted by Nathan Chancellor 1 month, 2 weeks ago
On Thu, Dec 18, 2025 at 05:58:06PM +0000, Carlos Llamas wrote:
> The check-function-names.sh scripts invokes 'nm' directly and this can
> be problematic during cross-compilation when the toolchain is different
> from the system's default (e.g. LLVM=1).
> 
>   scripts/check-function-names.sh: nm: not found
> 
> Let's prefer the ${NM} variable which is already set by kbuild. However,
> still fallback to plain 'nm' to ensure the script is still usable when
> called directly.
> 
> Fixes: 93863f3f859a ("kbuild: Check for functions with ambiguous -ffunction-sections section names")

I may have caught this during review if linux-kbuild or its maintainers
were CC'd on that change.

> Signed-off-by: Carlos Llamas <cmllamas@google.com>

Reviewed-by: Nathan Chancellor <nathan@kernel.org>

If Josh or Peter want to take this through a fixes branch in -tip, that
is fine with me. Otherwise, Nicolas can apply this to kbuild-fixes since
this change was merged in 6.19-rc1.

> ---
>  scripts/check-function-names.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/scripts/check-function-names.sh b/scripts/check-function-names.sh
> index 410042591cfc..08071133e5a5 100755
> --- a/scripts/check-function-names.sh
> +++ b/scripts/check-function-names.sh
> @@ -13,7 +13,7 @@ if [ ! -f "$objfile" ]; then
>  	exit 1
>  fi
>  
> -bad_symbols=$(nm "$objfile" | awk '$2 ~ /^[TtWw]$/ {print $3}' | grep -E '^(startup|exit|split|unlikely|hot|unknown)(\.|$)')
> +bad_symbols=$(${NM:-nm} "$objfile" | awk '$2 ~ /^[TtWw]$/ {print $3}' | grep -E '^(startup|exit|split|unlikely|hot|unknown)(\.|$)')
>  
>  if [ -n "$bad_symbols" ]; then
>  	echo "$bad_symbols" | while read -r sym; do
> -- 
> 2.52.0.351.gbe84eed79e-goog
>