From c7c20817dc767d1adf7e9ce713f3faad1e65f20c Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 3 Apr 2019 11:55:57 +0100 Subject: [PATCH] Measure stack usage in baremetal script So far, `baremetal.sh --ram --stack` ran `callgrind` to extract a call stack in an example run of ssl_client2 and ssl_server2. This, however, needs to be complemented with per-function stack usage to be able to extract the maximum stack usage. This commit adds `-fstack-usage` to the CFLAGS used when building the library in `baremetal.sh --ram` runs, which generates *.su files indicating the stack usage of individual functions. --- scripts/baremetal.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/scripts/baremetal.sh b/scripts/baremetal.sh index 346937bd2..a2c59f556 100755 --- a/scripts/baremetal.sh +++ b/scripts/baremetal.sh @@ -155,7 +155,7 @@ baremetal_build_armc6() # 32-bit host-build of library, tests and example programs, # + heap usage measurements. baremetal_ram_build() { - : ${BASE_CFLAGS:="-g -m32"} + : ${BASE_CFLAGS:="-g -m32 -fstack-usage"} echo "Create 32-bit host-build (Config: $BAREMETAL_CONFIG + $BAREMETAL_USER_CONFIG)" echo "Cleanup..." @@ -241,13 +241,14 @@ baremetal_ram_stack() { : ${VALGRIND:=valgrind} : ${VALGRIND_CALLGRIND_PARAMS:="--separate-callers=100"} + RAM_CALLGRIND_OUT="ram_callgrind__${date}__$NAME" RAM_STACK_OUT="ram_stack__${date}__$NAME" SRV_CMD="$SRV server_addr=127.0.0.1 server_port=4433 debug_level=4 $SRV_PARAMS" CLI_CMD="$CLI server_addr=127.0.0.1 server_port=4433 $CLI_PARAMS" VALGRIND_BASE="$VALGRIND --tool=callgrind $VALGRIND_CALLGRIND_PARAMS" - VALGRIND_CMD="$VALGRIND_BASE --callgrind-out-file=${RAM_STACK_OUT} $CLI_CMD" + VALGRIND_CMD="$VALGRIND_BASE --callgrind-out-file=${RAM_CALLGRIND_OUT} $CLI_CMD" $SRV_CMD > /dev/null 2>&1 & SRV_PID=$! @@ -262,7 +263,12 @@ baremetal_ram_stack() { kill $SRV_PID echo "Done" - echo "SUCCESS - Stack usage statistics written to: $RAM_STACK_OUT\n" + # Merge stack usage files + cat library/*.su > ${RAM_STACK_OUT}_unsorted + sort -r -k2 -n ${RAM_STACK_OUT}_unsorted > $RAM_STACK_OUT + rm ${RAM_STACK_OUT}_unsorted + + echo "SUCCESS - Statistics written to $RAM_STACK_OUT and $RAM_CALLGRIND_OUT\n" } show_usage() {