blob: 863a69c929ae77ac7eba5a3d0e0d93e0119093e3 [file] [log] [blame]
shijie.xiong2e72fb92024-08-29 18:14:43 +08001# Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
shijie.xiong9d11e312022-01-06 17:31:03 +08002
shijie.xiong2e72fb92024-08-29 18:14:43 +08003# SPDX-License-Identifier: MIT
4
5CAMKE_CACHE_FILE = $(kernel_BUILD_DIR)/CMakeCache.txt
6PATH_NM = $(shell awk -F':FILEPATH=' '/CMAKE_NM_COMPILER/ {print $$2}' $(1))
7
8quiet = silent_
9nm := $(call PATH_NM,$(CAMKE_CACHE_FILE))
shijie.xiong9d11e312022-01-06 17:31:03 +080010cmd = $(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))' &&) $(cmd_$(1))
11
shijie.xiong2e72fb92024-08-29 18:14:43 +080012SYSTEM_MAP = $(nm) $(1) | \
shijie.xiong9d11e312022-01-06 17:31:03 +080013 grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
14 LC_ALL=C sort | sed 's/0000000000//'
15
16cmd_smap ?= \
shijie.xiong67c8de42024-07-11 14:47:42 +080017 smap_addr=`$(call SYSTEM_MAP,${kernel_BUILD_DIR}/freertos.elf) | \
shijie.xiong9d11e312022-01-06 17:31:03 +080018 awk '$$2 ~ /[tTwW]/ {printf $$1 " "}'` ; \
shijie.xiong67c8de42024-07-11 14:47:42 +080019 smap_sym=`$(call SYSTEM_MAP,${kernel_BUILD_DIR}/freertos.elf) | \
shijie.xiong9d11e312022-01-06 17:31:03 +080020 awk '$$2 ~ /[tTwW]/ {printf $$3 " "}'` ; \
shijie.xiong67c8de42024-07-11 14:47:42 +080021 echo "char const system_map_addr[] = {" > $(SDK_BASE)/lib/backtrace/system_map_addr.c;\
22 echo "\"$${smap_addr}\"\"\\\\000\"};" >> $(SDK_BASE)/lib/backtrace/system_map_addr.c;\
23 echo "char const system_map_sym[] = {" > $(SDK_BASE)/lib/backtrace/system_map_sym.c;\
24 echo "\"$${smap_sym}\"\"\\\\000\"};" >> $(SDK_BASE)/lib/backtrace/system_map_sym.c;
shijie.xiong9d11e312022-01-06 17:31:03 +080025
26.PHONY: backtrace
27backtrace:
shijie.xiong2e72fb92024-08-29 18:14:43 +080028 @echo "Extracted backtrace toolchain: $(nm)"
Xiaohu.Huang3ebdbc92022-01-12 14:55:59 +080029 @$(call cmd,smap)
30
31.PHONY: clean
32clean:
shijie.xiong67c8de42024-07-11 14:47:42 +080033 @truncate -s 0 $(SDK_BASE)/lib/backtrace/system_map_addr.c
34 @truncate -s 0 $(SDK_BASE)/lib/backtrace/system_map_sym.c
35 @echo "char const system_map_addr[] = {0};" > $(SDK_BASE)/lib/backtrace/system_map_addr.c
36 @echo "char const system_map_sym[] = {0};" > $(SDK_BASE)/lib/backtrace/system_map_sym.c