First, you must have downloaded the testsuites. These are part of the full distribution, but if you downloaded the “core” compiler plus any front ends, you must download the testsuites separately.
Second, you must have the testing tools installed. This includes DejaGnu 1.4.1 or 1.4.3 and later, Tcl, and Expect; the DejaGnu site has links to these.
If the directories where runtest and expect were installed are not in the PATH, you may need to set the following environment variables appropriately, as in the following example (which assumes that DejaGnu has been installed under /usr/local):
TCL_LIBRARY = /usr/local/share/tcl8.0 DEJAGNULIBS = /usr/local/share/dejagnu
(On systems such as Cygwin, these paths are required to be actual paths, not mounts or links; presumably this is due to some lack of portability in the DejaGnu code.)
Finally, you can run the testsuite (which may take a long time):
cd objdir; make -k check
This will test various components of GCC, such as compiler front ends and runtime libraries. While running the testsuite, DejaGnu might emit some harmless messages resembling WARNING: Couldn't find the global config file. or WARNING: Couldn't find tool init file that can be ignored.
In order to run sets of tests selectively, there are targets make check-gcc and make check-g++ in the gcc subdirectory of the object directory. You can also just run make check in a subdirectory of the object directory.
A more selective way to just run all gcc execute tests in the testsuite is to use
make check-gcc RUNTESTFLAGS="execute.exp other-options"
Likewise, in order to run only the g++ “old-deja” tests in the testsuite with filenames matching 9805*, you would use
make check-g++ RUNTESTFLAGS="old-deja.exp=9805* other-options"
The *.exp files are located in the testsuite directories of the GCC source, the most important ones being compile.exp, execute.exp, dg.exp and old-deja.exp. To get a list of the possible *.exp files, pipe the output of make check into a file and look at the Running ... .exp lines.
The Java runtime tests can be executed via make check in the target/libjava/testsuite directory in the build tree.
The Mauve Project provides a suite of tests for the Java Class Libraries. This suite can be run as part of libgcj testing by placing the Mauve tree within the libjava testsuite at libjava/testsuite/libjava.mauve/mauve, or by specifying the location of that tree when invoking make, as in make MAUVEDIR=~/mauve check.
Jacks is a free test suite that tests Java compiler front ends. This suite can be run as part of libgcj testing by placing the Jacks tree within the libjava testsuite at libjava/testsuite/libjava.jacks/jacks.
The result of running the testsuite are various *.sum and *.log files in the testsuite subdirectories. The *.log files contain a detailed log of the compiler invocations and the corresponding results, the *.sum files summarize the results. These summaries contain status codes for all tests:
It is normal for some tests to report unexpected failures. At the current time our testing harness does not allow fine grained control over whether or not a test is expected to fail. We expect to fix this problem in future releases.
If you want to report the results to the GCC project, use the contrib/test_summary shell script. Start it in the objdir with
srcdir/contrib/test_summary -p your_commentary.txt \ -m gcc-testresults@gcc.gnu.org |sh
This script uses the Mail program to send the results, so make sure it is in your PATH. The file your_commentary.txt is prepended to the testsuite summary and should contain any special remarks you have on your results or your build environment. Please do not edit the testsuite result block or the subject line, as these messages may be automatically processed.