Refactor memory.sh
diff --git a/scripts/memory.sh b/scripts/memory.sh
index fb178eb..4900fe1 100755
--- a/scripts/memory.sh
+++ b/scripts/memory.sh
@@ -9,8 +9,12 @@
set -eu
CONFIG_H='include/polarssl/config.h'
+
CLIENT='mini_client'
+CFLAGS_EXEC=-fno-asynchronous-unwind-tables
+CFLAGS_MEM=-g3
+
if [ -r $CONFIG_H ]; then :; else
echo "$CONFIG_H not found" >&2
exit 1
@@ -26,6 +30,59 @@
exit 1
fi
+# make measurements with one configuration
+# usage: do_config <name> <unset-list> <server-args>
+do_config()
+{
+ NAME=$1
+ UNSET_LIST=$2
+ SERVER_ARGS=$3
+
+ echo ""
+ echo "config-$NAME:"
+ cp configs/config-$NAME.h $CONFIG_H
+
+ for FLAG in $UNSET_LIST; do
+ scripts/config.pl unset $FLAG
+ done
+
+ printf " Executable size... "
+
+ make clean
+ CFLAGS=$CFLAGS_EXEC make OFLAGS=-Os lib >/dev/null 2>&1
+ cd programs
+ CFLAGS=$CFLAGS_EXEC make OFLAGS=-Os ssl/$CLIENT >/dev/null
+ strip ssl/$CLIENT
+ stat -f '%z' ssl/$CLIENT
+ cd ..
+
+ printf " Peak ram usage... "
+
+ make clean
+ CFLAGS=$CFLAGS_MEM make OFLAGS=-Os lib >/dev/null 2>&1
+ cd programs
+ CFLAGS=$CFLAGS_MEM make OFLAGS=-Os ssl/$CLIENT >/dev/null
+ cd ..
+
+ ./ssl_server2 $SERVER_ARGS >/dev/null &
+ SRV_PID=$!
+ sleep 1;
+
+ if valgrind --tool=massif --stacks=yes programs/ssl/$CLIENT >/dev/null 2>&1
+ then
+ FAILED=0
+ else
+ echo "client failed" >&2
+ FAILED=1
+ fi
+
+ kill $SRV_PID
+ wait $SRV_PID
+
+ scripts/massif_max.pl massif.out.*
+ mv massif.out.* massif-$NAME.$$
+}
+
# preparation
CONFIG_BAK=${CONFIG_H}.bak
@@ -42,94 +99,15 @@
echo "done"
-# first config
+# actual measurements
-echo ""
-echo "config-ccm-psk-tls1_2:"
-cp configs/config-ccm-psk-tls1_2.h $CONFIG_H
+do_config "ccm-psk-tls1_2" \
+ "" \
+ "psk=000102030405060708090A0B0C0D0E0F"
-printf " Executable size... "
-
-make clean
-CFLAGS=-fno-asynchronous-unwind-tables make OFLAGS=-Os lib >/dev/null 2>&1
-cd programs
-CFLAGS=-fno-asynchronous-unwind-tables make OFLAGS=-Os ssl/$CLIENT >/dev/null
-strip ssl/$CLIENT
-stat -c'%s' ssl/$CLIENT
-cd ..
-
-printf " Peak ram usage... "
-
-make clean
-CFLAGS=-g3 make OFLAGS=-Os lib >/dev/null 2>&1
-cd programs
-CFLAGS=-g3 make OFLAGS=-Os ssl/$CLIENT >/dev/null
-cd ..
-
-./ssl_server2 psk=000102030405060708090A0B0C0D0E0F >/dev/null &
-SRV_PID=$!
-sleep 1;
-
-if valgrind --tool=massif --stacks=yes programs/ssl/$CLIENT >/dev/null 2>&1
-then
- FAILED=0
-else
- echo "client failed" >&2
- FAILED=1
-fi
-
-kill $SRV_PID
-wait $SRV_PID
-
-scripts/massif_max.pl massif.out.*
-mv massif.out.* massif-ccm-psk.$$
-
-# second config
-
-echo ""
-echo "config-suite-b:"
-cp configs/config-suite-b.h $CONFIG_H
-scripts/config.pl unset POLARSSL_BASE64_C
-scripts/config.pl unset POLARSSL_PEM_PARSE_C
-scripts/config.pl unset POLARSSL_CERTS_C
-
-printf " Executable size... "
-
-make clean
-CFLAGS=-fno-asynchronous-unwind-tables make OFLAGS=-Os lib >/dev/null 2>&1
-cd programs
-CFLAGS=-fno-asynchronous-unwind-tables make OFLAGS=-Os ssl/$CLIENT >/dev/null
-strip ssl/$CLIENT
-stat -c'%s' ssl/$CLIENT
-cd ..
-
-printf " Peak ram usage... "
-
-make clean
-CFLAGS=-g3 make OFLAGS=-Os lib >/dev/null 2>&1
-cd programs
-CFLAGS=-g3 make OFLAGS=-Os ssl/$CLIENT >/dev/null
-cd ..
-
-rm -f massif.out.*
-
-./ssl_server2 >/dev/null &
-SRV_PID=$!
-sleep 1;
-
-if valgrind --tool=massif --stacks=yes programs/ssl/$CLIENT >/dev/null 2>&1
-then
- FAILED=0
-else
- echo "client failed" >&2
- FAILED=1
-fi
-
-kill $SRV_PID
-wait $SRV_PID
-
-scripts/massif_max.pl massif.out.*
-mv massif.out.* massif-suite-b.$$
+do_config "suite-b" \
+ "POLARSSL_BASE64_C POLARSSL_PEM_PARSE_C POLARSSL_CERTS_C" \
+ ""
# cleanup