SoC common : Build : Adjust the nm toolchain search rules. [1/1]

PD#SWPL-183669

Problem:
The existing search rules do not accommodate all architectures.

Solution:
fixed

Verify:
local

Change-Id: Ic5ca8f3a4e670e9573074c1ca91a32cc99fe14c7
Signed-off-by: shijie.xiong <shijie.xiong@amlogic.com>
diff --git a/cmake/toolchains/arm64_compiler.cmake b/cmake/toolchains/arm64_compiler.cmake
index 2ade52a..83237e9 100755
--- a/cmake/toolchains/arm64_compiler.cmake
+++ b/cmake/toolchains/arm64_compiler.cmake
@@ -46,6 +46,7 @@
 	aml_find_compiler(COMPILER_CC aarch64-none-elf-gcc)
 	aml_find_compiler(COMPILER_CXX aarch64-none-elf-g++)
 	set(COMPILER_ASM "${COMPILER_CC}" CACHE FILEPATH "" FORCE)
+	aml_find_compiler(COMPILER_NM aarch64-none-elf-nm)
 	aml_find_compiler(COMPILER_OBJCOPY aarch64-none-elf-objcopy)
 	aml_find_compiler(COMPILER_OBJDUMP aarch64-none-elf-objdump)
 
@@ -54,6 +55,7 @@
 	set(CMAKE_CXX_COMPILER ${COMPILER_CXX} CACHE FILEPATH "C++ compiler" FORCE)
 	set(CMAKE_ASM_COMPILER ${COMPILER_ASM} CACHE FILEPATH "ASM compiler" FORCE)
 	#set(CMAKE_C_LINK_EXECUTABLE ${COMPILER_LD} CACHE FILEPATH "LD linker" FORCE)
+	set(CMAKE_NM_COMPILER ${COMPILER_NM} CACHE FILEPATH "nm compiler" FORCE)
 	set(CMAKE_OBJCOPY_COMPILER ${COMPILER_OBJCOPY} CACHE FILEPATH "objcopy compiler" FORCE)
 	set(CMAKE_OBJDUMP_COMPILER ${COMPILER_OBJDUMP} CACHE FILEPATH "objdump compiler" FORCE)
 	# Disable compiler checks.
diff --git a/cmake/toolchains/arm_compiler.cmake b/cmake/toolchains/arm_compiler.cmake
index 72deb19..392e514 100755
--- a/cmake/toolchains/arm_compiler.cmake
+++ b/cmake/toolchains/arm_compiler.cmake
@@ -10,6 +10,7 @@
 aml_find_compiler(COMPILER_CC arm-none-eabi-gcc)
 aml_find_compiler(COMPILER_CXX arm-none-eabi-g++)
 set(COMPILER_ASM "${COMPILER_CC}" CACHE INTERNAL "")
+aml_find_compiler(COMPILER_NM arm-none-eabi-nm)
 aml_find_compiler(COMPILER_OBJCOPY arm-none-eabi-objcopy)
 aml_find_compiler(COMPILER_OBJDUMP arm-none-eabi-objdump)
 
@@ -18,6 +19,7 @@
 set(CMAKE_CXX_COMPILER ${COMPILER_CXX} CACHE FILEPATH "C++ compiler")
 set(CMAKE_ASM_COMPILER ${COMPILER_ASM} CACHE FILEPATH "ASM compiler")
 #set(CMAKE_C_LINK_EXECUTABLE ${COMPILER_LD} CACHE FILEPATH "LD linker")
+set(CMAKE_NM_COMPILER ${COMPILER_NM} CACHE FILEPATH "nm compiler")
 set(CMAKE_OBJCOPY_COMPILER ${COMPILER_OBJCOPY} CACHE FILEPATH "objcopy compiler")
 set(CMAKE_OBJDUMP_COMPILER ${COMPILER_OBJDUMP} CACHE FILEPATH "objdump compiler")
 # Disable compiler checks.
diff --git a/cmake/toolchains/riscv_compiler.cmake b/cmake/toolchains/riscv_compiler.cmake
index e4f4b94..e2fdfdf 100755
--- a/cmake/toolchains/riscv_compiler.cmake
+++ b/cmake/toolchains/riscv_compiler.cmake
@@ -28,6 +28,7 @@
 aml_find_compiler(COMPILER_CC riscv-none-embed-gcc)
 aml_find_compiler(COMPILER_CXX riscv-none-embed-g++)
 set(COMPILER_ASM "${COMPILER_CC}" CACHE INTERNAL "")
