Added scripts/stack.py for viewing stack usage

Note this detects loops (recursion), and renders this as infinity.
Currently littlefs does have a single recursive function and you can see
how this infects the full call graph. Eventually this should be removed.
This commit is contained in:
Christopher Haster
2022-02-20 10:51:01 -06:00
parent 20c58dcbaa
commit f4c7af76f8
6 changed files with 370 additions and 12 deletions

View File

@@ -43,20 +43,22 @@ override CFLAGS += -std=c99 -Wall -pedantic
override CFLAGS += -Wextra -Wshadow -Wjump-misses-init -Wundef
ifdef VERBOSE
override TESTFLAGS += -v
override CALLSFLAGS += -v
override CODEFLAGS += -v
override DATAFLAGS += -v
override TESTFLAGS += -v
override CALLSFLAGS += -v
override CODEFLAGS += -v
override DATAFLAGS += -v
override STACKFLAGS += -v
override COVERAGEFLAGS += -v
endif
ifdef EXEC
override TESTFLAGS += --exec="$(EXEC)"
endif
ifdef BUILDDIR
override TESTFLAGS += --build-dir="$(BUILDDIR:/=)"
override CALLSFLAGS += --build-dir="$(BUILDDIR:/=)"
override CODEFLAGS += --build-dir="$(BUILDDIR:/=)"
override DATAFLAGS += --build-dir="$(BUILDDIR:/=)"
override TESTFLAGS += --build-dir="$(BUILDDIR:/=)"
override CALLSFLAGS += --build-dir="$(BUILDDIR:/=)"
override CODEFLAGS += --build-dir="$(BUILDDIR:/=)"
override DATAFLAGS += --build-dir="$(BUILDDIR:/=)"
override STACKFLAGS += --build-dir="$(BUILDDIR:/=)"
override COVERAGEFLAGS += --build-dir="$(BUILDDIR:/=)"
endif
ifneq ($(NM),nm)
@@ -65,6 +67,7 @@ override DATAFLAGS += --nm-tool="$(NM)"
endif
override CODEFLAGS += -S
override DATAFLAGS += -S
override STACKFLAGS += -S
override COVERAGEFLAGS += -s
@@ -95,6 +98,10 @@ data: $(OBJ)
calls: $(CGI)
./scripts/calls.py $^ $(CALLSFLAGS)
.PHONY: stack
stack: $(CGI)
./scripts/stack.py $^ $(STACKFLAGS)
.PHONY: test
test:
./scripts/test.py $(TESTFLAGS)