source: branches/libc-0.6/src/gcc/contrib/regression/btest-gcc.sh

Last change on this file was 1392, checked in by bird, 21 years ago

This commit was generated by cvs2svn to compensate for changes in r1391,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 5.4 KB
Line 
1#!/bin/sh
2
3# Test GCC.
4# Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
5
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 2 of the License, or
9# (at your option) any later version.
10
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15
16# You should have received a copy of the GNU General Public License
17# along with this program; if not, write to the Free Software
18# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
20# INPUT:
21# btest <target> <source> <prefix> <state> <build>
22# TARGET is the target triplet. It should be the same one as used in
23# constructing PREFIX. Or it can be the keyword 'native', indicating
24# a target of whatever platform the script is running on.
25TARGET=$1
26# SOURCE is the directory containing the toplevel configure.
27SOURCE=$2
28
29# PREFIX is the directory for the --prefix option to configure.
30# For cross compilers, it needs to contain header files,
31# libraries, and binutils. PATH should probably include
32# $PREFIX/bin.
33PREFIX=$3
34# This script also needs to include the GDB testsuite in
35# $PREFIX/share/gdb-testsuite.
36GDB_TESTSUITE=$PREFIX/share/gdb-testsuite
37
38# STATE is where the tester maintains its internal state,
39# described below.
40STATE=$4
41
42# BUILD is a temporary directory that this script will
43# delete and recreate, containing the build tree.
44BUILD=$5
45
46# you also probably need to set these variables:
47# PATH: should contain a native gcc, and a cross gdb.
48# DEJAGNU: should point to a site.exp suitable for testing
49# the compiler and debugger.
50
51
52# OUTPUT: in $RESULT, one of the following keywords:
53# error the script failed due to
54# a misconfiguration or resource limitation
55# build the build failed
56# regress-<n> the build succeeded, but there were <n>
57# testsuite regressions, listed in $REGRESS
58# pass build succeeded and there were no regressions
59RESULT=$STATE/RESULT
60# in BUILD_LOG, the output of the build
61BUILD_LOG=$STATE/build_log
62# in FAILED, a list of failing testcases
63FAILED=$STATE/failed
64# in PASSES, the list of testcases we expect to pass
65PASSES=$STATE/passes
66# in REGRESS, a list of testcases we expected to pass but that failed
67REGRESS=$STATE/regress
68
69# Make sure various files exist.
70[ -d $STATE ] || mkdir $STATE
71[ -f $PASSES ] || touch $PASSES
72
73# These lines should stay in this order, because
74# that way if something is badly wrong and $RESULT can't
75# be modified then cron will mail the error message.
76# The reverse order could lead to the testsuite claiming that
77# everything always passes, without running any tests.
78echo error > $RESULT || exit 1
79exec > $BUILD_LOG 2>&1 || exit 1
80
81set -x
82
83# Nuke $BUILD and recreate it.
84rm -rf $BUILD $REGRESS $FAILED
85mkdir $BUILD || exit 1
86cd $BUILD || exit 1
87
88H_BUILD=`$SOURCE/config.guess || exit 1`
89H_HOST=$H_BUILD
90if [ $TARGET = native ] ; then
91 H_TARGET=$H_HOST
92else
93 H_TARGET=$TARGET
94fi
95H_REAL_TARGET=`$SOURCE/config.sub $H_TARGET || exit 1`
96
97# TESTLOGS is the list of dejagnu .sum files that the tester should
98# look at.
99TESTLOGS="gcc/testsuite/gcc.sum
100gcc/testsuite/g++.sum
101gcc/testsuite/g77.sum
102gcc/testsuite/objc.sum"
103# $H_TARGET/libstdc++-v3/testsuite/libstdc++-v3.sum
104
105# Build.
106echo build > $RESULT
107if [ $H_HOST = $H_TARGET ] ; then
108 $SOURCE/configure --prefix=$PREFIX --target=$H_TARGET || exit 1
109 if ! make bootstrap ; then
110 [ -s gcc/.bad_compare ] || exit 1
111 cat gcc/.bad_compare >> $REGRESS || exit 1
112 make all || exit 1
113 fi
114else
115 $SOURCE/configure --prefix=$PREFIX --target=$H_TARGET \
116 --with-gnu-ld --with-gnu-as --with-newlib || exit 1
117 make || exit 1
118fi
119echo error > $RESULT || exit 1
120
121# Test GCC against its internal testsuite.
122make -k check-gcc
123
124# Test libstd++-v3
125make check-target-libstdc++-v3
126
127# Test the just-built GCC with the GDB testsuite.
128if [ -d $GDB_TESTSUITE ] ; then
129 mkdir test-gdb || exit 1
130 cd $GDB_TESTSUITE || exit 1
131 for i in gdb.* ; do
132 if [ -d $i ] ; then
133 mkdir $BUILD/test-gdb/$i
134 fi
135 done
136 cd $BUILD/test-gdb || exit 1
137 echo "set host_alias $H_HOST" > site.exp
138 echo "set host_triplet $H_HOST" >> site.exp
139 echo "set target_alias $H_TARGET" >> site.exp
140 echo "set target_triplet $H_REAL_TARGET" >> site.exp
141 echo "set build_alias $H_BUILD" >> site.exp
142 echo "set build_triplet $H_BUILD" >> site.exp
143 echo "set srcdir $GDB_TESTSUITE" >> site.exp
144 runtest --tool gdb
145 TESTLOGS="$TESTLOGS test-gdb/gdb.sum"
146fi
147
148# Sanity-check the testlogs. They should contain at least one PASS.
149cd $BUILD || exit 1
150for LOG in $TESTLOGS ; do
151 if ! grep ^PASS: $LOG > /dev/null ; then
152 echo build > $RESULT
153 exit 1
154 fi
155done
156
157# Work out what failed
158for LOG in $TESTLOGS ; do
159 L=`basename $LOG`
160 awk '/^FAIL: / { print "'$L'",$2; }' $LOG || exit 1
161done | sort | uniq > $FAILED || exit 1
162comm -12 $FAILED $PASSES >> $REGRESS || exit 1
163NUMREGRESS=`wc -l < $REGRESS | tr -d ' '`
164if [ $NUMREGRESS -ne 0 ] ; then
165 echo regress-$NUMREGRESS > $RESULT
166 exit 1
167fi
168
169# It passed. Update the state.
170for LOG in $TESTLOGS ; do
171 L=`basename $LOG`
172 awk '/^PASS: / { print "'$L'",$2; }' $LOG || exit 1
173done | sort | uniq | comm -23 - $FAILED > ${PASSES}~ || exit 1
174[ -s ${PASSES}~ ] || exit 1
175mv ${PASSES}~ ${PASSES} || exit 1
176echo pass > $RESULT
177exit 0
Note: See TracBrowser for help on using the repository browser.