blob: 662e9554ea7576ecd490d39ce5a55997c623143e [file] [log] [blame]
shijie.xiong9d11e312022-01-06 17:31:03 +08001NM:=$(TOOLCHAIN_KEYWORD)-nm
shijie.xiong67c8de42024-07-11 14:47:42 +08002PATH:=$(TOOLCHAIN_PATH)/bin:$(PATH)
shijie.xiong9d11e312022-01-06 17:31:03 +08003
4quiet=silent_
5cmd = $(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))' &&) $(cmd_$(1))
6
7SYSTEM_MAP = $(NM) $(1) | \
8 grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
9 LC_ALL=C sort | sed 's/0000000000//'
10
11cmd_smap ?= \
shijie.xiong67c8de42024-07-11 14:47:42 +080012 smap_addr=`$(call SYSTEM_MAP,${kernel_BUILD_DIR}/freertos.elf) | \
shijie.xiong9d11e312022-01-06 17:31:03 +080013 awk '$$2 ~ /[tTwW]/ {printf $$1 " "}'` ; \
shijie.xiong67c8de42024-07-11 14:47:42 +080014 smap_sym=`$(call SYSTEM_MAP,${kernel_BUILD_DIR}/freertos.elf) | \
shijie.xiong9d11e312022-01-06 17:31:03 +080015 awk '$$2 ~ /[tTwW]/ {printf $$3 " "}'` ; \
shijie.xiong67c8de42024-07-11 14:47:42 +080016 echo "char const system_map_addr[] = {" > $(SDK_BASE)/lib/backtrace/system_map_addr.c;\
17 echo "\"$${smap_addr}\"\"\\\\000\"};" >> $(SDK_BASE)/lib/backtrace/system_map_addr.c;\
18 echo "char const system_map_sym[] = {" > $(SDK_BASE)/lib/backtrace/system_map_sym.c;\
19 echo "\"$${smap_sym}\"\"\\\\000\"};" >> $(SDK_BASE)/lib/backtrace/system_map_sym.c;
shijie.xiong9d11e312022-01-06 17:31:03 +080020
21.PHONY: backtrace
22backtrace:
Xiaohu.Huang3ebdbc92022-01-12 14:55:59 +080023 @$(call cmd,smap)
24
25.PHONY: clean
26clean:
shijie.xiong67c8de42024-07-11 14:47:42 +080027 @truncate -s 0 $(SDK_BASE)/lib/backtrace/system_map_addr.c
28 @truncate -s 0 $(SDK_BASE)/lib/backtrace/system_map_sym.c
29 @echo "char const system_map_addr[] = {0};" > $(SDK_BASE)/lib/backtrace/system_map_addr.c
30 @echo "char const system_map_sym[] = {0};" > $(SDK_BASE)/lib/backtrace/system_map_sym.c