+aml_find_compiler(COMPILER_NM riscv-none-embed-nm)
 aml_find_compiler(COMPILER_OBJCOPY riscv-none-embed-objcopy)
 aml_find_compiler(COMPILER_OBJDUMP riscv-none-embed-objdump)
 
@@ -36,6 +37,7 @@
 set(CMAKE_CXX_COMPILER ${COMPILER_CXX} CACHE FILEPATH "C++ compiler")
 set(CMAKE_ASM_COMPILER ${COMPILER_ASM} CACHE FILEPATH "ASM compiler")
 #set(CMAKE_C_LINK_EXECUTABLE ${COMPILER_LD} CACHE FILEPATH "LD linker")
+set(CMAKE_NM_COMPILER ${COMPILER_NM} CACHE FILEPATH "nm compiler")
 set(CMAKE_OBJCOPY_COMPILER ${COMPILER_OBJCOPY} CACHE FILEPATH "objcopy compiler")
 set(CMAKE_OBJDUMP_COMPILER ${COMPILER_OBJDUMP} CACHE FILEPATH "objdump compiler")
 # Disable compiler checks.
diff --git a/cmake/toolchains/xtensa_compiler.cmake b/cmake/toolchains/xtensa_compiler.cmake
index 6b5ff4c..b1c1378 100755
--- a/cmake/toolchains/xtensa_compiler.cmake
+++ b/cmake/toolchains/xtensa_compiler.cmake
@@ -16,6 +16,7 @@
 aml_find_compiler(COMPILER_CLANG_CXX xt-clang++)
 aml_find_compiler(COMPILER_CLANG_ASM xt-clang)
 
+aml_find_compiler(COMPILER_NM xt-nm)
 aml_find_compiler(COMPILER_OBJCOPY xt-objcopy)
 aml_find_compiler(COMPILER_OBJDUMP xt-objdump)
 aml_find_compiler(COMPILER_LD_GEN xt-genldscripts)
@@ -24,6 +25,7 @@
 set(CMAKE_C_COMPILER ${COMPILER_GCC_CC} CACHE FILEPATH "C compiler")
 set(CMAKE_CXX_COMPILER ${COMPILER_GCC_CXX} CACHE FILEPATH "C++ compiler")
 set(CMAKE_ASM_COMPILER ${COMPILER_GCC_ASM} CACHE FILEPATH "ASM compiler")
+set(CMAKE_NM_COMPILER ${COMPILER_NM} CACHE FILEPATH "nm compiler")
 set(CMAKE_OBJCOPY_COMPILER ${COMPILER_OBJCOPY} CACHE FILEPATH "objcopy compiler")
 set(CMAKE_OBJDUMP_COMPILER ${COMPILER_OBJDUMP} CACHE FILEPATH "objdump compiler")
 set(CMAKE_LDGEN_COMPILER ${COMPILER_LD_GEN} CACHE FILEPATH "genldscripts compiler")
diff --git a/symtable.mk b/symtable.mk
index 662e955..863a69c 100644
--- a/symtable.mk
+++ b/symtable.mk
@@ -1,10 +1,15 @@
-NM:=$(TOOLCHAIN_KEYWORD)-nm
-PATH:=$(TOOLCHAIN_PATH)/bin:$(PATH)
+# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
 
-quiet=silent_
+# SPDX-License-Identifier: MIT
+
+CAMKE_CACHE_FILE = $(kernel_BUILD_DIR)/CMakeCache.txt
+PATH_NM = $(shell awk -F':FILEPATH=' '/CMAKE_NM_COMPILER/ {print $$2}' $(1))
+
+quiet = silent_
+nm := $(call PATH_NM,$(CAMKE_CACHE_FILE))
 cmd = $(if $($(quiet)cmd_$(1)),echo '  $($(quiet)cmd_$(1))' &&) $(cmd_$(1))
 
-SYSTEM_MAP = $(NM) $(1) | \
+SYSTEM_MAP = $(nm) $(1) | \
 		grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
 		LC_ALL=C sort | sed 's/0000000000//'
 
@@ -20,6 +25,7 @@
 
 .PHONY: backtrace
 backtrace:
+	@echo "Extracted backtrace toolchain: $(nm)"
 	@$(call cmd,smap)
 
 .PHONY: clean