This Trac instance is not used for development anymore!

We migrated our development workflow to git and Gitea.
To test the future redirection, replace trac by ariadne in the page URL.

source: ps/trunk/build/premake/premake5/contrib/mbedtls/scripts/memory.sh

Last change on this file was 20366, checked in by Itms, 7 years ago

Alpha 12 version of Premake 5, including prebuilt binary for Windows.
Directly taken from https://premake.github.io/.

Refs #3729.

File size: 2.6 KB
Line 
1#!/bin/sh
2
3# Measure memory usage of a minimal client using a small configuration
4# Currently hardwired to ccm-psk and suite-b, may be expanded later
5#
6# Use different build options for measuring executable size and memory usage,
7# since for memory we want debug information.
8
9set -eu
10
11CONFIG_H='include/mbedtls/config.h'
12
13CLIENT='mini_client'
14
15CFLAGS_EXEC='-fno-asynchronous-unwind-tables -Wl,--gc-section -ffunction-sections -fdata-sections'
16CFLAGS_MEM=-g3
17
18if [ -r $CONFIG_H ]; then :; else
19 echo "$CONFIG_H not found" >&2
20 exit 1
21fi
22
23if grep -i cmake Makefile >/dev/null; then
24 echo "Not compatible with CMake" >&2
25 exit 1
26fi
27
28if [ $( uname ) != Linux ]; then
29 echo "Only work on Linux" >&2
30 exit 1
31fi
32
33if git status | grep -F $CONFIG_H >/dev/null 2>&1; then
34 echo "config.h not clean" >&2
35 exit 1
36fi
37
38# make measurements with one configuration
39# usage: do_config <name> <unset-list> <server-args>
40do_config()
41{
42 NAME=$1
43 UNSET_LIST=$2
44 SERVER_ARGS=$3
45
46 echo ""
47 echo "config-$NAME:"
48 cp configs/config-$NAME.h $CONFIG_H
49 scripts/config.pl unset MBEDTLS_SSL_SRV_C
50
51 for FLAG in $UNSET_LIST; do
52 scripts/config.pl unset $FLAG
53 done
54
55 grep -F SSL_MAX_CONTENT_LEN $CONFIG_H || echo 'SSL_MAX_CONTENT_LEN=16384'
56
57 printf " Executable size... "
58
59 make clean
60 CFLAGS=$CFLAGS_EXEC make OFLAGS=-Os lib >/dev/null 2>&1
61 cd programs
62 CFLAGS=$CFLAGS_EXEC make OFLAGS=-Os ssl/$CLIENT >/dev/null
63 strip ssl/$CLIENT
64 stat -c '%s' ssl/$CLIENT
65 cd ..
66
67 printf " Peak ram usage... "
68
69 make clean
70 CFLAGS=$CFLAGS_MEM make OFLAGS=-Os lib >/dev/null 2>&1
71 cd programs
72 CFLAGS=$CFLAGS_MEM make OFLAGS=-Os ssl/$CLIENT >/dev/null
73 cd ..
74
75 ./ssl_server2 $SERVER_ARGS >/dev/null &
76 SRV_PID=$!
77 sleep 1;
78
79 if valgrind --tool=massif --stacks=yes programs/ssl/$CLIENT >/dev/null 2>&1
80 then
81 FAILED=0
82 else
83 echo "client failed" >&2
84 FAILED=1
85 fi
86
87 kill $SRV_PID
88 wait $SRV_PID
89
90 scripts/massif_max.pl massif.out.*
91 mv massif.out.* massif-$NAME.$$
92}
93
94# preparation
95
96CONFIG_BAK=${CONFIG_H}.bak
97cp $CONFIG_H $CONFIG_BAK
98
99rm -f massif.out.*
100
101printf "building server... "
102
103make clean
104make lib >/dev/null 2>&1
105(cd programs && make ssl/ssl_server2) >/dev/null
106cp programs/ssl/ssl_server2 .
107
108echo "done"
109
110# actual measurements
111
112do_config "ccm-psk-tls1_2" \
113 "" \
114 "psk=000102030405060708090A0B0C0D0E0F"
115
116do_config "suite-b" \
117 "MBEDTLS_BASE64_C MBEDTLS_PEM_PARSE_C MBEDTLS_CERTS_C" \
118 ""
119
120# cleanup
121
122mv $CONFIG_BAK $CONFIG_H
123make clean
124rm ssl_server2
125
126exit $FAILED
Note: See TracBrowser for help on using the repository browser.