Commit a827a8ad authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

support static analysis of stack usage

parent d0157ffa
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -14,6 +14,10 @@ ifneq (${verbose}, )
	QUIET =
endif

ifneq (${stack_usage}, )
	COMMON_FLAGS += -fstack-usage
endif

include src/app/${app}/Makefile.inc

ifneq ($(findstring lm75,${drivers}), )
@@ -123,6 +127,11 @@ endif

include src/arch/${arch}/Makefile.inc

stack: default
	@test -n "${OBJDUMP}"
	@test -n "${ARCH_CALL_COST}"
	@./avstack.pl ${OBJDUMP} ${ARCH_CALL_COST} ${OBJECTS}

clean: arch_clean
	rm -f build/system.elf

@@ -144,4 +153,4 @@ help: arch_help
info: arch_info
	@echo "Selected Drivers: ${drivers} / ${arch_drivers}"

.PHONY: clean help info
.PHONY: clean default stack help info
+7 −1
Original line number Diff line number Diff line
@@ -9,15 +9,21 @@ cpu_freq ?= 16000000
COMMON_FLAGS += -Werror=overflow
COMMON_FLAGS += -mmcu=${MCU} -DMULTIPASS_ARCH_arduino_nano
COMMON_FLAGS += -DF_CPU=${cpu_freq}UL
COMMON_FLAGS += -flto
COMMON_FLAGS += -DMULTIPASS_ARCH_HAS_I2C

ifeq (${stack_usage}, )
	COMMON_FLAGS += -flto
endif

CC = avr-gcc
CXX = avr-g++
NM = avr-nm
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump

# On each function call, the 2-Byte return address is pushed onto the stack
ARCH_CALL_COST = 2

ifeq (${aspectc}, 1)
	CXX = ag++ -r build/repo.acp -v 0 --c_compiler avr-g++ -p . --Xcompiler
endif
+7 −1
Original line number Diff line number Diff line
@@ -9,15 +9,21 @@ cpu_freq ?= 16000000
COMMON_FLAGS += -Werror=overflow
COMMON_FLAGS += -mmcu=${MCU} -DMULTIPASS_ARCH_arduino_nano
COMMON_FLAGS += -DF_CPU=${cpu_freq}UL
COMMON_FLAGS += -flto
COMMON_FLAGS += -DMULTIPASS_ARCH_HAS_I2C

ifeq (${stack_usage}, )
	COMMON_FLAGS += -flto
endif

CC = avr-gcc
CXX = avr-g++
NM = avr-nm
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump

# On each function call, the 2-Byte return address is pushed onto the stack
ARCH_CALL_COST = 2

ifeq (${aspectc}, 1)
	CXX = ag++ -r build/repo.acp -v 0 --c_compiler avr-g++ -p . --Xcompiler
endif
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ CXX = avr-g++
NM = avr-nm
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
ARCH_CALL_COST = 4

ifeq (${aspectc}, 1)
	CXX = ag++ -r build/repo.acp -v 0 --c_compiler avr-g++ -p . --Xcompiler
+1 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ CXX = ${TOOLCHAIN_BASE}/xtensa-lx106-elf-g++
AR = ${TOOLCHAIN_BASE}/xtensa-lx106-elf-ar
LD = ${TOOLCHAIN_BASE}/xtensa-lx106-elf-gcc
OBJCOPY = ${TOOLCHAIN_BASE}/xtensa-lx106-elf-objcopy
OBJDUMP = ${TOOLCHAIN_BASE}/xtensa-lx106-elf-objdump

ifeq (${aspectc}, 1)
	CXX = ag++ -r build/repo.acp -v 0 --c_compiler ${TOOLCHAIN_BASE}/xtensa-lx106-elf-g++ -p . --Xcompiler
Loading