~aleteoryx/muditaos

ea7264d43477a1dfc810b73c95349a0e41cd8d98 — Marcin Smoczyński 5 years ago 2d2e432
[EGD-5941] Add tool to analyze stack usage

Add a script to determine a stack usage of code components.
The GENERATE_STACK_USAGE option must be used in the build configuration.

Signed-off-by: Marcin Smoczyński <smoczynski.marcin@gmail.com>
2 files changed, 27 insertions(+), 0 deletions(-)

M CMakeLists.txt
A tools/stack-usage.sh
M CMakeLists.txt => CMakeLists.txt +5 -0
@@ 103,6 103,11 @@ add_compile_options( ${TARGET_COMPILE_OPTIONS}
                     # warning flags
                     -Wall -Wextra -Werror -Wno-unused-parameter -Wno-deprecated-declarations)

option (GENERATE_STACK_USAGE "Generate stack usage report" OFF)
if (GENERATE_STACK_USAGE)
    add_compile_options (-fstack-usage)
endif ()

target_compile_features(${PROJECT_NAME} PUBLIC
        ${TARGET_COMPILE_FEATURES})


A tools/stack-usage.sh => tools/stack-usage.sh +22 -0
@@ 0,0 1,22 @@
#!/usr/bin/bash

# make sure, that GENERATE_STACK_USAGE option has been enabled in cmake configuration

builddir=$1
minsize=$2
pattern=$3

if [ -z "$builddir" ]; then
    echo "usage $0 builddir [minsize] [file name pattern]"
    exit 1
fi

if [ -z $minsize ]; then
    minsize=0
fi

if [ -n "$pattern" ]; then
    FILTER="| egrep $pattern"
fi

eval find $builddir -name "*.su" $FILTER | xargs awk '{if ( $(NF-1) > '$minsize') print $(NF-1)" "$0}' | sort -n