scripts: add onetest_gesamt for arm64
[testub10.git] / scripts / onetest_gesamt_arm64
1 #!/bin/bash
2
3 i=$1
4 beispiel=gesamt_arm64
5 PROGRAM=./$beispiel
6
7 LOC=.
8 #LOC=/usr/ftp/pub/ubvl/test/$beispiel
9
10 allow_null_glob_expansion=1
11
12 if [ ! -d ~/abgabe/$beispiel ]; then
13   echo "Fehler: Verzeichnis ~/abgabe/$beispiel existiert nicht."
14   exit 1
15 else
16   cd ~/abgabe/$beispiel
17   echo 'Teste "make"'
18   make
19 fi
20
21 if test ! -x $PROGRAM
22 then
23         echo "Fehler: Kein Programm $PROGRAM"
24         exit 1
25 fi
26 let prgnum=0
27 #for i in $LOC/*.0 $LOC2/*.0
28 if [ -f $i ]; then
29         let prgnum=prgnum+1
30         let errorfound=0
31         echo "==========> Eingabe von $i:"
32         cat $i
33         echo
34         RESFILE=test${beispiel}out$$
35         $PROGRAM <$i >$RESFILE
36         retval=$?
37         echo -n "Übersetzung: "
38         if test $retval -eq 0
39         then
40                 echo "Status korrekt"
41         else
42                 echo "[Errot] Status=$retval. Erwartet: 0"
43                 let errorfound=1
44         fi
45         echo
46         echo "Ausgabe:"
47         cat $RESFILE
48         mv -f $RESFILE $RESFILE.s
49         CALLFILE=${i%.*}.call
50         echo
51         if [ ! -f $CALLFILE ]; then
52         echo "Fehler: Datei $CALLFILE existiert nicht, kann Code nicht ausführen..."
53         exit 1
54         else
55         echo "Übersetze und linke das Testprogramm:"
56         echo cc -g -I. -DCALL=\"$CALLFILE\" $LOC/testmain.c $LOC/callingconvention.o $RESFILE.s
57         if cc -g -I. -DCALL=\"$CALLFILE\" $LOC/testmain.c $LOC/callingconvention.o $RESFILE.s; then
58                 echo
59                 echo "Rufe folgendes Codefragment auf:"
60                 cat $CALLFILE
61                 echo
62                 ./a.out 
63                 retval=$?
64                 # test callee saved registers
65                 if [ "$retval" -ge 12 ] && [ "$retval" -le 15 ]; then
66                 echo "[Error] Callee-saved register %r$retval modified."
67                                         let errorfound=1
68                 elif [ "$retval" -eq 11 ]; then
69                 echo "[Error] Callee-saved register %rbx modified."
70                                         let errorfound=1
71                 elif [ "$retval" -eq 16 ]; then
72                 echo "[Error] Callee-saved register %rbp modified."
73                                         let errorfound=1
74                 elif [ "$retval" -eq 30 ]; then
75                 echo "[Error] Stack pointer %rsp modified."
76                                         let errorfound=1
77                                 else
78                                         # test signals  
79                 test $retval -gt 127
80                 retsig=$?
81                 test ${i##*.} = xin
82                 expsig=$?
83                 if test $retsig -eq $expsig; then
84                         if test $retval -eq 1; then
85                         echo "[Error] Das Ergebnis des Aufrufs ist falsch."
86                         let errorfound=1
87                         elif test $retval -eq 0; then
88                         echo "Das Ergebnis des Ausdrucks ist korrekt."
89                         else
90                                 echo "[Error] Erzeugter Code verhaelt sich bzgl. Signalerzeugung anders als erwartet."
91                         let errorfound=1
92                         fi
93                 else
94                         echo "[Error] Erzeugter Code verhaelt sich bezueglich Signalerzeugung anders als erwartet."
95                         let errorfound=1
96                         echo "Rueckgabewert = $retval";
97                 fi
98                 fi
99                 echo
100         else
101                 echo "[Error] Erzeugter Code konnte nicht assembliert und gelinkt werden."
102                 let errorfound=1
103         fi
104         fi
105         let errnum=errnum+errorfound
106         if [ 1 -eq $errorfound ]; then
107                 rm *.s
108                 rm *.out
109                 exit 3;
110         fi
111         rm -f a.out $RESFILE $RESFILE.s
112 fi