From 7922bd0454bc19cc974de7e2f5cf5ef614569782 Mon Sep 17 00:00:00 2001 From: David Thomas Date: Thu, 9 Mar 2017 10:01:27 +0000 Subject: Transfer in test and documentation parts. --- run_test_deliverable.sh | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 run_test_deliverable.sh (limited to 'run_test_deliverable.sh') diff --git a/run_test_deliverable.sh b/run_test_deliverable.sh new file mode 100644 index 0000000..f77e8b7 --- /dev/null +++ b/run_test_deliverable.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +if [[ -z "$1" ]]; then + COMPILER=bin/c_compiler +else + COMPILER=$1 +fi + +mkdir -p working + +for DRIVER in test_deliverable/testcases/*_driver.c ; do + NAME=$(basename $DRIVER _driver.c) + TESTCODE=test_deliverable/testcases/$NAME.c + + >&2 echo "Test case $NAME" + + # Compile driver with normal GCC + mips-linux-gnu-gcc -c $DRIVER -o working/${NAME}_driver.o 2> working/${NAME}_driver.compile.stderr + if [[ $? -ne 0 ]]; then + >&2 echo "ERROR : Couldn't compile driver program using GCC." + continue + fi + + # Compile test function with compiler under test to assembly + cat $TESTCODE | $COMPILER > working/$NAME.s 2> working/${NAME}.compile.stderr + if [[ $? -ne 0 ]]; then + >&2 echo "ERROR : Compiler returned error message." + continue + fi + + # Link driver object and assembly into executable + mips-linux-gnu-gcc -static working/${NAME}.s working/${NAME}_driver.o -o working/${NAME}.elf 2> working/${NAME}.link.stderr + if [[ $? -ne 0 ]]; then + >&2 echo "ERROR : Linker returned error message." + continue + fi + + # Run the actual executable + qemu-mips working/${NAME}.elf + if [[ $? -ne 1 ]]; then + >&2 echo "ERROR : Testcase returned $?, but expected 0." + fi + + +done -- cgit