diff options
Diffstat (limited to 'scripts/stackusage')
| -rwxr-xr-x | scripts/stackusage | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/scripts/stackusage b/scripts/stackusage new file mode 100755 index 000000000000..8cf26640ef8a --- /dev/null +++ b/scripts/stackusage | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | outfile="" | ||
| 4 | now=`date +%s` | ||
| 5 | |||
| 6 | while [ $# -gt 0 ] | ||
| 7 | do | ||
| 8 | case "$1" in | ||
| 9 | -o) | ||
| 10 | outfile="$2" | ||
| 11 | shift 2;; | ||
| 12 | -h) | ||
| 13 | echo "usage: $0 [-o outfile] <make options/args>" | ||
| 14 | exit 0;; | ||
| 15 | *) break;; | ||
| 16 | esac | ||
| 17 | done | ||
| 18 | |||
| 19 | if [ -z "$outfile" ] | ||
| 20 | then | ||
| 21 | outfile=`mktemp --tmpdir stackusage.$$.XXXX` | ||
| 22 | fi | ||
| 23 | |||
| 24 | KCFLAGS="${KCFLAGS} -fstack-usage" make "$@" | ||
| 25 | |||
| 26 | # Prepend directory name to file names, remove column information, | ||
| 27 | # make file:line/function/size/type properly tab-separated. | ||
| 28 | find . -name '*.su' -newermt "@${now}" -print | \ | ||
| 29 | xargs perl -MFile::Basename -pe \ | ||
| 30 | '$d = dirname($ARGV); s#([^:]+:[0-9]+):[0-9]+:#$d/$1\t#;' | \ | ||
| 31 | sort -k3,3nr > "${outfile}" | ||
| 32 | |||
| 33 | echo "$0: output written to ${outfile}" | ||
