blob: 290a6b5d6b66f46851deaf0543fe8fadf3f4aa92 [file] [log] [blame]
#!/usr/bin/env bash
#
# Copyright (c) 2019-2020, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
set -e
ci_root="$(readlink -f "$(dirname "$0")/..")"
source "$ci_root/utils.sh"
# Change directory to the TF-A checkout ready to build
cd "$TF_CHECKOUT_LOC"
# Build TF-A to get blx.bin images and the tools (fiptool and cert_create)
# Debug build enabled so that valgrind has access to source file line numbers
if ! make CROSS_COMPILE="aarch64-none-elf-" all fiptool certtool DEBUG=1 V=1 \
&>"$workspace/build.log"; then
echo "Error building tools; see archived build.log"
exit 1
fi
run_valgrind() {
valgrind --leak-check=full -v --log-file="$log_file" $*
echo
if ! grep -iq "All heap blocks were freed -- no leaks are possible" \
"$log_file"; then
echo "Memory leak reported in $log_file"
return 1
fi
return 0
}
has_leak=0
fiptool_cmd="./tools/fiptool/fiptool \
create \
--tb-fw build/fvp/debug/bl2.bin \
--soc-fw build/fvp/debug/bl31.bin \
fip.bin"
# Build the FIP under Valgrind
if ! log_file="$workspace/fiptool.log" run_valgrind "$fiptool_cmd"; then
echo "fiptool has memory leaks."
has_leak=1
else
echo "fiptool does not have memory leaks."
fi
echo
cert_create_cmd="./tools/cert_create/cert_create \
-n \
--tb-fw build/fvp/debug/bl2.bin"
# Run cert_create under Valgrind
if ! log_file="$workspace/cert_create.log" run_valgrind "$cert_create_cmd"; then
echo "cert_create has memory leaks."
has_leak=1
else
echo "cert_create does not have memory leaks."
fi
echo
exit "$has_leak"