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