From 29d3a752f7991a2c7eca4354b97b4a911211e1fb Mon Sep 17 00:00:00 2001 From: Ben Elliston Date: Sun, 17 Aug 2003 23:11:19 +0000 Subject: Remove BlueGnu. Now unsupported and almost certainly broken. --- contrib/bluegnu2.0.3/Makefile.in | 185 - contrib/bluegnu2.0.3/README.bluegnu | 325 - contrib/bluegnu2.0.3/README.dejagnu | 283 - contrib/bluegnu2.0.3/TODO.dejagnu | 7 - contrib/bluegnu2.0.3/aclocal.m4 | 605 -- contrib/bluegnu2.0.3/bluegnu | 136 - contrib/bluegnu2.0.3/bluegnutk | 5 - contrib/bluegnu2.0.3/bluegnutk.itcl | 216 - contrib/bluegnu2.0.3/bluegnutk.rc | 29 - contrib/bluegnu2.0.3/bluegnutkUtils.itcl | 436 -- contrib/bluegnu2.0.3/config.guess | 592 -- contrib/bluegnu2.0.3/configure | 974 --- contrib/bluegnu2.0.3/configure.in | 9 - contrib/bluegnu2.0.3/contents | 232 - contrib/bluegnu2.0.3/contrib/README | 16 - contrib/bluegnu2.0.3/contrib/test-g++ | 84 - contrib/bluegnu2.0.3/contrib/test-tool | 346 - contrib/bluegnu2.0.3/contrib/testit | 1149 ---- contrib/bluegnu2.0.3/dejagnu | 93 - contrib/bluegnu2.0.3/doc/Makefile.in | 170 - contrib/bluegnu2.0.3/doc/README.tex | 253 - contrib/bluegnu2.0.3/doc/READMEdvi.dvi | Bin 10840 -> 0 bytes contrib/bluegnu2.0.3/doc/READMEdvi.tex | 5 - contrib/bluegnu2.0.3/doc/READMEdvi.title | 1 - contrib/bluegnu2.0.3/doc/READMEtxt.dvi | Bin 9344 -> 0 bytes contrib/bluegnu2.0.3/doc/READMEtxt.tex | 6 - contrib/bluegnu2.0.3/doc/configure | 657 -- contrib/bluegnu2.0.3/doc/configure.in | 4 - contrib/bluegnu2.0.3/doc/dejagnu.1 | 120 - contrib/bluegnu2.0.3/doc/dejagnu.dvi | Bin 263684 -> 0 bytes contrib/bluegnu2.0.3/doc/dejagnu.info | 77 - contrib/bluegnu2.0.3/doc/dejagnu.info-1 | 1163 ---- contrib/bluegnu2.0.3/doc/dejagnu.info-2 | 1137 ---- contrib/bluegnu2.0.3/doc/dejagnu.info-3 | 1016 --- contrib/bluegnu2.0.3/doc/dejagnu.pdf | 4844 -------------- contrib/bluegnu2.0.3/doc/dejagnu.ps | 6690 -------------------- contrib/bluegnu2.0.3/doc/dejagnu.texi | 3503 ---------- contrib/bluegnu2.0.3/doc/notice.html | 395 -- contrib/bluegnu2.0.3/doc/notice.pdf | 1165 ---- contrib/bluegnu2.0.3/doc/notice.ps | 1394 ---- contrib/bluegnu2.0.3/example/Makefile.in | 98 - contrib/bluegnu2.0.3/example/calc/Makefile.in | 112 - contrib/bluegnu2.0.3/example/calc/calc.1 | 29 - contrib/bluegnu2.0.3/example/calc/calc.c | 65 - contrib/bluegnu2.0.3/example/calc/calc.h.in | 18 - contrib/bluegnu2.0.3/example/calc/configure | 812 --- contrib/bluegnu2.0.3/example/calc/configure.in | 19 - .../example/calc/testsuite/calc.test/calc.exp | 60 - .../example/calc/testsuite/config/unix.exp | 49 - contrib/bluegnu2.0.3/example/configure | 697 -- contrib/bluegnu2.0.3/example/configure.in | 8 - contrib/bluegnu2.0.3/install-sh | 238 - contrib/bluegnu2.0.3/lib/BlueGnu_target.itcl | 105 - contrib/bluegnu2.0.3/lib/Default_target.itcl | 82 - contrib/bluegnu2.0.3/lib/Types.itcl | 216 - contrib/bluegnu2.0.3/lib/bluegnu.itcl | 22 - contrib/bluegnu2.0.3/lib/bug.exp | 125 - contrib/bluegnu2.0.3/lib/debugger.exp | 252 - contrib/bluegnu2.0.3/lib/dejagnu.itcl | 81 - contrib/bluegnu2.0.3/lib/dg.exp | 881 --- contrib/bluegnu2.0.3/lib/foo.itcl | 21 - contrib/bluegnu2.0.3/lib/framework.exp | 677 -- contrib/bluegnu2.0.3/lib/libgloss.exp | 225 - contrib/bluegnu2.0.3/lib/nonexpect.itcl | 74 - contrib/bluegnu2.0.3/lib/remote.exp | 896 --- contrib/bluegnu2.0.3/lib/serverUtils.itcl | 51 - contrib/bluegnu2.0.3/lib/target.exp | 520 -- contrib/bluegnu2.0.3/lib/tclIndex | 21 - .../bluegnu2.0.3/lib/testSessionApplication.itcl | 314 - contrib/bluegnu2.0.3/lib/testSessionClasses.itcl | 1341 ---- contrib/bluegnu2.0.3/lib/testSessionFramework.itcl | 1386 ---- contrib/bluegnu2.0.3/lib/testSessionUtils.itcl | 26 - contrib/bluegnu2.0.3/lib/udi.exp | 213 - contrib/bluegnu2.0.3/lib/util-defs.exp | 110 - contrib/bluegnu2.0.3/lib/utils.exp | 454 -- contrib/bluegnu2.0.3/lib/vrtx.exp | 334 - contrib/bluegnu2.0.3/lib/vxworks.exp | 265 - contrib/bluegnu2.0.3/mkinstalldirs | 32 - contrib/bluegnu2.0.3/runtest | 90 - contrib/bluegnu2.0.3/runtest.exp | 1146 ---- contrib/bluegnu2.0.3/site.tmpl | 307 - contrib/bluegnu2.0.3/tcl-mode.el | 2223 ------- .../bluegnu2.0.3/testsets/BlueGnu/appendQueue.itcl | 9 - .../testsets/BlueGnu/clone_output.itcl | 156 - .../bluegnu2.0.3/testsets/BlueGnu/locateFile.itcl | 46 - .../testsets/BlueGnu/namespaceVariables.itcl | 36 - .../testsets/BlueGnu/prependQueue.itcl | 6 - contrib/bluegnu2.0.3/testsets/BlueGnu/runtest.itcl | 19 - .../bluegnu2.0.3/testsets/BlueGnu/testNaming.itcl | 19 - contrib/bluegnu2.0.3/testsets/BlueGnu/ts001/A.itcl | 1 - contrib/bluegnu2.0.3/testsets/BlueGnu/ts002/A.itcl | 1 - contrib/bluegnu2.0.3/testsets/BlueGnu/types.itcl | 55 - contrib/bluegnu2.0.3/testsets/BlueGnu/verbose.itcl | 562 -- .../testsets/examples/lib/benchmark.itcl | 64 - contrib/bluegnu2.0.3/testsets/examples/tc001 | 3 - contrib/bluegnu2.0.3/testsets/examples/tc002 | 3 - contrib/bluegnu2.0.3/testsets/examples/ts_001 | 2 - contrib/bluegnu2.0.3/testsets/examples/ts_002 | 4 - contrib/bluegnu2.0.3/testsets/examples/ts_003 | 2 - .../bluegnu2.0.3/testsets/examples/versionTcl.itcl | 8 - contrib/bluegnu2.0.3/testsets/tclIndex | 5 - contrib/bluegnu2.0.3/testsuite/Makefile.in | 100 - contrib/bluegnu2.0.3/testsuite/T/env.exp | 12 - contrib/bluegnu2.0.3/testsuite/T/env.iexp | 48 - contrib/bluegnu2.0.3/testsuite/T/foo.exp | 5 - contrib/bluegnu2.0.3/testsuite/T/subT/test_002.exp | 20 - contrib/bluegnu2.0.3/testsuite/T/test_000.exp | 8 - contrib/bluegnu2.0.3/testsuite/T/test_001.exp | 19 - contrib/bluegnu2.0.3/testsuite/T/test_002.exp | 22 - contrib/bluegnu2.0.3/testsuite/T/test_003.exp | 3 - contrib/bluegnu2.0.3/testsuite/T/test_004.exp | 3 - .../testsuite/bluegnu.all/clone_output.test | 68 - .../bluegnu2.0.3/testsuite/bluegnu.all/config.test | 138 - .../testsuite/bluegnu.all/default_procs.tcl | 94 - .../bluegnu2.0.3/testsuite/bluegnu.all/libs.exp | 73 - .../bluegnu2.0.3/testsuite/bluegnu.all/options.exp | 91 - .../bluegnu2.0.3/testsuite/bluegnu.all/remote.test | 217 - .../testsuite/bluegnu.all/stats-sub.exp | 16 - .../bluegnu2.0.3/testsuite/bluegnu.all/stats.exp | 49 - .../bluegnu2.0.3/testsuite/bluegnu.all/target.test | 247 - .../testsuite/bluegnu.all/topdir/subdir1/subfile1 | 1 - .../testsuite/bluegnu.all/topdir/subdir1/subfile2 | 2 - .../topdir/subdir1/subsubdir1/subsubfile1 | 2 - .../testsuite/bluegnu.all/topdir/subdir2/subfile2 | 2 - .../bluegnu2.0.3/testsuite/bluegnu.all/utils.test | 118 - contrib/bluegnu2.0.3/testsuite/config/default.exp | 79 - contrib/bluegnu2.0.3/testsuite/configure | 1076 ---- contrib/bluegnu2.0.3/testsuite/configure.in | 9 - contrib/bluegnu2.0.3/testsuite/lib/libsup.exp | 220 - contrib/bluegnu2.0.3/testsuite/tools/env.exp | 20 - 130 files changed, 46780 deletions(-) delete mode 100644 contrib/bluegnu2.0.3/Makefile.in delete mode 100644 contrib/bluegnu2.0.3/README.bluegnu delete mode 100644 contrib/bluegnu2.0.3/README.dejagnu delete mode 100644 contrib/bluegnu2.0.3/TODO.dejagnu delete mode 100644 contrib/bluegnu2.0.3/aclocal.m4 delete mode 100755 contrib/bluegnu2.0.3/bluegnu delete mode 100755 contrib/bluegnu2.0.3/bluegnutk delete mode 100644 contrib/bluegnu2.0.3/bluegnutk.itcl delete mode 100644 contrib/bluegnu2.0.3/bluegnutk.rc delete mode 100644 contrib/bluegnu2.0.3/bluegnutkUtils.itcl delete mode 100755 contrib/bluegnu2.0.3/config.guess delete mode 100755 contrib/bluegnu2.0.3/configure delete mode 100644 contrib/bluegnu2.0.3/configure.in delete mode 100644 contrib/bluegnu2.0.3/contents delete mode 100644 contrib/bluegnu2.0.3/contrib/README delete mode 100755 contrib/bluegnu2.0.3/contrib/test-g++ delete mode 100755 contrib/bluegnu2.0.3/contrib/test-tool delete mode 100755 contrib/bluegnu2.0.3/contrib/testit delete mode 100755 contrib/bluegnu2.0.3/dejagnu delete mode 100644 contrib/bluegnu2.0.3/doc/Makefile.in delete mode 100644 contrib/bluegnu2.0.3/doc/README.tex delete mode 100644 contrib/bluegnu2.0.3/doc/READMEdvi.dvi delete mode 100644 contrib/bluegnu2.0.3/doc/READMEdvi.tex delete mode 100644 contrib/bluegnu2.0.3/doc/READMEdvi.title delete mode 100644 contrib/bluegnu2.0.3/doc/READMEtxt.dvi delete mode 100644 contrib/bluegnu2.0.3/doc/READMEtxt.tex delete mode 100755 contrib/bluegnu2.0.3/doc/configure delete mode 100644 contrib/bluegnu2.0.3/doc/configure.in delete mode 100644 contrib/bluegnu2.0.3/doc/dejagnu.1 delete mode 100644 contrib/bluegnu2.0.3/doc/dejagnu.dvi delete mode 100644 contrib/bluegnu2.0.3/doc/dejagnu.info delete mode 100644 contrib/bluegnu2.0.3/doc/dejagnu.info-1 delete mode 100644 contrib/bluegnu2.0.3/doc/dejagnu.info-2 delete mode 100644 contrib/bluegnu2.0.3/doc/dejagnu.info-3 delete mode 100644 contrib/bluegnu2.0.3/doc/dejagnu.pdf delete mode 100644 contrib/bluegnu2.0.3/doc/dejagnu.ps delete mode 100644 contrib/bluegnu2.0.3/doc/dejagnu.texi delete mode 100644 contrib/bluegnu2.0.3/doc/notice.html delete mode 100644 contrib/bluegnu2.0.3/doc/notice.pdf delete mode 100644 contrib/bluegnu2.0.3/doc/notice.ps delete mode 100644 contrib/bluegnu2.0.3/example/Makefile.in delete mode 100644 contrib/bluegnu2.0.3/example/calc/Makefile.in delete mode 100644 contrib/bluegnu2.0.3/example/calc/calc.1 delete mode 100644 contrib/bluegnu2.0.3/example/calc/calc.c delete mode 100644 contrib/bluegnu2.0.3/example/calc/calc.h.in delete mode 100755 contrib/bluegnu2.0.3/example/calc/configure delete mode 100644 contrib/bluegnu2.0.3/example/calc/configure.in delete mode 100644 contrib/bluegnu2.0.3/example/calc/testsuite/calc.test/calc.exp delete mode 100644 contrib/bluegnu2.0.3/example/calc/testsuite/config/unix.exp delete mode 100755 contrib/bluegnu2.0.3/example/configure delete mode 100644 contrib/bluegnu2.0.3/example/configure.in delete mode 100755 contrib/bluegnu2.0.3/install-sh delete mode 100644 contrib/bluegnu2.0.3/lib/BlueGnu_target.itcl delete mode 100644 contrib/bluegnu2.0.3/lib/Default_target.itcl delete mode 100644 contrib/bluegnu2.0.3/lib/Types.itcl delete mode 100644 contrib/bluegnu2.0.3/lib/bluegnu.itcl delete mode 100644 contrib/bluegnu2.0.3/lib/bug.exp delete mode 100644 contrib/bluegnu2.0.3/lib/debugger.exp delete mode 100644 contrib/bluegnu2.0.3/lib/dejagnu.itcl delete mode 100644 contrib/bluegnu2.0.3/lib/dg.exp delete mode 100644 contrib/bluegnu2.0.3/lib/foo.itcl delete mode 100644 contrib/bluegnu2.0.3/lib/framework.exp delete mode 100644 contrib/bluegnu2.0.3/lib/libgloss.exp delete mode 100644 contrib/bluegnu2.0.3/lib/nonexpect.itcl delete mode 100644 contrib/bluegnu2.0.3/lib/remote.exp delete mode 100644 contrib/bluegnu2.0.3/lib/serverUtils.itcl delete mode 100644 contrib/bluegnu2.0.3/lib/target.exp delete mode 100644 contrib/bluegnu2.0.3/lib/tclIndex delete mode 100644 contrib/bluegnu2.0.3/lib/testSessionApplication.itcl delete mode 100644 contrib/bluegnu2.0.3/lib/testSessionClasses.itcl delete mode 100644 contrib/bluegnu2.0.3/lib/testSessionFramework.itcl delete mode 100644 contrib/bluegnu2.0.3/lib/testSessionUtils.itcl delete mode 100644 contrib/bluegnu2.0.3/lib/udi.exp delete mode 100644 contrib/bluegnu2.0.3/lib/util-defs.exp delete mode 100644 contrib/bluegnu2.0.3/lib/utils.exp delete mode 100644 contrib/bluegnu2.0.3/lib/vrtx.exp delete mode 100644 contrib/bluegnu2.0.3/lib/vxworks.exp delete mode 100755 contrib/bluegnu2.0.3/mkinstalldirs delete mode 100755 contrib/bluegnu2.0.3/runtest delete mode 100755 contrib/bluegnu2.0.3/runtest.exp delete mode 100644 contrib/bluegnu2.0.3/site.tmpl delete mode 100644 contrib/bluegnu2.0.3/tcl-mode.el delete mode 100644 contrib/bluegnu2.0.3/testsets/BlueGnu/appendQueue.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/BlueGnu/clone_output.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/BlueGnu/locateFile.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/BlueGnu/namespaceVariables.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/BlueGnu/prependQueue.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/BlueGnu/runtest.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/BlueGnu/testNaming.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/BlueGnu/ts001/A.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/BlueGnu/ts002/A.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/BlueGnu/types.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/BlueGnu/verbose.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/examples/lib/benchmark.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/examples/tc001 delete mode 100644 contrib/bluegnu2.0.3/testsets/examples/tc002 delete mode 100644 contrib/bluegnu2.0.3/testsets/examples/ts_001 delete mode 100644 contrib/bluegnu2.0.3/testsets/examples/ts_002 delete mode 100644 contrib/bluegnu2.0.3/testsets/examples/ts_003 delete mode 100644 contrib/bluegnu2.0.3/testsets/examples/versionTcl.itcl delete mode 100644 contrib/bluegnu2.0.3/testsets/tclIndex delete mode 100644 contrib/bluegnu2.0.3/testsuite/Makefile.in delete mode 100644 contrib/bluegnu2.0.3/testsuite/T/env.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/T/env.iexp delete mode 100644 contrib/bluegnu2.0.3/testsuite/T/foo.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/T/subT/test_002.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/T/test_000.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/T/test_001.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/T/test_002.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/T/test_003.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/T/test_004.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/clone_output.test delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/config.test delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/default_procs.tcl delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/libs.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/options.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/remote.test delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/stats-sub.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/stats.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/target.test delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir1/subfile1 delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir1/subfile2 delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir1/subsubdir1/subsubfile1 delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir2/subfile2 delete mode 100644 contrib/bluegnu2.0.3/testsuite/bluegnu.all/utils.test delete mode 100644 contrib/bluegnu2.0.3/testsuite/config/default.exp delete mode 100755 contrib/bluegnu2.0.3/testsuite/configure delete mode 100644 contrib/bluegnu2.0.3/testsuite/configure.in delete mode 100644 contrib/bluegnu2.0.3/testsuite/lib/libsup.exp delete mode 100644 contrib/bluegnu2.0.3/testsuite/tools/env.exp (limited to 'contrib') diff --git a/contrib/bluegnu2.0.3/Makefile.in b/contrib/bluegnu2.0.3/Makefile.in deleted file mode 100644 index 430648e..0000000 --- a/contrib/bluegnu2.0.3/Makefile.in +++ /dev/null @@ -1,185 +0,0 @@ -## @configure_input@ -# Makefile for BlueGnu Testing Framework. -# Copyright (C) 1988, 1990, 1991, 1992, 1994, 1995 Free Software Foundation, # Copyright (C) 1998 jotOmega dsc, Inc. - -#This file is part of BlueGnu. - -#BlueGnu is open software; you can redistribute it and/or modify -#it under the terms of the GNU General Public License as published by -#the Free Software Foundation; either version 2, or (at your option) -#any later version. - -#BlueGnu is distributed in the hope that it will be useful, -#but WITHOUT ANY WARRANTY; without even the implied warranty of -#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -#GNU General Public License for more details. - -#You should have received a copy of the GNU General Public License -#along with BlueGnu; see the file COPYING. If not, write to -#the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - -VPATH = @srcdir@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = $(exec_prefix)/bin -libdir = $(exec_prefix)/lib - -datadir = $(libdir)/bluegnu -infodir = $(prefix)/info -includedir = $(prefix)/include -gxx_includedir = $(tooldir)/g++-include -docdir = $(datadir)/doc - -SHELL = /bin/sh - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -CC = @CC@ -CFLAGS = -g - -SUBDIRS = @subdirs@ - -# These let the BlueGnu test suite run when BlueGnu isn't -# installed yet, so run it from the srcdir and objdir. -EXPECT = ` \ - if [ -f $${rootme}/../expect/expect ] ; then \ - echo $${rootme}/../expect/expect ; \ - else echo expect ; fi` - -BLUEGNUFLAGS = -BLUEGNU = ` \ - if [ -f ${srcdir}/bluegnu ] ; then \ - echo ${srcdir}/bluegnu ; \ - else echo bluegnu ; fi` - -TCLIBRARY = `if [ -f $${rootme}/expect/expect ] ; \ - then echo TCL_LIBRARY=$${srcdir}/../tcl/library ; \ - else echo "" ; fi` - -FLAGS_TO_PASS = \ - "CC=$(CC)" \ - "CFLAGS=$(CFLAGS)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "LDFLAGS=$(LDFLAGS)" \ - "MAKEINFO=$(MAKEINFO)" \ - "EXPECT=$(EXPECT)" \ - "TCLIBRARY=$(TCLIBRARY)" \ - "BLUEGNU=$(BLUEGNU)" \ - "BLUEGNUFLAGS=$(BLUEGNUFLAGS)" \ - "exec_prefix=$(exec_prefix)" \ - "prefix=$(prefix)" \ - "tooldir=$(tooldir)" - -all: force - @$(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS) - -contents: force - ls -lLAR -I CVS -I Makefile \ - -I config.status -I config.log -I config.cache \ - -I READMEdvi -I calc.h > $@ - -.PHONY: check installcheck -installcheck: - -.NOEXPORT: - -MAKEOVERRIDES= - -INFODIRS=doc -dvi info: - @rootme=`pwd`/ ; export rootme ; \ - rootsrc=`cd $(srcdir); pwd`/ ; export rootsrc ; \ - $(MAKE) subdir_do DO=$@ "DODIRS=$(INFODIRS)" $(FLAGS_TO_PASS) - -install-info: - @rootme=`pwd`/ ; export rootme ; \ - $(MAKE) subdir_do DO=install-info $(FLAGS_TO_PASS) - -install: - ${srcdir}/mkinstalldirs $(bindir) $(datadir) - $(INSTALL_PROGRAM) $(srcdir)/runtest $(bindir)/runtest - $(INSTALL_PROGRAM) $(srcdir)/runtest.exp $(datadir)/runtest.exp - $(INSTALL_PROGRAM) $(srcdir)/dejagnu $(bindir)/dejagnu - $(INSTALL_PROGRAM) $(srcdir)/bluegnu $(bindir)/bluegnu - $(INSTALL_PROGRAM) $(srcdir)/bluegnutk $(bindir) - $(INSTALL_PROGRAM) $(srcdir)/bluegnutk.itcl $(bindir) - $(INSTALL_PROGRAM) $(srcdir)/bluegnutk.rc $(bindir) - $(INSTALL_PROGRAM) $(srcdir)/bluegnutkUtils.itcl $(bindir) - $(INSTALL_PROGRAM) $(srcdir)/config.guess $(datadir)/config.guess - -for file in $(srcdir)/lib/*.exp; \ - do \ - $(INSTALL_DATA) $$file $(datadir) ; \ - done - -for file in $(srcdir)/lib/*.tcl; \ - do \ - $(INSTALL_DATA) $$file $(datadir) ; \ - done - -for file in $(srcdir)/lib/*.itcl; \ - do \ - $(INSTALL_DATA) $$file $(datadir) ; \ - done - $(INSTALL_DATA) $(srcdir)/lib/tclIndex $(datadir) - @$(MAKE) subdir_do DO=install $(FLAGS_TO_PASS) - -subdir_do: force - @for i in $(SUBDIRS); do \ - echo "Making $(DO) in $${i}..." ; \ - if [ -d ./$$i ] ; then \ - if (rootme=`pwd`/ ; export rootme ; \ - rootsrc=`cd $(srcdir); pwd`/ ; export rootsrc ; \ - cd ./$$i; \ - $(MAKE) $(FLAGS_TO_PASS) $(DO)) ; then true ; \ - else exit 1 ; fi ; \ - else true ; fi ; \ - done -force: - -clean mostlyclean: - @echo "Doing clean mosttlyclean +++++" - -rm -f \#* *~ core *.o a.out xgdb *.x - $(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS) - @for l in `find . -name logs`; do rm -fr $$l; done - @for f in `find . -name '*~'`; do rm -fr $$f; done - -distclean: clean - @echo "Doing distclean +++++" - $(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS) - -rm -f Makefile *-init.exp site.bak site.exp conftest.c - -rm -f config.status config.log config.cache - -rm -fr *.log summary detail *.sum blockit - -maintainer-clean realclean: - @echo "Doing maintainer-clean realclean +++++" - $(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS) - -rm -f Makefile *-init.exp site.bak site.exp conftest.c - -rm -f config.status config.log config.cache - -rm -fr *.log summary detail *.sum blockit - -rm -f README.bluegnu contents - -check: - @if [ -f testsuite/Makefile ]; then \ - rootme=`pwd`; export rootme; \ - cd testsuite; \ - $(MAKE) $(FLAGS_TO_PASS) check; \ - else true; fi - -Makefile: $(srcdir)/Makefile.in config.status - @echo "Rebuilding the Makefile..." - $(SHELL) ./config.status - -configure: $(srcdir)/configure.in $(srcdir)/Makefile.in $(srcdir)/aclocal.m4 - @echo "Rebuilding configure..." - @if [ x"${srcdir}" = x"@srcdir@" ] ; then \ - srcdir=. ; export srcdir ; \ - else true ; fi ; \ - (cd $${srcdir}; autoconf) - -config.status: - @echo "Rebuilding config.status..." - $(SHELL) ./config.status --recheck diff --git a/contrib/bluegnu2.0.3/README.bluegnu b/contrib/bluegnu2.0.3/README.bluegnu deleted file mode 100644 index 2c1e4d8..0000000 --- a/contrib/bluegnu2.0.3/README.bluegnu +++ /dev/null @@ -1,325 +0,0 @@ - - - - - - - - - Release Notice - - BlueGnu Testing Framework - - Version 2.0.3 - - Jan-Willem Neurdenburg - - jotOmega dsc - - - 56 Brigham Hill Road - - Grafton MA 01519-1135 - - neurdenburgj@acm.org - - - Tel: (508) 839-0276 - - Fax: (508) 839-7267 - - September 19, 1999 - - -1 Introduction - -BlueGnu is a framework for testing other programs. It has been -created to be compatible with DejaGnu. Its purpose is to provide -a single front end for all tests. Beyond this, BlueGnu offers -several advantages for testing: - - * The flexibility and consistency of the BlueGnu framework - makes it easy to write tests for any program, with the - exception of GUI applications. - - * BlueGnu provides a layer of abstraction, which makes all - tests (if correctly written) portable to any host or target - where a program must be tested. - * BlueGnu is written in [incr Tcl], which in turn is based on - Tcl (Tool Command Language). The framework comprises two - parts: - - - - 1 - - - - - - 1. the testing framework, - - 2. the test-suites or test-sets themselves. - * BlueGnu will work with any Tcl based interpreter as long as - [incr Tcl] has been included. You can include 'expect', - 'Tk', and/or other extensions. - - * Includes DejaGnu release 1.6 - - -2 Requirements -The following modules should have been installed, before you can -install and/or use BlueGnu: - - * Tcl release 8.0 or higher, - - * incr Tcl release 3.0 or higher. - - Any other extensions that is compatible with Tcl release 8.0 -can be used as well. - - -3 Structure and Contents of the Release -The root directory of the release contains the README files -with installation instructions and the files needed to build and -install this product. It also contains the executable scripts of -the BlueGnu testing framework. - The top-level directories are listed below: - -lib: the packages and procedures that make the BlueGnu and - DejaGnu testing framework. This also includes the default - target definition files. - -testsets: the BlueGnu test-suites and test examples. It contains - the following subdirectories. - - BlueGnu: test scripts to test the testing framework itself. - examples: test suite and test script examples. - config, lib, tools: currently empty, but can be used for - test-set dependent configuration files, library files, - and tools. - -config: currently empty. - - - - - - 2 - - - - - -doc: the DejaGnu texinfo source and the documentation in - 'info', 'dvi', 'ps', and 'pdf' representation, respectively - dejagnu.info*, dejagnu.dvi, dejagnu.ps, and dejagnu.pdf. A - DejaGnu man page is also available. - - It also contains the TeX version (README.tex) of this - document as well as the 'dvi', 'ps' 'html', and - 'pdf' representation, respectively notice.dvi, notice.ps, - notice.html, and notice.pdf. -testsuite: contains a mixture of DejaGnu and BlueGnu test - scripts. - -contrib: contains examples how DejaGnu is used at Cygnus. -example: contains a full DejaGnu test framework example for - testing the program 'calc' which is also included. - - -4 Installation and use under Unix - -Before you can install and use BlueGnu you need to have installed -the following three packages: - * Tcl version 8.0.3 - - * Tk version 8.0.3 - * incr Tcl version 3.0.1 - -The source for these packages should all be located in one -directory. The subdirectory in the directory should be: - * tcl8.0.3 - * tk8.0.3 - - * itcl3.0.1 - The following examples use the command `./configure -- -prefix=/tools/...`. This will install all packages in a -directory ``/tools''. When you omit the ``--prefix''-switch then -the installation default will be the directory ``/usr/local''. - - -4.1 Installation of needed Packages -When you have not installed Tcl and the other needed -extensions, then you need to retrieve the sources from -``www.tcltk.com/itcl''. You need to `gunzip` the files and do a -`tar xf` of all these packages in one directory, let's call this -directory ``TclTk''. - From the directory ``TclTk'', you should do the following to -install the packages: - - - 3 - - - - - -% cd tcl8.0.3/unix -% ./configure --prefix=/tools/tcl8.0.3 --enable-gcc --enable- -shared -% make -% mkdir /tools/tcl8.0.3 -% make install -% cd ../../tk8.0.3/unix -% ./configure --prefix=/tools/tk8.0.3 --enable-gcc --enable- -shared -% make -% mkdir /tools/tk8.0.3 -% make install -% cd ../../itcl3.0.1 -% ./configure --prefix=/tools/itcl3.0.1 --enable-gcc --enable- -shared -% make -% mkdir /tools/itcl3.0.1 -% make install - - -4.2 Installing BlueGnu -You can now `gunzip` and `tar xf` the BlueGnu version 2.0.3 -in the directory ``TckTk''. This will create the directory -``bluegnu2.0.3''. Now do the following: - -% cd bluegnu2.0.3 -% ./configure --prefix=/tools/bluegnu2.0.3 -% make -% mkdir /tools/bluegnu2.0.3 -% make install - - This will install BlueGnu in the directories: - * /tools/bluegnu2.0.3/bin - - * /tools/bluegnu2.0.3/lib/bluegnu - - * /tools/bluegnu2.0.3/info - * /tools/bluegnu2.0.3/man - - -4.3 Using BlueGnu -When you have installed [incr Tcl] and BlueGnu and you have the -respective ``bin'' directories in your PATH variable, then you -can start running some tests. You can go into the BlueGnu -source directory ``bluegnu2.0.3/testsets/examples'' and run the -following: - - - 4 - - - - - -% bluegnu versionTcl.itcl -% bluegnu ts_001 -% bluegnu ts_002 -% bluegnu ts_003 - - The above test result should all be PASS. The following test -will give a result UNKNOWN, because no pass/fail instruction have -been given. - -% bluegnu tc001 - - The last test you can run will fail in its simple form: -% bluegnu tc002 - - But will pass if you execute the test as follows: - -% bluegnu tc002[English] - - This is because the test scripts need a test case identifier -to find the correct benchmark code. - -5 Changes - -5.1 Version 2.0.3 - -This being the first public release it is not to useful to -list all the changes. BlueGnu has been modeled after DejaGnu -and is a complete new implementation which has been tested -thoroughly. When documentation is being written more changes -will be made. An example of some of these changes as a result of -this documentation effort can be found in the test-suites ts_001, -ts_002, and ts_003. The first two are not as easy to write as -the third. The test suite ts_001 is a script implementation of -the command line: - -% cd bluegnu2.0.3/testsets -% bluegnu examples/tc002[English=B] \ -> "examples/tc002[Dutch=B]={MSG=Hallo Wereld}" -This may be useful for simple tests but when you want to -write more complex test-suite scripts you would like some more -flexibility, so two procedures were introduced, which are shown -in test-suite ts_002. This makes writing rather complex so -the procedures have become part of the procedures 'appendQueue', -'prependQueue', and 'runtest'. The resulting script is shown in -test-suit ts_003. - Changes like this will be made in the future! - - - 5 - - - - - -6 Future Enhancements - -The following enhancements are being planned: - - * Target code will be made into a class with methods - 'start', 'load', 'exit', and 'version'. Instead of the - current '_start', '_load', '_exit', - and '_version', which have been taken from DejaGnu. - * Procedures will be created that make it easy to test WEB - application from the framework. - - * Other enhancements will be made depending on the use of the - framework in testing different applications. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6 - \ No newline at end of file diff --git a/contrib/bluegnu2.0.3/README.dejagnu b/contrib/bluegnu2.0.3/README.dejagnu deleted file mode 100644 index 0e22eab..0000000 --- a/contrib/bluegnu2.0.3/README.dejagnu +++ /dev/null @@ -1,283 +0,0 @@ - DejaGnu is a framework for testing other programs. Its purpose is to -provide a single front end for all tests. Beyond this, DejaGnu offers -several advantages for testing: - - - The flexibility and consistency of the DejaGnu framework - make it easy to write tests for any program. - - - DejaGnu provides a layer of abstraction which makes all - tests (if correctly written) portable to any host or target - where a program must be tested. For instance, a test for - GDB can run (from any Unix based host) on any target - architecture supported by DejaGnu. Currently DejaGnu runs - tests on several single board computers, whose operating - software ranges from just a boot monitor to a full-fledged, - Unix-like realtime OS. - - - DejaGnu is written in expect, which in turn uses Tcl - (Tool command language). The framework comprises two parts: - the testing framework and the testsuites themselves. Tests - are usually written in expect using Tcl. - - Bugs can be reported to bug-dejagnu@prep.ai.mit.edu. - - How To Configure and Build - - To build DejaGnu, run the ``configure'' script here, e.g.: - - ./configure MYHOSTTYPE - -followed by running ``make''. (MYHOSTTYPE is a name for your host computer, -for instance "sun4". You can use the script ``config.sub'' to test whether -a name is recognized; if it is, config.sub translates it to a triplet -specifying CPU, vendor, and OS.) This is used when you plan to -configure and build in the source tree. - - If you use a separate tree for object files, (the recommended way), -then the --srcdir option must also be specified. This would also -require that the configure script be run from the top level directory. - - PATH/configure MYHOSTYPE --srcdir PATH/dejagnu - -where PATH is is the directory that the contains the sources. - - To configure it so it gets installed somewhere other than the -default of /usr/local, use the --prefix option. - - configure MYHOSTYPE --prefix [PATH] - -where PATH is the prefix used to install the programs. - - The configure testing and building will use the native compiler "cc" -on your host machine. To change which compiler gets used (like gcc) -set a the variable "CC" in your environment to point to it. - - For csh users: "setenv CC gcc" - For bourne shell users: "CC=gcc;export CC" - - Then when you compile, use "make CC=$CC". - -See etc/cfg-paper.texi, etc/configure.texi, and/or the README files in -various subdirectories, for more details. - - As DejaGnu is a Tcl program, there is nothing to build. However, the -documentation is not built by default. Use these targets: -"make info" - Convert the texinfo document to something that can - be used the GNU info program or info mode in emacs. -"make dvi" - Convert the texinfo document to something that can - be printed. This produces dvi output. -"make doc" - This builds both. -"make ps" - This converts the dvi file into postscript. This - requires a copy of dvips. -"make install" - This installs DejaGnu based on the --prefix option - when configuring. Otherwise it defaults to - /usr/local. See the DejaGnu manual for more - information on installation. - - Changes from 1.1.1 - 1. Works with (included in release) Tcl 7.3 and Expect 5.6. - 2. Much better error trapping and handling, including the - execution of sub scripts. - 3. Re-worked configuration subsystem. - 4. Default handling for testing unknown targets. - 5. New testsuite for expect and runtest. - 6. More debugging procedures. - - Changes from 1.0 - - 1. DejaGnu now conforms to POSIX 1003.3, a standard for - testing frameworks. - 2. A Tcl debugger written by Don Libes has been added. - 3. Lots of bug fixes. - - Changes from 0.9 - - 1. DejaGnu now installs itself like other utilities. - 2. 700 G++ tests are included. - 3. The bugs in the GCC tests have been fixed. - 4. Testsuites are released separately. - 5. Testsuite sources now reside with the within each tool's - source tree. - -------------------------------------------------------------------- -Here's is a posting on the Free OS testing project. (FROST) -------------------------------------------------------------------- -If you have built up your own tests for system calls, library -routines, networking protocols, or common utilities, this posting -offers you an opportunity to put them to good use. You can do a good -deed for the Linux community, the Berkeley UNIX community, and the -wider world of free software users. - -Also, if you would like to learn some good test tools and strategies, -and devote some time on a volunteer basis to writing tests -- perhaps -a couple of weeks full-time, or a couple hours per week over a period -of several months -- then here is a project you should get involved -in. - -I am helping to coordinate a test effort for Linux. In the following -four sections of this message I will describe the goals, the process, -the people trying to do it, and what you can do to help. - -Goals - - Linux and BSD share a number of libraries and utilities, both - because BSD software was ported to Linux, and because several free - software (GNU) utilities have been ported to both operating - systems. - - Linux shows startling differences and failures as you move from one - set of hardware to another. People who hope to base their own - commercial products on Linux would like to see proof that it is - robust, portable, and standard-conforming. The problem is that - cross-platform testing is very hard to do, and few decent test - suites exist either for free software or for UNIX. (Look at all the - differences you find among systems that are SVID-conforming, - particularly at higher levels such as the utilities.) - - Therefore, a number of us who are interested n Linux have decided to - enter the modern age of formal, automated software testing -- but in - a manner that is proper for the free software community. - - Using DejaGnu, a test platform developed by Cygnus Support and - placed under the GPL, we want to collect the best tests we can from - people everywhere, and integrate them into suites that any user can - download, run, and interpret with a few commands. DejaGnu already - runs under BSD, and Cygnus is porting it to Linux. - - Our goal is to test as many parts of the system as possible, - including system calls (particularly for POSIX 1003.1 compliance), - libraries in the official distribution, networking protocols, - and utilities. We need help with - - 1) integrating good tests donated by the community (and probably - written in a variety of programming languages and command - shells) into the DejaGnu framework, and - - 2) writing new tests for major functional areas for which no - adequate tests exist. - - The tests we use will be placed under the GPL and distributed by - Cygnus Support along with DejaGnu. H. J. Lu, who maintains the C - library for Linux, has offered to run the POSIX 1003.1 tests and as - many others as he can. - -Process - - First let me summarize the advantages of using DejaGnu, a free - software product that will be the umbrella for all the tests, and - then explain how we plan to conduct this project. - - Cygnus Support released DejaGnu to the public on January 3, along - with several test suites for GNU language tools. The product is - designed for portability and easy cross-platform development and - execution. It works more uniformly than typical tests using the - UNIX shell, and also supports interactive testing better than most - test platforms -- for instance, Cygnus has written over 1300 unit - tests for the gdb debugger using it. - - The implementation of DejaGnu is based on tcl and expect, two simple - existing languages for writing commands. You can develop new tests - in two major ways: by placing keyword-based comments in C source - code, or by writing tests in tcl. - - While Cygnus is still increasing their body of tests for language - tools, they are also turning their resources toward the libraries - and GNU utilities. While most of the tests are written at Cygnus, - they have reached out to communities of testers and are now porting - substantial sets of donated tests. - - We are hoping to broaden this successful use of collaboration across - user communities. We hope that suites of useful tests are sitting - in desk drawers out there. We also hope to gather and mobilize - people who appreciate the value of formal tests in legitimizing free - software, and would like to help write them. - - I am not an employee of Cygnus, but have volunteered to talk to - interested people and do an initial classification of tests, just to - offload some of this routine work from them. I will discuss all - offers with Cygnus staff to find out what is most needed and decide - which tests to incorporate into DejaGnu. There are several criteria - for choosing tests, including the degree to which an area is - covered, and its importance in the overall stability of the - operating system. Some tests may have to be rejected just because - they are hard to fit into the DejaGnu model. - -People - - Now you can find out why each of us got involved with this project. - - Cygnus writes and distributes free software, selling support as a - means to make money. The company is not directly in the business of - supporting operating systems or common UNIX utilities, so this kind - of testing is tangential to their main goals. But they may want to - support those things in the future. In any case, they would like to - see Linux do well, and this big test project will be a good - promotion for DejaGnu. - H. K. Lu, as a volunteer for Linux, has been using his own system to - implement, port, maintain, and ensure ANSI and POSIX compliance for - the C library (mostly the GNU C library along with the iostream - class from the g++ library). He is looking for ways to validate the - work that he and many other contributors have put in. - - As an editor at a publisher of computer books, my relationship to - Linux and BSD is even more distant than that of Cygnus. But we are - thinking about putting out books about Linux, from either the Linux - Documentation Project or independent authors, and would like to make - sure Linux is stable enough to be documented. The testing of - utilities is particularly important to me, because it can provide - quality assurance for our books, including the BSD version of UNIX - in a Nutshell. - -What you can do - - We ask people who have written tests in the areas I have described - to donate them to this project and see them benefit the public. - Don't just send me stuff -- write or call to discuss what you've got - in general. You also have to assign the tests to the Free Software - Foundation (a simple matter, so long as you are the owner of the - tests) so that they can be distributed under the GPL. - - Also, please don't starting flaming about the GPL. Either join our - project and donate your tests, or don't. Personally, I do not take - a side in this war. - - People who are interested in testing as a discipline, and have some - time to donate, are invited to contact me to help write tests. Tell - me: - - Your knowledge of computer languages and tools - - Previous software test efforts you have engaged in, if any - - How much time you can devote - - What functional areas you think are important and have a - particular interest in - - Cygnus staff will tell volunteers which areas need testing, and - offer guidance while you learn and apply DejaGnu. The most - important trait for the project is rigorous thinking along the lines - of software quality (so the best preparation is to have done some - formal testing before). You do not need to know any particular - language or tool; you can learn tcl or other aspects of DejaGnu - fairly quickly. - - Contact information for me is in my signature. I am at the phone - number during traditional U.S. business hours. So send mail any - time, or try calling from Monday through Friday, 9:00 AM to 5:00 PM, - Eastern Daylight Saving Time (four hours later than Greenwich Mean - Time). - - Feel free to distribute and repost this message elsewhere, in its - entirety. - ----------------------------------------------------------------------- -Andy Oram O'Reilly & Associates, Inc. andyo@ora.com - 90 Sherman Street, Cambridge, MA 02140 (617) 354-5800 - fax (617) 661-1116 ----------------------------------------------------------------------- - -There is a new listserv based mailing list for the FROST project. To -subscribe, send email to "listserv@cygnus.com" and the body should -contain "SUBSCRIBE FROST ". Messages sent to -frost@cygnus.com go to the mailing list. \ No newline at end of file diff --git a/contrib/bluegnu2.0.3/TODO.dejagnu b/contrib/bluegnu2.0.3/TODO.dejagnu deleted file mode 100644 index b22cecc..0000000 --- a/contrib/bluegnu2.0.3/TODO.dejagnu +++ /dev/null @@ -1,7 +0,0 @@ - Thu Mar 16 17:34:33 MST 1995 - -. Add more support for target boards and realtime OS's. -. Use the new expect terminal support for an "escape codes" API. -. Use expectk and write a GUI testing API, complete with - record/playback. -. Add a "testing methodologies" section to the manual. diff --git a/contrib/bluegnu2.0.3/aclocal.m4 b/contrib/bluegnu2.0.3/aclocal.m4 deleted file mode 100644 index 3483fe5..0000000 --- a/contrib/bluegnu2.0.3/aclocal.m4 +++ /dev/null @@ -1,605 +0,0 @@ -dnl This file is duplicated in four places: -dnl * gdb/aclocal.m4 -dnl * gdb/testsuite/aclocal.m4 -dnl * expect/aclocal.m4 -dnl * dejagnu/aclocal.m4 -dnl Consider modifying all copies in parallel. -dnl written by Rob Savoye for Cygnus Support -dnl CYGNUS LOCAL: This gets the right posix flag for gcc -AC_DEFUN(CY_AC_TCL_LYNX_POSIX, -[AC_REQUIRE([AC_PROG_CC])AC_REQUIRE([AC_PROG_CPP]) -AC_MSG_CHECKING([to see if this is LynxOS]) -AC_CACHE_VAL(ac_cv_os_lynx, -[AC_EGREP_CPP(yes, -[/* - * The old Lynx "cc" only defines "Lynx", but the newer one uses "__Lynx__" - */ -#if defined(__Lynx__) || defined(Lynx) -yes -#endif -], ac_cv_os_lynx=yes, ac_cv_os_lynx=no)]) -# -if test "$ac_cv_os_lynx" = "yes" ; then - AC_MSG_RESULT(yes) - AC_DEFINE(LYNX) - AC_MSG_CHECKING([whether -mposix or -X is available]) - AC_CACHE_VAL(ac_cv_c_posix_flag, - [AC_TRY_COMPILE(,[ - /* - * This flag varies depending on how old the compiler is. - * -X is for the old "cc" and "gcc" (based on 1.42). - * -mposix is for the new gcc (at least 2.5.8). - */ - #if defined(__GNUC__) && __GNUC__ >= 2 - choke me - #endif - ], ac_cv_c_posix_flag=" -mposix", ac_cv_c_posix_flag=" -X")]) - CC="$CC $ac_cv_c_posix_flag" - AC_MSG_RESULT($ac_cv_c_posix_flag) - else - AC_MSG_RESULT(no) -fi -]) -# -# Sometimes the native compiler is a bogus stub for gcc or /usr/ucb/cc. This -# makes configure think it's cross compiling. If --target wasn't used, then -# we can't configure, so something is wrong. -AC_DEFUN(CY_AC_C_CROSS, -[# If we cannot run a trivial program, we must be cross compiling. -AC_MSG_CHECKING(whether cross-compiling) -AC_CACHE_VAL(ac_cv_c_cross,[ -AC_TRY_RUN([ - main(){return(0);}], - ac_cv_c_cross=no, ac_cv_c_cross=yes, ac_cv_c_cross=yes) -]) -if test x"${target}" = x"${host}" -a x"${ac_cv_c_cross}" = x"yes"; then - dnl this hack is cause the message is so long we don't call AC_MSG_ERROR - echo "configure: error: You need to specify --target to cross compile," 1>&2; - echo " or the native compiler is broken" 1>&2; - exit 1; -else - cross_compiling=$ac_cv_c_cross - AC_MSG_RESULT($ac_cv_c_cross) -fi -]) -AC_DEFUN(CY_AC_PATH_TCLH, [ -# -# Ok, lets find the tcl source trees so we can use the headers -# Warning: transition of version 9 to 10 will break this algorithm -# because 10 sorts before 9. We also look for just tcl. We have to -# be careful that we don't match stuff like tclX by accident. -# the alternative search directory is involked by --with-tclinclude -# -no_tcl=true -AC_MSG_CHECKING(for Tcl private headers) -AC_ARG_WITH(tclinclude, [ --with-tclinclude directory where tcl private headers are], with_tclinclude=${withval}) -AC_CACHE_VAL(ac_cv_c_tclh,[ -# first check to see if --with-tclinclude was specified -if test x"${with_tclinclude}" != x ; then - if test -f ${with_tclinclude}/tclInt.h ; then - ac_cv_c_tclh=`(cd ${with_tclinclude}; pwd)` - else - AC_MSG_ERROR([${with_tclinclude} directory doesn't contain private headers]) - fi -fi -# next check in private source directory -# -# since ls returns lowest version numbers first, reverse its output -if test x"${ac_cv_c_tclh}" = x ; then - for i in \ - ${srcdir}/../tcl \ - `ls -dr ${srcdir}/../tcl[[0-9]]* 2>/dev/null` \ - ${srcdir}/../../tcl \ - `ls -dr ${srcdir}/../../tcl[[0-9]]* 2>/dev/null` \ - ${srcdir}/../../../tcl \ - `ls -dr ${srcdir}/../../../tcl[[0-9]]* 2>/dev/null ` ; do - if test -f $i/tclInt.h ; then - ac_cv_c_tclh=`(cd $i; pwd)` - break - fi - # Tcl 7.5 and greater puts headers in subdirectory. - if test -f $i/generic/tclInt.h ; then - ac_cv_c_tclh=`(cd $i; pwd)`/generic - fi - done -fi -# finally check in a few common install locations -# -# since ls returns lowest version numbers first, reverse its output -if test x"${ac_cv_c_tclh}" = x ; then - for i in \ - `ls -dr /usr/local/src/tcl[[0-9]]* 2>/dev/null` \ - `ls -dr /usr/local/lib/tcl[[0-9]]* 2>/dev/null` \ - /usr/local/src/tcl \ - /usr/local/lib/tcl \ - ${prefix}/include ; do - if test -f $i/tclInt.h ; then - ac_cv_c_tclh=`(cd $i; pwd)` - break - fi - done -fi -# see if one is installed -if test x"${ac_cv_c_tclh}" = x ; then - AC_HEADER_CHECK(tclInt.h, ac_cv_c_tclh=installed, ac_cv_c_tclh="") -fi -]) -if test x"${ac_cv_c_tclh}" = x ; then - TCLHDIR="# no Tcl private headers found" - AC_MSG_ERROR([Can't find Tcl private headers]) -fi -if test x"${ac_cv_c_tclh}" != x ; then - no_tcl="" - if test x"${ac_cv_c_tkh}" = x"installed" ; then - AC_MSG_RESULT([is installed]) - TCLHDIR="" - else - AC_MSG_RESULT([found in ${ac_cv_c_tclh}]) - # this hack is cause the TCLHDIR won't print if there is a "-I" in it. - TCLHDIR="-I${ac_cv_c_tclh}" - fi -fi - -AC_MSG_CHECKING([Tcl version]) -rm -rf tclmajor tclminor -orig_includes="$CPPFLAGS" - -if test x"${TCLHDIR}" != x ; then - CPPFLAGS="$CPPFLAGS $TCLHDIR" -fi - -AC_TRY_RUN([ -#include -#include "tcl.h" -main() { - FILE *maj = fopen("tclmajor","w"); - FILE *min = fopen("tclminor","w"); - fprintf(maj,"%d",TCL_MAJOR_VERSION); - fprintf(min,"%d",TCL_MINOR_VERSION); - fclose(maj); - fclose(min); - return 0; -}], - tclmajor=`cat tclmajor` - tclminor=`cat tclminor` - tclversion=$tclmajor.$tclminor - AC_MSG_RESULT($tclversion) - rm -f tclmajor tclminor -, - AC_MSG_RESULT([can't happen]) -, - AC_MSG_ERROR([can't be cross compiled]) -) -CPPFLAGS="${orig_includes}" - -AC_PROVIDE([$0]) -AC_SUBST(TCLHDIR) -]) -AC_DEFUN(CY_AC_PATH_TCLLIB, [ -# -# Ok, lets find the tcl library -# First, look for one uninstalled. -# the alternative search directory is invoked by --with-tcllib -# - -if test $tclmajor -ge 7 -a $tclminor -ge 4 ; then - installedtcllibroot=tcl$tclversion -else - installedtcllibroot=tcl -fi - -if test x"${no_tcl}" = x ; then - # we reset no_tcl incase something fails here - no_tcl=true - AC_ARG_WITH(tcllib, [ --with-tcllib directory where the tcl library is], - with_tcllib=${withval}) - AC_MSG_CHECKING([for Tcl library]) - AC_CACHE_VAL(ac_cv_c_tcllib,[ - # First check to see if --with-tcllib was specified. - # This requires checking for both the installed and uninstalled name-styles - # since we have no idea if it's installed or not. - if test x"${with_tcllib}" != x ; then - if test -f "${with_tcllib}/lib$installedtcllibroot.so" ; then - ac_cv_c_tcllib=`(cd ${with_tcllib}; pwd)`/lib$installedtcllibroot.so - elif test -f "${with_tcllib}/libtcl.so" ; then - ac_cv_c_tcllib=`(cd ${with_tcllib}; pwd)`/libtcl.so - # then look for a freshly built statically linked library - # if Makefile exists we assume its configured and libtcl will be built first. - elif test -f "${with_tcllib}/lib$installedtcllibroot.a" ; then - ac_cv_c_tcllib=`(cd ${with_tcllib}; pwd)`/lib$installedtcllibroot.a - elif test -f "${with_tcllib}/libtcl.a" ; then - ac_cv_c_tcllib=`(cd ${with_tcllib}; pwd)`/libtcl.a - else - AC_MSG_ERROR([${with_tcllib} directory doesn't contain libraries]) - fi - fi - # then check for a private Tcl library - # Since these are uninstalled, use the simple lib name root. - if test x"${ac_cv_c_tcllib}" = x ; then - for i in \ - ../tcl \ - `ls -dr ../tcl[[0-9]]* 2>/dev/null` \ - ../../tcl \ - `ls -dr ../../tcl[[0-9]]* 2>/dev/null` \ - ../../../tcl \ - `ls -dr ../../../tcl[[0-9]]* 2>/dev/null` ; do - # Tcl 7.5 and greater puts library in subdir. Look there first. - if test -f "$i/unix/libtcl.so" ; then - ac_cv_c_tcllib=`(cd $i; pwd)`/unix/libtcl.so - break - elif test -f "$i/unix/libtcl.a" -o -f "$i/unix/Makefile"; then - ac_cv_c_tcllib=`(cd $i; pwd)`/unix/libtcl.a - break - # look for a freshly built dynamically linked library - elif test -f "$i/libtcl.so" ; then - ac_cv_c_tcllib=`(cd $i; pwd)`/libtcl.so - break - - # then look for a freshly built statically linked library - # if Makefile exists we assume its configured and libtcl will be - # built first. - elif test -f "$i/libtcl.a" -o -f "$i/Makefile" ; then - ac_cv_c_tcllib=`(cd $i; pwd)`/libtcl.a - break - fi - done - fi - # check in a few common install locations - if test x"${ac_cv_c_tcllib}" = x ; then - for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do - # first look for a freshly built dynamically linked library - if test -f "$i/lib$installedtcllibroot.so" ; then - ac_cv_c_tcllib=`(cd $i; pwd)`/lib$installedtcllibroot.so - break - # then look for a freshly built statically linked library - # if Makefile exists we assume its configured and libtcl will be built first. - elif test -f "$i/lib$installedtcllibroot.a" -o -f "$i/Makefile" ; then - ac_cv_c_tcllib=`(cd $i; pwd)`/lib$installedtcllibroot.a - break - fi - done - fi - # check in a few other private locations - if test x"${ac_cv_c_tcllib}" = x ; then - for i in \ - ${srcdir}/../tcl \ - `ls -dr ${srcdir}/../tcl[[0-9]]* 2>/dev/null` ; do - # Tcl 7.5 and greater puts library in subdir. Look there first. - if test -f "$i/unix/libtcl.so" ; then - ac_cv_c_tcllib=`(cd $i; pwd)`/unix/libtcl.so - break - elif test -f "$i/unix/libtcl.a" -o -f "$i/unix/Makefile"; then - ac_cv_c_tcllib=`(cd $i; pwd)`/unix/libtcl.a - break - # look for a freshly built dynamically linked library - elif test -f "$i/libtcl.so" ; then - ac_cv_c_tcllib=`(cd $i; pwd)`/libtcl.so - break - - # then look for a freshly built statically linked library - # if Makefile exists we assume its configured and libtcl will be - # built first. - elif test -f "$i/libtcl.a" -o -f "$i/Makefile" ; then - ac_cv_c_tcllib=`(cd $i; pwd)`/libtcl.a - break - fi - done - fi - - # see if one is conveniently installed with the compiler - if test x"${ac_cv_c_tcllib}" = x ; then - orig_libs="$LIBS" - LIBS="$LIBS -l$installedtcllibroot -lm" - AC_TRY_RUN([ - Tcl_AppInit() - { exit(0); }], ac_cv_c_tcllib="-l$installedtcllibroot", ac_cv_c_tcllib="" - , ac_cv_c_tclib="-l$installedtcllibroot") - LIBS="${orig_libs}" - fi - ]) - if test x"${ac_cv_c_tcllib}" = x ; then - TCLLIB="# no Tcl library found" - AC_MSG_WARN(Can't find Tcl library) - else - TCLLIB=${ac_cv_c_tcllib} - AC_MSG_RESULT(found $TCLLIB) - no_tcl= - fi -fi - -AC_PROVIDE([$0]) -AC_SUBST(TCLLIB) -]) -AC_DEFUN(CY_AC_PATH_TKH, [ -# -# Ok, lets find the tk source trees so we can use the headers -# If the directory (presumably symlink) named "tk" exists, use that one -# in preference to any others. Same logic is used when choosing library -# and again with Tcl. The search order is the best place to look first, then in -# decreasing significance. The loop breaks if the trigger file is found. -# Note the gross little conversion here of srcdir by cd'ing to the found -# directory. This converts the path from a relative to an absolute, so -# recursive cache variables for the path will work right. We check all -# the possible paths in one loop rather than many seperate loops to speed -# things up. -# the alternative search directory is invoked by --with-tkinclude -# -AC_MSG_CHECKING(for Tk private headers) -AC_ARG_WITH(tkinclude, [ --with-tkinclude directory where the tk private headers are], - with_tkinclude=${withval}) -no_tk=true -AC_CACHE_VAL(ac_cv_c_tkh,[ -# first check to see if --with-tkinclude was specified -if test x"${with_tkinclude}" != x ; then - if test -f ${with_tkinclude}/tk.h ; then - ac_cv_c_tkh=`(cd ${with_tkinclude}; pwd)` - else - AC_MSG_ERROR([${with_tkinclude} directory doesn't contain private headers]) - fi -fi -# next check in private source directory -# -# since ls returns lowest version numbers first, reverse the entire list -# and search for the worst fit, overwriting it with better fits as we find them -if test x"${ac_cv_c_tkh}" = x ; then - for i in \ - ${srcdir}/../tk \ - `ls -dr ${srcdir}/../tk[[0-9]]* 2>/dev/null` \ - ${srcdir}/../../tk \ - `ls -dr ${srcdir}/../../tk[[0-9]]* 2>/dev/null` \ - ${srcdir}/../../../tk \ - `ls -dr ${srcdir}/../../../tk[[0-9]]* 2>/dev/null ` ; do - if test -f $i/tk.h ; then - ac_cv_c_tkh=`(cd $i; pwd)` - break - fi - # Tk 4.1 and greater puts this in a subdir. - if test -f $i/generic/tk.h; then - ac_cv_c_tkh=`(cd $i; pwd)`/generic - fi - done -fi -# finally check in a few common install locations -# -# since ls returns lowest version numbers first, reverse the entire list -# and search for the worst fit, overwriting it with better fits as we find them -if test x"${ac_cv_c_tkh}" = x ; then - for i in \ - `ls -dr /usr/local/src/tk[[0-9]]* 2>/dev/null` \ - `ls -dr /usr/local/lib/tk[[0-9]]* 2>/dev/null` \ - /usr/local/src/tk \ - /usr/local/lib/tk \ - ${prefix}/include ; do - if test -f $i/tk.h ; then - ac_cv_c_tkh=`(cd $i; pwd)` - break - fi - done -fi -# see if one is installed -if test x"${ac_cv_c_tkh}" = x ; then - AC_HEADER_CHECK(tk.h, ac_cv_c_tkh=installed) -fi -]) -if test x"${ac_cv_c_tkh}" != x ; then - no_tk="" - if test x"${ac_cv_c_tkh}" = x"installed" ; then - AC_MSG_RESULT([is installed]) - TKHDIR="" - else - AC_MSG_RESULT([found in $ac_cv_c_tkh]) - # this hack is cause the TKHDIR won't print if there is a "-I" in it. - TKHDIR="-I${ac_cv_c_tkh}" - fi -else - TKHDIR="# no Tk directory found" - AC_MSG_WARN([Can't find Tk private headers]) - no_tk=true -fi - -# if Tk is installed, extract the major/minor version -if test x"${no_tk}" = x ; then -AC_MSG_CHECKING([Tk version]) -rm -rf tkmajor tkminor -orig_includes="$CPPFLAGS" - -if test x"${TCLHDIR}" != x ; then - CPPFLAGS="$CPPFLAGS $TCLHDIR" -fi -if test x"${TKHDIR}" != x ; then - CPPFLAGS="$CPPFLAGS $TKHDIR" -fi -if test x"${x_includes}" != x -a x"${x_includes}" != xNONE ; then - CPPFLAGS="$CPPFLAGS -I$x_includes" -fi - -AC_TRY_RUN([ -#include -#include "tk.h" - main() { - FILE *maj = fopen("tkmajor","w"); - FILE *min = fopen("tkminor","w"); - fprintf(maj,"%d",TK_MAJOR_VERSION); - fprintf(min,"%d",TK_MINOR_VERSION); - fclose(maj); - fclose(min); - return 0; -}], - tkmajor=`cat tkmajor` - tkminor=`cat tkminor` - tkversion=$tkmajor.$tkminor - AC_MSG_RESULT($tkversion) - rm -f tkmajor tkminor -, - AC_MSG_ERROR([ -cannot compile a simple X program - suspect your xmkmf is -misconfigured and is incorrectly reporting the location of your X -include or libraries - report this to your system admin]) , - AC_MSG_ERROR([can't be cross compiled]) -) -CPPFLAGS="${orig_includes}" -fi - -AC_PROVIDE([$0]) -AC_SUBST(TKHDIR) -]) -AC_DEFUN(CY_AC_PATH_TKLIB, [ -AC_REQUIRE([CY_AC_PATH_TCL]) -# -# Ok, lets find the tk library -# First, look for the latest private (uninstalled) copy -# Notice that the destinations in backwards priority since the tests have -# no break. -# Then we look for either .a, .so, or Makefile. A Makefile is acceptable -# is it indicates the target has been configured and will (probably) -# soon be built. This allows an entire tree of Tcl software to be -# configured at once and then built. -# the alternative search directory is invoked by --with-tklib -# - -if test x"${no_tk}" = x ; then - # reset no_tk incase something fails here - no_tk="true" - - if test $tkmajor -ge 4 ; then - installedtklibroot=tk$tkversion - else - installedtkllibroot=tk - fi - - AC_ARG_WITH(tklib, [ --with-tklib directory where the tk library is], - with_tklib=${withval}) - AC_MSG_CHECKING([for Tk library]) - AC_CACHE_VAL(ac_cv_c_tklib,[ - # first check to see if --with-tklib was specified - # This requires checking for both the installed and uninstalled name-styles - # since we have no idea if it's installed or not. - if test x"${with_tklib}" != x ; then - if test -f "${with_tklib}/lib$installedtklibroot.so" ; then - ac_cv_c_tklib=`(cd ${with_tklib}; pwd)`/lib$installedtklibroot.so - no_tk="" - elif test -f "${with_tklib}/libtk.so" ; then - ac_cv_c_tklib=`(cd ${with_tklib}; pwd)`/libtk.so - no_tk="" - # then look for a freshly built statically linked library - # if Makefile exists we assume its configured and libtk will be built - elif test -f "${with_tklib}/lib$installedtklibroot.a" ; then - ac_cv_c_tklib=`(cd ${with_tklib}; pwd)`/lib$installedtklibroot.a - no_tk="" - elif test -f "${with_tklib}/libtk.a" ; then - ac_cv_c_tklib=`(cd ${with_tklib}; pwd)`/libtk.a - no_tk="" - else - AC_MSG_ERROR([${with_tklib} directory doesn't contain libraries]) - fi - fi - # then check for a private Tk library - # Since these are uninstalled, use the simple lib name root. - if test x"${ac_cv_c_tklib}" = x ; then - for i in \ - ../tk \ - `ls -dr ../tk[[0-9]]* 2>/dev/null` \ - ../../tk \ - `ls -dr ../../tk[[0-9]]* 2>/dev/null` \ - ../../../tk \ - `ls -dr ../../../tk[[0-9]]* 2>/dev/null` ; do - # Tk 4.1 and greater puts things in subdirs. Check these first. - if test -f "$i/unix/libtk.so" ; then - ac_cv_c_tklib=`(cd $i; pwd)`/unix/libtk.so - no_tk= - break - elif test -f "$i/unix/libtk.a" -o -f "$i/unix/Makefile"; then - ac_cv_c_tklib=`(cd $i; pwd)`/unix/libtk.a - no_tk= - break - # look for a freshly built dynamically linked library - elif test -f "$i/libtk.so" ; then - ac_cv_c_tklib=`(cd $i; pwd)`/libtk.so - no_tk= - break - # then look for a freshly built statically linked library - # if Makefile exists we assume its configured and libtk will be built - elif test -f "$i/libtk.a" -o -f "$i/Makefile" ; then - ac_cv_c_tklib=`(cd $i; pwd)`/libtk.a - no_tk="" - break - fi - done - fi - # finally check in a few common install locations - if test x"${ac_cv_c_tklib}" = x ; then - for i in `ls -d ${prefix}/lib /usr/local/lib 2>/dev/null` ; do - # first look for a freshly built dynamically linked library - if test -f "$i/lib$installedtklibroot.so" ; then - ac_cv_c_tklib=`(cd $i; pwd)`/lib$installedtklibroot.so - no_tk="" - break - # then look for a freshly built statically linked library - # if Makefile exists, we assume it's configured and libtcl will be built - elif test -f "$i/lib$installedtklibroot.a" -o -f "$i/Makefile" ; then - ac_cv_c_tklib=`(cd $i; pwd)`/lib$installedtklibroot.a - no_tk="" - break - fi - done - fi - # check in a few other private locations - if test x"${ac_cv_c_tklib}" = x ; then - for i in \ - ${srcdir}/../tk \ - `ls -dr ${srcdir}/../tk[[0-9]]* 2>/dev/null` ; do - # Tk 4.1 and greater puts things in subdirs. Check these first. - if test -f "$i/unix/libtk.so" ; then - ac_cv_c_tklib=`(cd $i; pwd)`/unix/libtk.so - no_tk= - break - elif test -f "$i/unix/libtk.a" -o -f "$i/unix/Makefile"; then - ac_cv_c_tcllib=`(cd $i; pwd)`/unix/libtk.a - no_tk= - break - # look for a freshly built dynamically linked library - elif test -f "$i/libtk.so" ; then - ac_cv_c_tklib=`(cd $i; pwd)`/libtk.so - no_tk="" - break - # then look for a freshly built statically linked library - # if Makefile exists, we assume it's configured and libtcl will be built - elif test -f "$i/libtk.a" -o -f "$i/Makefile" ; then - ac_cv_c_tklib=`(cd $i; pwd)`/libtk.a - no_tk="" - break - fi - done - fi - # see if one is conveniently installed with the compiler - if test x"${ac_cv_c_tklib}" = x ; then - AC_REQUIRE([AC_PATH_X]) - orig_libs="$LIBS" - LIBS="$LIBS -l$installedtklibroot $x_libraries $ac_cv_c_tcllib -lm" - AC_TRY_RUN([ - Tcl_AppInit() - { exit(0); }], ac_cv_c_tklib="-l$installedtklibroot", ac_cv_c_tklib="" - , ac_cv_c_tklib="-l$installedtklibroot") - LIBS="${orig_libs}" - fi - ]) - if test x"${ac_cv_c_tklib}" = x ; then - TKLIB="# no Tk library found" - AC_MSG_WARN(Can't find Tk library) - else - TKLIB=$ac_cv_c_tklib - AC_MSG_RESULT(found $TKLIB) - no_tk= - fi -fi -AC_PROVIDE([$0]) -AC_SUBST(TKLIB) -]) -AC_DEFUN(CY_AC_PATH_TK, [ - CY_AC_PATH_TKH - CY_AC_PATH_TKLIB -]) -AC_DEFUN(CY_AC_PATH_TCL, [ - CY_AC_PATH_TCLH - CY_AC_PATH_TCLLIB -]) diff --git a/contrib/bluegnu2.0.3/bluegnu b/contrib/bluegnu2.0.3/bluegnu deleted file mode 100755 index cbb43ea..0000000 --- a/contrib/bluegnu2.0.3/bluegnu +++ /dev/null @@ -1,136 +0,0 @@ -#! /bin/sh -# -# This application is using [incr Tcl] -# -# Copyright (C) 1998, 1999 jotOmega dsc, Inc. - -# This file is part of BlueGnu testing framework. -# It asumes that the itclsh3.0 program is on your PATH -# - -# -# Get the execution path to this script -# -execpath=`echo ${0-.} | sed -e 's@/[^/]*$@@'` - -# -# get the name by which bluegnu was invoked and extract the config triplet -# -bluegnu=`echo ${0-.} | sed -e 's@^.*/@@'` -target=`echo $bluegnu | sed -e 's/-bluegnu$//'` -if [ "$target" != bluegnu ] ; then - target="--target=${target}" -else - target="" -fi - -# -# Find the right interpreter binary to use. If a variable EXPECT exists, -# it takes precedence over all other tests. Otherwise look for a freshly -# built one, and then use one in the path. -# -if [ x"$EXPECT" != x ] ; then - expectbin=$EXPECT -else - if [ -x "$execpath/itclsh3.0" ] ; then - expectbin=$execpath/itclsh3.0 - else - expectbin=itclsh3.0 - fi -fi - -# just to be safe... -if [ -z "$expectbin" ]; then - echo "ERROR: No $expectbin shell found" - exit 1 -fi - -# -# Extract a few options from the option list. -# -verbose=0 -debug="" -for a in "$@" ; do - case $a in - -v|--v|-verb*|--verb*) verbose=`expr $verbose + 1`;; - -D0|--D0) debug="-D 0" ;; - -D1|--D1) debug="-D 1" ;; - esac -done - -if expr $verbose \> 0 \& "$DEBUG" > /dev/null ; then - echo Using $expectbin as interpreter for the BlueGnu testing framework. -fi - -# -# find bluegnu.itcl. First we look in it's installed location, otherwise -# start if from the source tree. -# -for i in $execpath/../lib/bluegnu $execpath/../lib $execpath $execpath/lib ; do - if expr $verbose \> 2 \& "$DEBUG" > /dev/null ; then - echo Looking for $i/bluegnu.itcl. - fi - if [ -f $i/bluegnu.itcl ] ; then - runpath=$i - if expr $verbose \> 0 \& "$DEBUG" > /dev/null ; then - echo Using $i/bluegnu.itcl as default main test driver - fi - break - fi -done - -# check for an environment variable -if [ x"$BLUEGNULIB" != x ] ; then - runpath=$BLUEGNULIB -else - BLUEGNULIB=$runpath; export BLUEGNULIB -fi -if expr $verbose \> 0 \& "$DEBUG" > /dev/null ; then - echo Using $BLUEGNULIB as the BlueGnu library -fi - -# -# Find the right test framework. If a variable FRAMEWORK exists, -# it takes precedence over all other frameworks. Otherwise look for the -# default one. -if [ x"$FRAMEWORK" != x ] ; then - framework=$FRAMEWORK -else - if [ -r "$runpath/bluegnu.itcl" ] ; then - framework=bluegnu.itcl - else - echo "ERROR: $runpath/bluegnu.itcl does not exist." - exit 1 - fi -fi - -if [ x"$runpath" = x ] ; then - echo "ERROR: bluegnu.itcl does not exist." - exit 1 -fi - -if [ ! -r "$runpath/$framework" ] ; then - echo "ERROR: $runpath/$framework does not exist." -else - if expr $verbose \> 0 \& "$DEBUG" > /dev/null ; then - echo "Using $runpath/$framework as main test driver" - fi -fi - -# Find Test Suite Root directory -# -if [ x"$TESTSUITEROOT" = x ] ; then - TESTSUITEROOT=`pwd`; export TESTSUITEROOT -else - cd $TESTSUITEROOT -fi -if expr $verbose \> 0 \& "$DEBUG" > /dev/null ; then - echo "Using $TESTSUITEROOT as Test Suite Directory." -fi - -# Start the BlueGnu Test Framework -# -if expr $verbose \> 2 \& "$DEBUG" > /dev/null ; then - echo Command: $expectbin $debug $runpath/$framework $target ${1+"$@"} -fi -exec $expectbin $debug $runpath/$framework $target ${1+"$@"} diff --git a/contrib/bluegnu2.0.3/bluegnutk b/contrib/bluegnu2.0.3/bluegnutk deleted file mode 100755 index e637870..0000000 --- a/contrib/bluegnu2.0.3/bluegnutk +++ /dev/null @@ -1,5 +0,0 @@ -#! /bin/ksh -# - - -exec itkwish2.2 $0.itcl $* diff --git a/contrib/bluegnu2.0.3/bluegnutk.itcl b/contrib/bluegnu2.0.3/bluegnutk.itcl deleted file mode 100644 index 92c1c87..0000000 --- a/contrib/bluegnu2.0.3/bluegnutk.itcl +++ /dev/null @@ -1,216 +0,0 @@ -# -# -# - -set szApplName [file dirname $argv0]/[file root [file tail $argv0]] - -# puts "MAIA TK application: $szApplName" - -source ${szApplName}Utils.itcl - -if [file exists ~/.[file tail ${szApplName}]rc] { - puts stderr "Using Resource ~/.[file tail ${szApplName}]rc" - if [catch {option readfile ~/.[file tail ${szApplName}]rc} szErrMsg] { - puts stderr "error in ~/.[file tail ${szApplName}]rc: $szErrMsg" - } -} elseif [file exists ${szApplName}.rc] { - puts stderr "Using Resource ${szApplName}.rc" - if [catch {option readfile ${szApplName}.rc} szErrMsg] { - puts stderr "error in ${szApplName}.rc: $szErrMsg" - } -} - -wm title . "BlueGnu Tk" -set iLabelWidth 25 - -frame .options -borderwidth 3 -pack .options -side top -fill both -expand true -# puts "grid: [grid columnconfigure .options 1 -weight 1]" - -set iRow 0 -label .options.lCmd -text "BlueGnu Command Line:" -padx 0 -width $iLabelWidth -anchor e -entry .options.cmd -relief sunken -textvariable szCommand -width 60 -set wRun [button .options.run -text "Run it" -command run] -button .options.quit -text Quit -command exit -grid .options.lCmd -row $iRow -column 0 -sticky w -grid .options.cmd -row $iRow -column 1 -columnspan 4 -sticky ew -grid .options.run -row $iRow -column 5 -sticky ew -grid .options.quit -row $iRow -column 6 -sticky ew -bind .options.cmd run -bind .options.cmd stop -focus .options.cmd - -incr iRow -set szPWD [exec /bin/sh -c pwd] -set wPWDentry [entry .options.pwdText -textvariable szPWD] -set wPWDlabel [label .options.pwdLabel -text "Current Working Dir:" -padx 0 \ - -width $iLabelWidth -anchor e] -set wPWD [menubutton .options.pwd -text "Subdirectories" \ - -menu .options.pwd.menu -relief raised] -set wPWDmenu [menu .options.pwd.menu -tearoff 0] -$wPWDmenu add command -label "." -command {setPWD "."} -$wPWDmenu add command -label ".." -command {setPWD ".."} -$wPWDmenu add command -label "dummy" -command {setPWD "dummy"} -setPWD "." -grid .options.pwdLabel -row $iRow -column 0 -sticky w -grid .options.pwdText -row $iRow -column 1 -columnspan 4 -sticky ew -grid .options.pwd -row $iRow -column 5 -columnspan 2 -sticky ew -set iRowPWD $iRow - -incr iRow -set wEXPECTentry [entry .options.expectEntry \ - -textvariable szEXPECT -state disabled] -set wEXPECTlabel [label .options.expectLabel -text env(EXPECT): \ - -padx 0 -width $iLabelWidth -anchor e] -set wEXPECT [menubutton .options.expect -text "EXPECT choices" \ - -menu .options.expect.menu -relief raised] -set wEXPECTmenu [menu .options.expect.menu -tearoff 0] -set lTesters [option get $wEXPECTmenu choices {}] -if [info exists env(EXPECT)] { - setEXPECT $env(EXPECT) - if {[lsearch -exact $lTesters $szExpect] < 0} { - $wEXPECTmenu add command -label "$szExpect" \ - -command [list setEXPECT "$szExpect"] - } -} else { - setEXPECT {} -} -foreach szTester $lTesters { - #puts "tester choice: >$szTester<" - $wEXPECTmenu add command -label "$szTester" \ - -command [list setEXPECT "$szTester"] -} -$wEXPECTmenu add command -label "" \ - -command [list setEXPECT ""] -grid .options.expectLabel -row $iRow -column 0 -sticky w -grid .options.expectEntry -row $iRow -column 1 -columnspan 4 -sticky ew -grid .options.expect -row $iRow -column 5 -columnspan 2 -sticky ew - -incr iRow -label .options.targetLabel -text Target: -padx 0 -width $iLabelWidth -anchor e -label .options.targetChoice -textvariable szTarget -relief sunken -anchor w -menubutton .options.target -text "Target choices" \ - -menu .options.target.menu -relief raised -menu .options.target.menu -tearoff 0 -set lChoices [option get .options.target.menu choices {}] -foreach szChoice $lChoices { - .options.target.menu add command -label $szChoice \ - -command [list set szTarget $szChoice] -} -.options.target.menu add command -label "" \ - -command [list set szTarget ""] -grid .options.targetLabel -row $iRow -column 0 -sticky w -grid .options.targetChoice -row $iRow -column 1 -columnspan 4 -sticky ew -padx 2 -grid .options.target -row $iRow -column 5 -columnspan 2 -sticky ew - -incr iRow -label .options.viewLabel -text view: -padx 0 -width $iLabelWidth \ - -anchor e -label .options.viewChoice -textvariable szView -relief sunken -anchor w -menubutton .options.view -text "View choices" \ - -menu .options.view.menu -relief raised -menu .options.view.menu -tearoff 0 -set lChoices [option get .options.view.menu choices {}] -foreach szChoice $lChoices { - .options.view.menu add command -label $szChoice \ - -command [list set szView $szChoice] -} -.options.view.menu add command -label "" \ - -command [list set szView ""] -grid .options.viewLabel -row $iRow -column 0 -sticky w -grid .options.viewChoice -row $iRow -column 1 -columnspan 4 -sticky ew -padx 2 -grid .options.view -row $iRow -column 5 -columnspan 2 -sticky ew - -incr iRow -label .options.xipcLabel -text XIPCINSTANCE: \ - -padx 0 -width $iLabelWidth -anchor e -label .options.xipcChoice -textvariable szXipc -relief sunken -anchor w -menubutton .options.xipc -text "XIPCINSTANCE choices" \ - -menu .options.xipc.menu -relief raised -menu .options.xipc.menu -tearoff 0 -set lChoices [option get .options.xipc.menu choices {}] -foreach szChoice $lChoices { - .options.xipc.menu add command -label $szChoice \ - -command [list set szXipc $szChoice] -} -.options.xipc.menu add command -label "" \ - -command [list set szXipc ""] -grid .options.xipcLabel -row $iRow -column 0 -sticky w -grid .options.xipcChoice -row $iRow -column 1 -columnspan 4 -sticky ew -padx 2 -grid .options.xipc -row $iRow -column 5 -columnspan 2 -sticky ew - -set szTestScript "tools/xterm" -#set szArguments "\{title=\"\$szTarget -- \$szView\"\}" - -incr iRow -set wTSentry [entry .options.tsText -textvariable szTS -state disabled] -set wTSlabel [label .options.tsLabel -text "Current Test Scripts Dir:" \ - -padx 0 \ - -width $iLabelWidth -anchor e] -set wTS [menubutton .options.ts -text "Subdirectories" \ - -menu .options.ts.menu -relief raised] -set wTSmenu [menu .options.ts.menu -tearoff 0] -$wTSmenu add command -label "." -command {setTS "."} -$wTSmenu add command -label ".." -command {setTS ".."} -setTS "." -grid .options.tsLabel -row $iRow -column 0 -sticky w -grid .options.tsText -row $iRow -column 1 -columnspan 4 -sticky ew -grid .options.ts -row $iRow -column 5 -columnspan 2 -sticky ew -set iRowTS $iRow - -incr iRow -set wTSLlabel [label .options.tslLabel -text "Selected Test Scripts:" \ - -padx 0 \ - -width $iLabelWidth -anchor e] -frame .options.lists -background blue -#grid rowconfigure .options.lists 0 -weight 1 -#grid columnconfigure .options.lists 0 -weight 1 -grid .options.lists -row $iRow -column 1 -columnspan 6 -sticky news -set wLL [scrolledListBox .options.lists.fl] -set wLR [scrolledListBox .options.lists.fr] -grid .options.tslLabel -row $iRow -column 0 -sticky wn -grid rowconfigure .options.lists 0 -weight 1 -grid columnconfigure .options.lists 0 -weight 1 -grid .options.lists.fl -row 0 -column 0 -sticky news -#grid rowconfigure .options.lists.fr 0 -weight 1 -grid columnconfigure .options.lists 1 -weight 1 -grid .options.lists.fr -row 0 -column 1 -sticky news -bind $wLR [list listTransferSelected %W $wLL] -bind $wLL [list listTransferData %W] -bind $wLL [list listTransferRemoved %W $wLR] -insertTests $wLR - -incr iRow -set wArguments [entry .options.arguments -textvariable szArguments -width 40] -label .options.argumentsLabel -text "Arguments:" -padx 0 \ - -width $iLabelWidth -anchor e -grid .options.argumentsLabel -row $iRow -column 0 -sticky w -grid .options.arguments -row $iRow -column 1 -columnspan 6 -sticky ew - -incr iRow -set wTestcase [entry .options.testcase -textvariable szTestcase -width 40] -label .options.testcaseLabel -text "Testcase ID:" -padx 0 \ - -width $iLabelWidth -anchor e -grid .options.testcaseLabel -row $iRow -column 0 -sticky w -grid .options.testcase -row $iRow -column 1 -columnspan 6 -sticky ew - -set szTestcase "" -lostSelection $wLL - -frame .txt -set wLog [text .txt.log -width 80 -height 10 -borderwidth 2 -relief raised \ - -setgrid true -yscrollcommand {.txt.scroll set}] -scrollbar .txt.scroll -command {.txt.log yview} -pack .txt.scroll -side right -fill y -pack .txt.log -side left -fill both -expand true -pack .txt -side top -fill both -expand true - -trace variable szPWD w setPWDoverwrite -trace variable szExpect w setExpect -trace variable szTarget w cmdUpdate -trace variable szView w cmdUpdate -trace variable szXipc w cmdUpdate -trace variable szTS w setTSoverwrite -trace variable szArguments w cmdUpdate -trace variable szTestcase w cmdUpdate - diff --git a/contrib/bluegnu2.0.3/bluegnutk.rc b/contrib/bluegnu2.0.3/bluegnutk.rc deleted file mode 100644 index 225ac94..0000000 --- a/contrib/bluegnu2.0.3/bluegnutk.rc +++ /dev/null @@ -1,29 +0,0 @@ -! -! This is the resource file for MAIA Tk -! - -*background: #d9d9d9 -*foreground: black -*activeBackground: #ececec -*run.activeBackground: red -*activeForeground: blue -*run.activeForeground: yellow -*selectColor: #b03060 -*selectBackground: #c3c3c3 -*troughColor: #c3c3c3 -*disabledForeground: #a3a3a3 - -*expect.menu.choices: /home/jann/tools/MAIA/bin/botester \ - /home/jann/tools/MAIA/bin/ibotester \ - /home/jann/tools/MAIA/bin/pqltester \ - /home/jann/tools/MAIA/bin/cpqltester \ - /home/jann/tools/MAIA/bin/tester \ - /home/jann/tools/bin/iexpect - -*target.menu.choices: BusObj BusObj=Atlas BusObj=Corba \ - BusObj=TTX/Atlas TTX=Atlas \ - BusObj=ICR/Atlas ICR=Corba ICR=Atlas \ - BusObj=PQL/Atlas BusObj=PQL/Corba PQL=Corba PQL=Atlas - -*view.menu.choices: testB_spr1 testB_spr2 -*xipc.menu.choices: atsqa1 atsqa2 atsqa3 atsqa4 atsqa5 atsqa6 diff --git a/contrib/bluegnu2.0.3/bluegnutkUtils.itcl b/contrib/bluegnu2.0.3/bluegnutkUtils.itcl deleted file mode 100644 index 0ed485e..0000000 --- a/contrib/bluegnu2.0.3/bluegnutkUtils.itcl +++ /dev/null @@ -1,436 +0,0 @@ -# -# -# - -# puts "MAIA TK Utilities" - -set szView [file tail $env(CLEARCASE_ROOT)] -set szXipc $env(XIPCINSTANCE) - -proc run {} { - global env - global szCommand wRun input wLog wRun - global szView szXipc - - set env(CLEARCASE_ROOT) /view/$szView - set env(XIPCINSTANCE) $szXipc - - set szCmd "xterm -sl 50000 -sb" - if {[string length $szCommand] == 0} { - set szCommand "$szCmd" - } else { - append szCmd " -e $szCommand" - } - if [catch {eval exec "$szCmd &"} input] { - $wLog insert end $input - bell - } else { - #fileevent $input readable log - $wLog insert end "$env(PS1)$szCommand &\n" - $wLog see end - #$wRun config -text Stop -command stop - } -} - -proc log {} { - global input wLog - - if [eof $input] { - stop - } else { - gets $input szLine - $wLog insert end "$szLine\n" - $wLog see end - } -} - - -proc stop {} { - global input wRun - - catch {close $input} - $wRun config -text "Run it" -command run -} - -proc cmdUpdate {name1 name2 ops} { - global szCommand szTarget szView szXipc \ - szTestScript szTestcase szArguments - global iSelect - global lTestScripts lTestcaseIDs lArguments - - switch $name1 { - szArguments { - set lArguments($iSelect) $szArguments - } - szTestcase { - set lTestcaseIDs($iSelect) $szTestcase - } - } - - set szCommand "bluegnu " - if {[string compare $szTarget ""] != 0} { - append szCommand "\"--target=$szTarget" - if {[string compare $szView ""] != 0} { - append szCommand " view=$szView" - } - if {[string compare $szXipc ""] != 0} { - append szCommand " XIPCINSTANCE=$szXipc" - } - append szCommand "\" " - } - foreach i [lsort -integer [array names lTestScripts]] { - # puts "test script index = $i" - append szCommand "\"$lTestScripts($i)" - if {[string compare $lTestcaseIDs($i) ""] !=0} { - append szCommand "\[$lTestcaseIDs($i)\]" - } - if {[string compare $lArguments($i) ""] != 0} { - #puts "szArguments: >$lArguments($i)<" - append szCommand "=$lArguments($i)" - } - append szCommand "\" " - } - #puts "szCommand: >$szCommand<" -} - -proc setPWD {dir} { - global szPWD wPWDmenu wPWDentry env - #puts "setPWD $dir:" - set szPWD $dir - #puts "szPWD:: $szPWD" - cd $szPWD - catch {setTS "."} - if {[string compare $szPWD "/"] != 0} { - set szPWD "[exec /bin/sh -c pwd]/" - regsub "/tmp_mnt" $szPWD "" szPWD - } - #puts "szPWD>: $szPWD" - $wPWDentry insert [$wPWDentry index end] \ - [string range $szPWD [$wPWDentry index end] end] - #update idletasks - $wPWDentry icursor end - - if {[$wPWDmenu index end] > 1} { - $wPWDmenu delete 2 end - } - foreach F [lsort [glob *]] { - if [file isdirectory $F] { - set szFile [file tail $F] - $wPWDmenu add command -label $szFile -command "setPWD $szFile" - } - } -} - -proc setPWDoverwrite {name1 name2 ops} { - global wPWDmenu env - catch {upvar #0 $name1 szPWD} szErrMsg - - if {[file isdirectory $szPWD]} { - trace vdelete szPWD w setPWDoverwrite - setPWD $szPWD - trace variable szPWD w setPWDoverwrite - } else { - set szDir {} - foreach F [glob -nocomplain "${szPWD}*"] { - if [file isdirectory $F] { - lappend szDir $F - } - } - # puts "szDir: >$szDir< [llength $szDir]" - if {[llength $szDir] == 1} { - set szPWD $szDir - setPWD $szPWD - } elseif {[llength $szDir] == 0} { - bell - } - } -} - -proc checkDir {szDir} { - regsub "^.*/home" $szDir "/home" szDir - return $szDir -} - -proc setTS {dir} { - global szTS szTSdir wTSmenu wTSentry env wLR - - trace vdelete szTS w setTSoverwrite - $wTSentry configure -state normal - #puts "setTS $dir: [checkDir [exec /bin/sh -c pwd]]" - if {[string compare $dir ".."] == 0} { - # puts "##szTS: >$szTS<1" - set szTStmp [file dirname $szTS] - # puts "##szTS: >[set szTStmp [file dirname $szTS]]<2" - $wTSentry delete 0 end - # puts "##szTS: >$szTS<3" - $wTSentry insert end "$szTStmp/" - } elseif {[string compare $dir "."] == 0} { - set szTStmp "." - $wTSentry delete 0 end - $wTSentry insert end "$szTStmp/" - catch {listRemoved} szErrMsg - #puts "err: $szErrMsg" - } else { - $wTSentry insert end "$dir/" - } - set szTmp [$wTSentry get] - # puts "####### TS: >[set szTmp [$wTSentry get]]<" - #puts "######szTS: >$szTS<" - catch {insertTests $wLR} - -# update idletasks -# $wTSentry icursor end - - # puts "TS menu index: [$wTSmenu index end]" - if {[$wTSmenu index end] != "none"} { - $wTSmenu delete 0 end - } - if {[string compare $szTmp "./"] != 0} { - $wTSmenu add command -label .. \ - -command "setTS .." - } - foreach F [lsort [glob -nocomplain ${szTmp}*]] { - if [file isdirectory $F] { - set szFile [file tail $F] - $wTSmenu add command -label $szFile \ - -command "setTS $szFile" - } - } - $wTSentry configure -state disabled - trace variable szTS w setTSoverwrite - # puts "TS menu end" -} - -proc setEXPECT {dir} { - global szExpect wEXPECTentry env - # puts "Set env(EXPECT) to $dir" - - trace vdelete szExpect w setExpectOverwrite - $wEXPECTentry configure -state normal - $wEXPECTentry delete 0 end - $wEXPECTentry insert end "$dir" - set szExpect $dir - $wEXPECTentry configure -state disabled - trace variable szExpect w setExpectOverwrite -} - -proc setTSoverwrite {name1 name2 ops} { - global wTSmenu env - catch {upvar #0 $name1 szTS} szErrMsg - - # puts "szTS >$szTS<" - #setTS $szTS -} - -proc setExpectOverwrite {name1 name2 ops} { - #global wEmenu env - catch {upvar #0 $name1 szExpect} szErrMsg -} - -proc setExpect {name1 name2 ops} { - global szExpect env - - if {[string length $szExpect] == 0} { - catch {unset env(EXPECT)} - } else { - set env(EXPECT) $szExpect - } -} - -proc scrollSet {wScroll geoCmd offset size} { - if {$offset != 0.0 || $size != 1.0} { - eval $geoCmd; # make sure it is visible - $wScroll set $offset $size - } else { - set manager [lindex $geoCmd 0] - $manager forget $wScroll; # hide it - } -} - -proc scrolledListBox {w args} { - frame $w -width 200 - grid rowconfigure $w 0 -weight 1 - grid columnconfigure $w 0 -weight 1 - listbox $w.list \ - -xscrollcommand [list scrollSet $w.xscroll \ - [list grid $w.xscroll -row 1 -column 0 -sticky we]] \ - -yscrollcommand [list scrollSet $w.yscroll \ - [list grid $w.yscroll -row 0 -column 1 -sticky ns]] - eval {$w.list configure} $args - scrollbar $w.xscroll -orient horizontal \ - -command [list $w.list xview] - scrollbar $w.yscroll -orient vertical \ - -command [list $w.list yview] - grid $w.list $w.yscroll -sticky news - grid $w.xscroll -sticky news - return $w.list -} - -proc listTransferSelected {w wL} { - global szTS wLR - global lTestScripts lTestcaseIDs lArguments - - set i [lindex [$w curselection] 0] - set szTest [$w get $i] - set szTestScript [file join $szTS $szTest] - # puts "selected: >$szTest<" - set i [$wL index end] - set lTestScripts($i) $szTestScript - set lTestcaseIDs($i) "" - set lArguments($i) [getArguments $szTestScript] - # puts "set lArguments($i) $lArguments($i)" - $wL insert end $szTestScript - cmdUpdate lArguments {} u -} - -proc listRemoved {} { - global lTestScripts lTestcaseIDs lArguments - global wLL szCommand - - if [catch {set jMax [$wLL index end]}] return - for {set i $jMax} {$i > 0} {incr i -1} { - catch {unset lTestScripts($i)} - catch {unset lTestcaseIDs($i)} - catch {unset lArguments($i)} - $wLL delete $i - } - set szCommand "" -} - -proc listTransferRemoved {w wL} { - global lTestScripts lTestcaseIDs lArguments - - set jMax [$w index end] - foreach i [lsort -integer -decreasing [$w curselection]] { - # puts "i = $i; jMax = $jMax" - if {$i + 1 < $jMax} { - for {set j $i} {$j < $jMax - 1} {incr j} { - set k [expr $j + 1] - # puts "j = $j; k = $k" - set lTestScripts($j) $lTestScripts($k) - set lTestcaseIDs($j) $lTestcaseIDs($k) - set lArguments($j) $lArguments($k) - unset lTestScripts($k) - unset lTestcaseIDs($k) - unset lArguments($k) - } - } else { - unset lTestScripts($i) - unset lTestcaseIDs($i) - unset lArguments($i) - } - cmdUpdate lArguments {} u - $w delete $i - } -} - -proc listTransferData {w} { - global iSelect szArguments wArguments szTestcase wTestcase - global lTestcaseIDs lArguments - - if {! [catch {set iSelect [lindex [$w curselection] 0]}]} { - if {[llength iSelect] == 1} { - selection own -command [list lostSelection $w] $w - # trace vdelete szArguments w cmdUpdate - set szArguments $lArguments($iSelect) - $wArguments configure -state normal - # trace variable szArguments w cmdUpdate - # trace vdelete szTestcase w cmdUpdate - set szTestcase $lTestcaseIDs($iSelect) - $wTestcase configure -state normal - # trace variable szTestcase w cmdUpdate - cmdUpdate lArguments {} u - } - } -} - -proc lostSelection {w} { - global wArguments wTestcase - global iSelect szArguments szTestcase - - set i [$w index active] - # $w selection clear $i - # trace vdelete szArguments w cmdUpdate - # trace vdelete szTestcase w cmdUpdate - # set szArguments "" - # set szTestcase "" - # trace variable szArguments w cmdUpdate - # trace variable szTestcase w cmdUpdate - $wArguments configure -state disabled - $wTestcase configure -state disabled -} - -proc getArguments {ts} { - if [file exists $ts] { - set F [open $ts r] - set bArg 0 - set szArgs "" - while {[gets $F szLine] >= 0} { - switch -regexp $szLine { - "Mandatory Arguments:" - - "Optional Arguments:" { - set bArg 1 - continue - } - {^# *$} { - set bArg 0 - continue - } - {^processTestScriptArgs} { - break - } - default { - if {$bArg} { - set bRepl [regsub {^# *} $szLine {} szArg] - if {! $bRepl} { - set bRepl [regsub "^\[ \t ]*set *" \ - $szLine {} szArg] - if {$bRepl} { - regsub " " $szArg "=" szArg - regsub -all {"} $szArg "" szArg - regsub -all "\{" $szArg "" szArg - regsub -all "\}" $szArg "" szArg - } - } - if {$bRepl} { - regsub { *; *#.*$} $szArg {} szArg - if {[string first " " $szArg] >= 0} { - append szArgs "\{[string trim $szArg]\} " - } else { - append szArgs "[string trim $szArg] " - } - } - } - } - } - } - close $F - return [string trim $szArgs] - } - return "" -} - -proc insertTests {w} { - global szTS - - $w delete 0 end - foreach F [lsort [glob -nocomplain ${szTS}/*]] { - if {! [file isdirectory $F]} { - switch -regexp $F { - {~$} - - {[.]sql$} - - {[.]err$} - - {[.]log$} - - {[.]out$} - - {[.]txt$} - - {tclIndex$} { - # Nothing to be done, will not be added to list - } - default { - set szFile [file tail $F] - $w insert end "$szFile" - } - } - } - } -} diff --git a/contrib/bluegnu2.0.3/config.guess b/contrib/bluegnu2.0.3/config.guess deleted file mode 100755 index afd200a..0000000 --- a/contrib/bluegnu2.0.3/config.guess +++ /dev/null @@ -1,592 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc. -# -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Written by Per Bothner . -# The master version of this file is at the FSF in /home/gd/gnu/lib. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit system type (host/target name). -# -# Only a few systems have been added to this list; please add others -# (but try to keep the structure clean). -# - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 8/24/94.) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - alpha:OSF1:[VX]*:*) - # After 1.2, OSF1 uses "V1.3" for uname -r. - # After 4.x, OSF1 uses "X4.x" for uname -r. - echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VX]//'` - exit 0 ;; - alpha:OSF1:*:*) - # 1.2 uses "1.2" for uname -r. - echo alpha-dec-osf${UNAME_RELEASE} - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-cbm-sysv4 - exit 0;; - amiga:NetBSD:*:*) - echo m68k-cbm-netbsd${UNAME_RELEASE} - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - Pyramid*:OSx*:*:*) - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - sun4*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - atari*:NetBSD:*:*) - echo m68k-atari-netbsd${UNAME_RELEASE} - exit 0 ;; - sun3*:NetBSD:*:*) - echo m68k-sun-netbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:NetBSD:*:*) - echo m68k-apple-netbsd${UNAME_RELEASE} - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - mips:*:4*:UMIPS) - echo mips-mips-riscos4sysv - exit 0 ;; - mips:*:5*:RISCos) - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`uname -p` - if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88100 ] ; then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ - -o ${TARGET_BINARY_INTERFACE}x = x ] ; then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i[34]86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - sed 's/^ //' << EOF >dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:4) - if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=4.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[3478]??:HP-UX:*:*) - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/7?? | 9000/8?[679] ) HP_ARCH=hppa1.1 ;; - 9000/8?? ) HP_ARCH=hppa1.0 ;; - esac - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - sed 's/^ //' << EOF >dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY*C90:*:*:*) - echo c90-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; - hp3[0-9][05]:NetBSD:*:*) - echo m68k-hp-netbsd${UNAME_RELEASE} - exit 0 ;; - i[34]86:BSD/386:*:* | *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:NetBSD:*:*) - echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - i*:CYGWIN*:*) - echo i386-unknown-cygwin32 - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin32 - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - *:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. - ld_help_string=`ld --help 2>&1` - if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i[345]86"; then - echo "${UNAME_MACHINE}-unknown-linux" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i[345]86linux"; then - echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i[345]86coff"; then - echo "${UNAME_MACHINE}-unknown-linuxcoff" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then - echo "${UNAME_MACHINE}-unknown-linux" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then - echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0 - elif test "${UNAME_MACHINE}" = "alpha" ; then - echo alpha-unknown-linux ; exit 0 - else - # Either a pre-BFD a.out linker (linuxoldld) or one that does not give us - # useful --help. Gcc wants to distinguish between linuxoldld and linuxaout. - test ! -d /usr/lib/ldscripts/. \ - && echo "${UNAME_MACHINE}-unknown-linuxoldld" && exit 0 - # Determine whether the default compiler is a.out or elf - cat >dummy.c </dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - fi ;; -# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions -# are messed up and put the nodename in both sysname and nodename. - i[34]86:DYNIX/ptx:4*:*) - echo i386-sequent-sysv4 - exit 0 ;; - i[34]86:*:4.*:* | i[34]86:SYSTEM_V:4.*:*) - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} - else - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - i[34]86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-unknown-sysv32 - fi - exit 0 ;; - Intel:Mach:3*:*) - echo i386-unknown-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - M680[234]0:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0) - uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3 && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m680[234]0:LynxOS:2.[23]*:*) - echo m68k-lynx-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - i[34]86:LynxOS:2.[23]*:*) - echo i386-lynx-lynxos${UNAME_RELEASE} - exit 0 ;; - TSUNAMI:LynxOS:2.[23]*:*) - echo sparc-lynx-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.[23]*:*) - echo rs6000-lynx-lynxos${UNAME_RELEASE} - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -cat >dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - printf ("%s-next-nextstep%s\n", __ARCHITECTURE__, version==2 ? "2" : "3"); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-unknown-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -#if !defined (ultrix) - printf ("vax-dec-bsd\n"); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 -rm -f dummy.c dummy - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -#echo '(Unable to guess system type)' 1>&2 - -exit 1 diff --git a/contrib/bluegnu2.0.3/configure b/contrib/bluegnu2.0.3/configure deleted file mode 100755 index 5296de2..0000000 --- a/contrib/bluegnu2.0.3/configure +++ /dev/null @@ -1,974 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.7 -# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. -# Copyright (C) 1998 jotOmega dsc, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.7" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LANG+set}" = set; then LANG=C; export LANG; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=runtest.exp - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='echo $CPP $CPPFLAGS 1>&5; -$CPP $CPPFLAGS' -ac_compile='echo ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5; -${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' -ac_link='echo ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5; -${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_CC" && ac_cv_prog_CC="cc" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.c <&5 | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 -if test $ac_cv_prog_gcc = yes; then - GCC=yes - if test "${CFLAGS+set}" != set; then - echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_prog_gcc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_gcc_g=yes -else - ac_cv_prog_gcc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6 - if test $ac_cv_prog_gcc_g = yes; then - CFLAGS="-g -O" - else - CFLAGS="-O" - fi - fi -else - GCC= - test "${CFLAGS+set}" = set || CFLAGS="-g" -fi - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - for ac_prog in ginstall installbsd scoinst install; do - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - # OSF/1 installbsd also uses dspmsg, but is usable. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_ifs" - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL="$ac_cv_path_install" - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL="$ac_install_sh" - fi -fi -echo "$ac_t""$INSTALL" 1>&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -subdirs="doc example testsuite" - - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \ - >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.7" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" - -trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@CC@%$CC%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@subdirs@%$subdirs%g - -CEOF -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust relative srcdir, etc. for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file -fi; done -rm -f conftest.subs - - - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - -if test "$no_recursion" != yes; then - - # Remove --cache-file and --srcdir arguments so they do not pile up. - ac_sub_configure_args= - ac_prev= - for ac_arg in $ac_configure_args; do - if test -n "$ac_prev"; then - ac_prev= - continue - fi - case "$ac_arg" in - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - ;; - *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; - esac - done - - for ac_config_dir in doc example testsuite; do - - # Do not complain, so a configure script can configure whichever - # parts of a large source tree are present. - if test ! -d $srcdir/$ac_config_dir; then - continue - fi - - echo configuring in $ac_config_dir - - case "$srcdir" in - .) ;; - *) - if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; - else - { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; } - fi - ;; - esac - - ac_popdir=`pwd` - cd $ac_config_dir - - case "$srcdir" in - .) # No --srcdir option. We are building in place. - ac_sub_srcdir=$srcdir ;; - /*) # Absolute path. - ac_sub_srcdir=$srcdir/$ac_config_dir ;; - *) # Relative path. - ac_sub_srcdir=../$srcdir/$ac_config_dir ;; - esac - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_sub_srcdir/configure; then - ac_sub_configure=$ac_sub_srcdir/configure - elif test -f $ac_sub_srcdir/configure.in; then - ac_sub_configure=$ac_configure - else - echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2 - ac_sub_configure= - fi - - # The recursion is here. - if test -n "$ac_sub_configure"; then - - # Make the cache file name correct relative to the subdirectory. - # A "../" for each directory in /$ac_config_dir. - ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` - case "$cache_file" in - /*) ac_sub_cache_file=$cache_file ;; - *) # Relative path. - ac_sub_cache_file="$ac_dots$cache_file" ;; - esac - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir" - # The eval makes quoting arguments work. - if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir - then : - else - { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; } - fi - fi - - cd $ac_popdir - done -fi - diff --git a/contrib/bluegnu2.0.3/configure.in b/contrib/bluegnu2.0.3/configure.in deleted file mode 100644 index 0ebdb7b..0000000 --- a/contrib/bluegnu2.0.3/configure.in +++ /dev/null @@ -1,9 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT(runtest.exp) - -AC_PROG_CC -AC_PROG_INSTALL - -AC_CONFIG_SUBDIRS(doc example testsuite) - -AC_OUTPUT(Makefile) diff --git a/contrib/bluegnu2.0.3/contents b/contrib/bluegnu2.0.3/contents deleted file mode 100644 index 8adfee3..0000000 --- a/contrib/bluegnu2.0.3/contents +++ /dev/null @@ -1,232 +0,0 @@ -total 266 --rw-r--r-- 1 janw users 5396 Sep 19 21:10 Makefile.in --rw-r--r-- 1 janw users 8202 Sep 19 21:18 README.bluegnu --rw-r--r-- 1 janw users 12903 Aug 3 1998 README.dejagnu --rw-r--r-- 1 janw users 284 Aug 3 1998 TODO.dejagnu --rw-r--r-- 1 janw users 19640 Aug 3 1998 aclocal.m4 --rwxr-xr-x 1 janw users 3323 Sep 19 15:37 bluegnu --rwxr-xr-x 1 janw users 43 Feb 11 1999 bluegnutk --rw-r--r-- 1 janw users 8456 Sep 17 18:17 bluegnutk.itcl --rw-r--r-- 1 janw users 839 Feb 11 1999 bluegnutk.rc --rw-r--r-- 1 janw users 10554 Sep 17 18:17 bluegnutkUtils.itcl --rwxr-xr-- 1 janw users 17007 Aug 3 1998 config.guess --rwxr-xr-x 1 janw users 32591 Aug 3 1998 configure --rw-r--r-- 1 janw users 179 Aug 3 1998 configure.in --rw-r--r-- 1 janw users 0 Sep 19 21:55 contents -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 contrib --rwxr-xr-x 1 janw users 2204 Aug 3 1998 dejagnu -drwxr-xr-x 2 janw users 1024 Sep 19 21:55 doc -drwxr-xr-x 3 janw users 1024 Sep 19 21:55 example --rwxr-xr-x 1 janw users 4772 Aug 3 1998 install-sh -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 lib --rwxr-xr-x 1 janw users 650 Aug 3 1998 mkinstalldirs --rwxr-xr-- 1 janw users 2102 Aug 3 1998 runtest --rwxr-xr-- 1 janw users 33061 Aug 3 1998 runtest.exp --rw-r--r-- 1 janw users 7843 Aug 3 1998 site.tmpl --rw-r--r-- 1 janw users 77247 Aug 3 1998 tcl-mode.el -drwxr-xr-x 4 janw users 1024 Sep 19 21:15 testsets -drwxr-xr-x 7 janw users 1024 Sep 19 21:55 testsuite - -contrib: -total 45 --rw-r--r-- 1 janw users 868 Aug 3 1998 README --rwxr-xr-- 1 janw users 1500 Aug 3 1998 test-g++ --rwxr-xr-- 1 janw users 8256 Aug 3 1998 test-tool --rwxr-xr-x 1 janw users 32055 Aug 3 1998 testit - -doc: -total 1867 --rw-r--r-- 1 janw users 4796 Sep 19 21:10 Makefile.in --rw-r--r-- 1 janw users 7917 Sep 19 21:10 README.tex --rw-r--r-- 1 janw users 10840 Sep 19 21:16 READMEdvi.dvi --rw-r--r-- 1 janw users 52 Sep 19 15:37 READMEdvi.tex --rw-r--r-- 1 janw users 23 Sep 19 21:10 READMEdvi.title --rw-r--r-- 1 janw users 9344 Sep 19 21:16 READMEtxt.dvi --rw-r--r-- 1 janw users 52 Sep 19 15:37 READMEtxt.tex --rwxr-xr-x 1 janw users 22137 Aug 3 1998 configure --rw-r--r-- 1 janw users 125 Aug 3 1998 configure.in --rw-r--r-- 1 janw users 3289 Sep 18 21:42 dejagnu.1 --rw-r--r-- 1 janw users 263684 Sep 19 21:52 dejagnu.dvi --rw-r--r-- 1 janw users 2041 Sep 19 21:52 dejagnu.info --rw-r--r-- 1 janw users 49656 Sep 19 21:52 dejagnu.info-1 --rw-r--r-- 1 janw users 50053 Sep 19 21:52 dejagnu.info-2 --rw-r--r-- 1 janw users 47866 Sep 19 21:52 dejagnu.info-3 --rw-r--r-- 1 janw users 651210 Sep 19 21:52 dejagnu.pdf --rw-r--r-- 1 janw users 438510 Sep 19 21:52 dejagnu.ps --rw-r--r-- 1 janw users 139117 Aug 3 1998 dejagnu.texi --rw-r--r-- 1 janw users 11008 Sep 19 21:52 notice.html --rw-r--r-- 1 janw users 78227 Sep 19 21:20 notice.pdf --rw-r--r-- 1 janw users 95621 Sep 19 21:20 notice.ps - -example: -total 29 --rw-r--r-- 1 janw users 2297 Feb 11 1999 Makefile.in -drwxr-xr-x 3 janw users 1024 Sep 19 21:55 calc --rwxr-xr-x 1 janw users 23014 Aug 3 1998 configure --rw-r--r-- 1 janw users 159 Aug 3 1998 configure.in - -example/calc: -total 37 --rw-r--r-- 1 janw users 3336 Feb 11 1999 Makefile.in --rw-r--r-- 1 janw users 416 Aug 3 1998 calc.1 --rw-r--r-- 1 janw users 1380 Aug 3 1998 calc.c --rw-r--r-- 1 janw users 225 Aug 3 1998 calc.h.in --rwxr-xr-x 1 janw users 25611 Aug 3 1998 configure --rw-r--r-- 1 janw users 363 Aug 3 1998 configure.in -drwxr-xr-x 4 janw users 1024 Sep 19 21:15 testsuite - -example/calc/testsuite: -total 2 -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 calc.test -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 config - -example/calc/testsuite/calc.test: -total 2 --rw-r--r-- 1 janw users 1151 Aug 3 1998 calc.exp - -example/calc/testsuite/config: -total 1 --rw-r--r-- 1 janw users 825 Aug 3 1998 unix.exp - -lib: -total 274 --rw-r--r-- 1 janw users 2776 Sep 18 19:53 BlueGnu_target.itcl --rw-r--r-- 1 janw users 2183 Sep 18 19:53 Default_target.itcl --rw-r--r-- 1 janw users 5795 Sep 18 19:53 Types.itcl --rw-r--r-- 1 janw users 561 Sep 17 18:18 bluegnu.itcl --rw-r--r-- 1 janw users 2959 Aug 3 1998 bug.exp --rw-r--r-- 1 janw users 5353 Aug 3 1998 debugger.exp --rw-r--r-- 1 janw users 1890 Aug 3 1998 dejagnu.itcl --rw-r--r-- 1 janw users 31724 Aug 3 1998 dejagnu.tcl --rw-r--r-- 1 janw users 27666 Aug 3 1998 dg.exp --rw-r--r-- 1 janw users 340 Aug 3 1998 foo.itcl --rw-r--r-- 1 janw users 15692 Aug 3 1998 framework.exp --rw-r--r-- 1 janw users 6926 Aug 3 1998 libgloss.exp --rw-r--r-- 1 janw users 1499 Sep 17 18:18 nonexpect.itcl --rw-r--r-- 1 janw users 22986 Aug 3 1998 remote.exp --rw-r--r-- 1 janw users 1069 Aug 3 1998 serverUtils.itcl --rw-r--r-- 1 janw users 14175 Aug 3 1998 target.exp --rw-r--r-- 1 janw users 537 Sep 17 18:18 tclIndex --rw-r--r-- 1 janw users 9084 Sep 17 18:18 testSessionApplication.itcl --rw-r--r-- 1 janw users 34819 Sep 17 18:18 testSessionClasses.itcl --rw-r--r-- 1 janw users 36461 Sep 17 18:18 testSessionFramework.itcl --rw-r--r-- 1 janw users 476 Sep 17 18:18 testSessionUtils.itcl --rw-r--r-- 1 janw users 5357 Aug 3 1998 udi.exp --rw-r--r-- 1 janw users 2923 Aug 3 1998 util-defs.exp --rw-r--r-- 1 janw users 11309 Aug 3 1998 utils.exp --rw-r--r-- 1 janw users 7377 Aug 3 1998 vrtx.exp --rw-r--r-- 1 janw users 7603 Aug 3 1998 vxworks.exp - -testsets: -total 3 -drwxr-xr-x 4 janw users 1024 Sep 19 21:15 BlueGnu -drwxr-xr-x 3 janw users 1024 Sep 19 21:15 examples --rw-r--r-- 1 janw users 190 Sep 18 19:53 tclIndex - -testsets/BlueGnu: -total 29 --rw-r--r-- 1 janw users 257 Sep 18 19:53 appendQueue.itcl --rw-r--r-- 1 janw users 4325 Sep 18 19:53 clone_output.itcl --rw-r--r-- 1 janw users 1364 Sep 18 19:53 locateFile.itcl --rw-r--r-- 1 janw users 918 Sep 18 19:53 namespaceVariables.itcl --rw-r--r-- 1 janw users 152 Sep 18 19:53 prependQueue.itcl --rw-r--r-- 1 janw users 686 Sep 18 19:53 runtest.itcl --rw-r--r-- 1 janw users 659 Sep 18 19:53 testNaming.itcl -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 ts001 -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 ts002 --rw-r--r-- 1 janw users 968 Sep 18 19:53 types.itcl --rw-r--r-- 1 janw users 13282 Sep 18 19:53 verbose.itcl - -testsets/BlueGnu/ts001: -total 1 --rw-r--r-- 1 janw users 20 Sep 18 19:53 A.itcl - -testsets/BlueGnu/ts002: -total 1 --rw-r--r-- 1 janw users 20 Sep 18 19:53 A.itcl - -testsets/examples: -total 7 -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 lib --rw-r--r-- 1 janw users 54 Sep 18 19:53 tc001 --rw-r--r-- 1 janw users 73 Sep 18 19:53 tc002 --rw-r--r-- 1 janw users 97 Sep 18 19:53 ts_001 --rw-r--r-- 1 janw users 181 Sep 18 19:53 ts_002 --rw-r--r-- 1 janw users 76 Sep 18 19:53 ts_003 --rw-r--r-- 1 janw users 228 Sep 18 19:53 versionTcl.itcl - -testsets/examples/lib: -total 2 --rw-r--r-- 1 janw users 1358 Sep 18 19:53 benchmark.itcl - -testsuite: -total 45 --rw-r--r-- 1 janw users 3155 Sep 18 20:39 Makefile.in -drwxr-xr-x 3 janw users 1024 Sep 19 21:15 T -drwxr-xr-x 3 janw users 1024 Sep 19 21:15 bluegnu.all -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 config --rwxr-xr-x 1 janw users 34637 Aug 3 1998 configure --rw-r--r-- 1 janw users 166 Aug 3 1998 configure.in -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 lib -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 tools - -testsuite/T: -total 10 --rw-r--r-- 1 janw users 232 Aug 3 1998 env.exp --rw-r--r-- 1 janw users 1355 Aug 3 1998 env.iexp --rw-r--r-- 1 janw users 129 Aug 3 1998 foo.exp -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 subT --rw-r--r-- 1 janw users 132 Aug 3 1998 test_000.exp --rw-r--r-- 1 janw users 484 Aug 3 1998 test_001.exp --rw-r--r-- 1 janw users 453 Aug 3 1998 test_002.exp --rw-r--r-- 1 janw users 55 Aug 3 1998 test_003.exp --rw-r--r-- 1 janw users 34 Aug 3 1998 test_004.exp - -testsuite/T/subT: -total 1 --rw-r--r-- 1 janw users 391 Aug 3 1998 test_002.exp - -testsuite/bluegnu.all: -total 32 --rw-r--r-- 1 janw users 2431 Aug 3 1998 clone_output.test --rw-r--r-- 1 janw users 2908 Aug 3 1998 config.test --rw-r--r-- 1 janw users 1893 Aug 3 1998 default_procs.tcl --rw-r--r-- 1 janw users 1580 Aug 3 1998 libs.exp --rw-r--r-- 1 janw users 3486 Aug 3 1998 options.exp --rw-r--r-- 1 janw users 4938 Aug 3 1998 remote.test --rw-r--r-- 1 janw users 407 Aug 3 1998 stats-sub.exp --rw-r--r-- 1 janw users 1626 Aug 3 1998 stats.exp --rw-r--r-- 1 janw users 6001 Aug 3 1998 target.test -drwxr-xr-x 4 janw users 1024 Sep 19 21:15 topdir --rw-r--r-- 1 janw users 2750 Aug 3 1998 utils.test - -testsuite/bluegnu.all/topdir: -total 2 -drwxr-xr-x 3 janw users 1024 Sep 19 21:15 subdir1 -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 subdir2 - -testsuite/bluegnu.all/topdir/subdir1: -total 3 --rw-r--r-- 1 janw users 31 Aug 3 1998 subfile1 --rw-r--r-- 1 janw users 32 Aug 3 1998 subfile2 -drwxr-xr-x 2 janw users 1024 Sep 19 21:15 subsubdir1 - -testsuite/bluegnu.all/topdir/subdir1/subsubdir1: -total 1 --rw-r--r-- 1 janw users 32 Aug 3 1998 subsubfile1 - -testsuite/bluegnu.all/topdir/subdir2: -total 1 --rw-r--r-- 1 janw users 32 Aug 3 1998 subfile2 - -testsuite/config: -total 2 --rw-r--r-- 1 janw users 2008 Aug 3 1998 default.exp - -testsuite/lib: -total 5 --rw-r--r-- 1 janw users 5114 Aug 3 1998 libsup.exp - -testsuite/tools: -total 1 --rw-r--r-- 1 janw users 609 Aug 3 1998 env.exp diff --git a/contrib/bluegnu2.0.3/contrib/README b/contrib/bluegnu2.0.3/contrib/README deleted file mode 100644 index d776f6e..0000000 --- a/contrib/bluegnu2.0.3/contrib/README +++ /dev/null @@ -1,16 +0,0 @@ -These are "user" contributed scripts that automate testing. These all -depend on using "make check", so they are included here as an aid to -helping others automate their own testing. All of these script do -report filtering on the output from DejaGnu. test-tool and test-g++ -are basically the same script. test-target is the script I use for our -quarterly release and it is the most sophisticated. It still uses -"make check" (a make target that start runtest) to produce the -results, but tests our entire tool chain for native and crosses. It -also produces a short summary report that gets emailed, as well as -summary reports. It does regression analysis using the previous test -run. testit is a very crude and simple Tk GUI for accessing all the -testing results. Hope these are helpful to anyone, I'd like to collect -more from the net as they get developed. - - - rob - - diff --git a/contrib/bluegnu2.0.3/contrib/test-g++ b/contrib/bluegnu2.0.3/contrib/test-g++ deleted file mode 100755 index 3b90e6a..0000000 --- a/contrib/bluegnu2.0.3/contrib/test-g++ +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/sh - -# Default DEVOSRCDIR -if [ "$DEVOSRCDIR" = "" ]; then - DEVOSRCDIR=$HOME/devo ; export DEVOSRCDIR -fi - -# Check DEVOSRCDIR -if [ ! -d "$DEVOSRCDIR" ]; then - echo "$0: no directory $DEVOSRCDIR" >&2 - exit 2 -fi - -# Default DEVOBINDIR -if [ "$DEVOBINDIR" = "" ]; then - CPU=`$DEVOSRCDIR/config.guess` - if [ $? != 0 ]; then - echo "$0: cannot run config.guess" >&2 - exit 2 - fi - DEVOBINDIR=$HOME/$CPU ; export DEVOBINDIR -fi - -# Check DEVOBINDIR -if [ ! -d "$DEVOBINDIR" ]; then - echo "$0: no directory $DEVOBINDIR" >&2 - exit 2 -fi - -# Default LOGDIR -if [ "$LOGDIR" = "" ]; then - LOGDIR=$HOME/logs ; export LOGDIR -fi - -# Check LOGDIR -if [ ! -d "$LOGDIR" ]; then - echo "$0: no directory $LOGDIR" >&2 - exit 2 -fi - -cd $LOGDIR || exit 2 - -sum=g++-`date '+%y%m%d'` - -$DEVOSRCDIR/dejagnu/contrib/test-tool g++ > $sum 2>&1 -status=$? - -cd $DEVOBINDIR/libg++ -make check >/tmp/clgpp$$ 2>&1 -if [ $? != 0 ]; then - cd $LOGDIR - echo "" >> $sum - echo "libg++ fails to make check:" >> $sum - tail -20 /tmp/clgpp$$ >> $sum - if [ $status = 0 ]; then - status=1 - fi -fi - -cd $DEVOBINDIR/libio -make check >/tmp/clgpp$$ 2>&1 -if [ $? != 0 ]; then - cd $LOGDIR - echo "" >> $sum - echo "libio fails to make check:" >> $sum - tail -20 /tmp/clgpp$$ >> $sum - if [ $status = 0 ]; then - status=1 - fi -fi - -cd $DEVOBINDIR/libstdc++ -make check >/tmp/clgpp$$ 2>&1 -if [ $? != 0 ]; then - cd $LOGDIR - echo "" >> $sum - echo "libstdc++ fails to make check:" >> $sum - tail -20 /tmp/clgpp$$ >> $sum - if [ $status = 0 ]; then - status=1 - fi -fi - -exit $status diff --git a/contrib/bluegnu2.0.3/contrib/test-tool b/contrib/bluegnu2.0.3/contrib/test-tool deleted file mode 100755 index 6b79352..0000000 --- a/contrib/bluegnu2.0.3/contrib/test-tool +++ /dev/null @@ -1,346 +0,0 @@ -#!/bin/sh -# This script automatically test the given tool with the tool's test cases, -# reporting anything of interest. - -# exits with 1 if there is nothing of interest -# exits with 0 if there is something interesting -# exits with 2 if an error occurred - -# Syntax: test-tool [-expectedpass] [-keepoutput] [-noupdate] g++|gcc|gdb|... -# -# -expectedpass: Turn XFAIL into "pass", XPASS into "fail". -# The default is XFAIL->fail, XPASS->pass. -# -keepoutput: Save "make check" output in test-$tool.log. -# -noupdate: Don't update log files. - -# Limitations, don't run this multiple times in one day, unless the -noupdate -# flag is given. - -# Written by Mike Stump - -expectedpass=no -keepoutput=no -update=yes -tool="" - -for arg in $* -do - case $arg in - -expectedpass) expectedpass=yes ;; - -keepoutput) keepoutput=yes ;; - -noupdate) update=no ;; - -*) - echo "Usage: [-expectedpass] [-keepoutput] [-noupdate] tool_name" >&2 - exit 2 - ;; - *) - if [ "$tool" != "" ]; then - echo "Usage: [-expectedpass] [-keepoutput] [-noupdate] tool_name" >&2 - exit 2 - fi - tool=$arg - ;; - esac -done - -# FIXME: It sure would be nice if `testdir' wasn't necessary. :-( - -if [ "$tool" = g++ ]; then - devoname=gcc - checktarget=check-g++ - testdir=. -elif [ "$tool" = gcc ]; then - devoname=gcc - checktarget=check-gcc - testdir=. -elif [ "$tool" = gdb ]; then - devoname=gdb - checktarget=check - testdir=testsuite -elif [ "$tool" = gas ]; then - devoname=gas - checktarget=check - testdir=testsuite -elif [ "$tool" = gld -o "$tool" = ld ]; then - devoname=ld - checktarget=check - testdir=. -elif [ "$tool" = binutils ]; then - devoname=binutils - checktarget=check - testdir=. -else - echo "Only gcc, g++, gdb, gas, gld, and binutils supported." >&2 - exit 2 -fi - -# Default DEVOSRCDIR -if [ "$DEVOSRCDIR" = "" ]; then - DEVOSRCDIR=$HOME/devo ; export DEVOSRCDIR -fi - -# Check DEVOSRCDIR -if [ ! -d "$DEVOSRCDIR" ]; then - echo "$0: no directory $DEVOSRCDIR" >&2 - exit 2 -fi - -# Default DEVOBINDIR -if [ "$DEVOBINDIR" = "" ]; then - CPU=`$DEVOSRCDIR/config.guess` - if [ $? != 0 ]; then - echo "$0: cannot run config.guess" >&2 - exit 2 - fi - DEVOBINDIR=$HOME/$CPU ; export DEVOBINDIR -fi - -# Check DEVOBINDIR -if [ ! -d "$DEVOBINDIR" ]; then - echo "$0: no directory $DEVOBINDIR" >&2 - exit 2 -fi - -# Specialize DEVOSRCDIR -if [ -d "$DEVOSRCDIR/$devoname" ]; then - DEVOSRCDIR=$DEVOSRCDIR/$devoname -else - echo "$0: Cannot find source directory." >&2 - exit 2 -fi - -# Default LOGDIR -if [ "$LOGDIR" = "" ]; then - LOGDIR=$HOME/logs ; export LOGDIR -fi - -# Check LOGDIR -if [ ! -d "$LOGDIR" ]; then - echo "$0: no directory $LOGDIR" >&2 - exit 2 -fi - -# Specialize DEVOBINDIR -if [ -d "$DEVOBINDIR/$devoname" ]; then - DEVOBINDIR=$DEVOBINDIR/$devoname -else - echo "$0: Cannot find binary directory." >&2 - exit 2 -fi - -# Binary directory -cd $DEVOBINDIR || exit 2 - -TMPDIR=${TMPDIR-/tmp} - -tmp=$TMPDIR/$tool-testing.$$a -tmp1=$TMPDIR/$tool-testing.$$b -tmp2=$TMPDIR/$tool-testing.$$c -now_s=$TMPDIR/$tool-testing.$$d -before_s=$TMPDIR/$tool-testing.$$e - -if [ "$keepoutput" = yes ]; then - rm -f test-$tool.log - make RUNTESTFLAGS="-v -v" $checktarget >test-$tool.log 2>&1 -else - make RUNTESTFLAGS="-v -v" $checktarget >/dev/null 2>&1 -fi - -# Check for DEJAGNU errors that prevented any output at all. -if [ ! -f $testdir/$tool.sum ]; then - echo "Tests didn't run, probably because of a framework error." - if [ "$keepoutput" = yes ]; then - echo - tail -20 test-$tool.log - else - echo "Unable to determine why. Rerun with -keepoutput." - fi - exit 2 -fi - -# Canonicalize XFAIL and XPASS so the rest of the script can ignore them. -if [ "$expectedpass" = yes ]; then - sed 's/^XFAIL/PASS(XFAIL)/; s/^XPASS/FAIL(XPASS)/' <$testdir/$tool.sum >$testdir/$tool.1.sum || exit 2 -else - sed 's/^XFAIL/FAIL(XFAIL)/; s/^XPASS/PASS(XPASS)/' <$testdir/$tool.sum >$testdir/$tool.1.sum || exit 2 -fi -mv $testdir/$tool.1.sum $testdir/$tool.sum - -todayname=`date '+%y%m%d'` -if [ "$update" = no ]; then - now=$testdir/$tool.sum - before=`ls $LOGDIR/$tool-??????.sum | tail -1` -else - mv -f $testdir/$tool.sum $LOGDIR/$tool-$todayname.sum || exit 2 - mv -f $testdir/$tool.log $LOGDIR/$tool-$todayname.log || exit 2 - - now=`ls $LOGDIR/$tool-??????.sum | tail -1` - before=`ls $LOGDIR/$tool-??????.sum | tail -2 | sed 1q` -fi -trap "rm -f $tmp $tmp1 $tmp2 $now_s $before_s" 0 1 2 3 5 9 13 15 - -if [ "$before" = "" ]; then - echo "Need previous summary to compare against." >&2 - exit 2 -fi - -# Say where the logs are stored so they appear in email messages. -echo -echo "Log files: $LOGDIR/$tool-$todayname.*" -echo - -grep '^[PFU][A-Z()]*:' | sort -t ':' +1 "$now" > "$now_s" -grep '^[PFU][A-Z()]*:' | sort -t ':' +1 "$before" > "$before_s" - -grep '^FAIL:' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1 -grep '^PASS' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -12 $tmp1 - >$tmp2 - -grep -s . $tmp2 >/dev/null -if [ $? = 0 ]; then - echo "Tests that now unexpectedly fail, but worked before:" - echo - cat $tmp2 - showchangelog=1 - echo -fi - -grep '^PASS' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1 -grep '^FAIL' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -12 $tmp1 - >$tmp2 - -grep -s . $tmp2 >/dev/null -if [ $? = 0 ]; then - echo "Tests that now work, but didn't before:" - echo - cat $tmp2 - echo -fi - -grep '^FAIL:' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1 -grep '^[PFU][A-Z()]*:' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -23 $tmp1 - >$tmp2 - -grep -s . $tmp2 >/dev/null -if [ $? = 0 ]; then - echo "New tests that unexpectedly FAIL:" - echo - cat $tmp2 - echo -fi - -grep '^PASS' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1 -grep '^[PFU][A-Z()]*:' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -23 $tmp1 - >$tmp2 - -grep -s . $tmp2 >/dev/null -if [ $? = 0 ]; then - echo "New tests that PASS:" - echo - cat $tmp2 - echo -fi - -grep '^[PFU][A-Z()]*:' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1 -grep '^PASS' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -13 $tmp1 - >$tmp2 - -grep -s . $tmp2 >/dev/null -if [ $? = 0 ]; then - echo "Old tests that passed, that have disappeared: (Eeek!)" - echo - cat $tmp2 - echo -fi - -grep '^[PFU][A-Z()]*:' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1 -grep '^FAIL' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -13 $tmp1 - >$tmp2 - -grep -s . $tmp2 >/dev/null -if [ $? = 0 ]; then - echo "Old tests that failed, that have disappeared: (Eeek!)" - echo - cat $tmp2 - echo -fi - -grep '^FAIL:' "$now_s" | sed 's/^[^:]*:[ ]*//' >$tmp1 -grep '^FAIL' "$before_s" | sed 's/^[^:]*:[ ]*//' | comm -12 $tmp1 - >$tmp2 - -grep -s . $tmp2 >/dev/null -if [ $? = 0 ]; then - echo "Tests that still don't work:" - echo - cat $tmp2 - echo -fi - -egrep '^(ERROR|WARNING):' "$now" >$tmp1 - -if grep -s . $tmp1 > /dev/null; then - echo "Errors and warnings:" - echo - cat $tmp1 - echo -fi - -if [ "$tool" = g++ ]; then - if [ -f $DEVOBINDIR/libio/run-make-check ]; then - cd $DEVOBINDIR/libio - make check >$TMPDIR/clgpp$$ 2>&1 - if [ $? != 0 ]; then - echo - echo "libio fails to make check:" - tail -20 $TMPDIR/clgpp$$ - fi - fi - if [ -f $DEVOBINDIR/libstdc++/run-make-check ]; then - cd $DEVOBINDIR/libstdc++ - make check >$TMPDIR/clgpp$$ 2>&1 - if [ $? != 0 ]; then - echo - echo "libstdc++ fails to make check:" - tail -20 $TMPDIR/clgpp$$ - fi - fi - if [ -f $DEVOBINDIR/libg++/run-make-check ]; then - cd $DEVOBINDIR/libg++ - make check >$TMPDIR/clgpp$$ 2>&1 - if [ $? != 0 ]; then - echo - echo "libg++ fails to make check:" - tail -20 $TMPDIR/clgpp$$ - fi - fi - rm -f $TMPDIR/clgpp$$ - cd $DEVOBINDIR -fi - -if [ "$devoname" != "" ]; then - if [ "$showchangelog" = 1 ]; then - echo "Here is what's new in the ChangeLog:" - echo - diff -c $LOGDIR/$devoname.ChangeLog $DEVOSRCDIR/ChangeLog - echo - if [ "$tool" = g++ ]; then - echo "Here is what's new in the cp/ChangeLog:" - echo - diff -c $LOGDIR/g++.ChangeLog $DEVOSRCDIR/cp/ChangeLog - fi - echo - fi - if [ "$update" != no ]; then - # save the old ChangeLog as a reference for next time - rm -f $LOGDIR/$devoname.ChangeLog.BAK - mv $LOGDIR/$devoname.ChangeLog $LOGDIR/$devoname.ChangeLog.BAK 2>/dev/null - cp -p $DEVOSRCDIR/ChangeLog $LOGDIR/$devoname.ChangeLog - if [ "$tool" = g++ ]; then - rm -f $LOGDIR/g++.ChangeLog.BAK - mv $LOGDIR/g++.ChangeLog $LOGDIR/g++.ChangeLog.BAK 2>/dev/null - cp -p $DEVOSRCDIR/cp/ChangeLog $LOGDIR/g++.ChangeLog - fi - fi -fi - -diff $before $now | grep -s . >/dev/null -if [ $? = 0 ]; then - echo "Details:" - echo - diff $before $now - echo -fi diff --git a/contrib/bluegnu2.0.3/contrib/testit b/contrib/bluegnu2.0.3/contrib/testit deleted file mode 100755 index e866aa6..0000000 --- a/contrib/bluegnu2.0.3/contrib/testit +++ /dev/null @@ -1,1149 +0,0 @@ -#!/usr/latest/bin/wish -f -# Program: testit -# Tcl version: 7.2 (Tcl/Tk/XF) -# Tk version: 3.5 -# XF version: 2.2 -# - - -# procedure to show window . -proc ShowWindow. {args} {# xf ignore me 7 - - # Window manager configurations - global tkVersion - wm positionfrom . user - wm sizefrom . "" - wm maxsize . 1152 900 - wm title . {xf} - - # bindings - bind . {MenuPopupPost .frame0.menubutton3.m.menu4 %X %Y} - bind . {MenuPopupRelease .frame0.menubutton3.m.menu4 %W} - - # build widget .frame0 - frame .frame0 \ - -background {white} \ - -borderwidth {2} \ - -relief {raised} - - # build widget .frame0.menubutton0 - menubutton .frame0.menubutton0 \ - -background {white} \ - -foreground {black} \ - -menu {.frame0.menubutton0.m} \ - -text {Summaries} - - # build widget .frame0.menubutton0.m - menu .frame0.menubutton0.m \ - -background {white} \ - -foreground {black} - .frame0.menubutton0.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/gcc.sum - -} \ - -label {Gcc} - .frame0.menubutton0.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/g++.sum - -} \ - -label {G++} - .frame0.menubutton0.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/gdb.sum - -} \ - -label {Gdb} - .frame0.menubutton0.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/gas.sum - -} \ - -label {Gas} - .frame0.menubutton0.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/binutils.sum - -} \ - -label {Binutils} - .frame0.menubutton0.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/runtest.sum - -} \ - -label {Runtest} - .frame0.menubutton0.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/tcl.sum - -} \ - -label {Tcl} - .frame0.menubutton0.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/expect.sum - -} \ - -label {Expect} - .frame0.menubutton0.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/libg++.sum - -} \ - -label {Libg++} - .frame0.menubutton0.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/libio.sum - -} \ - -label {Libio} - .frame0.menubutton0.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/libm.sum - -} \ - -label {Libm} - - # build widget .frame0.menubutton1 - menubutton .frame0.menubutton1 \ - -background {white} \ - -foreground {black} \ - -menu {.frame0.menubutton1.m} \ - -text {Misc} - - # build widget .frame0.menubutton1.m - menu .frame0.menubutton1.m \ - -background {white} \ - -foreground {black} - .frame0.menubutton1.m add command \ - -command {EndSrc -destroy .} \ - -label {Exit} - .frame0.menubutton1.m add command \ - -command {.frame6.frame.text2 delete 0.0 end} \ - -label {Clear window} - .frame0.menubutton1.m add command \ - -command {dialogbox} \ - -label {Editor} - .frame0.menubutton1.m add command \ - -command {.frame6.frame.text2 insert 0.0 "Top of tree is $testbase\n"} \ - -label {Show filename} - - # build widget .frame0.menubutton3 - menubutton .frame0.menubutton3 \ - -background {white} \ - -foreground {black} \ - -menu {.frame0.menubutton3.m} \ - -text {Host} - - # build widget .frame0.menubutton3.m - menu .frame0.menubutton3.m \ - -background {white} \ - -foreground {black} - .frame0.menubutton3.m add command \ - -command {set host "alpha-dec-osf1.3"} \ - -label {alpha-dec-osf1.3} - .frame0.menubutton3.m add command \ - -command {set host "hppa1.1-hp-hpux"} \ - -label {hppa1.1-hp-hpux} - .frame0.menubutton3.m add command \ - -command {set host "i386-unknown-sysv4.2"} \ - -label {i386-unknown-sysv4.2} - .frame0.menubutton3.m add command \ - -command {set host "m68k-hp-hpux"} \ - -label {m68k-hp-hpux} - .frame0.menubutton3.m add command \ - -command {set host "m68k-sun-sunos4.1.1"} \ - -label {m68k-sun-sunos4.1.1} - .frame0.menubutton3.m add command \ - -command {set host "mips-dec-ultrix4.2"} \ - -label {mips-dec-ultrix4.2} - .frame0.menubutton3.m add command \ - -command {set host "mips-sgi-irix4.0.5H"} \ - -label {mips-sgi-irix4.0.5H} - .frame0.menubutton3.m add command \ - -command {set host "rs6000-ibm-aix3.2"} \ - -label {rs6000-ibm-aix3.2} - .frame0.menubutton3.m add command \ - -command {set host "sparc-sun-solaris2.3"} \ - -label {sparc-sun-solaris2.3} - .frame0.menubutton3.m add command \ - -command {set host "sparc-sun-sunos4.1.3"} \ - -label {sparc-sun-sunos4.1.3} - - # build widget .frame0.menubutton2 - menubutton .frame0.menubutton2 \ - -background {white} \ - -foreground {black} \ - -menu {.frame0.menubutton2.m} \ - -text {Target} - - # build widget .frame0.menubutton2.m - menu .frame0.menubutton2.m \ - -background {white} \ - -foreground {black} - .frame0.menubutton2.m add command \ - -command {set target "a29k-amd-udi"} \ - -label {a29k-amd-udi} - .frame0.menubutton2.m add command \ - -command {set target "h8300-hms"} \ - -label {h8300-hms} - .frame0.menubutton2.m add command \ - -command {set target "i386-aout"} \ - -label {i386-aout} - .frame0.menubutton2.m add command \ - -command {set target "i386-lynx"} \ - -label {i386-lynx} - .frame0.menubutton2.m add command \ - -command {set target "i960-intel-nindy"} \ - -label {i960-intel-nindy} - .frame0.menubutton2.m add command \ - -command {set target "i960-vxwork"} \ - -label {i960-vxworks} - .frame0.menubutton2.m add command \ - -command {set target "m68k-aout"} \ - -label {m68k-aout} - .frame0.menubutton2.m add command \ - -command {set target "m68k-coff"} \ - -label {m68k-coff} - .frame0.menubutton2.m add command \ - -command {set target "m68k-lynx"} \ - -label {m68k-lynx} - .frame0.menubutton2.m add command \ - -command {set target "m68k-vxworks"} \ - -label {m68k-vxworks} - .frame0.menubutton2.m add command \ - -command {set target "mips-idt-ecoff"} \ - -label {mips-idt-ecoff} - .frame0.menubutton2.m add command \ - -command {set target "sh-hms"} \ - -label {sh-hms} - .frame0.menubutton2.m add command \ - -command {set target "sparc-aout"} \ - -label {sparc-aout} - .frame0.menubutton2.m add command \ - -command {set target "sparc-sun-sunos4.1.3"} \ - -label {sparc-sun-sunos4.1.3} - .frame0.menubutton2.m add command \ - -command {set target "sparc-vxworks"} \ - -label {sparc-vxworks} - .frame0.menubutton2.m add command \ - -command {set target "sparclite-aout"} \ - -label {sparclite-aout} - .frame0.menubutton2.m add command \ - -command {set target "sparclite-coff"} \ - -label {sparclite-coff} - .frame0.menubutton2.m add command \ - -command {set target "hppa1.1-hp-hpux"} \ - -label {hppa1.1-hp-hpux} - .frame0.menubutton2.m add command \ - -command {set target "i386-unknown-sysv4.2"} \ - -label {i386-unknown-sysv4.2} - .frame0.menubutton2.m add command \ - -command {set target "m68k-hp-hpux"} \ - -label {m68k-hp-hpux} - .frame0.menubutton2.m add command \ - -command {set target "m68k-sun-sunos4.1.1"} \ - -label {m68k-sun-sunos4.1.1} - .frame0.menubutton2.m add command \ - -command {set target "mips-dec-ultrix4.2"} \ - -label {mips-dec-ultrix4.2} - .frame0.menubutton2.m add command \ - -command {set target "mips-sgi-irix4.0.5H"} \ - -label {mips-sgi-irix4.0.5H} - .frame0.menubutton2.m add command \ - -command {set target "rs6000-ibm-aix3.2"} \ - -label {rs6000-ibm-aix3.2} - .frame0.menubutton2.m add command \ - -command {set target "sparc-sun-solaris2.3"} \ - -label {sparc-sun-solaris2.3} - - # build widget .frame0.menubutton9 - menubutton .frame0.menubutton9 \ - -background {white} \ - -foreground {black} \ - -menu {.frame0.menubutton9.m} \ - -text {Results} - - # build widget .frame0.menubutton9.m - menu .frame0.menubutton9.m \ - -background {white} \ - -foreground {black} - .frame0.menubutton9.m add command \ - -command {getresult $testbase/objdir/$host/$target/logs/gcc - -} \ - -label {Gcc} - .frame0.menubutton9.m add command \ - -command {getresult $testbase/objdir/$host/$target/logs/g++ - -} \ - -label {G++} - .frame0.menubutton9.m add command \ - -command {getresult $testbase/objdir/$host/$target/logs/gdb - -} \ - -label {Gdb} - .frame0.menubutton9.m add command \ - -command {getresult $testbase/objdir/$host/$target/logs/gas - -} \ - -label {Gas} - .frame0.menubutton9.m add command \ - -command {getresult $testbase/objdir/$host/$target/logs/binutils - -} \ - -label {Binutils} - .frame0.menubutton9.m add command \ - -command {getresult $testbase/objdir/$host/$target/logs/runtest -} \ - -label {Runtest} - .frame0.menubutton9.m add command \ - -command {getresult $testbase/objdir/$host/$target/logs/tcl - -} \ - -label {Tcl} - .frame0.menubutton9.m add command \ - -command {getresult $testbase/objdir/$host/$target/logs/expect - -} \ - -label {Expect} - .frame0.menubutton9.m add command \ - -command {getresult $testbase/objdir/$host/$target/logs/libg++ - -} \ - -label {Libg++} - .frame0.menubutton9.m add command \ - -command {getresult $testbase/objdir/$host/$target/logs/libio -} \ - -label {Libio} - .frame0.menubutton9.m add command \ - -command {getresult $testbase/objdir/$host/$target/logs/libm - -} \ - -label {Libm} - - # build widget .frame0.menubutton10 - menubutton .frame0.menubutton10 \ - -background {white} \ - -foreground {black} \ - -menu {.frame0.menubutton10.m} \ - -text {Logs} - - # build widget .frame0.menubutton10.m - menu .frame0.menubutton10.m \ - -background {white} \ - -foreground {black} - .frame0.menubutton10.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/gcc.log - -} \ - -label {Gcc} - .frame0.menubutton10.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/g++.log - -} \ - -label {G++} - .frame0.menubutton10.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/gdb.log - -} \ - -label {Gdb} - .frame0.menubutton10.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/gas.log - -} \ - -label {Gas} - .frame0.menubutton10.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/binutils.log - -} \ - -label {Binutils} - .frame0.menubutton10.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/runtest.log - -} \ - -label {Runtest} - .frame0.menubutton10.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/tcl.log - -} \ - -label {Tcl} - .frame0.menubutton10.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/expect.log - -} \ - -label {Expect} - .frame0.menubutton10.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/libg++.log - -} \ - -label {Libg++} - .frame0.menubutton10.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/libio.log - -} \ - -label {Libio} - .frame0.menubutton10.m add command \ - -command {loadfile $testbase/objdir/$host/$target/logs/libm.log - -} \ - -label {Libm} - - # pack widget .frame0 - pack append .frame0 \ - .frame0.menubutton0 {left frame center} \ - .frame0.menubutton1 {right frame center} \ - .frame0.menubutton3 {left frame center} \ - .frame0.menubutton2 {left frame center} \ - .frame0.menubutton9 {left frame center} \ - .frame0.menubutton10 {left frame center} - - # build widget .frame1 - frame .frame1 \ - -background {white} \ - -borderwidth {2} \ - -relief {raised} - - # build widget .frame1.message3 - message .frame1.message3 \ - -aspect {1500} \ - -background {white} \ - -borderwidth {0} \ - -foreground {black} \ - -padx {5} \ - -pady {2} \ - -relief {raised} \ - -text {sparc-sun-sunos4.1.3} \ - -textvariable {host} - - # build widget .frame1.message4 - message .frame1.message4 \ - -aspect {1500} \ - -background {white} \ - -borderwidth {0} \ - -foreground {black} \ - -padx {5} \ - -pady {2} \ - -relief {raised} \ - -text {sparc-sun-sunos4.1.3} \ - -textvariable {target} - - # pack widget .frame1 - pack append .frame1 \ - .frame1.message3 {left frame center} \ - .frame1.message4 {right frame center} - - # build widget .frame6 - frame .frame6 \ - -background {white} \ - -borderwidth {2} \ - -relief {raised} - - # build widget .frame6.frame - frame .frame6.frame \ - -background {white} \ - -relief {raised} - - # build widget .frame6.frame.scrollbar1 - scrollbar .frame6.frame.scrollbar1 \ - -background {white} \ - -command {.frame6.frame.text2 yview} \ - -foreground {black} \ - -relief {raised} - - # build widget .frame6.frame.text2 - text .frame6.frame.text2 \ - -background {white} \ - -borderwidth {2} \ - -foreground {black} \ - -relief {raised} \ - -wrap {word} \ - -yscrollcommand {.frame6.frame.scrollbar1 set} - - # pack widget .frame6.frame - pack append .frame6.frame \ - .frame6.frame.scrollbar1 {left frame center filly} \ - .frame6.frame.text2 {top frame center expand fill} - - # pack widget .frame6 - pack append .frame6 \ - .frame6.frame {top frame center fill} - - # pack widget . - pack append . \ - .frame0 {top frame center fillx} \ - .frame1 {bottom frame center fillx} \ - .frame6 {top frame center expand fill} - - .frame6.frame.text2 insert end {} - - - - if {"[info procs XFEdit]" != ""} { - catch "XFMiscBindWidgetTree ." - after 2 "catch {XFEditSetShowWindows}" - } -} - - -# Procedure: Alias -if {"[info procs Alias]" == ""} { -proc Alias { args} { -# xf ignore me 7 -########## -# Procedure: Alias -# Description: establish an alias for a procedure -# Arguments: args - no argument means that a list of all aliases -# is returned. Otherwise the first parameter is -# the alias name, and the second parameter is -# the procedure that is aliased. -# Returns: nothing, the command that is bound to the alias or a -# list of all aliases - command pairs. -# Sideeffects: internalAliasList is updated, and the alias -# proc is inserted -########## - global internalAliasList - - if {[llength $args] == 0} { - return $internalAliasList - } { - if {[llength $args] == 1} { - set xfTmpIndex [lsearch $internalAliasList "[lindex $args 0] *"] - if {$xfTmpIndex != -1} { - return [lindex [lindex $internalAliasList $xfTmpIndex] 1] - } - } { - if {[llength $args] == 2} { - eval "proc [lindex $args 0] {args} {#xf ignore me 4 -return \[eval \"[lindex $args 1] \$args\"\]}" - set xfTmpIndex [lsearch $internalAliasList "[lindex $args 0] *"] - if {$xfTmpIndex != -1} { - set internalAliasList [lreplace $internalAliasList $xfTmpIndex $xfTmpIndex "[lindex $args 0] [lindex $args 1]"] - } { - lappend internalAliasList "[lindex $args 0] [lindex $args 1]" - } - } { - error "Alias: wrong number or args: $args" - } - } - } -} -} - - -# Procedure: GetSelection -if {"[info procs GetSelection]" == ""} { -proc GetSelection {} { -# xf ignore me 7 -########## -# Procedure: GetSelection -# Description: get current selection -# Arguments: none -# Returns: none -# Sideeffects: none -########## - - # the save way - set xfSelection "" - catch "selection get" xfSelection - if {"$xfSelection" == "selection doesn't exist or form \"STRING\" not defined"} { - return "" - } { - return $xfSelection - } -} -} - - -# Procedure: MenuPopupAdd -if {"[info procs MenuPopupAdd]" == ""} { -proc MenuPopupAdd { xfW xfButton xfMenu {xfModifier ""} {xfCanvasTag ""}} { -# xf ignore me 7 -# the popup menu handling is from (I already gave up with popup handling :-): -# -# Copyright 1991,1992 by James Noble. -# Everyone is granted permission to copy, modify and redistribute. -# This notice must be preserved on all copies or derivates. -# -########## -# Procedure: MenuPopupAdd -# Description: attach a popup menu to widget -# Arguments: xfW - the widget -# xfButton - the button we use -# xfMenu - the menu to attach -# {xfModifier} - a optional modifier -# {xfCanvasTag} - a canvas tagOrId -# Returns: none -# Sideeffects: none -########## - global tk_popupPriv - - set tk_popupPriv($xfMenu,focus) "" - set tk_popupPriv($xfMenu,grab) "" - if {"$xfModifier" != ""} { - set press "$xfModifier-" - set motion "$xfModifier-" - set release "Any-" - } { - set press "" - set motion "" - set release "" - } - - bind $xfMenu "<${motion}B${xfButton}-Motion>" "MenuPopupMotion $xfMenu %W %X %Y" - bind $xfMenu "<${release}ButtonRelease-${xfButton}>" "MenuPopupRelease $xfMenu %W" - if {"$xfCanvasTag" == ""} { - bind $xfW "<${press}ButtonPress-${xfButton}>" "MenuPopupPost $xfMenu %X %Y" - bind $xfW "<${release}ButtonRelease-${xfButton}>" "MenuPopupRelease $xfMenu %W" - } { - $xfW bind $xfCanvasTag "<${press}ButtonPress-${xfButton}>" "MenuPopupPost $xfMenu %X %Y" - $xfW bind $xfCanvasTag "<${release}ButtonRelease-${xfButton}>" "MenuPopupRelease $xfMenu %W" - } -} -} - - -# Procedure: MenuPopupMotion -if {"[info procs MenuPopupMotion]" == ""} { -proc MenuPopupMotion { xfMenu xfW xfX xfY} { -# xf ignore me 7 -########## -# Procedure: MenuPopupMotion -# Description: handle the popup menu motion -# Arguments: xfMenu - the topmost menu -# xfW - the menu -# xfX - the root x coordinate -# xfY - the root x coordinate -# Returns: none -# Sideeffects: none -########## - global tk_popupPriv - - if {"[info commands $xfW]" != "" && [winfo ismapped $xfW] && - "[winfo class $xfW]" == "Menu" && - [info exists tk_popupPriv($xfMenu,focus)] && - "$tk_popupPriv($xfMenu,focus)" != "" && - [info exists tk_popupPriv($xfMenu,grab)] && - "$tk_popupPriv($xfMenu,grab)" != ""} { - set xfPopMinX [winfo rootx $xfW] - set xfPopMaxX [expr $xfPopMinX+[winfo width $xfW]] - if {$xfX >= $xfPopMinX && $xfX <= $xfPopMaxX} { - $xfW activate @[expr $xfY-[winfo rooty $xfW]] - if {![catch "$xfW entryconfig @[expr $xfY-[winfo rooty $xfW]] -menu" result]} { - if {"[lindex $result 4]" != ""} { - foreach binding [bind $xfMenu] { - bind [lindex $result 4] $binding [bind $xfMenu $binding] - } - } - } - } { - $xfW activate none - } - } -} -} - - -# Procedure: MenuPopupPost -if {"[info procs MenuPopupPost]" == ""} { -proc MenuPopupPost { xfMenu xfX xfY} { -# xf ignore me 7 -########## -# Procedure: MenuPopupPost -# Description: post the popup menu -# Arguments: xfMenu - the menu -# xfX - the root x coordinate -# xfY - the root x coordinate -# Returns: none -# Sideeffects: none -########## - global tk_popupPriv - - if {"[info commands $xfMenu]" != ""} { - if {![info exists tk_popupPriv($xfMenu,focus)]} { - set tk_popupPriv($xfMenu,focus) [focus] - } { - if {"$tk_popupPriv($xfMenu,focus)" == ""} { - set tk_popupPriv($xfMenu,focus) [focus] - } - } - set tk_popupPriv($xfMenu,grab) $xfMenu - - catch "$xfMenu activate none" - catch "$xfMenu post $xfX $xfY" - catch "focus $xfMenu" - catch "grab -global $xfMenu" - } -} -} - - -# Procedure: MenuPopupRelease -if {"[info procs MenuPopupRelease]" == ""} { -proc MenuPopupRelease { xfMenu xfW} { -# xf ignore me 7 -########## -# Procedure: MenuPopupRelease -# Description: remove the popup menu -# Arguments: xfMenu - the topmost menu widget -# xfW - the menu widget -# Returns: none -# Sideeffects: none -########## - global tk_popupPriv - global tkVersion - - if {"[info commands $xfW]" != "" && [winfo ismapped $xfW] && - "[winfo class $xfW]" == "Menu" && - [info exists tk_popupPriv($xfMenu,focus)] && - "$tk_popupPriv($xfMenu,focus)" != "" && - [info exists tk_popupPriv($xfMenu,grab)] && - "$tk_popupPriv($xfMenu,grab)" != ""} { - if {$tkVersion >= 3.0} { - catch "grab release $tk_popupPriv($xfMenu,grab)" - } { - catch "grab none" - } - catch "focus $tk_popupPriv($xfMenu,focus)" - set tk_popupPriv($xfMenu,focus) "" - set tk_popupPriv($xfMenu,grab) "" - if {"[$xfW index active]" != "none"} { - $xfW invoke active; catch "$xfMenu unpost" - } - } - catch "$xfMenu unpost" -} -} - - -# Procedure: NoFunction -if {"[info procs NoFunction]" == ""} { -proc NoFunction { args} { -# xf ignore me 7 -########## -# Procedure: NoFunction -# Description: do nothing (especially with scales and scrollbars) -# Arguments: args - a number of ignored parameters -# Returns: none -# Sideeffects: none -########## -} -} - - -# Procedure: SN -if {"[info procs SN]" == ""} { -proc SN { {xfName ""}} { -# xf ignore me 7 -########## -# Procedure: SN -# Description: map a symbolic name to the widget path -# Arguments: xfName -# Returns: the symbolic name -# Sideeffects: none -########## - - SymbolicName $xfName -} -} - - -# Procedure: SymbolicName -if {"[info procs SymbolicName]" == ""} { -proc SymbolicName { {xfName ""}} { -# xf ignore me 7 -########## -# Procedure: SymbolicName -# Description: map a symbolic name to the widget path -# Arguments: xfName -# Returns: the symbolic name -# Sideeffects: none -########## - - global symbolicName - - if {"$xfName" != ""} { - set xfArrayName "" - append xfArrayName symbolicName ( $xfName ) - if {![catch "set \"$xfArrayName\"" xfValue]} { - return $xfValue - } { - if {"[info commands XFProcError]" != ""} { - XFProcError "Unknown symbolic name:\n$xfName" - } { - puts stderr "XF error: unknown symbolic name:\n$xfName" - } - } - } - return "" -} -} - - -# Procedure: Unalias -if {"[info procs Unalias]" == ""} { -proc Unalias { aliasName} { -# xf ignore me 7 -########## -# Procedure: Unalias -# Description: remove an alias for a procedure -# Arguments: aliasName - the alias name to remove -# Returns: none -# Sideeffects: internalAliasList is updated, and the alias -# proc is removed -########## - global internalAliasList - - set xfIndex [lsearch $internalAliasList "$aliasName *"] - if {$xfIndex != -1} { - rename $aliasName "" - set internalAliasList [lreplace $internalAliasList $xfIndex $xfIndex] - } -} -} - - -# Procedure: getbase -proc getbase {} { - global env - global testbase - if [info exists env(TESTBASE)] then { - set testbase $env(TESTBASE) - } else { - set testbase /lisa/test/rob - } - return $testbase -} - - -# Procedure: getresult -proc getresult { name} { -set tmp "[lsort [glob -nocomplain $name-results-??????-????]]" -set tmp [lindex $tmp [expr [llength $tmp] - 1]] -if [string match "" $tmp] then { - .frame6.frame.text2 delete 0.0 end - .frame6.frame.text2 insert 0.0 "Couldn't find results for: $name\n" - return -} else { - return [loadfile $tmp] -} -} - -# Procedure: dialogbox -proc dialogbox {} { - set w .frame6.top2 - catch {destroy $w} - catch {destroy $w.e1} - toplevel $w -# dpos $w - wm title $w "Change Editor" - wm iconname $w "Entries" - message $w.msg -font -Adobe-times-medium-r-normal--*-180* -aspect 200 \ - -text "Hey Now. Click the \"OK\" button when you've seen enough." - frame $w.frame -borderwidth 10 - button $w.ok -text OK -command "destroy $w" - pack $w.msg $w.frame $w.ok -side top -fill both - - entry $w.frame.e1 -relief sunken -textvariable editor - pack $w.frame.e1 -side top -pady 5 -fill x - bind $w.frame.e1 "destroy $w" -} - -# Procedure: loadfile -proc loadfile { name} { -if ![file exists $name] then { - .frame6.frame.text2 delete 0.0 end - .frame6.frame.text2 insert 0.0 "Couldn't find:\t$name\n" - return -} - -global editor -if [info exists editor] then { - if ![string match "" $editor] then { - catch "exec $editor $name&" tmp - if [info exists tmp] then { - .frame6.frame.text2 delete 0.0 end - .frame6.frame.text2 insert 0.0 "Editor returned $tmp\n" - } - } -} -.frame6.frame.text2 delete 0.0 end -set fd [open $name r] -while { [gets $fd line]>=0 } { -.frame6.frame.text2 insert end "$line\n" -.frame6.frame.text2 mark set insert 0.0 -} -close $fd -unset fd -} - - - -# application parsing procedure -proc XFLocalParseAppDefs {xfAppDefFile} { - global xfAppDefaults - - # basically from: Michael Moore - if {[file exists $xfAppDefFile] && - [file readable $xfAppDefFile] && - "[file type $xfAppDefFile]" == "link"} { - catch "file type $xfAppDefFile" xfType - while {"$xfType" == "link"} { - if {[catch "file readlink $xfAppDefFile" xfAppDefFile]} { - return - } - catch "file type $xfAppDefFile" xfType - } - } - if {!("$xfAppDefFile" != "" && - [file exists $xfAppDefFile] && - [file readable $xfAppDefFile] && - "[file type $xfAppDefFile]" == "file")} { - return - } - if {![catch "open $xfAppDefFile r" xfResult]} { - set xfAppFileContents [read $xfResult] - close $xfResult - foreach line [split $xfAppFileContents "\n"] { - # backup indicates how far to backup. It applies to the - # situation where a resource name ends in . and when it - # ends in *. In the second case you want to keep the * - # in the widget name for pattern matching, but you want - # to get rid of the . if it is the end of the name. - set backup -2 - set line [string trim $line] - if {[string index $line 0] == "#" || "$line" == ""} { - # skip comments and empty lines - continue - } - set list [split $line ":"] - set resource [string trim [lindex $list 0]] - set i [string last "." $resource] - set j [string last "*" $resource] - if {$j > $i} { - set i $j - set backup -1 - } - incr i - set name [string range $resource $i end] - incr i $backup - set widname [string range $resource 0 $i] - set value [string trim [lindex $list 1]] - if {"$widname" != "" && "$widname" != "*"} { - # insert the widget and resourcename to the application - # defaults list. - if {![info exists xfAppDefaults]} { - set xfAppDefaults "" - } - lappend xfAppDefaults [list $widname [string tolower $name] $value] - } - } - } -} - -# application loading procedure -proc XFLocalLoadAppDefs {{xfClasses ""} {xfPriority "startupFile"} {xfAppDefFile ""}} { - global env - - if {"$xfAppDefFile" == ""} { - set xfFileList "" - if {[info exists env(XUSERFILESEARCHPATH)]} { - append xfFileList [split $env(XUSERFILESEARCHPATH) :] - } - if {[info exists env(XAPPLRESDIR)]} { - append xfFileList [split $env(XAPPLRESDIR) :] - } - if {[info exists env(XFILESEARCHPATH)]} { - append xfFileList [split $env(XFILESEARCHPATH) :] - } - append xfFileList " /usr/lib/X11/app-defaults" - append xfFileList " /usr/X11/lib/X11/app-defaults" - - foreach xfCounter1 $xfClasses { - foreach xfCounter2 $xfFileList { - set xfPathName $xfCounter2 - if {[regsub -all "%N" "$xfPathName" "$xfCounter1" xfResult]} { - set xfPathName $xfResult - } - if {[regsub -all "%T" "$xfPathName" "app-defaults" xfResult]} { - set xfPathName $xfResult - } - if {[regsub -all "%S" "$xfPathName" "" xfResult]} { - set xfPathName $xfResult - } - if {[regsub -all "%C" "$xfPathName" "" xfResult]} { - set xfPathName $xfResult - } - if {[file exists $xfPathName] && - [file readable $xfPathName] && - ("[file type $xfPathName]" == "file" || - "[file type $xfPathName]" == "link")} { - catch "option readfile $xfPathName $xfPriority" - if {"[info commands XFParseAppDefs]" != ""} { - XFParseAppDefs $xfPathName - } { - if {"[info commands XFLocalParseAppDefs]" != ""} { - XFLocalParseAppDefs $xfPathName - } - } - } { - if {[file exists $xfCounter2/$xfCounter1] && - [file readable $xfCounter2/$xfCounter1] && - ("[file type $xfCounter2/$xfCounter1]" == "file" || - "[file type $xfCounter2/$xfCounter1]" == "link")} { - catch "option readfile $xfCounter2/$xfCounter1 $xfPriority" - if {"[info commands XFParseAppDefs]" != ""} { - XFParseAppDefs $xfCounter2/$xfCounter1 - } { - if {"[info commands XFLocalParseAppDefs]" != ""} { - XFLocalParseAppDefs $xfCounter2/$xfCounter1 - } - } - } - } - } - } - } { - # load a specific application defaults file - if {[file exists $xfAppDefFile] && - [file readable $xfAppDefFile] && - ("[file type $xfAppDefFile]" == "file" || - "[file type $xfAppDefFile]" == "link")} { - catch "option readfile $xfAppDefFile $xfPriority" - if {"[info commands XFParseAppDefs]" != ""} { - XFParseAppDefs $xfAppDefFile - } { - if {"[info commands XFLocalParseAppDefs]" != ""} { - XFLocalParseAppDefs $xfAppDefFile - } - } - } - } -} - -# application setting procedure -proc XFLocalSetAppDefs {{xfWidgetPath "."}} { - global xfAppDefaults - - if {![info exists xfAppDefaults]} { - return - } - foreach xfCounter $xfAppDefaults { - if {"$xfCounter" == ""} { - break - } - set widname [lindex $xfCounter 0] - if {[string match $widname ${xfWidgetPath}] || - [string match "${xfWidgetPath}*" $widname]} { - set name [string tolower [lindex $xfCounter 1]] - set value [lindex $xfCounter 2] - # Now lets see how many tcl commands match the name - # pattern specified. - set widlist [info command $widname] - if {"$widlist" != ""} { - foreach widget $widlist { - # make sure this command is a widget. - if {![catch "winfo id $widget"] && - [string match "${xfWidgetPath}*" $widget]} { - catch "$widget configure -$name $value" - } - } - } - } - } -} - - - -# startup source -proc StartupSrc {args} { -global testbase -global hostlist -global targlist -global host - -set host [exec config.guess] -set target $host -} - - -# end source -proc EndSrc {} { -.frame6.frame.text2 delete 0.0 end -} - -# startup source -StartupSrc - -# initialize global variables -global {editor} -set {editor} {} -global {fsBox} -set {fsBox(activeBackground)} {} -set {fsBox(activeForeground)} {} -set {fsBox(all)} {0} -set {fsBox(background)} {} -set {fsBox(button)} {0} -set {fsBox(extensions)} {0} -set {fsBox(font)} {} -set {fsBox(foreground)} {} -set {fsBox(internalPath)} {/offsite/rob/DejaGnu/devo/dejagnu} -set {fsBox(name)} {} -set {fsBox(path)} {/offsite/rob/DejaGnu/devo/dejagnu} -set {fsBox(pattern)} {*} -set {fsBox(scrollActiveForeground)} {} -set {fsBox(scrollBackground)} {} -set {fsBox(scrollForeground)} {} -set {fsBox(scrollSide)} {left} -set {fsBox(showPixmap)} {0} -global {host} -set {host} {sparc-sun-sunos4.1.3} -global {result} -set {result} {can't read "editor": no such variable} -global {target} -set {target} {sparc-sun-sunos4.1.3} -global {testbase} -set {testbase} {/lisa/test/rob} - -# please don't modify the following -# variables. They are needed by xf. -global {autoLoadList} -set {autoLoadList(testit)} {0} -global {internalAliasList} -set {internalAliasList} {} -global {moduleList} -set {moduleList(testit)} {} -global {preloadList} -set {preloadList(xfInternal)} {} -global {symbolicName} -set {symbolicName(binutils)} {.frame0.menubutton7} -set {symbolicName(dialogbox)} {.top2} -set {symbolicName(editor)} {.top2.entry4} -set {symbolicName(g++)} {.frame0.menubutton4} -set {symbolicName(gas)} {.frame0.menubutton6} -set {symbolicName(gdb)} {.frame0.menubutton5} -set {symbolicName(host)} {.frame0.menubutton3.m} -set {symbolicName(hostlist)} {.frame0.menubutton3} -set {symbolicName(logs)} {.frame0.menubutton10} -set {symbolicName(misc)} {.frame0.menubutton1} -set {symbolicName(ok)} {.top2.button7} -set {symbolicName(results)} {.frame0.menubutton9} -set {symbolicName(root)} {.} -set {symbolicName(sum)} {.frame0.menubutton0} -set {symbolicName(targlist)} {.frame0.menubutton2} -global {xfWmSetPosition} -set {xfWmSetPosition} {} -global {xfWmSetSize} -set {xfWmSetSize} {} -global {xfAppDefToplevels} -set {xfAppDefToplevels} {} - -# display/remove toplevel windows. -ShowWindow. - -# load default bindings. -if {[info exists env(XF_BIND_FILE)] && - "[info procs XFShowHelp]" == ""} { - source $env(XF_BIND_FILE) -} - -# parse and apply application defaults. -XFLocalLoadAppDefs Testit -XFLocalSetAppDefs - -# end source -EndSrc - -# eof -# - diff --git a/contrib/bluegnu2.0.3/dejagnu b/contrib/bluegnu2.0.3/dejagnu deleted file mode 100755 index db944c2..0000000 --- a/contrib/bluegnu2.0.3/dejagnu +++ /dev/null @@ -1,93 +0,0 @@ -#! /bin/sh -# -# This scripts should start a fully compatible DejaGnu runtest -# application using [incr Expect] and Classes compatible with [incr Tcl] -# -# Copyright (C) 1998 jotOmega dsc, Inc. - -# This file is part of BlueGnu. -# It asumes that the iexpect program is on your PATH -# - -# -# Get the execution path to this script -# -execpath=`echo ${0-.} | sed -e 's@/[^/]*$@@'` - -# -# get the name by which dejagnu was invoked and extract the config triplet -# -dejagnu=`echo ${0-.} | sed -e 's@^.*/@@'` -target=`echo $dejagnu | sed -e 's/-dejagnu$//'` -if [ "$target" != dejagnu ] ; then - target="--target ${target}" -else - target="" -fi - -# -# Find the right expect binary to use. If a variable EXPECT exists, -# it takes precedence over all other tests. Otherwise look for a freshly -# built one, and then use one in the path. -# -if [ x"$EXPECT" != x ] ; then - expectbin=$EXPECT -else - if [ -x "$execpath/expect" ] ; then - expectbin=$execpath/iexpect - else - expectbin=iexpect - fi -fi - -# just to be safe... -if [ -z "$expectbin" ]; then - echo "ERROR: No $expectbin shell found" - exit 1 -fi - -# -# Extract a few options from the option list. -# -verbose=0 -debug="" -for a in "$@" ; do - case $a in - -v|--v|-verb*|--verb*) verbose=`expr $verbose + 1`;; - -D0|--D0) debug="-D 0" ;; - -D1|--D1) debug="-D 1" ;; - esac -done - -if expr $verbose \> 0 > /dev/null ; then - echo Expect binary is $expectbin -fi - -# -# find dejagnu.itcl. First we look in it's installed location, otherwise -# start if from the source tree. -# -for i in $execpath/../lib/bluegnu $execpath ; do - if expr $verbose \> 1 > /dev/null ; then - echo Looking for $i/dejagnu.itcl. - fi - if [ -f $i/dejagnu.itcl ] ; then - runpath=$i - if expr $verbose \> 0 > /dev/null ; then - echo Using $i/dejagnu.itcl as main test driver - fi - fi -done -# check for an environment variable -if [ x"$BLUEGNULIBS" != x ] ; then - runpath=$BLUEGNULIBS - if expr $verbose \> 0 > /dev/null ; then - echo Using $BLUEGNULIBS/dejagnu.itcl as main test driver - fi -fi -if [ x"$runpath" = x ] ; then - echo "ERROR: dejagnu.itcl does not exist." - exit 1 -fi - -exec $expectbin $debug -- $runpath/dejagnu.itcl $target ${1+"$@"} diff --git a/contrib/bluegnu2.0.3/doc/Makefile.in b/contrib/bluegnu2.0.3/doc/Makefile.in deleted file mode 100644 index 67d5f40..0000000 --- a/contrib/bluegnu2.0.3/doc/Makefile.in +++ /dev/null @@ -1,170 +0,0 @@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -srcdir = @srcdir@ - -mandir = $(prefix)/man -man1dir = $(mandir)/man1 -infodir = $(prefix)/info - -MAKEINFO = makeinfo -TEXI2DVI = TEXINPUTS=$(TEXIDIR):$(srcdir):$$TEXINPUTS texi2dvi - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = $(INSTALL) -INSTALL_DATA = $(INSTALL) - -# Where to find texinfo.tex to format docn with TeX -TEXIDIR = $(srcdir)/../../texinfo - -MANPAGES= $(srcdir)/dejagnu.1 -DEJAGNU = dejagnu.dvi dejagnu.info dejagnu.ps dejagnu.pdf -README = ../README.bluegnu notice.ps notice.pdf notice.html - -%.dvi: %.tex - latex $< -%.pdf: %.dvi - dvipdfm -o $@ $< -%.html: %.dvi - rm -fr $(basename $@) - rm -f $@ - latex2html -t "`cat $(basename $<).title`" -split 0 $(basename $<).tex - ln -s $(basename $@)/$@ - -all: - -doc: ${README} ${DEJAGNU} - -dejagnu.pdf: dejagnu.dvi - -READMEtxt.dvi: READMEtxt.tex README.tex -READMEdvi.dvi: READMEdvi.tex README.tex - -../README.bluegnu: READMEtxt.dvi - dvidoc $< >$@ - -notice.ps: READMEdvi.dvi - dvips $< -o $@ - -notice.pdf: READMEdvi.dvi - dvipdfm -o $@ $< - -notice.html: READMEdvi.dvi - rm -fr $(basename $<) - rm -f $@ - latex2html -t "`cat $(basename $<).title`" -split 0 $(basename $<).tex - cp $(basename $<)/$(basename $<).html notice.html - -###################################################################### -# DOCUMENTATION TARGETS -# TeX output -dejagnu.dvi: $(srcdir)/dejagnu.texi - $(TEXI2DVI) $(srcdir)/dejagnu.texi - -# info file for online browsing -dejagnu.info: $(srcdir)/dejagnu.texi - $(MAKEINFO) -I $(srcdir) -o dejagnu.info $(srcdir)/dejagnu.texi - -dejagnu.ps: dejagnu.dvi - dvips -f dejagnu.dvi > dejagnu.ps - -# different targets for -ms, -mm, -me -# Try to use a recent texi2roff. v2 was put on prep in jan91. -# If you want an index, see texi2roff doc for postprocessing -# and add -i to texi2roff invocations below. -# Workarounds for texi2roff-2 (probably fixed in later texi2roff's, delete -# correspondint -e lines when later texi2roff's are current) -# + @ifinfo's deleted explicitly due to texi2roff-2 bug w nested constructs. -# + @c's deleted explicitly because texi2roff sees texinfo commands in them -# + @ (that's at-BLANK) not recognized by texi2roff, turned into blank -# + @alphaenumerate is ridiculously new, turned into @enumerate - -# roff output (-ms) -dejagnu.ms: $(srcdir)/dejagnu.texi - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c/d' \ - -e 's/{.*,,/{/' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/dejagnu.texi | \ - $(TEXI2ROFF) -ms | \ - sed -e 's/---/\\(em/g' >dejagnu.ms - -# roff output (-mm) -# '@noindent's removed due to texi2roff-2 mm bug; if yours is newer, -# try leaving them in -dejagnu.mm: $(srcdir)/dejagnu.texi - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c/d' \ - -e 's/{.*,,/{/' \ - -e '/@noindent/d' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/dejagnu.texi | \ - $(TEXI2ROFF) -mm | \ - sed -e 's/---/\\(em/g' >dejagnu.mm - -# roff output (-me) -dejagnu.me: $(srcdir)/dejagnu.texi - sed -e '/\\input texinfo/d' \ - -e '/@c TEXI2ROFF-KILL/,/@c END TEXI2ROFF-KILL/d' \ - -e '/^@ifinfo/,/^@end ifinfo/d' \ - -e '/^@c/d' \ - -e 's/{.*,,/{/' \ - -e 's/@ / /g' \ - -e 's/^@alphaenumerate/@enumerate/g' \ - -e 's/^@end alphaenumerate/@end enumerate/g' \ - $(srcdir)/dejagnu.texi | \ - $(TEXI2ROFF) -me | \ - sed -e 's/---/\\(em/g' >dejagnu.me - -###################################################################### - -clean mostlyclean: - -rm -f \#* *~ core *.o a.out xgdb *.x - -rm -f core *.aux *.log - -rm -f dejagnu.cp \ - dejagnu.fn dejagnu.ky dejagnu.log dejagnu.pg dejagnu.toc \ - dejagnu.tp dejagnu.vr dejagnu.cps dejagnu.fns dejagnu.kys \ - dejagnu.pgs dejagnu.tps dejagnu.vrs - -clean-info: - -rm -rf *.info* - -distclean: clean - -rm -f Makefile config.status config.log config.cache gdbme.c - -rm -fr READMEdvi - -maintainer-clean realclean: clean clean-info - -rm -f Makefile config.status config.log config.cache gdbme.c - -rm -fr READMEdvi - -rm -f *.pdf *.ps *.html - -install: - $(srcdir)/../mkinstalldirs $(man1dir) - for i in $(MANPAGES) ; do \ - $(INSTALL_DATA) $$i \ - $(man1dir)/$(program_prefix)`echo $$i |sed -e \ - 's@^.*doc/@@'` ; \ - done - $(srcdir)/../mkinstalldirs $(bindir) $(infodir) - for i in *.info* ; do \ - $(INSTALL_DATA) $$i $(infodir)/$$i ; \ - done - -Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) config.status - @echo "Rebuilding the Makefile..." - $(SHELL) ./config.status - -configure: - @echo "Rebuilding configure..." - @cd ${srcdir}; autoconf - -config.status: $(srcdir)/configure - @echo "Rebuilding config.status..." - $(SHELL) ./config.status --recheck diff --git a/contrib/bluegnu2.0.3/doc/README.tex b/contrib/bluegnu2.0.3/doc/README.tex deleted file mode 100644 index 30e974a..0000000 --- a/contrib/bluegnu2.0.3/doc/README.tex +++ /dev/null @@ -1,253 +0,0 @@ -%% -%% - -\begin{document} - -\title{Release Notice\\BlueGnu Testing Framework\\ -Version 2.0.3} -\author{Jan-Willem Neurdenburg\\jotOmega dsc\\ -56 Brigham Hill Road\\Grafton~MA~~01519-1135\\ -neurdenburgj@acm.org\\Tel: (508) 839-0276\\Fax: (508) 839-7267} - -\maketitle - -\section{Introduction} -BlueGnu is a framework for testing other programs. It has been created -to be compatible with DejaGnu. Its purpose is to provide a single -front end for all tests. Beyond this, BlueGnu offers several -advantages for testing: - -\begin{itemize} - -\item The flexibility and consistency of the BlueGnu framework makes it -easy to write tests for any program, with the exception of GUI -applications. - -\item BlueGnu provides a layer of abstraction, which makes all tests -(if correctly written) portable to any host or target where a program -must be tested. - -\item BlueGnu is written in [incr Tcl], which in turn is based on Tcl -(Tool Command Language). The framework comprises two parts: -\begin{enumerate} -\item the testing framework, -\item the test-suites or test-sets themselves. -\end{enumerate} - -\item BlueGnu will work with any Tcl based interpreter as long as -[incr Tcl] has been included. You can include 'expect', 'Tk', and/or -other extensions. - -\item Includes DejaGnu release 1.6 - -\end{itemize} - -\section{Requirements} -The following modules should have been installed, before you can -install and/or use BlueGnu: - -\begin{itemize} -\item Tcl release 8.0 or higher, -\item incr Tcl release 3.0 or higher. -\end{itemize} - -Any other extensions that is compatible with Tcl release 8.0 can be used -as well. - -\section{Structure and Contents of the Release} - -The root directory of the release contains the README files with -installation instructions and the files needed to build and install -this product. It also contains the executable scripts of the -BlueGnu testing framework. - -The top-level directories are listed below: - -\begin{description} -\item[lib:] the packages and procedures that make the BlueGnu and -DejaGnu testing framework. This also includes the default target -definition files. - -\item[testsets:] the BlueGnu test-suites and test examples. It contains -the following subdirectories. - -\begin{description} -\item[BlueGnu:] -test scripts to test the testing framework itself. - -\item[examples:] -test suite and test script examples. - -\item[config, lib, tools:] -currently empty, but can be used for -test-set dependent configuration files, library files, and tools. -\end{description} - -\item[config:] -currently empty. - -\item[doc:] the DejaGnu texinfo source and the documentation in -'info', 'dvi', 'ps', and 'pdf' representation, respectively -dejagnu.info*, dejagnu.dvi, dejagnu.ps, and dejagnu.pdf. A DejaGnu man -page is also available. - -It also contains -the \TeX{} version (README.tex) of this document as well as the 'dvi', 'ps' -'html', and 'pdf' representation, respectively notice.dvi, notice.ps, -notice.html, and notice.pdf. - -\item[testsuite:] contains a mixture of DejaGnu and BlueGnu test -scripts. - -\item[contrib:] contains examples how DejaGnu is used at Cygnus. - -\item[example:] contains a full DejaGnu test framework example for testing the program 'calc' which is also included. - -\end{description} - -\section{Installation and use under Unix} - -Before you can install and use BlueGnu you need to have installed the -following three packages: -\begin{itemize} -\item Tcl version 8.0.3 -\item Tk version 8.0.3 -\item incr Tcl version 3.0.1 -\end{itemize} -The source for these packages should all be located in one directory. -The subdirectory in the directory should be: -\begin{itemize} -\item tcl8.0.3 -\item tk8.0.3 -\item itcl3.0.1 -\end{itemize} - -The following examples use the command `./configure ---prefix=/tools/...`. This will install all packages in a directory -``/tools''. When you omit the ``--prefix''-switch then the -installation default will be the directory ``/usr/local''. - -\subsection{Installation of needed Packages} - -When you have not installed Tcl and the other needed extensions, then -you need to retrieve the sources from ``www.tcltk.com/itcl''. You need -to `gunzip` the files and do a `tar xf` of all these packages in one -directory, let's call this directory ``TclTk''. - -From the directory ``TclTk'', you should do the following to install -the packages: - -\begin{verbatim} -% cd tcl8.0.3/unix -% ./configure --prefix=/tools/tcl8.0.3 --enable-gcc --enable-shared -% make -% mkdir /tools/tcl8.0.3 -% make install -% cd ../../tk8.0.3/unix -% ./configure --prefix=/tools/tk8.0.3 --enable-gcc --enable-shared -% make -% mkdir /tools/tk8.0.3 -% make install -% cd ../../itcl3.0.1 -% ./configure --prefix=/tools/itcl3.0.1 --enable-gcc --enable-shared -% make -% mkdir /tools/itcl3.0.1 -% make install -\end{verbatim} - -\subsection{Installing BlueGnu} -You can now `gunzip` and `tar xf` the BlueGnu version 2.0.3 in the -directory ``TckTk''. This will create the directory -``bluegnu2.0.3''. Now do the following: - -\begin{verbatim} -% cd bluegnu2.0.3 -% ./configure --prefix=/tools/bluegnu2.0.3 -% make -% mkdir /tools/bluegnu2.0.3 -% make install -\end{verbatim} - -This will install BlueGnu in the directories: -\begin{itemize} -\item /tools/bluegnu2.0.3/bin -\item /tools/bluegnu2.0.3/lib/bluegnu -\item /tools/bluegnu2.0.3/info -\item /tools/bluegnu2.0.3/man -\end{itemize} - -\subsection{Using BlueGnu} -When you have installed [incr Tcl] and BlueGnu and you have the -respective ``bin'' directories in your PATH variable, then you can -start running some tests. You can go into the BlueGnu source directory -``bluegnu2.0.3/testsets/examples'' and run the following: - -\begin{verbatim} -% bluegnu versionTcl.itcl -% bluegnu ts_001 -% bluegnu ts_002 -% bluegnu ts_003 -\end{verbatim} - -The above test result should all be PASS. The following test will give -a result UNKNOWN, because no pass/fail instruction have been given. - -\begin{verbatim} -% bluegnu tc001 -\end{verbatim} - -The last test you can run will fail in its simple form: - -\begin{verbatim} -% bluegnu tc002 -\end{verbatim} - -But will pass if you execute the test as follows: - -\begin{verbatim} -% bluegnu tc002[English] -\end{verbatim} - -This is because the test scripts need a test case identifier to find -the correct benchmark code. - -\section{Changes} -\subsection{Version 2.0.3} -This being the first public release it is not to useful to list all -the changes. BlueGnu has been modeled after DejaGnu and is a complete -new implementation which has been tested thoroughly. When -documentation is being written more changes will be made. An example -of some of these changes as a result of this documentation effort can -be found in the test-suites ts\verb+_+001, ts\verb+_+002, and -ts\verb+_+003. The first two are not as easy to write as the -third. The test suite ts\verb+_+001 is a script implementation of the -command line: -\begin{verbatim} -% cd bluegnu2.0.3/testsets -% bluegnu examples/tc002[English=B] \ -> "examples/tc002[Dutch=B]={MSG=Hallo Wereld}" -\end{verbatim} -This may be useful for simple tests but when you want to write more -complex test-suite scripts you would like some more flexibility, so two -procedures were introduced, which are shown in test-suite ts\verb+_+002. This -makes writing rather complex so the procedures have become part of -the procedures 'appendQueue', 'prependQueue', and 'runtest'. The -resulting script is shown in test-suit ts\verb+_+003. - -Changes like this will be made in the future! - -\section{Future Enhancements} -The following enhancements are being planned: -\begin{itemize} -\item Target code will be made into a class with methods 'start', -'load', 'exit', and 'version'. Instead of the current -'$<$target$>$\verb+_+start', '$<$target$>$\verb+_+load', '$<$target$>$\verb+_+exit', and -'$<$target$>$\verb+_+version', which have been taken from DejaGnu. - -\item Procedures will be created that make it easy to test WEB -application from the framework. - -\item Other enhancements will be made depending on the use of the -framework in testing different applications. -\end{itemize} -\end{document} \ No newline at end of file diff --git a/contrib/bluegnu2.0.3/doc/READMEdvi.dvi b/contrib/bluegnu2.0.3/doc/READMEdvi.dvi deleted file mode 100644 index b324ab8..0000000 Binary files a/contrib/bluegnu2.0.3/doc/READMEdvi.dvi and /dev/null differ diff --git a/contrib/bluegnu2.0.3/doc/READMEdvi.tex b/contrib/bluegnu2.0.3/doc/READMEdvi.tex deleted file mode 100644 index ee2e991..0000000 --- a/contrib/bluegnu2.0.3/doc/READMEdvi.tex +++ /dev/null @@ -1,5 +0,0 @@ -%% -%% - -\documentclass[12pt]{article} -\input{README} diff --git a/contrib/bluegnu2.0.3/doc/READMEdvi.title b/contrib/bluegnu2.0.3/doc/READMEdvi.title deleted file mode 100644 index 9f7f47d..0000000 --- a/contrib/bluegnu2.0.3/doc/READMEdvi.title +++ /dev/null @@ -1 +0,0 @@ -BlueGnu Release Notice diff --git a/contrib/bluegnu2.0.3/doc/READMEtxt.dvi b/contrib/bluegnu2.0.3/doc/READMEtxt.dvi deleted file mode 100644 index 182a260..0000000 Binary files a/contrib/bluegnu2.0.3/doc/READMEtxt.dvi and /dev/null differ diff --git a/contrib/bluegnu2.0.3/doc/READMEtxt.tex b/contrib/bluegnu2.0.3/doc/READMEtxt.tex deleted file mode 100644 index 0c9afdb..0000000 --- a/contrib/bluegnu2.0.3/doc/READMEtxt.tex +++ /dev/null @@ -1,6 +0,0 @@ -%% -%% - -\documentclass[10pt]{dvidoc} -\input{README} - diff --git a/contrib/bluegnu2.0.3/doc/configure b/contrib/bluegnu2.0.3/doc/configure deleted file mode 100755 index 7248143..0000000 --- a/contrib/bluegnu2.0.3/doc/configure +++ /dev/null @@ -1,657 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.4 -# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE - -# Initialize some other variables. -subdirs= - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -build | --build | --buil | --bui | --bu | --b) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=PREFIX install architecture-dependent files in PREFIX - [same as prefix] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR ---enable and --with options recognized:$ac_help -EOF - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.4" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LANG+set}" = set; then LANG=C; export LANG; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=dejagnu.texi - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - for ac_prog in ginstall installbsd scoinst install; do - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - # OSF/1 installbsd also uses dspmsg, but is usable. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_ifs" - # As a last resort, use the slow shell script. - test -z "$ac_cv_path_install" && ac_cv_path_install="$ac_install_sh" -fi - INSTALL="$ac_cv_path_install" -fi -echo "$ac_t""$INSTALL" 1>&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \ - >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.4" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" - -trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 - -# Protect against being on the right side of a sed subst in config.status. -sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF -$ac_vpsub -$extrasub -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_DATA@%$INSTALL_DATA%g - -CEOF -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust relative srcdir, etc. for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file -fi; done -rm -f conftest.subs - - - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - diff --git a/contrib/bluegnu2.0.3/doc/configure.in b/contrib/bluegnu2.0.3/doc/configure.in deleted file mode 100644 index 9ff15e8..0000000 --- a/contrib/bluegnu2.0.3/doc/configure.in +++ /dev/null @@ -1,4 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT(dejagnu.texi) -AC_PROG_INSTALL -AC_OUTPUT(Makefile) diff --git a/contrib/bluegnu2.0.3/doc/dejagnu.1 b/contrib/bluegnu2.0.3/doc/dejagnu.1 deleted file mode 100644 index c6e29c5..0000000 --- a/contrib/bluegnu2.0.3/doc/dejagnu.1 +++ /dev/null @@ -1,120 +0,0 @@ -.TH runtest 1 "31 Dec 1992" -.SH NAME -runtest \- the DejaGnu test driver program -.SH SYNOPSIS -.B runtest -[ options ] -.SH DESCRIPTION -.I DejaGnu -is a framework for running test suites on GNU tools. It is written in -expect, which uses TCL (Tool command language). -.B runtest -is the test driver program; use it to control what tests to run, -and variations on how to run them. - -You can find a comprehensive description of DejaGnu and \fBruntest\fR in -.I -The DejaGnu Testing Framework -or its Info version, -.BR dejagnu.info . -.SH OPTIONS -.TP -.B --all -Print all test output to screen. By default, only unexpected results are -displayed. -.TP -.BI --baud \ rate -Set the baud rate for a serial line connection. Some serial interface -programs (like \fBtip\fR) don't use this value but instead use a separate -initialization file. -.TP -.BI --connect \ type -The type of connection to use. The choices are -.BR rlogin , -.BR telnet , -.BR rsh , -.BR kermit , -.BR tip -and -.BR mondfe . -.TP -.B --debug -Turn on -.B expect -internal debugging output. All output is logged to -a file called \fBdbg.out\fR. -The output of the \fB--strace\fR also goes into this file. -.TP -.B --help -Prints out a help screen and then exits. -.TP -.BI --host \ type -The configuration string for the host. -.TP -.BI --ignore \ test1.exp\ test2.exp\ ... -Do not run the specified tests. -.TP -.BI --mail \ \'name1\ name2\ ...\' -Electronic mail addresses to receive test results. -.TP -.BI --name \ hostname -The network hostname of the target board. -.TP -.BI --objdir \ path -\fIpath\fR is a directory containing compiled test code. -.TP -.BI --outdir \ directory -The name of a directory for test log output. -.TP -.B --reboot -Reboot the target board when \fBruntest\fR initializes -(if supported). -.TP -.BI --srcdir \ path -\fIpath\fR is a directory containing test directories. -.TP -.BI --strace \ N -Turns on -.B expect -internal tracing to \fIN\fR levels deep. -.TP -.BI --target \ type -The configuration string for the target. -.TP -.BI --tool \ toolname -Specify the tool to be tested. \fItoolname\fR controls the test suite -applied, and the associated initialization module. -.TP -.B --verbose,\ -v -Turns on more debugging output from test cases and DejaGnu utility code. -Use more than once to increase output further. -.TP -.B --version,\ -V -Prints out the versions of DejaGnu, expect and Tcl. -.TP -.B -D[number] -Activate the Tcl debugger.\fBnumber\fR can be either 1 or 0. If it is -1, then the expect shell will break when it starts to run. All ^C's -drop DejaGnu back to the debugger prompt. A 0 starts DejaGnu like -normal, but a ^C drops to the debugger prompt. -.TP 0 -Any file name on the command line is assumed to be a subset -of the test names to run. Usually these are the names of the -expect test driver, ie... special.exp. - -Makefile style variables are used to specify tool names and their -flags; these and other configuration dependent values are saved in the -file \fBsite.exp\fR, created during configuration. -.SH EXIT CODES -.B runtest -sets the exit code to 1 if any of the tests failed, or -sets it to 0 if all the tests passed. -.SH SEE ALSO -.I The DejaGnu Testing Framework -.RB ( dejagnu.info ). -This is the DejaGnu manual; its source is the Texinfo file -.B -doc/dejagnu.texi -in the DejaGnu distribution. -.SH AUTHOR -Rob Savoye (rob@welcomehome.org) diff --git a/contrib/bluegnu2.0.3/doc/dejagnu.dvi b/contrib/bluegnu2.0.3/doc/dejagnu.dvi deleted file mode 100644 index f8e50e5..0000000 Binary files a/contrib/bluegnu2.0.3/doc/dejagnu.dvi and /dev/null differ diff --git a/contrib/bluegnu2.0.3/doc/dejagnu.info b/contrib/bluegnu2.0.3/doc/dejagnu.info deleted file mode 100644 index c890e65..0000000 --- a/contrib/bluegnu2.0.3/doc/dejagnu.info +++ /dev/null @@ -1,77 +0,0 @@ -This is Info file dejagnu.info, produced by Makeinfo version 1.68 from -the input file ./dejagnu.texi. - -START-INFO-DIR-ENTRY -* DejaGnu: (dejagnu). The GNU testing framework. -END-INFO-DIR-ENTRY - - Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the entire resulting derived work is distributed under the terms -of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -Indirect: -dejagnu.info-1: 845 -dejagnu.info-2: 49656 -dejagnu.info-3: 98864 - -Tag Table: -(Indirect) -Node: Top845 -Node: Overview1569 -Node: What is New3526 -Node: Running Tests4893 -Node: Sample Test8001 -Node: Design Goals9824 -Node: Posix11617 -Node: Future Directions17145 -Node: Tcl and Expect17988 -Node: Invoking runtest18731 -Node: Customizing31866 -Node: Config Values34287 -Node: Master Config File40542 -Node: Local Config File44541 -Node: Personal Config File46789 -Node: Internals47575 -Node: Names49656 -Node: Init Module51171 -Node: DejaGnu Builtins55274 -Node: framework.exp56083 -Node: remote.exp65293 -Node: utils.exp69799 -Node: target.exp73522 -Node: debugger.exp76091 -Node: Target Dependent77622 -Node: Cross Targets80980 -Node: Input Files86280 -Node: Output Files87772 -Node: Summary88390 -Node: Detail90141 -Node: Debug91993 -Node: Tests95959 -Node: Writing96405 -Node: Debugging98864 -Node: Adding101241 -Node: Hints103253 -Node: Variables106051 -Node: Extending107396 -Node: Adding Tools107928 -Node: Adding Targets116563 -Node: Porting118758 -Node: Installation119227 -Node: Configuring DejaGnu119607 -Node: Installing DejaGnu121510 -Node: Index122634 - -End Tag Table diff --git a/contrib/bluegnu2.0.3/doc/dejagnu.info-1 b/contrib/bluegnu2.0.3/doc/dejagnu.info-1 deleted file mode 100644 index c11c3b4..0000000 --- a/contrib/bluegnu2.0.3/doc/dejagnu.info-1 +++ /dev/null @@ -1,1163 +0,0 @@ -This is Info file dejagnu.info, produced by Makeinfo version 1.68 from -the input file ./dejagnu.texi. - -START-INFO-DIR-ENTRY -* DejaGnu: (dejagnu). The GNU testing framework. -END-INFO-DIR-ENTRY - - Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the entire resulting derived work is distributed under the terms -of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -File: dejagnu.info, Node: Top, Next: Overview, Up: (dir) - -DejaGnu -******* - - DejaGnu is a framework for running test suites on software tools. - - This file describes version 1.3 of DejaGnu. - -* Menu: - -* Overview:: What is DejaGnu? -* What is New:: What is new in this release. -* Invoking runtest:: Using `runtest', the main test driver -* Customizing:: Setting `runtest' defaults -* Internals:: The DejaGnu implementation -* Tests:: How to write a test case -* Extending:: New tools, new targets, and new hosts -* Installation:: Configuring and Installing DejaGnu -* Index:: Index - - -File: dejagnu.info, Node: Overview, Next: What is New, Prev: Top, Up: Top - -What is DejaGnu? -**************** - - DejaGnu is a framework for testing other programs. Its purpose is to -provide a single front end for all tests. Beyond this, DejaGnu offers -several advantages for testing: - - 1. The flexibility and consistency of the DejaGnu framework make it - easy to write tests for any program. - - 2. DejaGnu provides a layer of abstraction which allows you to write - tests that are portable to any host or target where a program must - be tested. For instance, a test for GDB can run (from any Unix - based host) on any target architecture that DejaGnu supports. - Currently DejaGnu runs tests on several single board computers, - whose operating software ranges from just a boot monitor to a - full-fledged, Unix-like realtime OS. - - 3. All tests have the same output format. This makes it easy to - integrate testing into other software development processes. - DejaGnu's output is designed to be parsed by other filtering - script, and it is also human readable. - - DejaGnu is written in `expect', which in turn uses "Tcl"--Tool -command language. - - Running tests requires two things: the testing framework, and the -test suites themselves. Tests are usually written in `expect' using -Tcl, but you can also use a Tcl script to run a test suite that is not -based on `expect'. (`expect' script filenames conventionally use -`.exp' as a suffix; for example, the main implementation of the DejaGnu -test driver is in the file `runtest.exp'.) - -* Menu: - -* Running Tests:: A first look at running DejaGnu tests -* Sample Test:: What does a DejaGnu test case look like? -* Design Goals:: Goals behind DejaGnu -* Posix:: DejaGnu conforms to POSIX 1003.3 -* Future Directions:: Where is DejaGnu going? -* Tcl and Expect:: Reading more about Tcl and Expect - - -File: dejagnu.info, Node: What is New, Next: Invoking runtest, Prev: Overview, Up: Top - -What is new in this release ? -***************************** - - This release has a number of substantial changes over version 1.2. -The most visible change is that the version of expect and Tcl included -in the release are up-to-date with the current stable net releases. -Other changes are: - - 1. The config sub-system in DejaGnu has been completely redesigned. - It now supports testing on remote hosts as well as remote targets. - - 2. More builtin support for building target binaries with the correct - linker flags. Currently this only works with GCC, preferably with a - target support by `libgloss'. - - 3. Lots of little bug fixes from a year of heavy use here at Cygnus - Support. - - 4. DejaGnu now uses `autoconf' for configuration. - - 5. New test cases for DejaGnu have been added for the new features, - plus the "-tool" option bug in the 1.2 testsuite has been fixed. - - 6. The `--tool' option is now optional. - - 7. `runtest' when searching for test drivers ignores all directories - named SCCS, RCS, and CVS. - - 8. There is now a generic keyword based test harness that uses - comments in source code to control how each test case gets built - and run. - - 9. There is now some support for running a testsuite with multiple - passes. - - - -File: dejagnu.info, Node: Running Tests, Next: Sample Test, Up: Overview - -Running existing tests -====================== - - To run tests from an existing collection, first use `configure' as -usual to set up the source directory containing the tests. Then try -running - - make check - - If the `check' target exists, it usually saves you some trouble--for -instance, it can set up any auxiliary programs or other files needed by -the tests. - - Once you have run `make check' to build any auxiliary files, you -might want to call the test driver `runtest' directly to repeat the -tests. You may also have to call `runtest' directly for test -collections with no `check' target in the `Makefile'. - - Typically, you must use two command-line options: `--tool', to -specify which set of tests to run(1), and `--srcdir', to specify where -to find test directories. - - For example, if the directory `gdb/testsuite' contains a collection -of DejaGnu tests for GDB, you can run them like this: - - eg$ cd gdb/testsuite - eg$ runtest --tool gdb -*Test output follows, ending with:* - - === gdb Summary === - - # of expected passes 508 - # of expected failures 103 - /usr/latest/bin/gdb version 4.14.4 -nx - - You can use the option `--srcdir' to point to some other directory -containing a collection of tests: - - eg$ runtest --tool gdb --srcdir /devo/gdb/testsuite - - These examples assume a "native" configuration, where the same -computer runs both `runtest' and the tests themselves. When you have a -"cross" configuration, the tests run on a different computer, -controlled by the host running `runtest'. In this situation, you need -the option `--name' to specify the network address for the other -computer: - - eg$ runtest --tool gdb --name vx9.munist.com - - If you always use the same option values, you can record them in a -file called `site.exp', rather than typing them each time. *Note -Setting defaults for `runtest' options: Config Values. - - By default, `runtest' prints only the names of the tests it runs, -output from any tests that have unexpected results, and a summary -showing how many tests passed and how many failed. To display output -from all tests (whether or not they behave as expected), use the -`--all' option. For more verbose output about processes being run, -communication, and so on, use `--verbose'. To see even more output, use -multiple `--verbose' options. *Note Using `runtest': Invoking runtest, -for a more detailed explanation of each `runtest' option. - - Test output goes into two files in your current directory: summary -output in `TOOL.sum', and detailed output in `TOOL.log'. (TOOL refers -to the collection of tests; for example, after a run with `--tool gdb', -look for output files `gdb.sum' and `gdb.log'.) *Note The files -DejaGnu writes: Output Files. - - ---------- Footnotes ---------- - - (1) `--tool' selects a particular suite of tests, *not* the name of -the executable program to run. *Note Configuration dependent values: -Config Values, for information on the variables that you can use to -specify the names of programs to run. - - -File: dejagnu.info, Node: Sample Test, Next: Design Goals, Prev: Running Tests, Up: Overview - -What does a DejaGnu test look like? -=================================== - - Each DejaGnu test is an `expect' script; the tests vary widely in -complexity, depending on the nature of the tool and the feature tested. - - Here is a very simple GDB test--one of the simplest tests shipped -with DejaGnu (extracted from `gdb.t00/echo.exp'):(1) - - # send a string to the GDB stdin: - send "echo Hello world!\n" - - # inspect the GDB stdout for the correct reply, - # and determine whether the test passes or fails: - expect { - -re "Hello world.*$prompt $" { pass "Echo test" } - -re "$prompt $" { fail "Echo test" } - timeout { fail "(timeout) Echo test" } - } - - Though brief, this example is a complete test. It illustrates some -of the main features of DejaGnu test scripts: - - * The test case does not start the tested program (GDB in this case); - all test scripts for interactive tools can assume the - corresponding tool is running. - - * Comments start with `#'. - - * The main commands you use to control a tested program are `send' - (to give it commands) and `expect' (to analyze its responses). - - * The `expect' command uses a list of pairs; a pattern (regular - expression if `-re' specified), followed by an action to run if the - pattern matches output from the program. Only the action for the - *first* matching pattern will execute. - - * Test cases use the commands `pass' and `fail' to record the test - outcome. - - ---------- Footnotes ---------- - - (1) More recent GDB tests use the `gdb_test' procedure. An -equivalent test using that procedure is ` gdb_test "echo Hello world!" -"Hello world!" ' - - -File: dejagnu.info, Node: Design Goals, Next: Posix, Prev: Sample Test, Up: Overview - -Design goals -============ - - DejaGnu grew out of the internal needs of Cygnus Support. Cygnus -maintains and enhances a variety of free programs in many different -environments, and we needed a testing tool that: - - * is useful to developers while fixing bugs; - - * automates running many tests during a software release process; - - * is portable among a variety of host computers; - - * supports cross-development testing; - - * permits testing interactive programs, like GDB; and - - * permits testing batch oriented programs, like GCC. - - Some of the requirements proved challenging. For example, -interactive programs do not lend themselves very well to automated -testing. But all the requirements are important: for instance, it is -imperative to make sure that GDB works as well when cross-debugging as -it does in a native configuration. - - Probably the greatest challenge was testing in a cross-development -environment (which can be a real nightmare). Most cross-development -environments are customized by each developer. Even when buying -packaged boards from vendors there are many differences. The -communication interfaces vary from a serial line to ethernet. DejaGnu -was designed with a modular communication setup, so that each kind of -communication can be added as required, and supported thereafter. Once -a communication procedure is coded, any test can use it. Currently -DejaGnu can use `rsh', `rlogin', `telnet', `tip', `kermit', and -`mondfe' for remote communications. - - Julia Menapace first coined the term "Deja Gnu" to describe an -earlier testing framework at Cygnus Support. When we replaced it with -the Expect-based framework, it was like DejaGnu all over again... - - -File: dejagnu.info, Node: Posix, Next: Future Directions, Prev: Design Goals, Up: Overview - -A POSIX conforming test framework -================================= - - DejaGnu conforms to the POSIX standard for test frameworks. - - POSIX standard 1003.3 defines what a testing framework needs to -provide, in order to permit the creation of POSIX conformance test -suites. This standard is primarily oriented to running POSIX -conformance tests, but its requirements also support testing of features -not related to POSIX conformance. POSIX 1003.3 does not specify a -particular testing framework, but at this time there is only one other -POSIX conforming test framework: TET.(1) - - The POSIX documentation refers to "assertions". An assertion is a -description of behavior. For example, if a standard says "The sun -shall shine", a corresponding assertion might be "The sun is shining." -A test based on this assertion would pass or fail depending on whether -it is daytime or nighttime. It is important to note that the standard -being tested is never 1003.3; the standard being tested is some other -standard, for which the assertions were written. - - As there is no test suite to test *testing frameworks* for POSIX -1003.3 conformance, verifying conformance to this standard is done by -repeatedly reading the standard and experimenting. One of the main -things 1003.3 does specify is the set of allowed output messages, and -their definitions. Four messages are supported for a required feature -of POSIX conforming systems, and a fifth for a conditional feature. -DejaGnu supports the use of all five output messages; in this sense a -test suite that uses exactly these messages can be considered POSIX -conforming. These definitions specify the output of a test case: - -`PASS' - A test has succeeded. That is, it demonstrated that the assertion - is true. - -`XFAIL' - POSIX 1003.3 does not incorporate the notion of expected failures, - so `PASS', instead of `XPASS', must also be returned for test - cases which were expected to fail and did not. This means that - `PASS' is in some sense more ambiguous than if `XPASS' is also - used. For information on `XPASS' and `XFAIL', see *Note Using - `runtest': Invoking runtest. - -`FAIL' - A test *has* produced the bug it was intended to capture. That is, - it has demonstrated that the assertion is false. The `FAIL' - message is based on the test case only. Other messages are used to - indicate a failure of the framework. - - As with `PASS', POSIX tests must return `FAIL' rather than `XFAIL' - even if a failure was expected. - -`UNRESOLVED' - A test produced indeterminate results. Usually, this means the - test executed in an unexpected fashion; this outcome requires that - a human being go over results, to determine if the test should - have passed or failed. This message is also used for any test - that requires human intervention because it is beyond the - abilities of the testing framework. Any unresolved test should - resolved to `PASS' or `FAIL' before a test run can be considered - finished. - - Note that for POSIX, each assertion must produce a test result - code. If the test isn't actually run, it must produce `UNRESOLVED' - rather than just leaving that test out of the output. This means - that you have to be careful when writing tests, to not carelessly - use tcl statements like `return'--if you alter the flow of control - of the tcl code you must insure that every test still produces - some result code. - - Here are some of the ways a test may wind up `UNRESOLVED': - - * A test's execution is interrupted. - - * A test does not produce a clear result. This is usually - because there was an `ERROR' from DejaGnu while processing - the test, or because there were three or more `WARNING' - messages. Any `WARNING' or `ERROR' messages can invalidate - the output of the test. This usually requires a human being - to examine the output to determine what really happened--and - to improve the test case. - - * A test depends on a previous test, which fails. - - * The test was set up incorrectly. - -`UNTESTED' - A test was not run. This is a placeholder, used when there is no - real test case yet. - -The only remaining output message left is intended to test features that -are specified by the applicable POSIX standard as conditional: - -`UNSUPPORTED' - There is no support for the tested case. This may mean that a - conditional feature of an operating system, or of a compiler, is - not implemented. DejaGnu also uses this message when a testing - environment (often a "bare board" target) lacks basic support for - compiling or running the test case. For example, a test for the - system subroutine `gethostname' would never work on a target board - running only a boot monitor. - - DejaGnu uses the same output procedures to produce these messages for -all test suites, and these procedures are already known to conform to -POSIX 1003.3. For a DejaGnu test suite to conform to POSIX 1003.3, you -must avoid the `setup_xfail' procedure as described in the `PASS' -section above, and you must be careful to return `UNRESOLVED' where -appropriate, as described in the `UNRESOLVED' section above. - - ---------- Footnotes ---------- - - (1) TET was created by Unisoft for a consortium comprised of X/Open, -Unix International, and the Open Software Foundation. - - -File: dejagnu.info, Node: Future Directions, Next: Tcl and Expect, Prev: Posix, Up: Overview - -Future directions -================= - - In the near future, there are two parallel directions for DejaGnu -development. The first is to add support for more hosts and targets. - - The second would permit testing programs with a more complex -interface, whether text based or GUI based. Two components already -exist: a Tcl based X window toolkit, and a terminal package for -`expect'. Both of these could be merged into DejaGnu in a way that -permits testing programs that run in each environment. - - Meanwhile, we hope DejaGnu enables the creation of test suites for -conformance to ANSI C and C++, to POSIX, and to other standards. We -encourage you to make any test suites you create freely available, -under the same terms as DejaGnu itself. - - -File: dejagnu.info, Node: Tcl and Expect, Prev: Future Directions, Up: Overview - -Tcl and Expect -============== - - Tcl was introduced in a paper by John K. Ousterhout at the 1990 -Winter Usenix conference, `Tcl: An Embeddable Command Language'. That -paper is included in PostScript form in the `doc' subdirectory of the -Tcl distribution. The version of Tcl included in DejaGnu at this time is -Tcl 7.4p3. - - Don Libes introduced `expect' in his paper `expect: Curing Those -Uncontrollable Fits of Interaction' at the 1990 Summer Usenix -conference. The paper is included in PostScript form in the `expect' -distribution (as are several other papers about `expect'). The version -of expect included in DejaGnu at this time is expect 5.18.0. - - -File: dejagnu.info, Node: Invoking runtest, Next: Customizing, Prev: What is New, Up: Top - -Using `runtest' -*************** - - `runtest' is the executable test driver for DejaGnu. You can -specify two kinds of things on the `runtest' command line: command line -options, and Tcl variables for the test scripts. The options are -listed alphabetically below. - - `runtest' returns an exit code of `1' if any test has an unexpected -result; otherwise (if all tests pass or fail as expected) it returns -`0' as the exit code. - - `runtest' flags the outcome of each test as one of these cases. -(*Note A POSIX conforming test framework: Posix, for a discussion of -how POSIX specifies the meanings of these cases.) - -`PASS' - The most desirable outcome: the test succeeded, and was expected to - succeed. - -`XPASS' - A pleasant kind of failure: a test was expected to fail, but - succeeded. This may indicate progress; inspect the test case to - determine whether you should amend it to stop expecting failure. - -`FAIL' - A test failed, although it was expected to succeed. This may - indicate regress; inspect the test case and the failing software - to locate the bug. - -`XFAIL' - A test failed, but it was expected to fail. This result indicates - no change in a known bug. If a test fails because the operating - system where the test runs lacks some facility required by the - test, the outcome is `UNSUPPORTED' instead. - -`UNRESOLVED' - Output from a test requires manual inspection; the test suite - could not automatically determine the outcome. For example, your - tests can report this outcome is when a test does not complete as - expected. - -`UNTESTED' - A test case is not yet complete, and in particular cannot yet - produce a `PASS' or `FAIL'. You can also use this outcome in dummy - "tests" that note explicitly the absence of a real test case for a - particular property. - -`UNSUPPORTED' - A test depends on a conditionally available feature that does not - exist (in the configured testing environment). For example, you - can use this outcome to report on a test case that does not work - on a particular target because its operating system support does - not include a required subroutine. - - `runtest' may also display the following messages: - -`ERROR' - Indicates a major problem (detected by the test case itself) in - running the test. This is usually an unrecoverable error, such as - a missing file or loss of communication to the target. (POSIX - test suites should not emit this message; use `UNSUPPORTED', - `UNTESTED', or `UNRESOLVED' instead, as appropriate.) - -`WARNING' - Indicates a possible problem in running the test. Usually warnings - correspond to recoverable errors, or display an important message - about the following tests. - -`NOTE' - An informational message about the test case. - - This is the full set of command line options that `runtest' -recognizes. Arguments may be abbreviated to the shortest unique string. - - runtest --tool TOOL [ TESTSUITE.exp ... ] - [ TESTSUITE.exp="testfile1 ..." ] - [ TCLVAR=VALUE... ] - [ --all ] [ --baud BAUD-RATE ] [ --connect TYPE ] - [ --debug ] [ --help ] [ --host STRING ] - [ --mail "NAME ..." ] [ --name STRING ] - [ --name NAME ] [ --outdir PATH ] - [ --objdir PATH ] [ --reboot ] - [ --srcdir PATH ] [ --strace N ] - [ --target STRING --build STRING ] - [ -v | --verbose ] [ -V | --version ] [ --DN ] - -`--tool TOOL' - TOOL specifies what set of tests to run, and what initialization - module to use. TOOL is used *only* for these two purposes: it is - *not* used to name the executable program to test. Executable - tool names (and paths) are recorded in `site.exp' (*note - Configuration dependent values: Config Values.), and you can - override them by specifying Tcl variables on the command line. - - For example, including `--tool gcc' on the `runtest' command line - runs tests from all test subdirectories whose names match `gcc.*', - and uses one of the initialization modules named - `config/*-gcc.exp'. To specify the name of the compiler (perhaps - as an alternative path to what `runtest' would use by default), use - `GCC=BINNAME' on the `runtest' command line. - -`TESTSUITE.exp ...' - Specify the names of testsuites to run. By default, `runtest' - runs all tests for the tool, but you can restrict it to particular - testsuites by giving the names of the `.exp' `expect' scripts that - control them. - - TESTSUITE.exp may not include path information; use plain - filenames. - -`TESTFILE.exp="testfile1 ..."' - Specify a subset of tests in a suite to run. For compiler or - assembler tests, which often use a single `.exp' script covering - many different source files, this option allows you to further - restrict the tests by listing particular source files to compile. - Some tools even support wildcards here. The wildcards supported - depend upon the tool, but typically they are `?', `*', and - `[chars]'. - -`TCLVAR=VALUE' - You can define Tcl variables for use by your test scripts in the - same style used with `make' for environment variables. For - example, `runtest GDB=gdb.old' defines a variable called `GDB'; - when your scripts refer to `$GDB' in this run, they use the value - `gdb.old'. - - The default Tcl variables used for most tools are defined in the - main DejaGnu `Makefile'; their values are captured in the - `site.exp' file. *Note Configuration dependent values: Config - Values. - -`--all' - Display all test output. By default, `runtest' shows only the - output of tests that produce unexpected results; that is, tests - with status `FAIL' (unexpected failure), `XPASS' (unexpected - success), or `ERROR' (a severe error in the test case itself). - Specify `--all' to see output for tests with status `PASS' - (success, as expected) `XFAIL' (failure, as expected), or - `WARNING' (minor error in the test case itself). - -`--baud BAUD-RATE' -`-b BAUD-RATE' - Set the default baud rate to something other than 9600. (Some - serial interface programs, like `tip', use a separate - initialization file instead of this value.) - -`--connect TYPE' - Connect to a target testing environment as specified by TYPE, if - the target is not the computer running `runtest'. For example, use - `--connect' to change the program used to connect to a "bare - board" boot monitor. The choices for TYPE in the DejaGnu 1.0 - distribution are `rlogin', `telnet', `rsh', `tip', `kermit', and - `mondfe'. - - The default for this option depends on the configuration (*note - Remote targets supported: Cross Targets.). The default is chosen - to be the most convenient communication method available, but - often other alternatives work as well; you may find it useful to - try alternative connect methods if you suspect a communication - problem with your testing target. - -`--debug' - Turns on the `expect' internal debugging output. Debugging output - is displayed as part of the `runtest' output, and logged to a file - called `dbg.log'. The extra debugging output does *not* appear on - standard output, unless the verbose level is greater than 2 (for - instance, to see debug output immediately, specify `--debug -v - -v'). The debugging output shows all attempts at matching the test - output of the tool with the scripted patterns describing expected - output. The output generated with `--strace' also goes into - `dbg.log'. - -`--help' -`-he' - Prints out a short summary of the `runtest' options, then exits - (even if you also specify other options). - -`--host STRING' - STRING is a full configuration "triple" name as used by - `configure'. Use this option to override the default string - recorded by your configuration's choice of host. This choice does - not change how anything is actually configured unless -build is - also specified; it affects *only* DejaGnu procedures that compare - the host string with particular values. The procedures `ishost', - `istarget', `isnative', and `setup_xfail' are affected by - `--host'. In this usage, `host' refers to the machine that the - tests are to be run on, which may not be the same as the `build' - machine. If `--build' is also specified, then `--host' refers to - the machine that the tests wil, be run on, not the machine DejaGnu - is run on. - -`--build STRING' - STRING is a full configuration "triple" name as used by - `configure'. This is the type of machine DejaGnu and the tools to - be tested are built on. For a normal cross this is the same as the - host, but for a canadian cross, they are seperate. - -`--name NAME' - NAME is a name for the particular testing target machine (for - cross testing). If the testing target has IP network support (for - example, `RPC' or `NFS'), this is the network name for the target - itself. (NAME is *not the configuration string* you specify as a - target with `configure'; the `--name' option names a particular - target, rather than describing a class of targets.) For targets - that connect in other ways, the meaning of the NAME string depends - on the connection method. *Note Remote targets supported: Cross - Targets. - -`--name STRING' - Specify a network name of testing target or its host. The - particular names that are meaningful with `--name' will depend on - your site configuration, and on the connection protocol: for - example, `tip' connections require names from a serial line - configuration file (usually called `/etc/remote'), while `telnet' - connections use IP hostnames. - -`--objdir PATH' - Use PATH as the top directory containing any auxiliary compiled - test code. This defaults to `.'. Use this option to locate - pre-compiled test code. You can normally prepare any auxiliary - files needed with `make'. - -`--outdir PATH' - Write output logs in directory PATH. The default is `.', the - directory where you start `runtest'. This option affects only the - summary and the detailed log files `TOOL.sum' and `TOOL.log'. The - DejaGnu debug log `dbg.log' always appears (when requested) in the - local directory. - -`--reboot' - Reboot the target board when `runtest' initializes. Usually, when - running tests on a separate target board, it is safer to reboot - the target to be certain of its state. However, when developing - test scripts, rebooting takes a lot of time. - -`--srcdir PATH' - Use PATH as the top directory for test scripts to run. `runtest' - looks in this directory for any subdirectory whose name begins - with the toolname (specified with `--tool'). For instance, with - `--tool gdb', `runtest' uses tests in subdirectories `gdb.*' (with - the usual shell-like filename expansion). If you do not use - `--srcdir', `runtest' looks for test directories under the current - working directory. - -`--strace N' - Turn on internal tracing for `expect', to N levels deep. By - adjusting the level, you can control the extent to which your - output expands multi-level Tcl statements. This allows you to - ignore some levels of `case' or `if' statements. Each procedure - call or control structure counts as one "level". - - The output is recorded in the same file, `dbg.log', used for output - from `--debug'. - -`--target STRING' - Use this option to override the default setting (running native - tests). STRING is a full configuration "triple" name(1) as used - by `configure'. This option changes the configuration `runtest' - uses for the default tool names, and other setup information. - *Note Using `configure': (configure.info)Using configure, for - details about `configure' names. - -`--verbose' -`-v' - Turns on more output. Repeating this option increases the amount - of output displayed. Level one (`-v') is simply test output. Level - two (`-v -v') shows messages on options, configuration, and process - control. Verbose messages appear in the detailed (`*.log') log - file, but not in the summary (`*.sum') log file. - -`--version' -`-V' - Prints out the version numbers of DejaGnu, `expect' and Tcl, and - exits without running any tests. - -`-D0' -`-D1' - Start the internal Tcl debugger. The Tcl debugger supports - breakpoints, single stepping, and other common debugging - activities. (See `A Debugger for Tcl Applications' by Don Libes. - (2)) - - If you specify `-D1', the `expect' shell stops at a breakpoint as - soon as DejaGnu invokes it. - - If you specify `-D0', DejaGnu starts as usual, but you can enter - the debugger by sending an interrupt (e.g. by typing ). - - ---------- Footnotes ---------- - - (1) Configuration triples have the form `CPU-VENDOR-OS'. - - (2) Distributed in PostScript form with `expect' as the file -`expect/tcl-debug.ps'. - - -File: dejagnu.info, Node: Customizing, Next: Internals, Prev: Invoking runtest, Up: Top - -Setting `runtest' defaults -************************** - - The site configuration file, `site.exp', captures -configuration-dependent values and propagates them to the DejaGnu test -environment using Tcl variables. This ties the DejaGnu test scripts -into the `configure' and `make' programs. - - DejaGnu supports more than one `site.exp' file. The multiple -instances of `site.exp' are loaded in a fixed order built into DejaGnu -(the more local last). The first file loaded is the optional -`~/.dejagnurc', then the local files, and finally the global file. - - 1. There is am optional "master" `site.exp', capturing configuration - values that apply to DejaGnu across the board, in each - configuration-specific subdirectory of the DejaGnu library - directory. `runtest' loads these values first. *Note Configuring - and Installing DejaGnu: Installation. The master `site.exp' - contains the default values for all targets and hosts supported by - DejaGnu. This master file is identified by setting the environment - variable `DEJAGNU' to the name of the file. This is also refered - to as the "global" config file. - - 2. Any directory containing a configured test suite also has a - `site.exp', capturing configuration values specific to the tool - under test. Since `runtest' loads these values last, the - individual test configuration can either rely on and use, or - override, any of the global values from the "master" `site.exp'. - - You can usually generate or update the testsuite `site.exp' by - typing `make site.exp' in the test suite directory, after the test - suite is configured. - - 3. You can also have a file in your home directory called - `.dejagnurc'. This gets loaded first before the other config - files. Usually this is used for personal stuff, like setting - `all_flag' so all the output gets printed, or verbosity levels. - - You can further override the default values in a user-editable -section of any `site.exp', or by setting variables on the `runtest' -command line. - -* Menu: - -* Config Values:: Variables used in the configuration file. -* Master Config File:: The master configuration file. -* Local Config File:: The local configuration file. -* Personal Config File:: The personal configuration file. - - -File: dejagnu.info, Node: Config Values, Next: Master Config File, Up: Customizing - -Config Variables ----------------- - - DejaGnu uses a named array in Tcl to hold all the info for each -machine. In the case of a canadian cross, this means host information as -well as target information. The named array is called `target_info', -and it has two indices. The following fields are part of the array. - -`name' - The name of the target. (mostly for error messages) This should - also be the string used for this target's array. It should also - be the same as the linker script so we can find them dynamically. - This should be the same as the argument used for `push_target{}'. - -`ldflags' - This is the linker flags required to produce a fully linked - executable. For `libgloss' supported targets this is usually just - the name of the linker script. - -`config' - The target canonical for this target. This is used by some init - files to make sure the target is supported. - -`cflags' - The flags required to produce an object file from a source file. - -`connect' - This is the connectmode for this target. This is for both IP and - serial connections. Typically this is either `telnet', `rlogin', - or `rsh'. - -`target' - This is the hostname of the target. This is for TCP/IP based - connections, and is also used for version of tip that use - /etc/remote. - -`serial' - This is the serial port. This is typically /dev/tty? or com?:. - -`netport' - This is the IP port. This is commonly used for telneting to target - boards that are connected to a terminal server. In that case the - IP port specifies the which serial port to use. - -`baud' - This is the baud rate for a serial port connection. - -`x10' - This is the parameters for an x10 controller. These are simple - devices that let us power cycle or reset a target board remotely. - -`fileid' - This is the fileid or spawn id of of the connection. - -`prompt' - a glob style pattern to recognize the prompt. - -`abbrev' - abbreviation for tool init files. - -`ioport' - This is the port for I/O on dual port systems. In this - configuration, the main serial port `0' is usually used for stdin - and stdout, which the second serial port can be used for debugging. - - The first index into the array is the same value as used in the -`name' field. This is usually a short version of the name of the target -board. For an example, here's the settings I use for my `Motorola's' -`IDP' board and my `Motorola' 6U VME `MVME135-1' board. (both m68k -targets) - - # IDP board - set target_info(idp,name) "idp" - set target_info(idp,ldflags) "-Tidp.ld" - set target_info(idp,config) m68k-unknown-aout - set target_info(idp,cflags) "" - set target_info(idp,connect) telnet - set target_info(idp,target) "s7" - set target_info(idp,serial) "tstty7" - set target_info(idp,netport) "wharfrat:1007" - set target_info(idp,baud) "9600" - # MVME 135 board - set target_info(idp,name) "mvme" - set target_info(idp,ldflags) "-Tmvme.ld" - set target_info(idp,config) m68k-unknown-aout - set target_info(idp,cflags) "" - set target_info(idp,connect) telnet - set target_info(idp,target) "s8" - set target_info(idp,serial) "tstty8" - set target_info(idp,netport) "wharfrat:1008" - set target_info(idp,baud) "9600" - - DejaGnu can use this information to switch between multiple targets -in one test run. This is done through the use of the `push_target' -procedure, which is discussed elsewhere. - - This array can also hold information for a remote host, which is used -when testing a candain cross. In this case, the only thing different is -the index is just `host'. Here's the settings I use to run tests on my -NT machine while running DejaGnu on a Unix machine. (in this case a -Linux box) - - set target_info(host,name) "nt-host" - set target_info(host,config) "386-unknown-winnt" - set target_info(host,connect) "telnet" - set target_info(host,target) "ripple" - - There is more info on how to use these variables in the sections on -the config files. *Note Configuration Files: Master Config File. - - In the user editable second section of `site.exp', you can not only -override the configuration variables captured in the first section, but -also specify default values for all the `runtest' command line options. -Save for `--debug', `--help', and `--version', each command line -option has an associated Tcl variable. Use the Tcl `set' command to -specify a new default value (as for the configuration variables). The -following table describes the correspondence between command line -options and variables you can set in `site.exp'. *Note Running the -Tests: Invoking runtest, for explanations of the command-line options. - - runtest Tcl - option variable description - __________ ________ ___________________________________________ - - --all all_flag display all test results if set - - --baud baud set the default baud rate to something other - than 9600. - --connect connectmode `rlogin', `telnet', `rsh', - `kermit', `tip', or `mondfe' - - --outdir outdir directory for `TOOL.sum' and `TOOL.log' - - --objdir objdir directory for pre-compiled binaries - - --reboot reboot reboot the target if set to `"1"'; - do not reboot if set to `"0"' (the default) - - --srcdir srcdir directory of test subdirectories - - --strace tracelevel a number: Tcl trace depth - - --tool tool name of tool to test; identifies init, test subdir - - --verbose verbose verbosity level. As option, use multiple times; - as variable, set a number, 0 or greater - --target target_triplet The canonical configuration string for the target. - --host host_triplet The canonical configuration string for the host. - --build build_triplet The canonical configuration string for the - build host. - - -File: dejagnu.info, Node: Master Config File, Next: Local Config File, Prev: Config Values, Up: Customizing - -Master Config File ------------------- - - The master config file is where all the target specific config -variables get set for a whole site get set. The idea is that for a -centralized testing lab where people have to share a target between -multiple developers. There are settings for both remote targets and -remote hosts. Here's an example of a Master Config File (also called -the Global config file) for a *canadian cross*. A canadian cross is -when you build and test a cross compiler on a machine other than the -one it's to be hosted on. - - Here we have the config settings for our California office. Note that -all config values are site dependant. Here we have two sets of values -that we use for testing m68k-aout cross compilers. As both of these -target boards has a different debugging protocol, we test on both of -them in sequence. - - global CFLAGS - global CXXFLAGS - - case "$target_triplet" in { - { "native" } { - set target_abbrev unix - } - { "m68*-unknown-aout" } { - set target_abbrev "rom68k" - # IDP target # IDP board with rom68k monitor - set target_info(idp,name) "idp" - set target_info(idp,ldflags) "-Tidp.ld" - set target_info(idp,config) m68k-unknown-aout - set target_info(idp,cflags) "" - set target_info(idp,connect) telnet - set target_info(idp,target) "s7" - set target_info(idp,serial) "tstty12" - set target_info(idp,netport) "truckin:1007" - set target_info(idp,baud) "9600" - # MVME target # Motorola MVME 135 with BUG monitor - set target_info(mvme,name) "mvme" - set target_info(mvme,ldflags) "-Tmvme.ld" - set target_info(mvme,config) m68k-unknown-aout - set target_info(mvme,cflags) "" - set target_info(mvme,connect) telnet - set target_info(mvme,target) "s4" - set target_info(mvme,serial) "tstty8" - set target_info(mvme,netport) "truckin:1004" - set target_info(mvme,baud) "9600" - } - } - - In this case, we have support for several remote hosts for our -m68k-aout cross compiler. Typically the remote Unix hosts run DejaGnu -locally, but we also use them for debugging the testsuites when we find -problems in running on remote hosts. Expect won't run on NT, so DejaGnu -is run on the local build machine, and it'll connect to the NT host and -run all the tests for this cross compiler on that host. - - case "$host_triplet" in { - "native" { - } - "i?86-*-linux*" { # Linux host - set target_info(host,name) "linux-host" - set target_info(host,config) $host_triplet - set target_info(host,connect) rlogin - set target_info(host,target) chinadoll - } - "i?86-*-winnt # NT host - set target_info(host,name) "nt-host" - set target_info(host,config) i386-unknown-winnt - set target_info(host,connect) telnet - set target_info(host,target) ripple - } - "hppa*-hp-hpux*" { # HP-UX host - set target_info(host,name) "hpux-host" - set target_info(host,config) $host_triplet - set target_info(host,connect) rlogin - set target_info(host,target) slipknot - } - "sparc-sun-sunos*" { # SunOS (sun4) - set target_info(host,name) "sunos-host" - set target_info(host,config) $host_triplet - set target_info(host,connect) rlogin - set target_info(host,target) darkstar - } - } - - -File: dejagnu.info, Node: Local Config File, Next: Personal Config File, Prev: Master Config File, Up: Customizing - -Local Config File ------------------ - - It is usually more convenient to keep these "manual overrides" in the -`site.exp' local to each test directory, rather than in the "master" -`site.exp' in the DejaGnu library. - - All local `site.exp' usually files have two sections, separated by -comment text. The first section is the part that is generated by -`make'. It is essentially a collection of Tcl variable definitions -based on `Makefile' environment variables. Since they are generated by -`make', they contain the values as specified by `configure'. (You can -also customize these values by using the `--site' option to -`configure'.) In particular, this section contains the `Makefile' -variables for host and target configuration data. Do not edit this -first section; if you do, your changes are replaced next time you run -`make'. - - The first section starts with: - - ## these variables are automatically generated by make ## - # Do not edit here. If you wish to override these values - # add them to the last section - - In the second section, you can override any default values (locally -to DejaGnu) for all the variables. The second section can also contain -your preferred defaults for all the command line options to `runtest'. -This allows you to easily customize `runtest' for your preferences in -each configured test-suite tree, so that you need not type options -repeatedly on the command line. (The second section may also be empty, -if you do not wish to override any defaults.) - - The first section ends with this line: - - ## All variables above are generated by configure. Do Not Edit ## - - You can make any changes under this line. If you wish to redefine a -variable in the top section, then just put a duplicate value in this -second section. Usually the values defined in this config file are -related to the configuration of the test run. This is the ideal place to -set the variables `host_triplet', `build_triplet', `target_triplet'. -All other variables are tool dependant. ie for testing a compiler, the -value for CC might be set to a freshly built binary, as opposed to one -in the user's path. - - -File: dejagnu.info, Node: Personal Config File, Prev: Local Config File, Up: Customizing - -Personal Config File --------------------- - - The personal config file is used to customize `runtest's' behaviour -for each person. It's typically used to set the user prefered setting -for verbosity, and any experimental Tcl procedures. My personal -`~/.dejagnurc' file looks like: - - set all_flag 1 - set RLOGIN /usr/ucb/rlogin - set RSH /usr/ucb/rsh - - Here I set `all_flag' so I see all the test cases that PASS along -with the ones that FAIL. I also set RLOGIN and `RSH' to the BSD -version. I have `kerberos' installed, and when I rlogin to a target -board, it usually isn't supported. So I use the non secure versions of -these programs rather than the default that's in my path. - - -File: dejagnu.info, Node: Internals, Next: Tests, Prev: Customizing, Up: Top - -The DejaGnu Implementation -************************** - - DejaGnu is entirely written in `expect', which uses Tcl as a command -language. `expect' serves as a very programmable shell; you can run -any program, as with the usual Unix command shells--but once the -program is started, your `expect' script has fully programmable control -of its input and output. This does not just apply to the programs -under test; `expect' can also run any auxiliary program, such as `diff' -or `sh', with full control over its input and output. - - DejaGnu itself is merely a framework for the set of test suites -distributed separately for each GNU tool. Future releases of GNU tools -will include even more tests, developed throughout the free software -community. - - `runtest' is the glue to tie together and manage the test scripts. -The `runtest' program is actually a simple Bourne shell script that -locates a copy of the `expect' shell and then starts the main Tcl code, -`runtest.exp'. `runtest.exp' itself has these essential functions: - - 1. Parse the command line options, load the library files, and load - the default configuration files. - - 2. Locating the individual test scripts. `runtest.exp' locates the - tests by exploiting a straightforward naming convention based on - the string you specify with the `--tool' option. - - 3. Providing an extended test environment, by defining additional Tcl - procedures beyond those already in `expect'. - - 4. Locating target-dependent functions, to standardize the test - environment across a wide variety of test platforms. - -* Menu: - -* Names:: Conventions for using tool names -* Init Module:: Initialization module -* DejaGnu Builtins:: DejaGnu provides these Tcl procedures -* Target Dependent:: Procedures supplied by the init module -* Cross Targets:: Remote targets supported -* Input Files:: The files DejaGnu depends on -* Output Files:: The files DejaGnu produces - diff --git a/contrib/bluegnu2.0.3/doc/dejagnu.info-2 b/contrib/bluegnu2.0.3/doc/dejagnu.info-2 deleted file mode 100644 index 9339d94..0000000 --- a/contrib/bluegnu2.0.3/doc/dejagnu.info-2 +++ /dev/null @@ -1,1137 +0,0 @@ -This is Info file dejagnu.info, produced by Makeinfo version 1.68 from -the input file ./dejagnu.texi. - -START-INFO-DIR-ENTRY -* DejaGnu: (dejagnu). The GNU testing framework. -END-INFO-DIR-ENTRY - - Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the entire resulting derived work is distributed under the terms -of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -File: dejagnu.info, Node: Names, Next: Init Module, Up: Internals - -Conventions for using tool names -================================ - - DejaGnu uses `$tool', the name of the tool under test, to tie -together the testing configuration in a straightforward but flexible -way. If there is only one testsuite for a particular application, then -`$tool' is optional. - - `$tool' is *not* used to invoke the tool, since sites that run -multiple configurations of a particular tool often call each -configuration by a different name. `runtest' uses the -configuration-dependent variables captured in `site.exp' to determine -how to call each tool. - - `runtest' uses tool names to find directories containing tests. -`runtest' scans the source directory (specified with `--srcdir') for -all directories whose names start with the tool name. It is a common -practice to put a period after the tool part of the name. For instance, -directories that start with `g++.' contain G++ tests. To add a new -test, just put it in any directory (create an entirely new directory, -if you wish) whose name follows this convention. - - A test is any file in an appropriately named subdirectory whose name -ends in `.exp' (the conventional way of naming `expect' scripts). -These simple naming conventions make it as simple as possible to -install new tests: all you must do is put the test in the right -directory. - - `runtest' sorts the tests in each subdirectory by name (using the -Tcl `lsort' command) and runs them in the resulting order. - - -File: dejagnu.info, Node: Init Module, Next: DejaGnu Builtins, Prev: Names, Up: Internals - -Initialization module -===================== - - The initialization module (or "init file") has two purposes: to -provide tool and target dependent procedures, and to start up an -interactive tool to the point where it is ready to operate. The latter -includes establishing communications with the target. All the tests for -interactive programs assume that the tool is already running and -communicating. Initialization modules for non-interactive programs may -only need to supply the support functions. - - Each test suite directory must contain (in its `config' -subdirectory) a separate initialization module for each target. The -appropriate init file is can be named several ways. The prefered name is -the *os* part of the canonical configuration name with `.exp' as the -suffix. An example would be that for an `m68k-coff' system, the -`target_os' part would be `coff'. The next way is for system where -there are short filenames, or a shortcut is desired to refer to the OS -name for that target. This is uses the value of `$target_abbrev' rather -than the `target_os'. - - The final file looked for is simply `default.exp'. If there is only -one operating system to support, then this file can be used. It's main -purpose is to offer some support for new operating systems, or for -unsupported cross targets. The last file looked for is `unknown.exp'. -This is usually limited to error handling for unsupported targets. It's -whole contents is typically. - - perror "Sorry, there is no support for this target" - exit 1 - - At the beginning of the init file, you must first determine the -proper executable name of the tool to execute, since the actual name of -the tool to be tested my vary from system to system. Here's an example -for the GNU C compiler. - - global AR - # look for the archiver ar - if ![info exists AR] { - set AR [findfile $base_dir/../../binutils/ar $base_dir/../../binutils/ar [tr - ansform ar]] - verbose "AR defaulting to $AR" 2 - } - } - - global CFLAGS - if ![info exists CFLAGS] then { - set CFLAGS "" - } - - It is always a good idea to first check the variable, and only set -it if it has not yet been defined. Often the proper value of `AR' is -set on the command line that invokes `runtest'. - - The `findfile' procedure takes as it's first argument a file name to -look for. The second argument is returned if the file is found, and the -third argument is returned if the file is not found. `base_dir' is set -internally by DejaGnu to the top level directory of the object tree. - - The `transform' procedure takes as its argument the native name of a -tool (such as `gcc' for the compiler), and returns the name as -configured for that tool in the current installation. (For example, a -cross-compiling version of GNU CC that generates MIPS code may be -installed with a name like `mips-idt-ecoff-gcc'.) - - In a test running native, writing the Tcl code for initialization is -usually quite simple. For cross configurations, however, more elaborate -instructions are usually needed to describe how to talk to a remote -target. - - Each initialization module defines up to four procedures with -standard names and purposes. The names of these procedures begin with -`$tool', the string that identifies tests for a particular tool: -`$tool_start', `$tool_load', `$tool_exit', and `$tool_version'. For -example, the start procedure for GDB is called `gdb_start'. (Since -start procedures are used differently for batch and interactive tools, -however, `runtest' itself never calls the start procedure. Init files -for interactive tools are expected to end by running the start -procedure.) - - The initialization module is also a good place to call `load_lib' to -get any collections of utility procedures meant for a family of test -cases, and to set up default values for any additional Tcl variables -needed for a specific set of tests. - - *Note Target dependent procedures: Target Dependent, for full -descriptions of these procedures. - - -File: dejagnu.info, Node: DejaGnu Builtins, Next: Target Dependent, Prev: Init Module, Up: Internals - -DejaGnu procedures -================== - - DejaGnu provides these Tcl procedures for use in test scripts. You -can also use any standard `expect' or Tcl function. These procedures -are stored in libraries, which DejaGnu loads at runtime. Here's -explanation of the library procedures that get loaded at runtime. All -other librarys are optional, and need to be loaded by the testsuite. - -* Menu: - -* framework.exp:: Core Internal Procedures. -* remote.exp:: Procedures for remote communication. -* utils.exp:: Utility procedures. -* target.exp:: Cross target procedures. -* debugger.exp:: Procedures for debugging your Tcl code. - - -File: dejagnu.info, Node: framework.exp, Next: remote.exp, Up: DejaGnu Builtins - -Core Internal Procedures ------------------------- - - *Note A POSIX conforming test framework: Posix, for more detailed -explanations of the test outcomes (`FAIL', `PASS', `UNTESTED', -`UNRESOLVED', `UNSUPPORTED'). - -`perror "STRING NUMBER"' - Declares a severe error in the testing framework itself. `perror' - writes in the log files a message beginning with `ERROR', - appending the argument STRING. If the optional NUMBER is supplied, - then this is used to set the internal count of errors to that - value. - - As a side effect, `perror' also changes the effect of the next - `pass' or `fail' command: the test outcome becomes `UNRESOLVED', - since an automatic `PASS' or `FAIL' cannot be trusted after a - severe error in the test framework. If the optional numeric value - is `0', then there are no further side effects to calling this - function, and the following test outcome doesn't become - `UNRESOLVED'. This can be used for errors with no known side - effects. - -`warning "STRING NUMBER"' - Declares detection of a minor error in the test case itself. - `warning' writes in the log files a message beginning with - `WARNING', appending the argument STRING. Use `warning' rather - than `error' for cases (such as communication failure to be - followed by a retry) where the test case can recover from the - error. If the optional NUMBER is supplied, then this is used to - set the internal count of warnings to that value. - - As a side effect, `warning_threshold' or more calls to `warning' - in a single test case also changes the effect of the next `pass' - or `fail' command: the test outcome becomes `UNRESOLVED' since an - automatic `PASS' or `FAIL' may not be trustworthy after many - warnings. If the optional numeric value is `0', then there are no - further side effects to calling this function, and the following - test outcome doesn't become `UNRESOLVED'. This can be used for - errors with no known side effects. - -`note "STRING"' - Appends an informational message to the log file. `note' writes - in the log files a message beginning with `NOTE', appending the - argument STRING. Use `note' sparingly. `verbose' should be used - for most such messages, but in cases where a message is needed in - the log file regardless of the verbosity level use `note'. - -`pass "STRING"' - Declares a test to have passed. `pass' writes in the log files a - message beginning with `PASS' (or `XPASS', if failure was - expected), appending the argument STRING. - -`fail "STRING"' - Declares a test to have failed. `fail' writes in the log files a - message beginning with `FAIL' (or `XFAIL', if failure was - expected), appending the argument STRING. - -`unresolved "STRING"' - Declares a test to have an unresolved outcome. `unresolved' writes - in the log file a message beginning with `UNRESOLVED', appending - the argument STRING. This usually means the test did not execute - as expected, and a human being must go over results to determine - if it passed or failed (and to improve the test case). - -`untested "STRING"' - Declares a test was not run. `untested' writes in the log file a - message beginning with `UNTESTED', appending the argument STRING. - For example, you might use this in a dummy test whose only role is - to record that a test does not yet exist for some feature. - -`unsupported "STRING"' - Declares that a test case depends on some facility that does not - exist in the testing environment. `unsupported' writes in the log - file a message beginning with `UNSUPPORTED', appending the argument - STRING. - -`get_warning_threshold' - Returns the current value of `warning_threshold'. The default - value is 3. - -`set_warning_threshold THRESHOLD' - Sets the value of `warning_threshold'. A value of `0' disables - it: calls to `warning' will not turn a `PASS' or `FAIL' into an - `UNRESOLVED'. - -`transform "TOOLNAME"' - Generates a string for the name of a tool as it was configured and - installed, given its native name (as the argument TOOLNAME). This - makes the assumption that all tools are installed using the same - naming conventions: it extrapolates from the invocation name for - `runtest'. For example, if you call `runtest' as - `m68k-vxworks-runtest', the result of ` transform "gcc" ' is - `m68k-vxworks-gcc'. - -`ishost "HOST"' - Tests for a particular *host* environment. If the currently - configured host matches the argument string, the result is `1'; - otherwise the result is `0'. HOST must be a full three-part - `configure' host name; in particular, you may not use the shorter - nicknames supported by `configure' (but you can use wildcard - characters, using shell syntax, to specify sets of names). - -`istarget "TARGET"' - Tests for a particular *target* environment. If the currently - configured target matches the argument string, the result is `1'; - otherwise the result is `0'. TARGET must be a full three-part - `configure' target name; in particular, you may not use the - shorter nicknames supported by `configure' (but you can use - wildcard characters, using shell syntax, to specify sets of - names). If it is passed a `NULL' string, then it returns the name - of the build canonical configuration. - -`isbuild "HOST"' - Tests for a particular *build host* environment. If the currently - configured host matches the argument string, the result is `1'; - otherwise the result is `0'. HOST must be a full three-part - `configure' host name; in particular, you may not use the shorter - nicknames supported by `configure' (but you can use wildcard - characters, using shell syntax, to specify sets of names). If it is - passed a `NULL' string, then it returns the name of the build - canonical configuration. - - item is3way "HOST" Tests for a canadian cross. This is when the - tests will be run on a remotly hosted cross compiler. If it is a - canadian cross, then the result is `1'; otherwise the result is - `0'. - -`isnative' - Tests whether the current configuration has the same host and - target. When it runs in a *native* configuration this procedure - returns a `1'; otherwise it returns a `0'. - -`load_lib "LIBRARY-FILE"' - Loads the file LIBRARY-FILE by searching a fixed path built into - `runtest'. If DejaGnu has been installed, it looks in a path - starting with the installed library directory. If you are running - DejaGnu directly from a source directory, without first running - `make install', this path defaults to the current directory. In - either case, it then looks in the current directory for a directory - called `lib'. If there are duplicate definitions, the last one - loaded takes precedence over the earlier ones. - -`setup_xfail "CONFIG [BUGID]"' - Declares that the test is expected to fail on a particular set of - configurations. The CONFIG argument must be a list of full - three-part `configure' target name; in particular, you may not use - the shorter nicknames supported by `configure' (but you can use the - common shell wildcard characters to specify sets of names). The - BUGID argument is optional, and used only in the logging file - output; use it as a link to a bug-tracking system such as GNATS - (*note Overview: (gnats.info)Overview.). - - Once you use `setup_xfail', the `fail' and `pass' procedures - produce the messages `XFAIL' and `XPASS' respectively, allowing - you to distinguish expected failures (and unexpected success!) - from other test outcomes. - - *Warning:* you must clear the expected failure after using - `setup_xfail' in a test case. Any call to `pass' or `fail' clears - the expected failure implicitly; if the test has some other - outcome, e.g. an error, you can call `clear_xfail' to clear the - expected failure explicitly. Otherwise, the expected-failure - declaration applies to whatever test runs next, leading to - surprising results. - -`clear_xfail CONFIG' - Cancel an expected failure (previously declared with `setup_xfail') - for a particular set of configurations. The CONFIG argument is a - list of configuration target names. It is only necessary to call - `clear_xfail' if a test case ends without calling either `pass' or - `fail', after calling `setup_xfail'. - -`verbose [-log] [-n] [--] "STRING" NUMBER' - Test cases can use this function to issue helpful messages - depending on the number of `--verbose' options on the `runtest' - command line. It prints STRING if the value of the variable - `verbose' is higher than or equal to the optional NUMBER. The - default value for NUMBER is 1. Use the optional `-log' argument - to cause STRING to always be added to the log file, even if it - won't be printed. Use the optional `-n' argument to print STRING - without a trailing newline. Use the optional `--' argument if - STRING begins with "-". - - -File: dejagnu.info, Node: remote.exp, Next: utils.exp, Prev: framework.exp, Up: DejaGnu Builtins - -Remote Communication Procedures -------------------------------- - -`lib/remote.exp' defines these functions, for establishing and managing -communications: - - *Procedures to establish a connection:* Each of these procedures -tries to establish the connection up to three times before returning. -Warnings (if retries will continue) or errors (if the attempt is -abandoned) report on communication failures. The result for any of -these procedures is either `-1', when the connection cannot be -established, or the spawn ID returned by the `expect' command `spawn'. - - It use the value of the `connect' field in the `target_info' array -(was `connectmode' as the type of connection to make. Current supported -connection types are tip, kermit, telnet, rsh, rlogin, and netdata. If -the `--reboot' option was used on the runtest command line, then the -target is rebooted before the connection is made. - -`remote_open TYPE' - *Remote Connection Procedure.* This is passed *host* or *target*. - Host or target refers to whether it is a connection to a remote - target, or a remote host. This opens the connection to the desired - target or host using the default values in the configuration - system. It returns that `spawn_id' of the process that manages the - connection. This value can be used in `expect' or `exp_send' - statements, or passed to other procedures that need the connection - process's id. This also sets the `fileid' field in the - `target_info' array. - -`remote_close SHELLID' - *shellid* is value returned by a call to `remote_open'. This - closes the connection to the target so resources can be used by - others. This parameter can be left off if the `fileid' field in the - `target_info' array is set. - -`telnet HOSTNAME PORT' -`rlogin HOSTNAME' -`rsh HOSTNAME' - *IP network procedures.* HOSTNAME refers to the IP address or name - (for example, an entry in `/etc/hosts') for this target. The - procedure names reflect the Unix utility used to establish a - connection. The optional PORT is used to specify the IP port - number. The value of the `netport' field in the `target_info' - array is used. (was `$netport') This value has two parts, the - hostname and the port number, seperated by a *:*. If `host' or - `target' is used in the `hostname' field, than the config array is - used for all information. - -`tip PORT' - *Serial line procedure.* Connect using the Unix utility `tip'. - PORT must be a name from the `tip' configuration file - `/etc/remote'. Often, this is called `hardwire', or something - like `ttya'. This file holds all the configuration data for the - serial port. The value of the `serial' field in the `target_info' - array is used. (was `$serialport') If `host' or `target' is used - in the `port' field, than the config array is used for all - information. - -`kermit PORT BPS' - *Serial line procedure.* Connect using the program `kermit'. - PORT is the device name, e.g. `/dev/ttyb'. BPS is the line speed - to use (in bits per second) for the connection. The value of the - `serial' field in the `target_info' array is used. (was - `$serialport') If `host' or `target' is used in the `port' field, - than the config array is used for all information. - -*Procedures to manage a connection:* - -`tip_download SPAWNID FILE' - Download `FILE' to the process SPAWNID (the value returned when - the connection was established), using the `~put' command under - `tip'. Most often used for single board computers that require - downloading programs in ASCII S-records. Returns `1' if an error - occurs, `0' otherwise. - -`exit_remote_shell SPAWNID' - Exits a remote process started by any of the connection procedures. - SPAWNID is the result of the connection procedure that started the - remote process. - -`download FILE [ SPAWNID ]' - After you establish a connection to a target, you can download - programs using this command. `download' reads in FILE (object - code in S-record format) and writes it to the device controlling - this SPAWNID. (From the point of view of the target, the S-record - file comes in via standard input.) - - If you have more than one target active, you can use the optional - argument SPAWNID to specify an alternative target (the default is - the most recently established SPAWNID.) - - -File: dejagnu.info, Node: utils.exp, Next: target.exp, Prev: remote.exp, Up: DejaGnu Builtins - -Utility Procedures ------------------- - -`lib/utils.exp' defines these utility procedures: - -`getdirs DIR' -`getdirs DIR PATTERN' - Returns a list of all the directories in the single directory DIR - that match PATTERN. If you do not specify PATTERN, `getdirs' - assumes `*'. You may use the common shell wildcard characters in - PATTERN. If no directories match the pattern, then a `NULL' string - is returned. - -`find DIR PATTERN' - Search for files whose names match PATTERN (using shell wildcard - characters for filename expansion). Search subdirectories - recursively, starting at DIR. The result is the list of files - whose names match; if no files match, the result is empty. - Filenames in the result include all intervening subdirectory - names. If no files match the pattern, then a `NULL' string is - returned. - -`which BINARY' - Searches the execution path for an executable file BINARY, like - the the BSD `which' utility. This procedure uses the shell - environment variable `PATH'. It returns `0' if the binary is not - in the path, or if there is no `PATH' environment variable. If - BINARY is in the path, it returns the full path to BINARY. - -`grep FILENAME REGEXP' - -`grep FILENAME REGEXP line' - Search the file called FILENAME (a fully specified path) for lines - that contain a match for regular expression REGEXP. The result is - a list of all the lines that match. If no lines match, the result - is an empty string. Specify REGEXP using the standard regular - expression style used by the Unix utility program `grep'. - - Use the optional third argument `line' to start lines in the result - with the line number in FILENAME. (This argument is simply an - option flag; type it just as shown--`line'.) - -`diff FILENAME FILENAME' - Compares the two files and returns a 1 if they match, or a 0 if - they don't. If `verbose' is set, then it'll print the differences - to the screen. - -`slay NAME' - This look in the process tabel for NAME and send it a unix - `SIGINT', killing the process. - -`absolute PATH' - This procedure takes the relative PATH, and converts it to an - absolute path. - -`psource FILENAME' - This sources the file FILENAME, and traps all errors. It also - ignores all extraneous output. If there was an error it returns a - 1, otherwise it returns a 0. - -`prune LIST PATTERN' - Remove elements of the Tcl list LIST. Elements are fields - delimited by spaces. The result is a copy of LIST, without any - elements that match PATTERN. You can use the common shell - wildcard characters to specify PATTERN. - -`setenv VAR VAL' - Sets the variable VAR to the value VAL. - -`unsetenv VAR' - Unsets the environment variable VAR - -`getenv VAR' - returns the value of VAR in the environment if it exists, - otherwise it returns `NULL'. - -`runtest_file_p RUNTESTS TESTCASE' - Search RUNTESTS for TESTCASE and return 1 if found, 0 if not. - RUNTESTS is a list of two elements. The first is the pathname of - the testsuite expect script running. The second is a copy of what - was on the right side of the `=' if `foo.exp="..."' was specified, - or an empty string if no such argument is present. This is used - by tools like compilers where each testcase is a file. - -`prune_system_crud SYSTEM TEXT' - For system SYSTEM, delete text the host or target operating system - might issue that will interfere with pattern matching of program - output in TEXT. An example is the message that is printed if a - shared library is out of date. - - -File: dejagnu.info, Node: target.exp, Next: debugger.exp, Prev: utils.exp, Up: DejaGnu Builtins - -Cross target procedure ----------------------- - -`lib/target.exp' defines these utility procedures: - -`push_target *name*' - This makes the target named *name* be the current target - connection. The value of *name* is an index into the `target_info' - array and is set in the global config file. - -`pop_target' - This unsets the current target connection. - -`list_targets' - This lists all the supported targets for this architecture. - -`push_host *name*' - This makes the host named *name* be the current remote host - connection. The value of *name* is an index into the `target_info' - array and is set in the global config file. - -`pop_host' - This unsets the current host connection. - - This invokes the compiler as set by `CC' to compile the file - *file*. The default options for many cross compilation targets are - *guessed* by DejaGnu, and these options can be added to by passing - in more parameters as arguments to `compile'. Optionally, this will - also use the value of the `cflags' field in the target config - array. If the host is not the same as the build machines, then then - compiler is run on the remote host using `execute_anywhere'. - - This produces an archive file. Any parameters passed to `archive' - are used in addition to the default flags. Optionally, this will - also use the value of the `arflags' field in the target config - array. If the host is not the same as the build machines, then then - archiver is run on the remote host using `execute_anywhere'. - - This generates an index for the archive file for systems that - aren't POSIX yet. Any parameters passed to `ranlib' are used in - for the flags. - -`execute_anywhere *cmdline*' - This executes the *cmdline* on the proper host. This should be used - as a replacement for the Tcl command `exec' as this version - utilizes the target config info to execute this command on the - build machine or a remote host. All config information for the - remote host must be setup to have this command work. If this is a - canadian cross, (where we test a cross compiler that runs on a - different host then where DejaGnu is running) then a connection is - made to the remote host and the command is executed there. It - returns either *REMOTERROR* (for an error) or the output produced - when the command was executed. This is used for running the tool - to be tested, not a test case. - - -File: dejagnu.info, Node: debugger.exp, Prev: target.exp, Up: DejaGnu Builtins - -Debugging Procedures --------------------- - - `lib/debugger.exp' defines these utility procedures: - -`dumpvars *expr*' - This takes a csh style regular expression (glob rules) and prints - the values of the global variable names that match. It is - abbreviated as `dv' - -`dumplocals *expr*' - This takes a csh style regular expression (glob rules) and prints - the values of the local variable names that match. It is - abbreviated as `dl'. - -`dumprocs *expr*' - This takes a csh style regular expression (glob rules) and prints - the body of all procs that match. It is abbreviated as `dp' - -`dumpwatch *expr*' - This takes a csh style regular expression (glob rules) and prints - all the watchpoints. It is abbreviated as `dw'. - -`watchunset *var*' - This breaks program execution when the variable *var* is unset. It - is abbreviated as `wu'. - -`watchwrite *var*' - This breaks program execution when the variable *var* is written. - It is abbreviated as `ww'. - -`watchread *var*' - This breaks program execution when the variable *var* is read. It - is abbreviated as `wr'. - -`watchdel *watch*' - This deletes a the watchpoint for *watch*. It is abbreviated as - `wd'. - -`print *var*' - This prints the value of the variable *var*. It is abbreviated as - `p'. - -`quit' - This makes runtest exit. It is abbreviated as `q'. - -`bt' - This prints a backtrace of the executed Tcl commands. - - -File: dejagnu.info, Node: Target Dependent, Next: Cross Targets, Prev: DejaGnu Builtins, Up: Internals - -Target dependent procedures -=========================== - - Each combination of target and tool requires some target-dependent -procedures. The names of these procedures have a common form: the tool -name, followed by an underbar `_', and finally a suffix describing the -procedure's purpose. For example, a procedure to extract the version -from GDB is called `gdb_version'. *Note Initialization Module: Init -Module, for a discussion of how DejaGnu arranges to find the right -procedures for each target. - - `runtest' itself calls only two of these procedures, `TOOL_exit' and -`TOOL_version'; these procedures use no arguments. - - The other two procedures, `TOOL_start' and `TOOL_load', are only -called by the test suites themselves (or by testsuite-specific -initialization code); they may take arguments or not, depending on the -conventions used within each test suite. - -`TOOL_start' - Starts a particular tool. For an interactive tool, `TOOL_start' - starts and initializes the tool, leaving the tool up and running - for the test cases; an example is `gdb_start', the start function - for GDB. For a batch oriented tool, `TOOL_start' is optional; the - recommended convention is to let `TOOL_start' run the tool, - leaving the output in a variable called `comp_output'. Test - scripts can then analyze `$comp_output' to determine the test - results. An example of this second kind of start function is - `gcc_start', the start function for GCC. - - `runtest' itself *does not call* `TOOL_start'. The initialization - module `TOOL_init.exp' must call `TOOL_start' for interactive - tools; for batch-oriented tools, each individual test script calls - `TOOL_start' (or makes other arrangements to run the tool). - -`TOOL_load' - Loads something into a tool. For an interactive tool, this - conditions the tool for a particular test case; for example, - `gdb_load' loads a new executable file into the debugger. For - batch oriented tools, `TOOL_load' may do nothing--though, for - example, the GCC support uses `gcc_load' to load and run a binary - on the target environment. Conventionally, `TOOL_load' leaves the - output of any program it runs in a variable called `exec_output'. - Writing `TOOL_load' can be the most complex part of extending - DejaGnu to a new tool or a new target, if it requires much - communication coding or file downloading. - - Test scripts call `TOOL_load'. - -`TOOL_exit' - Cleans up (if necessary) before `runtest' exits. For interactive - tools, this usually ends the interactive session. You can also use - `TOOL_exit' to remove any temporary files left over from the tests. - - `runtest' calls `TOOL_exit'. - -`TOOL_version' - Prints the version label and number for TOOL. This is called by - the DejaGnu procedure that prints the final summary report. The - output should consist of the full path name used for the tested - tool, and its version number. - - `runtest' calls `TOOL_version'. - - The usual convention for return codes from any of these procedures -(although it is not required by `runtest') is to return `0' if the -procedure succeeded, `1' if it failed, and `-1' if there was a -communication error. - - -File: dejagnu.info, Node: Cross Targets, Next: Input Files, Prev: Target Dependent, Up: Internals - -Remote targets supported -======================== - - The DejaGnu distribution includes support for the following remote -targets. You can set the target name and the connect mode in the -`site.exp' file (using the Tcl variables `targetname' and -`connectmode', respectively), or on the `runtest' command line (using -`--name' and `--connect'). - -*AMD 29000, with UDI protocol* - Configure DejaGnu for target `a29k-amd-udi'. (Cygnus `configure' - also recognizes the abbreviation `udi29k'.) Then, to run tests, - use the `runtest' target name to specify whether you want to use a - simulator, or a particular hardware board. The particular string - to use with `--name' will depend on your UDI setup file, `udi_soc' - (if `udi_soc' is not in your working directory, the environment - variable `UDICONF' should contain a path to this file). For - example, if your UDI setup file includes these lines: - - iss AF_UNIX * isstip -r /home/gnu/29k/src/osboot/sim/osboot - mon AF_UNIX * montip -t serial -baud 9600 -com /dev/ttyb - -* * - You can use `--name iss' to run tests on the simulator, and - `--name mon' to run tests on the 29K hardware. See the - manufacturer's manuals for more information on UDI and `udi_soc'. - - The default connect protocol is `mondfe' with either back end. - `mondfe' is the only shell DejaGnu supports for UDI targets. - `mondfe' is an AMD specific monitor program freely available from - AMD. - - *Warning:* This target requires GDB version 4.7.2 (or greater). - Earlier versions of GDB do not fully support the `load' command on - this target, so DejaGnu has no way to load executable files from - the debugger. - -*Motorola 680x0 boards, a.out or COFF object format* - Configure DejaGnu for any remote target matching `m68k-*'. - - *Warning:* Most `m68k-*' configurations run all tests only for - native testing (when the target is the same as the host). When you - specify most of these targets for a cross configuration, you will - only be able to use tests that run completely within the host (for - example, tests of the binary utilities such as the archiver; or - compiler tests that only generate code rather than running it). - - To run a.out or COFF binaries on a remote M68K, you must configure - DejaGnu for a particular target board. `m68k-abug' is an example. - (In general for an embedded environment, because it does not have - absolute addresses, a.out is not a good choice for output format - in any case; most often S-records or Hex-32 are used instead.) - -*Motorola 68K MVME 135 board running ABug boot monitor* - Configure for `m68k-abug-aout' or `m68k-abug-coff' (as a target). - This boot monitor can only download S-records; therefore, the - DejaGnu tests for this environment require a linker command script - to convert either output format to S-records, setting the default - addresses for `.text', `.bss', and `.data'. - - With this configuration, the default for `--connect' is `tip'. - `tip' is the only communications protocol supported for connecting - to `m68k-abug-*' targets. `tip' uses an ASCII downloader (the - `~put' command) to load S-records into the target board. The - `--name' string must be a machine name that `tip' understands (for - example, on some `tip' implementations it must be an entry from - the initialization file for `tip'; this file is sometimes called - `/etc/remote'). - - See your system documentation for information on how to create new - entries in `/etc/remote'. (Some UNIX systems are distributed with - at least one default entry with a name resembling `hardwire'; if - your system has one, you can edit it, or make a modified copy with - a new name.) When you have a working `/etc/remote' entry - ABUGTARGET, you should be able to type `tip ABUGTARGET', and get - the prompt `135ABUG>' from the board. Use the same ABUGTARGET - string with `runtest --name'. - -*Motorola IDP board running the rom68k boot monitor* - This is the same in functionality as the MVME board running the - `BUG' boot monitor. Only the monitor commands and the addresses are - different. - -*VxWorks (Motorola 68K or Intel 960)* - Configure DejaGnu for either `m68k-wrs-vxworks' (abbreviated - `vxworks68') or `i960-wrs-vxworks' (abbreviated `vxworks960'). - Since both targets support IP addressing, specify the network - address (for example, a host name from `/etc/hosts') with `--name'. - - The default connect protocol is `rlogin', but you can use any of - `--connect rlogin', `--connect telnet', or `--connect rsh'. - - Test scripts need no special code to load programs into these - targets; since VxWorks supports NFS, all you must do is ensure - test programs are on an exported filesystem. - - When you compile for VxWorks, use the linker `-r' option to make - the linker output relocatable--at least if you want to use library - routines. Many standard C routines are included in VxWorks; often - no additional libraries are needed. See your VxWorks system - documentation for additional details. - - -File: dejagnu.info, Node: Input Files, Next: Output Files, Prev: Cross Targets, Up: Internals - -The files DejaGnu reads -======================= - - The `runtest' program used to invoke DejaGnu is a short shell script -generated by `make' during the configuration process. Its main task is -to read the main test framework driver, `runtest.exp'. - - `runtest.exp', in turn, reads `expect' code from certain other -files, in this order: - - 1. Each of the `site.exp' local definition files available. *Note - Setting `runtest' defaults: Customizing, for details. - - 2. `lib/utils.exp', a collection of utility procedures. *Note - DejaGnu Builtins: DejaGnu Builtins, for descriptions of these - procedures. - - 3. `lib/framework.exp', a file of subroutines meant for `runtest' - itself rather than for general-purpose use in both `runtest' and - test suites. - - 4. `debugger.exp', Don Libes' Tcl Debugger. (See `A Debugger for Tcl - Applications' by Don Libes. This paper is distributed with - `expect' in PostScript form as the file `expect/tcl-debug.ps'.) - - 5. `lib/remote.exp', a collection of subroutines meant for connecting - to remote machines. - - 6. `lib/target.exp', a collection of subroutines used for the - configuration systems in DejaGnu. These procedures typically - manipulate or utilize the configuration system. - - 7. An initialization file `TOOL_init.exp'. *Note Initialization - module: Init Module, for more discussion of init files. - - -File: dejagnu.info, Node: Output Files, Prev: Input Files, Up: Internals - -The files DejaGnu writes -======================== - - `runtest' always writes two kinds of output files: summary logs and -detailed logs. The contents of both of these are determined by your -tests. - - For troubleshooting, a third kind of output file is useful: use -`--debug' to request an output file showing details of what `expect' is -doing internally. - -* Menu: - -* Summary:: Files that summarize tests -* Detail:: Files that contain complete test results -* Debug:: Logging expect internal actions - - -File: dejagnu.info, Node: Summary, Next: Detail, Up: Output Files - -Summary log ------------ - - `runtest' always produces a summary output file `TOOL.sum'. This -summary shows the names of all test files run; for each test file, one -line of output from each `pass' command (showing status `PASS' or -`XPASS') or `fail' command (status `FAIL' or `XFAIL'); trailing summary -statistics that count passing and failing tests (expected and -unexpected); and the full pathname and version number of the tool -tested. (All possible outcomes, and all errors, are always reflected in -the summary output file, regardless of whether or not you specify -`--all'.) - - If any of your tests use the procedures `unresolved', `unsupported', -or `untested', the summary output also tabulates the corresponding -outcomes. - - For example, after `runtest --tool binutils', look for a summary log -in `binutils.sum'. Normally, `runtest' writes this file in your -current working directory; use the `--outdir' option to select a -different directory. - -Here is a short sample summary log: - - Test Run By rob on Mon May 25 21:40:57 PDT 1992 - === gdb tests === - Running ./gdb.t00/echo.exp ... - PASS: Echo test - Running ./gdb.all/help.exp ... - PASS: help add-symbol-file - PASS: help aliases - PASS: help breakpoint "bre" abbreviation - FAIL: help run "r" abbreviation - Running ./gdb.t10/crossload.exp ... - PASS: m68k-elf (elf-big) explicit format; loaded - XFAIL: mips-ecoff (ecoff-bigmips) "ptype v_signed_char" signed - C types - === gdb Summary === - # of expected passes 5 - # of expected failures 1 - # of unexpected failures 1 - /usr/latest/bin/gdb version 4.6.5 -q - - -File: dejagnu.info, Node: Detail, Next: Debug, Prev: Summary, Up: Output Files - -Detailed log ------------- - - `runtest' also saves a detailed log file `TOOL.log', showing any -output generated by tests as well as the summary output. For example, -after `runtest --tool binutils', look for a detailed log in -`binutils.log'. Normally, `runtest' writes this file in your current -working directory; use the `--outdir' option to select a different -directory. - -Here is a brief example showing a detailed log for G++ tests: - - Test Run By rob on Mon May 25 21:40:43 PDT 1992 - - === g++ tests === - - --- Running ./g++.other/t01-1.exp --- - PASS: operate delete - - --- Running ./g++.other/t01-2.exp --- - FAIL: i960 bug EOF - p0000646.C: In function `int warn_return_1 ()': - p0000646.C:109: warning: control reaches end of non-void function - p0000646.C: In function `int warn_return_arg (int)': - p0000646.C:117: warning: control reaches end of non-void function - p0000646.C: In function `int warn_return_sum (int, int)': - p0000646.C:125: warning: control reaches end of non-void function - p0000646.C: In function `struct foo warn_return_foo ()': - p0000646.C:132: warning: control reaches end of non-void function - - --- Running ./g++.other/t01-4.exp --- - FAIL: abort - 900403_04.C:8: zero width for bit-field `foo' - --- Running ./g++.other/t01-3.exp --- - FAIL: segment violation - 900519_12.C:9: parse error before `;' - 900519_12.C:12: Segmentation violation - /usr/latest/bin/gcc: Internal compiler error: program cc1plus got - fatal signal - - === g++ Summary === - - # of expected passes 1 - # of expected failures 3 - /usr/ps/bin/g++ version cygnus-2.0.1 - - -File: dejagnu.info, Node: Debug, Prev: Detail, Up: Output Files - -Logging `expect' internal actions ---------------------------------- - - With the `--debug' option, you can request a log file showing the -output from `expect' itself, running in debugging mode. This file -(`dbg.log', in the directory where you start `runtest') shows each -pattern `expect' considers in analyzing test output. - - This file reflects each `send' command, showing the string sent as -input to the tool under test; and each `expect' command, showing each -pattern it compares with the tool output. - - The log messages for `expect' begin with a message of the form - - expect: does {TOOL OUTPUT} (spawn_id N) match pattern - {EXPECTED PATTERN}? - -For every unsuccessful match, `expect' issues a `no' after this -message; if other patterns are specified for the same `expect' command, -they are reflected also, but without the first part of the message -(`expect...match pattern'). - - When `expect' finds a match, the log for the successful match ends -with `yes', followed by a record of the `expect' variables set to -describe a successful match. Here is an excerpt from the debugging log -for a GDB test: - - send: sent {break gdbme.c:34\n} to spawn id 6 - expect: does {} (spawn_id 6) match pattern {Breakpoint.*at.* file - gdbme.c, line 34.*\(gdb\) $}? no - {.*\(gdb\) $}? no - expect: does {} (spawn_id 0) match pattern {}? no - {\(y or n\) }? no - {buffer_full}? no - {virtual}? no - {memory}? no - {exhausted}? no - {Undefined}? no - {command}? no - break gdbme.c:34 - Breakpoint 8 at 0x23d8: file gdbme.c, line 34. - (gdb) expect: does {break gdbme.c:34\r\nBreakpoint 8 at 0x23d8: - file gdbme.c, line 34.\r\n(gdb) } (spawn_id 6) match pattern - {Breakpoint.*at.* file gdbme.c, line 34.*\(gdb\) $}? yes - expect: set expect_out(0,start) {18} - expect: set expect_out(0,end) {71} - expect: set expect_out(0,string) {Breakpoint 8 at 0x23d8: file - gdbme.c, line 34.\r\n(gdb) } - expect: set expect_out(spawn_id) {6} - expect: set expect_out(buffer) {break gdbme.c:34\r\nBreakpoint 8 - at 0x23d8: file gdbme.c, line 34.\r\n(gdb) } - PASS: 70 0 breakpoint line number in file - -This example exhibits three properties of `expect' and DejaGnu that -might be surprising at first glance: - - * Empty output for the first attempted match. The first set of - attempted matches shown ran against the output `{}'--that is, no - output. `expect' begins attempting to match the patterns supplied - immediately; often, the first pass is against incomplete output (or - completely before all output, as in this case). - - * Interspersed tool output. The beginning of the log entry for the - second attempted match may be hard to spot: this is because the - prompt `(gdb) ' appears on the same line, just before the `expect:' - that marks the beginning of the log entry. - - * Fail-safe patterns. Many of the patterns tested are fail-safe - patterns provided by GDB testing utilities, to reduce possible - indeterminacy. It is useful to anticipate potential variations - caused by extreme system conditions (GDB might issue the message - `virtual memory exhausted' in rare circumstances), or by changes in - the tested program (`Undefined command' is the likeliest outcome if - the name of a tested command changes). - - The pattern `{}' is a particularly interesting fail-safe - to notice; it checks for an unexpected prompt. This may - happen, for example, if the tested tool can filter output through a - pager. - - These fail-safe patterns (like the debugging log itself) are - primarily useful while developing test scripts. Use the `error' - procedure to make the actions for fail-safe patterns produce - messages starting with `ERROR' on the `runtest' standard output, - and in the detailed log file. - - -File: dejagnu.info, Node: Tests, Next: Extending, Prev: Internals, Up: Top - -How To Write a Test Case -************************ - -* Menu: - -* Writing:: Writing a test case -* Debugging:: Debugging a test case -* Adding:: Adding a test case to a test suite -* Hints:: Hints on writing a test case -* Variables:: Special variables used by test cases - - -File: dejagnu.info, Node: Writing, Next: Debugging, Up: Tests - -Writing a test case -=================== - - The easiest way to prepare a new test case is to base it on an -existing one for a similar situation. There are two major categories -of tests: batch or interactive. Batch oriented tests are usually -easier to write. - - The GCC tests are a good example of batch oriented tests. All GCC -tests consist primarily of a call to a single common procedure, since -all the tests either have no output, or only have a few warning -messages when successfully compiled. Any non-warning output is a test -failure. All the C code needed is kept in the test directory. The test -driver, written in `expect', need only get a listing of all the C files -in the directory, and compile them all using a generic procedure. This -procedure and a few others supporting for these tests are kept in the -library module `lib/c-torture.exp' in the GCC test suite. Most tests -of this kind use very few `expect' features, and are coded almost -purely in Tcl. - -Writing the complete suite of C tests, then, consisted of these steps: - - 1. Copying all the C code into the test directory. These tests were - based on the C-torture test created by Torbjorn Granlund (on - behalf of the Free Software Foundation) for GCC development. - - 2. Writing (and debugging) the generic `expect' procedures for - compilation. - - 3. Writing the simple test driver: its main task is to search the - directory (using the Tcl procedure `glob' for filename expansion - with wildcards) and call a Tcl procedure with each filename. It - also checks for a few errors from the testing procedure. - - Testing interactive programs is intrinsically more complex. Tests -for most interactive programs require some trial and error before they -are complete. - - However, some interactive programs can be tested in a simple fashion -reminiscent of batch tests. For example, prior to the creation of -DejaGnu, the GDB distribution already included a wide-ranging testing -procedure. This procedure was very robust, and had already undergone -much more debugging and error checking than many recent DejaGnu test -cases. Accordingly, the best approach was simply to encapsulate the -existing GDB tests, for reporting purposes. Thereafter, new GDB tests -built up a family of `expect' procedures specialized for GDB testing. - - `gdb.t10/crossload.exp' is a good example of an interactive test. - diff --git a/contrib/bluegnu2.0.3/doc/dejagnu.info-3 b/contrib/bluegnu2.0.3/doc/dejagnu.info-3 deleted file mode 100644 index 3e91476..0000000 --- a/contrib/bluegnu2.0.3/doc/dejagnu.info-3 +++ /dev/null @@ -1,1016 +0,0 @@ -This is Info file dejagnu.info, produced by Makeinfo version 1.68 from -the input file ./dejagnu.texi. - -START-INFO-DIR-ENTRY -* DejaGnu: (dejagnu). The GNU testing framework. -END-INFO-DIR-ENTRY - - Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the entire resulting derived work is distributed under the terms -of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions. - - -File: dejagnu.info, Node: Debugging, Next: Adding, Prev: Writing, Up: Tests - -Debugging a test case -===================== - -These are the kinds of debugging information available from DejaGnu: - - 1. Output controlled by test scripts themselves, explicitly allowed - for by the test author. This kind of debugging output appears in - the detailed output recorded in the `TOOL.log' file. To do the - same for new tests, use the `verbose' procedure (which in turn - uses the variable also called `verbose') to control how much - output to generate. This will make it easier for other people - running the test to debug it if necessary. Whenever possible, if - `$verbose' is `0', there should be no output other than the output - from `pass', `fail', `error', and `warning'. Then, to whatever - extent is appropriate for the particular test, allow successively - higher values of `$verbose' to generate more information. Be kind - to other programmers who use your tests: provide for a lot of - debugging information. - - 2. Output from the internal debugging functions of Tcl and `expect'. - There is a command line options for each; both forms of debugging - output are recorded in the file `dbg.log' in the current directory. - - Use `--debug' for information from the `expect' level; it - generates displays of the `expect' attempts to match the tool - output with the patterns specified (*note Debug Log: Debug.). This - output can be very helpful while developing test scripts, since it - shows precisely the characters received. Iterating between the - latest attempt at a new test script and the corresponding - `dbg.log' can allow you to create the final patterns by "cut and - paste". This is sometimes the best way to write a test case. - - Use `--strace' to see more detail at the Tcl level; this shows how - Tcl procedure definitions expand, as they execute. The associated - number controls the depth of definitions expanded; see the - discussion of `--strace' in *Note Running the Tests: Invoking - runtest. - - 3. Finally, if the value of `verbose' is 3 or greater, `runtest' - turns on the `expect' command `log_user'. This command prints all - `expect' actions to the `expect' standard output, to the detailed - log file, and (if `--debug' is on) to `dbg.log'. - - -File: dejagnu.info, Node: Adding, Next: Hints, Prev: Debugging, Up: Tests - -Adding a test case to a test suite -================================== - - There are two slightly different ways to add a test case. One is to -add the test case to an existing directory. The other is to create a new -directory to hold your test. The existing test directories represent -several styles of testing, all of which are slightly different; examine -the directories for the tool of interest to see which (if any) is most -suitable. - - Adding a GCC test can be very simple: just add the C code to any -directory beginning with `gcc.' and it runs on the next `runtest --tool -gcc'. - - To add a test to GDB, first add any source code you will need to the -test directory. Then you can either create a new `expect' file, or add -your test to an existing one (any file with a `.exp' suffix). Creating -a new `.exp' file is probably a better idea if the test is -significantly different from existing tests. Adding it as a separate -file also makes upgrading easier. If the C code has to be already -compiled before the test will run, then you'll have to add it to the -`Makefile.in' file for that test directory, then run `configure' and -`make'. - - Adding a test by creating a new directory is very similar: - - 1. Create the new directory. All subdirectory names begin with the - name of the tool to test; e.g. G++ tests might be in a directory - called `g++.other'. There can be multiple test directories that - start with the same tool name (such as `g++'). - - 2. Add the new directory name to the `configdirs' definition in the - `configure.in' file for the test suite directory. This way when - `make' and `configure' next run, they include the new directory. - - 3. Add the new test case to the directory, as above. - - 4. To add support in the new directory for configure and make, you - must also create a `Makefile.in' and a `configure.in'. *Note What - Configure Does: (configure.info)What Configure Does. - - -File: dejagnu.info, Node: Hints, Next: Variables, Prev: Adding, Up: Tests - -Hints on writing a test case -============================ - - There may be useful existing procedures already written for your -test in the `lib' directory of the DejaGnu distribution. *Note DejaGnu -Builtins: DejaGnu Builtins. - - It is safest to write patterns that match *all* the output generated -by the tested program; this is called "closure". If a pattern does not -match the entire output, any output that remains will be examined by -the *next* `expect' command. In this situation, the precise boundary -that determines which `expect' command sees what is very sensitive to -timing between the `expect' task and the task running the tested tool. -As a result, the test may sometimes appear to work, but is likely to -have unpredictable results. (This problem is particularly likely for -interactive tools, but can also affect batch tools--especially for -tests that take a long time to finish.) The best way to ensure closure -is to use the `-re' option for the `expect' command to write the -pattern as a full regular expressions; then you can match the end of -output using a `$'. It is also a good idea to write patterns that -match all available output by using `.*\' after the text of interest; -this will also match any intervening blank lines. Sometimes an -alternative is to match end of line using `\r' or `\n', but this is -usually too dependent on terminal settings. - - Always escape punctuation, such as `(' or `"', in your patterns; for -example, write `\('. If you forget to escape punctuation, you will -usually see an error message like `extra characters after close-quote'. - - If you have trouble understanding why a pattern does not match the -program output, try using the `--debug' option to `runtest', and -examine the debug log carefully. *Note Debug Log: Debug. - - Be careful not to neglect output generated by setup rather than by -the interesting parts of a test case. For example, while testing GDB, -I issue a send `set height 0\n' command. The purpose is simply to make -sure GDB never calls a paging program. The `set height' command in GDB -does not generate any output; but running *any* command makes GDB issue -a new `(gdb) ' prompt. If there were no `expect' command to match this -prompt, the output `(gdb) ' begins the text seen by the next `expect' -command--which might make *that* pattern fail to match. - - To preserve basic sanity, I also recommended that no test ever pass -if there was any kind of problem in the test case. To take an extreme -case, tests that pass even when the tool will not spawn are misleading. -Ideally, a test in this sort of situation should not fail either. -Instead, print an error message by calling one of the DejaGnu procedures -`error' or `warning'. - - -File: dejagnu.info, Node: Variables, Prev: Hints, Up: Tests - -Special variables used by test cases -==================================== - - Your test cases can use these variables, with conventional meanings -(as well as the variables saved in `site.exp' *note Setting `runtest' -defaults: Customizing.): - - *These variables are available to all test cases.* - -`prms_id' - The tracking system (e.g. GNATS) number identifying a corresponding - bugreport. (`0' if you do not specify it in the test script.) - -`bug_id' - An optional bug id; may reflect a bug identification from another - organization. (`0' if you do not specify it.) - -`subdir' - The subdirectory for the current test case. - - *These variables should never be changed. They appear in most - tests.* - -`expect_out(buffer)' - The output from the last command. This is an internal variable set - by `expect'. - -`exec_output' - This is the output from a `TOOL_load' command. This only applies - to tools like GCC and GAS which produce an object file that must - in turn be executed to complete a test. - -`comp_output' - This is the output from a `TOOL_start' command. This is - conventionally used for batch oriented programs, like GCC and GAS, - that may produce interesting output (warnings, errors) without - further interaction. - - -File: dejagnu.info, Node: Extending, Next: Installation, Prev: Tests, Up: Top - -New Tools, Targets, or Hosts -**************************** - - The most common ways to extend the DejaGnu framework are: adding a -suite of tests for a new tool to be tested; adding support for testing -on a new target; and porting `runtest' to a new host. - -* Menu: - -* Adding Tools:: How to add tests for a new tool -* Adding Targets:: How to add a new target -* Porting:: Porting DejaGnu to a new host - - -File: dejagnu.info, Node: Adding Tools, Next: Adding Targets, Up: Extending - -Writing tests for a new tool -============================ - - In general, the best way to learn how to write (code or even prose) -is to read something similar. This principle applies to test cases and -to test suites. Unfortunately, well-established test suites have a way -of developing their own conventions: as test writers become more -experienced with DejaGnu and with Tcl, they accumulate more utilities, -and take advantage of more and more features of `expect' and Tcl in -general. - - Inspecting such established test suites may make the prospect of -creating an entirely new test suite appear overwhelming. Nevertheless, -it is quite straightforward to get a new test suite going. - - There is one test suite that is guaranteed not to grow more elaborate -over time: both it and the tool it tests were created expressly to -illustrate what it takes to get started with DejaGnu. The `example/' -directory of the DejaGnu distribution contains both an interactive tool -called `calc', and a test suite for it. Reading this test suite, and -experimenting with it, is a good way to supplement the information in -this section. (Thanks to Robert Lupton for creating `calc' and its -test suite--and also the first version of this section of the manual!) - - To help orient you further in this task, here is an outline of the -steps to begin building a test suite for a program EXAMPLE. - - 1. Create or select a directory to contain your new collection of - tests. Change to that directory (shown here as `testsuite'): - - eg$ cd testsuite/ - - 2. Create a `configure.in' file in this directory, to control - configuration-dependent choices for your tests. So far as DejaGnu - is concerned, the important thing is to set a value for the - variable `target_abbrev'; this value is the link to the init file - you will write soon. (For simplicity, we assume the environment - is Unix, and use `unix' as the value.) - - What else is needed in `configure.in' depends on the requirements - of your tool, your intended test environments, and which - `configure' system you use. This example is a minimal - `configure.in' for use with Cygnus Configure. (For an alternative - based on the FSF `autoconf' system, see the `calc' example - distributed with DejaGnu.) Replace EXAMPLE with the name of your - program: - - # This file is a shell script fragment - # for use with Cygnus configure. - - srctrigger="EXAMPLE.0" - srcname="The DejaGnu EXAMPLE tests" - - # per-host: - - # per-target: - - # everything defaults to unix for a target - target_abbrev=unix - - # post-target: - - 3. Create `Makefile.in', the source file used by `configure' to build - your `Makefile'. Its leading section should as usual contain the - values that `configure' may override: - - srcdir = . - prefix = /usr/local - - exec_prefix = $(prefix) - bindir = $(exec_prefix)/bin - libdir = $(exec_prefix)/lib - tooldir = $(libdir)/$(target_alias) - - datadir = $(exec_prefix)/lib/dejagnu - - RUNTEST = runtest - RUNTESTFLAGS = - FLAGS_TO_PASS = - - #### host, target, site specific Makefile frags come in here. - - This should be followed by the standard targets at your site. To - begin with, they need not do anything--for example, these - definitions will do: - - - all: - - info: - - install-info: - - install: - uninstall: - - clean: - -rm -f *~ core *.info* - - It is also a good idea to make sure your `Makefile' can rebuild - itself if `Makefile.in' changes, with a target like this (which - works for either Cygnus or FSF Configure): - - Makefile : $(srcdir)/Makefile.in $(host_makefile_frag) \ - $(target_makefile_frag) - $(SHELL) ./config.status - - You also need to include two targets important to DejaGnu: `check', - to run the tests, and `site.exp', to set up the Tcl copies of - configuration-dependent values. The `check' target must run - `runtest --tool EXAMPLE': - - check: site.exp all - $(RUNTEST) $(RUNTESTFLAGS) $(FLAGS_TO_PASS) \ - --tool EXAMPLE --srcdir $(srcdir) - - The `site.exp' target should usually set up (among other things!) a - Tcl variable for the name of your program: - - site.exp: ./config.status Makefile - @echo "Making a new config file..." - -@rm -f ./tmp? - @touch site.exp - - -@mv site.exp site.bak - @echo "## these variables are automatically\ - generated by make ##" > ./tmp0 - @echo "# Do not edit here. If you wish to\ - override these values" >> ./tmp0 - @echo "# add them to the last section" >> ./tmp0 - @echo "set host_os ${host_os}" >> ./tmp0 - @echo "set host_alias ${host_alias}" >> ./tmp0 - @echo "set host_cpu ${host_cpu}" >> ./tmp0 - @echo "set host_vendor ${host_vendor}" >> ./tmp0 - @echo "set target_os ${target_os}" >> ./tmp0 - @echo "set target_alias ${target_alias}" >> ./tmp0 - @echo "set target_cpu ${target_cpu}" >> ./tmp0 - @echo "set target_vendor ${target_vendor}" >> ./tmp0 - @echo "set host_triplet ${host_canonical}" >> ./tmp0 - @echo "set target_triplet ${target_canonical}">>./tmp0 - @echo "set tool binutils" >> ./tmp0 - @echo "set srcdir ${srcdir}" >> ./tmp0 - @echo "set objdir `pwd`" >> ./tmp0 - @echo "set EXAMPLENAME EXAMPLE" >> ./tmp0 - @echo "## All variables above are generated by\ - configure. Do Not Edit ##" >> ./tmp0 - @cat ./tmp0 > site.exp - @sed < site.bak \ - -e '1,/^## All variables above are.*##/ d' \ - >> site.exp - -@rm -f ./tmp? - - 4. Create a directory (in `testsuite/') called `config/': - - eg$ mkdir config - - 5. Make an init file in this directory; its name must start with the - `target_abbrev' value, so call it `config/unix.exp'. This is the - file that contains the target-dependent procedures; fortunately, - most of them do not have to do very much in order for `runtest' to - run. - - If EXAMPLE is not interactive, you can get away with this minimal - `unix.exp' to begin with: - - proc foo_exit {} {} - proc foo_version {} {} - - If EXAMPLE is interactive, however, you might as well define a - start routine *and invoke it* by using an init file like this: - - proc foo_exit {} {} - proc foo_version {} {} - - proc foo_start {} { - global EXAMPLENAME - spawn $EXAMPLENAME - expect { - -re "" {} - } - } - foo_start - - 6. Create a directory whose name begins with your tool's name, to - contain tests: - - eg$ mkdir EXAMPLE.0 - - 7. Create a sample test file in `EXAMPLE.0'. Its name must end with - `.exp'; you can use `first-try.exp' To begin with, just write - there a line of Tcl code to issue a message: - - send_user "Testing: one, two...\n" - - 8. Back in the `testsuite/' (top level) directory, run - - eg$ configure - - (You may have to specify more of a path, if a suitable `configure' - is not available in your execution path.) - - 9. You are now ready to triumphantly type `make check' or `runtest - --tool EXAMPLE'. You should see something like this: - - Test Run By rhl on Fri Jan 29 16:25:44 EST 1993 - - === EXAMPLE tests === - - Running ./EXAMPLE.0/first-try.exp ... - Testing: one, two... - - === EXAMPLE Summary === - - There is no output in the summary, because so far the example does - not call any of the procedures that establish a test outcome. - - 10. Begin writing some real tests. For an interactive tool, you should - probably write a real exit routine in fairly short order; in any - case, you should also write a real version routine soon. - - -File: dejagnu.info, Node: Adding Targets, Next: Porting, Prev: Adding Tools, Up: Extending - -Adding a target -=============== - - DejaGnu has some additional requirements for target support, beyond -the general-purpose provisions of Cygnus `configure'. `runtest' must -actively communicate with the target, rather than simply generating or -managing code for the target architecture. Therefore, each tool -requires an initialization module for each target. For new targets, you -must supply a few Tcl procedures to adapt DejaGnu to the target. This -permits DejaGnu itself to remain target independent. *Note -Initialization module: Init Module, for a discussion of the naming -conventions that enable DejaGnu to locate and use init files. - - Usually the best way to write a new initialization module is to edit -an existing initialization module; some trial and error will be -required. If necessary, you can use the `--debug' option to see what -is really going on. - - When you code an initialization module, be generous in printing -information controlled by the `verbose' procedure (*note DejaGnu -procedures: DejaGnu Builtins.). - - Most of the work is in getting the communications right. -Communications code (for several situations involving IP networks or -serial lines) is available in a DejaGnu library file, `lib/remote.exp'. -*Note DejaGnu Builtins: DejaGnu Builtins. - - If you suspect a communication problem, try running the connection -interactively from `expect'. (There are three ways of running `expect' -as an interactive interpreter. You can run `expect' with no arguments, -and control it completely interactively; or you can use `expect -i' -together with other command-line options and arguments; or you can run -the command `interpreter' from any `expect' procedure. Use `return' to -get back to the calling procedure (if any), or `return -tcl' to make -the calling procedure itself return to its caller; use `exit' or -end-of-file to leave `expect' altogether.) Run the program whose name -is recorded in `$connectmode', with the arguments in `$targetname', to -establish a connection. You should at least be able to get a prompt -from any target that is physically connected. - - -File: dejagnu.info, Node: Porting, Prev: Adding Targets, Up: Extending - -Porting to a new host -===================== - - The task of porting DejaGnu is basically that of porting Tcl and -`expect'. Tcl and `expect', as distributed with DejaGnu, both use -`autoconf'; they should port automatically to most Unix systems. - - Once Tcl and `expect' are ported, DejaGnu should run. Most system -dependencies are taken care of by using `expect' as the main command -shell. - - -File: dejagnu.info, Node: Installation, Next: Index, Prev: Extending, Up: Top - -Installing DejaGnu -****************** - - Once you have the DejaGnu source unpacked and available, you must -first configure the software to specify where it is to run (and the -associated defaults); then you can proceed to installing it. - -* Menu: - -* Configuring DejaGnu:: -* Installing DejaGnu:: - - -File: dejagnu.info, Node: Configuring DejaGnu, Next: Installing DejaGnu, Up: Installation - -Configuring the DejaGnu test driver -=================================== - - It is usually best to configure in a directory separate from the -source tree, specifying where to find the source with the optional -`--srcdir' option to `configure'. DejaGnu uses the GNU `autoconf' to -configure itself. For more info on using autoconf, read the GNU -autoconf manual. To configure, execute the `configure' program, no -other options are required. For an example, to configure in a seperate -tree for objects, execute the configure script from the source tree -like this: - - ../dejagnu-1.3/configure - - DejaGnu doesn't care at config time if it's for testing a native -system or a cross system. That is determined at runtime by using the -config files. - - You may also want to use the `configure' option `--prefix' to -specify where you want DejaGnu and its supporting code installed. By -default, installation is in subdirectories of `/usr/local', but you can -select any alternate directory ALTDIR by including `--prefix=ALTDIR' on -the `configure' command line. (This value is captured in the Makefile -variables `prefix' and `exec_prefix'.) - - Save for a small number of example tests, the DejaGnu distribution -itself does not include any test suites; these are available separately. -Test suites for the GNU compiler (testing both GCC and G++) and for the -GNU binary utilities are distributed in parallel with the DejaGnu -distribution (but packaged as separate files). The test suite for the -GNU debugger is distributed in parallel with each release of GDB -itself, starting with GDB 4.9. After configuring the top-level DejaGnu -directory, unpack and configure the test directories for the tools you -want to test; then, in each test directory, run `make' to build -auxiliary programs required by some of the tests. - - -File: dejagnu.info, Node: Installing DejaGnu, Prev: Configuring DejaGnu, Up: Installation - -Installing DejaGnu -================== - - To install DejaGnu in your filesystem (either in `/usr/local', or as -specified by your `--prefix' option to `configure'), execute - - eg$ make install - -`make install' does these things for DejaGnu: - - 1. Look in the path specified for executables (`$exec_prefix') for - directories called `lib' and `bin'. If these directories do not - exist, `make install' creates them. - - 2. Create another directory in the `lib' directory, called `dejagnu'. - - 3. Copy the `runtest' shell script into `$exec_prefix/bin'. - - 4. Copy all the library files (used to support the framework) into - `$exec_prefix/lib/dejagnu'. - - 5. Copy `runtest.exp' into `$exec_prefix/lib/dejagnu'. This is the - main Tcl code implementing DejaGnu. - - - Each test suite collection comes with simple installation -instructions in a `README' file; in general, the test suites are -designed to be unpacked in the source directory for the corresponding -tool, and extract into a directory called `testsuite'. - - -File: dejagnu.info, Node: Index, Prev: Installation, Up: Top - -Index -***** - -* Menu: - -* --all (runtest option): Invoking runtest. -* --baud (runtest option): Invoking runtest. -* --build (runtest option): Invoking runtest. -* --connect (runtest option): Invoking runtest. -* --debug (runtest option): Invoking runtest. -* --help (runtest option): Invoking runtest. -* --host (runtest option): Invoking runtest. -* --name (runtest option): Invoking runtest. -* --objdir (runtest option): Invoking runtest. -* --outdir (runtest option): Invoking runtest. -* --reboot (runtest option): Invoking runtest. -* --srcdir (runtest option): Invoking runtest. -* --strace (runtest option): Invoking runtest. -* --target (runtest option): Invoking runtest. -* --tool (runtest option): Invoking runtest. -* --tool and naming conventions: Names. -* --verbose (runtest option): Invoking runtest. -* --version (runtest option): Invoking runtest. -* -b (runtest option): Invoking runtest. -* -V (runtest option): Invoking runtest. -* -v (runtest option): Invoking runtest. -* .exp: Overview. -* absolute PATH: utils.exp. -* adding a target: Adding Targets. -* adding a test case: Adding. -* all_flag: Config Values. -* ambiguity, required for POSIX: Posix. -* archive object files: target.exp. -* auxiliary files, building: Running Tests. -* auxiliary programs: Configuring DejaGnu. -* auxiliary test programs: Invoking runtest. -* baud: Config Values. -* baud rate, specifying: Invoking runtest. -* bps, specifying: Invoking runtest. -* bt: debugger.exp. -* bug number: Variables. -* bug number, extra: Variables. -* bug_id: Variables. -* build config name, changing: Invoking runtest. -* build host configuration test: framework.exp. -* build_triplet: Config Values. -* built in procedures, DejaGnu: DejaGnu Builtins. -* C torture test: Writing. -* canadian cross configuration test: framework.exp. -* cancelling expected failure: framework.exp. -* check makefile target: Running Tests. -* clear_xfail CONFIG: framework.exp. -* Closing a remote connection: remote.exp. -* command line option variables: Config Values. -* command line options: Invoking runtest. -* command line Tcl variable definition: Invoking runtest. -* communications procedures: remote.exp. -* comp_output: Variables. -* comparing files: utils.exp. -* compile a file: target.exp. -* configuration dependent defaults: Config Values. -* configuring DejaGnu: Installation. -* connecting to target: Invoking runtest. -* connectmode: Config Values. -* converting relative paths to absolute: utils.exp. -* Core Internal Procedures: framework.exp. -* cross configuration: Running Tests. -* current test subdirectory: Variables. -* dbg.log file: Invoking runtest. -* debug log: Debug. -* debug log for test cases: Invoking runtest. -* debugger.exp: debugger.exp. -* debugging a test case: Debugging. -* default options, controlling: Config Values. -* defaults, option: Config Values. -* defaults, setting in init file: Init Module. -* DejaGnu configuration: Installation. -* DejaGnu test driver: Invoking runtest. -* DejaGnu, the name: Design Goals. -* Delete a watchpoint.: debugger.exp. -* design goals: Design Goals. -* detailed log: Detail. -* diff FILENAME FILENAME: utils.exp. -* directories matching a pattern: utils.exp. -* directory names and --tool: Names. -* download a file: remote.exp. -* download FILE [ SPAWNID ]: remote.exp. -* download, tip: remote.exp. -* dumplocals *expr*: debugger.exp. -* dumprocs *expr*: debugger.exp. -* dumpvars *expr*: debugger.exp. -* dumpwatch *expr*: debugger.exp. -* echo.exp: Sample Test. -* ERROR <1>: framework.exp. -* ERROR: Invoking runtest. -* example: Sample Test. -* exec_output: Variables. -* exec_prefix, configure options.: Configuring DejaGnu. -* execute_anywhere *cmdline*: target.exp. -* executing commands remotely: target.exp. -* existing tests, running: Running Tests. -* exit code from runtest: Invoking runtest. -* exit procedure, tested tools: Target Dependent. -* exit_remote_shell SPAWNID: remote.exp. -* exp filename suffix: Names. -* expect internal tracing: Invoking runtest. -* expect script names: Overview. -* expect scripting language: Tcl and Expect. -* expect_out(buffer): Variables. -* expected failure <1>: framework.exp. -* expected failure: Invoking runtest. -* expected failure, cancelling: framework.exp. -* FAIL <1>: Invoking runtest. -* FAIL: Posix. -* fail "STRING": framework.exp. -* failing test, expected: Invoking runtest. -* failing test, unexpected: Invoking runtest. -* failure, expected: framework.exp. -* failure, POSIX definition: Posix. -* filename for test files: Names. -* files matching a pattern: utils.exp. -* find DIR PATTERN: utils.exp. -* findfile: Init Module. -* finding file differences: utils.exp. -* future directions: Future Directions. -* gdb.t00/echo.exp: Sample Test. -* get_warning_threshold: framework.exp. -* getdirs DIR: utils.exp. -* getdirs DIR PATTERN: utils.exp. -* getenv VAR: utils.exp. -* getting environment variables: utils.exp. -* GNATS bug number: Variables. -* Granlund, Torbjorn: Writing. -* grep FILENAME REGEXP: utils.exp. -* grep FILENAME REGEXP line: utils.exp. -* help with runtest: Invoking runtest. -* hints on test case writing: Hints. -* host config name, changing: Invoking runtest. -* host configuration test: framework.exp. -* host, explained: Installation. -* host_triplet: Config Values. -* ignoretests: Config Values. -* init file name: Init Module. -* init file, purpose: Init Module. -* initialization: Init Module. -* input files: Input Files. -* installed tool name: framework.exp. -* installing DejaGnu: Installing DejaGnu. -* internal details: Internals. -* invoking: Invoking runtest. -* IP network procedures: remote.exp. -* isbuild "HOST": framework.exp. -* ishost "HOST": framework.exp. -* isnative: framework.exp. -* istarget "TARGET": framework.exp. -* kermit PORT BPS: remote.exp. -* kermit, remote testing via: Invoking runtest. -* last command output: Variables. -* lib/debugger.exp: debugger.exp. -* lib/remote.exp: remote.exp. -* lib/target.exp: target.exp. -* lib/utils.exp: utils.exp. -* Libes, Don: Tcl and Expect. -* list, pruning: utils.exp. -* list_targets: target.exp. -* lists supported targets: target.exp. -* load library file: framework.exp. -* load procedure, tested tools: Target Dependent. -* load_lib "LIBRARY-FILE": framework.exp. -* local site.exp: Local Config File. -* log files, where to write: Invoking runtest. -* Lupton, Robert: Adding Tools. -* make builds part of tests: Configuring DejaGnu. -* make check: Running Tests. -* master site.exp: Master Config File. -* Menapace, Julia: Design Goals. -* mondfe: Cross Targets. -* mondfe, remote testing via: Invoking runtest. -* name "DejaGnu": Design Goals. -* name for remote test machine: Invoking runtest. -* name transformations: framework.exp. -* name, initialization module: Init Module. -* naming conventions: Names. -* naming tests to run: Invoking runtest. -* native configuration: Running Tests. -* native configuration test: framework.exp. -* network (IP) procedures: remote.exp. -* NOTE <1>: framework.exp. -* NOTE: Invoking runtest. -* note "STRING": framework.exp. -* objdir: Config Values. -* object directory: Invoking runtest. -* Opening a remote connection: remote.exp. -* operating principles: Internals. -* option defaults: Config Values. -* option list, runtest: Invoking runtest. -* options: Invoking runtest. -* options for runtest, common: Running Tests. -* options, Tcl variables for defaults: Config Values. -* order of tests: Names. -* Ousterhout, John K.: Tcl and Expect. -* outdir: Config Values. -* output directory: Invoking runtest. -* output files: Output Files. -* output, additional: Invoking runtest. -* overriding site.exp: Customizing. -* overview: Overview. -* PASS <1>: Invoking runtest. -* PASS: Posix. -* pass "STRING": framework.exp. -* path lookup: utils.exp. -* pattern match, directory: utils.exp. -* pattern match, filenames: utils.exp. -* perror "STRING NUMBER": framework.exp. -* personal config site.exp: Personal Config File. -* pop_host: target.exp. -* pop_target: target.exp. -* porting to a new host: Porting. -* POSIX conformance: Posix. -* prefix, configure options: Configuring DejaGnu. -* print *var*: debugger.exp. -* Print a backtrace: debugger.exp. -* Print global variable values: debugger.exp. -* Print local variable value: debugger.exp. -* Print procedure bodies: debugger.exp. -* Print watchpoints: debugger.exp. -* Printing variable values: debugger.exp. -* PRMS bug number: Variables. -* prms_id: Variables. -* problem, detected by test case: Invoking runtest. -* prune LIST PATTERN: utils.exp. -* prune_system_crud SYSTEM TEXT: utils.exp. -* pruning system output, examining program output: utils.exp. -* psource FILENAME: utils.exp. -* push_host *name*: target.exp. -* push_target *name*: target.exp. -* quit: debugger.exp. -* Quiting DejaGnu: debugger.exp. -* ranlib a file: target.exp. -* reboot: Config Values. -* rebooting remote targets: Invoking runtest. -* regular expression, file contents: utils.exp. -* remote connection procedures: remote.exp. -* remote connection, ending: remote.exp. -* remote test machine name: Invoking runtest. -* remote testbed, connecting to: Invoking runtest. -* remote testing: Cross Targets. -* remote testing via kermit: Invoking runtest. -* remote testing via mondfe: Invoking runtest. -* remote testing via rlogin: Invoking runtest. -* remote testing via rsh: Invoking runtest. -* remote testing via telnet: Invoking runtest. -* remote testing via tip: Invoking runtest. -* remote.exp: remote.exp. -* remote_close SHELLID: remote.exp. -* remote_open TYPE: remote.exp. -* rlogin HOSTNAME: remote.exp. -* rlogin, remote testing via: Invoking runtest. -* rsh HOSTNAME: remote.exp. -* rsh, remote testing via: Invoking runtest. -* running: Invoking runtest. -* running tests: Running Tests. -* runtest description: Invoking runtest. -* runtest exit code: Invoking runtest. -* runtest option defaults: Config Values. -* runtest option list: Invoking runtest. -* runtest, listing options: Invoking runtest. -* runtest, most common options: Running Tests. -* runtest, variable defns on cmdline: Invoking runtest. -* runtest.exp: Internals. -* runtest_file_p RUNTESTS TESTCASE: utils.exp. -* runtests: Config Values. -* searching file contents: utils.exp. -* selecting a range of tests <1>: utils.exp. -* selecting a range of tests: Invoking runtest. -* selecting tests for a tool: Invoking runtest. -* serial download, tip: remote.exp. -* serial line connection, kermit: remote.exp. -* serial line connection, tip: remote.exp. -* set current host: target.exp. -* set current target: target.exp. -* set_warning_threshold THRESHOLD: framework.exp. -* setenv VAR VAL: utils.exp. -* setting defaults for DejaGnu variables: Config Values. -* setting environment variables: utils.exp. -* setting up targets: Init Module. -* setup_xfail "CONFIG [BUGID]": framework.exp. -* site.exp: Customizing. -* site.exp for all of DejaGnu: Master Config File. -* site.exp for each person: Personal Config File. -* site.exp for each tool: Local Config File. -* site.exp, multiple: Customizing. -* slay NAME: utils.exp. -* slaying processes: utils.exp. -* source directory: Invoking runtest. -* sourcing Tcl files: utils.exp. -* special variables: Variables. -* specifying target name: Invoking runtest. -* specifying the build config name: Invoking runtest. -* specifying the host config name: Invoking runtest. -* specifying the target configuration: Invoking runtest. -* srcdir: Config Values. -* standard conformance: POSIX 1003.3: Posix. -* start procedure, tested tools: Target Dependent. -* starting interactive tools: Init Module. -* starting the tcl debugger: Invoking runtest. -* subdir: Variables. -* success, POSIX definition: Posix. -* successful test: Invoking runtest. -* successful test, unexpected: Invoking runtest. -* suffix, expect scripts: Overview. -* summary log: Summary. -* target configuration test: framework.exp. -* target configuration, specifying: Invoking runtest. -* target dependent procedures: Target Dependent. -* target machine name: Invoking runtest. -* target, explained: Installation. -* target.exp: target.exp. -* target_triplet: Config Values. -* targetname: Config Values. -* targets: Cross Targets. -* tcl: Tcl and Expect. -* tcl debugger: Invoking runtest. -* Tcl variables for option defaults: Config Values. -* Tcl variables, defining for runtest: Invoking runtest. -* TCLVAR=VALUE: Invoking runtest. -* telnet HOSTNAME PORT: remote.exp. -* telnet, remote testing via: Invoking runtest. -* terminating remote connection: remote.exp. -* test case cannot run: Invoking runtest. -* test case messages: Invoking runtest. -* test case warnings: Invoking runtest. -* test case, debugging: Debugging. -* test case, declaring ambiguity: framework.exp. -* test case, declaring failure: framework.exp. -* test case, declaring no support: framework.exp. -* test case, declaring no test: framework.exp. -* test case, declaring success: framework.exp. -* test case, ERROR in: framework.exp. -* test case, expecting failure: framework.exp. -* test case, informational messages: framework.exp. -* test case, WARNING in: framework.exp. -* test case, WARNING threshold: framework.exp. -* test case, writing: Tests. -* test cases, debug log: Invoking runtest. -* test directories, naming: Names. -* test filename: Names. -* test output, displaying all: Invoking runtest. -* test programs, auxiliary: Invoking runtest. -* test suite distributions: Configuring DejaGnu. -* test, failing: Invoking runtest. -* test, successful: Invoking runtest. -* test, unresolved outcome: Invoking runtest. -* test, unsupported: Invoking runtest. -* tests, running: Running Tests. -* tests, running order: Names. -* tests, running specifically <1>: utils.exp. -* tests, running specifically: Invoking runtest. -* TET: Posix. -* tip PORT: remote.exp. -* tip, remote testing via: Invoking runtest. -* tip_download SPAWNID FILE: remote.exp. -* tool: Config Values. -* tool command language: Tcl and Expect. -* tool initialization: Init Module. -* tool name, as installed: framework.exp. -* tool names and naming conventions: Names. -* TOOL_exit: Target Dependent. -* TOOL_load: Target Dependent. -* TOOL_start: Target Dependent. -* TOOL_version: Target Dependent. -* tracelevel: Config Values. -* tracing Tcl commands: Invoking runtest. -* transform: Init Module. -* transform "TOOLNAME": framework.exp. -* transform tool name: framework.exp. -* turning on output: Invoking runtest. -* unexpected success: Invoking runtest. -* UNRESOLVED <1>: Invoking runtest. -* UNRESOLVED: Posix. -* unresolved "STRING": framework.exp. -* unset current host: target.exp. -* unset current target: target.exp. -* unsetenv VAR: utils.exp. -* unsetting environment variables: utils.exp. -* UNSUPPORTED <1>: Invoking runtest. -* UNSUPPORTED: Posix. -* unsupported "STRING": framework.exp. -* unsupported test: Invoking runtest. -* UNTESTED <1>: Invoking runtest. -* UNTESTED: Posix. -* untested "STRING": framework.exp. -* untested properties: Invoking runtest. -* utilities, loading from init file: Init Module. -* utils.exp: utils.exp. -* variables for all tests: Variables. -* variables for option defaults: Config Values. -* variables of DejaGnu, defaults: Customizing. -* verbose: Config Values. -* verbose [-log] [-n] [-] "STRING" NUMBER: framework.exp. -* verbose builtin function: framework.exp. -* version numbers: Invoking runtest. -* version procedure, tested tools: Target Dependent. -* VxWorks, link with -r: Cross Targets. -* WARNING <1>: framework.exp. -* WARNING: Invoking runtest. -* warning "STRING NUMBER": framework.exp. -* Watch when a variable is read: debugger.exp. -* Watch when a variable is unset: debugger.exp. -* Watch when a variable is written: debugger.exp. -* watchdel *watch*: debugger.exp. -* watchread *var*: debugger.exp. -* watchunset *var*: debugger.exp. -* watchwrite *var*: debugger.exp. -* What is New: What is New. -* which BINARY: utils.exp. -* writing a test case: Tests. -* XFAIL <1>: Invoking runtest. -* XFAIL: Posix. -* XFAIL, avoiding for POSIX: Posix. -* XFAIL, producing: framework.exp. -* XPASS: Invoking runtest. -* XPASS, producing: framework.exp. - - diff --git a/contrib/bluegnu2.0.3/doc/dejagnu.pdf b/contrib/bluegnu2.0.3/doc/dejagnu.pdf deleted file mode 100644 index 6f6d12d..0000000 --- a/contrib/bluegnu2.0.3/doc/dejagnu.pdf +++ /dev/null @@ -1,4844 +0,0 @@ -%PDF-1.2 -8 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -194.44 -/Flags 4 -/FontBBox [-40 -250 1009 969] -/FontName /CMR10 -/ItalicAngle 0 -/XHeight 431 -/StemV 80 -/FontFile 7 0 R ->> -endobj -9 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F1 -/FontDescriptor 8 0 R -/BaseFont /PNKVMB+CMR10 -/FirstChar 0 -/LastChar 127 -/Widths [625 833.34 777.78 694.45 666.67 750 722.22 777.78 722.22 777.78 722.22 583.34 -555.56 555.56 833.34 833.34 277.78 305.56 500 500 500 500 500 750 444.45 500 722.22 -777.78 500 902.78 1013.89 777.78 277.78 277.78 500 833.34 500 833.34 777.78 277.78 -388.89 388.89 500 777.78 277.78 333.33 277.78 500 500 500 500 500 500 500 500 500 -500 500 277.78 277.78 277.78 777.78 472.22 472.22 777.78 750 708.34 722.22 763.89 -680.56 652.78 784.72 750 361.11 513.89 777.78 625 916.67 750 777.78 680.56 777.78 -736.11 555.56 722.22 750 750 1027.78 750 750 611.11 277.78 500 277.78 500 277.78 -277.78 500 555.56 444.45 555.56 444.45 305.56 500 555.56 277.78 305.56 527.78 277.78 -833.34 555.56 500 555.56 527.78 391.67 394.45 388.89 555.56 527.78 722.22 527.78 -527.78 444.45 500 1000 500 500 500] ->> -endobj -11 0 obj -<< -/Type /FontDescriptor -/CapHeight 686.11 -/Ascent 694.44 -/Descent -194.44 -/Flags 4 -/FontBBox [-296 -251 1139 946] -/FontName /CMBX12 -/ItalicAngle 0 -/XHeight 444 -/StemV 80 -/FontFile 10 0 R ->> -endobj -12 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F2 -/FontDescriptor 11 0 R -/BaseFont /XOEAXU+CMBX12 -/FirstChar 0 -/LastChar 127 -/Widths [675.93 937.5 875 787.04 750 879.63 812.5 875 812.5 875 812.5 656.25 625 -625 937.5 937.5 312.5 343.75 562.5 562.5 562.5 562.5 562.5 849.54 500 574.07 812.5 -875 562.5 1018.52 1143.52 875 312.5 342.59 581.02 937.5 562.5 937.5 875 312.5 437.5 -437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 -562.5 562.5 312.5 312.5 342.59 875 531.25 531.25 875 849.54 799.77 812.5 862.27 738.43 -707.18 884.26 879.63 418.98 581.02 880.79 675.93 1067.13 879.63 844.91 768.52 844.91 -839.12 625 782.41 864.58 849.54 1162.04 849.54 849.54 687.5 312.5 581.02 312.5 562.5 -312.5 312.5 546.88 625 500 625 513.31 343.75 562.5 625 312.5 343.75 593.75 312.5 -937.5 625 562.5 625 593.75 459.49 443.75 437.5 625 593.75 812.5 593.75 593.75 500 -562.5 1125 562.5 562.5 562.5] ->> -endobj -14 0 obj -<< -/Length 480 ->> -stream -0 w 0 g 0 G BT/F1 9.96 Tf 37.93 -9.96 TD[(o)]TJ/F2 20.66 Tf -19.93 -123.44 TD[(The)-374(DejaGn)30(u)-374(T)93(esting)-374(F)92(ramew)32(ork)]TJ ET 18.00 -145.39 m 450.00 -145.39 l 450.00 -141.41 l 18.00 -141.41 l b BT/F1 10.91 Tf 334.5 -156.95 TD[(for)-333(DejaGn)27(u)-332(V)82(ersion)-332(1.3)]TJ 72.92 -26.1 TD[(Jan)-333(1996)]TJ/F2 14.35 Tf -389.42 -425.07 TD[(Rob)-374(Sa)30(v)31(o)31(y)32(e)]TJ ET 18.00 -616.89 m 450.00 -616.89 l 450.00 -614.89 l 18.00 -614.89 l b 0 g 0 G -endstream -endobj -16 0 obj -<< -/F1 9 0 R -/F2 12 0 R ->> -endobj -6 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 16 0 R ->> -endobj -20 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -960 -/Flags 68 -/FontBBox [-29 -960 1116 775] -/FontName /CMSY10 -/ItalicAngle -14 -/XHeight 431 -/StemV 80 -/FontFile 19 0 R ->> -endobj -21 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F3 -/FontDescriptor 20 0 R -/BaseFont /ZRNQXX+CMSY10 -/FirstChar 0 -/LastChar 127 -/Widths [777.78 277.78 777.78 500 777.78 500 777.78 777.78 777.78 777.78 777.78 777.78 -777.78 1000 500 500 777.78 777.78 777.78 777.78 777.78 777.78 777.78 777.78 777.78 -777.78 777.78 777.78 1000 1000 777.78 777.78 1000 1000 500 500 1000 1000 1000 777.78 -1000 1000 611.11 611.11 1000 1000 1000 777.78 275 1000 666.67 666.67 888.89 888.89 -0 0 555.56 555.56 666.67 500 722.22 722.22 777.78 777.78 611.11 798.47 656.81 526.53 -771.39 527.78 718.75 594.87 844.52 544.52 677.78 761.95 689.72 1200.9 820.49 796.11 -695.56 816.67 847.5 605.56 544.64 625.83 612.78 987.78 713.3 668.34 724.73 666.67 -666.67 666.67 666.67 666.67 611.11 611.11 444.45 444.45 444.45 444.45 500 500 388.89 -388.89 277.78 500 500 611.11 500 277.78 833.34 750 833.34 416.67 666.67 666.67 777.78 -777.78 444.45 444.45 444.45 611.11 777.78 777.78 777.78 777.78] ->> -endobj -22 0 obj -<< -/Length 1550 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 372.64 -49.02 TD[(Cygn)27(us)-332(Supp)-28(ort)]TJ -354.64 -488.63 TD[(Cop)27(yrigh)28(t)]TJ 54.27 0.32 TD[(c)]TJ/F3 10.91 Tf -3.03 -0.32 TD[(\015)]TJ/F1 10.91 Tf 14.55 0 TD[(92,)-333(93,)-333(94,)-333(95,)-334(1996)-333(F)82(ree)-332(Soft)27(w)27(are)-332(F)82(oundation,)-332(Inc.)]TJ -65.79 -16.14 TD[(P)27(ermission)-352(is)-354(gran)27(ted)-352(to)-354(mak)27(e)-352(and)-354(distribute)-353(v)27(erbatim)-353(copies)-353(of)-354(this)-353(man)27(ual)-353(pro)27(vided)-352(the)]TJ 0 -13.15 TD[(cop)27(yrigh)28(t)-332(notice)-334(and)-333(this)-333(p)-28(ermission)-333(notice)-334(are)-333(preserv)27(ed)-333(on)-333(all)-333(copies.)]TJ 0 -16.14 TD[(P)27(ermission)-418(is)-419(gran)27(ted)-419(to)-419(cop)27(y)-418(and)-420(distribute)-419(mo)-28(di\014ed)-419(v)27(ersions)-418(of)-419(this)-420(man)27(ual)-418(under)-419(the)]TJ 0 -13.15 TD[(conditions)-460(for)-461(v)27(erbatim)-459(cop)26(ying,)-491(pro)27(vided)-460(also)-460(that)-461(the)-460(en)26(tire)-459(resulting)-461(deriv)27(ed)-459(w)26(ork)-459(is)]TJ 0 -13.16 TD[(distributed)-333(under)-333(the)-333(terms)-334(of)-333(a)-333(p)-28(ermission)-334(notice)-333(iden)27(tical)-332(to)-334(this)-333(one.)]TJ 0 -16.13 TD[(P)27(ermission)-362(is)-364(gran)27(ted)-363(to)-364(cop)27(y)-363(and)-363(distribute)-364(translations)-364(of)-363(this)-364(man)27(ual)-363(in)27(to)-363(another)-363(lan-)]TJ 0 -13.16 TD[(guage,)-333(under)-333(the)-333(ab)-28(o)27(v)27(e)-332(conditions)-333(for)-334(mo)-27(di\014ed)-334(v)27(ersions.)]TJ ET 0 g 0 G -endstream -endobj -23 0 obj -<< -/F1 9 0 R -/F3 21 0 R ->> -endobj -18 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 23 0 R ->> -endobj -27 0 obj -<< -/Type /FontDescriptor -/CapHeight 611.11 -/Ascent 611.11 -/Descent -222.22 -/Flags 5 -/FontBBox [-4 -235 731 800] -/FontName /CMTT10 -/ItalicAngle 0 -/XHeight 431 -/StemV 80 -/FontFile 26 0 R ->> -endobj -28 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F4 -/FontDescriptor 27 0 R -/BaseFont /YSVNVS+CMTT10 -/FirstChar 0 -/LastChar 127 -/Widths [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 -525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 -525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 -525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 -525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 -525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 -525 525 525 525 525] ->> -endobj -30 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -194.44 -/Flags 68 -/FontBBox [-200 -250 1123 969] -/FontName /CMSL10 -/ItalicAngle -9 -/XHeight 431 -/StemV 80 -/FontFile 29 0 R ->> -endobj -31 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F5 -/FontDescriptor 30 0 R -/BaseFont /YXBGJA+CMSL10 -/FirstChar 0 -/LastChar 127 -/Widths [625 833.34 777.78 694.45 666.67 750 722.22 777.78 722.22 777.78 722.22 583.34 -555.56 555.56 833.34 833.34 277.78 305.56 500 500 500 500 500 808.65 444.45 500 722.22 -777.78 500 902.78 1013.89 777.78 277.78 277.78 500 833.34 500 833.34 777.78 277.78 -388.89 388.89 500 777.78 277.78 333.33 277.78 500 500 500 500 500 500 500 500 500 -500 500 277.78 277.78 277.78 777.78 472.22 472.22 777.78 750 708.34 722.22 763.89 -680.56 652.78 784.72 750 361.11 513.89 777.78 625 916.67 750 777.78 680.56 777.78 -736.11 555.56 722.22 750 750 1027.78 750 750 611.11 277.78 500 277.78 500 277.78 -277.78 500 555.56 444.45 555.56 444.45 305.56 500 555.56 277.78 305.56 527.78 277.78 -833.34 555.56 500 555.56 527.78 391.67 394.45 388.89 555.56 527.78 722.22 527.78 -527.78 444.45 500 1000 500 500 500] ->> -endobj -32 0 obj -<< -/Length 3690 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(1:)-444(What)-334(is)-333(DejaGn)27(u?)-25820(1)]TJ/F2 17.22 Tf 0 -25.91 TD[(1)-562(What)-375(is)-375(DejaGn)30(u?)]TJ/F1 10.91 Tf 14.94 -28.09 TD[(DejaGn)27(u)-378(is)-379(a)-379(framew)27(ork)-378(for)-379(testing)-379(other)-379(programs.)-582(Its)-379(purp)-28(ose)-379(is)-379(to)-379(pro)27(vide)-378(a)-379(single)]TJ -14.94 -13.15 TD[(fron)27(t)-332(end)-333(for)-334(all)-333(tests.)-444(Bey)26(ond)-332(this,)-333(DejaGn)26(u)-332(o\013ers)-333(sev)27(eral)-333(adv)55(an)28(tages)-333(for)-333(testing:)]TJ 5.91 -16.14 TD[(1.)-660(The)-359(\015exibilit)27(y)-359(and)-359(consistency)-360(of)-359(the)-360(DejaGn)27(u)-359(framew)27(ork)-359(mak)27(e)-358(it)-360(easy)-359(to)-360(write)-360(tests)]TJ 15.69 -13.15 TD[(for)-333(an)27(y)-332(program.)]TJ -15.69 -16.14 TD[(2.)-660(DejaGn)27(u)-225(pro)27(vides)-225(a)-226(la)26(y)28(er)-225(of)-226(abstraction)-226(whic)27(h)-226(allo)27(ws)-225(y)27(ou)-225(to)-226(write)-226(tests)-227(that)-226(are)-226(p)-28(ortable)]TJ 15.69 -13.15 TD[(to)-372(an)27(y)-372(host)-373(or)-373(target)-372(where)-373(a)-373(program)-372(m)26(ust)-371(b)-28(e)-373(tested.)-562(F)82(or)-372(instance,)-382(a)-373(test)-373(for)-372(GDB)]TJ 0 -13.15 TD[(can)-282(run)-282(\(from)-283(an)27(y)-281(Unix)-283(based)-282(host\))-283(on)-282(an)27(y)-282(target)-282(arc)27(hitecture)-282(that)-282(DejaGn)27(u)-282(supp)-27(orts.)]TJ 0 -13.15 TD[(Curren)27(tly)-284(DejaGn)27(u)-284(runs)-285(tests)-286(on)-285(sev)27(eral)-284(single)-285(b)-28(oard)-285(computers,)-295(whose)-285(op)-28(erating)-285(soft-)]TJ 0 -13.15 TD[(w)27(are)-332(ranges)-333(from)-334(just)-333(a)-333(b)-28(o)-28(ot)-333(monitor)-334(to)-333(a)-333(full-\015edged,)-334(Unix-lik)27(e)-332(realtime)-333(OS.)]TJ -15.69 -16.14 TD[(3.)-660(All)-414(tests)-414(ha)26(v)28(e)-413(the)-415(same)-414(output)-415(format.)-687(This)-415(mak)27(es)-413(it)-415(easy)-414(to)-415(in)27(tegrate)-413(testing)-415(in)27(to)]TJ 15.69 -13.15 TD[(other)-373(soft)27(w)28(are)-372(dev)27(elopmen)28(t)-372(pro)-28(cesses.)-564(DejaGn)27(u's)-372(output)-373(is)-373(designed)-373(to)-373(b)-28(e)-373(parsed)-373(b)27(y)]TJ 0 -13.15 TD[(other)-333(\014ltering)-333(script,)-333(and)-334(it)-333(is)-333(also)-334(h)27(uman)-332(readable.)]TJ -6.66 -19.13 TD[(DejaGn)27(u)-332(is)-333(written)-334(in)]TJ/F4 10.91 Tf 107.9 0 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(,)-333(whic)27(h)-332(in)-334(turn)-333(uses)]TJ/F5 10.91 Tf 98.03 0 TD[(Tcl)]TJ/F1 10.91 Tf 15.76 0 TD[(|T)83(o)-27(ol)-333(command)-334(language.)]TJ -256.05 -16.14 TD[(Running)-262(tests)-263(requires)-263(t)26(w)28(o)-262(things:)-409(the)-263(testing)-263(framew)27(ork,)-276(and)-263(the)-263(test)-263(suites)-263(themselv)26(es.)]TJ -14.94 -13.15 TD[(T)83(ests)-379(are)-379(usually)-380(written)-380(in)]TJ/F4 10.91 Tf 137.31 0 TD[(expect)]TJ/F1 10.91 Tf 38.51 0 TD[(using)-379(Tcl,)-391(but)-380(y)27(ou)-379(can)-379(also)-380(use)-380(a)-379(Tcl)-380(script)-379(to)-380(run)-380(a)]TJ -175.82 -13.15 TD[(test)-353(suite)-353(that)-353(is)-353(not)-353(based)-353(on)]TJ/F4 10.91 Tf 148.42 0 TD[(expect)]TJ/F1 10.91 Tf 34.37 0 TD[(.)-503(\()]TJ/F4 10.91 Tf 12.77 0 TD[(expect)]TJ/F1 10.91 Tf 38.21 0 TD[(script)-353(\014lenames)-353(con)27(v)28(en)28(tionally)-353(use)-353(`)]TJ/F4 10.91 Tf 172.29 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(')]TJ -428.97 -13.15 TD[(as)-359(a)-359(su\016x;)-373(for)-359(example,)-366(the)-360(main)-359(implemen)27(tation)-359(of)-359(the)-360(DejaGn)27(u)-358(test)-360(driv)27(er)-359(is)-359(in)-360(the)-359(\014le)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 63 0 TD[('.\))]TJ ET 0 g 0 G -endstream -endobj -33 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R -/F5 31 0 R ->> -endobj -25 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 33 0 R ->> -endobj -36 0 obj -<< -/Length 116 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(2)-26498(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ ET 0 g 0 G -endstream -endobj -37 0 obj -<< -/F1 9 0 R ->> -endobj -35 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 37 0 R ->> -endobj -40 0 obj -<< -/Length 4839 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(2:)-444(What)-334(is)-333(new)-333(in)-334(this)-333(release)-333(?)-21300(3)]TJ/F2 17.22 Tf 0 -25.91 TD[(2)-562(What)-375(is)-375(new)-375(in)-375(this)-375(release)-375(?)]TJ/F1 10.91 Tf 14.94 -28.09 TD[(This)-448(release)-448(has)-448(a)-449(n)27(um)28(b)-27(er)-448(of)-449(substan)27(tial)-447(c)27(hanges)-448(o)27(v)28(er)-447(v)26(ersion)-447(1.2.)-789(The)-449(most)-448(visible)]TJ -14.94 -13.15 TD[(c)27(hange)-309(is)-310(that)-310(the)-311(v)27(ersion)-309(of)-310(exp)-28(ect)-310(and)-311(Tcl)-310(included)-310(in)-310(the)-311(release)-310(are)-310(up-to-date)-310(with)-311(the)]TJ 0 -13.15 TD[(curren)27(t)-332(stable)-333(net)-334(releases.)-444(Other)-333(c)26(hanges)-332(are:)]TJ 5.91 -16.14 TD[(1.)-660(The)-390(con\014g)-391(sub-system)-391(in)-391(DejaGn)26(u)-390(has)-391(b)-27(een)-391(completely)-391(redesigned.)-618(It)-390(no)26(w)-390(supp)-27(orts)]TJ 15.69 -13.15 TD[(testing)-333(on)-333(remote)-333(hosts)-334(as)-333(w)27(ell)-333(as)-333(remote)-333(targets.)]TJ -15.69 -16.14 TD[(2.)-660(More)-244(builtin)-244(supp)-28(ort)-245(for)-244(building)-244(target)-245(binaries)-244(with)-245(the)-244(correct)-244(link)26(er)-243(\015ags.)-415(Curren)27(tly)]TJ 15.69 -13.15 TD[(this)-333(only)-333(w)27(orks)-333(with)-333(GCC,)-333(preferably)-334(with)-333(a)-333(target)-334(supp)-27(ort)-334(b)27(y)]TJ/F4 10.91 Tf 305.26 0 TD[(libgloss)]TJ/F1 10.91 Tf 45.82 0 TD[(.)]TJ -366.77 -16.14 TD[(3.)-660(Lots)-333(of)-333(little)-334(bug)-333(\014xes)-333(from)-334(a)-333(y)27(ear)-332(of)-334(hea)27(vy)-332(use)-334(here)-333(at)-333(Cygn)26(us)-332(Supp)-28(ort.)]TJ 0 -16.14 TD[(4.)-660(DejaGn)27(u)-332(no)27(w)-333(uses)]TJ/F4 10.91 Tf 107.55 0 TD[(autoconf)]TJ/F1 10.91 Tf 49.46 0 TD[(for)-333(con\014guration.)]TJ -157.01 -16.14 TD[(5.)-660(New)-412(test)-412(cases)-412(for)-412(DejaGn)26(u)-411(ha)27(v)28(e)-412(b)-27(een)-413(added)-412(for)-412(the)-412(new)-412(features,)-432(plus)-413(the)]TJ/F4 10.91 Tf 390.7 0 TD[(")]TJ/F1 10.91 Tf 5.72 0 TD[({to)-27(ol)]TJ/F4 10.91 Tf 23.94 0 TD[(")]TJ/F1 10.91 Tf -404.67 -13.15 TD[(option)-333(bug)-333(in)-333(the)-334(1.2)-333(testsuite)-333(has)-334(b)-28(een)-333(\014xed.)]TJ -15.69 -16.14 TD[(6.)-660(The)]TJ/F4 10.91 Tf 38.11 0 TD[(--tool)]TJ/F1 10.91 Tf 38 0 TD[(option)-333(is)-333(no)27(w)-333(optional.)]TJ -76.11 -16.14 TD[(7.)]TJ/F4 10.91 Tf 15.69 0 TD[(runtest)]TJ/F1 10.91 Tf 43.39 0 TD[(when)-302(searc)26(hing)-301(for)-303(test)-303(driv)27(ers)-302(ignores)-303(all)-303(directories)-303(named)-302(SCCS,)-303(R)27(CS,)-302(and)]TJ -43.39 -13.15 TD[(CVS.)]TJ -15.69 -16.14 TD[(8.)-660(There)-331(is)-331(no)26(w)-330(a)-331(generic)-332(k)27(eyw)28(ord)-331(based)-331(test)-331(harness)-332(that)-331(uses)-331(commen)26(ts)-330(in)-331(source)-332(co)-28(de)]TJ 15.69 -13.15 TD[(to)-333(con)27(trol)-332(ho)26(w)-332(eac)27(h)-332(test)-334(case)-333(gets)-333(built)-334(and)-333(run.)]TJ -15.69 -16.14 TD[(9.)-660(There)-333(is)-333(no)27(w)-333(some)-333(supp)-28(ort)-333(for)-334(running)-333(a)-333(testsuite)-334(with)-333(m)27(ultiple)-332(passes.)]TJ/F2 14.35 Tf -5.91 -30.88 TD[(2.1)-562(Running)-375(existing)-375(tests)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(T)83(o)-271(run)-272(tests)-271(from)-272(an)-272(existing)-272(collection,)-284(\014rst)-272(use)]TJ/F4 10.91 Tf 229.94 0 TD[(configure)]TJ/F1 10.91 Tf 54.51 0 TD[(as)-271(usual)-272(to)-272(set)-272(up)-271(the)-272(source)]TJ -299.39 -13.15 TD[(directory)-333(con)27(taining)-332(the)-334(tests.)-444(Then)-333(try)-334(running)]TJ/F4 10.91 Tf 28.8 -15.44 TD[(make)-524(check)]TJ/F1 10.91 Tf -13.86 -16.14 TD[(If)-325(the)]TJ/F4 10.91 Tf 29.53 0 TD[(check)]TJ/F1 10.91 Tf 32.19 0 TD[(target)-325(exists,)-327(it)-326(usually)-325(sa)27(v)27(es)-324(y)27(ou)-325(some)-325(trouble|for)-326(instance,)-327(it)-325(can)-326(set)-325(up)]TJ -76.66 -13.15 TD[(an)27(y)-332(auxiliary)-333(programs)-334(or)-333(other)-333(\014les)-334(needed)-333(b)27(y)-333(the)-333(tests.)]TJ 14.94 -16.14 TD[(Once)-329(y)27(ou)-328(ha)27(v)27(e)-328(run)-329(`)]TJ/F4 10.91 Tf 96.52 0 TD[(make)-333(check)]TJ/F1 10.91 Tf 55.18 0 TD[(')-329(to)-329(build)-329(an)27(y)-328(auxiliary)-330(\014les,)-330(y)27(ou)-328(migh)27(t)-328(w)26(an)28(t)-328(to)-329(call)-329(the)]TJ -166.64 -13.15 TD[(test)-293(driv)26(er)]TJ/F4 10.91 Tf 51.99 0 TD[(runtest)]TJ/F1 10.91 Tf 43.3 0 TD[(directly)-293(to)-294(rep)-28(eat)-294(the)-294(tests.)-432(Y)83(ou)-293(ma)27(y)-293(also)-294(ha)26(v)28(e)-293(to)-294(call)]TJ/F4 10.91 Tf 257.32 0 TD[(runtest)]TJ/F1 10.91 Tf 43.3 0 TD[(directly)]TJ -395.91 -13.15 TD[(for)-333(test)-333(collections)-333(with)-334(no)]TJ/F4 10.91 Tf 130.76 0 TD[(check)]TJ/F1 10.91 Tf 32.27 0 TD[(target)-333(in)-333(the)-333(`)]TJ/F4 10.91 Tf 66.7 0 TD[(Makefile)]TJ/F1 10.91 Tf 45.82 0 TD[('.)]TJ ET 0 g 0 G -endstream -endobj -41 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R ->> -endobj -39 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 41 0 R ->> -endobj -45 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -194.44 -/Flags 4 -/FontBBox [-286 -250 1122 967] -/FontName /CMR7 -/ItalicAngle 0 -/XHeight 431 -/StemV 80 -/FontFile 44 0 R ->> -endobj -46 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F6 -/FontDescriptor 45 0 R -/BaseFont /AAPMXE+CMR7 -/FirstChar 0 -/LastChar 127 -/Widths [706.35 938.5 876.99 781.75 753.97 843.26 815.48 876.99 815.48 876.99 815.48 -677.58 646.83 646.83 970.24 970.24 323.41 354.17 569.45 569.45 569.45 569.45 569.45 -843.26 507.94 569.45 815.48 876.99 569.45 1013.89 1136.91 876.99 323.41 323.41 569.45 -938.5 569.45 938.5 876.99 323.41 446.43 446.43 569.45 876.99 323.41 384.92 323.41 -569.45 569.45 569.45 569.45 569.45 569.45 569.45 569.45 569.45 569.45 569.45 323.41 -323.41 323.41 876.99 538.69 538.69 876.99 843.26 798.62 815.48 860.12 767.86 737.11 -883.93 843.26 412.7 583.34 874.01 706.35 1027.78 843.26 876.99 767.86 876.99 829.37 -630.96 815.48 843.26 843.26 1150.8 843.26 843.26 692.46 323.41 569.45 323.41 569.45 -323.41 323.41 569.45 630.96 507.94 630.96 507.94 354.17 569.45 630.96 323.41 354.17 -600.2 323.41 938.5 630.96 569.45 630.96 600.2 446.43 452.58 446.43 630.96 600.2 815.48 -600.2 600.2 507.94 569.45 1138.89 569.45 569.45 569.45] ->> -endobj -48 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 513.89 -/Descent -194.44 -/Flags 4 -/FontBBox [-276 -250 1077 969] -/FontName /CMCSC10 -/ItalicAngle 0 -/XHeight 431 -/StemV 80 -/FontFile 47 0 R ->> -endobj -49 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F7 -/FontDescriptor 48 0 R -/BaseFont /NVUTVS+CMCSC10 -/FirstChar 0 -/LastChar 127 -/Widths [683.33 902.77 844.44 755.55 727.77 813.88 786.1 844.44 786.1 844.44 786.1 -552.77 552.77 319.44 319.44 523.61 302.22 424.44 552.77 552.77 552.77 552.77 552.77 -813.88 494.44 915.55 735.55 824.44 635.55 974.99 1091.66 844.44 319.44 319.44 552.77 -902.77 552.77 902.77 844.44 319.44 436.11 436.11 552.77 844.44 319.44 377.77 319.44 -552.77 552.77 552.77 552.77 552.77 552.77 552.77 552.77 552.77 552.77 552.77 319.44 -319.44 844.44 844.44 844.44 523.61 844.44 813.88 770.83 786.1 829.16 741.66 712.49 -851.38 813.88 405.55 566.66 843.05 683.33 988.88 813.88 844.44 741.66 844.44 799.99 -611.1 786.1 813.88 813.88 1105.55 813.88 813.88 669.44 319.44 552.77 319.44 552.77 -319.44 319.44 613.33 580 591.11 624.44 557.78 535.55 641.11 613.33 302.22 424.44 -635.55 513.33 746.66 613.33 635.55 557.78 635.55 602.22 457.78 591.11 613.33 613.33 -835.55 613.33 613.33 502.22 552.77 1105.55 552.77 552.77 552.77] ->> -endobj -51 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -194.44 -/Flags 68 -/FontBBox [-163 -250 1146 969] -/FontName /CMTI10 -/ItalicAngle -14 -/XHeight 431 -/StemV 80 -/FontFile 50 0 R ->> -endobj -52 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F8 -/FontDescriptor 51 0 R -/BaseFont /OXLDNK+CMTI10 -/FirstChar 0 -/LastChar 127 -/Widths [627.22 817.77 766.66 692.22 664.44 743.33 715.55 766.66 715.55 766.66 715.55 -613.33 562.22 587.77 881.66 894.44 306.67 332.22 511.11 511.11 511.11 511.11 511.11 -831.29 460 536.66 715.55 715.55 511.11 882.77 984.99 766.66 255.55 306.67 514.44 -817.77 769.09 817.77 766.66 306.67 408.89 408.89 511.11 766.66 306.67 357.78 306.67 -511.11 511.11 511.11 511.11 511.11 511.11 511.11 511.11 511.11 511.11 511.11 306.67 -306.67 306.67 766.66 511.11 511.11 766.66 743.33 703.89 715.55 755 678.33 652.77 -773.61 743.33 385.55 525 768.88 627.22 896.66 743.33 766.66 678.33 766.66 729.44 -562.22 715.55 743.33 743.33 998.88 743.33 743.33 613.33 306.67 514.44 306.67 511.11 -306.67 306.67 511.11 460 460 511.11 460 306.67 460 511.11 306.67 306.67 460 255.55 -817.77 562.22 511.11 511.11 460 421.66 408.89 332.22 536.66 460 664.44 463.89 485.55 -408.89 511.11 1022.22 511.11 511.11 511.11] ->> -endobj -53 0 obj -<< -/Length 6907 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(4)-26498(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 14.94 -23.91 TD[(T)27(ypically)84(,)-446(y)27(ou)-422(m)26(ust)-422(use)-424(t)27(w)28(o)-423(command-line)-424(options:)-625(`)]TJ/F4 10.91 Tf 261.34 0 TD[(--tool)]TJ/F1 10.91 Tf 34.37 0 TD[(',)-446(to)-423(sp)-28(ecify)-424(whic)27(h)-423(set)-423(of)]TJ -310.65 -13.15 TD[(tests)-333(to)-333(run)]TJ/F6 6.97 Tf 55.3 3.96 TD[(1)]TJ/F1 10.91 Tf 4.47 -3.96 TD[(,)-333(and)-333(`)]TJ/F4 10.91 Tf 30.91 0 TD[(--srcdir)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-333(to)-333(sp)-28(ecify)-333(where)-334(to)-333(\014nd)-333(test)-334(directories.)]TJ -121.56 -16.14 TD[(F)83(or)-293(example,)-302(if)-294(the)-294(directory)-295(`)]TJ/F4 10.91 Tf 141.53 0 TD[(gdb/testsuite)]TJ/F1 10.91 Tf 74.45 0 TD[(')-294(con)27(tains)-293(a)-294(collection)-294(of)-294(DejaGn)27(u)-294(tests)-294(for)]TJ/F7 10.91 Tf -230.92 -13.15 TD[(gdb)]TJ/F1 10.91 Tf 20.13 0 TD[(,)-333(y)27(ou)-332(can)-334(run)-333(them)-333(lik)26(e)-332(this:)]TJ/F4 10.91 Tf 8.67 -15.45 TD[(eg$)-524(cd)-525(gdb/testsuite)]TJ 0 -12.45 TD[(eg$)-524(runtest)-525(--tool)-525(gdb)]TJ/F8 10.91 Tf -28.8 -12.45 TD[(T)76(est)-357(output)-357(fol)-51(lows,)-358(ending)-358(with:)]TJ/F4 10.91 Tf 28.8 -24.91 TD[(===)-524(gdb)-525(Summary)-525(===)]TJ 0 -24.91 TD[(#)-524(of)-525(expected)-525(passes)-525(508)]TJ 0 -12.45 TD[(#)-524(of)-525(expected)-525(failures)-525(103)]TJ 0 -12.45 TD[(/usr/latest/bin/gdb)-524(version)-525(4.14.4)-525(-nx)]TJ/F1 10.91 Tf -13.86 -16.14 TD[(Y)83(ou)-222(can)-223(use)-223(the)-223(option)-223(`)]TJ/F4 10.91 Tf 111.02 0 TD[(--srcdir)]TJ/F1 10.91 Tf 45.81 0 TD[(')-222(to)-223(p)-28(oin)27(t)-222(to)-223(some)-223(other)-223(directory)-223(con)26(taining)-222(a)-223(collection)]TJ -171.77 -13.15 TD[(of)-333(tests:)]TJ/F4 10.91 Tf 28.8 -15.44 TD[(eg$)-524(runtest)-525(--tool)-525(gdb)-525(--srcdir)-525(/devo/gdb/testsuite)]TJ/F1 10.91 Tf -13.86 -16.14 TD[(These)-468(examples)-468(assume)-468(a)]TJ/F5 10.91 Tf 131.29 0 TD[(nativ)27(e)]TJ/F1 10.91 Tf 34.81 0 TD[(con\014guration,)-502(where)-468(the)-468(same)-468(computer)-469(runs)-468(b)-28(oth)]TJ/F4 10.91 Tf -181.04 -13.15 TD[(runtest)]TJ/F1 10.91 Tf 44.02 0 TD[(and)-360(the)-361(tests)-360(themselv)27(es.)-525(When)-361(y)27(ou)-360(ha)27(v)28(e)-360(a)]TJ/F5 10.91 Tf 214.12 0 TD[(cross)]TJ/F1 10.91 Tf 27.57 0 TD[(con\014guration,)-367(the)-360(tests)-361(run)-360(on)]TJ -285.71 -13.16 TD[(a)-366(di\013eren)27(t)-365(computer,)-374(con)26(trolled)-365(b)27(y)-365(the)-366(host)-366(running)]TJ/F4 10.91 Tf 255.56 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(.)-542(In)-366(this)-367(situation,)-374(y)27(ou)-365(need)]TJ -295.65 -13.15 TD[(the)-333(option)-333(`)]TJ/F4 10.91 Tf 55.76 0 TD[(--name)]TJ/F1 10.91 Tf 34.36 0 TD[(')-333(to)-333(sp)-28(ecify)-333(the)-334(net)27(w)28(ork)-332(address)-334(for)-333(the)-333(other)-334(computer:)]TJ/F4 10.91 Tf -61.32 -15.44 TD[(eg$)-524(runtest)-525(--tool)-525(gdb)-525(--name)-525(vx9.munist.com)]TJ/F1 10.91 Tf -13.86 -16.14 TD[(If)-270(y)27(ou)-269(alw)27(a)27(ys)-269(use)-270(the)-270(same)-270(option)-271(v)55(alues,)-282(y)27(ou)-269(can)-270(record)-271(them)-270(in)-270(a)-270(\014le)-270(called)-271(`)]TJ/F4 10.91 Tf 365.18 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(',)]TJ -425.94 -13.15 TD[(rather)-362(than)-362(t)27(yping)-361(them)-362(eac)27(h)-361(time.)-531(See)-362(Chapter)-362(4)-362([Setting)-362(defaults)-362(for)]TJ/F4 10.91 Tf 347.29 0 TD[(runtest)]TJ/F1 10.91 Tf 44.04 0 TD[(options],)]TJ -391.33 -13.15 TD[(page)-333(15.)]TJ 14.94 -16.14 TD[(By)-392(default,)]TJ/F4 10.91 Tf 58.26 0 TD[(runtest)]TJ/F1 10.91 Tf 44.37 0 TD[(prin)27(ts)-391(only)-392(the)-392(names)-392(of)-392(the)-392(tests)-392(it)-392(runs,)-407(output)-392(from)-392(an)26(y)-391(tests)]TJ -117.57 -13.15 TD[(that)-439(ha)26(v)28(e)-439(unexp)-27(ected)-440(results,)-467(and)-439(a)-440(summary)-440(sho)27(wing)-439(ho)27(w)-439(man)27(y)-439(tests)-440(passed)-440(and)-440(ho)27(w)]TJ 0 -13.15 TD[(man)27(y)-282(failed.)-427(T)82(o)-282(displa)27(y)-282(output)-282(from)-283(all)-283(tests)-283(\(whether)-283(or)-283(not)-282(they)-283(b)-28(eha)27(v)28(e)-282(as)-283(exp)-28(ected\),)-293(use)]TJ 0 -13.15 TD[(the)-392(`)]TJ/F4 10.91 Tf 22.47 0 TD[(--all)]TJ/F1 10.91 Tf 28.63 0 TD[(')-392(option.)-623(F)83(or)-392(more)-393(v)27(erb)-27(ose)-392(output)-393(ab)-28(out)-392(pro)-28(cesses)-393(b)-28(eing)-392(run,)-408(comm)27(unication,)]TJ -51.1 -13.15 TD[(and)-391(so)-391(on,)-406(use)-391(`)]TJ/F4 10.91 Tf 77.35 0 TD[(--verbose)]TJ/F1 10.91 Tf 51.55 0 TD[('.)-618(T)83(o)-391(see)-391(ev)27(en)-390(more)-391(output,)-406(use)-391(m)26(ultiple)-390(`)]TJ/F4 10.91 Tf 206.62 0 TD[(--verbose)]TJ/F1 10.91 Tf 51.55 0 TD[(')-391(options.)]TJ -387.07 -13.15 TD[(See)-393(Chapter)-394(3)-394([Using)]TJ/F4 10.91 Tf 107.27 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(],)-408(page)-394(9,)-409(for)-393(a)-394(more)-394(detailed)-393(explanation)-394(of)-394(eac)27(h)]TJ/F4 10.91 Tf 244.55 0 TD[(runtest)]TJ/F1 10.91 Tf -391.91 -13.15 TD[(option.)]TJ 14.94 -16.14 TD[(T)83(est)-302(output)-303(go)-28(es)-303(in)27(to)-302(t)27(w)28(o)-302(\014les)-303(in)-303(y)27(our)-302(curren)27(t)-302(directory:)-429(summary)-303(output)-303(in)-303(`)]TJ/F5 10.91 Tf 369.61 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.48 0 TD[(.sum)]TJ/F1 10.91 Tf 22.91 0 TD[(',)]TJ -425.94 -13.15 TD[(and)-350(detailed)-351(output)-351(in)-351(`)]TJ/F5 10.91 Tf 114.71 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.48 0 TD[(.log)]TJ/F1 10.91 Tf 22.91 0 TD[('.)-497(\()]TJ/F5 10.91 Tf 15.73 0 TD[(to)-27(ol)]TJ/F1 10.91 Tf 22.74 0 TD[(refers)-350(to)-351(the)-351(collection)-351(of)-351(tests;)-360(for)-350(example,)-356(after)]TJ -194.57 -13.15 TD[(a)-401(run)-402(with)-401(`)]TJ/F4 10.91 Tf 59.24 0 TD[(--tool)-333(gdb)]TJ/F1 10.91 Tf 55.18 0 TD[(',)-418(lo)-28(ok)-402(for)-401(output)-402(\014les)-402(`)]TJ/F4 10.91 Tf 114.61 0 TD[(gdb.sum)]TJ/F1 10.91 Tf 40.09 0 TD[(')-401(and)-402(`)]TJ/F4 10.91 Tf 32.4 0 TD[(gdb.log)]TJ/F1 10.91 Tf 40.09 0 TD[('.\))-649(See)-402(Section)-401(5.7)]TJ -341.61 -13.15 TD[([The)-333(\014les)-333(DejaGn)27(u)-333(writes],)-333(page)-333(35.)]TJ ET 18.00 -488.41 m 162.00 -488.41 l 162.00 -488.01 l 18.00 -488.01 l b BT/F6 6.97 Tf 23.02 -496.35 TD[(1)]TJ/F1 10.91 Tf 9.92 -3.96 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--tool)]TJ/F1 10.91 Tf 34.37 0 TD[(')-373(selects)-373(a)-373(particular)-373(suite)-374(of)-373(tests,)]TJ/F8 10.91 Tf 170.49 0 TD[(not)]TJ/F1 10.91 Tf 20.44 0 TD[(the)-373(name)-373(of)-373(the)-373(executable)-374(program)-373(to)]TJ -228.33 -13.15 TD[(run.)-620(See)-392(Chapter)-392(4)-391([Con\014guration)-392(dep)-28(enden)27(t)-391(v)54(alues],)-405(page)-392(15,)-407(for)-392(information)-392(on)-392(the)]TJ 0 -13.15 TD[(v)55(ariables)-332(that)-334(y)27(ou)-332(can)-334(use)-333(to)-333(sp)-28(ecify)-333(the)-334(names)-333(of)-333(programs)-334(to)-333(run.)]TJ ET 0 g 0 G -endstream -endobj -54 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F6 46 0 R -/F7 49 0 R -/F8 52 0 R -/F5 31 0 R ->> -endobj -43 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 54 0 R ->> -endobj -58 0 obj -<< -/Type /FontDescriptor -/CapHeight 0 -/Ascent 750 -/Descent -2000 -/Flags 4 -/FontBBox [-2000 -2000 2040 2040] -/FontName /LCIRCLE10 -/ItalicAngle 0 -/XHeight 431 -/StemV 80 -/FontFile 57 0 R ->> -endobj -59 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F9 -/FontDescriptor 58 0 R -/BaseFont /BMCYBZ+LCIRCLE10 -/FirstChar 0 -/LastChar 126 -/Widths [400 400 400 400 800 800 800 800 1200 1200 1200 1200 1600 1600 1600 1600 -2000 2000 2000 2000 2400 2400 2400 2400 2800 2800 2800 2800 3200 3200 3200 3200 3600 -3600 3600 3600 4000 4000 4000 4000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 200 300 400 -500 600 700 800 900 1000 1100 1200 1300 1400 1500 0 100 200 300 400 500 600 700 800 -900 1000 1100 1200 1300 1400 1500] ->> -endobj -60 0 obj -<< -/Length 6627 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(2:)-444(What)-334(is)-333(new)-333(in)-334(this)-333(release)-333(?)-21300(5)]TJ/F2 14.35 Tf 0 -23.91 TD[(2.2)-562(What)-375(do)-31(es)-375(a)-375(DejaGn)30(u)-374(test)-375(lo)-31(ok)-375(lik)30(e?)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(Eac)27(h)-353(DejaGn)27(u)-354(test)-354(is)-355(an)]TJ/F4 10.91 Tf 121.65 0 TD[(expect)]TJ/F1 10.91 Tf 38.23 0 TD[(script;)-364(the)-355(tests)-354(v)54(ary)-353(widely)-355(in)-354(complexit)27(y)83(,)-359(dep)-27(ending)]TJ -174.82 -13.15 TD[(on)-333(the)-333(nature)-333(of)-334(the)-333(to)-28(ol)-333(and)-334(the)-333(feature)-333(tested.)]TJ 14.94 -16.14 TD[(Here)-411(is)-411(a)-411(v)26(ery)-410(simple)]TJ/F7 10.91 Tf 108.07 0 TD[(gdb)]TJ/F1 10.91 Tf 24.63 0 TD[(test|one)-411(of)-411(the)-411(simplest)-412(tests)-411(shipp)-28(ed)-411(with)-411(DejaGn)26(u)-410(\(ex-)]TJ -147.64 -13.15 TD[(tracted)-333(from)-333(`)]TJ/F4 10.91 Tf 66.42 0 TD[(gdb.t00/echo.exp)]TJ/F1 10.91 Tf 91.64 0 TD[('\):)]TJ/F6 6.97 Tf 10.3 3.96 TD[(2)]TJ/F9 9.96 Tf -168.36 -14.01 TD[(\013)]TJ ET 23.98 -85.57 m 450.40 -85.57 l 450.40 -85.17 l 23.98 -85.17 l b BT 456.38 -85.57 TD[(\010)]TJ ET 18.00 -219.92 m 18.40 -219.92 l 18.40 -91.30 l 18.00 -91.30 l b BT/F4 10.91 Tf 21.39 -103.94 TD[(#)-524(send)-525(a)-525(string)-525(to)-525(the)-525(GDB)-525(stdin:)]TJ 0 -12.45 TD[(send)-524("echo)-525(Hello)-525(world!\\n")]TJ 0 -24.91 TD[(#)-524(inspect)-525(the)-525(GDB)-525(stdout)-525(for)-525(the)-525(correct)-525(reply,)]TJ 0 -12.45 TD[(#)-524(and)-525(determine)-525(whether)-525(the)-525(test)-525(passes)-525(or)-525(fails:)]TJ 0 -12.46 TD[(expect)-524({)]TJ 11.45 -12.45 TD[(-re)-524("Hello)-525(world.*$prompt)-525($")-2100({)-525(pass)-525("Echo)-525(test")-525(})]TJ 0 -12.45 TD[(-re)-524("$prompt)-525($")-8925({)-525(fail)-525("Echo)-525(test")-525(})]TJ 0 -12.46 TD[(timeout)-13124({)-525(fail)-525("\(timeout\))-525(Echo)-525(test")-525(})]TJ 0 -12.45 TD[(})]TJ ET 456.38 -219.92 m 456.77 -219.92 l 456.77 -91.30 l 456.38 -91.30 l b BT/F9 9.96 Tf 18 -226.14 TD[(\012)]TJ ET 23.98 -226.14 m 450.40 -226.14 l 450.40 -225.74 l 23.98 -225.74 l b BT 456.38 -226.14 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(Though)-373(brief,)-384(this)-374(example)-373(is)-374(a)-373(complete)-374(test.)-565(It)-374(illustrates)-374(some)-373(of)-374(the)-374(main)-373(features)]TJ -14.94 -13.15 TD[(of)-333(DejaGn)27(u)-332(test)-334(scripts:)]TJ/F3 10.91 Tf 8.95 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(The)-345(test)-346(case)-346(do)-28(es)-345(not)-346(start)-346(the)-346(tested)-345(program)-346(\()]TJ/F7 10.91 Tf 237.07 0 TD[(gdb)]TJ/F1 10.91 Tf 23.9 0 TD[(in)-345(this)-346(case\);)-352(all)-346(test)-345(scripts)-346(for)]TJ -260.97 -13.15 TD[(in)27(teractiv)28(e)-332(to)-28(ols)-333(can)-334(assume)-333(the)-333(corresp)-28(onding)-333(to)-28(ol)-334(is)-333(running.)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(Commen)27(ts)-332(start)-333(with)-334(`)]TJ/F4 10.91 Tf 108.33 0 TD[(#)]TJ/F1 10.91 Tf 5.73 0 TD[('.)]TJ/F3 10.91 Tf -126.71 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(The)-223(main)-223(commands)-223(y)27(ou)-222(use)-224(to)-223(con)27(trol)-222(a)-223(tested)-224(program)-223(are)]TJ/F4 10.91 Tf 283.15 0 TD[(send)]TJ/F1 10.91 Tf 25.34 0 TD[(\(to)-223(giv)27(e)-222(it)-223(commands\))]TJ -308.49 -13.15 TD[(and)]TJ/F4 10.91 Tf 21.21 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(\(to)-333(analyze)-333(its)-333(resp)-28(onses\).)]TJ/F3 10.91 Tf -71.86 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(The)]TJ/F4 10.91 Tf 22.77 0 TD[(expect)]TJ/F1 10.91 Tf 38.34 0 TD[(command)-364(uses)-365(a)-364(list)-365(of)-364(pairs;)-381(a)-364(pattern)-365(\(regular)-365(expression)-364(if)-365(`)]TJ/F4 10.91 Tf 301.1 0 TD[(-re)]TJ/F1 10.91 Tf 17.18 0 TD[(')-364(sp)-28(ec-)]TJ -379.39 -13.15 TD[(i\014ed\),)-395(follo)27(w)27(ed)-382(b)27(y)-382(an)-384(action)-383(to)-383(run)-384(if)-383(the)-383(pattern)-383(matc)26(hes)-382(output)-383(from)-383(the)-384(program.)]TJ 0 -13.15 TD[(Only)-333(the)-333(action)-333(for)-334(the)]TJ/F8 10.91 Tf 113.97 0 TD[(\014rst)]TJ/F1 10.91 Tf 23.49 0 TD[(matc)27(hing)-332(pattern)-333(will)-334(execute.)]TJ/F3 10.91 Tf -150.11 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(T)83(est)-332(cases)-334(use)-333(the)-333(commands)]TJ/F4 10.91 Tf 143.03 0 TD[(pass)]TJ/F1 10.91 Tf 26.55 0 TD[(and)]TJ/F4 10.91 Tf 21.21 0 TD[(fail)]TJ/F1 10.91 Tf 26.54 0 TD[(to)-333(record)-333(the)-333(test)-334(outcome.)]TJ/F2 14.35 Tf -238.93 -30.89 TD[(2.3)-562(Design)-375(goals)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(DejaGn)27(u)-464(grew)-465(out)-465(of)-465(the)-465(in)26(ternal)-464(needs)-465(of)-465(Cygn)27(us)-464(Supp)-28(ort.)-840(Cygn)27(us)-465(main)27(tains)-464(and)]TJ -14.94 -13.15 TD[(enhances)-259(a)-259(v)55(ariet)27(y)-258(of)-259(free)-259(programs)-260(in)-259(man)27(y)-258(di\013eren)26(t)-258(en)27(vironmen)28(ts,)-273(and)-260(w)27(e)-258(needed)-259(a)-260(testing)]TJ 0 -13.15 TD[(to)-27(ol)-334(that:)]TJ/F3 10.91 Tf 8.95 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(is)-333(useful)-333(to)-333(dev)26(elop)-26(ers)-334(while)-333(\014xing)-333(bugs;)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(automates)-333(running)-333(man)27(y)-333(tests)-333(during)-333(a)-334(soft)27(w)28(are)-332(release)-334(pro)-28(cess;)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(is)-333(p)-28(ortable)-333(among)-333(a)-334(v)55(ariet)28(y)-333(of)-333(host)-333(computers;)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(supp)-27(orts)-334(cross-dev)27(elopmen)28(t)-332(testing;)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(p)-27(ermits)-334(testing)-333(in)27(teractiv)28(e)-333(programs,)-333(lik)27(e)]TJ/F7 10.91 Tf 200.3 0 TD[(gdb)]TJ/F1 10.91 Tf 20.14 0 TD[(;)-333(and)]TJ/F3 10.91 Tf -233.09 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(p)-27(ermits)-334(testing)-333(batc)27(h)-332(orien)26(ted)-332(programs,)-333(lik)26(e)]TJ/F7 10.91 Tf 218.79 0 TD[(gcc)]TJ/F1 10.91 Tf 19.89 0 TD[(.)]TJ ET 18.00 -578.60 m 162.00 -578.60 l 162.00 -578.21 l 18.00 -578.21 l b BT/F6 6.97 Tf 23.02 -586.55 TD[(2)]TJ/F1 10.91 Tf 9.92 -3.96 TD[(More)-460(recen)26(t)]TJ/F7 10.91 Tf 63.45 0 TD[(gdb)]TJ/F1 10.91 Tf 25.16 0 TD[(tests)-460(use)-461(the)-461(`)]TJ/F4 10.91 Tf 70.42 0 TD[(gdb_test)]TJ/F1 10.91 Tf 45.81 0 TD[(')-460(pro)-28(cedure.)-827(An)-461(equiv)55(alen)28(t)-460(test)-461(using)-461(that)]TJ -204.84 -13.15 TD[(pro)-27(cedure)-334(is)-333(`)]TJ/F4 10.91 Tf 68.31 0 TD[(gdb_test)-333("echo)-333(Hello)-333(world!")-334("Hello)-333(world!")]TJ/F1 10.91 Tf 239.45 0 TD[(')]TJ ET 0 g 0 G -endstream -endobj -61 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R -/F7 49 0 R -/F6 46 0 R -/F9 59 0 R -/F3 21 0 R -/F8 52 0 R ->> -endobj -56 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 61 0 R ->> -endobj -64 0 obj -<< -/Length 8942 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(6)-26498(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 14.94 -23.91 TD[(Some)-310(of)-311(the)-310(requiremen)27(ts)-310(pro)27(v)28(ed)-310(c)27(hallenging.)-436(F)82(or)-309(example,)-315(in)27(teractiv)27(e)-309(programs)-311(do)-310(not)]TJ -14.94 -13.15 TD[(lend)-398(themselv)27(es)-398(v)27(ery)-397(w)27(ell)-398(to)-398(automated)-399(testing.)-639(But)-399(all)-398(the)-399(requiremen)27(ts)-397(are)-399(imp)-27(ortan)26(t:)]TJ 0 -13.15 TD[(for)-318(instance,)-321(it)-319(is)-318(imp)-28(erativ)27(e)-318(to)-318(mak)27(e)-318(sure)-318(that)]TJ/F7 10.91 Tf 225.51 0 TD[(gdb)]TJ/F1 10.91 Tf 23.61 0 TD[(w)27(orks)-317(as)-319(w)27(ell)-317(when)-319(cross-debugging)-318(as)]TJ -249.12 -13.15 TD[(it)-333(do)-28(es)-333(in)-333(a)-334(nativ)27(e)-332(con\014guration.)]TJ 14.94 -16.14 TD[(Probably)-328(the)-329(greatest)-329(c)27(hallenge)-328(w)27(as)-328(testing)-329(in)-329(a)-329(cross-dev)27(elopmen)28(t)-328(en)27(vironmen)28(t)-328(\(whic)27(h)]TJ -14.94 -13.15 TD[(can)-410(b)-28(e)-410(a)-411(real)-410(nigh)27(tmare\).)-675(Most)-411(cross-dev)27(elopmen)28(t)-410(en)27(vironmen)28(ts)-410(are)-410(customized)-410(b)26(y)-409(eac)27(h)]TJ 0 -13.16 TD[(dev)27(elop)-26(er.)-668(Ev)27(en)-407(when)-408(buying)-407(pac)26(k)56(aged)-407(b)-27(oards)-408(from)-408(v)27(endors)-407(there)-407(are)-408(man)27(y)-407(di\013erences.)]TJ 0 -13.15 TD[(The)-387(comm)26(unication)-387(in)27(terfaces)-387(v)55(ary)-387(from)-388(a)-388(serial)-388(line)-388(to)-388(ethernet.)-609(DejaGn)27(u)-387(w)27(as)-387(designed)]TJ 0 -13.15 TD[(with)-392(a)-392(mo)-28(dular)-392(comm)27(unication)-391(setup,)-407(so)-393(that)-392(eac)27(h)-391(kind)-393(of)-392(comm)27(unication)-391(can)-393(b)-27(e)-393(added)]TJ 0 -13.15 TD[(as)-323(required,)-325(and)-324(supp)-28(orted)-323(thereafter.)-441(Once)-324(a)-323(comm)27(unication)-323(pro)-27(cedure)-324(is)-323(co)-28(ded,)-325(an)26(y)-322(test)]TJ 0 -13.15 TD[(can)-335(use)-335(it.)-450(Curren)27(tly)-334(DejaGn)26(u)-334(can)-335(use)]TJ/F4 10.91 Tf 188.77 0 TD[(rsh)]TJ/F1 10.91 Tf 17.19 0 TD[(,)]TJ/F4 10.91 Tf 6.69 0 TD[(rlogin)]TJ/F1 10.91 Tf 34.36 0 TD[(,)]TJ/F4 10.91 Tf 6.69 0 TD[(telnet)]TJ/F1 10.91 Tf 34.37 0 TD[(,)]TJ/F4 10.91 Tf 6.69 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(,)]TJ/F4 10.91 Tf 6.69 0 TD[(kermit)]TJ/F1 10.91 Tf 34.37 0 TD[(,)-335(and)]TJ/F4 10.91 Tf 27.92 0 TD[(mondfe)]TJ/F1 10.91 Tf 38.02 0 TD[(for)]TJ -418.94 -13.15 TD[(remote)-333(comm)27(unications.)]TJ 14.94 -16.14 TD[(Julia)-243(Menapace)-243(\014rst)-243(coined)-243(the)-243(term)-243(\\Deja)-243(Gn)27(u")-242(to)-243(describ)-28(e)-243(an)-243(earlier)-243(testing)-243(framew)27(ork)]TJ -14.94 -13.15 TD[(at)-426(Cygn)27(us)-426(Supp)-27(ort.)-724(When)-426(w)26(e)-425(replaced)-426(it)-427(with)-426(the)-427(Exp)-27(ect-based)-427(framew)27(ork,)-449(it)-426(w)27(as)-426(lik)27(e)]TJ 0 -13.15 TD[(DejaGn)27(u)-332(all)-333(o)26(v)28(er)-332(again)-61(.)-242(.)-243(.)]TJ/F2 14.35 Tf 0 -30.88 TD[(2.4)-562(A)-375(POSIX)-375(conforming)-375(test)-375(framew)30(ork)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(DejaGn)27(u)-332(conforms)-333(to)-334(the)]TJ/F7 10.91 Tf 124.56 0 TD[(posix)]TJ/F1 10.91 Tf 31.64 0 TD[(standard)-333(for)-333(test)-333(framew)26(orks.)]TJ/F7 10.91 Tf -156.2 -16.14 TD[(posix)]TJ/F1 10.91 Tf 32.27 0 TD[(standard)-390(1003.3)-391(de\014nes)-391(what)-391(a)-391(testing)-391(framew)27(ork)-390(needs)-391(to)-391(pro)26(vide,)-404(in)-391(order)-391(to)]TJ -47.21 -13.15 TD[(p)-27(ermit)-271(the)-271(creation)-271(of)]TJ/F7 10.91 Tf 105.82 0 TD[(posix)]TJ/F1 10.91 Tf 30.96 0 TD[(conformance)-270(test)-271(suites.)-424(This)-271(standard)-271(is)-271(primarily)-271(orien)27(ted)-270(to)]TJ -136.78 -13.15 TD[(running)]TJ/F7 10.91 Tf 40.66 0 TD[(posix)]TJ/F1 10.91 Tf 31.66 0 TD[(conformance)-335(tests,)-336(but)-336(its)-335(requiremen)26(ts)-334(also)-336(supp)-28(ort)-335(testing)-336(of)-335(features)-336(not)]TJ -72.32 -13.15 TD[(related)-244(to)]TJ/F7 10.91 Tf 47.78 0 TD[(posix)]TJ/F1 10.91 Tf 30.66 0 TD[(conformance.)]TJ/F7 10.91 Tf 67.29 0 TD[(posix)]TJ/F1 10.91 Tf 30.66 0 TD[(1003.3)-244(do)-27(es)-245(not)-244(sp)-27(ecify)-245(a)-244(particular)-244(testing)-244(framew)27(ork,)]TJ -176.39 -13.15 TD[(but)-333(at)-333(this)-333(time)-334(there)-333(is)-333(only)-334(one)-333(other)]TJ/F7 10.91 Tf 190.79 0 TD[(posix)]TJ/F1 10.91 Tf 31.63 0 TD[(conforming)-333(test)-333(framew)27(ork:)]TJ/F7 10.91 Tf 135.91 0 TD[(tet)]TJ/F1 10.91 Tf 18.99 0 TD[(.)]TJ/F6 6.97 Tf 3.03 3.96 TD[(3)]TJ/F1 10.91 Tf -365.41 -20.1 TD[(The)]TJ/F7 10.91 Tf 22.05 0 TD[(posix)]TJ/F1 10.91 Tf 31.25 0 TD[(do)-27(cumen)27(tation)-298(refers)-298(to)]TJ/F5 10.91 Tf 116.24 0 TD[(assertions)]TJ/F1 10.91 Tf 46.28 0 TD[(.)-432(An)-298(assertion)-299(is)-298(a)-298(description)-298(of)-299(b)-27(eha)26(vior.)]TJ -230.76 -13.15 TD[(F)83(or)-445(example,)-475(if)-446(a)-446(standard)-446(sa)27(ys)-445(\\The)-446(sun)-446(shall)-446(shine",)-475(a)-446(corresp)-28(onding)-446(assertion)-446(migh)27(t)]TJ 0 -13.15 TD[(b)-27(e)-405(\\The)-405(sun)-405(is)-405(shining.")-659(A)-405(test)-405(based)-405(on)-405(this)-405(assertion)-405(w)27(ould)-404(pass)-405(or)-405(fail)-405(dep)-28(ending)-405(on)]TJ 0 -13.15 TD[(whether)-342(it)-342(is)-342(da)27(ytime)-341(or)-342(nigh)26(ttime.)-470(It)-342(is)-342(imp)-28(ortan)27(t)-341(to)-342(note)-342(that)-343(the)-342(standard)-342(b)-28(eing)-342(tested)]TJ 0 -13.15 TD[(is)-337(nev)27(er)-337(1003.3;)-339(the)-338(standard)-337(b)-28(eing)-337(tested)-338(is)-337(some)-338(other)-337(standard,)-339(for)-337(whic)26(h)-336(the)-337(assertions)]TJ 0 -13.15 TD[(w)27(ere)-332(written.)]TJ 14.94 -16.14 TD[(As)-343(there)-343(is)-343(no)-343(test)-344(suite)-343(to)-343(test)]TJ/F8 10.91 Tf 153.02 0 TD[(testing)-366(fr)50(ameworks)]TJ/F1 10.91 Tf 93.67 0 TD[(for)]TJ/F7 10.91 Tf 16.81 0 TD[(posix)]TJ/F1 10.91 Tf 31.74 0 TD[(1003.3)-343(conformance,)-345(v)26(eri-)]TJ -310.18 -13.15 TD[(fying)-323(conformance)-323(to)-323(this)-323(standard)-323(is)-323(done)-323(b)27(y)-322(rep)-28(eatedly)-323(reading)-323(the)-323(standard)-323(and)-323(exp)-28(eri-)]TJ 0 -13.15 TD[(men)27(ting.)-437(One)-316(of)-316(the)-316(main)-316(things)-316(1003.3)-316(do)-27(es)-316(sp)-28(ecify)-316(is)-316(the)-316(set)-316(of)-316(allo)27(w)28(ed)-315(output)-316(messages,)]TJ 0 -13.15 TD[(and)-436(their)-437(de\014nitions.)-755(F)82(our)-436(messages)-437(are)-436(supp)-28(orted)-437(for)-437(a)-437(required)-437(feature)-436(of)]TJ/F7 10.91 Tf 379.24 0 TD[(posix)]TJ/F1 10.91 Tf 32.76 0 TD[(con-)]TJ -412 -13.15 TD[(forming)-441(systems,)-468(and)-442(a)-441(\014fth)-442(for)-441(a)-442(conditional)-441(feature.)-769(DejaGn)27(u)-441(supp)-27(orts)-442(the)-441(use)-442(of)-441(all)]TJ 0 -13.16 TD[(\014v)27(e)-443(output)-444(messages;)-499(in)-444(this)-445(sense)-444(a)-444(test)-444(suite)-444(that)-444(uses)-444(exactly)-444(these)-444(messages)-444(can)-444(b)-28(e)]TJ 0 -13.15 TD[(considered)]TJ/F7 10.91 Tf 53.42 0 TD[(posix)]TJ/F1 10.91 Tf 31.64 0 TD[(conforming.)-444(These)-333(de\014nitions)-334(sp)-27(ecify)-334(the)-333(output)-333(of)-334(a)-333(test)-333(case:)]TJ/F4 10.91 Tf -85.06 -28.09 TD[(PASS)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-333(test)-333(has)-333(succeeded.)-445(That)-333(is,)-334(it)-333(demonstrated)-333(that)-334(the)-333(assertion)-333(is)-334(true.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(XFAIL)]TJ/F7 10.91 Tf 57.6 0 TD[(posix)]TJ/F1 10.91 Tf 33.05 0 TD[(1003.3)-463(do)-28(es)-463(not)-463(incorp)-28(orate)-463(the)-463(notion)-464(of)-463(exp)-28(ected)-463(failures,)-496(so)]TJ/F4 10.91 Tf 315.41 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(,)]TJ -371.37 -13.15 TD[(instead)-361(of)]TJ/F4 10.91 Tf 50.67 0 TD[(XPASS)]TJ/F1 10.91 Tf 28.64 0 TD[(,)-368(m)27(ust)-361(also)-361(b)-28(e)-361(returned)-362(for)-361(test)-362(cases)-361(whic)27(h)-361(w)27(ere)-361(exp)-27(ected)-362(to)]TJ -79.31 -13.15 TD[(fail)-277(and)-278(did)-278(not.)-426(This)-278(means)-278(that)]TJ/F4 10.91 Tf 160.23 0 TD[(PASS)]TJ/F1 10.91 Tf 25.95 0 TD[(is)-277(in)-278(some)-278(sense)-278(more)-278(am)27(biguous)-277(than)-278(if)]TJ/F4 10.91 Tf -186.18 -13.15 TD[(XPASS)]TJ/F1 10.91 Tf 32.13 0 TD[(is)-320(also)-320(used.)-440(F)83(or)-320(information)-320(on)]TJ/F4 10.91 Tf 155.08 0 TD[(XPASS)]TJ/F1 10.91 Tf 32.13 0 TD[(and)]TJ/F4 10.91 Tf 21.06 0 TD[(XFAIL)]TJ/F1 10.91 Tf 28.64 0 TD[(,)-322(see)-320(Chapter)-320(3)-321([Using)]TJ/F4 10.91 Tf -269.04 -13.15 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(],)-333(page)-333(9.)]TJ ET 18.00 -614.63 m 162.00 -614.63 l 162.00 -614.23 l 18.00 -614.23 l b BT/F6 6.97 Tf 23.02 -622.58 TD[(3)]TJ/F7 10.91 Tf 9.92 -3.96 TD[(tet)]TJ/F1 10.91 Tf 22.45 0 TD[(w)27(as)-316(created)-318(b)27(y)-317(Unisoft)-318(for)-317(a)-318(consortium)-318(comprised)-317(of)-318(X/Op)-28(en,)-321(Unix)-317(In)27(ternational,)]TJ -22.45 -13.15 TD[(and)-333(the)-333(Op)-28(en)-333(Soft)27(w)27(are)-332(F)82(oundation.)]TJ ET 0 g 0 G -endstream -endobj -65 0 obj -<< -/F1 9 0 R -/F7 49 0 R -/F4 28 0 R -/F2 12 0 R -/F6 46 0 R -/F5 31 0 R -/F8 52 0 R ->> -endobj -63 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 65 0 R ->> -endobj -68 0 obj -<< -/Length 7942 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(2:)-444(What)-334(is)-333(new)-333(in)-334(this)-333(release)-333(?)-21300(7)]TJ/F4 10.91 Tf 0 -23.91 TD[(FAIL)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-290(test)]TJ/F8 10.91 Tf 32.15 0 TD[(has)]TJ/F1 10.91 Tf 19.67 0 TD[(pro)-27(duced)-290(the)-291(bug)-290(it)-290(w)27(as)-289(in)26(tended)-289(to)-290(capture.)-430(That)-290(is,)-299(it)-290(has)-290(demon-)]TJ -51.82 -13.15 TD[(strated)-348(that)-348(the)-348(assertion)-348(is)-348(false.)-489(The)]TJ/F4 10.91 Tf 188.79 0 TD[(FAIL)]TJ/F1 10.91 Tf 26.7 0 TD[(message)-348(is)-348(based)-348(on)-348(the)-348(test)-348(case)]TJ -215.49 -13.15 TD[(only)83(.)-444(Other)-333(messages)-333(are)-334(used)-333(to)-333(indicate)-334(a)-333(failure)-333(of)-334(the)-333(framew)27(ork.)]TJ 0 -16.14 TD[(As)-301(with)]TJ/F4 10.91 Tf 40.27 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(,)]TJ/F7 10.91 Tf 6.39 0 TD[(posix)]TJ/F1 10.91 Tf 31.29 0 TD[(tests)-301(m)27(ust)-300(return)]TJ/F4 10.91 Tf 84.95 0 TD[(FAIL)]TJ/F1 10.91 Tf 26.2 0 TD[(rather)-301(than)]TJ/F4 10.91 Tf 57.54 0 TD[(XFAIL)]TJ/F1 10.91 Tf 31.93 0 TD[(ev)27(en)-300(if)-301(a)-302(failure)]TJ -301.48 -13.15 TD[(w)27(as)-332(exp)-28(ected.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(A)-387(test)-387(pro)-28(duced)-387(indeterminate)-388(results.)-606(Usually)82(,)-400(this)-387(means)-387(the)-388(test)-387(executed)]TJ 0 -13.15 TD[(in)-408(an)-408(unexp)-27(ected)-408(fashion;)-446(this)-408(outcome)-408(requires)-408(that)-408(a)-408(h)27(uman)-407(b)-28(eing)-408(go)-408(o)27(v)27(er)]TJ 0 -13.15 TD[(results,)-383(to)-374(determine)-374(if)-374(the)-374(test)-373(should)-374(ha)27(v)27(e)-372(passed)-374(or)-374(failed.)-566(This)-374(message)-374(is)]TJ 0 -13.15 TD[(also)-279(used)-280(for)-280(an)27(y)-279(test)-279(that)-280(requires)-280(h)27(uman)-279(in)27(terv)28(en)27(tion)-278(b)-28(ecause)-280(it)-280(is)-279(b)-28(ey)27(ond)-279(the)]TJ 0 -13.15 TD[(abilities)-309(of)-310(the)-310(testing)-310(framew)26(ork.)-435(An)26(y)-309(unresolv)27(ed)-309(test)-310(should)-310(resolv)27(ed)-309(to)]TJ/F4 10.91 Tf 351.49 0 TD[(PASS)]TJ/F1 10.91 Tf -351.49 -13.16 TD[(or)]TJ/F4 10.91 Tf 13.36 0 TD[(FAIL)]TJ/F1 10.91 Tf 26.55 0 TD[(b)-27(efore)-334(a)-333(test)-333(run)-334(can)-333(b)-28(e)-333(considered)-333(\014nished.)]TJ -39.91 -16.13 TD[(Note)-311(that)-311(for)]TJ/F7 10.91 Tf 65.97 0 TD[(posix)]TJ/F1 10.91 Tf 28 0 TD[(,)-315(eac)27(h)-310(assertion)-312(m)27(ust)-310(pro)-28(duce)-311(a)-311(test)-311(result)-311(co)-28(de.)-437(If)-311(the)-312(test)]TJ -93.97 -13.16 TD[(isn't)-401(actually)-401(run,)-418(it)-402(m)27(ust)-400(pro)-28(duce)]TJ/F4 10.91 Tf 173 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 61.65 0 TD[(rather)-401(than)-401(just)-401(lea)26(ving)-400(that)]TJ -234.65 -13.15 TD[(test)-383(out)-383(of)-383(the)-383(output.)-594(This)-383(means)-384(that)-383(y)27(ou)-382(ha)27(v)27(e)-382(to)-383(b)-28(e)-383(careful)-383(when)-383(writing)]TJ 0 -13.15 TD[(tests,)-363(to)-358(not)-357(carelessly)-357(use)-358(tcl)-357(statemen)26(ts)-356(lik)27(e)]TJ/F4 10.91 Tf 221.42 0 TD[(return)]TJ/F1 10.91 Tf 34.36 0 TD[(|if)-357(y)27(ou)-357(alter)-357(the)-358(\015o)27(w)-356(of)]TJ -255.78 -13.15 TD[(con)27(trol)-272(of)-273(the)-273(tcl)-273(co)-28(de)-273(y)27(ou)-272(m)27(ust)-272(insure)-273(that)-273(ev)26(ery)-272(test)-273(still)-273(pro)-28(duces)-273(some)-273(result)]TJ 0 -13.15 TD[(co)-27(de.)]TJ 0 -16.14 TD[(Here)-333(are)-333(some)-333(of)-334(the)-333(w)27(a)27(ys)-332(a)-333(test)-334(ma)27(y)-332(wind)-333(up)]TJ/F4 10.91 Tf 225.39 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.28 0 TD[(:)]TJ/F3 10.91 Tf -273.72 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(A)-333(test's)-333(execution)-333(is)-334(in)27(terrupted.)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(A)-367(test)-367(do)-27(es)-368(not)-367(pro)-27(duce)-368(a)-367(clear)-367(result.)-546(This)-367(is)-367(usually)-367(b)-28(ecause)-367(there)-367(w)27(as)]TJ 0 -13.15 TD[(an)]TJ/F4 10.91 Tf 15.71 0 TD[(ERROR)]TJ/F1 10.91 Tf 32.83 0 TD[(from)-384(DejaGn)27(u)-384(while)-384(pro)-28(cessing)-384(the)-385(test,)-397(or)-384(b)-28(ecause)-384(there)-385(w)27(ere)]TJ -48.54 -13.15 TD[(three)-445(or)-446(more)]TJ/F4 10.91 Tf 72.25 0 TD[(WARNING)]TJ/F1 10.91 Tf 44.96 0 TD[(messages.)-781(An)27(y)]TJ/F4 10.91 Tf 78.72 0 TD[(WARNING)]TJ/F1 10.91 Tf 44.95 0 TD[(or)]TJ/F4 10.91 Tf 14.59 0 TD[(ERROR)]TJ/F1 10.91 Tf 33.5 0 TD[(messages)-445(can)]TJ -288.97 -13.15 TD[(in)27(v)56(alidate)-361(the)-361(output)-362(of)-361(the)-362(test.)-529(This)-362(usually)-361(requires)-362(a)-362(h)27(uman)-360(b)-28(eing)-362(to)]TJ 0 -13.15 TD[(examine)-382(the)-383(output)-382(to)-383(determine)-382(what)-383(really)-382(happ)-28(ened|and)-382(to)-383(impro)27(v)28(e)]TJ 0 -13.15 TD[(the)-333(test)-333(case.)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(A)-333(test)-333(dep)-28(ends)-333(on)-334(a)-333(previous)-333(test,)-334(whic)27(h)-332(fails.)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(The)-333(test)-333(w)27(as)-333(set)-333(up)-333(incorrectly)82(.)]TJ/F4 10.91 Tf -79.2 -22.12 TD[(UNTESTED)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-341(test)-342(w)27(as)-341(not)-342(run.)-469(This)-342(is)-342(a)-341(placeholder,)-344(used)-342(when)-342(there)-342(is)-341(no)-342(real)-342(test)-341(case)]TJ 0 -13.15 TD[(y)27(et.)]TJ -57.6 -19.12 TD[(The)-395(only)-395(remaining)-395(output)-395(message)-395(left)-395(is)-395(in)27(tended)-394(to)-395(test)-395(features)-395(that)-395(are)-395(sp)-28(eci\014ed)-395(b)27(y)]TJ 0 -13.16 TD[(the)-333(applicable)]TJ/F7 10.91 Tf 70.3 0 TD[(posix)]TJ/F1 10.91 Tf 31.64 0 TD[(standard)-333(as)-333(conditional:)]TJ/F4 10.91 Tf -101.94 -22.11 TD[(UNSUPPORTED)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(There)-444(is)-445(no)-445(supp)-28(ort)-445(for)-445(the)-444(tested)-445(case.)-779(This)-445(ma)27(y)-444(mean)-445(that)-445(a)-445(conditional)]TJ 0 -13.15 TD[(feature)-320(of)-320(an)-320(op)-27(erating)-320(system,)-323(or)-320(of)-320(a)-320(compiler,)-323(is)-320(not)-320(implemen)27(ted.)-439(DejaGn)27(u)]TJ 0 -13.15 TD[(also)-256(uses)-256(this)-256(message)-257(when)-256(a)-256(testing)-257(en)27(vironmen)28(t)-255(\(often)-257(a)-256(\\bare)-256(b)-28(oard")-256(target\))]TJ 0 -13.16 TD[(lac)27(ks)-333(basic)-334(supp)-27(ort)-334(for)-334(compiling)-334(or)-334(running)-334(the)-334(test)-334(case.)-446(F)82(or)-332(example,)-335(a)-333(test)]TJ 0 -13.15 TD[(for)-420(the)-420(system)-420(subroutine)]TJ/F4 10.91 Tf 129.49 0 TD[(gethostname)]TJ/F1 10.91 Tf 67.58 0 TD[(w)27(ould)-419(nev)27(er)-419(w)26(ork)-419(on)-420(a)-420(target)-421(b)-27(oard)]TJ -197.07 -13.15 TD[(running)-333(only)-333(a)-333(b)-28(o)-28(ot)-333(monitor.)]TJ -42.66 -19.13 TD[(DejaGn)27(u)-326(uses)-326(the)-327(same)-327(output)-327(pro)-27(cedures)-327(to)-327(pro)-28(duce)-327(these)-326(messages)-327(for)-327(all)-327(test)-326(suites,)]TJ -14.94 -13.15 TD[(and)-365(these)-366(pro)-28(cedures)-366(are)-366(already)-366(kno)27(wn)-365(to)-366(conform)-366(to)]TJ/F7 10.91 Tf 267.41 0 TD[(posix)]TJ/F1 10.91 Tf 31.99 0 TD[(1003.3.)-542(F)83(or)-365(a)-366(DejaGn)27(u)-365(test)]TJ -299.4 -13.15 TD[(suite)-318(to)-318(conform)-319(to)]TJ/F7 10.91 Tf 94.29 0 TD[(posix)]TJ/F1 10.91 Tf 31.47 0 TD[(1003.3,)-321(y)27(ou)-317(m)26(ust)-317(a)27(v)28(oid)-318(the)]TJ/F4 10.91 Tf 131.4 0 TD[(setup_xfail)]TJ/F1 10.91 Tf 66.47 0 TD[(pro)-27(cedure)-319(as)-318(describ)-28(ed)]TJ -323.63 -13.15 TD[(in)-246(the)]TJ/F4 10.91 Tf 29.63 0 TD[(PASS)]TJ/F1 10.91 Tf 25.6 0 TD[(section)-246(ab)-28(o)27(v)27(e,)-263(and)-246(y)26(ou)-245(m)26(ust)-245(b)-28(e)-247(careful)-247(to)-247(return)]TJ/F4 10.91 Tf 227.96 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 59.97 0 TD[(where)-246(appropriate,)]TJ -343.16 -13.15 TD[(as)-333(describ)-28(ed)-333(in)-333(the)]TJ/F4 10.91 Tf 93.18 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 60.91 0 TD[(section)-333(ab)-28(o)27(v)28(e.)]TJ ET 0 g 0 G -endstream -endobj -69 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F8 52 0 R -/F7 49 0 R -/F3 21 0 R ->> -endobj -67 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 69 0 R ->> -endobj -72 0 obj -<< -/Length 3732 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(8)-26498(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(2.5)-562(F)93(uture)-374(directions)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(In)-318(the)-318(near)-318(future,)-321(there)-318(are)-318(t)27(w)28(o)-318(parallel)-318(directions)-318(for)-318(DejaGn)27(u)-317(dev)27(elopmen)28(t.)-439(The)-318(\014rst)]TJ -14.94 -13.15 TD[(is)-333(to)-333(add)-333(supp)-28(ort)-334(for)-333(more)-333(hosts)-334(and)-333(targets.)]TJ 14.94 -16.14 TD[(The)-302(second)-303(w)26(ould)-302(p)-27(ermit)-303(testing)-303(programs)-303(with)-303(a)-303(more)-303(complex)-303(in)27(terface,)-308(whether)-303(text)]TJ -14.94 -13.15 TD[(based)-338(or)-338(GUI)-338(based.)-459(Tw)27(o)-337(comp)-28(onen)27(ts)-337(already)-338(exist:)-454(a)-338(Tcl)-339(based)-338(X)-338(windo)27(w)-337(to)-28(olkit,)-339(and)-338(a)]TJ 0 -13.15 TD[(terminal)-371(pac)27(k)55(age)-370(for)]TJ/F4 10.91 Tf 102.22 0 TD[(expect)]TJ/F1 10.91 Tf 34.37 0 TD[(.)-559(Both)-372(of)-371(these)-372(could)-371(b)-28(e)-372(merged)-372(in)27(to)-370(DejaGn)26(u)-370(in)-372(a)-372(w)27(a)28(y)-371(that)]TJ -136.59 -13.15 TD[(p)-27(ermits)-334(testing)-333(programs)-333(that)-334(run)-333(in)-333(eac)27(h)-333(en)27(vironmen)28(t.)]TJ 14.94 -16.14 TD[(Mean)27(while,)-292(w)27(e)-282(hop)-28(e)-283(DejaGn)26(u)-282(enables)-283(the)-283(creation)-284(of)-283(test)-283(suites)-283(for)-284(conformance)-283(to)]TJ/F7 10.91 Tf 395.39 0 TD[(ansi)]TJ/F1 10.91 Tf -410.33 -13.15 TD[(C)-369(and)-370(C)]TJ/F4 10.91 Tf 41.4 0 TD[(++)]TJ/F1 10.91 Tf 11.45 0 TD[(,)-378(to)]TJ/F7 10.91 Tf 20.89 0 TD[(posix)]TJ/F1 10.91 Tf 28 0 TD[(,)-378(and)-370(to)-369(other)-370(standards.)-553(W)83(e)-369(encourage)-369(y)26(ou)-368(to)-370(mak)27(e)-368(an)26(y)-368(test)-370(suites)]TJ -101.74 -13.15 TD[(y)27(ou)-332(create)-333(freely)-334(a)27(v)56(ailable,)-333(under)-333(the)-333(same)-334(terms)-333(as)-333(DejaGn)26(u)-332(itself.)]TJ/F2 14.35 Tf 0 -30.88 TD[(2.6)-562(Tcl)-375(and)-375(Exp)-31(ect)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(Tcl)-284(w)27(as)-284(in)27(tro)-27(duced)-285(in)-284(a)-285(pap)-27(er)-285(b)27(y)-284(John)-285(K.)-284(Ousterhout)-285(at)-284(the)-285(1990)-285(Win)27(ter)-283(Usenix)-285(confer-)]TJ -14.94 -13.15 TD[(ence,)]TJ/F5 10.91 Tf 26.8 0 TD[(Tcl:)-417(An)-280(Em)27(b)-27(eddable)-279(Command)-280(Language)]TJ/F1 10.91 Tf 200.37 0 TD[(.)-426(That)-280(pap)-27(er)-280(is)-279(included)-280(in)-279(P)26(ostScript)-278(form)]TJ -227.17 -13.15 TD[(in)-368(the)-368(`)]TJ/F4 10.91 Tf 35.31 0 TD[(doc)]TJ/F1 10.91 Tf 17.18 0 TD[(')-368(sub)-28(directory)-368(of)-368(the)-369(Tcl)-368(distribution.)-549(The)-369(v)27(ersion)-367(of)-368(Tcl)-369(included)-368(in)-368(DejaGn)26(u)]TJ -52.49 -13.15 TD[(at)-333(this)-333(time)-333(is)-334(Tcl)-333(7.4p3.)]TJ 14.94 -16.14 TD[(Don)-331(Lib)-28(es)-331(in)27(tro)-27(duced)]TJ/F4 10.91 Tf 107 0 TD[(expect)]TJ/F1 10.91 Tf 37.98 0 TD[(in)-331(his)-331(pap)-28(er)]TJ/F5 10.91 Tf 60.33 0 TD[(exp)-27(ect:)-444(Curing)-331(Those)-331(Uncon)26(trollable)-330(Fits)-331(of)]TJ -220.25 -13.15 TD[(In)27(teraction)]TJ/F1 10.91 Tf 56.68 0 TD[(at)-414(the)-415(1990)-415(Summer)-414(Usenix)-415(conference.)-688(The)-415(pap)-28(er)-415(is)-414(included)-415(in)-415(P)27(ostScript)]TJ -56.68 -13.15 TD[(form)-306(in)-306(the)]TJ/F4 10.91 Tf 56.42 0 TD[(expect)]TJ/F1 10.91 Tf 37.71 0 TD[(distribution)-306(\(as)-306(are)-307(sev)27(eral)-306(other)-306(pap)-28(ers)-306(ab)-28(out)]TJ/F4 10.91 Tf 223.8 0 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(\).)-435(The)-306(v)26(ersion)-305(of)]TJ -352.29 -13.15 TD[(exp)-27(ect)-334(included)-333(in)-333(DejaGn)27(u)-333(at)-333(this)-333(time)-334(is)-333(exp)-28(ect)-333(5.18.0.)]TJ ET 0 g 0 G -endstream -endobj -73 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R -/F7 49 0 R -/F5 31 0 R ->> -endobj -71 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 73 0 R ->> -endobj -77 0 obj -<< -/Type /FontDescriptor -/CapHeight 611.11 -/Ascent 611.11 -/Descent -222.22 -/Flags 5 -/FontBBox [-1 -234 716 801] -/FontName /CMTT12 -/ItalicAngle 0 -/XHeight 431 -/StemV 80 -/FontFile 76 0 R ->> -endobj -78 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F10 -/FontDescriptor 77 0 R -/BaseFont /QZZRHI+CMTT12 -/FirstChar 0 -/LastChar 127 -/Widths [514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58] ->> -endobj -79 0 obj -<< -/Length 7234 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(3:)-444(Using)]TJ/F4 10.91 Tf 86.45 0 TD[(runtest)]TJ/F1 10.91 Tf 340.1 0 TD[(9)]TJ/F2 17.22 Tf -426.55 -25.91 TD[(3)-562(Using)]TJ/F10 17.22 Tf 74.17 0 TD[(runtest)]TJ/F4 10.91 Tf -59.23 -28.09 TD[(runtest)]TJ/F1 10.91 Tf 43.77 0 TD[(is)-336(the)-337(executable)-337(test)-336(driv)27(er)-336(for)-337(DejaGn)27(u.)-454(Y)83(ou)-336(can)-337(sp)-27(ecify)-337(t)27(w)27(o)-335(kinds)-337(of)-337(things)]TJ -58.71 -13.15 TD[(on)-274(the)]TJ/F4 10.91 Tf 32.66 0 TD[(runtest)]TJ/F1 10.91 Tf 43.09 0 TD[(command)-274(line:)-416(command)-274(line)-275(options,)-287(and)-275(Tcl)-275(v)55(ariables)-274(for)-275(the)-275(test)-274(scripts.)]TJ -75.75 -13.15 TD[(The)-333(options)-333(are)-333(listed)-334(alphab)-28(etically)-333(b)-28(elo)27(w.)]TJ/F4 10.91 Tf 14.94 -16.14 TD[(runtest)]TJ/F1 10.91 Tf 43.74 0 TD[(returns)-334(an)-334(exit)-335(co)-28(de)-334(of)]TJ/F4 10.91 Tf 112.01 0 TD[(1)]TJ/F1 10.91 Tf 9.37 0 TD[(if)-334(an)27(y)-334(test)-334(has)-335(an)-334(unexp)-28(ected)-334(result;)-335(otherwise)-335(\(if)-334(all)]TJ -180.06 -13.15 TD[(tests)-333(pass)-333(or)-333(fail)-334(as)-333(exp)-28(ected\))-333(it)-334(returns)]TJ/F4 10.91 Tf 192.88 0 TD[(0)]TJ/F1 10.91 Tf 9.36 0 TD[(as)-333(the)-333(exit)-333(co)-28(de.)]TJ/F4 10.91 Tf -187.3 -16.14 TD[(runtest)]TJ/F1 10.91 Tf 43.34 0 TD[(\015ags)-297(the)-298(outcome)-297(of)-298(eac)27(h)-297(test)-297(as)-298(one)-298(of)-297(these)-298(cases.)-432(\(See)-298(Section)-298(2.4)-297([A)-298(POSIX)]TJ -58.28 -13.15 TD[(conforming)-301(test)-301(framew)26(ork],)-307(page)-301(6,)-308(for)-301(a)-302(discussion)-301(of)-302(ho)27(w)]TJ/F7 10.91 Tf 284 0 TD[(posix)]TJ/F1 10.91 Tf 31.29 0 TD[(sp)-27(eci\014es)-302(the)-301(meanings)-302(of)]TJ -315.29 -13.15 TD[(these)-333(cases.\))]TJ/F4 10.91 Tf 0 -19.13 TD[(PASS)]TJ/F1 10.91 Tf 57.6 0 TD[(The)-320(most)-320(desirable)-321(outcome:)-438(the)-320(test)-321(succeeded,)-323(and)-320(w)27(as)-320(exp)-28(ected)-320(to)-320(succeed.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(XPASS)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-288(pleasan)27(t)-287(kind)-288(of)-288(failure:)-422(a)-288(test)-288(w)27(as)-287(exp)-28(ected)-288(to)-288(fail,)-297(but)-288(succeeded.)-430(This)-288(ma)27(y)]TJ 0 -13.15 TD[(indicate)-283(progress;)-300(insp)-28(ect)-284(the)-283(test)-284(case)-284(to)-283(determine)-284(whether)-284(y)27(ou)-282(should)-284(amend)]TJ 0 -13.15 TD[(it)-333(to)-333(stop)-333(exp)-28(ecting)-334(failure.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(FAIL)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-358(test)-359(failed,)-366(although)-358(it)-359(w)26(as)-358(exp)-27(ected)-359(to)-359(succeed.)-521(This)-359(ma)27(y)-358(indicate)-359(regress;)]TJ 0 -13.15 TD[(insp)-27(ect)-334(the)-333(test)-333(case)-334(and)-333(the)-333(failing)-334(soft)27(w)28(are)-332(to)-334(lo)-28(cate)-333(the)-333(bug.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(XFAIL)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-414(test)-414(failed,)-435(but)-414(it)-415(w)27(as)-413(exp)-28(ected)-414(to)-415(fail.)-687(This)-415(result)-414(indicates)-415(no)-414(c)27(hange)-414(in)]TJ 0 -13.15 TD[(a)-360(kno)26(wn)-359(bug.)-527(If)-361(a)-361(test)-361(fails)-360(b)-28(ecause)-361(the)-361(op)-27(erating)-361(system)-361(where)-361(the)-361(test)-360(runs)]TJ 0 -13.15 TD[(lac)27(ks)-332(some)-333(facilit)26(y)-332(required)-333(b)27(y)-333(the)-333(test,)-333(the)-334(outcome)-333(is)]TJ/F4 10.91 Tf 264.55 0 TD[(UNSUPPORTED)]TJ/F1 10.91 Tf 66.63 0 TD[(instead.)]TJ/F4 10.91 Tf -388.78 -19.13 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(Output)-444(from)-445(a)-445(test)-445(requires)-445(man)27(ual)-444(insp)-28(ection;)-501(the)-445(test)-445(suite)-445(could)-445(not)-444(au-)]TJ 0 -13.15 TD[(tomatically)-430(determine)-431(the)-430(outcome.)-737(F)82(or)-429(example,)-455(y)27(our)-430(tests)-431(can)-430(rep)-28(ort)-431(this)]TJ 0 -13.15 TD[(outcome)-333(is)-333(when)-333(a)-334(test)-333(do)-28(es)-333(not)-334(complete)-333(as)-333(exp)-28(ected.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(UNTESTED)]TJ/F1 10.91 Tf 57.6 0 TD[(A)-305(test)-305(case)-305(is)-305(not)-305(y)27(et)-304(complete,)-311(and)-305(in)-305(particular)-305(cannot)-305(y)27(et)-304(pro)-28(duce)-305(a)]TJ/F4 10.91 Tf 338.44 0 TD[(PASS)]TJ/F1 10.91 Tf 26.23 0 TD[(or)]TJ/F4 10.91 Tf -364.67 -13.15 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(.)-436(Y)83(ou)-308(can)-308(also)-308(use)-309(this)-308(outcome)-309(in)-308(dumm)27(y)-308(\\tests")-308(that)-308(note)-309(explicitly)-308(the)]TJ -22.91 -13.15 TD[(absence)-333(of)-333(a)-333(real)-334(test)-333(case)-333(for)-334(a)-333(particular)-333(prop)-28(ert)27(y)83(.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(UNSUPPORTED)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(A)-351(test)-352(dep)-28(ends)-352(on)-351(a)-352(conditionally)-352(a)27(v)56(ailable)-351(feature)-352(that)-352(do)-27(es)-352(not)-352(exist)-352(\(in)-351(the)]TJ 0 -13.15 TD[(con\014gured)-446(testing)-447(en)26(vironmen)28(t\).)-784(F)82(or)-446(example,)-475(y)26(ou)-446(can)-447(use)-446(this)-447(outcome)-447(to)]TJ 0 -13.15 TD[(rep)-27(ort)-462(on)-463(a)-462(test)-462(case)-462(that)-462(do)-28(es)-462(not)-462(w)27(ork)-462(on)-462(a)-462(particular)-462(target)-462(b)-28(ecause)-462(its)]TJ 0 -13.15 TD[(op)-27(erating)-334(system)-333(supp)-28(ort)-333(do)-28(es)-333(not)-334(include)-333(a)-333(required)-334(subroutine.)]TJ/F4 10.91 Tf -42.66 -19.13 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(ma)27(y)-332(also)-333(displa)26(y)-332(the)-333(follo)27(wing)-333(messages:)]TJ/F4 10.91 Tf -58.67 -19.13 TD[(ERROR)]TJ/F1 10.91 Tf 57.6 0 TD[(Indicates)-473(a)-474(ma)-55(jor)-474(problem)-474(\(detected)-473(b)26(y)-472(the)-474(test)-474(case)-473(itself)-78(\))-474(in)-473(running)-474(the)]TJ 0 -13.15 TD[(test.)-705(This)-420(is)-421(usually)-420(an)-421(unreco)27(v)28(erable)-419(error,)-443(suc)27(h)-419(as)-420(a)-421(missing)-420(\014le)-421(or)-420(loss)-420(of)]TJ 0 -13.15 TD[(comm)27(unication)-338(to)-339(the)-339(target.)-461(\()]TJ/F7 10.91 Tf 149.18 0 TD[(posix)]TJ/F1 10.91 Tf 31.7 0 TD[(test)-338(suites)-339(should)-339(not)-339(emit)-339(this)-339(message;)]TJ -180.88 -13.15 TD[(use)]TJ/F4 10.91 Tf 18.85 0 TD[(UNSUPPORTED)]TJ/F1 10.91 Tf 63 0 TD[(,)]TJ/F4 10.91 Tf 6.66 0 TD[(UNTESTED)]TJ/F1 10.91 Tf 45.82 0 TD[(,)-333(or)]TJ/F4 10.91 Tf 20.03 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 60.91 0 TD[(instead,)-333(as)-333(appropriate.\))]TJ/F4 10.91 Tf -272.87 -19.13 TD[(WARNING)]TJ/F1 10.91 Tf 57.6 0 TD[(Indicates)-337(a)-337(p)-27(ossible)-338(problem)-337(in)-337(running)-337(the)-337(test.)-456(Usually)-337(w)27(arnings)-336(corresp)-28(ond)]TJ 0 -13.15 TD[(to)-250(reco)27(v)28(erable)-249(errors,)-267(or)-250(displa)27(y)-249(an)-250(imp)-28(ortan)27(t)-249(message)-250(ab)-28(out)-250(the)-250(follo)27(wing)-249(tests.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(NOTE)]TJ/F1 10.91 Tf 57.6 0 TD[(An)-333(informational)-333(message)-333(ab)-28(out)-334(the)-333(test)-333(case.)]TJ -42.66 -19.12 TD[(This)-371(is)-371(the)-372(full)-371(set)-372(of)-371(command)-372(line)-371(options)-372(that)]TJ/F4 10.91 Tf 239.56 0 TD[(runtest)]TJ/F1 10.91 Tf 44.14 0 TD[(recognizes.)-558(Argumen)26(ts)-370(ma)27(y)]TJ -298.64 -13.15 TD[(b)-27(e)-334(abbreviated)-333(to)-333(the)-334(shortest)-333(unique)-333(string.)]TJ ET 0 g 0 G -endstream -endobj -80 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F2 12 0 R -/F10 78 0 R -/F7 49 0 R ->> -endobj -75 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 80 0 R ->> -endobj -83 0 obj -<< -/Length 9347 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(10)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F4 10.91 Tf 28.8 -23.91 TD[(runtest)-524(--tool)]TJ/F5 10.91 Tf 85.91 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 30.37 0 TD[([)]TJ/F5 10.91 Tf 11.45 0 TD[(testsuite)]TJ/F4 10.91 Tf 40.12 0 TD[(.exp)-524(...)-525(])]TJ -167.85 -12.46 TD[([)]TJ/F5 10.91 Tf 11.45 0 TD[(testsuite)]TJ/F4 10.91 Tf 40.13 0 TD[(.exp="testfile1)-524(...")-525(])]TJ -51.58 -12.45 TD[([)]TJ/F5 10.91 Tf 11.45 0 TD[(tclv)55(ar)]TJ/F4 10.91 Tf 27.79 0 TD[(=)]TJ/F5 10.91 Tf 5.72 0 TD[(v)55(alue)]TJ/F4 10.91 Tf 25.16 0 TD[(...)-524(])]TJ -70.12 -12.45 TD[([)-524(--all)-525(])-1050([)-525(--baud)]TJ/F5 10.91 Tf 114.54 0 TD[(baud-rate)]TJ/F4 10.91 Tf 52.43 0 TD[(])-1049([)-525(--connect)]TJ/F5 10.91 Tf 85.91 0 TD[(t)27(yp)-26(e)]TJ/F4 10.91 Tf 27.25 0 TD[(])]TJ -280.13 -12.46 TD[([)-524(--debug)-525(])-1050([)-525(--help)-525(])-1050([)-525(--host)]TJ/F5 10.91 Tf 194.73 0 TD[(string)]TJ/F4 10.91 Tf 34.02 0 TD[(])]TJ -228.75 -12.45 TD[([)-524(--mail)-525(")]TJ/F5 10.91 Tf 57.27 0 TD[(name)]TJ/F4 10.91 Tf 31.79 0 TD[(...")-524(])-1050([)-525(--name)]TJ/F5 10.91 Tf 97.37 0 TD[(string)]TJ/F4 10.91 Tf 34.02 0 TD[(])]TJ -220.45 -12.45 TD[([)-524(--name)]TJ/F5 10.91 Tf 51.54 0 TD[(name)]TJ/F4 10.91 Tf 31.8 0 TD[(])-1049([)-525(--outdir)]TJ/F5 10.91 Tf 80.18 0 TD[(path)]TJ/F4 10.91 Tf 27.54 0 TD[(])]TJ -191.06 -12.46 TD[([)-524(--objdir)]TJ/F5 10.91 Tf 63 0 TD[(path)]TJ/F4 10.91 Tf 27.54 0 TD[(])-1049([)-525(--reboot)-525(])]TJ -90.54 -12.45 TD[([)-524(--srcdir)]TJ/F5 10.91 Tf 63 0 TD[(path)]TJ/F4 10.91 Tf 27.54 0 TD[(])-1049([)-525(--strace)]TJ/F5 10.91 Tf 80.19 0 TD[(n)]TJ/F4 10.91 Tf 11.78 0 TD[(])]TJ -182.51 -12.45 TD[([)-524(--target)]TJ/F5 10.91 Tf 63 0 TD[(string)]TJ/F4 10.91 Tf 34.02 0 TD[(--build)]TJ/F5 10.91 Tf 45.82 0 TD[(string)]TJ/F4 10.91 Tf 34.03 0 TD[(])]TJ -176.87 -12.46 TD[([)-524(-v)-525(|)-525(--verbose)-525(])-1050([)-525(-V)-525(|)-525(--version)-525(])-1050([)-525(--D)]TJ/F5 10.91 Tf 257.72 0 TD[(n)]TJ/F4 10.91 Tf 11.79 0 TD[(])]TJ -298.31 -18.2 TD[(--tool)]TJ/F5 10.91 Tf 38 0 TD[(to)-27(ol)]TJ 19.6 -13.15 TD[(to)-27(ol)]TJ/F1 10.91 Tf 23.21 0 TD[(sp)-27(eci\014es)-394(what)-394(set)-393(of)-394(tests)-394(to)-394(run,)-408(and)-394(what)-394(initialization)-394(mo)-27(dule)-394(to)-394(use.)]TJ/F5 10.91 Tf -23.21 -13.16 TD[(to)-27(ol)]TJ/F1 10.91 Tf 22.47 0 TD[(is)-325(used)]TJ/F8 10.91 Tf 35.71 0 TD[(only)]TJ/F1 10.91 Tf 24.31 0 TD[(for)-325(these)-326(t)27(w)28(o)-325(purp)-28(oses:)-440(it)-326(is)]TJ/F8 10.91 Tf 136.2 0 TD[(not)]TJ/F1 10.91 Tf 19.92 0 TD[(used)-325(to)-326(name)-325(the)-326(executable)]TJ -238.61 -13.15 TD[(program)-276(to)-276(test.)-425(Executable)-276(to)-28(ol)-276(names)-276(\(and)-276(paths\))-277(are)-276(recorded)-276(in)-276(`)]TJ/F4 10.91 Tf 325.55 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')]TJ -371.37 -13.15 TD[(\(see)-251(Chapter)-251(4)-252([Con\014guration)-251(dep)-28(enden)27(t)-250(v)54(alues],)-266(page)-252(15\),)-268(and)-251(y)27(ou)-251(can)-251(o)27(v)28(erride)]TJ 0 -13.15 TD[(them)-333(b)27(y)-332(sp)-28(ecifying)-333(Tcl)-334(v)55(ariables)-333(on)-333(the)-333(command)-334(line.)]TJ 0 -15.68 TD[(F)83(or)-356(example,)-364(including)-357(`)]TJ/F4 10.91 Tf 116.48 0 TD[(--tool)-333(gcc)]TJ/F1 10.91 Tf 55.19 0 TD[(')-357(on)-357(the)]TJ/F4 10.91 Tf 41.38 0 TD[(runtest)]TJ/F1 10.91 Tf 43.99 0 TD[(command)-357(line)-357(runs)-357(tests)]TJ -257.04 -13.15 TD[(from)-413(all)-413(test)-414(sub)-28(directories)-413(whose)-413(names)-414(matc)27(h)-412(`)]TJ/F4 10.91 Tf 239.54 0 TD[(gcc.*)]TJ/F1 10.91 Tf 28.64 0 TD[(',)-433(and)-413(uses)-414(one)-413(of)-414(the)]TJ -268.18 -13.15 TD[(initialization)-329(mo)-27(dules)-329(named)-329(`)]TJ/F4 10.91 Tf 144.47 0 TD[(config/*-gcc.exp)]TJ/F1 10.91 Tf 91.63 0 TD[('.)-443(T)83(o)-328(sp)-28(ecify)-329(the)-329(name)-329(of)-329(the)]TJ -236.1 -13.15 TD[(compiler)-225(\(p)-28(erhaps)-225(as)-225(an)-225(alternativ)26(e)-224(path)-225(to)-225(what)]TJ/F4 10.91 Tf 229.27 0 TD[(runtest)]TJ/F1 10.91 Tf 42.55 0 TD[(w)27(ould)-224(use)-225(b)27(y)-225(default\),)]TJ -271.82 -13.15 TD[(use)-333(`)]TJ/F4 10.91 Tf 21.88 0 TD[(GCC=)]TJ/F5 10.91 Tf 22.91 0 TD[(binname)]TJ/F1 10.91 Tf 41.22 0 TD[(')-333(on)-333(the)]TJ/F4 10.91 Tf 40.6 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(command)-333(line.)]TJ/F5 10.91 Tf -227.94 -18.21 TD[(testsuite)]TJ/F4 10.91 Tf 40.12 0 TD[(.exp)-333(...)]TJ/F1 10.91 Tf 17.48 -13.15 TD[(Sp)-27(ecify)-379(the)-379(names)-379(of)-379(testsuites)-379(to)-379(run.)-581(By)-379(default,)]TJ/F4 10.91 Tf 250.56 0 TD[(runtest)]TJ/F1 10.91 Tf 44.23 0 TD[(runs)-378(all)-379(tests)-379(for)]TJ -294.79 -13.15 TD[(the)-339(to)-28(ol,)-341(but)-339(y)27(ou)-339(can)-339(restrict)-339(it)-340(to)-339(particular)-340(testsuites)-339(b)27(y)-339(giving)-339(the)-340(names)-339(of)]TJ 0 -13.15 TD[(the)-333(`)]TJ/F4 10.91 Tf 21.82 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(')]TJ/F4 10.91 Tf 6.66 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(scripts)-333(that)-333(con)27(trol)-333(them.)]TJ/F5 10.91 Tf -89.39 -15.68 TD[(testsuite)]TJ/F1 10.91 Tf 40.12 0 TD[(.exp)-333(ma)27(y)-332(not)-334(include)-333(path)-333(information;)-334(use)-333(plain)-333(\014lenames.)]TJ/F5 10.91 Tf -97.72 -18.21 TD[(test\014le)]TJ/F4 10.91 Tf 31.58 0 TD[(.exp="testfile1)-333(...")]TJ/F1 10.91 Tf 26.02 -13.15 TD[(Sp)-27(ecify)-441(a)-440(subset)-441(of)-440(tests)-441(in)-440(a)-441(suite)-440(to)-441(run.)-766(F)83(or)-440(compiler)-440(or)-441(assem)27(bler)-439(tests,)]TJ 0 -13.15 TD[(whic)27(h)-353(often)-355(use)-354(a)-355(single)-354(`)]TJ/F4 10.91 Tf 121.27 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(')-354(script)-354(co)26(v)28(ering)-353(man)26(y)-353(di\013eren)27(t)-354(source)-354(\014les,)-360(this)]TJ -144.18 -13.15 TD[(option)-373(allo)27(ws)-373(y)27(ou)-373(to)-374(further)-373(restrict)-374(the)-374(tests)-373(b)27(y)-373(listing)-374(particular)-373(source)-374(\014les)]TJ 0 -13.15 TD[(to)-339(compile.)-462(Some)-340(to)-27(ols)-340(ev)27(en)-338(supp)-28(ort)-339(wildcards)-340(here.)-462(The)-339(wildcards)-340(supp)-27(orted)]TJ 0 -13.15 TD[(dep)-27(end)-334(up)-27(on)-334(the)-333(to)-28(ol,)-333(but)-334(t)27(ypically)-332(they)-333(are)]TJ/F4 10.91 Tf 216.7 0 TD[(?)]TJ/F1 10.91 Tf 5.72 0 TD[(,)]TJ/F4 10.91 Tf 6.67 0 TD[(*)]TJ/F1 10.91 Tf 5.73 0 TD[(,)-333(and)]TJ/F4 10.91 Tf 27.88 0 TD[([chars])]TJ/F1 10.91 Tf 40.09 0 TD[(.)]TJ/F5 10.91 Tf -360.39 -18.21 TD[(tclv)55(ar)]TJ/F4 10.91 Tf 27.78 0 TD[(=)]TJ/F5 10.91 Tf 5.73 0 TD[(v)55(alue)]TJ/F1 10.91 Tf 24.09 -13.15 TD[(Y)83(ou)-324(can)-325(de\014ne)-325(Tcl)-325(v)54(ariables)-324(for)-325(use)-325(b)27(y)-324(y)27(our)-324(test)-325(scripts)-325(in)-325(the)-325(same)-326(st)27(yle)-324(used)]TJ 0 -13.15 TD[(with)]TJ/F4 10.91 Tf 26.57 0 TD[(make)]TJ/F1 10.91 Tf 28.27 0 TD[(for)-491(en)27(vironmen)28(t)-491(v)55(ariables.)-918(F)83(or)-491(example,)-531(`)]TJ/F4 10.91 Tf 209.8 0 TD[(runtest)-333(GDB=gdb.old)]TJ/F1 10.91 Tf 106.73 0 TD[(')]TJ -371.37 -13.15 TD[(de\014nes)-435(a)-436(v)54(ariable)-434(called)-436(`)]TJ/F4 10.91 Tf 124.26 0 TD[(GDB)]TJ/F1 10.91 Tf 17.18 0 TD[(';)-487(when)-435(y)26(our)-435(scripts)-435(refer)-436(to)-436(`)]TJ/F4 10.91 Tf 146.61 0 TD[($GDB)]TJ/F1 10.91 Tf 22.9 0 TD[(')-435(in)-436(this)-436(run,)]TJ -310.95 -13.15 TD[(they)-333(use)-333(the)-333(v)54(alue)-332(`)]TJ/F4 10.91 Tf 93.39 0 TD[(gdb.old)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ -133.48 -15.68 TD[(The)-326(default)-326(Tcl)-326(v)54(ariables)-325(used)-326(for)-326(most)-326(to)-28(ols)-326(are)-327(de\014ned)-326(in)-326(the)-326(main)-327(DejaGn)27(u)]TJ/F4 10.91 Tf 0 -13.15 TD[(Makefile)]TJ/F1 10.91 Tf 45.82 0 TD[(;)-572(their)-493(v)55(alues)-492(are)-493(captured)-493(in)-493(the)-493(`)]TJ/F4 10.91 Tf 176.53 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-492(\014le.)-923(See)-493(Chapter)-493(4)]TJ -268.17 -13.15 TD[([Con\014guration)-333(dep)-28(enden)27(t)-332(v)54(alues],)-332(page)-333(15.)]TJ/F4 10.91 Tf -57.6 -18.21 TD[(--all)]TJ/F1 10.91 Tf 57.6 0 TD[(Displa)27(y)-422(all)-423(test)-423(output.)-713(By)-423(default,)]TJ/F4 10.91 Tf 180.62 0 TD[(runtest)]TJ/F1 10.91 Tf 44.71 0 TD[(sho)27(ws)-422(only)-423(the)-423(output)-423(of)-423(tests)]TJ -225.33 -13.15 TD[(that)-357(pro)-28(duce)-357(unexp)-28(ected)-357(results;)-370(that)-357(is,)-364(tests)-357(with)-357(status)-358(`)]TJ/F4 10.91 Tf 286.38 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(')-357(\(unexp)-28(ected)]TJ -309.29 -13.15 TD[(failure\),)-286(`)]TJ/F4 10.91 Tf 43.46 0 TD[(XPASS)]TJ/F1 10.91 Tf 28.64 0 TD[(')-275(\(unexp)-27(ected)-276(success\),)-286(or)-276(`)]TJ/F4 10.91 Tf 126.89 0 TD[(ERROR)]TJ/F1 10.91 Tf 28.64 0 TD[(')-275(\(a)-275(sev)27(ere)-274(error)-275(in)-276(the)-275(test)-275(case)]TJ -227.63 -13.16 TD[(itself)-77(\).)-629(Sp)-28(ecify)-395(`)]TJ/F4 10.91 Tf 79.35 0 TD[(--all)]TJ/F1 10.91 Tf 28.63 0 TD[(')-394(to)-395(see)-395(output)-395(for)-394(tests)-395(with)-395(status)-395(`)]TJ/F4 10.91 Tf 181.15 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(')-394(\(success,)-410(as)]TJ -312.04 -13.15 TD[(exp)-27(ected\))-369(`)]TJ/F4 10.91 Tf 53.12 0 TD[(XFAIL)]TJ/F1 10.91 Tf 28.63 0 TD[(')-368(\(failure,)-378(as)-369(exp)-28(ected\),)-378(or)-369(`)]TJ/F4 10.91 Tf 132.26 0 TD[(WARNING)]TJ/F1 10.91 Tf 40.09 0 TD[(')-368(\(minor)-369(error)-369(in)-369(the)-369(test)]TJ -254.1 -13.15 TD[(case)-333(itself)-78(\).)]TJ ET 0 g 0 G -endstream -endobj -84 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F5 31 0 R -/F8 52 0 R ->> -endobj -82 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 84 0 R ->> -endobj -87 0 obj -<< -/Length 8947 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(3:)-444(Using)]TJ/F4 10.91 Tf 86.45 0 TD[(runtest)]TJ/F1 10.91 Tf 334.64 0 TD[(11)]TJ/F4 10.91 Tf -421.09 -23.91 TD[(--baud)]TJ/F5 10.91 Tf 38 0 TD[(baud-rate)]TJ/F4 10.91 Tf -38 -13.15 TD[(-b)]TJ/F5 10.91 Tf 15.09 0 TD[(baud-rate)]TJ/F1 10.91 Tf 42.51 -13.15 TD[(Set)-322(the)-323(default)-323(baud)-323(rate)-323(to)-323(something)-322(other)-323(than)-323(9600.)-441(\(Some)-323(serial)-323(in)27(terface)]TJ 0 -13.15 TD[(programs,)-333(lik)27(e)]TJ/F4 10.91 Tf 71.03 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(,)-333(use)-333(a)-333(separate)-334(initialization)-333(\014le)-333(instead)-334(of)-333(this)-333(v)54(alue.\))]TJ/F4 10.91 Tf -145.81 -19.13 TD[(--connect)]TJ/F5 10.91 Tf 55.18 0 TD[(t)27(yp)-26(e)]TJ/F1 10.91 Tf 2.42 -13.15 TD[(Connect)-269(to)-270(a)-270(target)-270(testing)-269(en)26(vironmen)28(t)-269(as)-269(sp)-28(eci\014ed)-270(b)27(y)]TJ/F5 10.91 Tf 262.49 0 TD[(t)27(yp)-26(e)]TJ/F1 10.91 Tf 20.91 0 TD[(,)-282(if)-270(the)-269(target)-270(is)-270(not)]TJ -283.4 -13.15 TD[(the)-397(computer)-397(running)]TJ/F4 10.91 Tf 110.03 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(.)-635(F)82(or)-396(example,)-413(use)-397(`)]TJ/F4 10.91 Tf 99.44 0 TD[(--connect)]TJ/F1 10.91 Tf 51.54 0 TD[(')-397(to)-397(c)27(hange)-396(the)]TJ -301.1 -13.15 TD[(program)-302(used)-303(to)-303(connect)-303(to)-303(a)-303(\\bare)-303(b)-28(oard")-303(b)-28(o)-28(ot)-303(monitor.)-434(The)-303(c)27(hoices)-302(for)]TJ/F5 10.91 Tf 353.49 0 TD[(t)27(yp)-26(e)]TJ/F1 10.91 Tf -353.49 -13.16 TD[(in)-368(the)-368(DejaGn)27(u)-367(1.0)-368(distribution)-368(are)-368(`)]TJ/F4 10.91 Tf 178.08 0 TD[(rlogin)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-376(`)]TJ/F4 10.91 Tf 13.21 0 TD[(telnet)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-376(`)]TJ/F4 10.91 Tf 13.2 0 TD[(rsh)]TJ/F1 10.91 Tf 17.18 0 TD[(',)-376(`)]TJ/F4 10.91 Tf 13.2 0 TD[(tip)]TJ/F1 10.91 Tf 17.19 0 TD[(',)-376(`)]TJ/F4 10.91 Tf 13.2 0 TD[(kermit)]TJ/F1 10.91 Tf 34.36 0 TD[(',)]TJ -368.34 -13.15 TD[(and)-333(`)]TJ/F4 10.91 Tf 24.24 0 TD[(mondfe)]TJ/F1 10.91 Tf 34.37 0 TD[('.)]TJ -58.61 -16.14 TD[(The)-363(default)-364(for)-364(this)-364(option)-364(dep)-28(ends)-364(on)-364(the)-364(con\014guration)-364(\(see)-364(Section)-364(5.5)-363([Re-)]TJ 0 -13.15 TD[(mote)-370(targets)-370(supp)-28(orted],)-380(page)-370(32\).)-555(The)-371(default)-370(is)-370(c)26(hosen)-369(to)-370(b)-28(e)-370(the)-371(most)-370(con-)]TJ 0 -13.15 TD[(v)27(enien)28(t)-347(comm)27(unication)-347(metho)-28(d)-347(a)26(v)56(ailable,)-350(but)-348(often)-348(other)-348(alternativ)27(es)-347(w)27(ork)-347(as)]TJ 0 -13.15 TD[(w)27(ell;)-316(y)26(ou)-309(ma)27(y)-309(\014nd)-310(it)-310(useful)-310(to)-310(try)-310(alternativ)27(e)-309(connect)-310(metho)-28(ds)-310(if)-310(y)27(ou)-309(susp)-28(ect)-310(a)]TJ 0 -13.15 TD[(comm)27(unication)-332(problem)-333(with)-334(y)27(our)-332(testing)-334(target.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(--debug)]TJ/F1 10.91 Tf 57.6 0 TD[(T)83(urns)-269(on)-271(the)]TJ/F4 10.91 Tf 63.18 0 TD[(expect)]TJ/F1 10.91 Tf 37.31 0 TD[(in)27(ternal)-269(debugging)-270(output.)-424(Debugging)-270(output)-270(is)-271(displa)27(y)28(ed)]TJ -100.49 -13.15 TD[(as)-482(part)-482(of)-482(the)]TJ/F4 10.91 Tf 74.76 0 TD[(runtest)]TJ/F1 10.91 Tf 45.35 0 TD[(output,)-519(and)-482(logged)-482(to)-482(a)-482(\014le)-482(called)-482(`)]TJ/F4 10.91 Tf 179.64 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[('.)-890(The)]TJ -339.84 -13.15 TD[(extra)-261(debugging)-262(output)-261(do)-28(es)]TJ/F8 10.91 Tf 137.57 0 TD[(not)]TJ/F1 10.91 Tf 19.22 0 TD[(app)-27(ear)-262(on)-261(standard)-262(output,)-276(unless)-262(the)-261(v)27(erb)-27(ose)]TJ -156.79 -13.15 TD[(lev)27(el)-369(is)-369(greater)-370(than)-370(2)-370(\(for)-370(instance,)-379(to)-369(see)-370(debug)-370(output)-370(immediately)82(,)-377(sp)-28(ecify)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--debug)-333(-v)-333(-v)]TJ/F1 10.91 Tf 70.27 0 TD[('\).)-618(The)-392(debugging)-391(output)-392(sho)27(ws)-390(all)-392(attempts)-391(at)-392(matc)27(hing)-391(the)]TJ -73.3 -13.15 TD[(test)-364(output)-365(of)-365(the)-364(to)-28(ol)-365(with)-364(the)-365(scripted)-365(patterns)-365(describing)-364(exp)-28(ected)-365(output.)]TJ 0 -13.15 TD[(The)-333(output)-333(generated)-333(with)-334(`)]TJ/F4 10.91 Tf 135.79 0 TD[(--strace)]TJ/F1 10.91 Tf 45.82 0 TD[(')-333(also)-333(go)-28(es)-333(in)27(to)-333(`)]TJ/F4 10.91 Tf 77.69 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ/F4 10.91 Tf -356.99 -19.13 TD[(--help)]TJ 0 -13.15 TD[(-he)]TJ/F1 10.91 Tf 57.6 0 TD[(Prin)27(ts)-284(out)-286(a)-285(short)-286(summary)-285(of)-286(the)]TJ/F4 10.91 Tf 164.35 0 TD[(runtest)]TJ/F1 10.91 Tf 43.2 0 TD[(options,)-295(then)-285(exits)-285(\(ev)26(en)-284(if)-286(y)27(ou)-284(also)]TJ -207.55 -13.15 TD[(sp)-27(ecify)-334(other)-333(options\).)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(--host)]TJ/F5 10.91 Tf 38 0 TD[(string)]TJ 19.6 -13.15 TD[(string)]TJ/F1 10.91 Tf 33.12 0 TD[(is)-442(a)-442(full)-442(con\014guration)-442(\\triple")-442(name)-442(as)-442(used)-443(b)27(y)]TJ/F4 10.91 Tf 238.5 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(.)-770(Use)-442(this)]TJ -323.17 -13.15 TD[(option)-334(to)-334(o)26(v)28(erride)-333(the)-335(default)-334(string)-334(recorded)-335(b)27(y)-333(y)26(our)-333(con\014guration's)-334(c)26(hoice)-333(of)]TJ 0 -13.15 TD[(host.)-438(This)-317(c)27(hoice)-316(do)-28(es)-317(not)-316(c)27(hange)-316(ho)27(w)-316(an)27(ything)-316(is)-317(actually)-316(con\014gured)-317(unless)-317({)]TJ 0 -13.15 TD[(build)-258(is)-259(also)-259(sp)-28(eci\014ed;)-284(it)-259(a\013ects)]TJ/F8 10.91 Tf 147.77 0 TD[(only)]TJ/F1 10.91 Tf 23.58 0 TD[(DejaGn)27(u)-258(pro)-27(cedures)-259(that)-259(compare)-259(the)-259(host)]TJ -171.35 -13.15 TD[(string)-435(with)-436(particular)-435(v)55(alues.)-750(The)-436(pro)-28(cedures)]TJ/F4 10.91 Tf 229.25 0 TD[(ishost)]TJ/F1 10.91 Tf 34.36 0 TD[(,)]TJ/F4 10.91 Tf 8.06 0 TD[(istarget)]TJ/F1 10.91 Tf 45.82 0 TD[(,)]TJ/F4 10.91 Tf 8.06 0 TD[(isnative)]TJ/F1 10.91 Tf 45.82 0 TD[(,)]TJ -371.37 -13.15 TD[(and)]TJ/F4 10.91 Tf 22.08 0 TD[(setup_xfail)]TJ/F1 10.91 Tf 67.5 0 TD[(are)-412(a\013ected)-413(b)27(y)-412(`)]TJ/F4 10.91 Tf 79.3 0 TD[(--host)]TJ/F1 10.91 Tf 34.36 0 TD[('.)-682(In)-413(this)-413(usage,)]TJ/F4 10.91 Tf 84.02 0 TD[(host)]TJ/F1 10.91 Tf 27.41 0 TD[(refers)-412(to)-413(the)]TJ -314.67 -13.15 TD[(mac)27(hine)-418(that)-420(the)-420(tests)-419(are)-420(to)-420(b)-28(e)-419(run)-420(on,)-441(whic)26(h)-418(ma)27(y)-419(not)-420(b)-28(e)-419(the)-420(same)-420(as)-419(the)]TJ/F4 10.91 Tf 0 -13.15 TD[(build)]TJ/F1 10.91 Tf 32.01 0 TD[(mac)27(hine.)-435(If)]TJ/F4 10.91 Tf 57.53 0 TD[(--build)]TJ/F1 10.91 Tf 43.46 0 TD[(is)-309(also)-309(sp)-28(eci\014ed,)-314(then)]TJ/F4 10.91 Tf 103.73 0 TD[(--host)]TJ/F1 10.91 Tf 37.73 0 TD[(refers)-309(to)-309(the)-309(mac)27(hine)]TJ -274.46 -13.15 TD[(that)-333(the)-333(tests)-333(wil,)-334(b)-28(e)-333(run)-333(on,)-334(not)-333(the)-333(mac)27(hine)-333(DejaGn)27(u)-332(is)-334(run)-333(on.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(--build)]TJ/F5 10.91 Tf 43.73 0 TD[(string)]TJ 13.87 -13.15 TD[(string)]TJ/F1 10.91 Tf 32.21 0 TD[(is)-358(a)-359(full)-359(con\014guration)-359(\\triple")-359(name)-359(as)-359(used)-359(b)27(y)]TJ/F4 10.91 Tf 230.34 0 TD[(configure)]TJ/F1 10.91 Tf 51.54 0 TD[(.)-521(This)-359(is)-359(the)]TJ -314.09 -13.15 TD[(t)27(yp)-26(e)-310(of)-309(mac)27(hine)-308(DejaGn)26(u)-308(and)-309(the)-309(to)-28(ols)-309(to)-310(b)-27(e)-310(tested)-309(are)-309(built)-309(on.)-437(F)83(or)-309(a)-309(normal)]TJ 0 -13.16 TD[(cross)-333(this)-333(is)-333(the)-334(same)-333(as)-333(the)-334(host,)-333(but)-333(for)-334(a)-333(canadian)-333(cross,)-334(they)-333(are)-333(sep)-28(erate.)]TJ/F4 10.91 Tf -57.6 -19.12 TD[(--name)]TJ/F5 10.91 Tf 38 0 TD[(name)]TJ 19.6 -13.15 TD[(name)]TJ/F1 10.91 Tf 30.68 0 TD[(is)-423(a)-423(name)-424(for)-423(the)-423(particular)-424(testing)-423(target)-424(mac)27(hine)-422(\(for)-424(cross)-423(testing\).)]TJ -30.68 -13.15 TD[(If)-350(the)-351(testing)-351(target)-351(has)-351(IP)-350(net)26(w)28(ork)-350(supp)-27(ort)-351(\(for)-351(example,)]TJ/F4 10.91 Tf 282.71 0 TD[(RPC)]TJ/F1 10.91 Tf 21.01 0 TD[(or)]TJ/F4 10.91 Tf 13.55 0 TD[(NFS)]TJ/F1 10.91 Tf 17.19 0 TD[(\),)-355(this)-350(is)]TJ -334.46 -13.16 TD[(the)-412(net)27(w)28(ork)-411(name)-413(for)-412(the)-412(target)-412(itself.)-682(\()]TJ/F5 10.91 Tf 199.72 0 TD[(name)]TJ/F1 10.91 Tf 30.56 0 TD[(is)]TJ/F8 10.91 Tf 11.83 0 TD[(not)-430(the)-430(c)50(on\014gur)51(ation)-429(string)]TJ/F1 10.91 Tf -242.11 -13.15 TD[(y)27(ou)-285(sp)-28(ecify)-286(as)-286(a)-286(target)-286(with)]TJ/F4 10.91 Tf 133.11 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(;)-301(the)-286(`)]TJ/F4 10.91 Tf 27.62 0 TD[(--name)]TJ/F1 10.91 Tf 34.37 0 TD[(')-286(option)-286(names)-286(a)-286(particular)]TJ -246.65 -13.15 TD[(target,)-402(rather)-388(than)-389(describing)-388(a)-389(class)-389(of)-388(targets.\))-610(F)82(or)-387(targets)-389(that)-388(connect)-389(in)]TJ ET 0 g 0 G -endstream -endobj -88 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F5 31 0 R -/F8 52 0 R ->> -endobj -86 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 88 0 R ->> -endobj -91 0 obj -<< -/Length 8100 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(12)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 57.6 -23.91 TD[(other)-273(w)26(a)28(ys,)-284(the)-274(meaning)-274(of)-274(the)]TJ/F5 10.91 Tf 147.84 0 TD[(name)]TJ/F1 10.91 Tf 29.05 0 TD[(string)-273(dep)-28(ends)-274(on)-274(the)-273(connection)-274(metho)-28(d.)]TJ -176.89 -13.15 TD[(See)-333(Section)-333(5.5)-333([Remote)-334(targets)-333(supp)-28(orted],)-333(page)-334(32.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(--name)]TJ/F5 10.91 Tf 38 0 TD[(string)]TJ/F1 10.91 Tf 19.6 -13.15 TD[(Sp)-27(ecify)-287(a)-286(net)26(w)28(ork)-285(name)-287(of)-286(testing)-287(target)-286(or)-287(its)-286(host.)-429(The)-287(particular)-286(names)-287(that)]TJ 0 -13.15 TD[(are)-271(meaningful)-271(with)-271(`)]TJ/F4 10.91 Tf 100.12 0 TD[(--name)]TJ/F1 10.91 Tf 34.36 0 TD[(')-271(will)-271(dep)-28(end)-271(on)-271(y)27(our)-271(site)-271(con\014guration,)-284(and)-271(on)-271(the)]TJ -134.48 -13.15 TD[(connection)-339(proto)-28(col:)-457(for)-340(example,)]TJ/F4 10.91 Tf 164.37 0 TD[(tip)]TJ/F1 10.91 Tf 20.89 0 TD[(connections)-339(require)-340(names)-340(from)-340(a)-339(serial)]TJ -185.26 -13.15 TD[(line)-286(con\014guration)-286(\014le)-286(\(usually)-286(called)-286(`)]TJ/F4 10.91 Tf 177.21 0 TD[(/etc/remote)]TJ/F1 10.91 Tf 63 0 TD[('\),)-295(while)]TJ/F4 10.91 Tf 41.49 0 TD[(telnet)]TJ/F1 10.91 Tf 37.49 0 TD[(connections)]TJ -319.19 -13.15 TD[(use)-333(IP)-333(hostnames.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(--objdir)]TJ/F5 10.91 Tf 49.45 0 TD[(path)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(Use)]TJ/F5 10.91 Tf 22.69 0 TD[(path)]TJ/F1 10.91 Tf 27.18 0 TD[(as)-491(the)-491(top)-492(directory)-491(con)26(taining)-490(an)27(y)-491(auxiliary)-491(compiled)-492(test)-491(co)-28(de.)]TJ -49.87 -13.15 TD[(This)-332(defaults)-332(to)-332(`)]TJ/F4 10.91 Tf 82.21 0 TD[(.)]TJ/F1 10.91 Tf 5.72 0 TD[('.)-444(Use)-332(this)-332(option)-332(to)-332(lo)-28(cate)-332(pre-compiled)-332(test)-333(co)-27(de.)-444(Y)82(ou)-331(can)]TJ -87.93 -13.16 TD[(normally)-333(prepare)-333(an)27(y)-333(auxiliary)-333(\014les)-333(needed)-334(with)]TJ/F4 10.91 Tf 234.43 0 TD[(make)]TJ/F1 10.91 Tf 22.9 0 TD[(.)]TJ/F4 10.91 Tf -314.93 -19.12 TD[(--outdir)]TJ/F5 10.91 Tf 49.45 0 TD[(path)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(W)83(rite)-297(output)-298(logs)-299(in)-298(directory)]TJ/F5 10.91 Tf 145.2 0 TD[(path)]TJ/F1 10.91 Tf 21.82 0 TD[(.)-432(The)-298(default)-298(is)-299(`)]TJ/F4 10.91 Tf 79.69 0 TD[(.)]TJ/F1 10.91 Tf 5.73 0 TD[(',)-305(the)-298(directory)-298(where)-298(y)27(ou)]TJ -252.44 -13.15 TD[(start)]TJ/F4 10.91 Tf 26.17 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(.)-450(This)-335(option)-336(a\013ects)-335(only)-335(the)-336(summary)-335(and)-336(the)-335(detailed)-335(log)-336(\014les)]TJ -66.26 -13.16 TD[(`)]TJ/F5 10.91 Tf 3.03 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.49 0 TD[(.sum)]TJ/F1 10.91 Tf 22.9 0 TD[(')-393(and)-393(`)]TJ/F5 10.91 Tf 32.22 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.49 0 TD[(.log)]TJ/F1 10.91 Tf 22.91 0 TD[('.)-624(The)-393(DejaGn)26(u)-392(debug)-393(log)-394(`)]TJ/F4 10.91 Tf 136.63 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[(')-393(alw)27(a)28(ys)-393(app)-27(ears)]TJ -294.76 -13.15 TD[(\(when)-333(requested\))-333(in)-333(the)-334(lo)-28(cal)-333(directory)82(.)]TJ/F4 10.91 Tf -57.6 -19.12 TD[(--reboot)]TJ/F1 10.91 Tf 57.6 0 TD[(Reb)-27(o)-28(ot)-296(the)-295(target)-296(b)-28(oard)-296(when)]TJ/F4 10.91 Tf 146.95 0 TD[(runtest)]TJ/F1 10.91 Tf 43.31 0 TD[(initializes.)-431(Usually)82(,)-302(when)-296(running)-296(tests)]TJ -190.26 -13.16 TD[(on)-364(a)-364(separate)-364(target)-364(b)-28(oard,)-372(it)-364(is)-364(safer)-364(to)-364(reb)-28(o)-28(ot)-364(the)-364(target)-364(to)-364(b)-28(e)-364(certain)-364(of)-364(its)]TJ 0 -13.15 TD[(state.)-444(Ho)27(w)28(ev)27(er,)-332(when)-333(dev)27(eloping)-333(test)-333(scripts,)-333(reb)-28(o)-28(oting)-333(tak)26(es)-332(a)-333(lot)-334(of)-333(time.)]TJ/F4 10.91 Tf -57.6 -19.12 TD[(--srcdir)]TJ/F5 10.91 Tf 49.45 0 TD[(path)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(Use)]TJ/F5 10.91 Tf 22.07 0 TD[(path)]TJ/F1 10.91 Tf 26.56 0 TD[(as)-434(the)-435(top)-434(directory)-435(for)-434(test)-435(scripts)-435(to)-434(run.)]TJ/F4 10.91 Tf 220.43 0 TD[(runtest)]TJ/F1 10.91 Tf 44.83 0 TD[(lo)-27(oks)-435(in)-434(this)]TJ -313.89 -13.16 TD[(directory)-303(for)-303(an)27(y)-303(sub)-28(directory)-303(whose)-303(name)-304(b)-28(egins)-303(with)-303(the)-304(to)-28(olname)-303(\(sp)-28(eci\014ed)]TJ 0 -13.15 TD[(with)-366(`)]TJ/F4 10.91 Tf 28.24 0 TD[(--tool)]TJ/F1 10.91 Tf 34.36 0 TD[('\).)-543(F)82(or)-366(instance,)-374(with)-367(`)]TJ/F4 10.91 Tf 110.39 0 TD[(--tool)-333(gdb)]TJ/F1 10.91 Tf 55.18 0 TD[(',)]TJ/F4 10.91 Tf 10.15 0 TD[(runtest)]TJ/F1 10.91 Tf 44.09 0 TD[(uses)-366(tests)-366(in)-367(sub)-28(di-)]TJ -282.41 -13.15 TD[(rectories)-378(`)]TJ/F4 10.91 Tf 47.28 0 TD[(gdb.*)]TJ/F1 10.91 Tf 28.63 0 TD[(')-378(\(with)-378(the)-378(usual)-378(shell-lik)26(e)-377(\014lename)-378(expansion\).)-579(If)-379(y)27(ou)-377(do)-378(not)]TJ -75.91 -13.15 TD[(use)-416(`)]TJ/F4 10.91 Tf 22.78 0 TD[(--srcdir)]TJ/F1 10.91 Tf 45.82 0 TD[(',)]TJ/F4 10.91 Tf 10.82 0 TD[(runtest)]TJ/F1 10.91 Tf 44.63 0 TD[(lo)-27(oks)-416(for)-416(test)-416(directories)-416(under)-417(the)-416(curren)27(t)-415(w)27(orking)]TJ -124.05 -13.15 TD[(directory)83(.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(--strace)]TJ/F5 10.91 Tf 49.45 0 TD[(n)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(T)83(urn)-240(on)-240(in)26(ternal)-239(tracing)-241(for)]TJ/F4 10.91 Tf 131.12 0 TD[(expect)]TJ/F1 10.91 Tf 34.37 0 TD[(,)-259(to)]TJ/F5 10.91 Tf 18.18 0 TD[(n)]TJ/F1 10.91 Tf 8.68 0 TD[(lev)27(els)-239(deep.)-414(By)-240(adjusting)-241(the)-241(lev)27(el,)-258(y)27(ou)]TJ -192.35 -13.15 TD[(can)-256(con)26(trol)-255(the)-257(exten)26(t)-255(to)-257(whic)27(h)-256(y)26(our)-255(output)-257(expands)-257(m)27(ulti-lev)27(el)-255(Tcl)-257(statemen)26(ts.)]TJ 0 -13.15 TD[(This)-281(allo)27(ws)-281(y)27(ou)-281(to)-281(ignore)-282(some)-281(lev)26(els)-280(of)]TJ/F4 10.91 Tf 188.48 0 TD[(case)]TJ/F1 10.91 Tf 25.98 0 TD[(or)]TJ/F4 10.91 Tf 12.8 0 TD[(if)]TJ/F1 10.91 Tf 14.53 0 TD[(statemen)27(ts.)-426(Eac)27(h)-281(pro)-27(cedure)]TJ -241.79 -13.15 TD[(call)-333(or)-333(con)27(trol)-333(structure)-333(coun)27(ts)-333(as)-333(one)-333(\\lev)27(el".)]TJ 0 -16.14 TD[(The)-547(output)-547(is)-547(recorded)-547(in)-547(the)-547(same)-548(\014le,)-600(`)]TJ/F4 10.91 Tf 215.18 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[(',)-600(used)-547(for)-547(output)-548(from)]TJ -255.27 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ/F4 10.91 Tf -100.72 -19.13 TD[(--target)]TJ/F5 10.91 Tf 49.45 0 TD[(string)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(Use)-340(this)-341(option)-340(to)-341(o)27(v)28(erride)-340(the)-340(default)-341(setting)-340(\(running)-341(nativ)27(e)-340(tests\).)]TJ/F5 10.91 Tf 335.05 0 TD[(string)]TJ/F1 10.91 Tf 32.02 0 TD[(is)]TJ -367.07 -13.15 TD[(a)-316(full)-316(con\014guration)-316(\\triple")-317(name)]TJ/F6 6.97 Tf 159.02 3.96 TD[(1)]TJ/F1 10.91 Tf 7.92 -3.96 TD[(as)-316(used)-316(b)27(y)]TJ/F4 10.91 Tf 52.89 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(.)-438(This)-317(option)-316(c)27(hanges)]TJ -271.38 -13.15 TD[(the)-469(con\014guration)]TJ/F4 10.91 Tf 87.85 0 TD[(runtest)]TJ/F1 10.91 Tf 45.21 0 TD[(uses)-469(for)-469(the)-470(default)-469(to)-28(ol)-469(names,)-504(and)-469(other)-470(setup)]TJ -133.06 -13.15 TD[(information.)-661(See)-406(section)-405(\\Using)]TJ/F4 10.91 Tf 160.04 0 TD[(configure)]TJ/F1 10.91 Tf 51.54 0 TD[(")-405(in)]TJ/F5 10.91 Tf 23.4 0 TD[(Cygn)27(us)-404(con\014gure)]TJ/F1 10.91 Tf 83.31 0 TD[(,)-423(for)-406(details)]TJ -318.29 -13.15 TD[(ab)-27(out)]TJ/F4 10.91 Tf 31.21 0 TD[(configure)]TJ/F1 10.91 Tf 55.18 0 TD[(names.)]TJ ET 18.00 -579.46 m 162.00 -579.46 l 162.00 -579.06 l 18.00 -579.06 l b BT/F6 6.97 Tf 23.02 -587.41 TD[(1)]TJ/F1 10.91 Tf 9.92 -3.96 TD[(Con\014guration)-333(triples)-333(ha)27(v)27(e)-332(the)-333(form)-334(`)]TJ/F5 10.91 Tf 175.31 0 TD[(cpu)]TJ/F4 10.91 Tf 16.97 0 TD[(-)]TJ/F5 10.91 Tf 5.72 0 TD[(v)27(endor)]TJ/F4 10.91 Tf 32.16 0 TD[(-)]TJ/F5 10.91 Tf 5.72 0 TD[(os)]TJ/F1 10.91 Tf 10.21 0 TD[('.)]TJ ET 0 g 0 G -endstream -endobj -92 0 obj -<< -/F1 9 0 R -/F5 31 0 R -/F4 28 0 R -/F6 46 0 R ->> -endobj -90 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 92 0 R ->> -endobj -96 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -958 -/Flags 68 -/FontBBox [-30 -958 1146 777] -/FontName /CMSY9 -/ItalicAngle -14 -/XHeight 431 -/StemV 80 -/FontFile 95 0 R ->> -endobj -97 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F11 -/FontDescriptor 96 0 R -/BaseFont /UJKJVH+CMSY9 -/FirstChar 0 -/LastChar 127 -/Widths [799.38 285.49 799.38 513.89 799.38 513.89 799.38 799.38 799.38 799.38 799.38 -799.38 799.38 1027.77 513.89 513.89 799.38 799.38 799.38 799.38 799.38 799.38 799.38 -799.38 799.38 799.38 799.38 799.38 1027.77 1027.77 799.38 799.38 1027.77 1027.77 -513.89 513.89 1027.77 1027.77 1027.77 799.38 1027.77 1027.77 628.08 628.08 1027.77 -1027.77 1027.77 799.38 279.32 1027.77 685.18 685.18 913.57 913.57 0 0 570.98 570.98 -685.18 513.89 742.28 742.28 799.38 799.38 628.08 821.12 673.62 542.57 793.76 542.43 -736.33 610.91 871.05 562.72 696.6 782.16 707.93 1229.16 842.08 816.32 716.77 839.34 -873.88 622.37 563.16 642.26 632.06 1017.48 732.43 685 742 685.18 685.18 685.18 685.18 -685.18 628.08 628.08 456.79 456.79 456.79 456.79 513.89 513.89 399.69 399.69 285.49 -513.89 513.89 628.08 513.89 285.49 856.48 770.67 856.48 428.24 685.18 685.18 799.38 -799.38 456.79 456.79 456.79 628.08 799.38 799.38 799.38 799.38] ->> -endobj -99 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -194.44 -/Flags 4 -/FontBBox [-267 -250 1070 968] -/FontName /CMR8 -/ItalicAngle 0 -/XHeight 431 -/StemV 80 -/FontFile 98 0 R ->> -endobj -100 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F12 -/FontDescriptor 99 0 R -/BaseFont /PLCKEA+CMR8 -/FirstChar 0 -/LastChar 127 -/Widths [663.55 885.43 826.4 736.82 708.34 795.85 767.37 826.4 767.37 826.4 767.37 -619.8 590.29 590.29 885.43 885.43 295.14 324.66 531.26 531.26 531.26 531.26 531.26 -795.85 472.23 531.26 767.37 826.4 531.26 958.69 1076.75 826.4 295.14 295.14 531.26 -885.43 531.26 885.43 826.4 295.14 413.2 413.2 531.26 826.4 295.14 354.17 295.14 531.26 -531.26 531.26 531.26 531.26 531.26 531.26 531.26 531.26 531.26 531.26 295.14 295.14 -295.14 826.4 501.74 501.74 826.4 795.85 752.09 767.37 811.12 722.58 693.07 833.52 -795.85 382.64 545.49 825.36 663.55 972.93 795.85 826.4 722.58 826.4 781.61 590.29 -767.37 795.85 795.85 1090.99 795.85 795.85 649.31 295.14 531.26 295.14 531.26 295.14 -295.14 531.26 590.29 472.23 590.29 472.23 324.66 531.26 590.29 295.14 324.66 560.77 -295.14 885.43 590.29 531.26 590.29 560.77 414.07 419.1 413.2 590.29 560.77 767.37 -560.77 560.77 472.23 531.26 1062.52 531.26 531.26 531.26] ->> -endobj -101 0 obj -<< -/Length 3470 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(3:)-444(Using)]TJ/F4 10.91 Tf 86.45 0 TD[(runtest)]TJ/F1 10.91 Tf 334.64 0 TD[(13)]TJ/F4 10.91 Tf -421.09 -23.91 TD[(--verbose)]TJ 0 -13.15 TD[(-v)]TJ/F1 10.91 Tf 57.6 0 TD[(T)83(urns)-367(on)-367(more)-367(output.)-547(Rep)-27(eating)-368(this)-367(option)-368(increases)-367(the)-367(amoun)27(t)-367(of)-367(output)]TJ 0 -13.15 TD[(displa)27(y)28(ed.)-726(Lev)27(el)-427(one)-428(\(`)]TJ/F4 10.91 Tf 112.93 0 TD[(-v)]TJ/F1 10.91 Tf 11.46 0 TD[('\))-427(is)-428(simply)-427(test)-428(output.)-727(Lev)26(el)-426(t)27(w)27(o)-426(\(`)]TJ/F4 10.91 Tf 183.83 0 TD[(-v)-333(-v)]TJ/F1 10.91 Tf 26.55 0 TD[('\))-427(sho)27(ws)]TJ -334.77 -13.15 TD[(messages)-497(on)-498(options,)-539(con\014guration,)-538(and)-498(pro)-28(cess)-497(con)26(trol.)-936(V)82(erb)-27(ose)-497(messages)]TJ 0 -13.16 TD[(app)-27(ear)-342(in)-342(the)-342(detailed)-342(\(`)]TJ/F4 10.91 Tf 116.47 0 TD[(*.log)]TJ/F1 10.91 Tf 28.63 0 TD[('\))-341(log)-342(\014le,)-345(but)-342(not)-342(in)-341(the)-342(summary)-342(\(`)]TJ/F4 10.91 Tf 175.72 0 TD[(*.sum)]TJ/F1 10.91 Tf 28.64 0 TD[('\))-341(log)]TJ -349.46 -13.15 TD[(\014le.)]TJ/F4 10.91 Tf -57.6 -19.12 TD[(--version)]TJ 0 -13.15 TD[(-V)]TJ/F1 10.91 Tf 57.6 0 TD[(Prin)27(ts)-296(out)-296(the)-297(v)26(ersion)-295(n)26(um)28(b)-27(ers)-296(of)-297(DejaGn)26(u,)]TJ/F4 10.91 Tf 210.67 0 TD[(expect)]TJ/F1 10.91 Tf 37.61 0 TD[(and)-296(Tcl,)-305(and)-296(exits)-297(without)]TJ -248.28 -13.16 TD[(running)-333(an)27(y)-332(tests.)]TJ/F4 10.91 Tf -57.6 -19.12 TD[(-D0)]TJ 0 -13.15 TD[(-D1)]TJ/F1 10.91 Tf 57.6 0 TD[(Start)-281(the)-282(in)26(ternal)-281(Tcl)-282(debugger.)-427(The)-282(Tcl)-282(debugger)-282(supp)-28(orts)-282(breakp)-28(oin)27(ts,)-291(single)]TJ 0 -13.16 TD[(stepping,)-470(and)-443(other)-443(common)-443(debugging)-442(activities.)-774(\(See)]TJ/F5 10.91 Tf 277.57 0 TD[(A)-442(Debugger)-443(for)-443(Tcl)]TJ -277.57 -13.15 TD[(Applications)]TJ/F1 10.91 Tf 63.84 0 TD[(b)27(y)-332(Don)-333(Lib)-28(es.)]TJ/F6 6.97 Tf 67.03 3.96 TD[(2)]TJ/F1 10.91 Tf 4.47 -3.96 TD[(\))]TJ -135.34 -16.14 TD[(If)-303(y)27(ou)-303(sp)-27(ecify)-304(`)]TJ/F4 10.91 Tf 69.69 0 TD[(-D1)]TJ/F1 10.91 Tf 17.18 0 TD[(',)-309(the)]TJ/F4 10.91 Tf 27.9 0 TD[(expect)]TJ/F1 10.91 Tf 37.67 0 TD[(shell)-303(stops)-303(at)-304(a)-303(breakp)-28(oin)27(t)-303(as)-303(so)-28(on)-304(as)-303(DejaGn)27(u)]TJ -152.44 -13.15 TD[(in)27(v)28(ok)28(es)-332(it.)]TJ 0 -16.14 TD[(If)-369(y)26(ou)-369(sp)-27(ecify)-370(`)]TJ/F4 10.91 Tf 71.86 0 TD[(-D0)]TJ/F1 10.91 Tf 17.19 0 TD[(',)-379(DejaGn)27(u)-369(starts)-370(as)-369(usual,)-379(but)-370(y)26(ou)-368(can)-370(en)26(ter)-368(the)-370(debugger)]TJ -89.05 -13.15 TD[(b)27(y)-332(sending)-333(an)-334(in)27(terrupt)-332(\(e.g.)-445(b)27(y)-332(t)27(yping)]TJ/F11 8.97 Tf 190.73 0.4 TD[(h)]TJ ET 269.23 -231.58 m 281.94 -231.58 l 281.94 -231.18 l 269.23 -231.18 l b BT/F12 7.97 Tf 269.23 -238.31 TD[(C-c)]TJ ET 269.23 -240.15 m 281.94 -240.15 l 281.94 -239.75 l 269.23 -239.75 l b BT/F11 8.97 Tf 281.43 -237.91 TD[(i)]TJ/F1 10.91 Tf 3.58 -0.4 TD[(\).)]TJ ET 18.00 -611.91 m 162.00 -611.91 l 162.00 -611.51 l 18.00 -611.51 l b BT/F6 6.97 Tf 23.02 -619.85 TD[(2)]TJ/F1 10.91 Tf 9.92 -3.96 TD[(Distributed)-333(in)-333(P)27(ostScript)-333(form)-333(with)]TJ/F4 10.91 Tf 174.76 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(as)-333(the)-333(\014le)]TJ -212.76 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(expect/tcl-debug.ps)]TJ/F1 10.91 Tf 108.82 0 TD[('.)]TJ ET 0 g 0 G -endstream -endobj -102 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F5 31 0 R -/F6 46 0 R -/F11 97 0 R -/F12 100 0 R ->> -endobj -94 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 102 0 R ->> -endobj -105 0 obj -<< -/Length 117 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(14)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ ET 0 g 0 G -endstream -endobj -106 0 obj -<< -/F1 9 0 R ->> -endobj -104 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 106 0 R ->> -endobj -109 0 obj -<< -/Length 8271 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(4:)-444(Setting)]TJ/F4 10.91 Tf 93.36 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(defaults)-22611(15)]TJ/F2 17.22 Tf -137.09 -25.91 TD[(4)-562(Setting)]TJ/F10 17.22 Tf 86.31 0 TD[(runtest)]TJ/F2 17.22 Tf 68.46 0 TD[(defaults)]TJ/F1 10.91 Tf -139.83 -28.09 TD[(The)-513(site)-514(con\014guration)-514(\014le,)-558(`)]TJ/F4 10.91 Tf 140.58 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-558(captures)-514(con\014guration-dep)-28(enden)27(t)-513(v)55(alues)-513(and)]TJ -201.34 -13.15 TD[(propagates)-386(them)-387(to)-387(the)-387(DejaGn)27(u)-386(test)-386(en)27(vironmen)27(t)-385(using)-387(Tcl)-387(v)55(ariables.)-604(This)-387(ties)-387(the)-386(De-)]TJ 0 -13.15 TD[(jaGn)27(u)-332(test)-333(scripts)-334(in)27(to)-332(the)]TJ/F4 10.91 Tf 129.68 0 TD[(configure)]TJ/F1 10.91 Tf 55.18 0 TD[(and)]TJ/F4 10.91 Tf 21.22 0 TD[(make)]TJ/F1 10.91 Tf 26.54 0 TD[(programs.)]TJ -217.68 -16.14 TD[(DejaGn)27(u)-332(supp)-28(orts)-334(more)-333(than)-334(one)-334(`)]TJ/F4 10.91 Tf 166.49 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-333(\014le.)-445(The)-334(m)27(ultiple)-333(instances)-334(of)-333(`)]TJ/F4 10.91 Tf 155.9 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')]TJ -428.97 -13.15 TD[(are)-326(loaded)-326(in)-326(a)-326(\014xed)-326(order)-326(built)-326(in)27(to)-326(DejaGn)27(u)-325(\(the)-326(more)-326(lo)-28(cal)-326(last\).)-442(The)-326(\014rst)-326(\014le)-326(loaded)-326(is)]TJ 0 -13.15 TD[(the)-333(optional)]TJ/F4 10.91 Tf 61.21 0 TD[(~/.dejagnurc)]TJ/F1 10.91 Tf 68.73 0 TD[(,)-333(then)-333(the)-333(lo)-28(cal)-334(\014les,)-333(and)-333(\014nally)-334(the)-333(global)-333(\014le.)]TJ -124.03 -16.14 TD[(1.)-660(There)-256(is)-256(am)-257(optional)-256(\\master")-257(`)]TJ/F4 10.91 Tf 164.41 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-271(capturing)-257(con\014guration)-256(v)54(alues)-255(that)-257(apply)-256(to)]TJ -194.54 -13.15 TD[(DejaGn)27(u)-342(across)-342(the)-343(b)-28(oard,)-345(in)-343(eac)27(h)-342(con\014guration-sp)-28(eci\014c)-343(sub)-28(directory)-343(of)-342(the)-343(DejaGn)26(u)]TJ 0 -13.15 TD[(library)-364(directory)83(.)]TJ/F4 10.91 Tf 86.62 0 TD[(runtest)]TJ/F1 10.91 Tf 44.06 0 TD[(loads)-364(these)-364(v)55(alues)-363(\014rst.)-537(See)-364(App)-28(endix)-364(A)-364([Con\014guring)-364(and)]TJ -130.68 -13.15 TD[(Installing)-390(DejaGn)27(u],)-404(page)-391(49.)-617(The)-390(master)-391(`)]TJ/F4 10.91 Tf 211 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-390(con)27(tains)-390(the)-391(default)-391(v)55(alues)-390(for)]TJ -256.82 -13.15 TD[(all)-386(targets)-386(and)-387(hosts)-386(supp)-28(orted)-386(b)26(y)-385(DejaGn)27(u.)-603(This)-386(master)-387(\014le)-386(is)-387(iden)27(ti\014ed)-385(b)26(y)-385(setting)]TJ 0 -13.15 TD[(the)-298(en)27(vironmen)27(t)-297(v)54(ariable)]TJ/F4 10.91 Tf 121.35 0 TD[(DEJAGNU)]TJ/F1 10.91 Tf 43.35 0 TD[(to)-298(the)-299(name)-298(of)-299(the)-298(\014le.)-433(This)-299(is)-298(also)-299(refered)-299(to)-298(as)-299(the)]TJ -164.7 -13.16 TD[(\\global")-333(con\014g)-333(\014le.)]TJ -15.69 -16.14 TD[(2.)-660(An)27(y)-334(directory)-336(con)27(taining)-334(a)-336(con\014gured)-335(test)-336(suite)-335(also)-335(has)-336(a)-335(`)]TJ/F4 10.91 Tf 301.4 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-335(capturing)-336(con-)]TJ -331.53 -13.15 TD[(\014guration)-325(v)55(alues)-324(sp)-28(eci\014c)-326(to)-325(the)-325(to)-28(ol)-325(under)-325(test.)-442(Since)]TJ/F4 10.91 Tf 258.6 0 TD[(runtest)]TJ/F1 10.91 Tf 43.64 0 TD[(loads)-325(these)-325(v)55(alues)-325(last,)]TJ -302.24 -13.15 TD[(the)-435(individual)-435(test)-436(con\014guration)-435(can)-436(either)-435(rely)-436(on)-435(and)-436(use,)-461(or)-435(o)27(v)27(erride,)-460(an)27(y)-434(of)-436(the)]TJ 0 -13.15 TD[(global)-333(v)55(alues)-333(from)-333(the)-333(\\master")-334(`)]TJ/F4 10.91 Tf 158.97 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[('.)]TJ -204.79 -16.14 TD[(Y)83(ou)-261(can)-261(usually)-261(generate)-262(or)-261(up)-28(date)-261(the)-262(testsuite)-261(`)]TJ/F4 10.91 Tf 232.76 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.81 0 TD[(')-261(b)27(y)-261(t)27(yping)-260(`)]TJ/F4 10.91 Tf 56.44 0 TD[(make)-333(site.exp)]TJ/F1 10.91 Tf 72.36 0 TD[(')]TJ -407.37 -13.15 TD[(in)-333(the)-333(test)-333(suite)-334(directory)83(,)-333(after)-333(the)-333(test)-334(suite)-333(is)-333(con\014gured.)]TJ -15.69 -16.14 TD[(3.)-660(Y)83(ou)-371(can)-373(also)-372(ha)27(v)28(e)-372(a)-372(\014le)-372(in)-372(y)26(our)-371(home)-372(directory)-372(called)]TJ/F4 10.91 Tf 280.51 0 TD[(.dejagnurc)]TJ/F1 10.91 Tf 57.28 0 TD[(.)-561(This)-372(gets)-372(loaded)]TJ -322.1 -13.15 TD[(\014rst)-410(b)-28(efore)-410(the)-410(other)-410(con\014g)-411(\014les.)-675(Usually)-410(this)-411(is)-410(used)-410(for)-410(p)-28(ersonal)-411(stu\013,)-429(lik)27(e)-410(setting)]TJ/F4 10.91 Tf 0 -13.15 TD[(all_flag)]TJ/F1 10.91 Tf 49.45 0 TD[(so)-333(all)-333(the)-333(output)-334(gets)-333(prin)27(ted,)-333(or)-333(v)27(erb)-27(osit)27(y)-333(lev)27(els.)]TJ -56.11 -19.13 TD[(Y)83(ou)-318(can)-318(further)-318(o)27(v)27(erride)-317(the)-318(default)-319(v)55(alues)-317(in)-319(a)-318(user-editable)-319(section)-318(of)-318(an)27(y)-318(`)]TJ/F4 10.91 Tf 365.18 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(',)]TJ -425.94 -13.15 TD[(or)-333(b)27(y)-332(setting)-334(v)55(ariables)-332(on)-334(the)]TJ/F4 10.91 Tf 143.52 0 TD[(runtest)]TJ/F1 10.91 Tf 43.72 0 TD[(command)-333(line.)]TJ/F2 13.09 Tf -187.24 -26.9 TD[(4.0.1)-562(Con\014g)-375(V)93(ariables)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(DejaGn)27(u)-380(uses)-381(a)-381(named)-381(arra)27(y)-380(in)-381(Tcl)-381(to)-381(hold)-381(all)-381(the)-381(info)-381(for)-382(eac)27(h)-380(mac)27(hine.)-587(In)-381(the)-381(case)]TJ -14.94 -13.15 TD[(of)-324(a)-324(canadian)-325(cross,)-326(this)-325(means)-324(host)-324(information)-325(as)-324(w)26(ell)-323(as)-324(target)-325(information.)-441(The)-325(named)]TJ 0 -13.15 TD[(arra)27(y)-405(is)-407(called)]TJ/F4 10.91 Tf 72.82 0 TD[(target_info)]TJ/F1 10.91 Tf 63 0 TD[(,)-424(and)-407(it)-407(has)-406(t)27(w)27(o)-405(indices.)-665(The)-406(follo)27(wing)-406(\014elds)-407(are)-406(part)-407(of)-406(the)]TJ -135.82 -13.15 TD[(arra)27(y)84(.)]TJ/F4 10.91 Tf 0 -19.13 TD[(name)]TJ/F1 10.91 Tf 57.6 0 TD[(The)-395(name)-396(of)-395(the)-396(target.)-631(\(mostly)-396(for)-395(error)-396(messages\))-395(This)-396(should)-396(also)-395(b)-28(e)-396(the)]TJ 0 -13.15 TD[(string)-273(used)-273(for)-273(this)-274(target's)-273(arra)27(y)83(.)-423(It)-274(should)-273(also)-273(b)-28(e)-273(the)-274(same)-273(as)-273(the)-273(link)26(er)-272(script)]TJ 0 -13.15 TD[(so)-411(w)26(e)-410(can)-412(\014nd)-412(them)-412(dynamically)82(.)-679(This)-412(should)-412(b)-27(e)-412(the)-412(same)-412(as)-412(the)-412(argumen)27(t)]TJ 0 -13.15 TD[(used)-333(for)]TJ/F4 10.91 Tf 41.61 0 TD[(push_target{})]TJ/F1 10.91 Tf 74.45 0 TD[(.)]TJ/F4 10.91 Tf -173.66 -19.13 TD[(ldflags)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-509(is)-510(the)-510(link)27(er)-509(\015ags)-510(required)-509(to)-510(pro)-28(duce)-510(a)-509(fully)-510(link)27(ed)-509(executable.)-974(F)83(or)]TJ/F4 10.91 Tf 0 -13.15 TD[(libgloss)]TJ/F1 10.91 Tf 49.45 0 TD[(supp)-27(orted)-334(targets)-333(this)-333(is)-334(usually)-333(just)-333(the)-334(name)-333(of)-333(the)-334(link)27(er)-332(script.)]TJ/F4 10.91 Tf -107.05 -19.13 TD[(config)]TJ/F1 10.91 Tf 57.6 0 TD[(The)-414(target)-415(canonical)-415(for)-415(this)-415(target.)-690(This)-415(is)-415(used)-415(b)27(y)-414(some)-415(init)-415(\014les)-415(to)-415(mak)27(e)]TJ 0 -13.15 TD[(sure)-333(the)-333(target)-333(is)-334(supp)-28(orted.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(cflags)]TJ/F1 10.91 Tf 57.6 0 TD[(The)-333(\015ags)-333(required)-333(to)-334(pro)-28(duce)-333(an)-333(ob)-56(ject)-333(\014le)-333(from)-334(a)-333(source)-333(\014le.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(connect)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-337(is)-338(the)-337(connectmo)-28(de)-337(for)-338(this)-337(target.)-458(This)-337(is)-338(for)-337(b)-28(oth)-337(IP)-338(and)-337(serial)-338(connec-)]TJ 0 -13.15 TD[(tions.)-444(T)27(ypically)-332(this)-334(is)-333(either)]TJ/F4 10.91 Tf 142.33 0 TD[(telnet)]TJ/F1 10.91 Tf 34.37 0 TD[(,)]TJ/F4 10.91 Tf 6.66 0 TD[(rlogin)]TJ/F1 10.91 Tf 34.37 0 TD[(,)-333(or)]TJ/F4 10.91 Tf 20.03 0 TD[(rsh)]TJ/F1 10.91 Tf 17.18 0 TD[(.)]TJ ET 0 g 0 G -endstream -endobj -110 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F2 12 0 R -/F10 78 0 R ->> -endobj -108 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 110 0 R ->> -endobj -113 0 obj -<< -/Length 6054 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(16)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F4 10.91 Tf 0 -23.91 TD[(target)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-310(is)-310(the)-310(hostname)-311(of)-310(the)-310(target.)-437(This)-310(is)-310(for)-311(TCP/IP)-310(based)-310(connections,)-315(and)]TJ 0 -13.15 TD[(is)-333(also)-333(used)-333(for)-334(v)27(ersion)-332(of)-334(tip)-333(that)-333(use)-334(/etc/remote.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(serial)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-333(is)-333(the)-333(serial)-334(p)-28(ort.)-444(This)-333(is)-334(t)27(ypically)-332(/dev/tt)27(y?)-444(or)-333(com?:.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(netport)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-334(is)-334(the)-334(IP)-334(p)-28(ort.)-446(This)-334(is)-334(commonly)-334(used)-334(for)-334(telneting)-334(to)-335(target)-334(b)-27(oards)-334(that)]TJ 0 -13.15 TD[(are)-309(connected)-310(to)-310(a)-310(terminal)-310(serv)27(er.)-435(In)-310(that)-310(case)-310(the)-310(IP)-310(p)-27(ort)-310(sp)-28(eci\014es)-310(the)-310(whic)27(h)]TJ 0 -13.15 TD[(serial)-333(p)-28(ort)-333(to)-333(use.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(baud)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-333(is)-333(the)-333(baud)-334(rate)-333(for)-333(a)-334(serial)-333(p)-28(ort)-333(connection.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(x10)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-340(is)-340(the)-340(parameters)-340(for)-341(an)-340(x10)-340(con)27(troller.)-464(These)-341(are)-340(simple)-340(devices)-340(that)-340(let)]TJ 0 -13.15 TD[(us)-333(p)-28(o)27(w)28(er)-332(cycle)-334(or)-333(reset)-333(a)-334(target)-333(b)-28(oard)-333(remotely)82(.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(fileid)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-333(is)-333(the)-333(\014leid)-334(or)-333(spa)27(wn)-333(id)-333(of)-333(of)-334(the)-333(connection.)]TJ/F4 10.91 Tf -57.6 -19.12 TD[(prompt)]TJ/F1 10.91 Tf 57.6 0 TD[(a)-333(glob)-333(st)27(yle)-333(pattern)-333(to)-333(recognize)-334(the)-333(prompt.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(abbrev)]TJ/F1 10.91 Tf 57.6 0 TD[(abbreviation)-333(for)-333(to)-28(ol)-333(init)-334(\014les.)]TJ/F4 10.91 Tf -57.6 -19.13 TD[(ioport)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-350(is)-350(the)-350(p)-28(ort)-350(for)-351(I/O)-350(on)-350(dual)-351(p)-27(ort)-351(systems.)-495(In)-350(this)-351(con\014guration,)-354(the)-350(main)]TJ 0 -13.15 TD[(serial)-351(p)-28(ort)]TJ/F4 10.91 Tf 52.95 0 TD[(0)]TJ/F1 10.91 Tf 9.57 0 TD[(is)-351(usually)-352(used)-352(for)-352(stdin)-352(and)-352(stdout,)-356(whic)26(h)-350(the)-352(second)-352(serial)-352(p)-28(ort)]TJ -62.52 -13.15 TD[(can)-333(b)-28(e)-333(used)-333(for)-334(debugging.)]TJ -42.66 -19.13 TD[(The)-302(\014rst)-303(index)-302(in)27(to)-302(the)-302(arra)26(y)-301(is)-303(the)-302(same)-303(v)55(alue)-302(as)-302(used)-303(in)-302(the)]TJ/F4 10.91 Tf 294.18 0 TD[(name)]TJ/F1 10.91 Tf 26.21 0 TD[(\014eld.)-434(This)-302(is)-303(usually)]TJ -335.33 -13.15 TD[(a)-359(short)-360(v)27(ersion)-359(of)-360(the)-359(name)-360(of)-360(the)-360(target)-359(b)-28(oard.)-524(F)83(or)-359(an)-360(example,)-366(here's)-360(the)-360(settings)-360(I)-359(use)]TJ 0 -13.15 TD[(for)-347(m)26(y)]TJ/F4 10.91 Tf 35.19 0 TD[(Motorola's)-347(IDP)]TJ/F1 10.91 Tf 82.05 0 TD[(b)-27(oard)-348(and)-348(m)27(y)]TJ/F4 10.91 Tf 71.11 0 TD[(Motorola)]TJ/F1 10.91 Tf 49.61 0 TD[(6U)-347(VME)]TJ/F4 10.91 Tf 46.83 0 TD[(MVME135-1)]TJ/F1 10.91 Tf 55.34 0 TD[(b)-27(oard.)-488(\(b)-28(oth)-348(m68k)]TJ -340.13 -13.15 TD[(targets\))]TJ/F9 9.96 Tf 0 -10.05 TD[(\013)]TJ ET 23.98 -310.52 m 450.40 -310.52 l 450.40 -310.12 l 23.98 -310.12 l b BT 456.38 -310.52 TD[(\010)]TJ ET 18.00 -570.92 m 18.40 -570.92 l 18.40 -316.25 l 18.00 -316.25 l b BT/F4 10.91 Tf 21.39 -328.9 TD[(#)-524(IDP)-525(board)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,name\))-3675("idp")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,ldflags\))-2100("-Tidp.ld")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,config\))-2625(m68k-unknown-aout)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,cflags\))-2625("")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,connect\))-2100(telnet)]TJ 0 -12.46 TD[(set)-524(target_info\(idp,target\))-2625("s7")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,serial\))-2625("tstty7")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,netport\))-2100("wharfrat:1007")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,baud\))-3675("9600")]TJ 0 -12.45 TD[(#)-524(MVME)-525(135)-525(board)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,name\))-3675("mvme")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,ldflags\))-2100("-Tmvme.ld")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,config\))-2625(m68k-unknown-aout)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,cflags\))-2625("")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,connect\))-2100(telnet)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,target\))-2625("s8")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,serial\))-2625("tstty8")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,netport\))-2100("wharfrat:1008")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,baud\))-3675("9600")]TJ ET 456.38 -570.92 m 456.77 -570.92 l 456.77 -316.25 l 456.38 -316.25 l b BT/F9 9.96 Tf 18 -577.15 TD[(\012)]TJ ET 23.98 -577.15 m 450.40 -577.15 l 450.40 -576.75 l 23.98 -576.75 l b BT 456.38 -577.15 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(DejaGn)27(u)-403(can)-404(use)-405(this)-404(information)-404(to)-405(switc)27(h)-403(b)-28(et)27(w)27(een)-403(m)27(ultiple)-403(targets)-405(in)-404(one)-405(test)-404(run.)]TJ -14.94 -13.15 TD[(This)-333(is)-333(done)-333(through)-334(the)-333(use)-333(of)-334(the)]TJ/F4 10.91 Tf 172.03 0 TD[(push_target)]TJ/F1 10.91 Tf 66.64 0 TD[(pro)-27(cedure,)-334(whic)27(h)-332(is)-334(discussed)-333(elsewhere.)]TJ -223.73 -16.14 TD[(This)-409(arra)27(y)-408(can)-409(also)-409(hold)-409(information)-409(for)-409(a)-409(remote)-409(host,)-428(whic)26(h)-408(is)-409(used)-409(when)-409(testing)-409(a)]TJ -14.94 -13.15 TD[(candain)-397(cross.)-639(In)-398(this)-398(case,)-414(the)-398(only)-398(thing)-398(di\013eren)27(t)-397(is)-398(the)-398(index)-397(is)-398(just)]TJ/F4 10.91 Tf 350.12 0 TD[(host)]TJ/F1 10.91 Tf 22.91 0 TD[(.)-638(Here's)-398(the)]TJ ET 0 g 0 G -endstream -endobj -114 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F9 59 0 R ->> -endobj -112 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 114 0 R ->> -endobj -117 0 obj -<< -/Length 7261 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(4:)-444(Setting)]TJ/F4 10.91 Tf 93.36 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(defaults)-22611(17)]TJ -137.09 -23.91 TD[(settings)-348(I)-348(use)-349(to)-348(run)-348(tests)-349(on)-348(m)27(y)-348(NT)-348(mac)27(hine)-347(while)-349(running)-348(DejaGn)27(u)-348(on)-348(a)-348(Unix)-349(mac)27(hine.)]TJ 0 -13.15 TD[(\(in)-333(this)-333(case)-333(a)-334(Lin)27(ux)-332(b)-28(o)27(x\))]TJ/F9 9.96 Tf 0 -10.05 TD[(\013)]TJ ET 23.98 -33.16 m 450.40 -33.16 l 450.40 -32.76 l 23.98 -32.76 l b BT 456.38 -33.16 TD[(\010)]TJ ET 18.00 -95.22 m 18.40 -95.22 l 18.40 -38.89 l 18.00 -38.89 l b BT/F4 10.91 Tf 21.39 -52.44 TD[(set)-524(target_info\(host,name\))-3150("nt-host")]TJ 0 -12.46 TD[(set)-524(target_info\(host,config\))-2100("386-unknown-winnt")]TJ 0 -12.45 TD[(set)-524(target_info\(host,connect\))-1575("telnet")]TJ 0 -12.45 TD[(set)-524(target_info\(host,target\))-2100("ripple")]TJ ET 456.38 -95.22 m 456.77 -95.22 l 456.77 -38.89 l 456.38 -38.89 l b BT/F9 9.96 Tf 18 -101.44 TD[(\012)]TJ ET 23.98 -101.44 m 450.40 -101.44 l 450.40 -101.05 l 23.98 -101.05 l b BT 456.38 -101.44 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(There)-347(is)-347(more)-348(info)-347(on)-347(ho)27(w)-347(to)-347(use)-347(these)-348(v)55(ariables)-347(in)-347(the)-347(sections)-348(on)-347(the)-347(con\014g)-348(\014les.)-486(See)]TJ -14.94 -13.15 TD[(Chapter)-333(4)-333([Con\014guration)-333(Files],)-334(page)-333(18.)]TJ 14.94 -16.14 TD[(In)-419(the)-419(user)-420(editable)-419(second)-420(section)-419(of)-420(`)]TJ/F4 10.91 Tf 190.43 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-440(y)26(ou)-418(can)-420(not)-419(only)-420(o)27(v)28(erride)-418(the)-420(con-)]TJ -251.19 -13.15 TD[(\014guration)-358(v)55(ariables)-358(captured)-358(in)-359(the)-358(\014rst)-359(section,)-365(but)-358(also)-359(sp)-27(ecify)-359(default)-358(v)54(alues)-357(for)-359(all)-358(the)]TJ/F4 10.91 Tf 0 -13.15 TD[(runtest)]TJ/F1 10.91 Tf 43.78 0 TD[(command)-337(line)-338(options.)-458(Sa)27(v)28(e)-337(for)-338(`)]TJ/F4 10.91 Tf 158 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(',)-338(`)]TJ/F4 10.91 Tf 12.79 0 TD[(--help)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-338(and)-338(`)]TJ/F4 10.91 Tf 34.05 0 TD[(--version)]TJ/F1 10.91 Tf 51.55 0 TD[(',)-338(eac)26(h)-336(com-)]TJ -374.62 -13.16 TD[(mand)-395(line)-395(option)-395(has)-395(an)-395(asso)-28(ciated)-395(Tcl)-395(v)55(ariable.)-629(Use)-395(the)-395(Tcl)]TJ/F4 10.91 Tf 303.88 0 TD[(set)]TJ/F1 10.91 Tf 21.49 0 TD[(command)-395(to)-395(sp)-27(ecify)-396(a)]TJ -325.37 -13.15 TD[(new)-427(default)-427(v)54(alue)-426(\(as)-427(for)-428(the)-427(con\014guration)-428(v)55(ariables\).)-726(The)-427(follo)27(wing)-427(table)-427(describ)-28(es)-427(the)]TJ 0 -13.15 TD[(corresp)-27(ondence)-445(b)-28(et)27(w)27(een)-444(command)-445(line)-445(options)-446(and)-445(v)55(ariables)-444(y)26(ou)-444(can)-445(set)-445(in)-445(`)]TJ/F4 10.91 Tf 380.12 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[('.)]TJ -425.94 -13.15 TD[(See)-333(Chapter)-333(3)-333([Running)-334(the)-333(T)82(ests],)-332(page)-333(9,)-334(for)-333(explanations)-333(of)-334(the)-333(command-line)-333(options.)]TJ/F8 10.91 Tf 23.96 -16.97 TD[(runtest)-2049(Tcl)]TJ 3.48 -13.15 TD[(option)-2049(variable)-4342(description)]TJ ET 18.00 -261.39 m 450.00 -261.39 l 450.00 -260.99 l 18.00 -260.99 l b BT/F4 10.91 Tf 40.91 -274.54 TD[(--all)-2574(all)]TJ ET 115.50 -274.54 m 118.94 -274.54 l 118.94 -274.07 l 115.50 -274.07 l b BT 118.94 -274.54 TD[(flag)]TJ/F1 10.91 Tf 63 0 TD[(displa)27(y)-332(all)-333(test)-334(results)-333(if)-333(set)]TJ/F4 10.91 Tf -146.76 -13.15 TD[(--baud)-2574(baud)]TJ/F1 10.91 Tf 146.76 0 TD[(set)-333(the)-333(default)-333(baud)-334(rate)-333(to)-333(something)]TJ 0 -13.15 TD[(other)-333(than)-333(9600.)]TJ/F4 10.91 Tf -163.94 -12.51 TD[(--connect)-2574(connectmode)]TJ/F1 10.91 Tf 163.94 0 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(rlogin)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(telnet)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(rsh)]TJ/F1 10.91 Tf 17.18 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(kermit)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(',)]TJ -191.39 -13.15 TD[(or)-333(`)]TJ/F4 10.91 Tf 16.39 0 TD[(mondfe)]TJ/F1 10.91 Tf 34.37 0 TD[(')]TJ/F4 10.91 Tf -197.52 -14.24 TD[(--mail)-2574(mailing)]TJ ET 138.41 -340.74 m 141.85 -340.74 l 141.85 -340.27 l 138.41 -340.27 l b BT 141.85 -340.74 TD[(list)]TJ/F1 10.91 Tf 40.09 0 TD[(address)-333(list)-333(for)-333(mailing)-334(test)-333(output)]TJ/F4 10.91 Tf -146.76 -13.15 TD[(--name)-2574(targetname)]TJ/F1 10.91 Tf 146.76 0 TD[(net)27(w)28(ork)-332(name)-334(of)-333(testing)-333(target)-333(or)-334(its)]TJ 0 -13.15 TD[(host)]TJ/F4 10.91 Tf -158.21 -14.25 TD[(--outdir)-2574(outdir)]TJ/F1 10.91 Tf 158.21 0 TD[(directory)-333(for)-333(`)]TJ/F5 10.91 Tf 66.15 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.49 0 TD[(.sum)]TJ/F1 10.91 Tf 22.9 0 TD[(')-333(and)-333(`)]TJ/F5 10.91 Tf 30.91 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.49 0 TD[(.log)]TJ/F1 10.91 Tf 22.91 0 TD[(')]TJ/F4 10.91 Tf -338.06 -13.15 TD[(--objdir)-2574(objdir)]TJ/F1 10.91 Tf 158.21 0 TD[(directory)-333(for)-333(compiled)-333(binaries)]TJ/F4 10.91 Tf -158.21 -13.15 TD[(--reboot)-2574(reboot)]TJ/F1 10.91 Tf 158.21 0 TD[(reb)-27(o)-28(ot)-333(the)-334(target)-333(if)-333(set)-334(to)]TJ/F4 10.91 Tf 125.88 0 TD[("1")]TJ/F1 10.91 Tf 17.18 0 TD[(;)-333(do)-333(not)]TJ -143.06 -13.15 TD[(reb)-27(o)-28(ot)-333(if)-334(set)-333(to)]TJ/F4 10.91 Tf 74.94 0 TD[("0")]TJ/F1 10.91 Tf 20.82 0 TD[(\(the)-333(default\))]TJ/F4 10.91 Tf -253.97 -14.25 TD[(--srcdir)-2574(srcdir)]TJ/F1 10.91 Tf 158.21 0 TD[(directory)-333(of)-333(test)-333(sub)-28(directories)]TJ/F4 10.91 Tf -158.21 -13.15 TD[(--strace)-2574(tracelevel)]TJ/F1 10.91 Tf 158.21 0 TD[(a)-333(n)27(um)28(b)-27(er:)-500(Tcl)-333(trace)-334(depth)]TJ/F4 10.91 Tf -146.76 -13.15 TD[(--tool)-2574(tool)]TJ/F1 10.91 Tf 146.76 0 TD[(name)-333(of)-333(to)-28(ol)-333(to)-333(test;)-334(iden)27(ti\014es)-332(init,)-334(test)]TJ 0 -13.15 TD[(sub)-27(dir)]TJ/F4 10.91 Tf -163.94 -12.51 TD[(--verbose)-2574(verbose)]TJ/F1 10.91 Tf 163.94 0 TD[(v)27(erb)-26(osit)26(y)-332(lev)27(el.)-499(As)-334(option,)-333(use)-333(m)27(ultiple)]TJ 0 -13.15 TD[(times;)-333(as)-333(v)54(ariable,)-332(set)-333(a)-333(n)26(um)28(b)-27(er,)-333(0)-333(or)]TJ 0 -13.15 TD[(greater)]TJ/F4 10.91 Tf -158.21 -12.51 TD[(--target)-2574(target)]TJ ET 132.69 -525.76 m 136.12 -525.76 l 136.12 -525.29 l 132.69 -525.29 l b BT 136.12 -525.76 TD[(triplet)]TJ/F1 10.91 Tf 45.82 0 TD[(The)-333(canonical)-333(con\014guration)-333(string)-334(for)]TJ 0 -13.15 TD[(the)-333(target.)]TJ/F4 10.91 Tf -146.76 -12.5 TD[(--host)-2574(host)]TJ ET 121.23 -551.41 m 124.67 -551.41 l 124.67 -550.95 l 121.23 -550.95 l b BT 124.67 -551.41 TD[(triplet)]TJ/F1 10.91 Tf 57.27 0 TD[(The)-333(canonical)-333(con\014guration)-333(string)-334(for)]TJ 0 -13.16 TD[(the)-333(host.)]TJ/F4 10.91 Tf -152.49 -12.5 TD[(--build)-2574(build)]TJ ET 126.96 -577.07 m 130.40 -577.07 l 130.40 -576.60 l 126.96 -576.60 l b BT 130.4 -577.07 TD[(triplet)]TJ/F1 10.91 Tf 51.54 0 TD[(The)-333(canonical)-333(con\014guration)-333(string)-334(for)]TJ 0 -13.15 TD[(the)-333(build)-333(host.)]TJ ET 0 g 0 G -endstream -endobj -118 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F9 59 0 R -/F8 52 0 R -/F5 31 0 R ->> -endobj -116 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 118 0 R ->> -endobj -121 0 obj -<< -/Length 5295 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(18)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 13.09 Tf 0 -23.91 TD[(4.0.2)-562(Master)-375(Con\014g)-375(File)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(The)-322(master)-323(con\014g)-322(\014le)-323(is)-322(where)-323(all)-322(the)-323(target)-322(sp)-28(eci\014c)-323(con\014g)-322(v)54(ariables)-321(get)-323(set)-322(for)-323(a)-322(whole)]TJ -14.94 -13.15 TD[(site)-427(get)-427(set.)-726(The)-427(idea)-427(is)-427(that)-428(for)-427(a)-427(cen)27(tralized)-426(testing)-428(lab)-427(where)-427(p)-28(eople)-427(ha)27(v)28(e)-427(to)-427(share)-427(a)]TJ 0 -13.15 TD[(target)-321(b)-27(et)26(w)28(een)-320(m)27(ultiple)-320(dev)27(elop)-27(ers.)-441(There)-321(are)-321(settings)-321(for)-321(b)-28(oth)-321(remote)-321(targets)-321(and)-321(remote)]TJ 0 -13.15 TD[(hosts.)-562(Here's)-373(an)-373(example)-373(of)-372(a)-373(Master)-373(Con\014g)-373(File)-372(\(also)-373(called)-373(the)-373(Global)-372(con\014g)-373(\014le\))-373(for)-373(a)]TJ/F8 10.91 Tf 0 -13.15 TD[(c)51(anadian)-333(cr)50(oss)]TJ/F1 10.91 Tf 69.57 0 TD[(.)-435(A)-307(canadian)-308(cross)-307(is)-307(when)-307(y)27(ou)-307(build)-307(and)-307(test)-307(a)-307(cross)-307(compiler)-308(on)-307(a)-307(mac)27(hine)]TJ -69.57 -13.15 TD[(other)-333(than)-333(the)-333(one)-334(it's)-333(to)-333(b)-28(e)-334(hosted)-333(on.)]TJ 14.94 -16.14 TD[(Here)-314(w)27(e)-313(ha)26(v)28(e)-313(the)-314(con\014g)-315(settings)-314(for)-314(our)-315(California)-314(o\016ce.)-438(Note)-314(that)-315(all)-314(con\014g)-314(v)54(alues)-313(are)]TJ -14.94 -13.15 TD[(site)-398(dep)-27(endan)26(t.)-638(Here)-398(w)27(e)-397(ha)26(v)28(e)-397(t)27(w)28(o)-398(sets)-398(of)-398(v)54(alues)-397(that)-398(w)27(e)-397(use)-399(for)-398(testing)-398(m68k-aout)-398(cross)]TJ 0 -13.15 TD[(compilers.)-628(As)-395(b)-28(oth)-394(of)-395(these)-395(target)-394(b)-28(oards)-395(has)-394(a)-395(di\013eren)27(t)-394(debugging)-395(proto)-28(col,)-410(w)27(e)-394(test)-394(on)]TJ 0 -13.15 TD[(b)-27(oth)-334(of)-333(them)-333(in)-334(sequence.)]TJ/F9 9.96 Tf 0 -9.44 TD[(\013)]TJ ET 23.98 -163.86 m 450.40 -163.86 l 450.40 -163.47 l 23.98 -163.47 l b BT 456.38 -163.86 TD[(\010)]TJ ET 18.00 -559.73 m 18.40 -559.73 l 18.40 -169.59 l 18.00 -169.59 l b BT/F4 10.91 Tf 21.39 -182.24 TD[(global)-524(CFLAGS)]TJ 0 -12.45 TD[(global)-524(CXXFLAGS)]TJ 0 -24.91 TD[(case)-524("$target_triplet")-525(in)-525({)]TJ 22.91 -12.45 TD[({)-524("native")-525(})-525({)]TJ 22.9 -12.45 TD[(set)-524(target_abbrev)-525(unix)]TJ -22.9 -12.46 TD[(})]TJ 0 -12.45 TD[({)-524("m68*-unknown-aout")-525(})-525({)]TJ 22.9 -12.45 TD[(set)-524(target_abbrev)-7875("rom68k")]TJ 0 -12.46 TD[(#)-524(IDP)-525(target)-10500(#)-525(IDP)-525(board)-525(with)-525(rom68k)-525(monitor)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,name\))-3675("idp")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,ldflags\))-2100("-Tidp.ld")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,config\))-2625(m68k-unknown-aout)]TJ 0 -12.45 TD[(set)-524(target_info\(idp,cflags\))-2625("")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,connect\))-2100(telnet)]TJ 0 -12.46 TD[(set)-524(target_info\(idp,target\))-2625("s7")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,serial\))-2625("tstty12")]TJ 0 -12.45 TD[(set)-524(target_info\(idp,netport\))-2100("truckin:1007")]TJ 0 -12.46 TD[(set)-524(target_info\(idp,baud\))-3675("9600")]TJ 0 -12.45 TD[(#)-524(MVME)-525(target)-9975(#)-525(Motorola)-525(MVME)-525(135)-525(with)-525(BUG)-525(monitor)]TJ 0 -12.45 TD[(set)-524(target_info\(mvme,name\))-3150("mvme")]TJ 0 -12.46 TD[(set)-524(target_info\(mvme,ldflags\))-1575("-Tmvme.ld")]TJ 0 -12.45 TD[(set)-524(target_info\(mvme,config\))-2100(m68k-unknown-aout)]TJ 0 -12.45 TD[(set)-524(target_info\(mvme,cflags\))-2100("")]TJ 0 -12.46 TD[(set)-524(target_info\(mvme,connect\))-1575(telnet)]TJ 0 -12.45 TD[(set)-524(target_info\(mvme,target\))-2100("s4")]TJ 0 -12.45 TD[(set)-524(target_info\(mvme,serial\))-2100("tstty8")]TJ 0 -12.46 TD[(set)-524(target_info\(mvme,netport\))-1575("truckin:1004")]TJ 0 -12.45 TD[(set)-524(target_info\(mvme,baud\))-3150("9600")]TJ -17.18 -12.45 TD[(})]TJ -28.63 -12.46 TD[(})]TJ ET 456.38 -559.73 m 456.77 -559.73 l 456.77 -169.59 l 456.38 -169.59 l b BT/F9 9.96 Tf 18 -565.96 TD[(\012)]TJ ET 23.98 -565.96 m 450.40 -565.96 l 450.40 -565.56 l 23.98 -565.56 l b BT 456.38 -565.96 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(In)-310(this)-311(case,)-316(w)27(e)-310(ha)27(v)28(e)-310(supp)-28(ort)-311(for)-311(sev)27(eral)-310(remote)-311(hosts)-311(for)-311(our)-311(m68k-aout)-311(cross)-311(compiler.)]TJ -14.94 -13.15 TD[(T)27(ypically)-341(the)-343(remote)-342(Unix)-343(hosts)-343(run)-342(DejaGn)27(u)-342(lo)-28(cally)82(,)-343(but)-343(w)27(e)-342(also)-342(use)-343(them)-343(for)-342(debugging)]TJ 0 -13.15 TD[(the)-291(testsuites)-292(when)-291(w)26(e)-290(\014nd)-292(problems)-292(in)-291(running)-292(on)-292(remote)-291(hosts.)-431(Exp)-28(ect)-291(w)26(on't)-290(run)-292(on)-292(NT,)]TJ 0 -13.15 TD[(so)-327(DejaGn)27(u)-326(is)-327(run)-327(on)-328(the)-327(lo)-28(cal)-327(build)-327(mac)27(hine,)-327(and)-328(it'll)-327(connect)-327(to)-327(the)-327(NT)-327(host)-328(and)-327(run)-327(all)]TJ 0 -13.15 TD[(the)-333(tests)-333(for)-333(this)-334(cross)-333(compiler)-333(on)-334(that)-333(host.)]TJ ET 0 g 0 G -endstream -endobj -122 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F8 52 0 R -/F9 59 0 R -/F4 28 0 R ->> -endobj -120 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 122 0 R ->> -endobj -125 0 obj -<< -/Length 5912 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(4:)-444(Setting)]TJ/F4 10.91 Tf 93.36 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(defaults)-22611(19)]TJ/F9 9.96 Tf -108.29 -20.18 TD[(\013)]TJ ET 52.78 -6.23 m 450.40 -6.23 l 450.40 -5.83 l 52.78 -5.83 l b BT 456.38 -6.23 TD[(\010)]TJ ET 46.80 -367.53 m 47.20 -367.53 l 47.20 -11.96 l 46.80 -11.96 l b BT/F4 10.91 Tf 50.19 -27.4 TD[(case)-524("$host_triplet")-525(in)-525({)]TJ 22.91 -12.45 TD[("native")-524({)]TJ 0 -12.45 TD[(})]TJ 0 -12.46 TD[("i?86-*-linux*")-524({)-9975(#)-525(Linux)-525(host)]TJ 22.9 -12.45 TD[(set)-524(target_info\(host,name\))-3150("linux-host")]TJ 0 -12.45 TD[(set)-524(target_info\(host,config\))-2100($host_triplet)]TJ 0 -12.46 TD[(set)-524(target_info\(host,connect\))-1575(rlogin)]TJ 0 -12.45 TD[(set)-524(target_info\(host,target\))-2100(chinadoll)]TJ -22.9 -12.45 TD[(})]TJ 0 -12.46 TD[("i?86-*-winnt)-12074(#)-525(NT)-525(host)]TJ 22.9 -12.45 TD[(set)-524(target_info\(host,name\))-3150("nt-host")]TJ 0 -12.45 TD[(set)-524(target_info\(host,config\))-2100(i386-unknown-winnt)]TJ 0 -12.46 TD[(set)-524(target_info\(host,connect\))-1575(telnet)]TJ 0 -12.45 TD[(set)-524(target_info\(host,target\))-2100(ripple)]TJ -22.9 -12.45 TD[(})]TJ 0 -12.46 TD[("hppa*-hp-hpux*")-524({)-9450(#)-525(HP-UX)-525(host)]TJ 22.9 -12.45 TD[(set)-524(target_info\(host,name\))-3150("hpux-host")]TJ 0 -12.45 TD[(set)-524(target_info\(host,config\))-2100($host_triplet)]TJ 0 -12.46 TD[(set)-524(target_info\(host,connect\))-1575(rlogin)]TJ 0 -12.45 TD[(set)-524(target_info\(host,target\))-2100(slipknot)]TJ 0 -12.45 TD[(})]TJ -22.9 -12.46 TD[("sparc-sun-sunos*")-524({)-8400(#)-525(SunOS)-525(\(sun4\))]TJ 22.9 -12.45 TD[(set)-524(target_info\(host,name\))-3150("sunos-host")]TJ 0 -12.45 TD[(set)-524(target_info\(host,config\))-2100($host_triplet)]TJ 0 -12.46 TD[(set)-524(target_info\(host,connect\))-1575(rlogin)]TJ 0 -12.45 TD[(set)-524(target_info\(host,target\))-2100(darkstar)]TJ -22.9 -12.45 TD[(})]TJ -22.91 -12.46 TD[(})]TJ ET 456.38 -367.53 m 456.77 -367.53 l 456.77 -11.96 l 456.38 -11.96 l b BT/F9 9.96 Tf 46.8 -373.76 TD[(\012)]TJ ET 52.78 -373.76 m 450.40 -373.76 l 450.40 -373.36 l 52.78 -373.36 l b BT 456.38 -373.76 TD[(\011)]TJ/F2 13.09 Tf -438.38 -26.9 TD[(4.0.3)-562(Lo)-31(cal)-375(Con\014g)-375(File)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(It)-369(is)-370(usually)-369(more)-370(con)27(v)28(enien)27(t)-368(to)-370(k)27(eep)-369(these)-369(\\man)26(ual)-368(o)27(v)27(errides")-368(in)-370(the)-370(`)]TJ/F4 10.91 Tf 342.06 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-369(lo)-28(cal)]TJ -402.82 -13.15 TD[(to)-333(eac)27(h)-332(test)-334(directory)83(,)-333(rather)-333(than)-333(in)-334(the)-333(\\master")-333(`)]TJ/F4 10.91 Tf 247.24 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-333(in)-333(the)-333(DejaGn)26(u)-332(library)82(.)]TJ -278.12 -16.14 TD[(All)-411(lo)-28(cal)-411(`)]TJ/F4 10.91 Tf 48.37 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-411(usually)-411(\014les)-411(ha)26(v)28(e)-410(t)27(w)27(o)-410(sections,)-431(separated)-411(b)27(y)-410(commen)26(t)-410(text.)-678(The)]TJ -109.13 -13.15 TD[(\014rst)-263(section)-264(is)-264(the)-264(part)-264(that)-264(is)-264(generated)-264(b)27(y)]TJ/F4 10.91 Tf 205.04 0 TD[(make)]TJ/F1 10.91 Tf 22.91 0 TD[(.)-421(It)-264(is)-264(essen)27(tially)-263(a)-264(collection)-264(of)-264(Tcl)-264(v)55(ariable)]TJ -227.95 -13.15 TD[(de\014nitions)-360(based)-361(on)-361(`)]TJ/F4 10.91 Tf 102.23 0 TD[(Makefile)]TJ/F1 10.91 Tf 45.82 0 TD[(')-360(en)27(vironmen)27(t)-359(v)54(ariables.)-525(Since)-361(they)-361(are)-360(generated)-361(b)27(y)]TJ/F4 10.91 Tf 258.01 0 TD[(make)]TJ/F1 10.91 Tf 22.91 0 TD[(,)]TJ -428.97 -13.16 TD[(they)-298(con)27(tain)-297(the)-298(v)54(alues)-297(as)-298(sp)-28(eci\014ed)-298(b)27(y)]TJ/F4 10.91 Tf 184.16 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(.)-432(\(Y)82(ou)-297(can)-298(also)-298(customize)-298(these)-299(v)55(alues)-297(b)27(y)]TJ -235.71 -13.15 TD[(using)-263(the)-263(`)]TJ/F4 10.91 Tf 48.83 0 TD[(--site)]TJ/F1 10.91 Tf 34.37 0 TD[(')-263(option)-263(to)]TJ/F4 10.91 Tf 51.64 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(.\))-421(In)-263(particular,)-277(this)-263(section)-264(con)27(tains)-262(the)-263(`)]TJ/F4 10.91 Tf 196.76 0 TD[(Makefile)]TJ/F1 10.91 Tf 45.82 0 TD[(')]TJ -428.97 -13.15 TD[(v)55(ariables)-389(for)-390(host)-389(and)-390(target)-390(con\014guration)-390(data.)-614(Do)-390(not)-390(edit)-389(this)-390(\014rst)-390(section;)-418(if)-390(y)27(ou)-389(do,)]TJ 0 -13.15 TD[(y)27(our)-332(c)27(hanges)-333(are)-333(replaced)-333(next)-334(time)-333(y)27(ou)-332(run)]TJ/F4 10.91 Tf 216.55 0 TD[(make)]TJ/F1 10.91 Tf 22.9 0 TD[(.)]TJ -224.51 -16.14 TD[(The)-333(\014rst)-333(section)-333(starts)-334(with:)]TJ/F9 9.96 Tf -14.94 -7.32 TD[(\013)]TJ ET 23.98 -555.43 m 450.40 -555.43 l 450.40 -555.03 l 23.98 -555.03 l b BT 456.38 -555.43 TD[(\010)]TJ ET 18.00 -601.70 m 18.40 -601.70 l 18.40 -561.16 l 18.00 -561.16 l b BT/F4 10.91 Tf 21.39 -573.8 TD[(##)-524(these)-525(variables)-525(are)-525(automatically)-525(generated)-525(by)-525(make)-525(##)]TJ 0 -12.46 TD[(#)-524(Do)-525(not)-525(edit)-525(here.)-525(If)-525(you)-525(wish)-525(to)-525(override)-525(these)-525(values)]TJ 0 -12.45 TD[(#)-524(add)-525(them)-525(to)-525(the)-525(last)-525(section)]TJ ET 456.38 -601.70 m 456.77 -601.70 l 456.77 -561.16 l 456.38 -561.16 l b BT/F9 9.96 Tf 18 -607.92 TD[(\012)]TJ ET 23.98 -607.92 m 450.40 -607.92 l 450.40 -607.53 l 23.98 -607.53 l b BT 456.38 -607.92 TD[(\011)]TJ/F1 10.91 Tf -423.44 -18 TD[(In)-263(the)-263(second)-263(section,)-277(y)26(ou)-262(can)-263(o)27(v)28(erride)-263(an)27(y)-262(default)-263(v)54(alues)-262(\(lo)-28(cally)-263(to)-263(DejaGn)27(u\))-262(for)-264(all)-263(the)]TJ -14.94 -13.15 TD[(v)55(ariables.)-441(The)-327(second)-326(section)-327(can)-326(also)-327(con)27(tain)-326(y)27(our)-326(preferred)-326(defaults)-327(for)-326(all)-327(the)-326(command)]TJ ET 0 g 0 G -endstream -endobj -126 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F9 59 0 R -/F2 12 0 R ->> -endobj -124 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 126 0 R ->> -endobj -129 0 obj -<< -/Length 5100 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(20)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 0 -23.91 TD[(line)-347(options)-347(to)]TJ/F4 10.91 Tf 72.63 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(.)-485(This)-347(allo)27(ws)-346(y)26(ou)-346(to)-347(easily)-347(customize)]TJ/F4 10.91 Tf 180.98 0 TD[(runtest)]TJ/F1 10.91 Tf 43.88 0 TD[(for)-347(y)27(our)-346(preferences)]TJ -337.58 -13.15 TD[(in)-466(eac)26(h)-465(con\014gured)-467(test-suite)-467(tree,)-500(so)-467(that)-467(y)27(ou)-466(need)-467(not)-467(t)27(yp)-27(e)-467(options)-467(rep)-27(eatedly)-467(on)-467(the)]TJ 0 -13.15 TD[(command)-340(line.)-465(\(The)-341(second)-340(section)-340(ma)27(y)-340(also)-340(b)-28(e)-340(empt)27(y)83(,)-341(if)-341(y)27(ou)-339(do)-340(not)-341(wish)-340(to)-340(o)26(v)28(erride)-339(an)27(y)]TJ 0 -13.15 TD[(defaults.\))]TJ 14.94 -16.14 TD[(The)-333(\014rst)-333(section)-333(ends)-334(with)-333(this)-333(line:)]TJ/F9 9.96 Tf -14.94 -7.33 TD[(\013)]TJ ET 23.98 -72.88 m 450.40 -72.88 l 450.40 -72.48 l 23.98 -72.48 l b BT 456.38 -72.88 TD[(\010)]TJ ET 18.00 -96.66 m 18.40 -96.66 l 18.40 -78.61 l 18.00 -78.61 l b BT/F4 10.91 Tf 21.39 -91.25 TD[(##)-524(All)-525(variables)-525(above)-525(are)-525(generated)-525(by)-525(configure.)-525(Do)-525(Not)-525(Edit)-525(##)]TJ ET 456.38 -96.66 m 456.77 -96.66 l 456.77 -78.61 l 456.38 -78.61 l b BT/F9 9.96 Tf 18 -102.89 TD[(\012)]TJ ET 23.98 -102.89 m 450.40 -102.89 l 450.40 -102.49 l 23.98 -102.49 l b BT 456.38 -102.89 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(Y)83(ou)-335(can)-335(mak)27(e)-334(an)26(y)-334(c)27(hanges)-335(under)-335(this)-335(line.)-451(If)-335(y)27(ou)-335(wish)-335(to)-335(rede\014ne)-336(a)-335(v)54(ariable)-334(in)-335(the)-336(top)]TJ -14.94 -13.15 TD[(section,)-382(then)-373(just)-373(put)-373(a)-373(duplicate)-373(v)54(alue)-372(in)-373(this)-373(second)-373(section.)-563(Usually)-373(the)-373(v)54(alues)-372(de\014ned)]TJ 0 -13.15 TD[(in)-338(this)-338(con\014g)-338(\014le)-338(are)-338(related)-338(to)-338(the)-338(con\014guration)-338(of)-338(the)-338(test)-338(run.)-459(This)-338(is)-338(the)-338(ideal)-338(place)-338(to)]TJ 0 -13.15 TD[(set)-334(the)-335(v)55(ariables)]TJ/F4 10.91 Tf 81.1 0 TD[(host_triplet)]TJ/F1 10.91 Tf 68.73 0 TD[(,)]TJ/F4 10.91 Tf 6.68 0 TD[(build_triplet)]TJ/F1 10.91 Tf 74.45 0 TD[(,)]TJ/F4 10.91 Tf 6.69 0 TD[(target_triplet)]TJ/F1 10.91 Tf 80.18 0 TD[(.)-448(All)-334(other)-335(v)55(ariables)-334(are)]TJ -317.83 -13.15 TD[(to)-27(ol)-356(dep)-28(endan)27(t.)-511(ie)-355(for)-356(testing)-356(a)-355(compiler,)-362(the)-355(v)54(alue)-354(for)]TJ/F5 10.91 Tf 266.78 0 TD[(CC)]TJ/F1 10.91 Tf 20.57 0 TD[(migh)27(t)-354(b)-28(e)-356(set)-356(to)-355(a)-356(freshly)-356(built)]TJ -287.35 -13.15 TD[(binary)83(,)-332(as)-334(opp)-28(osed)-333(to)-333(one)-334(in)-333(the)-333(user's)-334(path.)]TJ/F2 13.09 Tf 0 -26.9 TD[(4.0.4)-562(P)30(ersonal)-374(Con\014g)-375(File)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(The)-494(p)-28(ersonal)-495(con\014g)-495(\014le)-495(is)-495(used)-495(to)-494(customize)]TJ/F4 10.91 Tf 228.62 0 TD[(runtest's)]TJ/F1 10.91 Tf 56.94 0 TD[(b)-27(eha)27(viour)-494(for)-495(eac)27(h)-494(p)-28(erson.)]TJ -300.5 -13.15 TD[(It's)-362(t)27(ypically)-361(used)-362(to)-362(set)-363(the)-362(user)-362(prefered)-362(setting)-362(for)-363(v)27(erb)-27(osit)27(y)84(,)-369(and)-362(an)27(y)-361(exp)-28(erimen)27(tal)-362(Tcl)]TJ 0 -13.16 TD[(pro)-27(cedures.)-445(My)-333(p)-28(ersonal)-333(`)]TJ/F4 10.91 Tf 125.06 0 TD[(~/.dejagnurc)]TJ/F1 10.91 Tf 68.73 0 TD[(')-333(\014le)-333(lo)-28(oks)-333(lik)27(e:)]TJ/F9 9.96 Tf -193.79 -9.74 TD[(\013)]TJ ET 23.98 -272.09 m 450.40 -272.09 l 450.40 -271.69 l 23.98 -271.69 l b BT 456.38 -272.09 TD[(\010)]TJ ET 18.00 -319.27 m 18.40 -319.27 l 18.40 -277.82 l 18.00 -277.82 l b BT/F4 10.91 Tf 21.39 -290.46 TD[(set)-524(all_flag)-525(1)]TJ 0 -12.46 TD[(set)-524(RLOGIN)-525(/usr/ucb/rlogin)]TJ 0 -12.45 TD[(set)-524(RSH)-525(/usr/ucb/rsh)]TJ ET 456.38 -319.27 m 456.77 -319.27 l 456.77 -277.82 l 456.38 -277.82 l b BT/F9 9.96 Tf 18 -325.5 TD[(\012)]TJ ET 23.98 -325.50 m 450.40 -325.50 l 450.40 -325.10 l 23.98 -325.10 l b BT 456.38 -325.5 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.38 TD[(Here)-299(I)-300(set)]TJ/F4 10.91 Tf 49.29 0 TD[(all_flag)]TJ/F1 10.91 Tf 49.09 0 TD[(so)-299(I)-300(see)-299(all)-300(the)-299(test)-300(cases)-299(that)-300(P)83(ASS)-299(along)-299(with)-300(the)-299(ones)-300(that)-299(F)110(AIL.)]TJ -113.32 -13.16 TD[(I)-398(also)-398(set)]TJ/F5 10.91 Tf 48.61 0 TD[(RLOGIN)]TJ/F1 10.91 Tf 49.54 0 TD[(and)]TJ/F4 10.91 Tf 21.92 0 TD[(RSH)]TJ/F1 10.91 Tf 21.53 0 TD[(to)-398(the)-398(BSD)-398(v)27(ersion.)-639(I)-398(ha)27(v)28(e)]TJ/F4 10.91 Tf 137.57 0 TD[(kerberos)]TJ/F1 10.91 Tf 50.16 0 TD[(installed,)-414(and)-398(when)-399(I)]TJ -329.33 -13.15 TD[(rlogin)-285(to)-286(a)-286(target)-286(b)-28(oard,)-295(it)-286(usually)-285(isn't)-286(supp)-28(orted.)-429(So)-285(I)-286(use)-286(the)-286(non)-286(secure)-286(v)27(ersions)-285(of)-285(these)]TJ 0 -13.15 TD[(programs)-333(rather)-333(than)-333(the)-334(default)-333(that's)-333(in)-334(m)27(y)-332(path.)]TJ ET 0 g 0 G -endstream -endobj -130 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F9 59 0 R -/F5 31 0 R -/F2 12 0 R ->> -endobj -128 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 130 0 R ->> -endobj -133 0 obj -<< -/Length 8099 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(21)]TJ/F2 17.22 Tf 0 -25.91 TD[(5)-562(The)-375(DejaGn)30(u)-374(Implemen)31(tation)]TJ/F1 10.91 Tf 14.94 -28.09 TD[(DejaGn)27(u)-322(is)-324(en)27(tirely)-323(written)-323(in)]TJ/F4 10.91 Tf 146.79 0 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(,)-325(whic)27(h)-323(uses)-323(Tcl)-324(as)-324(a)-323(command)-324(language.)]TJ/F4 10.91 Tf 201.55 0 TD[(expect)]TJ/F1 10.91 Tf -397.64 -13.15 TD[(serv)27(es)-276(as)-277(a)-277(v)27(ery)-276(programmable)-278(shell;)-295(y)26(ou)-276(can)-277(run)-277(an)27(y)-276(program,)-289(as)-277(with)-277(the)-277(usual)-277(Unix)-277(com-)]TJ 0 -13.15 TD[(mand)-338(shells|but)-339(once)-338(the)-339(program)-338(is)-339(started,)-340(y)27(our)]TJ/F4 10.91 Tf 250.53 0 TD[(expect)]TJ/F1 10.91 Tf 38.06 0 TD[(script)-338(has)-339(fully)-338(programmable)]TJ -288.59 -13.15 TD[(con)27(trol)-254(of)-254(its)-255(input)-255(and)-255(output.)-418(This)-255(do)-28(es)-254(not)-255(just)-255(apply)-255(to)-255(the)-255(programs)-254(under)-255(test;)]TJ/F4 10.91 Tf 397.64 0 TD[(expect)]TJ/F1 10.91 Tf -397.64 -13.15 TD[(can)-307(also)-308(run)-308(an)27(y)-307(auxiliary)-307(program,)-313(suc)27(h)-307(as)]TJ/F4 10.91 Tf 210.55 0 TD[(diff)]TJ/F1 10.91 Tf 26.27 0 TD[(or)]TJ/F4 10.91 Tf 13.08 0 TD[(sh)]TJ/F1 10.91 Tf 11.45 0 TD[(,)-312(with)-308(full)-308(con)27(trol)-307(o)27(v)28(er)-307(its)-308(input)-307(and)]TJ -261.35 -13.15 TD[(output.)]TJ 14.94 -16.14 TD[(DejaGn)27(u)-435(itself)-437(is)-437(merely)-436(a)-437(framew)27(ork)-436(for)-436(the)-437(set)-436(of)-437(test)-437(suites)-436(distributed)-437(separately)]TJ -14.94 -13.15 TD[(for)-427(eac)27(h)]TJ/F7 10.91 Tf 43.3 0 TD[(gnu)]TJ/F1 10.91 Tf 25.04 0 TD[(to)-27(ol.)-728(F)82(uture)-426(releases)-428(of)]TJ/F7 10.91 Tf 119.85 0 TD[(gnu)]TJ/F1 10.91 Tf 25.04 0 TD[(to)-27(ols)-428(will)-428(include)-427(ev)26(en)-426(more)-428(tests,)-451(dev)26(elop)-26(ed)]TJ -213.23 -13.15 TD[(throughout)-333(the)-333(free)-333(soft)26(w)28(are)-332(comm)27(unit)27(y)84(.)]TJ/F4 10.91 Tf 14.94 -16.14 TD[(runtest)]TJ/F1 10.91 Tf 43.85 0 TD[(is)-344(the)-345(glue)-344(to)-345(tie)-344(together)-345(and)-345(manage)-344(the)-345(test)-344(scripts.)-479(The)]TJ/F4 10.91 Tf 289.3 0 TD[(runtest)]TJ/F1 10.91 Tf 43.85 0 TD[(program)]TJ -391.94 -13.15 TD[(is)-403(actually)-403(a)-403(simple)-404(Bourne)-403(shell)-403(script)-404(that)-403(lo)-28(cates)-403(a)-403(cop)27(y)-403(of)-403(the)]TJ/F4 10.91 Tf 324.38 0 TD[(expect)]TJ/F1 10.91 Tf 38.76 0 TD[(shell)-403(and)-403(then)]TJ -363.14 -13.15 TD[(starts)-333(the)-333(main)-333(Tcl)-334(co)-28(de,)]TJ/F4 10.91 Tf 124.09 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 63 0 TD[(.)]TJ/F4 10.91 Tf 7.88 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 66.64 0 TD[(itself)-333(has)-333(these)-333(essen)26(tial)-332(functions:)]TJ -255.7 -16.14 TD[(1.)-660(P)27(arse)-221(the)-223(command)-223(line)-223(options,)-244(load)-223(the)-223(library)-223(\014les,)-244(and)-223(load)-223(the)-222(default)-223(con\014guration)]TJ 15.69 -13.16 TD[(\014les.)]TJ -15.69 -16.13 TD[(2.)-660(Lo)-27(cating)-450(the)-450(individual)-450(test)-450(scripts.)]TJ/F4 10.91 Tf 200.12 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 67.91 0 TD[(lo)-27(cates)-450(the)-450(tests)-450(b)26(y)-449(exploiting)-450(a)]TJ -252.34 -13.16 TD[(straigh)27(tforw)28(ard)-367(naming)-368(con)27(v)28(en)27(tion)-367(based)-368(on)-367(the)-368(string)-368(y)26(ou)-367(sp)-27(ecify)-368(with)-368(the)-368(`)]TJ/F4 10.91 Tf 373.01 0 TD[(--tool)]TJ/F1 10.91 Tf 34.36 0 TD[(')]TJ -407.37 -13.15 TD[(option.)]TJ -15.69 -16.14 TD[(3.)-660(Pro)27(viding)-290(an)-290(extended)-291(test)-291(en)27(vironmen)27(t,)-298(b)27(y)-290(de\014ning)-291(additional)-291(Tcl)-291(pro)-27(cedures)-291(b)-28(ey)27(ond)]TJ 15.69 -13.15 TD[(those)-333(already)-333(in)]TJ/F4 10.91 Tf 79.79 0 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(.)]TJ -129.84 -16.14 TD[(4.)-660(Lo)-27(cating)-264(target-dep)-28(enden)27(t)-263(functions,)-277(to)-264(standardize)-264(the)-263(test)-264(en)27(vironmen)28(t)-263(across)-264(a)-263(wide)]TJ 15.69 -13.15 TD[(v)55(ariet)28(y)-332(of)-334(test)-333(platforms.)]TJ/F2 14.35 Tf -21.6 -30.88 TD[(5.1)-562(Con)30(v)32(en)31(tions)-374(for)-375(using)-375(to)-31(ol)-375(names)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(DejaGn)27(u)-281(uses)-282(`)]TJ/F4 10.91 Tf 71.05 0 TD[($tool)]TJ/F1 10.91 Tf 28.64 0 TD[(',)-292(the)-282(name)-282(of)-282(the)-282(to)-28(ol)-282(under)-282(test,)-292(to)-282(tie)-282(together)-282(the)-282(testing)-282(con\014g-)]TJ -114.63 -13.15 TD[(uration)-346(in)-346(a)-347(straigh)27(tforw)28(ard)-346(but)-346(\015exible)-346(w)26(a)28(y)84(.)-483(If)-347(there)-346(is)-346(only)-347(one)-346(testsuite)-347(for)-346(a)-346(particular)]TJ 0 -13.16 TD[(application,)-333(then)-333(`)]TJ/F4 10.91 Tf 87.27 0 TD[($tool)]TJ/F1 10.91 Tf 28.64 0 TD[(')-333(is)-333(optional.)]TJ -100.97 -16.13 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[($tool)]TJ/F1 10.91 Tf 28.64 0 TD[(')-431(is)]TJ/F8 10.91 Tf 19.78 0 TD[(not)]TJ/F1 10.91 Tf 21.07 0 TD[(used)-431(to)-432(in)27(v)28(ok)28(e)-431(the)-431(to)-28(ol,)-456(since)-432(sites)-431(that)-432(run)-431(m)27(ultiple)-431(con\014gurations)-431(of)]TJ -87.46 -13.16 TD[(a)-513(particular)-514(to)-28(ol)-514(often)-514(call)-514(eac)27(h)-513(con\014guration)-514(b)27(y)-513(a)-514(di\013eren)27(t)-513(name.)]TJ/F4 10.91 Tf 346.03 0 TD[(runtest)]TJ/F1 10.91 Tf 45.7 0 TD[(uses)-513(the)]TJ -391.73 -13.15 TD[(con\014guration-dep)-27(enden)27(t)-452(v)55(ariables)-451(captured)-453(in)-452(`)]TJ/F4 10.91 Tf 230.49 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-452(to)-452(determine)-452(ho)27(w)-452(to)-452(call)-452(eac)27(h)]TJ -276.31 -13.15 TD[(to)-27(ol.)]TJ/F4 10.91 Tf 14.94 -16.14 TD[(runtest)]TJ/F1 10.91 Tf 43.94 0 TD[(uses)-352(to)-28(ol)-352(names)-352(to)-353(\014nd)-352(directories)-352(con)26(taining)-351(tests.)]TJ/F4 10.91 Tf 251.59 0 TD[(runtest)]TJ/F1 10.91 Tf 43.93 0 TD[(scans)-352(the)-352(source)]TJ -354.4 -13.15 TD[(directory)-249(\(sp)-28(eci\014ed)-249(with)]TJ/F4 10.91 Tf 116.77 0 TD[(--srcdir)]TJ/F1 10.91 Tf 45.82 0 TD[(\))-249(for)-250(all)-249(directories)-250(whose)-249(names)-250(start)-250(with)-249(the)-250(to)-27(ol)-250(name.)]TJ -162.59 -13.15 TD[(It)-441(is)-442(a)-442(common)-442(practice)-442(to)-441(put)-442(a)-442(p)-28(erio)-28(d)-441(after)-442(the)-442(to)-28(ol)-442(part)-441(of)-442(the)-442(name.)-770(F)82(or)-440(instance,)]TJ 0 -13.15 TD[(directories)-363(that)-363(start)-363(with)-363(`)]TJ/F4 10.91 Tf 131.81 0 TD[(g++.)]TJ/F1 10.91 Tf 22.91 0 TD[(')-363(con)27(tain)]TJ/F7 10.91 Tf 45.8 0 TD[(g)]TJ/F4 10.91 Tf 7 0 TD[(++)]TJ/F1 10.91 Tf 15.41 0 TD[(tests.)-533(T)82(o)-362(add)-363(a)-363(new)-363(test,)-371(just)-363(put)-363(it)-363(in)-363(an)27(y)]TJ -222.93 -13.15 TD[(directory)-273(\(create)-273(an)-273(en)27(tirely)-272(new)-273(directory)83(,)-284(if)-273(y)26(ou)-272(wish\))-273(whose)-273(name)-273(follo)27(ws)-272(this)-273(con)27(v)28(en)27(tion.)]TJ 14.94 -16.14 TD[(A)-272(test)-273(is)-273(an)27(y)-272(\014le)-272(in)-273(an)-273(appropriately)-273(named)-272(sub)-28(directory)-273(whose)-273(name)-272(ends)-273(in)-273(`)]TJ/F4 10.91 Tf 368.75 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(')-272(\(the)]TJ -406.6 -13.15 TD[(con)27(v)28(en)28(tional)-346(w)27(a)27(y)-346(of)-347(naming)]TJ/F4 10.91 Tf 136.96 0 TD[(expect)]TJ/F1 10.91 Tf 38.15 0 TD[(scripts\).)-485(These)-347(simple)-347(naming)-347(con)27(v)27(en)28(tions)-346(mak)27(e)-346(it)-347(as)]TJ -175.11 -13.15 TD[(simple)-298(as)-299(p)-28(ossible)-299(to)-299(install)-299(new)-299(tests:)-427(all)-299(y)27(ou)-298(m)27(ust)-298(do)-299(is)-299(put)-299(the)-298(test)-299(in)-299(the)-299(righ)27(t)-298(directory)82(.)]TJ/F4 10.91 Tf 14.94 -16.14 TD[(runtest)]TJ/F1 10.91 Tf 44.08 0 TD[(sorts)-365(the)-365(tests)-366(in)-365(eac)27(h)-365(sub)-27(directory)-366(b)27(y)-364(name)-366(\(using)-365(the)-365(Tcl)]TJ/F4 10.91 Tf 290.06 0 TD[(lsort)]TJ/F1 10.91 Tf 32.62 0 TD[(command\))]TJ -381.7 -13.15 TD[(and)-333(runs)-333(them)-333(in)-334(the)-333(resulting)-333(order.)]TJ ET 0 g 0 G -endstream -endobj -134 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R -/F7 49 0 R -/F8 52 0 R ->> -endobj -132 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 134 0 R ->> -endobj -137 0 obj -<< -/Length 7809 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(22)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(5.2)-562(Initialization)-375(mo)-31(dule)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(The)-389(initialization)-389(mo)-28(dule)-390(\(or)-389(\\init)-390(\014le"\))-389(has)-389(t)26(w)28(o)-388(purp)-28(oses:)-557(to)-389(pro)27(vide)-389(to)-28(ol)-389(and)-390(target)]TJ -14.94 -13.15 TD[(dep)-27(enden)27(t)-334(pro)-27(cedures,)-334(and)-334(to)-335(start)-334(up)-334(an)-334(in)27(teractiv)28(e)-333(to)-28(ol)-334(to)-334(the)-334(p)-28(oin)27(t)-333(where)-334(it)-334(is)-334(ready)-334(to)]TJ 0 -13.15 TD[(op)-27(erate.)-443(The)-328(latter)-328(includes)-328(establishing)-328(comm)26(unications)-327(with)-328(the)-328(target.)-443(All)-328(the)-328(tests)-328(for)]TJ 0 -13.15 TD[(in)27(teractiv)28(e)-250(programs)-251(assume)-250(that)-251(the)-251(to)-28(ol)-251(is)-250(already)-251(running)-251(and)-251(comm)27(unicating.)-416(Initializa-)]TJ 0 -13.15 TD[(tion)-333(mo)-28(dules)-333(for)-333(non-in)27(teractiv)27(e)-332(programs)-333(ma)26(y)-332(only)-333(need)-334(to)-333(supply)-333(the)-334(supp)-27(ort)-334(functions.)]TJ 14.94 -16.14 TD[(Eac)27(h)-357(test)-358(suite)-358(directory)-358(m)27(ust)-357(con)27(tain)-358(\(in)-358(its)-358(`)]TJ/F4 10.91 Tf 223.83 0 TD[(config)]TJ/F1 10.91 Tf 34.36 0 TD[(')-358(sub)-27(directory\))-358(a)-358(separate)-359(initial-)]TJ -273.13 -13.15 TD[(ization)-299(mo)-28(dule)-300(for)-300(eac)27(h)-299(target.)-433(The)-300(appropriate)-300(init)-299(\014le)-300(is)-300(can)-300(b)-27(e)-300(named)-300(sev)27(eral)-299(w)27(a)27(ys.)-432(The)]TJ 0 -13.15 TD[(prefered)-373(name)-374(is)-374(the)]TJ/F8 10.91 Tf 102.8 0 TD[(os)]TJ/F1 10.91 Tf 15.01 0 TD[(part)-373(of)-374(the)-374(canonical)-374(con\014guration)-374(name)-374(with)]TJ/F4 10.91 Tf 225.89 0 TD[(.exp)]TJ/F1 10.91 Tf 26.99 0 TD[(as)-373(the)-374(su\016x.)]TJ -370.69 -13.15 TD[(An)-362(example)-363(w)26(ould)-362(b)-27(e)-363(that)-363(for)-363(an)]TJ/F4 10.91 Tf 165.02 0 TD[(m68k-coff)]TJ/F1 10.91 Tf 55.51 0 TD[(system,)-370(the)]TJ/F4 10.91 Tf 58.72 0 TD[(target_os)]TJ/F1 10.91 Tf 55.51 0 TD[(part)-362(w)26(ould)-362(b)-27(e)]TJ/F4 10.91 Tf 71.3 0 TD[(coff)]TJ/F1 10.91 Tf 22.91 0 TD[(.)]TJ -428.97 -13.15 TD[(The)-303(next)-304(w)27(a)28(y)-303(is)-303(for)-304(system)-303(where)-304(there)-303(are)-304(short)-304(\014lenames,)-309(or)-304(a)-303(shortcut)-304(is)-303(desired)-304(to)-304(refer)]TJ 0 -13.15 TD[(to)-334(the)-335(OS)-334(name)-335(for)-334(that)-335(target.)-448(This)-335(is)-334(uses)-335(the)-334(v)54(alue)-333(of)]TJ/F4 10.91 Tf 274.75 0 TD[($target_abbrev)]TJ/F1 10.91 Tf 83.83 0 TD[(rather)-334(than)-335(the)]TJ/F4 10.91 Tf -358.58 -13.15 TD[(target_os)]TJ/F1 10.91 Tf 51.55 0 TD[(.)]TJ -36.61 -16.14 TD[(The)-356(\014nal)-356(\014le)-356(lo)-27(ok)26(ed)-355(for)-356(is)-356(simply)-356(`)]TJ/F4 10.91 Tf 165.83 0 TD[(default.exp)]TJ/F1 10.91 Tf 63 0 TD[('.)-512(If)-356(there)-356(is)-356(only)-356(one)-356(op)-28(erating)-356(system)]TJ -243.77 -13.15 TD[(to)-275(supp)-28(ort,)-287(then)-276(this)-276(\014le)-276(can)-275(b)-28(e)-276(used.)-425(It's)-276(main)-276(purp)-28(ose)-275(is)-276(to)-276(o\013er)-276(some)-275(supp)-28(ort)-276(for)-276(new)-276(op-)]TJ 0 -13.15 TD[(erating)-301(systems,)-308(or)-302(for)-302(unsupp)-28(orted)-301(cross)-302(targets.)-434(The)-302(last)-301(\014le)-302(lo)-28(ok)27(ed)-301(for)-302(is)-301(`)]TJ/F4 10.91 Tf 362.94 0 TD[(unknown.exp)]TJ/F1 10.91 Tf 63 0 TD[('.)]TJ -425.94 -13.15 TD[(This)-428(is)-429(usually)-428(limited)-429(to)-428(error)-429(handling)-428(for)-429(unsupp)-27(orted)-429(targets.)-730(It's)-428(whole)-429(con)27(ten)28(ts)-428(is)]TJ 0 -13.15 TD[(t)27(ypically)84(.)]TJ/F9 9.96 Tf 0 -9.45 TD[(\013)]TJ ET 23.98 -258.91 m 450.40 -258.91 l 450.40 -258.51 l 23.98 -258.51 l b BT 456.38 -258.91 TD[(\010)]TJ ET 18.00 -292.72 m 18.40 -292.72 l 18.40 -264.64 l 18.00 -264.64 l b BT/F4 10.91 Tf 21.39 -277.28 TD[(perror)-524("Sorry,)-525(there)-525(is)-525(no)-525(support)-525(for)-525(this)-525(target")]TJ 0 -12.45 TD[(exit)-524(1)]TJ ET 456.38 -292.72 m 456.77 -292.72 l 456.77 -264.64 l 456.38 -264.64 l b BT/F9 9.96 Tf 18 -298.95 TD[(\012)]TJ ET 23.98 -298.95 m 450.40 -298.95 l 450.40 -298.55 l 23.98 -298.55 l b BT 456.38 -298.95 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(A)27(t)-376(the)-377(b)-28(eginning)-377(of)-377(the)-377(init)-377(\014le,)-389(y)27(ou)-376(m)27(ust)-376(\014rst)-378(determine)-377(the)-377(prop)-28(er)-377(executable)-377(name)]TJ -14.94 -13.15 TD[(of)-340(the)-340(to)-28(ol)-340(to)-341(execute,)-342(since)-340(the)-340(actual)-341(name)-340(of)-340(the)-341(to)-27(ol)-341(to)-340(b)-28(e)-340(tested)-341(m)27(y)-339(v)54(ary)-339(from)-340(system)]TJ 0 -13.15 TD[(to)-333(system.)-444(Here's)-334(an)-333(example)-333(for)-334(the)]TJ/F7 10.91 Tf 180.24 0 TD[(GNU)]TJ/F1 10.91 Tf 30.68 0 TD[(C)-333(compiler.)]TJ/F9 9.96 Tf -210.92 -9.44 TD[(\013)]TJ ET 23.98 -352.08 m 450.40 -352.08 l 450.40 -351.69 l 23.98 -351.69 l b BT 456.38 -352.08 TD[(\010)]TJ ET 18.00 -523.79 m 18.40 -523.79 l 18.40 -357.81 l 18.00 -357.81 l b BT/F4 10.91 Tf 21.39 -370.46 TD[(global)-524(AR)]TJ 0 -12.45 TD[(#)-524(look)-525(for)-525(the)-525(archiver)-525(ar)]TJ 0 -12.45 TD[(if)-524(![info)-525(exists)-525(AR])-525({)]TJ 22.91 -12.46 TD[(set)-524(AR)-525([findfile)-525($base_dir/../../binutils/ar)-525($base_dir/../../binutils/ar)-525([tr)]TJ -22.91 -12.45 TD[(ansform)-524(ar]])]TJ 22.91 -12.45 TD[(verbose)-524("AR)-525(defaulting)-525(to)-525($AR")-525(2)]TJ -22.91 -12.46 TD[(})]TJ 0 -12.45 TD[(})]TJ 0 -24.91 TD[(global)-524(CFLAGS)]TJ 0 -12.45 TD[(if)-524(![info)-525(exists)-525(CFLAGS])-525(then)-525({)]TJ 22.91 -12.45 TD[(set)-524(CFLAGS)-525("")]TJ -22.91 -12.46 TD[(})]TJ ET 456.38 -523.79 m 456.77 -523.79 l 456.77 -357.81 l 456.38 -357.81 l b BT/F9 9.96 Tf 18 -530.02 TD[(\012)]TJ ET 23.98 -530.02 m 450.40 -530.02 l 450.40 -529.62 l 23.98 -529.62 l b BT 456.38 -530.02 TD[(\011)]TJ/F1 10.91 Tf -423.44 -17.39 TD[(It)-330(is)-331(alw)27(a)28(ys)-330(a)-331(go)-27(o)-28(d)-331(idea)-330(to)-331(\014rst)-331(c)27(hec)28(k)-330(the)-330(v)54(ariable,)-330(and)-331(only)-330(set)-331(it)-331(if)-330(it)-331(has)-331(not)-330(y)27(et)-330(b)-28(een)]TJ -14.94 -13.15 TD[(de\014ned.)-444(Often)-333(the)-334(prop)-27(er)-334(v)55(alue)-333(of)]TJ/F4 10.91 Tf 166.73 0 TD[(AR)]TJ/F1 10.91 Tf 15.09 0 TD[(is)-333(set)-333(on)-333(the)-334(command)-333(line)-333(that)-334(in)27(v)28(ok)28(es)-333(`)]TJ/F4 10.91 Tf 196.85 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ -403.82 -16.14 TD[(The)]TJ/F4 10.91 Tf 22.14 0 TD[(findfile)]TJ/F1 10.91 Tf 49.18 0 TD[(pro)-27(cedure)-308(tak)27(es)-306(as)-308(it's)-307(\014rst)-307(argumen)27(t)-307(a)-307(\014le)-307(name)-308(to)-307(lo)-28(ok)-307(for.)-436(The)-307(second)]TJ -86.26 -13.15 TD[(argumen)27(t)-293(is)-295(returned)-294(if)-295(the)-294(\014le)-295(is)-294(found,)-302(and)-295(the)-294(third)-295(argumen)27(t)-293(is)-295(returned)-294(if)-295(the)-294(\014le)-295(is)-294(not)]TJ 0 -13.15 TD[(found.)]TJ/F4 10.91 Tf 34.85 0 TD[(base_dir)]TJ/F1 10.91 Tf 49.45 0 TD[(is)-333(set)-333(in)27(ternally)-333(b)27(y)-332(DejaGn)27(u)-333(to)-333(the)-333(top)-334(lev)27(el)-332(directory)-334(of)-333(the)-333(ob)-56(ject)-333(tree.)]TJ -69.36 -16.14 TD[(The)]TJ/F4 10.91 Tf 23.9 0 TD[(transform)]TJ/F1 10.91 Tf 56.65 0 TD[(pro)-27(cedure)-468(tak)26(es)-467(as)-468(its)-468(argumen)27(t)-467(the)-468(nativ)27(e)-467(name)-468(of)-468(a)-468(to)-28(ol)-468(\(suc)27(h)-467(as)]TJ -95.49 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(gcc)]TJ/F1 10.91 Tf 17.18 0 TD[(')-434(for)-435(the)-435(compiler\),)-460(and)-435(returns)-435(the)-434(name)-435(as)-435(con\014gured)-435(for)-435(that)-434(to)-28(ol)-435(in)-435(the)-434(curren)26(t)]TJ ET 0 g 0 G -endstream -endobj -138 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R -/F8 52 0 R -/F9 59 0 R -/F7 49 0 R ->> -endobj -136 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 138 0 R ->> -endobj -141 0 obj -<< -/Length 8761 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(23)]TJ 0 -23.91 TD[(installation.)-440(\(F)83(or)-320(example,)-323(a)-321(cross-compiling)-321(v)27(ersion)-320(of)]TJ/F7 10.91 Tf 265.1 0 TD[(gnu)]TJ/F1 10.91 Tf 23.87 0 TD[(CC)-320(that)-321(generates)-321(MIPS)-321(co)-27(de)]TJ -288.97 -13.15 TD[(ma)27(y)-332(b)-28(e)-333(installed)-333(with)-334(a)-333(name)-333(lik)26(e)]TJ/F4 10.91 Tf 165.21 0 TD[(mips-idt-ecoff-gcc)]TJ/F1 10.91 Tf 103.09 0 TD[(.\))]TJ -253.36 -16.14 TD[(In)-372(a)-373(test)-373(running)-372(nativ)27(e,)-382(writing)-373(the)-372(Tcl)-373(co)-28(de)-372(for)-373(initialization)-373(is)-372(usually)-373(quite)-373(simple.)]TJ -14.94 -13.15 TD[(F)83(or)-238(cross)-238(con\014gurations,)-258(ho)27(w)28(ev)28(er,)-257(more)-238(elab)-28(orate)-238(instructions)-239(are)-238(usually)-239(needed)-238(to)-239(describ)-27(e)]TJ 0 -13.15 TD[(ho)27(w)-332(to)-333(talk)-334(to)-333(a)-333(remote)-334(target.)]TJ 14.94 -16.14 TD[(Eac)27(h)-333(initialization)-335(mo)-27(dule)-335(de\014nes)-334(up)-335(to)-334(four)-335(pro)-27(cedures)-335(with)-334(standard)-335(names)-334(and)-335(pur-)]TJ -14.94 -13.15 TD[(p)-27(oses.)-641(The)-399(names)-399(of)-399(these)-399(pro)-28(cedures)-399(b)-28(egin)-398(with)-399(`)]TJ/F4 10.91 Tf 248.73 0 TD[($tool)]TJ/F1 10.91 Tf 28.64 0 TD[(',)-415(the)-399(string)-399(that)-399(iden)27(ti\014es)-398(tests)]TJ -277.37 -13.15 TD[(for)-422(a)-423(particular)-423(to)-28(ol:)]TJ/F4 10.91 Tf 107.4 0 TD[($tool_start)]TJ/F1 10.91 Tf 63 0 TD[(,)]TJ/F4 10.91 Tf 7.89 0 TD[($tool_load)]TJ/F1 10.91 Tf 57.27 0 TD[(,)]TJ/F4 10.91 Tf 7.89 0 TD[($tool_exit)]TJ/F1 10.91 Tf 57.27 0 TD[(,)-445(and)]TJ/F4 10.91 Tf 30.08 0 TD[($tool_version)]TJ/F1 10.91 Tf 74.45 0 TD[(.)-713(F)83(or)]TJ -405.25 -13.16 TD[(example,)-306(the)-299(start)-300(pro)-28(cedure)-299(for)]TJ/F7 10.91 Tf 156.29 0 TD[(gdb)]TJ/F1 10.91 Tf 23.41 0 TD[(is)-299(called)]TJ/F4 10.91 Tf 41.14 0 TD[(gdb_start)]TJ/F1 10.91 Tf 51.54 0 TD[(.)-433(\(Since)-299(start)-300(pro)-28(cedures)-299(are)-300(used)]TJ -272.38 -13.15 TD[(di\013eren)27(tly)-305(for)-307(batc)27(h)-305(and)-307(in)27(teractiv)28(e)-306(to)-27(ols,)-312(ho)27(w)27(ev)28(er,)]TJ/F4 10.91 Tf 245.82 0 TD[(runtest)]TJ/F1 10.91 Tf 43.44 0 TD[(itself)-306(nev)27(er)-306(calls)-306(the)-306(start)-307(pro-)]TJ -289.26 -13.15 TD[(cedure.)-444(Init)-333(\014les)-334(for)-333(in)27(teractiv)28(e)-333(to)-27(ols)-334(are)-333(exp)-28(ected)-333(to)-334(end)-333(b)27(y)-332(running)-334(the)-333(start)-333(pro)-28(cedure.\))]TJ 14.94 -16.14 TD[(The)-411(initialization)-412(mo)-28(dule)-411(is)-412(also)-412(a)-411(go)-28(o)-28(d)-412(place)-411(to)-412(call)]TJ/F4 10.91 Tf 262.91 0 TD[(load_lib)]TJ/F1 10.91 Tf 50.31 0 TD[(to)-411(get)-412(an)27(y)-411(collections)]TJ -328.16 -13.15 TD[(of)-362(utilit)27(y)-361(pro)-28(cedures)-362(mean)26(t)-361(for)-362(a)-363(family)-362(of)-362(test)-363(cases,)-369(and)-362(to)-363(set)-362(up)-362(default)-363(v)55(alues)-361(for)-363(an)27(y)]TJ 0 -13.15 TD[(additional)-333(Tcl)-333(v)54(ariables)-332(needed)-333(for)-334(a)-333(sp)-28(eci\014c)-333(set)-333(of)-334(tests.)]TJ 14.94 -16.14 TD[(See)-439(Section)-440(5.4)-440([T)82(arget)-439(dep)-28(enden)27(t)-439(pro)-28(cedures],)-466(page)-440(31,)-467(for)-440(full)-440(descriptions)-440(of)-440(these)]TJ -14.94 -13.15 TD[(pro)-27(cedures.)]TJ/F2 14.35 Tf 0 -30.88 TD[(5.3)-562(DejaGn)30(u)-374(pro)-31(cedures)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(DejaGn)27(u)-430(pro)27(vides)-430(these)-431(Tcl)-431(pro)-28(cedures)-431(for)-430(use)-431(in)-431(test)-431(scripts.)-738(Y)83(ou)-430(can)-431(also)-431(use)-431(an)27(y)]TJ -14.94 -13.15 TD[(standard)]TJ/F4 10.91 Tf 45.54 0 TD[(expect)]TJ/F1 10.91 Tf 37.99 0 TD[(or)-332(Tcl)-332(function.)-445(These)-332(pro)-28(cedures)-332(are)-333(stored)-332(in)-333(libraries,)-332(whic)26(h)-331(DejaGn)27(u)]TJ -83.53 -13.15 TD[(loads)-343(at)-343(run)27(time.)-473(Here's)-343(explanation)-343(of)-343(the)-343(library)-344(pro)-27(cedures)-344(that)-343(get)-343(loaded)-343(at)-343(run)27(time.)]TJ 0 -13.15 TD[(All)-333(other)-333(librarys)-333(are)-334(optional,)-333(and)-333(need)-334(to)-333(b)-28(e)-333(loaded)-334(b)27(y)-332(the)-333(testsuite.)]TJ/F2 13.09 Tf 0 -26.9 TD[(5.3.1)-562(Core)-375(In)30(ternal)-374(Pro)-31(cedures)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(See)-333(Section)-334(2.4)-333([A)-334(POSIX)-333(conforming)-334(test)-333(framew)27(ork],)-333(page)-333(6,)-334(for)-333(more)-334(detailed)-333(expla-)]TJ -14.94 -13.15 TD[(nations)-333(of)-333(the)-333(test)-334(outcomes)-333(\(`)]TJ/F4 10.91 Tf 145.94 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(PASS)]TJ/F1 10.91 Tf 22.9 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(UNTESTED)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.27 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(UNSUPPORTED)]TJ/F1 10.91 Tf 63 0 TD[('\).)]TJ/F4 10.91 Tf -408.76 -22.12 TD[(perror)-333(")]TJ/F5 10.91 Tf 43.73 0 TD[(string)-418(n)26(um)28(b)-27(er)]TJ/F4 10.91 Tf 68.81 0 TD[(")]TJ/F1 10.91 Tf -54.94 -13.15 TD[(Declares)-299(a)-299(sev)27(ere)-298(error)-299(in)-299(the)-300(testing)-299(framew)27(ork)-298(itself.)]TJ/F4 10.91 Tf 260.23 0 TD[(perror)]TJ/F1 10.91 Tf 37.62 0 TD[(writes)-299(in)-299(the)-299(log)]TJ -297.85 -13.15 TD[(\014les)-356(a)-356(message)-357(b)-28(eginning)-356(with)-356(`)]TJ/F4 10.91 Tf 152.05 0 TD[(ERROR)]TJ/F1 10.91 Tf 28.63 0 TD[(',)-362(app)-27(ending)-357(the)-356(argumen)26(t)]TJ/F5 10.91 Tf 131.41 0 TD[(string)]TJ/F1 10.91 Tf 27.36 0 TD[(.)-513(If)-357(the)]TJ -339.45 -13.15 TD[(optional)]TJ/F5 10.91 Tf 41.92 0 TD[(n)27(um)28(b)-27(er)]TJ/F1 10.91 Tf 40.01 0 TD[(is)-287(supplied,)-296(then)-287(this)-287(is)-287(used)-287(to)-287(set)-288(the)-287(in)27(ternal)-286(coun)27(t)-286(of)-287(errors)]TJ -81.93 -13.15 TD[(to)-333(that)-333(v)54(alue.)]TJ 0 -16.14 TD[(As)-347(a)-348(side)-348(e\013ect,)]TJ/F4 10.91 Tf 79.59 0 TD[(perror)]TJ/F1 10.91 Tf 38.16 0 TD[(also)-347(c)26(hanges)-347(the)-348(e\013ect)-347(of)-348(the)-348(next)]TJ/F4 10.91 Tf 166.69 0 TD[(pass)]TJ/F1 10.91 Tf 26.7 0 TD[(or)]TJ/F4 10.91 Tf 13.53 0 TD[(fail)]TJ/F1 10.91 Tf 26.7 0 TD[(com-)]TJ -351.37 -13.15 TD[(mand:)-559(the)-390(test)-391(outcome)-391(b)-27(ecomes)-391(`)]TJ/F4 10.91 Tf 168.42 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.27 0 TD[(',)-405(since)-390(an)-391(automatic)-391(`)]TJ/F4 10.91 Tf 108.78 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(')-390(or)]TJ -357.38 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(')-356(cannot)-357(b)-28(e)-357(trusted)-356(after)-357(a)-357(sev)27(ere)-356(error)-357(in)-357(the)-357(test)-356(framew)26(ork.)-513(If)-357(the)-357(op-)]TJ -25.94 -13.15 TD[(tional)-339(n)26(umeric)-338(v)54(alue)-339(is)-339(`)]TJ/F4 10.91 Tf 114.92 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(',)-341(then)-340(there)-340(are)-339(no)-340(further)-340(side)-340(e\013ects)-340(to)-339(calling)-340(this)]TJ -120.65 -13.15 TD[(function,)-416(and)-400(the)-400(follo)27(wing)-399(test)-399(outcome)-400(do)-28(esn't)-400(b)-28(ecome)-399(`)]TJ/F4 10.91 Tf 282.77 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.27 0 TD[('.)-643(This)]TJ -340.04 -13.15 TD[(can)-333(b)-28(e)-333(used)-333(for)-334(errors)-333(with)-333(no)-334(kno)27(wn)-332(side)-333(e\013ects.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(warning)-333(")]TJ/F5 10.91 Tf 49.45 0 TD[(string)-418(n)26(um)28(b)-27(er)]TJ/F4 10.91 Tf 68.81 0 TD[(")]TJ/F1 10.91 Tf -60.66 -13.15 TD[(Declares)-287(detection)-288(of)-288(a)-287(minor)-288(error)-288(in)-288(the)-287(test)-288(case)-288(itself.)]TJ/F4 10.91 Tf 272.07 0 TD[(warning)]TJ/F1 10.91 Tf 43.23 0 TD[(writes)-287(in)-288(the)]TJ -315.3 -13.15 TD[(log)-379(\014les)-380(a)-380(message)-380(b)-28(eginning)-380(with)-380(`)]TJ/F4 10.91 Tf 171.42 0 TD[(WARNING)]TJ/F1 10.91 Tf 40.09 0 TD[(',)-391(app)-28(ending)-380(the)-380(argumen)27(t)]TJ/F5 10.91 Tf 132.5 0 TD[(string)]TJ/F1 10.91 Tf 27.36 0 TD[(.)]TJ -371.37 -13.15 TD[(Use)]TJ/F4 10.91 Tf 22.19 0 TD[(warning)]TJ/F1 10.91 Tf 44.95 0 TD[(rather)-445(than)]TJ/F4 10.91 Tf 60.68 0 TD[(error)]TJ/F1 10.91 Tf 33.5 0 TD[(for)-445(cases)-445(\(suc)27(h)-444(as)-446(comm)27(unication)-444(failure)-445(to)]TJ -161.32 -13.15 TD[(b)-27(e)-489(follo)27(w)28(ed)-487(b)27(y)-488(a)-488(retry\))-488(where)-488(the)-489(test)-488(case)-488(can)-488(reco)27(v)27(er)-487(from)-488(the)-488(error.)-909(If)]TJ 0 -13.15 TD[(the)-367(optional)]TJ/F5 10.91 Tf 61.96 0 TD[(n)27(um)28(b)-27(er)]TJ/F1 10.91 Tf 40.88 0 TD[(is)-367(supplied,)-376(then)-368(this)-367(is)-368(used)-367(to)-368(set)-367(the)-368(in)27(ternal)-366(coun)26(t)-366(of)]TJ -102.84 -13.15 TD[(w)27(arnings)-332(to)-333(that)-334(v)55(alue.)]TJ ET 0 g 0 G -endstream -endobj -142 0 obj -<< -/F1 9 0 R -/F7 49 0 R -/F4 28 0 R -/F2 12 0 R -/F5 31 0 R ->> -endobj -140 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 142 0 R ->> -endobj -145 0 obj -<< -/Length 8738 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(24)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 57.6 -23.91 TD[(As)-351(a)-352(side)-351(e\013ect,)]TJ/F4 10.91 Tf 79.76 0 TD[(warning_threshold)]TJ/F1 10.91 Tf 101.2 0 TD[(or)-351(more)-352(calls)-351(to)]TJ/F4 10.91 Tf 79.1 0 TD[(warning)]TJ/F1 10.91 Tf 43.92 0 TD[(in)-351(a)-352(single)-351(test)]TJ -303.98 -13.15 TD[(case)-369(also)-369(c)27(hanges)-369(the)-369(e\013ect)-369(of)-370(the)-369(next)]TJ/F4 10.91 Tf 191.81 0 TD[(pass)]TJ/F1 10.91 Tf 26.93 0 TD[(or)]TJ/F4 10.91 Tf 13.76 0 TD[(fail)]TJ/F1 10.91 Tf 26.94 0 TD[(command:)-516(the)-369(test)-369(out-)]TJ -259.44 -13.15 TD[(come)-416(b)-27(ecomes)-417(`)]TJ/F4 10.91 Tf 76.11 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.27 0 TD[(')-416(since)-416(an)-416(automatic)-416(`)]TJ/F4 10.91 Tf 106.71 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(')-416(or)-416(`)]TJ/F4 10.91 Tf 24.87 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(')-416(ma)27(y)-415(not)-416(b)-28(e)]TJ -310.78 -13.15 TD[(trust)27(w)28(orth)28(y)-449(after)-450(man)27(y)-449(w)27(arnings.)-792(If)-450(the)-450(optional)-450(n)27(umeric)-449(v)55(alue)-449(is)-449(`)]TJ/F4 10.91 Tf 336.18 0 TD[(0)]TJ/F1 10.91 Tf 5.72 0 TD[(',)-478(then)]TJ -341.9 -13.16 TD[(there)-352(are)-353(no)-353(further)-353(side)-353(e\013ects)-353(to)-353(calling)-352(this)-353(function,)-358(and)-353(the)-353(follo)27(wing)-352(test)]TJ 0 -13.15 TD[(outcome)-430(do)-27(esn't)-431(b)-27(ecome)-431(`)]TJ/F4 10.91 Tf 126.87 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.27 0 TD[('.)-734(This)-431(can)-430(b)-28(e)-430(used)-430(for)-430(errors)-430(with)-430(no)]TJ -184.14 -13.15 TD[(kno)27(wn)-332(side)-333(e\013ects.)]TJ/F4 10.91 Tf -57.6 -21.87 TD[(note)-333(")]TJ/F5 10.91 Tf 32.27 0 TD[(string)]TJ/F4 10.91 Tf 28.3 0 TD[(")]TJ/F1 10.91 Tf -2.97 -13.15 TD[(App)-27(ends)-374(an)-373(informational)-374(message)-373(to)-374(the)-374(log)-373(\014le.)]TJ/F4 10.91 Tf 246.12 0 TD[(note)]TJ/F1 10.91 Tf 26.98 0 TD[(writes)-373(in)-374(the)-373(log)-374(\014les)]TJ -273.1 -13.15 TD[(a)-431(message)-432(b)-27(eginning)-432(with)-432(`)]TJ/F4 10.91 Tf 133.2 0 TD[(NOTE)]TJ/F1 10.91 Tf 22.9 0 TD[(',)-456(app)-27(ending)-432(the)-432(argumen)27(t)]TJ/F5 10.91 Tf 134.89 0 TD[(string)]TJ/F1 10.91 Tf 27.37 0 TD[(.)-739(Use)]TJ/F4 10.91 Tf 33.13 0 TD[(note)]TJ/F1 10.91 Tf -351.49 -13.15 TD[(sparingly)83(.)]TJ/F4 10.91 Tf 50.52 0 TD[(verbose)]TJ/F1 10.91 Tf 43.76 0 TD[(should)-337(b)-27(e)-337(used)-338(for)-337(most)-337(suc)27(h)-336(messages,)-338(but)-337(in)-337(cases)-337(where)]TJ -94.28 -13.15 TD[(a)-333(message)-333(is)-333(needed)-334(in)-333(the)-333(log)-334(\014le)-333(regardless)-333(of)-334(the)-333(v)27(erb)-27(osit)27(y)-333(lev)27(el)-332(use)]TJ/F4 10.91 Tf 337.49 0 TD[(note)]TJ/F1 10.91 Tf 22.9 0 TD[(.)]TJ/F4 10.91 Tf -417.99 -21.88 TD[(pass)-333(")]TJ/F5 10.91 Tf 32.27 0 TD[(string)]TJ/F4 10.91 Tf 28.3 0 TD[(")]TJ/F1 10.91 Tf -2.97 -13.15 TD[(Declares)-305(a)-305(test)-306(to)-305(ha)26(v)28(e)-304(passed.)]TJ/F4 10.91 Tf 149.71 0 TD[(pass)]TJ/F1 10.91 Tf 26.24 0 TD[(writes)-305(in)-305(the)-306(log)-305(\014les)-306(a)-305(message)-306(b)-27(eginning)]TJ -175.95 -13.15 TD[(with)-295(`)]TJ/F4 10.91 Tf 27.47 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(')-295(\(or)]TJ/F4 10.91 Tf 23.45 0 TD[(XPASS)]TJ/F1 10.91 Tf 28.63 0 TD[(,)-303(if)-295(failure)-296(w)27(as)-295(exp)-28(ected\),)-303(app)-28(ending)-295(the)-296(argumen)27(t)]TJ/F5 10.91 Tf 241.55 0 TD[(string)]TJ/F1 10.91 Tf 27.36 0 TD[(.)]TJ/F4 10.91 Tf -428.97 -21.87 TD[(fail)-333(")]TJ/F5 10.91 Tf 32.27 0 TD[(string)]TJ/F4 10.91 Tf 28.3 0 TD[(")]TJ/F1 10.91 Tf -2.97 -13.15 TD[(Declares)-340(a)-340(test)-340(to)-341(ha)27(v)28(e)-339(failed.)]TJ/F4 10.91 Tf 146.67 0 TD[(fail)]TJ/F1 10.91 Tf 26.62 0 TD[(writes)-340(in)-340(the)-340(log)-341(\014les)-340(a)-340(message)-341(b)-27(eginning)]TJ -173.29 -13.15 TD[(with)-295(`)]TJ/F4 10.91 Tf 27.47 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(')-295(\(or)]TJ/F4 10.91 Tf 23.45 0 TD[(XFAIL)]TJ/F1 10.91 Tf 28.63 0 TD[(,)-303(if)-295(failure)-296(w)27(as)-295(exp)-28(ected\),)-303(app)-28(ending)-295(the)-296(argumen)27(t)]TJ/F5 10.91 Tf 241.55 0 TD[(string)]TJ/F1 10.91 Tf 27.36 0 TD[(.)]TJ/F4 10.91 Tf -428.97 -21.88 TD[(unresolved)-333(")]TJ/F5 10.91 Tf 66.64 0 TD[(string)]TJ/F4 10.91 Tf 28.29 0 TD[(")]TJ/F1 10.91 Tf -37.33 -13.15 TD[(Declares)-374(a)-375(test)-375(to)-375(ha)27(v)28(e)-374(an)-375(unresolv)27(ed)-374(outcome.)]TJ/F4 10.91 Tf 234.01 0 TD[(unresolved)]TJ/F1 10.91 Tf 61.37 0 TD[(writes)-374(in)-375(the)-375(log)]TJ -295.38 -13.15 TD[(\014le)-431(a)-432(message)-431(b)-28(eginning)-432(with)-431(`)]TJ/F4 10.91 Tf 151.84 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.28 0 TD[(',)-456(app)-27(ending)-432(the)-432(argumen)27(t)]TJ/F5 10.91 Tf 134.89 0 TD[(string)]TJ/F1 10.91 Tf 27.36 0 TD[(.)]TJ -371.37 -13.15 TD[(This)-384(usually)-385(means)-385(the)-384(test)-385(did)-385(not)-385(execute)-384(as)-385(exp)-28(ected,)-397(and)-385(a)-385(h)27(uman)-384(b)-28(eing)]TJ 0 -13.15 TD[(m)27(ust)-304(go)-305(o)27(v)27(er)-304(results)-305(to)-305(determine)-305(if)-306(it)-305(passed)-305(or)-305(failed)-306(\(and)-305(to)-305(impro)27(v)28(e)-305(the)-305(test)]TJ 0 -13.15 TD[(case\).)]TJ/F4 10.91 Tf -57.6 -21.87 TD[(untested)-333(")]TJ/F5 10.91 Tf 55.18 0 TD[(string)]TJ/F4 10.91 Tf 28.3 0 TD[(")]TJ/F1 10.91 Tf -25.88 -13.15 TD[(Declares)-265(a)-265(test)-265(w)27(as)-265(not)-265(run.)]TJ/F4 10.91 Tf 134.62 0 TD[(untested)]TJ/F1 10.91 Tf 48.71 0 TD[(writes)-265(in)-265(the)-265(log)-265(\014le)-266(a)-265(message)-265(b)-28(eginning)]TJ -183.33 -13.15 TD[(with)-353(`)]TJ/F4 10.91 Tf 28.1 0 TD[(UNTESTED)]TJ/F1 10.91 Tf 45.82 0 TD[(',)-358(app)-28(ending)-354(the)-353(argumen)27(t)]TJ/F5 10.91 Tf 131.27 0 TD[(string)]TJ/F1 10.91 Tf 27.36 0 TD[(.)-505(F)83(or)-353(example,)-359(y)27(ou)-352(migh)26(t)-352(use)]TJ -232.55 -13.16 TD[(this)-318(in)-318(a)-318(dumm)26(y)-317(test)-318(whose)-319(only)-318(role)-318(is)-319(to)-318(record)-318(that)-319(a)-318(test)-318(do)-28(es)-318(not)-319(y)27(et)-317(exist)]TJ 0 -13.15 TD[(for)-333(some)-333(feature.)]TJ/F4 10.91 Tf -57.6 -21.87 TD[(unsupported)-333(")]TJ/F5 10.91 Tf 72.36 0 TD[(string)]TJ/F4 10.91 Tf 28.3 0 TD[(")]TJ/F1 10.91 Tf -43.06 -13.15 TD[(Declares)-409(that)-410(a)-410(test)-410(case)-409(dep)-28(ends)-410(on)-410(some)-409(facilit)26(y)-408(that)-410(do)-28(es)-410(not)-409(exist)-410(in)-410(the)]TJ 0 -13.15 TD[(testing)-399(en)27(vironmen)27(t.)]TJ/F4 10.91 Tf 105.71 0 TD[(unsupported)]TJ/F1 10.91 Tf 67.36 0 TD[(writes)-399(in)-400(the)-399(log)-400(\014le)-399(a)-400(message)-400(b)-27(eginning)]TJ -173.07 -13.15 TD[(with)-333(`)]TJ/F4 10.91 Tf 27.88 0 TD[(UNSUPPORTED)]TJ/F1 10.91 Tf 63 0 TD[(',)-333(app)-28(ending)-333(the)-333(argumen)27(t)]TJ/F5 10.91 Tf 130.33 0 TD[(string)]TJ/F1 10.91 Tf 27.37 0 TD[(.)]TJ/F4 10.91 Tf -306.18 -21.88 TD[(get_warning_threshold)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(Returns)-333(the)-333(curren)27(t)-333(v)55(alue)-332(of)]TJ/F4 10.91 Tf 138.79 0 TD[(warning_threshold)]TJ/F1 10.91 Tf 97.36 0 TD[(.)-444(The)-333(default)-334(v)55(alue)-332(is)-334(3.)]TJ/F4 10.91 Tf -293.75 -21.87 TD[(set_warning_threshold)]TJ/F5 10.91 Tf 123.91 0 TD[(threshold)]TJ/F1 10.91 Tf -66.31 -13.15 TD[(Sets)-265(the)-266(v)54(alue)-264(of)]TJ/F4 10.91 Tf 79.54 0 TD[(warning_threshold)]TJ/F1 10.91 Tf 97.36 0 TD[(.)-421(A)-266(v)54(alue)-264(of)]TJ/F4 10.91 Tf 57.85 0 TD[(0)]TJ/F1 10.91 Tf 8.62 0 TD[(disables)-265(it:)-411(calls)-266(to)]TJ/F4 10.91 Tf 90.94 0 TD[(warning)]TJ/F1 10.91 Tf -334.31 -13.15 TD[(will)-333(not)-333(turn)-333(a)-334(`)]TJ/F4 10.91 Tf 76.39 0 TD[(PASS)]TJ/F1 10.91 Tf 22.91 0 TD[(')-333(or)-333(`)]TJ/F4 10.91 Tf 23.06 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(')-333(in)27(to)-332(an)-334(`)]TJ/F4 10.91 Tf 46.97 0 TD[(UNRESOLVED)]TJ/F1 10.91 Tf 57.27 0 TD[('.)]TJ/F4 10.91 Tf -307.11 -21.87 TD[(transform)-333(")]TJ/F5 10.91 Tf 60.91 0 TD[(to)-27(olname)]TJ/F4 10.91 Tf 44.55 0 TD[(")]TJ/F1 10.91 Tf -47.86 -13.15 TD[(Generates)-416(a)-416(string)-417(for)-416(the)-417(name)-416(of)-416(a)-417(to)-28(ol)-416(as)-416(it)-417(w)27(as)-415(con\014gured)-417(and)-416(installed,)]TJ 0 -13.16 TD[(giv)27(en)-300(its)-302(nativ)27(e)-301(name)-301(\(as)-302(the)-302(argumen)27(t)]TJ/F5 10.91 Tf 188.34 0 TD[(to)-27(olname)]TJ/F1 10.91 Tf 44.55 0 TD[(\).)-433(This)-302(mak)27(es)-301(the)-301(assumption)]TJ -232.89 -13.15 TD[(that)-528(all)-529(to)-27(ols)-529(are)-528(installed)-529(using)-528(the)-529(same)-528(naming)-529(con)27(v)28(en)27(tions:)-833(it)-529(extrap-)]TJ 0 -13.15 TD[(olates)-568(from)-569(the)-568(in)26(v)28(o)-27(cation)-568(name)-569(for)-568(`)]TJ/F4 10.91 Tf 192.49 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[('.)-1150(F)83(or)-568(example,)-627(if)-569(y)27(ou)-568(call)]TJ ET 0 g 0 G -endstream -endobj -146 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F5 31 0 R ->> -endobj -144 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 146 0 R ->> -endobj -149 0 obj -<< -/Length 8937 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(25)]TJ/F4 10.91 Tf 57.6 -23.91 TD[(runtest)]TJ/F1 10.91 Tf 46.52 0 TD[(as)-589(`)]TJ/F4 10.91 Tf 19.23 0 TD[(m68k-vxworks-runtest)]TJ/F1 10.91 Tf 114.54 0 TD[(',)-653(the)-590(result)-590(of)-590(`)]TJ/F4 10.91 Tf 89.86 0 TD[(transform)-333("gcc")]TJ/F1 10.91 Tf 87.45 0 TD[(')-589(is)]TJ -357.6 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(m68k-vxworks-gcc)]TJ/F1 10.91 Tf 91.64 0 TD[('.)]TJ/F4 10.91 Tf -152.27 -22.12 TD[(ishost)-333(")]TJ/F5 10.91 Tf 43.73 0 TD[(host)]TJ/F4 10.91 Tf 20.29 0 TD[(")]TJ/F1 10.91 Tf -6.42 -13.15 TD[(T)83(ests)-223(for)-223(a)-224(particular)]TJ/F8 10.91 Tf 99.66 0 TD[(host)]TJ/F1 10.91 Tf 22.71 0 TD[(en)27(vironmen)28(t.)-407(If)-223(the)-224(curren)27(tly)-222(con\014gured)-224(host)-223(matc)27(hes)]TJ -122.37 -13.15 TD[(the)-367(argumen)27(t)-367(string,)-376(the)-367(result)-368(is)]TJ/F4 10.91 Tf 164.12 0 TD[(1)]TJ/F1 10.91 Tf 5.73 0 TD[(;)-384(otherwise)-368(the)-367(result)-368(is)]TJ/F4 10.91 Tf 117.44 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(.)]TJ/F5 10.91 Tf 8.99 0 TD[(host)]TJ/F1 10.91 Tf 24.31 0 TD[(m)27(ust)-366(b)-28(e)-368(a)]TJ -326.32 -13.15 TD[(full)-268(three-part)]TJ/F4 10.91 Tf 69.25 0 TD[(configure)]TJ/F1 10.91 Tf 54.48 0 TD[(host)-268(name;)-290(in)-269(particular,)-281(y)27(ou)-268(ma)27(y)-267(not)-269(use)-268(the)-269(shorter)]TJ -123.73 -13.15 TD[(nic)27(knames)-258(supp)-28(orted)-260(b)27(y)]TJ/F4 10.91 Tf 116.83 0 TD[(configure)]TJ/F1 10.91 Tf 54.38 0 TD[(\(but)-259(y)27(ou)-259(can)-260(use)-259(wildcard)-260(c)27(haracters,)-274(using)]TJ -171.21 -13.15 TD[(shell)-333(syn)27(tax,)-332(to)-334(sp)-27(ecify)-334(sets)-333(of)-334(names\).)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(istarget)-333(")]TJ/F5 10.91 Tf 55.18 0 TD[(target)]TJ/F4 10.91 Tf 28.75 0 TD[(")]TJ/F1 10.91 Tf -26.33 -13.15 TD[(T)83(ests)-437(for)-438(a)-438(particular)]TJ/F8 10.91 Tf 109.01 0 TD[(tar)51(get)]TJ/F1 10.91 Tf 32.72 0 TD[(en)27(vironmen)28(t.)-757(If)-438(the)-437(curren)26(tly)-436(con\014gured)-438(target)]TJ -141.73 -13.15 TD[(matc)27(hes)-374(the)-375(argumen)27(t)-374(string,)-386(the)-375(result)-375(is)]TJ/F4 10.91 Tf 207.28 0 TD[(1)]TJ/F1 10.91 Tf 5.73 0 TD[(;)-396(otherwise)-375(the)-375(result)-375(is)]TJ/F4 10.91 Tf 117.9 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(.)]TJ/F5 10.91 Tf 9.25 0 TD[(target)]TJ/F1 10.91 Tf -345.89 -13.15 TD[(m)27(ust)-384(b)-28(e)-385(a)-385(full)-385(three-part)]TJ/F4 10.91 Tf 124.46 0 TD[(configure)]TJ/F1 10.91 Tf 55.74 0 TD[(target)-385(name;)-410(in)-385(particular,)-398(y)26(ou)-384(ma)27(y)-384(not)]TJ -180.2 -13.15 TD[(use)-340(the)-341(shorter)-341(nic)26(knames)-340(supp)-27(orted)-341(b)26(y)]TJ/F4 10.91 Tf 194.47 0 TD[(configure)]TJ/F1 10.91 Tf 55.26 0 TD[(\(but)-340(y)26(ou)-340(can)-341(use)-341(wildcard)]TJ -249.73 -13.15 TD[(c)27(haracters,)-356(using)-353(shell)-353(syn)27(tax,)-357(to)-352(sp)-28(ecify)-353(sets)-352(of)-353(names\).)-503(If)-353(it)-352(is)-353(passed)-353(a)]TJ/F4 10.91 Tf 351.49 0 TD[(NULL)]TJ/F1 10.91 Tf -351.49 -13.15 TD[(string,)-333(then)-333(it)-333(returns)-334(the)-333(name)-333(of)-334(the)-333(build)-333(canonical)-334(con\014guration.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(isbuild)-333(")]TJ/F5 10.91 Tf 49.45 0 TD[(host)]TJ/F4 10.91 Tf 20.3 0 TD[(")]TJ/F1 10.91 Tf -12.15 -13.15 TD[(T)83(ests)-356(for)-357(a)-357(particular)]TJ/F8 10.91 Tf 105.48 0 TD[(build)-379(host)]TJ/F1 10.91 Tf 50.88 0 TD[(en)27(vironmen)28(t.)-514(If)-357(the)-356(curren)26(tly)-356(con\014gured)-356(host)]TJ -156.36 -13.15 TD[(matc)27(hes)-423(the)-424(argumen)26(t)-423(string,)-447(the)-425(result)-424(is)]TJ/F4 10.91 Tf 211.17 0 TD[(1)]TJ/F1 10.91 Tf 5.73 0 TD[(;)-469(otherwise)-425(the)-424(result)-425(is)]TJ/F4 10.91 Tf 120.85 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(.)]TJ/F5 10.91 Tf 10.86 0 TD[(host)]TJ/F1 10.91 Tf -354.34 -13.15 TD[(m)27(ust)-445(b)-27(e)-446(a)-446(full)-446(three-part)]TJ/F4 10.91 Tf 127.77 0 TD[(configure)]TJ/F1 10.91 Tf 56.41 0 TD[(host)-445(name;)-502(in)-446(particular,)-474(y)27(ou)-445(ma)27(y)-445(not)]TJ -184.18 -13.15 TD[(use)-340(the)-341(shorter)-341(nic)26(knames)-340(supp)-27(orted)-341(b)26(y)]TJ/F4 10.91 Tf 194.47 0 TD[(configure)]TJ/F1 10.91 Tf 55.26 0 TD[(\(but)-340(y)26(ou)-340(can)-341(use)-341(wildcard)]TJ -249.73 -13.16 TD[(c)27(haracters,)-356(using)-353(shell)-353(syn)27(tax,)-357(to)-352(sp)-28(ecify)-353(sets)-352(of)-353(names\).)-503(If)-353(it)-352(is)-353(passed)-353(a)]TJ/F4 10.91 Tf 351.49 0 TD[(NULL)]TJ/F1 10.91 Tf -351.49 -13.15 TD[(string,)-333(then)-333(it)-333(returns)-334(the)-333(name)-333(of)-334(the)-333(build)-333(canonical)-334(con\014guration.)]TJ 0 -16.14 TD[(item)-376(is3w)27(a)28(y)]TJ/F4 10.91 Tf 60.69 0 TD[(")]TJ/F5 10.91 Tf 5.73 0 TD[(host)]TJ/F4 10.91 Tf 20.3 0 TD[(")]TJ/F1 10.91 Tf 9.83 0 TD[(T)83(ests)-375(for)-377(a)-376(canadian)-376(cross.)-574(This)-376(is)-376(when)-376(the)-377(tests)-376(will)-376(b)-28(e)]TJ -96.55 -13.15 TD[(run)-279(on)-279(a)-279(remotly)-280(hosted)-279(cross)-279(compiler.)-427(If)-279(it)-280(is)-279(a)-279(canadian)-279(cross,)-291(then)-279(the)-279(result)]TJ 0 -13.15 TD[(is)]TJ/F4 10.91 Tf 10.97 0 TD[(1)]TJ/F1 10.91 Tf 5.73 0 TD[(;)-333(otherwise)-333(the)-333(result)-334(is)]TJ/F4 10.91 Tf 115.39 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(.)]TJ/F4 10.91 Tf -195.42 -22.11 TD[(isnative)]TJ/F1 10.91 Tf 57.6 0 TD[(T)83(ests)-296(whether)-296(the)-297(curren)27(t)-296(con\014guration)-296(has)-297(the)-297(same)-296(host)-297(and)-297(target.)-432(When)-296(it)]TJ 0 -13.15 TD[(runs)-365(in)-365(a)]TJ/F8 10.91 Tf 47.19 0 TD[(native)]TJ/F1 10.91 Tf 33.52 0 TD[(con\014guration)-365(this)-365(pro)-27(cedure)-365(returns)-365(a)]TJ/F4 10.91 Tf 186.54 0 TD[(1)]TJ/F1 10.91 Tf 5.73 0 TD[(;)-380(otherwise)-365(it)-365(returns)]TJ -272.98 -13.16 TD[(a)]TJ/F4 10.91 Tf 9.09 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(.)]TJ/F4 10.91 Tf -72.42 -22.11 TD[(load_lib)-333(")]TJ/F5 10.91 Tf 55.18 0 TD[(library-\014le)]TJ/F4 10.91 Tf 50.07 0 TD[(")]TJ/F1 10.91 Tf -47.65 -13.15 TD[(Loads)-500(the)-500(\014le)]TJ/F5 10.91 Tf 73.55 0 TD[(library-\014le)]TJ/F1 10.91 Tf 55.52 0 TD[(b)27(y)-499(searc)27(hing)-499(a)-500(\014xed)-500(path)-500(built)-500(in)27(to)]TJ/F4 10.91 Tf 184.63 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(.)-944(If)]TJ -353.79 -13.15 TD[(DejaGn)27(u)-264(has)-265(b)-27(een)-265(installed,)-279(it)-265(lo)-27(oks)-265(in)-265(a)-265(path)-265(starting)-265(with)-265(the)-265(installed)-265(library)]TJ 0 -13.15 TD[(directory)83(.)-428(If)-286(y)27(ou)-285(are)-285(running)-286(DejaGn)26(u)-284(directly)-286(from)-286(a)-286(source)-286(directory)83(,)-295(without)]TJ 0 -13.16 TD[(\014rst)-440(running)-441(`)]TJ/F4 10.91 Tf 68.53 0 TD[(make)-333(install)]TJ/F1 10.91 Tf 66.63 0 TD[(',)-467(this)-441(path)-441(defaults)-441(to)-441(the)-441(curren)27(t)-440(directory)83(.)-766(In)]TJ -135.16 -13.15 TD[(either)-346(case,)-349(it)-347(then)-346(lo)-28(oks)-346(in)-347(the)-346(curren)27(t)-346(directory)-346(for)-346(a)-347(directory)-346(called)]TJ/F4 10.91 Tf 341.64 0 TD[(lib)]TJ/F1 10.91 Tf 17.18 0 TD[(.)-483(If)]TJ -358.82 -13.15 TD[(there)-411(are)-411(duplicate)-411(de\014nitions,)-431(the)-411(last)-411(one)-411(loaded)-411(tak)27(es)-411(precedence)-411(o)27(v)28(er)-410(the)]TJ 0 -13.15 TD[(earlier)-333(ones.)]TJ/F4 10.91 Tf -57.6 -22.11 TD[(setup_xfail)-333(")]TJ/F5 10.91 Tf 72.36 0 TD[(con\014g)]TJ/F1 10.91 Tf 32.45 0 TD[([)]TJ/F5 10.91 Tf 3.03 0 TD[(bugid)]TJ/F1 10.91 Tf 27.1 0 TD[(])]TJ/F4 10.91 Tf 3.03 0 TD[(")]TJ/F1 10.91 Tf -80.37 -13.15 TD[(Declares)-368(that)-369(the)-369(test)-369(is)-369(exp)-27(ected)-369(to)-369(fail)-369(on)-369(a)-369(particular)-369(set)-368(of)-369(con\014gurations.)]TJ 0 -13.16 TD[(The)]TJ/F5 10.91 Tf 22.64 0 TD[(con\014g)]TJ/F1 10.91 Tf 32.67 0 TD[(argumen)27(t)-352(m)27(ust)-352(b)-28(e)-353(a)-353(list)-353(of)-353(full)-353(three-part)]TJ/F4 10.91 Tf 202.84 0 TD[(configure)]TJ/F1 10.91 Tf 55.4 0 TD[(target)-353(name;)]TJ -313.55 -13.15 TD[(in)-325(particular,)-328(y)27(ou)-325(ma)27(y)-325(not)-326(use)-326(the)-326(shorter)-326(nic)27(knames)-325(supp)-28(orted)-326(b)27(y)]TJ/F4 10.91 Tf 322.86 0 TD[(configure)]TJ/F1 10.91 Tf -322.86 -13.15 TD[(\(but)-241(y)27(ou)-240(can)-241(use)-241(the)-241(common)-241(shell)-241(wildcard)-241(c)27(haracters)-241(to)-241(sp)-27(ecify)-241(sets)-241(of)-242(names\).)]TJ 0 -13.15 TD[(The)]TJ/F5 10.91 Tf 22.81 0 TD[(bugid)]TJ/F1 10.91 Tf 31.11 0 TD[(argumen)27(t)-367(is)-369(optional,)-377(and)-368(used)-369(only)-368(in)-369(the)-368(logging)-369(\014le)-368(output;)-386(use)]TJ -53.92 -13.15 TD[(it)-320(as)-320(a)-320(link)-320(to)-320(a)-320(bug-trac)27(king)-319(system)-320(suc)26(h)-319(as)]TJ/F7 10.91 Tf 213.74 0 TD[(gna)66(ts)]TJ/F1 10.91 Tf 34.58 0 TD[(\(see)-320(section)-320(\\Ov)27(erview")-319(in)]TJ/F5 10.91 Tf -248.32 -13.15 TD[(T)83(rac)28(king)-333(Bugs)-333(With)-333(GNA)82(TS)]TJ/F1 10.91 Tf 139.14 0 TD[(\).)]TJ ET 0 g 0 G -endstream -endobj -150 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F5 31 0 R -/F8 52 0 R -/F7 49 0 R ->> -endobj -148 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 150 0 R ->> -endobj -153 0 obj -<< -/Length 9059 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(26)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 57.6 -23.91 TD[(Once)-391(y)27(ou)-391(use)]TJ/F4 10.91 Tf 69.23 0 TD[(setup_xfail)]TJ/F1 10.91 Tf 63 0 TD[(,)-405(the)]TJ/F4 10.91 Tf 26.88 0 TD[(fail)]TJ/F1 10.91 Tf 27.18 0 TD[(and)]TJ/F4 10.91 Tf 21.85 0 TD[(pass)]TJ/F1 10.91 Tf 27.18 0 TD[(pro)-27(cedures)-392(pro)-27(duce)-392(the)-391(mes-)]TJ -235.32 -13.15 TD[(sages)-463(`)]TJ/F4 10.91 Tf 32.45 0 TD[(XFAIL)]TJ/F1 10.91 Tf 28.64 0 TD[(')-463(and)-464(`)]TJ/F4 10.91 Tf 33.75 0 TD[(XPASS)]TJ/F1 10.91 Tf 28.64 0 TD[(')-463(resp)-28(ectiv)27(ely)83(,)-495(allo)27(wing)-463(y)27(ou)-463(to)-464(distinguish)-464(exp)-27(ected)]TJ -123.48 -13.15 TD[(failures)-333(\(and)-333(unexp)-28(ected)-333(success!\))-445(from)-333(other)-333(test)-334(outcomes.)]TJ/F8 10.91 Tf 0 -16.14 TD[(Warning:)]TJ/F1 10.91 Tf 50.18 0 TD[(y)27(ou)-267(m)27(ust)-267(clear)-268(the)-268(exp)-28(ected)-268(failure)-268(after)-268(using)]TJ/F4 10.91 Tf 220.27 0 TD[(setup_xfail)]TJ/F1 10.91 Tf 65.92 0 TD[(in)-268(a)-268(test)]TJ -336.37 -13.15 TD[(case.)-438(An)27(y)-314(call)-315(to)]TJ/F4 10.91 Tf 83.33 0 TD[(pass)]TJ/F1 10.91 Tf 26.35 0 TD[(or)]TJ/F4 10.91 Tf 13.16 0 TD[(fail)]TJ/F1 10.91 Tf 26.35 0 TD[(clears)-314(the)-315(exp)-28(ected)-315(failure)-315(implicitly;)-321(if)-315(the)-315(test)]TJ -149.19 -13.15 TD[(has)-359(some)-360(other)-360(outcome,)-366(e.g.)-524(an)-359(error,)-367(y)27(ou)-359(can)-359(call)]TJ/F4 10.91 Tf 252.33 0 TD[(clear_xfail)]TJ/F1 10.91 Tf 66.92 0 TD[(to)-359(clear)-360(the)]TJ -319.25 -13.16 TD[(exp)-27(ected)-363(failure)-362(explicitly)82(.)-531(Otherwise,)-370(the)-362(exp)-28(ected-failure)-363(declaration)-362(applies)]TJ 0 -13.15 TD[(to)-333(whatev)27(er)-332(test)-334(runs)-333(next,)-333(leading)-334(to)-333(surprising)-333(results.)]TJ/F4 10.91 Tf -57.6 -22.11 TD[(clear_xfail)]TJ/F5 10.91 Tf 66.64 0 TD[(con\014g)]TJ/F1 10.91 Tf -9.04 -13.15 TD[(Cancel)-258(an)-258(exp)-28(ected)-258(failure)-258(\(previously)-258(declared)-258(with)]TJ/F4 10.91 Tf 248.65 0 TD[(setup_xfail)]TJ/F1 10.91 Tf 63 0 TD[(\))-258(for)-258(a)-258(partic-)]TJ -311.65 -13.15 TD[(ular)-323(set)-324(of)-324(con\014gurations.)-441(The)]TJ/F5 10.91 Tf 148.52 0 TD[(con\014g)]TJ/F1 10.91 Tf 32.35 0 TD[(argumen)27(t)-323(is)-323(a)-324(list)-324(of)-324(con\014guration)-324(target)]TJ -180.87 -13.16 TD[(names.)-745(It)-433(is)-434(only)-433(necessary)-434(to)-433(call)]TJ/F4 10.91 Tf 175.87 0 TD[(clear_xfail)]TJ/F1 10.91 Tf 67.73 0 TD[(if)-433(a)-434(test)-433(case)-434(ends)-433(without)]TJ -243.6 -13.15 TD[(calling)-333(either)]TJ/F4 10.91 Tf 65.49 0 TD[(pass)]TJ/F1 10.91 Tf 26.54 0 TD[(or)]TJ/F4 10.91 Tf 13.36 0 TD[(fail)]TJ/F1 10.91 Tf 22.91 0 TD[(,)-333(after)-333(calling)]TJ/F4 10.91 Tf 67 0 TD[(setup_xfail)]TJ/F1 10.91 Tf 63 0 TD[(.)]TJ/F4 10.91 Tf -315.9 -22.11 TD[(verbose)]TJ/F1 10.91 Tf 43.73 0 TD[([)]TJ/F4 10.91 Tf 3.03 0 TD[(-log)]TJ/F1 10.91 Tf 22.91 0 TD[(])-333([)]TJ/F4 10.91 Tf 9.69 0 TD[(-n)]TJ/F1 10.91 Tf 11.46 0 TD[(])-333([)]TJ/F4 10.91 Tf 9.69 0 TD[(--)]TJ/F1 10.91 Tf 11.46 0 TD[(])]TJ/F4 10.91 Tf 6.67 0 TD[(")]TJ/F5 10.91 Tf 5.72 0 TD[(string)]TJ/F4 10.91 Tf 28.3 0 TD[(")]TJ/F5 10.91 Tf 9.36 0 TD[(n)27(um)28(b)-27(er)]TJ/F1 10.91 Tf -104.42 -13.15 TD[(T)83(est)-452(cases)-452(can)-453(use)-453(this)-452(function)-453(to)-452(issue)-453(helpful)-452(messages)-453(dep)-28(ending)-452(on)-453(the)]TJ 0 -13.15 TD[(n)27(um)28(b)-27(er)-334(of)-333(`)]TJ/F4 10.91 Tf 55.19 0 TD[(--verbose)]TJ/F1 10.91 Tf 51.55 0 TD[(')-333(options)-334(on)-334(the)]TJ/F4 10.91 Tf 78.87 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(command)-333(line.)-446(It)-334(prin)27(ts)]TJ/F5 10.91 Tf 117.7 0 TD[(string)]TJ/F1 10.91 Tf -347.04 -13.16 TD[(if)-455(the)-456(v)54(alue)-454(of)-456(the)-456(v)55(ariable)]TJ/F4 10.91 Tf 137.14 0 TD[(verbose)]TJ/F1 10.91 Tf 45.06 0 TD[(is)-455(higher)-456(than)-456(or)-456(equal)-455(to)-456(the)-456(optional)]TJ/F5 10.91 Tf -182.2 -13.15 TD[(n)27(um)28(b)-27(er)]TJ/F1 10.91 Tf 36.09 0 TD[(.)-473(The)-343(default)-343(v)55(alue)-342(for)]TJ/F5 10.91 Tf 112.58 0 TD[(n)27(um)28(b)-27(er)]TJ/F1 10.91 Tf 40.62 0 TD[(is)-342(1.)-474(Use)-343(the)-343(optional)-343(`)]TJ/F4 10.91 Tf 110.25 0 TD[(-log)]TJ/F1 10.91 Tf 22.91 0 TD[(')-342(argumen)26(t)]TJ -322.45 -13.15 TD[(to)-370(cause)]TJ/F5 10.91 Tf 43.29 0 TD[(string)]TJ/F1 10.91 Tf 32.34 0 TD[(to)-370(alw)27(a)28(ys)-370(b)-27(e)-371(added)-370(to)-370(the)-371(log)-370(\014le,)-379(ev)26(en)-369(if)-370(it)-371(w)27(on't)-369(b)-28(e)-370(prin)26(ted.)]TJ -75.63 -13.15 TD[(Use)-340(the)-341(optional)-340(`)]TJ/F4 10.91 Tf 85.45 0 TD[(-n)]TJ/F1 10.91 Tf 11.45 0 TD[(')-340(argumen)27(t)-340(to)-340(prin)26(t)]TJ/F5 10.91 Tf 96.14 0 TD[(string)]TJ/F1 10.91 Tf 32.01 0 TD[(without)-340(a)-341(trailing)-340(newline.)-466(Use)]TJ -225.05 -13.15 TD[(the)-333(optional)-333(`)]TJ/F4 10.91 Tf 64.24 0 TD[(--)]TJ/F1 10.91 Tf 11.46 0 TD[(')-333(argumen)27(t)-332(if)]TJ/F5 10.91 Tf 65.48 0 TD[(string)]TJ/F1 10.91 Tf 31.94 0 TD[(b)-27(egins)-334(with)]TJ/F4 10.91 Tf 58.54 0 TD[(")]TJ/F1 10.91 Tf 5.73 0 TD[(-)]TJ/F4 10.91 Tf 3.64 0 TD[(")]TJ/F1 10.91 Tf 5.72 0 TD[(.)]TJ/F2 13.09 Tf -304.35 -29.89 TD[(5.3.2)-562(Remote)-375(Comm)30(unication)-374(Pro)-31(cedures)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(lib/remote.exp)]TJ/F1 10.91 Tf 80.19 0 TD[(')-432(de\014nes)-433(these)-433(functions,)-458(for)-433(establishing)-433(and)-433(managing)-433(comm)27(unica-)]TJ -98.16 -13.15 TD[(tions:)]TJ/F8 10.91 Tf 14.94 -16.14 TD[(Pr)51(o)51(c)51(e)51(dur)51(es)-469(to)-471(establish)-470(a)-471(c)50(onne)52(ction:)]TJ/F1 10.91 Tf 187.47 0 TD[(Eac)27(h)-454(of)-456(these)-456(pro)-28(cedures)-456(tries)-455(to)-456(establish)-456(the)]TJ -202.41 -13.15 TD[(connection)-338(up)-338(to)-338(three)-339(times)-338(b)-28(efore)-338(returning.)-460(W)83(arnings)-338(\(if)-338(retries)-338(will)-339(con)27(tin)28(ue\))-337(or)-339(errors)]TJ 0 -13.15 TD[(\(if)-463(the)-464(attempt)-464(is)-464(abandoned\))-464(rep)-28(ort)-464(on)-463(comm)26(unication)-463(failures.)-836(The)-464(result)-463(for)-464(an)26(y)-462(of)]TJ 0 -13.15 TD[(these)-334(pro)-28(cedures)-335(is)-334(either)]TJ/F4 10.91 Tf 124.88 0 TD[(-1)]TJ/F1 10.91 Tf 11.45 0 TD[(,)-335(when)-334(the)-335(connection)-335(cannot)-334(b)-28(e)-335(established,)-335(or)-334(the)-335(spa)27(wn)-334(ID)]TJ -136.33 -13.15 TD[(returned)-333(b)27(y)-332(the)]TJ/F4 10.91 Tf 78.24 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(command)]TJ/F4 10.91 Tf 49.7 0 TD[(spawn)]TJ/F1 10.91 Tf 28.64 0 TD[(.)]TJ -179.64 -16.14 TD[(It)-295(use)-295(the)-295(v)55(alue)-295(of)-295(the)]TJ/F4 10.91 Tf 106.35 0 TD[(connect)]TJ/F1 10.91 Tf 43.32 0 TD[(\014eld)-295(in)-295(the)]TJ/F4 10.91 Tf 53.9 0 TD[(target_info)]TJ/F1 10.91 Tf 66.22 0 TD[(arra)27(y)-294(\(w)27(as)]TJ/F4 10.91 Tf 52.92 0 TD[(connectmode)]TJ/F1 10.91 Tf 66.22 0 TD[(as)-295(the)]TJ -403.87 -13.15 TD[(t)27(yp)-26(e)-414(of)-413(connection)-413(to)-413(mak)26(e.)-683(Curren)27(t)-412(supp)-28(orted)-413(connection)-413(t)26(yp)-26(es)-414(are)-413(tip,)-433(k)27(ermit,)-432(telnet,)]TJ 0 -13.15 TD[(rsh,)-411(rlogin,)-412(and)-396(netdata.)-633(If)-396(the)]TJ/F4 10.91 Tf 156.25 0 TD[(--reboot)]TJ/F1 10.91 Tf 50.14 0 TD[(option)-396(w)27(as)-395(used)-396(on)-396(the)-396(run)26(test)-395(command)-396(line,)]TJ -206.39 -13.15 TD[(then)-333(the)-333(target)-333(is)-334(reb)-28(o)-27(oted)-334(b)-28(efore)-333(the)-333(connection)-334(is)-333(made.)]TJ/F4 10.91 Tf 0 -22.12 TD[(remote_open)]TJ/F5 10.91 Tf 66.64 0 TD[(t)27(yp)-26(e)]TJ/F8 10.91 Tf -9.04 -13.15 TD[(R)51(emote)-430(Conne)50(ction)-430(Pr)50(o)51(c)51(e)51(dur)51(e.)]TJ/F1 10.91 Tf 155.43 0 TD[(This)-412(is)-413(passed)]TJ/F8 10.91 Tf 73.15 0 TD[(host)]TJ/F1 10.91 Tf 24.77 0 TD[(or)]TJ/F8 10.91 Tf 14.24 0 TD[(tar)51(get)]TJ/F1 10.91 Tf 26.9 0 TD[(.)-682(Host)-413(or)-413(target)]TJ -294.49 -13.15 TD[(refers)-344(to)-345(whether)-344(it)-345(is)-345(a)-344(connection)-345(to)-345(a)-344(remote)-345(target,)-347(or)-345(a)-345(remote)-344(host.)-479(This)]TJ 0 -13.15 TD[(op)-27(ens)-379(the)-379(connection)-378(to)-379(the)-379(desired)-378(target)-379(or)-379(host)-378(using)-379(the)-379(default)-378(v)54(alues)-377(in)]TJ 0 -13.15 TD[(the)-270(con\014guration)-271(system.)-424(It)-270(returns)-271(that)]TJ/F4 10.91 Tf 194.81 0 TD[(spawn_id)]TJ/F1 10.91 Tf 48.78 0 TD[(of)-270(the)-271(pro)-28(cess)-271(that)-270(manages)]TJ -243.59 -13.15 TD[(the)-350(connection.)-497(This)-351(v)55(alue)-350(can)-350(b)-28(e)-351(used)-351(in)]TJ/F4 10.91 Tf 205.05 0 TD[(expect)]TJ/F1 10.91 Tf 38.19 0 TD[(or)]TJ/F4 10.91 Tf 13.55 0 TD[(exp_send)]TJ/F1 10.91 Tf 49.65 0 TD[(statemen)27(ts,)-354(or)]TJ -306.44 -13.15 TD[(passed)-282(to)-282(other)-282(pro)-28(cedures)-282(that)-282(need)-282(the)-282(connection)-283(pro)-27(cess's)-282(id.)-428(This)-282(also)-282(sets)]TJ 0 -13.16 TD[(the)]TJ/F4 10.91 Tf 18.79 0 TD[(fileid)]TJ/F1 10.91 Tf 38 0 TD[(\014eld)-333(in)-333(the)]TJ/F4 10.91 Tf 55.15 0 TD[(target_info)]TJ/F1 10.91 Tf 66.64 0 TD[(arra)27(y)84(.)]TJ ET 0 g 0 G -endstream -endobj -154 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F8 52 0 R -/F5 31 0 R -/F2 12 0 R ->> -endobj -152 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 154 0 R ->> -endobj -157 0 obj -<< -/Length 8999 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(27)]TJ/F4 10.91 Tf 0 -23.91 TD[(remote_close)]TJ/F5 10.91 Tf 72.36 0 TD[(shellid)]TJ/F8 10.91 Tf -14.76 -13.15 TD[(shel)-51(lid)]TJ/F1 10.91 Tf 35.06 0 TD[(is)-350(v)55(alue)-350(returned)-350(b)27(y)-349(a)-351(call)-350(to)]TJ/F4 10.91 Tf 142.32 0 TD[(remote_open)]TJ/F1 10.91 Tf 63 0 TD[(.)-495(This)-350(closes)-350(the)-351(connection)]TJ -240.38 -13.15 TD[(to)-301(the)-302(target)-302(so)-302(resources)-301(can)-302(b)-28(e)-302(used)-302(b)27(y)-301(others.)-433(This)-302(parameter)-302(can)-302(b)-28(e)-301(left)-302(o\013)]TJ 0 -13.15 TD[(if)-333(the)]TJ/F4 10.91 Tf 28.79 0 TD[(fileid)]TJ/F1 10.91 Tf 38 0 TD[(\014eld)-333(in)-333(the)]TJ/F4 10.91 Tf 55.15 0 TD[(target_info)]TJ/F1 10.91 Tf 66.64 0 TD[(arra)27(y)-332(is)-333(set.)]TJ/F4 10.91 Tf -246.18 -22.12 TD[(telnet)]TJ/F5 10.91 Tf 38 0 TD[(hostname)-389(p)-28(ort)]TJ/F4 10.91 Tf -38 -13.15 TD[(rlogin)]TJ/F5 10.91 Tf 38 0 TD[(hostname)]TJ/F4 10.91 Tf -38 -13.15 TD[(rsh)]TJ/F5 10.91 Tf 20.82 0 TD[(hostname)]TJ/F8 10.91 Tf 36.78 -13.15 TD[(IP)-283(network)-284(pr)50(o)51(c)51(e)51(dur)51(es.)]TJ/F5 10.91 Tf 111.43 0 TD[(hostname)]TJ/F1 10.91 Tf 48.89 0 TD[(refers)-253(to)-253(the)-253(IP)-253(address)-253(or)-253(name)-253(\(for)-253(example,)]TJ -160.32 -13.15 TD[(an)-263(en)27(try)-263(in)-263(`)]TJ/F4 10.91 Tf 57.14 0 TD[(/etc/hosts)]TJ/F1 10.91 Tf 57.27 0 TD[('\))-263(for)-264(this)-263(target.)-421(The)-264(pro)-28(cedure)-263(names)-264(re\015ect)-263(the)-264(Unix)]TJ -114.41 -13.16 TD[(utilit)27(y)-338(used)-340(to)-340(establish)-339(a)-340(connection.)-464(The)-339(optional)]TJ/F5 10.91 Tf 249.36 0 TD[(p)-27(ort)]TJ/F1 10.91 Tf 24.28 0 TD[(is)-339(used)-340(to)-340(sp)-27(ecify)-340(the)]TJ -273.64 -13.15 TD[(IP)-383(p)-28(ort)-384(n)27(um)28(b)-27(er.)-596(The)-383(v)54(alue)-383(of)-383(the)]TJ/F4 10.91 Tf 169.71 0 TD[(netport)]TJ/F1 10.91 Tf 44.27 0 TD[(\014eld)-383(in)-384(the)]TJ/F4 10.91 Tf 56.81 0 TD[(target_info)]TJ/F1 10.91 Tf 67.18 0 TD[(arra)27(y)-382(is)]TJ -337.97 -13.15 TD[(used.)-712(\(w)26(as)]TJ/F4 10.91 Tf 58.27 0 TD[($netport)]TJ/F1 10.91 Tf 45.82 0 TD[(\))-422(This)-423(v)54(alue)-421(has)-423(t)26(w)28(o)-422(parts,)-445(the)-423(hostname)-423(and)-422(the)-423(p)-28(ort)]TJ -104.09 -13.15 TD[(n)27(um)28(b)-27(er,)-297(sep)-28(erated)-288(b)27(y)-287(a)]TJ/F8 10.91 Tf 114.01 0 TD[(:)]TJ/F1 10.91 Tf 3.35 0 TD[(.)-429(If)]TJ/F4 10.91 Tf 18.13 0 TD[(host)]TJ/F1 10.91 Tf 26.05 0 TD[(or)]TJ/F4 10.91 Tf 12.87 0 TD[(target)]TJ/F1 10.91 Tf 37.51 0 TD[(is)-288(used)-288(in)-288(the)]TJ/F4 10.91 Tf 65.43 0 TD[(hostname)]TJ/F1 10.91 Tf 48.96 0 TD[(\014eld,)-297(than)]TJ -326.31 -13.15 TD[(the)-333(con\014g)-333(arra)27(y)-333(is)-333(used)-333(for)-334(all)-333(information.)]TJ/F4 10.91 Tf -57.6 -22.11 TD[(tip)]TJ/F5 10.91 Tf 20.82 0 TD[(p)-27(ort)]TJ/F8 10.91 Tf 36.78 0 TD[(Serial)-314(line)-315(pr)50(o)51(c)51(e)51(dur)51(e.)]TJ/F1 10.91 Tf 103.69 0 TD[(Connect)-286(using)-287(the)-287(Unix)-287(utilit)27(y)]TJ/F4 10.91 Tf 147.22 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(.)]TJ/F5 10.91 Tf 7.71 0 TD[(p)-27(ort)]TJ/F1 10.91 Tf 23.7 0 TD[(m)27(ust)-286(b)-27(e)-287(a)-287(name)]TJ -299.5 -13.16 TD[(from)-300(the)]TJ/F4 10.91 Tf 43.85 0 TD[(tip)]TJ/F1 10.91 Tf 20.46 0 TD[(con\014guration)-300(\014le)-300(`)]TJ/F4 10.91 Tf 85.98 0 TD[(/etc/remote)]TJ/F1 10.91 Tf 63 0 TD[('.)-433(Often,)-307(this)-300(is)-300(called)-301(`)]TJ/F4 10.91 Tf 109.23 0 TD[(hardwire)]TJ/F1 10.91 Tf 45.82 0 TD[(',)]TJ -368.34 -13.15 TD[(or)-301(something)-301(lik)27(e)-300(`)]TJ/F4 10.91 Tf 87.52 0 TD[(ttya)]TJ/F1 10.91 Tf 22.91 0 TD[('.)-433(This)-301(\014le)-302(holds)-301(all)-301(the)-301(con\014guration)-301(data)-301(for)-302(the)-301(serial)]TJ -110.43 -13.15 TD[(p)-27(ort.)-677(The)-410(v)54(alue)-409(of)-411(the)]TJ/F4 10.91 Tf 115.94 0 TD[(serial)]TJ/F1 10.91 Tf 38.84 0 TD[(\014eld)-410(in)-411(the)]TJ/F4 10.91 Tf 57.68 0 TD[(target_info)]TJ/F1 10.91 Tf 67.48 0 TD[(arra)27(y)-409(is)-411(used.)-676(\(w)26(as)]TJ/F4 10.91 Tf -279.94 -13.15 TD[($serialport)]TJ/F1 10.91 Tf 63 0 TD[(\))-289(If)]TJ/F4 10.91 Tf 17.84 0 TD[(host)]TJ/F1 10.91 Tf 26.06 0 TD[(or)]TJ/F4 10.91 Tf 12.89 0 TD[(target)]TJ/F1 10.91 Tf 37.53 0 TD[(is)-289(used)-290(in)-290(the)]TJ/F4 10.91 Tf 65.49 0 TD[(port)]TJ/F1 10.91 Tf 26.07 0 TD[(\014eld,)-298(than)-290(the)-289(con\014g)-290(arra)27(y)]TJ -248.88 -13.15 TD[(is)-333(used)-333(for)-333(all)-334(information.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(kermit)]TJ/F5 10.91 Tf 38 0 TD[(p)-27(ort)-355(bps)]TJ/F8 10.91 Tf 19.6 -13.15 TD[(Serial)-414(line)-414(pr)50(o)51(c)51(e)51(dur)51(e.)]TJ/F1 10.91 Tf 108.04 0 TD[(Connect)-394(using)-395(the)-395(program)]TJ/F4 10.91 Tf 136.74 0 TD[(kermit)]TJ/F1 10.91 Tf 34.36 0 TD[(.)]TJ/F5 10.91 Tf 9.89 0 TD[(p)-27(ort)]TJ/F1 10.91 Tf 24.88 0 TD[(is)-394(the)-395(device)]TJ -313.91 -13.15 TD[(name,)-299(e.g.)-430(`)]TJ/F4 10.91 Tf 55.84 0 TD[(/dev/ttyb)]TJ/F1 10.91 Tf 51.55 0 TD[('.)]TJ/F5 10.91 Tf 10.75 0 TD[(bps)]TJ/F1 10.91 Tf 20.05 0 TD[(is)-291(the)-291(line)-291(sp)-28(eed)-291(to)-291(use)-291(\(in)-291(bits)-291(p)-28(er)-291(second\))-291(for)-291(the)]TJ -138.19 -13.15 TD[(connection.)-644(The)-400(v)54(alue)-399(of)-400(the)]TJ/F4 10.91 Tf 145.7 0 TD[(serial)]TJ/F1 10.91 Tf 38.73 0 TD[(\014eld)-400(in)-400(the)]TJ/F4 10.91 Tf 57.33 0 TD[(target_info)]TJ/F1 10.91 Tf 67.37 0 TD[(arra)27(y)-399(is)-400(used.)]TJ -309.13 -13.15 TD[(\(w)27(as)]TJ/F4 10.91 Tf 24.98 0 TD[($serialport)]TJ/F1 10.91 Tf 63 0 TD[(\))-311(If)]TJ/F4 10.91 Tf 18.32 0 TD[(host)]TJ/F1 10.91 Tf 26.31 0 TD[(or)]TJ/F4 10.91 Tf 13.13 0 TD[(target)]TJ/F1 10.91 Tf 37.76 0 TD[(is)-311(used)-312(in)-312(the)]TJ/F4 10.91 Tf 66.46 0 TD[(port)]TJ/F1 10.91 Tf 26.31 0 TD[(\014eld,)-316(than)-311(the)-312(con\014g)]TJ -276.27 -13.15 TD[(arra)27(y)-332(is)-333(used)-334(for)-333(all)-333(information.)]TJ/F8 10.91 Tf -57.6 -19.13 TD[(Pr)51(o)51(c)51(e)51(dur)51(es)-357(to)-357(manage)-358(a)-358(c)50(onne)51(ction:)]TJ/F4 10.91 Tf 0 -22.11 TD[(tip_download)]TJ/F5 10.91 Tf 72.36 0 TD[(spa)27(wnid)-371(\014le)]TJ/F1 10.91 Tf -14.76 -13.15 TD[(Do)27(wnload)-271(`)]TJ/F5 10.91 Tf 53.42 0 TD[(\014le)]TJ/F1 10.91 Tf 14.55 0 TD[(')-271(to)-272(the)-272(pro)-28(cess)]TJ/F5 10.91 Tf 74.14 0 TD[(spa)27(wnid)]TJ/F1 10.91 Tf 41.94 0 TD[(\(the)-271(v)54(alue)-271(returned)-272(when)-272(the)-272(connection)]TJ -184.05 -13.16 TD[(w)27(as)-453(established\),)-485(using)-455(the)]TJ/F4 10.91 Tf 137.08 0 TD[(~put)]TJ/F1 10.91 Tf 27.86 0 TD[(command)-454(under)]TJ/F4 10.91 Tf 83.28 0 TD[(tip)]TJ/F1 10.91 Tf 17.19 0 TD[(.)-808(Most)-454(often)-455(used)-454(for)]TJ -265.41 -13.15 TD[(single)-334(b)-28(oard)-335(computers)-335(that)-335(require)-335(do)27(wnloading)-334(programs)-335(in)]TJ/F7 10.91 Tf 298.99 0 TD[(asci)-22(i)]TJ/F1 10.91 Tf 28.62 0 TD[(S-records.)]TJ -327.61 -13.15 TD[(Returns)]TJ/F4 10.91 Tf 41.45 0 TD[(1)]TJ/F1 10.91 Tf 9.37 0 TD[(if)-333(an)-333(error)-333(o)-28(ccurs,)]TJ/F4 10.91 Tf 88.67 0 TD[(0)]TJ/F1 10.91 Tf 9.36 0 TD[(otherwise.)]TJ/F4 10.91 Tf -206.45 -22.11 TD[(exit_remote_shell)]TJ/F5 10.91 Tf 101 0 TD[(spa)27(wnid)]TJ/F1 10.91 Tf -43.4 -13.15 TD[(Exits)-376(a)-377(remote)-377(pro)-28(cess)-376(started)-377(b)27(y)-376(an)27(y)-376(of)-377(the)-376(connection)-377(pro)-28(cedures.)]TJ/F5 10.91 Tf 335.85 0 TD[(spa)27(wnid)]TJ/F1 10.91 Tf -335.85 -13.16 TD[(is)-333(the)-333(result)-333(of)-334(the)-333(connection)-333(pro)-28(cedure)-334(that)-333(started)-333(the)-334(remote)-333(pro)-28(cess.)]TJ/F4 10.91 Tf -57.6 -22.11 TD[(download)]TJ/F5 10.91 Tf 49.45 0 TD[(\014le)]TJ/F1 10.91 Tf 18.19 0 TD[([)]TJ/F5 10.91 Tf 6.67 0 TD[(spa)27(wnid)]TJ/F1 10.91 Tf 42.61 0 TD[(])]TJ -59.32 -13.15 TD[(After)-308(y)27(ou)-307(establish)-308(a)-308(connection)-309(to)-308(a)-308(target,)-313(y)27(ou)-308(can)-308(do)27(wnload)-307(programs)-308(using)]TJ 0 -13.15 TD[(this)-436(command.)]TJ/F4 10.91 Tf 79.73 0 TD[(download)]TJ/F1 10.91 Tf 50.59 0 TD[(reads)-436(in)]TJ/F5 10.91 Tf 43.56 0 TD[(\014le)]TJ/F1 10.91 Tf 19.32 0 TD[(\(ob)-55(ject)-437(co)-28(de)-437(in)-437(S-record)-437(format\))-437(and)]TJ -193.2 -13.15 TD[(writes)-325(it)-325(to)-325(the)-325(device)-326(con)27(trolling)-324(this)]TJ/F5 10.91 Tf 183.2 0 TD[(spa)27(wnid)]TJ/F1 10.91 Tf 38.55 0 TD[(.)-441(\(F)82(rom)-324(the)-325(p)-28(oin)27(t)-325(of)-325(view)-325(of)-325(the)]TJ -221.75 -13.16 TD[(target,)-333(the)-333(S-record)-333(\014le)-334(comes)-333(in)-333(via)-334(standard)-333(input.\))]TJ 0 -16.13 TD[(If)-419(y)27(ou)-418(ha)26(v)28(e)-418(more)-419(than)-420(one)-419(target)-419(activ)26(e,)-439(y)26(ou)-418(can)-419(use)-420(the)-419(optional)-419(argumen)26(t)]TJ/F5 10.91 Tf 0 -13.16 TD[(spa)27(wnid)]TJ/F1 10.91 Tf 42.15 0 TD[(to)-291(sp)-27(ecify)-292(an)-291(alternativ)27(e)-290(target)-292(\(the)-291(default)-291(is)-291(the)-291(most)-292(recen)27(tly)-290(estab-)]TJ -42.15 -13.15 TD[(lished)]TJ/F5 10.91 Tf 30.97 0 TD[(spa)27(wnid)]TJ/F1 10.91 Tf 38.55 0 TD[(.\))]TJ ET 0 g 0 G -endstream -endobj -158 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F5 31 0 R -/F8 52 0 R -/F7 49 0 R ->> -endobj -156 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 158 0 R ->> -endobj -161 0 obj -<< -/Length 7101 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(28)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 13.09 Tf 0 -23.91 TD[(5.3.3)-562(Utilit)30(y)-374(Pro)-31(cedures)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(lib/utils.exp)]TJ/F1 10.91 Tf 74.46 0 TD[(')-333(de\014nes)-333(these)-333(utilit)26(y)-332(pro)-28(cedures:)]TJ/F4 10.91 Tf -92.43 -22.11 TD[(getdirs)]TJ/F5 10.91 Tf 43.73 0 TD[(dir)]TJ/F4 10.91 Tf -43.73 -13.15 TD[(getdirs)]TJ/F5 10.91 Tf 43.73 0 TD[(dir)-405(pattern)]TJ/F1 10.91 Tf 13.87 -13.15 TD[(Returns)-237(a)-238(list)-238(of)-238(all)-238(the)-238(directories)-238(in)-238(the)-238(single)-238(directory)]TJ/F5 10.91 Tf 264.86 0 TD[(dir)]TJ/F1 10.91 Tf 16.74 0 TD[(that)-237(matc)26(h)]TJ/F5 10.91 Tf 54.59 0 TD[(pattern)]TJ/F1 10.91 Tf 35.18 0 TD[(.)]TJ -371.37 -13.16 TD[(If)-341(y)27(ou)-340(do)-341(not)-341(sp)-28(ecify)]TJ/F5 10.91 Tf 102.6 0 TD[(pattern)]TJ/F1 10.91 Tf 35.18 0 TD[(,)]TJ/F4 10.91 Tf 6.77 0 TD[(getdirs)]TJ/F1 10.91 Tf 43.82 0 TD[(assumes)-341(`)]TJ/F4 10.91 Tf 45.11 0 TD[(*)]TJ/F1 10.91 Tf 5.73 0 TD[('.)-467(Y)82(ou)-340(ma)27(y)-340(use)-341(the)-341(common)]TJ -239.21 -13.15 TD[(shell)-358(wildcard)-359(c)26(haracters)-358(in)]TJ/F5 10.91 Tf 134.97 0 TD[(pattern)]TJ/F1 10.91 Tf 35.18 0 TD[(.)-521(If)-359(no)-359(directories)-359(matc)27(h)-358(the)-359(pattern,)-365(then)]TJ -170.15 -13.15 TD[(a)]TJ/F4 10.91 Tf 9.09 0 TD[(NULL)]TJ/F1 10.91 Tf 26.55 0 TD[(string)-333(is)-333(returned.)]TJ/F4 10.91 Tf -93.24 -22.11 TD[(find)]TJ/F5 10.91 Tf 26.55 0 TD[(dir)-405(pattern)]TJ/F1 10.91 Tf 31.05 -13.15 TD[(Searc)27(h)-453(for)-455(\014les)-455(whose)-455(names)-455(matc)27(h)]TJ/F5 10.91 Tf 180.01 0 TD[(pattern)]TJ/F1 10.91 Tf 40.14 0 TD[(\(using)-454(shell)-455(wildcard)-455(c)27(haracters)]TJ -220.15 -13.15 TD[(for)-336(\014lename)-337(expansion\).)-456(Searc)27(h)-336(sub)-28(directories)-336(recursiv)26(ely)84(,)-337(starting)-337(at)]TJ/F5 10.91 Tf 334.25 0 TD[(dir)]TJ/F1 10.91 Tf 13.37 0 TD[(.)-455(The)]TJ -347.62 -13.16 TD[(result)-452(is)-452(the)-453(list)-452(of)-453(\014les)-452(whose)-452(names)-453(matc)27(h;)-511(if)-452(no)-453(\014les)-452(matc)27(h,)-482(the)-452(result)-452(is)]TJ 0 -13.15 TD[(empt)27(y)84(.)-580(Filenames)-378(in)-379(the)-378(result)-379(include)-379(all)-378(in)26(terv)28(ening)-377(sub)-28(directory)-379(names.)-580(If)]TJ 0 -13.15 TD[(no)-333(\014les)-333(matc)27(h)-333(the)-333(pattern,)-333(then)-334(a)]TJ/F4 10.91 Tf 164.64 0 TD[(NULL)]TJ/F1 10.91 Tf 26.54 0 TD[(string)-333(is)-333(returned.)]TJ/F4 10.91 Tf -248.78 -22.11 TD[(which)]TJ/F5 10.91 Tf 32.27 0 TD[(binary)]TJ/F1 10.91 Tf 25.33 -13.15 TD[(Searc)27(hes)-461(the)-463(execution)-463(path)-462(for)-463(an)-462(executable)-463(\014le)]TJ/F5 10.91 Tf 251.41 0 TD[(binary)]TJ/F1 10.91 Tf 30.63 0 TD[(,)-494(lik)26(e)-461(the)-463(the)-463(BSD)]TJ/F4 10.91 Tf -282.04 -13.16 TD[(which)]TJ/F1 10.91 Tf 33.34 0 TD[(utilit)27(y)84(.)-737(This)-431(pro)-28(cedure)-431(uses)-431(the)-431(shell)-431(en)27(vironmen)28(t)-430(v)55(ariable)-430(`)]TJ/F4 10.91 Tf 295.86 0 TD[(PATH)]TJ/F1 10.91 Tf 22.91 0 TD[('.)-737(It)]TJ -352.11 -13.15 TD[(returns)]TJ/F4 10.91 Tf 37.99 0 TD[(0)]TJ/F1 10.91 Tf 9.66 0 TD[(if)-360(the)-360(binary)-361(is)-360(not)-360(in)-361(the)-360(path,)-367(or)-361(if)-360(there)-360(is)-361(no)-360(`)]TJ/F4 10.91 Tf 237.76 0 TD[(PATH)]TJ/F1 10.91 Tf 22.91 0 TD[(')-360(en)27(vironmen)28(t)]TJ -308.32 -13.15 TD[(v)55(ariable.)-443(If)]TJ/F5 10.91 Tf 56.09 0 TD[(binary)]TJ/F1 10.91 Tf 35.21 0 TD[(is)-333(in)-333(the)-333(path,)-334(it)-333(returns)-333(the)-334(full)-333(path)-333(to)]TJ/F5 10.91 Tf 196.24 0 TD[(binary)]TJ/F1 10.91 Tf 30.64 0 TD[(.)]TJ/F4 10.91 Tf -375.78 -22.11 TD[(grep)]TJ/F5 10.91 Tf 26.55 0 TD[(\014lename)-389(regexp)]TJ/F4 10.91 Tf -26.55 -19.13 TD[(grep)]TJ/F5 10.91 Tf 26.55 0 TD[(\014lename)-389(regexp)]TJ/F4 10.91 Tf 78.85 0 TD[(line)]TJ/F1 10.91 Tf -47.8 -13.15 TD[(Searc)27(h)-385(the)-387(\014le)-386(called)]TJ/F5 10.91 Tf 104.47 0 TD[(\014lename)]TJ/F1 10.91 Tf 44.23 0 TD[(\(a)-386(fully)-387(sp)-27(eci\014ed)-387(path\))-386(for)-387(lines)-387(that)-386(con)27(tain)-386(a)]TJ -148.7 -13.15 TD[(matc)27(h)-410(for)-411(regular)-411(expression)]TJ/F5 10.91 Tf 142.72 0 TD[(regexp)]TJ/F1 10.91 Tf 31.24 0 TD[(.)-677(The)-411(result)-411(is)-411(a)-411(list)-411(of)-411(all)-411(the)-411(lines)-411(that)]TJ -173.96 -13.15 TD[(matc)27(h.)-574(If)-377(no)-377(lines)-377(matc)27(h,)-387(the)-377(result)-377(is)-377(an)-377(empt)26(y)-376(string.)-575(Sp)-28(ecify)]TJ/F5 10.91 Tf 313.81 0 TD[(regexp)]TJ/F1 10.91 Tf 35.68 0 TD[(using)]TJ -349.49 -13.15 TD[(the)-333(standard)-333(regular)-333(expression)-334(st)27(yle)-332(used)-334(b)27(y)-332(the)-334(Unix)-333(utilit)27(y)-332(program)]TJ/F4 10.91 Tf 341.39 0 TD[(grep)]TJ/F1 10.91 Tf 22.91 0 TD[(.)]TJ -364.3 -16.14 TD[(Use)-310(the)-311(optional)-311(third)-311(argumen)26(t)-309(`)]TJ/F4 10.91 Tf 160.11 0 TD[(line)]TJ/F1 10.91 Tf 22.91 0 TD[(')-310(to)-311(start)-311(lines)-311(in)-311(the)-311(result)-311(with)-311(the)-311(line)]TJ -183.02 -13.15 TD[(n)27(um)28(b)-27(er)-400(in)]TJ/F5 10.91 Tf 53.91 0 TD[(\014lename)]TJ/F1 10.91 Tf 39.4 0 TD[(.)-645(\(This)-400(argumen)27(t)-399(is)-400(simply)-401(an)-400(option)-400(\015ag;)-434(t)27(yp)-27(e)-400(it)-400(just)-400(as)]TJ -93.31 -13.16 TD[(sho)27(wn|`)]TJ/F4 10.91 Tf 43.39 0 TD[(line)]TJ/F1 10.91 Tf 22.91 0 TD[('.\))]TJ/F4 10.91 Tf -123.9 -22.11 TD[(diff)]TJ/F5 10.91 Tf 26.55 0 TD[(\014lename)-389(\014lename)]TJ/F1 10.91 Tf 31.05 -13.15 TD[(Compares)-373(the)-373(t)27(w)28(o)-372(\014les)-373(and)-373(returns)-373(a)-373(1)-373(if)-373(they)-373(matc)26(h,)-382(or)-373(a)-373(0)-373(if)-373(they)-373(don't.)-563(If)]TJ/F4 10.91 Tf 0 -13.15 TD[(verbose)]TJ/F1 10.91 Tf 43.73 0 TD[(is)-333(set,)-333(then)-333(it'll)-334(prin)27(t)-332(the)-334(di\013erences)-333(to)-333(the)-334(screen.)]TJ/F4 10.91 Tf -101.33 -22.12 TD[(slay)]TJ/F5 10.91 Tf 26.55 0 TD[(name)]TJ/F1 10.91 Tf 31.05 -13.15 TD[(This)-348(lo)-27(ok)-348(in)-349(the)-348(pro)-27(cess)-349(tab)-27(el)-348(for)]TJ/F5 10.91 Tf 163.49 0 TD[(name)]TJ/F1 10.91 Tf 29.86 0 TD[(and)-348(send)-348(it)-348(a)-348(unix)]TJ/F4 10.91 Tf 91.48 0 TD[(SIGINT)]TJ/F1 10.91 Tf 34.36 0 TD[(,)-351(killing)-348(the)]TJ -319.19 -13.15 TD[(pro)-27(cess.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(absolute)]TJ/F5 10.91 Tf 49.45 0 TD[(path)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(This)-333(pro)-28(cedure)-333(tak)27(es)-332(the)-334(relativ)27(e)]TJ/F5 10.91 Tf 161.12 0 TD[(path)]TJ/F1 10.91 Tf 21.82 0 TD[(,)-333(and)-333(con)27(v)27(erts)-332(it)-333(to)-334(an)-333(absolute)-333(path.)]TJ/F4 10.91 Tf -240.54 -22.12 TD[(psource)]TJ/F5 10.91 Tf 43.73 0 TD[(\014lename)]TJ/F1 10.91 Tf 13.87 -13.15 TD[(This)-276(sources)-277(the)-276(\014le)]TJ/F5 10.91 Tf 96.52 0 TD[(\014lename)]TJ/F1 10.91 Tf 39.4 0 TD[(,)-287(and)-277(traps)-277(all)-276(errors.)-426(It)-276(also)-277(ignores)-277(all)-276(extraneous)]TJ -135.92 -13.15 TD[(output.)-444(If)-333(there)-334(w)27(as)-332(an)-333(error)-334(it)-333(returns)-333(a)-334(1,)-333(otherwise)-333(it)-334(returns)-333(a)-333(0.)]TJ ET 0 g 0 G -endstream -endobj -162 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R -/F5 31 0 R ->> -endobj -160 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 162 0 R ->> -endobj -165 0 obj -<< -/Length 6747 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(29)]TJ/F4 10.91 Tf 0 -23.91 TD[(prune)]TJ/F5 10.91 Tf 32.27 0 TD[(list)-355(pattern)]TJ/F1 10.91 Tf 25.33 -13.15 TD[(Remo)27(v)28(e)-386(elemen)27(ts)-386(of)-387(the)-387(Tcl)-387(list)]TJ/F5 10.91 Tf 158.02 0 TD[(list)]TJ/F1 10.91 Tf 14.61 0 TD[(.)-605(Elemen)27(ts)-386(are)-387(\014elds)-387(delimited)-387(b)27(y)-386(spaces.)]TJ -172.63 -13.15 TD[(The)-319(result)-320(is)-319(a)-320(cop)27(y)-319(of)]TJ/F5 10.91 Tf 109.86 0 TD[(list)]TJ/F1 10.91 Tf 14.61 0 TD[(,)-322(without)-319(an)26(y)-318(elemen)26(ts)-318(that)-320(matc)27(h)]TJ/F5 10.91 Tf 168.28 0 TD[(pattern)]TJ/F1 10.91 Tf 35.18 0 TD[(.)-439(Y)82(ou)-319(can)]TJ -327.93 -13.15 TD[(use)-333(the)-333(common)-333(shell)-334(wildcard)-333(c)27(haracters)-333(to)-333(sp)-28(ecify)]TJ/F5 10.91 Tf 251.85 0 TD[(pattern)]TJ/F1 10.91 Tf 35.18 0 TD[(.)]TJ/F4 10.91 Tf -344.63 -22.01 TD[(setenv)]TJ/F5 10.91 Tf 38 0 TD[(v)55(ar)-404(v)55(al)]TJ/F1 10.91 Tf 19.6 -13.15 TD[(Sets)-333(the)-333(v)54(ariable)]TJ/F5 10.91 Tf 82.82 0 TD[(v)55(ar)]TJ/F1 10.91 Tf 19.3 0 TD[(to)-333(the)-333(v)54(alue)]TJ/F5 10.91 Tf 60.3 0 TD[(v)55(al)]TJ/F1 10.91 Tf 13.64 0 TD[(.)]TJ/F4 10.91 Tf -233.66 -22 TD[(unsetenv)]TJ/F5 10.91 Tf 49.45 0 TD[(v)55(ar)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(Unsets)-333(the)-333(en)27(vironmen)27(t)-332(v)55(ariable)]TJ/F5 10.91 Tf 158.06 0 TD[(v)55(ar)]TJ/F4 10.91 Tf -215.66 -22 TD[(getenv)]TJ/F5 10.91 Tf 38 0 TD[(v)55(ar)]TJ/F1 10.91 Tf 19.6 -13.15 TD[(returns)-444(the)-445(v)54(alue)-444(of)]TJ/F5 10.91 Tf 101.96 0 TD[(v)55(ar)]TJ/F1 10.91 Tf 20.52 0 TD[(in)-444(the)-445(en)26(vironmen)28(t)-444(if)-445(it)-445(exists,)-472(otherwise)-445(it)-445(returns)]TJ/F4 10.91 Tf -122.48 -13.15 TD[(NULL)]TJ/F1 10.91 Tf 22.91 0 TD[(.)]TJ/F4 10.91 Tf -80.51 -22 TD[(runtest_file_p)]TJ/F5 10.91 Tf 83.82 0 TD[(run)27(tests)-373(testcase)]TJ/F1 10.91 Tf -26.22 -13.15 TD[(Searc)27(h)]TJ/F5 10.91 Tf 34.88 0 TD[(run)27(tests)]TJ/F1 10.91 Tf 42.13 0 TD[(for)]TJ/F5 10.91 Tf 16.7 0 TD[(testcase)]TJ/F1 10.91 Tf 41.34 0 TD[(and)-333(return)-334(1)-334(if)-334(found,)-334(0)-334(if)-334(not.)]TJ/F5 10.91 Tf 150.12 0 TD[(run)27(tests)]TJ/F1 10.91 Tf 42.12 0 TD[(is)-333(a)-334(list)-334(of)]TJ -327.29 -13.15 TD[(t)27(w)28(o)-327(elemen)26(ts.)-441(The)-329(\014rst)-328(is)-329(the)-328(pathname)-329(of)-328(the)-329(testsuite)-328(exp)-28(ect)-329(script)-328(running.)]TJ 0 -13.15 TD[(The)-317(second)-318(is)-318(a)-317(cop)26(y)-316(of)-318(what)-318(w)27(as)-317(on)-318(the)-317(righ)26(t)-316(side)-318(of)-318(the)]TJ/F4 10.91 Tf 274.86 0 TD[(=)]TJ/F1 10.91 Tf 9.2 0 TD[(if)-317(`)]TJ/F4 10.91 Tf 12.86 0 TD[(foo.exp="...")]TJ/F1 10.91 Tf 74.45 0 TD[(')]TJ -371.37 -13.15 TD[(w)27(as)-358(sp)-28(eci\014ed,)-366(or)-360(an)-359(empt)27(y)-359(string)-359(if)-360(no)-359(suc)26(h)-358(argumen)27(t)-359(is)-359(presen)26(t.)-522(This)-359(is)-360(used)]TJ 0 -13.15 TD[(b)27(y)-332(to)-28(ols)-333(lik)27(e)-333(compilers)-333(where)-333(eac)26(h)-332(testcase)-333(is)-334(a)-333(\014le.)]TJ/F4 10.91 Tf -57.6 -22 TD[(prune_system_crud)]TJ/F5 10.91 Tf 101 0 TD[(system)-333(text)]TJ/F1 10.91 Tf -43.4 -13.16 TD[(F)83(or)-320(system)]TJ/F5 10.91 Tf 55.49 0 TD[(system)]TJ/F1 10.91 Tf 32.55 0 TD[(,)-323(delete)-321(text)-321(the)-321(host)-322(or)-321(target)-321(op)-28(erating)-321(system)-321(migh)27(t)-320(issue)]TJ -88.04 -13.15 TD[(that)-230(will)-230(in)26(terfere)-229(with)-230(pattern)-231(matc)27(hing)-230(of)-230(program)-230(output)-231(in)]TJ/F5 10.91 Tf 291.96 0 TD[(text)]TJ/F1 10.91 Tf 19.09 0 TD[(.)-410(An)-230(example)]TJ -311.05 -13.15 TD[(is)-333(the)-333(message)-333(that)-334(is)-333(prin)27(ted)-333(if)-333(a)-333(shared)-334(library)-333(is)-333(out)-334(of)-333(date.)]TJ/F2 13.09 Tf -57.6 -29.73 TD[(5.3.4)-562(Cross)-375(target)-375(pro)-31(cedure)]TJ/F1 10.91 Tf 14.94 -23.07 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(lib/target.exp)]TJ/F1 10.91 Tf 80.19 0 TD[(')-333(de\014nes)-333(these)-333(utilit)26(y)-332(pro)-28(cedures:)]TJ/F4 10.91 Tf -98.16 -22.01 TD[(push_target)]TJ/F8 10.91 Tf 66.64 0 TD[(name)]TJ/F1 10.91 Tf -9.04 -13.15 TD[(This)-260(mak)27(es)-260(the)-261(target)-261(named)]TJ/F8 10.91 Tf 139.83 0 TD[(name)]TJ/F1 10.91 Tf 29.31 0 TD[(b)-27(e)-261(the)-261(curren)27(t)-260(target)-260(connection.)-421(The)-260(v)54(alue)]TJ -169.14 -13.15 TD[(of)]TJ/F8 10.91 Tf 12.39 0 TD[(name)]TJ/F1 10.91 Tf 30.08 0 TD[(is)-330(an)-331(index)-330(in)27(to)-330(the)]TJ/F4 10.91 Tf 96.27 0 TD[(target_info)]TJ/F1 10.91 Tf 66.6 0 TD[(arra)27(y)-329(and)-331(is)-330(set)-331(in)-330(the)-331(global)-330(con\014g)]TJ -205.34 -13.15 TD[(\014le.)]TJ/F4 10.91 Tf -57.6 -22 TD[(pop_target)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(This)-333(unsets)-333(the)-333(curren)26(t)-332(target)-333(connection.)]TJ/F4 10.91 Tf -57.6 -22 TD[(list_targets)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(This)-333(lists)-333(all)-333(the)-334(supp)-28(orted)-333(targets)-333(for)-334(this)-333(arc)27(hitecture.)]TJ/F4 10.91 Tf -57.6 -22 TD[(push_host)]TJ/F8 10.91 Tf 55.18 0 TD[(name)]TJ/F1 10.91 Tf 2.42 -13.15 TD[(This)-331(mak)27(es)-330(the)-331(host)-331(named)]TJ/F8 10.91 Tf 135.21 0 TD[(name)]TJ/F1 10.91 Tf 30.08 0 TD[(b)-27(e)-331(the)-331(curren)26(t)-330(remote)-331(host)-331(connection.)-444(The)]TJ -165.29 -13.15 TD[(v)55(alue)-350(of)]TJ/F8 10.91 Tf 40.99 0 TD[(name)]TJ/F1 10.91 Tf 30.3 0 TD[(is)-350(an)-351(index)-351(in)27(to)-350(the)]TJ/F4 10.91 Tf 97.38 0 TD[(target_info)]TJ/F1 10.91 Tf 66.82 0 TD[(arra)27(y)-350(and)-350(is)-351(set)-351(in)-351(the)-351(global)]TJ -235.49 -13.15 TD[(con\014g)-333(\014le.)]TJ/F4 10.91 Tf -57.6 -22 TD[(pop_host)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-333(unsets)-333(the)-333(curren)26(t)-332(host)-333(connection.)]TJ 0 -16.1 TD[(This)-344(in)27(v)28(ok)27(es)-343(the)-345(compiler)-344(as)-345(set)-344(b)27(y)]TJ/F4 10.91 Tf 172.34 0 TD[(CC)]TJ/F1 10.91 Tf 15.21 0 TD[(to)-344(compile)-344(the)-345(\014le)]TJ/F8 10.91 Tf 90.18 0 TD[(\014le)]TJ/F1 10.91 Tf 13.94 0 TD[(.)-477(The)-345(default)-344(op-)]TJ -291.67 -13.16 TD[(tions)-273(for)-274(man)27(y)-273(cross)-273(compilation)-274(targets)-274(are)]TJ/F8 10.91 Tf 209.44 0 TD[(guesse)51(d)]TJ/F1 10.91 Tf 38.96 0 TD[(b)27(y)-272(DejaGn)26(u,)-284(and)-274(these)-274(op-)]TJ -248.4 -13.15 TD[(tions)-294(can)-294(b)-27(e)-294(added)-295(to)-294(b)27(y)-293(passing)-294(in)-294(more)-294(parameters)-294(as)-294(argumen)27(ts)-293(to)]TJ/F4 10.91 Tf 331.28 0 TD[(compile)]TJ/F1 10.91 Tf 40.09 0 TD[(.)]TJ -371.37 -13.15 TD[(Optionally)83(,)-365(this)-360(will)-359(also)-360(use)-359(the)-360(v)55(alue)-359(of)-359(the)]TJ/F4 10.91 Tf 219.79 0 TD[(cflags)]TJ/F1 10.91 Tf 38.29 0 TD[(\014eld)-359(in)-359(the)-360(target)-359(con\014g)]TJ ET 0 g 0 G -endstream -endobj -166 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F5 31 0 R -/F2 12 0 R -/F8 52 0 R ->> -endobj -164 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 166 0 R ->> -endobj -169 0 obj -<< -/Length 6552 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(30)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 57.6 -23.91 TD[(arra)27(y)84(.)-463(If)-340(the)-340(host)-340(is)-339(not)-340(the)-340(same)-340(as)-340(the)-339(build)-340(mac)27(hines,)-341(then)-340(then)-340(compiler)-339(is)]TJ 0 -13.15 TD[(run)-333(on)-333(the)-333(remote)-334(host)-333(using)]TJ/F4 10.91 Tf 142.61 0 TD[(execute_anywhere)]TJ/F1 10.91 Tf 91.63 0 TD[(.)]TJ -234.24 -15.82 TD[(This)-370(pro)-27(duces)-370(an)-371(arc)27(hiv)28(e)-369(\014le.)-555(An)27(y)-369(parameters)-370(passed)-370(to)]TJ/F4 10.91 Tf 277.26 0 TD[(archive)]TJ/F1 10.91 Tf 44.13 0 TD[(are)-370(used)-370(in)]TJ -321.39 -13.15 TD[(addition)-453(to)-453(the)-453(default)-453(\015ags.)-803(Optionally)82(,)-482(this)-453(will)-453(also)-453(use)-453(the)-453(v)55(alue)-453(of)-453(the)]TJ/F4 10.91 Tf 0 -13.15 TD[(arflags)]TJ/F1 10.91 Tf 44.99 0 TD[(\014eld)-449(in)-450(the)-449(target)-450(con\014g)-449(arra)27(y)83(.)-792(If)-450(the)-449(host)-450(is)-449(not)-450(the)-449(same)-450(as)-450(the)]TJ -44.99 -13.15 TD[(build)-376(mac)27(hines,)-387(then)-377(then)-376(arc)26(hiv)28(er)-375(is)-377(run)-377(on)-377(the)-376(remote)-377(host)-377(using)]TJ/F4 10.91 Tf 328.58 0 TD[(execute_)]TJ -328.58 -13.15 TD[(anywhere)]TJ/F1 10.91 Tf 45.82 0 TD[(.)]TJ -45.82 -15.81 TD[(This)-325(generates)-326(an)-326(index)-326(for)-326(the)-326(arc)27(hiv)28(e)-325(\014le)-326(for)-326(systems)-326(that)-326(aren't)-326(POSIX)-326(y)27(et.)]TJ 0 -13.15 TD[(An)27(y)-332(parameters)-333(passed)-334(to)]TJ/F4 10.91 Tf 127.82 0 TD[(ranlib)]TJ/F1 10.91 Tf 38 0 TD[(are)-333(used)-333(in)-333(for)-334(the)-333(\015ags.)]TJ/F4 10.91 Tf -223.42 -21.15 TD[(execute_anywhere)]TJ/F8 10.91 Tf 95.27 0 TD[(cmd)-51(line)]TJ/F1 10.91 Tf -37.67 -13.15 TD[(This)-414(executes)-415(the)]TJ/F8 10.91 Tf 89.75 0 TD[(cmd)-51(line)]TJ/F1 10.91 Tf 42.7 0 TD[(on)-414(the)-415(prop)-28(er)-414(host.)-689(This)-414(should)-415(b)-28(e)-414(used)-415(as)-415(a)-414(re-)]TJ -132.45 -13.15 TD[(placemen)27(t)-362(for)-363(the)-363(Tcl)-363(command)]TJ/F4 10.91 Tf 158.01 0 TD[(exec)]TJ/F1 10.91 Tf 26.87 0 TD[(as)-363(this)-363(v)27(ersion)-362(utilizes)-363(the)-363(target)-363(con\014g)]TJ -184.88 -13.15 TD[(info)-281(to)-281(execute)-281(this)-281(command)-281(on)-281(the)-281(build)-281(mac)27(hine)-280(or)-282(a)-281(remote)-281(host.)-427(All)-281(con\014g)]TJ 0 -13.15 TD[(information)-339(for)-339(the)-340(remote)-339(host)-340(m)27(ust)-339(b)-27(e)-340(setup)-339(to)-340(ha)27(v)28(e)-339(this)-339(command)-340(w)27(ork.)-462(If)]TJ 0 -13.15 TD[(this)-285(is)-285(a)-285(canadian)-285(cross,)-295(\(where)-285(w)27(e)-284(test)-285(a)-286(cross)-285(compiler)-285(that)-285(runs)-285(on)-285(a)-285(di\013eren)26(t)]TJ 0 -13.15 TD[(host)-326(then)-327(where)-326(DejaGn)26(u)-325(is)-327(running\))-327(then)-326(a)-327(connection)-326(is)-327(made)-327(to)-326(the)-327(remote)]TJ 0 -13.15 TD[(host)-422(and)-422(the)-422(command)-422(is)-422(executed)-422(there.)-710(It)-422(returns)-422(either)]TJ/F8 10.91 Tf 293.73 0 TD[(REMOTERR)25(OR)]TJ/F1 10.91 Tf -293.73 -13.15 TD[(\(for)-354(an)-354(error\))-354(or)-354(the)-355(output)-354(pro)-27(duced)-355(when)-354(the)-354(command)-354(w)26(as)-353(executed.)-507(This)]TJ 0 -13.15 TD[(is)-333(used)-333(for)-333(running)-334(the)-333(to)-28(ol)-333(to)-334(b)-27(e)-334(tested,)-333(not)-333(a)-334(test)-333(case.)]TJ/F2 13.09 Tf -57.6 -25.92 TD[(5.3.5)-562(Debugging)-375(Pro)-31(cedures)]TJ/F1 10.91 Tf 14.94 -22.79 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(lib/debugger.exp)]TJ/F1 10.91 Tf 91.64 0 TD[(')-333(de\014nes)-333(these)-333(utilit)26(y)-332(pro)-28(cedures:)]TJ/F4 10.91 Tf -109.61 -21.14 TD[(dumpvars)]TJ/F8 10.91 Tf 49.45 0 TD[(expr)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(This)-387(tak)27(es)-386(a)-387(csh)-388(st)27(yle)-386(regular)-387(expression)-387(\(glob)-388(rules\))-387(and)-387(prin)27(ts)-387(the)-387(v)55(alues)-386(of)]TJ 0 -13.15 TD[(the)-333(global)-333(v)54(ariable)-332(names)-333(that)-334(matc)27(h.)-443(It)-334(is)-333(abbreviated)-333(as)]TJ/F4 10.91 Tf 282.06 0 TD[(dv)]TJ -339.66 -21.15 TD[(dumplocals)]TJ/F8 10.91 Tf 60.91 0 TD[(expr)]TJ/F1 10.91 Tf -3.31 -13.15 TD[(This)-387(tak)27(es)-386(a)-387(csh)-388(st)27(yle)-386(regular)-387(expression)-387(\(glob)-388(rules\))-387(and)-387(prin)27(ts)-387(the)-387(v)55(alues)-386(of)]TJ 0 -13.15 TD[(the)-333(lo)-28(cal)-333(v)55(ariable)-333(names)-333(that)-333(matc)26(h.)-443(It)-333(is)-334(abbreviated)-333(as)]TJ/F4 10.91 Tf 275.7 0 TD[(dl)]TJ/F1 10.91 Tf 11.45 0 TD[(.)]TJ/F4 10.91 Tf -344.75 -21.14 TD[(dumprocs)]TJ/F8 10.91 Tf 49.45 0 TD[(expr)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(This)-316(tak)27(es)-315(a)-317(csh)-316(st)27(yle)-315(regular)-317(expression)-316(\(glob)-316(rules\))-317(and)-316(prin)27(ts)-316(the)-316(b)-28(o)-27(dy)-317(of)-316(all)]TJ 0 -13.15 TD[(pro)-27(cs)-334(that)-333(matc)27(h.)-444(It)-333(is)-333(abbreviated)-334(as)]TJ/F4 10.91 Tf 185.7 0 TD[(dp)]TJ -243.3 -21.14 TD[(dumpwatch)]TJ/F8 10.91 Tf 55.18 0 TD[(expr)]TJ/F1 10.91 Tf 2.42 -13.15 TD[(This)-349(tak)27(es)-348(a)-349(csh)-349(st)26(yle)-348(regular)-349(expression)-349(\(glob)-349(rules\))-350(and)-349(prin)27(ts)-348(all)-349(the)-350(w)27(atc)28(h-)]TJ 0 -13.15 TD[(p)-27(oin)27(ts.)-444(It)-333(is)-334(abbreviated)-333(as)]TJ/F4 10.91 Tf 132.94 0 TD[(dw)]TJ/F1 10.91 Tf 11.45 0 TD[(.)]TJ/F4 10.91 Tf -201.99 -21.14 TD[(watchunset)]TJ/F8 10.91 Tf 60.91 0 TD[(var)]TJ/F1 10.91 Tf -3.31 -13.15 TD[(This)-262(breaks)-262(program)-262(execution)-263(when)-262(the)-262(v)54(ariable)]TJ/F8 10.91 Tf 234.51 0 TD[(var)]TJ/F1 10.91 Tf 19.23 0 TD[(is)-262(unset.)-421(It)-262(is)-262(abbreviated)]TJ -253.74 -13.15 TD[(as)]TJ/F4 10.91 Tf 13.39 0 TD[(wu)]TJ/F1 10.91 Tf 11.46 0 TD[(.)]TJ/F4 10.91 Tf -82.45 -21.14 TD[(watchwrite)]TJ/F8 10.91 Tf 60.91 0 TD[(var)]TJ/F1 10.91 Tf -3.31 -13.15 TD[(This)-326(breaks)-326(program)-326(execution)-326(when)-327(the)-326(v)55(ariable)]TJ/F8 10.91 Tf 239.4 0 TD[(var)]TJ/F1 10.91 Tf 19.93 0 TD[(is)-326(written.)-442(It)-326(is)-326(abbrevi-)]TJ -259.33 -13.15 TD[(ated)-333(as)]TJ/F4 10.91 Tf 37.64 0 TD[(ww)]TJ/F1 10.91 Tf 11.45 0 TD[(.)]TJ/F4 10.91 Tf -106.69 -21.15 TD[(watchread)]TJ/F8 10.91 Tf 55.18 0 TD[(var)]TJ/F1 10.91 Tf 2.42 -13.15 TD[(This)-301(breaks)-302(program)-302(execution)-301(when)-302(the)-302(v)55(ariable)]TJ/F8 10.91 Tf 237.53 0 TD[(var)]TJ/F1 10.91 Tf 19.66 0 TD[(is)-301(read.)-434(It)-302(is)-302(abbreviated)]TJ -257.19 -13.15 TD[(as)]TJ/F4 10.91 Tf 13.39 0 TD[(wr)]TJ/F1 10.91 Tf 11.46 0 TD[(.)]TJ ET 0 g 0 G -endstream -endobj -170 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F8 52 0 R -/F2 12 0 R ->> -endobj -168 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 170 0 R ->> -endobj -173 0 obj -<< -/Length 9272 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-333(The)-333(DejaGn)26(u)-332(Implemen)27(tation)-20437(31)]TJ/F4 10.91 Tf 0 -23.91 TD[(watchdel)]TJ/F8 10.91 Tf 49.45 0 TD[(watch)]TJ/F1 10.91 Tf 8.15 -13.15 TD[(This)-333(deletes)-333(a)-333(the)-334(w)27(atc)28(hp)-27(oin)27(t)-333(for)]TJ/F8 10.91 Tf 161.67 0 TD[(watch)]TJ/F1 10.91 Tf 27.04 0 TD[(.)-444(It)-333(is)-334(abbreviated)-333(as)]TJ/F4 10.91 Tf 103.79 0 TD[(wd)]TJ/F1 10.91 Tf 11.45 0 TD[(.)]TJ/F4 10.91 Tf -361.55 -21.59 TD[(print)]TJ/F8 10.91 Tf 32.27 0 TD[(var)]TJ/F1 10.91 Tf 25.33 0 TD[(This)-333(prin)27(ts)-332(the)-334(v)55(alue)-332(of)-334(the)-333(v)54(ariable)]TJ/F8 10.91 Tf 175.33 0 TD[(var)]TJ/F1 10.91 Tf 15.2 0 TD[(.)-444(It)-333(is)-334(abbreviated)-333(as)]TJ/F4 10.91 Tf 103.79 0 TD[(p)]TJ/F1 10.91 Tf 5.72 0 TD[(.)]TJ/F4 10.91 Tf -357.64 -21.58 TD[(quit)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-333(mak)27(es)-332(run)26(test)-332(exit.)-444(It)-334(is)-333(abbreviated)-333(as)]TJ/F4 10.91 Tf 216.73 0 TD[(q)]TJ/F1 10.91 Tf 5.73 0 TD[(.)]TJ/F4 10.91 Tf -280.06 -21.59 TD[(bt)]TJ/F1 10.91 Tf 57.6 0 TD[(This)-333(prin)27(ts)-332(a)-334(bac)27(ktrace)-332(of)-334(the)-333(executed)-333(Tcl)-334(commands.)]TJ/F2 14.35 Tf -57.6 -30.35 TD[(5.4)-562(T)93(arget)-374(dep)-31(enden)30(t)-374(pro)-31(cedures)]TJ/F1 10.91 Tf 14.94 -22.94 TD[(Eac)27(h)-398(com)27(bination)-399(of)-399(target)-400(and)-399(to)-28(ol)-400(requires)-399(some)-400(target-dep)-27(enden)26(t)-398(pro)-28(cedures.)-643(The)]TJ -14.94 -13.15 TD[(names)-258(of)-259(these)-259(pro)-27(cedures)-259(ha)27(v)27(e)-257(a)-259(common)-259(form:)-407(the)-259(to)-28(ol)-258(name,)-274(follo)27(w)28(ed)-258(b)27(y)-258(an)-259(underbar)-259(`)]TJ/F4 10.91 Tf 420.21 0 TD[(_)]TJ/F1 10.91 Tf 5.73 0 TD[(',)]TJ -425.94 -13.15 TD[(and)-288(\014nally)-289(a)-289(su\016x)-288(describing)-289(the)-289(pro)-27(cedure's)-289(purp)-28(ose.)-429(F)82(or)-288(example,)-297(a)-289(pro)-28(cedure)-289(to)-288(extract)]TJ 0 -13.15 TD[(the)-497(v)27(ersion)-496(from)]TJ/F7 10.91 Tf 87 0 TD[(gdb)]TJ/F1 10.91 Tf 25.55 0 TD[(is)-497(called)-497(`)]TJ/F4 10.91 Tf 48.49 0 TD[(gdb_version)]TJ/F1 10.91 Tf 63 0 TD[('.)-935(See)-498(Section)-497(5.2)-497([Initialization)-497(Mo)-28(dule],)]TJ -224.04 -13.15 TD[(page)-419(22,)-440(for)-420(a)-419(discussion)-419(of)-419(ho)27(w)-419(DejaGn)27(u)-418(arranges)-419(to)-420(\014nd)-419(the)-419(righ)27(t)-418(pro)-28(cedures)-419(for)-420(eac)27(h)]TJ 0 -13.15 TD[(target.)]TJ/F4 10.91 Tf 14.94 -15.97 TD[(runtest)]TJ/F1 10.91 Tf 44.72 0 TD[(itself)-423(calls)-424(only)-424(t)27(w)28(o)-423(of)-424(these)-424(pro)-27(cedures,)]TJ/F5 10.91 Tf 200.79 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_exit)]TJ/F1 10.91 Tf 33.26 0 TD[(and)]TJ/F5 10.91 Tf 22.2 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_version)]TJ/F1 10.91 Tf 45.82 0 TD[(;)-468(these)]TJ -399.55 -13.15 TD[(pro)-27(cedures)-334(use)-333(no)-333(argumen)27(ts.)]TJ 14.94 -15.96 TD[(The)-334(other)-334(t)27(w)28(o)-333(pro)-28(cedures,)]TJ/F5 10.91 Tf 129.58 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_start)]TJ/F1 10.91 Tf 38.01 0 TD[(and)]TJ/F5 10.91 Tf 21.22 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_load)]TJ/F1 10.91 Tf 28.64 0 TD[(,)-334(are)-334(only)-334(called)-334(b)27(y)-333(the)-334(test)-334(suites)]TJ -270.22 -13.15 TD[(themselv)27(es)-410(\(or)-410(b)26(y)-410(testsuite-sp)-27(eci\014c)-411(initialization)-411(co)-28(de\);)-449(they)-411(ma)26(y)-409(tak)26(e)-410(argumen)27(ts)-410(or)-410(not,)]TJ 0 -13.15 TD[(dep)-27(ending)-334(on)-333(the)-333(con)27(v)27(en)28(tions)-332(used)-334(within)-333(eac)27(h)-332(test)-334(suite.)]TJ/F5 10.91 Tf 0 -21.59 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_start)]TJ/F1 10.91 Tf 38.69 -13.15 TD[(Starts)-236(a)-237(particular)-237(to)-28(ol.)-412(F)82(or)-236(an)-236(in)26(teractiv)28(e)-236(to)-28(ol,)]TJ/F5 10.91 Tf 224.07 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_start)]TJ/F1 10.91 Tf 36.95 0 TD[(starts)-236(and)-237(initializes)]TJ -279.93 -13.15 TD[(the)-308(to)-27(ol,)-314(lea)27(ving)-307(the)-308(to)-28(ol)-308(up)-309(and)-308(running)-308(for)-308(the)-308(test)-309(cases;)-316(an)-308(example)-309(is)]TJ/F4 10.91 Tf 351.49 0 TD[(gdb_)]TJ -351.49 -13.15 TD[(start)]TJ/F1 10.91 Tf 28.64 0 TD[(,)-463(the)-438(start)-438(function)-437(for)]TJ/F7 10.91 Tf 117 0 TD[(gdb)]TJ/F1 10.91 Tf 20.14 0 TD[(.)-757(F)82(or)-436(a)-438(batc)27(h)-437(orien)27(ted)-437(to)-28(ol,)]TJ/F5 10.91 Tf 143.24 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_start)]TJ/F1 10.91 Tf 39.14 0 TD[(is)]TJ -367.07 -13.15 TD[(optional;)-287(the)-266(recommended)-265(con)27(v)28(en)28(tion)-264(is)-266(to)-265(let)]TJ/F5 10.91 Tf 223.01 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_start)]TJ/F1 10.91 Tf 37.26 0 TD[(run)-265(the)-265(to)-28(ol,)-278(lea)26(ving)]TJ -279.18 -13.15 TD[(the)-448(output)-448(in)-449(a)-448(v)55(ariable)-448(called)]TJ/F4 10.91 Tf 155.74 0 TD[(comp_output)]TJ/F1 10.91 Tf 63 0 TD[(.)-789(T)82(est)-447(scripts)-448(can)-449(then)-448(analyze)]TJ -218.74 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[($comp_output)]TJ/F1 10.91 Tf 68.73 0 TD[(')-349(to)-349(determine)-350(the)-349(test)-350(results.)-492(An)-350(example)-349(of)-349(this)-350(second)-349(kind)]TJ -71.76 -13.15 TD[(of)-333(start)-333(function)-333(is)]TJ/F4 10.91 Tf 92.27 0 TD[(gcc_start)]TJ/F1 10.91 Tf 51.55 0 TD[(,)-333(the)-333(start)-333(function)-334(for)]TJ/F7 10.91 Tf 111.03 0 TD[(gcc)]TJ/F1 10.91 Tf 19.89 0 TD[(.)]TJ/F4 10.91 Tf -274.74 -15.96 TD[(runtest)]TJ/F1 10.91 Tf 42.52 0 TD[(itself)]TJ/F8 10.91 Tf 25.21 0 TD[(do)51(es)-255(not)-255(c)50(al)-50(l)]TJ/F5 10.91 Tf 60.7 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_start)]TJ/F1 10.91 Tf 34.37 0 TD[(.)-407(The)-222(initialization)-222(mo)-28(dule)-222(`)]TJ/F5 10.91 Tf 131.41 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_init.exp)]TJ/F1 10.91 Tf 51.54 0 TD[(')]TJ -383.58 -13.15 TD[(m)27(ust)-383(call)]TJ/F5 10.91 Tf 48.14 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_start)]TJ/F1 10.91 Tf 38.55 0 TD[(for)-384(in)27(teractiv)28(e)-383(to)-28(ols;)-410(for)-384(batc)27(h-orien)27(ted)-383(to)-28(ols,)-397(eac)27(h)-383(indi-)]TJ -105.61 -13.15 TD[(vidual)-444(test)-445(script)-445(calls)]TJ/F5 10.91 Tf 113.86 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_start)]TJ/F1 10.91 Tf 39.22 0 TD[(\(or)-444(mak)27(es)-444(other)-445(arrangemen)27(ts)-444(to)-444(run)-445(the)]TJ -171.99 -13.15 TD[(to)-27(ol\).)]TJ/F5 10.91 Tf -57.6 -21.59 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_load)]TJ/F1 10.91 Tf 38.69 0 TD[(Loads)-272(something)-272(in)26(to)-271(a)-273(to)-27(ol.)-425(F)83(or)-272(an)-272(in)27(teractiv)27(e)-271(to)-28(ol,)-285(this)-272(conditions)-272(the)-273(to)-28(ol)-272(for)]TJ 0 -13.15 TD[(a)-379(particular)-381(test)-380(case;)-403(for)-380(example,)]TJ/F4 10.91 Tf 172.74 0 TD[(gdb_load)]TJ/F1 10.91 Tf 49.96 0 TD[(loads)-379(a)-381(new)-380(executable)-380(\014le)-380(in)27(to)]TJ -222.7 -13.15 TD[(the)-263(debugger.)-421(F)82(or)-262(batc)27(h)-263(orien)27(ted)-262(to)-28(ols,)]TJ/F5 10.91 Tf 186.99 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_load)]TJ/F1 10.91 Tf 31.51 0 TD[(ma)27(y)-262(do)-263(nothing|though,)-278(for)]TJ -237.42 -13.15 TD[(example,)-276(the)]TJ/F7 10.91 Tf 63.15 0 TD[(gcc)]TJ/F1 10.91 Tf 22.75 0 TD[(supp)-27(ort)-263(uses)]TJ/F4 10.91 Tf 62 0 TD[(gcc_load)]TJ/F1 10.91 Tf 48.67 0 TD[(to)-262(load)-262(and)-262(run)-262(a)-263(binary)-262(on)-262(the)-262(target)]TJ -196.57 -13.15 TD[(en)27(vironmen)28(t.)-674(Con)27(v)28(en)28(tionally)83(,)]TJ/F5 10.91 Tf 147.53 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_load)]TJ/F1 10.91 Tf 33.12 0 TD[(lea)27(v)28(es)-409(the)-410(output)-410(of)-410(an)26(y)-409(program)-410(it)]TJ -199.56 -13.15 TD[(runs)-414(in)-415(a)-414(v)54(ariable)-413(called)-415(`)]TJ/F4 10.91 Tf 125.46 0 TD[(exec_output)]TJ/F1 10.91 Tf 63 0 TD[('.)-688(W)83(riting)]TJ/F5 10.91 Tf 54.48 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_load)]TJ/F1 10.91 Tf 33.16 0 TD[(can)-414(b)-28(e)-414(the)-415(most)]TJ -295.02 -13.15 TD[(complex)-297(part)-298(of)-298(extending)-298(DejaGn)27(u)-297(to)-298(a)-297(new)-298(to)-28(ol)-298(or)-298(a)-297(new)-298(target,)-305(if)-298(it)-298(requires)]TJ 0 -13.16 TD[(m)27(uc)28(h)-332(comm)27(unication)-333(co)-28(ding)-333(or)-333(\014le)-334(do)27(wnloading.)]TJ 0 -15.96 TD[(T)83(est)-332(scripts)-334(call)]TJ/F5 10.91 Tf 78.7 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_load)]TJ/F1 10.91 Tf 28.64 0 TD[(.)]TJ/F5 10.91 Tf -183.85 -21.58 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_exit)]TJ/F1 10.91 Tf 38.69 0 TD[(Cleans)-375(up)-375(\(if)-375(necessary\))-375(b)-28(efore)]TJ/F4 10.91 Tf 152.82 0 TD[(runtest)]TJ/F1 10.91 Tf 44.19 0 TD[(exits.)-569(F)82(or)-374(in)27(teractiv)28(e)-375(to)-27(ols,)-386(this)-375(usu-)]TJ -197.01 -13.15 TD[(ally)-425(ends)-425(the)-425(in)27(teractiv)28(e)-424(session.)-719(Y)82(ou)-424(can)-425(also)-425(use)]TJ/F5 10.91 Tf 252.61 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_exit)]TJ/F1 10.91 Tf 33.27 0 TD[(to)-425(remo)27(v)28(e)-424(an)27(y)]TJ -304.79 -13.15 TD[(temp)-27(orary)-334(\014les)-333(left)-333(o)27(v)27(er)-332(from)-333(the)-334(tests.)]TJ/F4 10.91 Tf 0 -15.97 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(calls)]TJ/F5 10.91 Tf 24.3 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_exit)]TJ/F1 10.91 Tf 28.64 0 TD[(.)]TJ ET 0 g 0 G -endstream -endobj -174 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F8 52 0 R -/F2 12 0 R -/F7 49 0 R -/F5 31 0 R ->> -endobj -172 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 174 0 R ->> -endobj -178 0 obj -<< -/Type /FontDescriptor -/CapHeight 686.11 -/Ascent 694.44 -/Descent -194.44 -/Flags 4 -/FontBBox [-270 -250 1011 948] -/FontName /CMB10 -/ItalicAngle 0 -/XHeight 444 -/StemV 80 -/FontFile 177 0 R ->> -endobj -179 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F13 -/FontDescriptor 178 0 R -/BaseFont /EUXRYM+CMB10 -/FirstChar 0 -/LastChar 127 -/Widths [600 833.34 777.78 700 666.67 783.34 722.22 777.78 722.22 777.78 722.22 583.34 -555.56 555.56 833.34 833.34 277.78 305.56 500 500 500 500 500 755.56 444.45 559.72 -722.22 777.78 500 905.56 1016.67 777.78 277.78 305.56 544.45 833.34 500 833.34 777.78 -277.78 388.89 388.89 500 777.78 277.78 333.33 277.78 500 500 500 500 500 500 500 -500 500 500 500 277.78 277.78 305.56 777.78 472.22 472.22 777.78 755.56 711.11 722.22 -766.67 655.56 627.78 786.11 783.34 397.22 516.67 783.34 600 950 783.34 750 683.34 -750 759.72 555.56 694.45 769.45 755.56 1033.34 755.56 755.56 611.11 280 544.45 280 -500 277.78 277.78 486.11 555.56 444.45 555.56 466.67 305.56 500 555.56 277.78 305.56 -527.78 277.78 833.34 555.56 500 555.56 527.78 427.78 394.45 390.28 555.56 527.78 -722.22 527.78 527.78 444.45 500 1000 500 500 500] ->> -endobj -180 0 obj -<< -/Length 8736 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(32)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F5 10.91 Tf 0 -23.91 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_version)]TJ/F1 10.91 Tf 38.69 -13.15 TD[(Prin)27(ts)-408(the)-409(v)26(ersion)-408(lab)-28(el)-409(and)-410(n)27(um)28(b)-27(er)-409(for)]TJ/F5 10.91 Tf 198.32 0 TD[(to)-27(ol)]TJ/F1 10.91 Tf 18.49 0 TD[(.)-672(This)-409(is)-410(called)-409(b)27(y)-409(the)-409(DejaGn)27(u)]TJ -216.81 -13.15 TD[(pro)-27(cedure)-357(that)-357(prin)27(ts)-355(the)-357(\014nal)-357(summary)-356(rep)-28(ort.)-515(The)-356(output)-357(should)-357(consist)-356(of)]TJ 0 -13.15 TD[(the)-333(full)-333(path)-333(name)-334(used)-333(for)-333(the)-334(tested)-333(to)-28(ol,)-333(and)-334(its)-333(v)27(ersion)-332(n)26(um)28(b)-27(er.)]TJ/F4 10.91 Tf 0 -16.14 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(calls)]TJ/F5 10.91 Tf 24.3 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_version)]TJ/F1 10.91 Tf 45.82 0 TD[(.)]TJ -175.42 -19.13 TD[(The)-352(usual)-353(con)27(v)28(en)28(tion)-352(for)-352(return)-353(co)-28(des)-352(from)-353(an)27(y)-352(of)-352(these)-353(pro)-27(cedures)-353(\(although)-353(it)-352(is)-353(not)]TJ -14.94 -13.15 TD[(required)-296(b)27(y)]TJ/F4 10.91 Tf 57.13 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(\))-296(is)-296(to)-297(return)]TJ/F4 10.91 Tf 63.97 0 TD[(0)]TJ/F1 10.91 Tf 8.96 0 TD[(if)-296(the)-296(pro)-28(cedure)-296(succeeded,)]TJ/F4 10.91 Tf 131.32 0 TD[(1)]TJ/F1 10.91 Tf 8.96 0 TD[(if)-296(it)-296(failed,)-304(and)]TJ/F4 10.91 Tf 73.01 0 TD[(-1)]TJ/F1 10.91 Tf 14.69 0 TD[(if)-296(there)]TJ -398.13 -13.15 TD[(w)27(as)-332(a)-333(comm)26(unication)-332(error.)]TJ/F2 14.35 Tf 0 -30.89 TD[(5.5)-562(Remote)-375(targets)-375(supp)-31(orted)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(The)-400(DejaGn)27(u)-399(distribution)-400(includes)-400(supp)-28(ort)-400(for)-400(the)-400(follo)27(wing)-399(remote)-400(targets.)-645(Y)82(ou)-399(can)]TJ -14.94 -13.15 TD[(set)-384(the)-384(target)-385(name)-384(and)-385(the)-384(connect)-385(mo)-27(de)-385(in)-384(the)-385(`)]TJ/F4 10.91 Tf 246.58 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.81 0 TD[(')-384(\014le)-384(\(using)-385(the)-384(Tcl)-385(v)55(ariables)]TJ -292.39 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(targetname)]TJ/F1 10.91 Tf 57.27 0 TD[(')-428(and)-428(`)]TJ/F4 10.91 Tf 32.98 0 TD[(connectmode)]TJ/F1 10.91 Tf 63 0 TD[(',)-451(resp)-28(ectiv)27(ely\),)-451(or)-428(on)-428(the)]TJ/F4 10.91 Tf 129.44 0 TD[(runtest)]TJ/F1 10.91 Tf 44.76 0 TD[(command)-428(line)-428(\(using)]TJ -330.48 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--name)]TJ/F1 10.91 Tf 34.36 0 TD[(')-333(and)-333(`)]TJ/F4 10.91 Tf 30.91 0 TD[(--connect)]TJ/F1 10.91 Tf 51.55 0 TD[('\).)]TJ/F7 10.91 Tf -119.85 -19.13 TD[(amd)]TJ/F13 10.91 Tf 25.28 0 TD[(29000,)-333(with)-333(UDI)-333(proto)-28(col)]TJ/F1 10.91 Tf 32.32 -13.15 TD[(Con\014gure)-314(DejaGn)27(u)-314(for)-315(target)-314(`)]TJ/F4 10.91 Tf 146.78 0 TD[(a29k-amd-udi)]TJ/F1 10.91 Tf 68.72 0 TD[('.)-438(\(Cygn)27(us)]TJ/F4 10.91 Tf 53.73 0 TD[(configure)]TJ/F1 10.91 Tf 54.98 0 TD[(also)-314(recog-)]TJ -324.21 -13.15 TD[(nizes)-398(the)-399(abbreviation)-398(`)]TJ/F4 10.91 Tf 114.05 0 TD[(udi29k)]TJ/F1 10.91 Tf 34.36 0 TD[('.\))-640(Then,)-415(to)-398(run)-399(tests,)-415(use)-398(the)]TJ/F4 10.91 Tf 153.04 0 TD[(runtest)]TJ/F1 10.91 Tf 44.44 0 TD[(target)]TJ -345.89 -13.15 TD[(name)-314(to)-314(sp)-28(ecify)-314(whether)-314(y)26(ou)-313(w)27(an)28(t)-314(to)-314(use)-314(a)-314(sim)26(ulator,)-317(or)-314(a)-314(particular)-315(hardw)27(are)]TJ 0 -13.15 TD[(b)-27(oard.)-741(The)-432(particular)-432(string)-432(to)-432(use)-432(with)-432(`)]TJ/F4 10.91 Tf 209.02 0 TD[(--name)]TJ/F1 10.91 Tf 34.36 0 TD[(')-431(will)-432(dep)-28(end)-432(on)-432(y)27(our)-431(UDI)]TJ -243.38 -13.16 TD[(setup)-415(\014le,)-437(`)]TJ/F4 10.91 Tf 54.81 0 TD[(udi_soc)]TJ/F1 10.91 Tf 40.09 0 TD[(')-415(\(if)-416(`)]TJ/F4 10.91 Tf 25.74 0 TD[(udi_soc)]TJ/F1 10.91 Tf 40.09 0 TD[(')-415(is)-416(not)-416(in)-416(y)27(our)-415(w)27(orking)-415(directory)82(,)-435(the)-416(en)27(vi-)]TJ -160.73 -13.15 TD[(ronmen)27(t)-334(v)55(ariable)-335(`)]TJ/F4 10.91 Tf 87.38 0 TD[(UDICONF)]TJ/F1 10.91 Tf 40.09 0 TD[(')-335(should)-335(con)27(tain)-335(a)-335(path)-335(to)-336(this)-335(\014le\).)-450(F)82(or)-334(example,)-336(if)]TJ -127.47 -13.15 TD[(y)27(our)-332(UDI)-333(setup)-334(\014le)-333(includes)-333(these)-334(lines:)]TJ/F9 9.96 Tf -57.6 -12.43 TD[(\013)]TJ ET 23.98 -328.05 m 450.40 -328.05 l 450.40 -327.65 l 23.98 -327.65 l b BT 456.38 -328.05 TD[(\010)]TJ ET 18.00 -365.20 m 18.40 -365.20 l 18.40 -333.78 l 18.00 -333.78 l b BT/F4 10.91 Tf 21.39 -347.33 TD[(iss)-1574(AF_UNIX)-1050(*)-1575(isstip)-525(-r)-525(/home/gnu/29k/src/osboot/sim/osboot)]TJ 0 -12.45 TD[(mon)-1574(AF_UNIX)-1050(*)-1575(montip)-525(-t)-525(serial)-525(-baud)-525(9600)-525(-com)-525(/dev/ttyb)]TJ ET 456.38 -365.20 m 456.77 -365.20 l 456.77 -333.78 l 456.38 -333.78 l b BT/F9 9.96 Tf 18 -371.42 TD[(\012)]TJ ET 23.98 -371.42 m 450.40 -371.42 l 450.40 -371.03 l 23.98 -371.03 l b BT 456.38 -371.42 TD[(\011)]TJ/F1 10.91 Tf -380.78 -20.38 TD[(Y)83(ou)-394(can)-396(use)-395(`)]TJ/F4 10.91 Tf 66.33 0 TD[(--name)-333(iss)]TJ/F1 10.91 Tf 55.18 0 TD[(')-395(to)-395(run)-395(tests)-396(on)-395(the)-395(sim)27(ulator,)-410(and)-396(`)]TJ/F4 10.91 Tf 180.67 0 TD[(--name)-333(mon)]TJ/F1 10.91 Tf 55.18 0 TD[(')-395(to)]TJ -357.36 -13.15 TD[(run)-382(tests)-383(on)-383(the)-383(29K)-383(hardw)26(are.)-592(See)-383(the)-383(man)27(ufacturer's)-382(man)27(uals)-382(for)-383(more)-383(in-)]TJ 0 -13.15 TD[(formation)-333(on)-333(UDI)-333(and)-334(`)]TJ/F4 10.91 Tf 113.52 0 TD[(udi_soc)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ -153.61 -16.14 TD[(The)-381(default)-381(connect)-381(proto)-28(col)-381(is)-381(`)]TJ/F4 10.91 Tf 158.46 0 TD[(mondfe)]TJ/F1 10.91 Tf 34.36 0 TD[(')-381(with)-381(either)-381(bac)27(k)-380(end.)]TJ/F4 10.91 Tf 116.42 0 TD[(mondfe)]TJ/F1 10.91 Tf 38.52 0 TD[(is)-381(the)]TJ -347.76 -13.15 TD[(only)-239(shell)-240(DejaGn)27(u)-239(supp)-28(orts)-240(for)-239(UDI)-240(targets.)]TJ/F4 10.91 Tf 214.55 0 TD[(mondfe)]TJ/F1 10.91 Tf 36.98 0 TD[(is)-239(an)]TJ/F7 10.91 Tf 24.08 0 TD[(amd)]TJ/F1 10.91 Tf 24.27 0 TD[(sp)-27(eci\014c)-240(monitor)]TJ -299.88 -13.15 TD[(program)-333(freely)-333(a)27(v)55(ailable)-332(from)]TJ/F7 10.91 Tf 144.06 0 TD[(amd)]TJ/F1 10.91 Tf 21.65 0 TD[(.)]TJ/F8 10.91 Tf -165.71 -16.14 TD[(Warning:)]TJ/F1 10.91 Tf 50.85 0 TD[(This)-347(target)-348(requires)]TJ/F7 10.91 Tf 98.57 0 TD[(gdb)]TJ/F1 10.91 Tf 23.93 0 TD[(v)27(ersion)-347(4.7.2)-348(\(or)-347(greater\).)-489(Earlier)-348(v)27(ersions)]TJ -173.35 -13.15 TD[(of)]TJ/F7 10.91 Tf 12.18 0 TD[(gdb)]TJ/F1 10.91 Tf 23.52 0 TD[(do)-310(not)-311(fully)-310(supp)-28(ort)-311(the)]TJ/F4 10.91 Tf 117.34 0 TD[(load)]TJ/F1 10.91 Tf 26.3 0 TD[(command)-310(on)-311(this)-310(target,)-316(so)-310(DejaGn)27(u)-310(has)]TJ -179.34 -13.15 TD[(no)-333(w)27(a)28(y)-333(to)-333(load)-333(executable)-334(\014les)-333(from)-333(the)-334(debugger.)]TJ/F13 10.91 Tf -57.6 -19.13 TD[(Motorola)-333(680x0)-333(b)-28(oards,)-333(a.out)-334(or)]TJ/F7 10.91 Tf 159.15 0 TD[(coff)]TJ/F13 10.91 Tf 28.7 0 TD[(ob)-55(ject)-333(format)]TJ/F1 10.91 Tf -130.25 -13.15 TD[(Con\014gure)-333(DejaGn)27(u)-332(for)-334(an)27(y)-332(remote)-334(target)-333(matc)27(hing)-332(`)]TJ/F4 10.91 Tf 252.17 0 TD[(m68k-*)]TJ/F1 10.91 Tf 34.36 0 TD[('.)]TJ/F8 10.91 Tf -286.53 -16.14 TD[(Warning:)]TJ/F1 10.91 Tf 53.35 0 TD[(Most)-462(`)]TJ/F4 10.91 Tf 32.07 0 TD[(m68k-*)]TJ/F1 10.91 Tf 34.36 0 TD[(')-462(con\014gurations)-462(run)-462(all)-463(tests)-462(only)-462(for)-463(nativ)27(e)-461(testing)]TJ -119.78 -13.15 TD[(\(when)-432(the)-432(target)-432(is)-433(the)-432(same)-432(as)-433(the)-432(host\).)-741(When)-433(y)27(ou)-431(sp)-28(ecify)-432(most)-433(of)-432(these)]TJ 0 -13.15 TD[(targets)-432(for)-432(a)-433(cross)-432(con\014guration,)-457(y)27(ou)-432(will)-432(only)-433(b)-27(e)-433(able)-432(to)-433(use)-432(tests)-432(that)-433(run)]TJ 0 -13.15 TD[(completely)-281(within)-282(the)-281(host)-282(\(for)-281(example,)-292(tests)-281(of)-282(the)-281(binary)-282(utilities)-281(suc)26(h)-280(as)-282(the)]TJ 0 -13.16 TD[(arc)27(hiv)28(er;)-332(or)-334(compiler)-333(tests)-333(that)-334(only)-333(generate)-333(co)-28(de)-333(rather)-334(than)-333(running)-333(it\).)]TJ 0 -16.14 TD[(T)83(o)-292(run)-293(a.out)-293(or)]TJ/F7 10.91 Tf 75.58 0 TD[(coff)]TJ/F1 10.91 Tf 28.26 0 TD[(binaries)-293(on)-293(a)-293(remote)-293(M68K,)-293(y)27(ou)-292(m)27(ust)-292(con\014gure)-293(DejaGn)26(u)]TJ -103.84 -13.15 TD[(for)-405(a)-405(particular)-406(target)-405(b)-28(oard.)-661(`)]TJ/F4 10.91 Tf 152.32 0 TD[(m68k-abug)]TJ/F1 10.91 Tf 51.55 0 TD[(')-405(is)-405(an)-406(example.)-660(\(In)-406(general)-405(for)-406(an)]TJ ET 0 g 0 G -endstream -endobj -181 0 obj -<< -/F1 9 0 R -/F5 31 0 R -/F4 28 0 R -/F2 12 0 R -/F7 49 0 R -/F13 179 0 R -/F9 59 0 R -/F8 52 0 R ->> -endobj -176 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 181 0 R ->> -endobj -184 0 obj -<< -/Length 7898 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(33)]TJ 57.6 -23.91 TD[(em)27(b)-26(edded)-397(en)27(vironmen)27(t,)-411(b)-28(ecause)-396(it)-397(do)-28(es)-396(not)-397(ha)27(v)28(e)-396(absolute)-397(addresses,)-412(a.out)-397(is)]TJ 0 -13.15 TD[(not)-273(a)-273(go)-28(o)-27(d)-274(c)27(hoice)-272(for)-273(output)-274(format)-273(in)-273(an)27(y)-272(case;)-294(most)-273(often)-273(S-records)-273(or)-273(Hex-32)]TJ 0 -13.15 TD[(are)-333(used)-333(instead.\))]TJ/F13 10.91 Tf -57.6 -19.13 TD[(Motorola)-333(68K)-333(MVME)-333(135)-334(b)-28(oard)-333(running)-333(ABug)-334(b)-27(o)-28(ot)-334(monitor)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(Con\014gure)-339(for)-340(`)]TJ/F4 10.91 Tf 69.59 0 TD[(m68k-abug-aout)]TJ/F1 10.91 Tf 80.19 0 TD[(')-339(or)-340(`)]TJ/F4 10.91 Tf 23.19 0 TD[(m68k-abug-coff)]TJ/F1 10.91 Tf 80.19 0 TD[(')-339(\(as)-340(a)-340(target\).)-463(This)-340(b)-28(o)-27(ot)]TJ -253.16 -13.15 TD[(monitor)-473(can)-474(only)-474(do)27(wnload)-473(S-records;)-544(therefore,)-509(the)-474(DejaGn)27(u)-473(tests)-474(for)-474(this)]TJ 0 -13.15 TD[(en)27(vironmen)28(t)-378(require)-379(a)-380(link)27(er)-378(command)-379(script)-379(to)-380(con)27(v)28(ert)-378(either)-380(output)-379(format)]TJ 0 -13.15 TD[(to)-333(S-records,)-333(setting)-333(the)-334(default)-333(addresses)-333(for)]TJ/F4 10.91 Tf 219.82 0 TD[(.text)]TJ/F1 10.91 Tf 28.64 0 TD[(,)]TJ/F4 10.91 Tf 6.66 0 TD[(.bss)]TJ/F1 10.91 Tf 22.91 0 TD[(,)-333(and)]TJ/F4 10.91 Tf 27.88 0 TD[(.data)]TJ/F1 10.91 Tf 28.64 0 TD[(.)]TJ -334.55 -16.14 TD[(With)-355(this)-355(con\014guration,)-361(the)-355(default)-355(for)-355(`)]TJ/F4 10.91 Tf 195.25 0 TD[(--connect)]TJ/F1 10.91 Tf 51.54 0 TD[(')-355(is)-355(`)]TJ/F4 10.91 Tf 21.15 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[('.)-510(`)]TJ/F4 10.91 Tf 14.66 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(')-355(is)-355(the)-355(only)]TJ -316.96 -13.16 TD[(comm)27(unications)-422(proto)-28(col)-423(supp)-27(orted)-424(for)-423(connecting)-423(to)-423(`)]TJ/F4 10.91 Tf 267.91 0 TD[(m68k-abug-*)]TJ/F1 10.91 Tf 63 0 TD[(')-423(targets.)]TJ -330.91 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(')-314(uses)-315(an)]TJ/F7 10.91 Tf 44.36 0 TD[(asci)-22(i)]TJ/F1 10.91 Tf 28.4 0 TD[(do)27(wnloader)-313(\(the)]TJ/F4 10.91 Tf 80.53 0 TD[(~put)]TJ/F1 10.91 Tf 26.34 0 TD[(command\))-314(to)-315(load)-314(S-records)-315(in)27(to)-314(the)]TJ -199.84 -13.15 TD[(target)-405(b)-28(oard.)-663(The)-406(`)]TJ/F4 10.91 Tf 97.05 0 TD[(--name)]TJ/F1 10.91 Tf 34.37 0 TD[(')-405(string)-406(m)26(ust)-405(b)-27(e)-406(a)-406(mac)26(hine)-405(name)-406(that)]TJ/F4 10.91 Tf 190.43 0 TD[(tip)]TJ/F1 10.91 Tf 21.61 0 TD[(under-)]TJ -343.46 -13.15 TD[(stands)-404(\(for)-405(example,)-423(on)-405(some)]TJ/F4 10.91 Tf 147.34 0 TD[(tip)]TJ/F1 10.91 Tf 21.59 0 TD[(implemen)27(tations)-404(it)-404(m)26(ust)-403(b)-28(e)-405(an)-405(en)27(try)-404(from)]TJ -168.93 -13.15 TD[(the)-333(initialization)-333(\014le)-333(for)]TJ/F4 10.91 Tf 116.7 0 TD[(tip)]TJ/F1 10.91 Tf 17.18 0 TD[(;)-333(this)-333(\014le)-333(is)-334(sometimes)-333(called)-333(`)]TJ/F4 10.91 Tf 143.27 0 TD[(/etc/remote)]TJ/F1 10.91 Tf 63 0 TD[('\).)]TJ -340.15 -16.14 TD[(See)-285(y)27(our)-285(system)-286(do)-28(cumen)27(tation)-284(for)-286(information)-286(on)-286(ho)27(w)-284(to)-286(create)-286(new)-286(en)27(tries)-284(in)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(/etc/remote)]TJ/F1 10.91 Tf 63 0 TD[('.)-578(\(Some)]TJ/F7 10.91 Tf 46.19 0 TD[(unix)]TJ/F1 10.91 Tf 27.5 0 TD[(systems)-378(are)-378(distributed)-378(with)-378(at)-378(least)-378(one)-378(default)]TJ -139.72 -13.15 TD[(en)27(try)-315(with)-316(a)-316(name)-316(resem)27(bling)-315(`)]TJ/F4 10.91 Tf 147.96 0 TD[(hardwire)]TJ/F1 10.91 Tf 45.82 0 TD[(';)-321(if)-316(y)27(our)-315(system)-316(has)-316(one,)-320(y)27(ou)-315(can)-316(edit)]TJ -193.78 -13.15 TD[(it,)-483(or)-454(mak)27(e)-452(a)-454(mo)-28(di\014ed)-453(cop)27(y)-453(with)-454(a)-453(new)-454(name.\))-805(When)-453(y)27(ou)-453(ha)27(v)28(e)-453(a)-453(w)26(orking)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(/etc/remote)]TJ/F1 10.91 Tf 63 0 TD[(')-356(en)27(try)]TJ/F5 10.91 Tf 35.68 0 TD[(abugtarget)]TJ/F1 10.91 Tf 51.55 0 TD[(,)-362(y)27(ou)-355(should)-356(b)-28(e)-356(able)-357(to)-356(t)27(yp)-27(e)-356(`)]TJ/F4 10.91 Tf 142.48 0 TD[(tip)]TJ/F5 10.91 Tf 20.82 0 TD[(abugtarget)]TJ/F1 10.91 Tf 51.78 0 TD[(',)]TJ -368.34 -13.15 TD[(and)-268(get)-268(the)-268(prompt)-268(`)]TJ/F4 10.91 Tf 97.19 0 TD[(135ABUG>)]TJ/F1 10.91 Tf 45.82 0 TD[(')-268(from)-268(the)-268(b)-28(oard.)-423(Use)-268(the)-268(same)]TJ/F5 10.91 Tf 149.32 0 TD[(abugtarget)]TJ/F1 10.91 Tf 54.71 0 TD[(string)]TJ -347.04 -13.15 TD[(with)-333(`)]TJ/F4 10.91 Tf 27.88 0 TD[(runtest)-333(--name)]TJ/F1 10.91 Tf 78.09 0 TD[('.)]TJ/F13 10.91 Tf -163.57 -19.13 TD[(Motorola)-333(IDP)-333(b)-28(oard)-333(running)-334(the)-333(rom68k)-333(b)-28(o)-28(ot)-333(monitor)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(This)-410(is)-411(the)-411(same)-411(in)-411(functionalit)27(y)-410(as)-411(the)-411(MVME)-411(b)-28(oard)-411(running)-411(the)]TJ/F4 10.91 Tf 330.92 0 TD[(BUG)]TJ/F1 10.91 Tf 21.66 0 TD[(b)-27(o)-28(ot)]TJ -352.58 -13.15 TD[(monitor.)-444(Only)-333(the)-334(monitor)-333(commands)-333(and)-334(the)-333(addresses)-333(are)-334(di\013eren)27(t.)]TJ/F13 10.91 Tf -57.6 -19.13 TD[(VxW)83(orks)-332(\(Motorola)-334(68K)-333(or)-333(In)26(tel)-332(960\))]TJ/F1 10.91 Tf 57.6 -13.15 TD[(Con\014gure)-392(DejaGn)26(u)-392(for)-393(either)-392(`)]TJ/F4 10.91 Tf 148.98 0 TD[(m68k-wrs-vxworks)]TJ/F1 10.91 Tf 91.64 0 TD[(')-392(\(abbreviated)-393(`)]TJ/F4 10.91 Tf 74.96 0 TD[(vxworks68)]TJ/F1 10.91 Tf 51.55 0 TD[('\))]TJ -367.13 -13.15 TD[(or)-229(`)]TJ/F4 10.91 Tf 15.26 0 TD[(i960-wrs-vxworks)]TJ/F1 10.91 Tf 91.64 0 TD[(')-229(\(abbreviated)-229(`)]TJ/F4 10.91 Tf 71.4 0 TD[(vxworks960)]TJ/F1 10.91 Tf 57.27 0 TD[('\).)-409(Since)-230(b)-28(oth)-229(targets)-230(supp)-27(ort)]TJ -235.57 -13.15 TD[(IP)-466(addressing,)-501(sp)-27(ecify)-467(the)-467(net)26(w)28(ork)-466(address)-467(\(for)-467(example,)-500(a)-467(host)-467(name)-467(from)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(/etc/hosts)]TJ/F1 10.91 Tf 57.27 0 TD[('\))-333(with)-333(`)]TJ/F4 10.91 Tf 38.79 0 TD[(--name)]TJ/F1 10.91 Tf 34.36 0 TD[('.)]TJ -133.45 -16.14 TD[(The)-388(default)-389(connect)-389(proto)-28(col)-389(is)-389(`)]TJ/F4 10.91 Tf 158.88 0 TD[(rlogin)]TJ/F1 10.91 Tf 34.37 0 TD[(',)-402(but)-389(y)27(ou)-388(can)-389(use)-389(an)26(y)-387(of)-389(`)]TJ/F4 10.91 Tf 129.61 0 TD[(--connect)]TJ -322.86 -13.15 TD[(rlogin)]TJ/F1 10.91 Tf 34.36 0 TD[(',)-333(`)]TJ/F4 10.91 Tf 12.73 0 TD[(--connect)-333(telnet)]TJ/F1 10.91 Tf 89.55 0 TD[(',)-333(or)-333(`)]TJ/F4 10.91 Tf 26.09 0 TD[(--connect)-333(rsh)]TJ/F1 10.91 Tf 72.36 0 TD[('.)]TJ -235.09 -16.14 TD[(T)83(est)-456(scripts)-457(need)-456(no)-457(sp)-28(ecial)-456(co)-28(de)-457(to)-457(load)-456(programs)-457(in)27(to)-456(these)-457(targets;)-518(since)]TJ 0 -13.15 TD[(VxW)83(orks)-452(supp)-28(orts)-452(NFS,)-453(all)-452(y)26(ou)-451(m)27(ust)-452(do)-453(is)-452(ensure)-453(test)-452(programs)-453(are)-453(on)-452(an)]TJ 0 -13.15 TD[(exp)-27(orted)-334(\014lesystem.)]TJ 0 -16.14 TD[(When)-362(y)27(ou)-362(compile)-362(for)-363(VxW)83(orks,)-369(use)-363(the)-362(link)27(er)-362(`)]TJ/F4 10.91 Tf 233.45 0 TD[(-r)]TJ/F1 10.91 Tf 11.45 0 TD[(')-362(option)-363(to)-362(mak)27(e)-362(the)-362(link)26(er)]TJ -244.9 -13.15 TD[(output)-274(relo)-28(catable|at)-275(least)-275(if)-274(y)26(ou)-273(w)26(an)28(t)-274(to)-274(use)-275(library)-275(routines.)-425(Man)27(y)-274(standard)]TJ 0 -13.15 TD[(C)-377(routines)-378(are)-377(included)-378(in)-377(VxW)82(orks;)-399(often)-377(no)-378(additional)-378(libraries)-377(are)-378(needed.)]TJ 0 -13.15 TD[(See)-333(y)27(our)-332(VxW)82(orks)-332(system)-334(do)-27(cumen)26(tation)-332(for)-333(additional)-334(details.)]TJ ET 0 g 0 G -endstream -endobj -185 0 obj -<< -/F1 9 0 R -/F13 179 0 R -/F4 28 0 R -/F7 49 0 R -/F5 31 0 R ->> -endobj -183 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 185 0 R ->> -endobj -188 0 obj -<< -/Length 3782 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(34)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(5.6)-562(The)-375(\014les)-375(DejaGn)30(u)-374(reads)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(The)]TJ/F4 10.91 Tf 22.3 0 TD[(runtest)]TJ/F1 10.91 Tf 43.6 0 TD[(program)-321(used)-322(to)-322(in)27(v)28(ok)28(e)-321(DejaGn)27(u)-321(is)-322(a)-321(short)-322(shell)-322(script)-321(generated)-322(b)27(y)]TJ/F4 10.91 Tf 328.25 0 TD[(make)]TJ/F1 10.91 Tf -409.09 -13.15 TD[(during)-349(the)-350(con\014guration)-350(pro)-28(cess.)-495(Its)-350(main)-350(task)-350(is)-350(to)-350(read)-350(the)-350(main)-350(test)-350(framew)27(ork)-349(driv)27(er,)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 63 0 TD[('.)]TJ -51.09 -16.14 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 63 0 TD[(',)-333(in)-333(turn,)-333(reads)]TJ/F4 10.91 Tf 78.31 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(co)-27(de)-334(from)-333(certain)-333(other)-334(\014les,)-333(in)-333(this)-334(order:)]TJ -191.37 -16.14 TD[(1.)-660(Eac)27(h)-330(of)-331(the)-331(`)]TJ/F4 10.91 Tf 76.98 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.81 0 TD[(')-330(lo)-28(cal)-331(de\014nition)-331(\014les)-331(a)27(v)55(ailable.)-442(See)-331(Chapter)-331(4)-331([Setting)]TJ/F4 10.91 Tf 263.21 0 TD[(runtest)]TJ/F1 10.91 Tf -370.31 -13.15 TD[(defaults],)-333(page)-333(15,)-333(for)-334(details.)]TJ -15.69 -16.14 TD[(2.)-660(`)]TJ/F4 10.91 Tf 18.72 0 TD[(lib/utils.exp)]TJ/F1 10.91 Tf 74.45 0 TD[(',)-281(a)-269(collection)-269(of)-268(utilit)26(y)-267(pro)-28(cedures.)-423(See)-269(Section)-269(5.3)-268([DejaGn)26(u)-267(Builtins],)]TJ -77.48 -13.15 TD[(page)-333(23,)-333(for)-333(descriptions)-334(of)-333(these)-333(pro)-28(cedures.)]TJ -15.69 -16.14 TD[(3.)-660(`)]TJ/F4 10.91 Tf 18.72 0 TD[(lib/framework.exp)]TJ/F1 10.91 Tf 97.36 0 TD[(',)-452(a)-429(\014le)-428(of)-429(subroutines)-429(mean)27(t)-428(for)]TJ/F4 10.91 Tf 164.39 0 TD[(runtest)]TJ/F1 10.91 Tf 44.77 0 TD[(itself)-428(rather)-429(than)-429(for)]TJ -309.55 -13.15 TD[(general-purp)-27(ose)-334(use)-333(in)-333(b)-28(oth)]TJ/F4 10.91 Tf 135.94 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(and)-333(test)-333(suites.)]TJ -195.36 -16.14 TD[(4.)-660(`)]TJ/F4 10.91 Tf 18.72 0 TD[(debugger.exp)]TJ/F1 10.91 Tf 68.73 0 TD[(',)-525(Don)-487(Lib)-28(es')-487(Tcl)-487(Debugger.)-906(\(See)]TJ/F5 10.91 Tf 175.29 0 TD[(A)-486(Debugger)-488(for)-487(Tcl)-487(Applications)]TJ/F1 10.91 Tf -247.05 -13.15 TD[(b)27(y)-420(Don)-422(Lib)-28(es.)-709(This)-421(pap)-28(er)-422(is)-421(distributed)-422(with)]TJ/F4 10.91 Tf 228.72 0 TD[(expect)]TJ/F1 10.91 Tf 38.96 0 TD[(in)-421(P)27(ostScript)-421(form)-421(as)-422(the)-422(\014le)]TJ -267.68 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(expect/tcl-debug.ps)]TJ/F1 10.91 Tf 108.82 0 TD[('.\))]TJ -127.54 -16.14 TD[(5.)-660(`)]TJ/F4 10.91 Tf 18.72 0 TD[(lib/remote.exp)]TJ/F1 10.91 Tf 80.18 0 TD[(',)-249(a)-227(collection)-228(of)-228(subroutines)-228(mean)26(t)-227(for)-227(connecting)-228(to)-228(remote)-228(mac)26(hines.)]TJ -98.9 -16.14 TD[(6.)-660(`)]TJ/F4 10.91 Tf 18.72 0 TD[(lib/target.exp)]TJ/F1 10.91 Tf 80.18 0 TD[(',)-479(a)-451(collection)-450(of)-451(subroutines)-450(used)-451(for)-450(the)-450(con\014guration)-451(systems)-450(in)]TJ -83.21 -13.15 TD[(DejaGn)27(u.)-443(These)-333(pro)-28(cedures)-334(t)27(ypically)-332(manipulate)-333(or)-334(utilize)-333(the)-333(con\014guration)-334(system.)]TJ -15.69 -16.14 TD[(7.)-660(An)-380(initialization)-381(\014le)]TJ/F5 10.91 Tf 116.33 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.91 0 TD[(_init.exp)]TJ/F1 10.91 Tf 51.54 0 TD[(.)-585(See)-381(Section)-380(5.2)-381([Initialization)-380(mo)-28(dule],)-393(page)-380(22,)]TJ -171.09 -13.15 TD[(for)-333(more)-333(discussion)-333(of)-334(init)-333(\014les.)]TJ ET 0 g 0 G -endstream -endobj -189 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R -/F5 31 0 R ->> -endobj -187 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 189 0 R ->> -endobj -192 0 obj -<< -/Length 5629 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(35)]TJ/F2 14.35 Tf 0 -23.91 TD[(5.7)-562(The)-375(\014les)-375(DejaGn)30(u)-374(writes)]TJ/F4 10.91 Tf 14.94 -23.12 TD[(runtest)]TJ/F1 10.91 Tf 44.08 0 TD[(alw)27(a)28(ys)-364(writes)-365(t)26(w)28(o)-364(kinds)-365(of)-366(output)-365(\014les:)-508(summary)-365(logs)-366(and)-365(detailed)-365(logs.)-540(The)]TJ -59.02 -13.15 TD[(con)27(ten)28(ts)-332(of)-334(b)-27(oth)-334(of)-333(these)-333(are)-334(determined)-333(b)27(y)-333(y)27(our)-332(tests.)]TJ 14.94 -16.14 TD[(F)83(or)-404(troublesho)-27(oting,)-423(a)-404(third)-405(kind)-404(of)-405(output)-404(\014le)-405(is)-404(useful:)-587(use)-405(`)]TJ/F4 10.91 Tf 305.16 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(')-404(to)-405(request)-404(an)]TJ -360.19 -13.15 TD[(output)-333(\014le)-333(sho)27(wing)-333(details)-333(of)-333(what)]TJ/F4 10.91 Tf 169.21 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(is)-333(doing)-333(in)27(ternally)83(.)]TJ/F2 13.09 Tf -207.21 -26.9 TD[(5.7.1)-562(Summary)-375(log)]TJ/F4 10.91 Tf 14.94 -23.11 TD[(runtest)]TJ/F1 10.91 Tf 44.35 0 TD[(alw)27(a)28(ys)-389(pro)-28(duces)-390(a)-391(summary)-390(output)-390(\014le)-391(`)]TJ/F5 10.91 Tf 197.61 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.49 0 TD[(.sum)]TJ/F1 10.91 Tf 22.91 0 TD[('.)-615(This)-390(summary)-391(sho)27(ws)-389(the)]TJ -298.3 -13.15 TD[(names)-384(of)-385(all)-385(test)-385(\014les)-385(run;)-410(for)-385(eac)27(h)-384(test)-385(\014le,)-398(one)-384(line)-385(of)-385(output)-385(from)-385(eac)27(h)]TJ/F4 10.91 Tf 358.83 0 TD[(pass)]TJ/F1 10.91 Tf 27.11 0 TD[(command)]TJ -385.94 -13.15 TD[(\(sho)27(wing)-429(status)-429(`)]TJ/F4 10.91 Tf 83.2 0 TD[(PASS)]TJ/F1 10.91 Tf 22.9 0 TD[(')-429(or)-430(`)]TJ/F4 10.91 Tf 25.17 0 TD[(XPASS)]TJ/F1 10.91 Tf 28.64 0 TD[('\))-429(or)]TJ/F4 10.91 Tf 26.37 0 TD[(fail)]TJ/F1 10.91 Tf 27.6 0 TD[(command)-429(\(status)-430(`)]TJ/F4 10.91 Tf 91.32 0 TD[(FAIL)]TJ/F1 10.91 Tf 22.91 0 TD[(')-429(or)-430(`)]TJ/F4 10.91 Tf 25.16 0 TD[(XFAIL)]TJ/F1 10.91 Tf 28.64 0 TD[('\);)-478(trailing)]TJ -381.91 -13.15 TD[(summary)-292(statistics)-293(that)-292(coun)26(t)-291(passing)-293(and)-292(failing)-293(tests)-293(\(exp)-27(ected)-293(and)-293(unexp)-27(ected\);)-307(and)-292(the)]TJ 0 -13.15 TD[(full)-286(pathname)-287(and)-286(v)27(ersion)-286(n)27(um)27(b)-26(er)-287(of)-286(the)-287(to)-28(ol)-286(tested.)-429(\(All)-287(p)-28(ossible)-286(outcomes,)-296(and)-287(all)-286(errors,)]TJ 0 -13.15 TD[(are)-391(alw)27(a)27(ys)-390(re\015ected)-392(in)-391(the)-392(summary)-392(output)-391(\014le,)-406(regardless)-392(of)-392(whether)-391(or)-392(not)-392(y)27(ou)-390(sp)-28(ecify)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--all)]TJ/F1 10.91 Tf 28.64 0 TD[('.\))]TJ -16.73 -16.14 TD[(If)-444(an)27(y)-444(of)-444(y)27(our)-444(tests)-444(use)-444(the)-445(pro)-28(cedures)]TJ/F4 10.91 Tf 196.7 0 TD[(unresolved)]TJ/F1 10.91 Tf 57.27 0 TD[(,)]TJ/F4 10.91 Tf 8.18 0 TD[(unsupported)]TJ/F1 10.91 Tf 63 0 TD[(,)-472(or)]TJ/F4 10.91 Tf 22.76 0 TD[(untested)]TJ/F1 10.91 Tf 45.82 0 TD[(,)-472(the)]TJ -408.67 -13.15 TD[(summary)-333(output)-333(also)-333(tabulates)-334(the)-333(corresp)-28(onding)-333(outcomes.)]TJ 14.94 -16.14 TD[(F)83(or)-221(example,)-245(after)-222(`)]TJ/F4 10.91 Tf 90.76 0 TD[(runtest)-333(--tool)-333(binutils)]TJ/F1 10.91 Tf 127.55 0 TD[(',)-244(lo)-28(ok)-222(for)-222(a)-222(summary)-223(log)-222(in)-222(`)]TJ/F4 10.91 Tf 131.88 0 TD[(binutils.sum)]TJ/F1 10.91 Tf 68.72 0 TD[('.)]TJ -433.85 -13.15 TD[(Normally)83(,)]TJ/F4 10.91 Tf 51.15 0 TD[(runtest)]TJ/F1 10.91 Tf 44.62 0 TD[(writes)-415(this)-415(\014le)-416(in)-415(y)26(our)-414(curren)27(t)-415(w)27(orking)-414(directory;)-457(use)-415(the)-416(`)]TJ/F4 10.91 Tf 287.38 0 TD[(--outdir)]TJ/F1 10.91 Tf 45.82 0 TD[(')]TJ -428.97 -13.15 TD[(option)-333(to)-333(select)-333(a)-334(di\013eren)27(t)-332(directory)82(.)]TJ 0 -13.79 TD[(Here)-333(is)-333(a)-333(short)-334(sample)-333(summary)-333(log:)]TJ/F9 9.96 Tf 0 -9.44 TD[(\013)]TJ ET 23.98 -299.39 m 450.40 -299.39 l 450.40 -298.99 l 23.98 -298.99 l b BT 456.38 -299.39 TD[(\010)]TJ ET 18.00 -534.88 m 18.40 -534.88 l 18.40 -305.12 l 18.00 -305.12 l b BT/F4 10.91 Tf 21.39 -317.76 TD[(Test)-524(Run)-525(By)-525(rob)-525(on)-525(Mon)-525(May)-525(25)-525(21:40:57)-525(PDT)-525(1992)]TJ 91.63 -12.46 TD[(===)-524(gdb)-525(tests)-525(===)]TJ -91.63 -12.45 TD[(Running)-524(./gdb.t00/echo.exp)-525(...)]TJ 0 -12.45 TD[(PASS:)-1574(Echo)-525(test)]TJ 0 -12.46 TD[(Running)-524(./gdb.all/help.exp)-525(...)]TJ 0 -12.45 TD[(PASS:)-1574(help)-525(add-symbol-file)]TJ 0 -12.45 TD[(PASS:)-1574(help)-525(aliases)]TJ 0 -12.46 TD[(PASS:)-1574(help)-525(breakpoint)-525("bre")-525(abbreviation)]TJ 0 -12.45 TD[(FAIL:)-1574(help)-525(run)-525("r")-525(abbreviation)]TJ 0 -12.45 TD[(Running)-524(./gdb.t10/crossload.exp)-525(...)]TJ 0 -12.46 TD[(PASS:)-1574(m68k-elf)-525(\(elf-big\))-525(explicit)-525(format;)-525(loaded)]TJ 0 -12.45 TD[(XFAIL:)-1049(mips-ecoff)-525(\(ecoff-bigmips\))-525("ptype)-525(v_signed_char")-525(signed)]TJ 0 -12.45 TD[(C)-524(types)]TJ 91.63 -12.46 TD[(===)-524(gdb)-525(Summary)-525(===)]TJ -91.63 -12.45 TD[(#)-524(of)-525(expected)-525(passes)-525(5)]TJ 0 -12.45 TD[(#)-524(of)-525(expected)-525(failures)-525(1)]TJ 0 -12.46 TD[(#)-524(of)-525(unexpected)-525(failures)-525(1)]TJ 0 -12.45 TD[(/usr/latest/bin/gdb)-524(version)-525(4.6.5)-525(-q)]TJ ET 456.38 -534.88 m 456.77 -534.88 l 456.77 -305.12 l 456.38 -305.12 l b BT/F9 9.96 Tf 18 -541.11 TD[(\012)]TJ ET 23.98 -541.11 m 450.40 -541.11 l 450.40 -540.71 l 23.98 -540.71 l b BT 456.38 -541.11 TD[(\011)]TJ ET 0 g 0 G -endstream -endobj -193 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R -/F5 31 0 R -/F9 59 0 R ->> -endobj -191 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 193 0 R ->> -endobj -196 0 obj -<< -/Length 5683 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(36)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 13.09 Tf 0 -23.91 TD[(5.7.2)-562(Detailed)-375(log)]TJ/F4 10.91 Tf 14.94 -22.46 TD[(runtest)]TJ/F1 10.91 Tf 43.69 0 TD[(also)-329(sa)27(v)28(es)-328(a)-329(detailed)-330(log)-329(\014le)-329(`)]TJ/F5 10.91 Tf 137.78 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.49 0 TD[(.log)]TJ/F1 10.91 Tf 22.91 0 TD[(',)-330(sho)27(wing)-328(an)27(y)-328(output)-329(generated)-330(b)27(y)-328(tests)]TJ -237.81 -13.15 TD[(as)-328(w)27(ell)-328(as)-329(the)-329(summary)-329(output.)-442(F)82(or)-328(example,)-330(after)-328(`)]TJ/F4 10.91 Tf 249.11 0 TD[(runtest)-333(--tool)-333(binutils)]TJ/F1 10.91 Tf 127.55 0 TD[(',)-329(lo)-28(ok)-329(for)-328(a)]TJ -376.66 -13.16 TD[(detailed)-332(log)-332(in)-332(`)]TJ/F4 10.91 Tf 74.51 0 TD[(binutils.log)]TJ/F1 10.91 Tf 68.72 0 TD[('.)-444(Normally)83(,)]TJ/F4 10.91 Tf 60.93 0 TD[(runtest)]TJ/F1 10.91 Tf 43.71 0 TD[(writes)-332(this)-332(\014le)-332(in)-332(y)27(our)-331(curren)27(t)-332(w)27(orking)]TJ -247.87 -13.15 TD[(directory;)-333(use)-333(the)-333(`)]TJ/F4 10.91 Tf 90.12 0 TD[(--outdir)]TJ/F1 10.91 Tf 45.82 0 TD[(')-333(option)-333(to)-333(select)-334(a)-333(di\013eren)27(t)-333(directory)83(.)]TJ -135.94 -13.13 TD[(Here)-333(is)-333(a)-333(brief)-334(example)-333(sho)27(wing)-333(a)-333(detailed)-333(log)-334(for)]TJ/F7 10.91 Tf 239.91 0 TD[(g)]TJ/F4 10.91 Tf 6.99 0 TD[(++)]TJ/F1 10.91 Tf 15.09 0 TD[(tests:)]TJ/F9 9.96 Tf -261.99 -9.44 TD[(\013)]TJ ET 23.98 -94.45 m 450.40 -94.45 l 450.40 -94.05 l 23.98 -94.05 l b BT 456.38 -94.45 TD[(\010)]TJ ET 18.00 -516.74 m 18.40 -516.74 l 18.40 -100.18 l 18.00 -100.18 l b BT/F4 10.91 Tf 21.39 -112.82 TD[(Test)-524(Run)-525(By)-525(rob)-525(on)-525(Mon)-525(May)-525(25)-525(21:40:43)-525(PDT)-525(1992)]TJ 91.63 -24.91 TD[(===)-524(g++)-525(tests)-525(===)]TJ -91.63 -24.9 TD[(---)-524(Running)-525(./g++.other/t01-1.exp)-525(---)]TJ 45.81 -12.46 TD[(PASS:)-1574(operate)-525(delete)]TJ -45.81 -24.9 TD[(---)-524(Running)-525(./g++.other/t01-2.exp)-525(---)]TJ 45.81 -12.46 TD[(FAIL:)-1574(i960)-525(bug)-525(EOF)]TJ -45.81 -12.45 TD[(p0000646.C:)-524(In)-525(function)-525(`int)-1050(warn_return_1)-525(\(\)':)]TJ 0 -12.45 TD[(p0000646.C:109:)-524(warning:)-525(control)-525(reaches)-525(end)-525(of)-525(non-void)-525(function)]TJ 0 -12.46 TD[(p0000646.C:)-524(In)-525(function)-525(`int)-1050(warn_return_arg)-525(\(int\)':)]TJ 0 -12.45 TD[(p0000646.C:117:)-524(warning:)-525(control)-525(reaches)-525(end)-525(of)-525(non-void)-525(function)]TJ 0 -12.45 TD[(p0000646.C:)-524(In)-525(function)-525(`int)-1050(warn_return_sum)-525(\(int,)-525(int\)':)]TJ 0 -12.46 TD[(p0000646.C:125:)-524(warning:)-525(control)-525(reaches)-525(end)-525(of)-525(non-void)-525(function)]TJ 0 -12.45 TD[(p0000646.C:)-524(In)-525(function)-525(`struct)-525(foo)-525(warn_return_foo)-525(\(\)':)]TJ 0 -12.45 TD[(p0000646.C:132:)-524(warning:)-525(control)-525(reaches)-525(end)-525(of)-525(non-void)-525(function)]TJ 0 -24.91 TD[(---)-524(Running)-525(./g++.other/t01-4.exp)-525(---)]TJ 45.81 -12.45 TD[(FAIL:)-1574(abort)]TJ -45.81 -12.46 TD[(900403_04.C:8:)-524(zero)-525(width)-525(for)-525(bit-field)-525(`foo')]TJ 0 -12.45 TD[(---)-524(Running)-525(./g++.other/t01-3.exp)-525(---)]TJ 45.81 -12.45 TD[(FAIL:)-1574(segment)-525(violation)]TJ -45.81 -12.46 TD[(900519_12.C:9:)-524(parse)-525(error)-525(before)-525(`;')]TJ 0 -12.45 TD[(900519_12.C:12:)-524(Segmentation)-525(violation)]TJ 0 -12.45 TD[(/usr/latest/bin/gcc:)-524(Internal)-525(compiler)-525(error:)-525(program)-525(cc1plus)-525(got)]TJ 0 -12.46 TD[(fatal)-524(signal)]TJ 91.63 -24.9 TD[(===)-524(g++)-525(Summary)-525(===)]TJ -91.63 -24.91 TD[(#)-524(of)-525(expected)-525(passes)-525(1)]TJ 0 -12.45 TD[(#)-524(of)-525(expected)-525(failures)-525(3)]TJ 0 -12.46 TD[(/usr/ps/bin/g++)-524(version)-525(cygnus-2.0.1)]TJ ET 456.38 -516.74 m 456.77 -516.74 l 456.77 -100.18 l 456.38 -100.18 l b BT/F9 9.96 Tf 18 -522.97 TD[(\012)]TJ ET 23.98 -522.97 m 450.40 -522.97 l 450.40 -522.57 l 23.98 -522.57 l b BT 456.38 -522.97 TD[(\011)]TJ/F2 13.09 Tf -438.38 -24.94 TD[(5.7.3)-562(Logging)]TJ/F10 13.09 Tf 93.12 0 TD[(expect)]TJ/F2 13.09 Tf 45.33 0 TD[(in)31(ternal)-374(actions)]TJ/F1 10.91 Tf -123.51 -22.46 TD[(With)-360(the)-361(`)]TJ/F4 10.91 Tf 50.6 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(')-360(option,)-368(y)27(ou)-359(can)-361(request)-361(a)-360(log)-361(\014le)-360(sho)26(wing)-359(the)-361(output)-360(from)]TJ/F4 10.91 Tf 292.01 0 TD[(expect)]TJ/F1 10.91 Tf -397.64 -13.15 TD[(itself,)-416(running)-400(in)-400(debugging)-400(mo)-28(de.)-644(This)-400(\014le)-400(\(`)]TJ/F4 10.91 Tf 225.06 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[(',)-416(in)-400(the)-400(directory)-400(where)-400(y)27(ou)-399(start)]TJ/F4 10.91 Tf -265.15 -13.15 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(\))-333(sho)27(ws)-332(eac)26(h)-332(pattern)]TJ/F4 10.91 Tf 102.58 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(considers)-333(in)-333(analyzing)-333(test)-334(output.)]TJ -165.73 -15.49 TD[(This)-305(\014le)-306(re\015ects)-305(eac)27(h)]TJ/F4 10.91 Tf 102.88 0 TD[(send)]TJ/F1 10.91 Tf 26.24 0 TD[(command,)-311(sho)27(wing)-304(the)-306(string)-305(sen)26(t)-304(as)-306(input)-305(to)-306(the)-305(to)-28(ol)-306(under)]TJ -144.06 -13.15 TD[(test;)-333(and)-333(eac)27(h)]TJ/F4 10.91 Tf 70.06 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(command,)-333(sho)27(wing)-332(eac)26(h)-332(pattern)-333(it)-334(compares)-333(with)-333(the)-334(to)-27(ol)-334(output.)]TJ -93.12 -15.49 TD[(The)-333(log)-333(messages)-333(for)]TJ/F4 10.91 Tf 102.94 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(b)-27(egin)-334(with)-333(a)-333(message)-334(of)-333(the)-333(form)]TJ ET 0 g 0 G -endstream -endobj -197 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R -/F5 31 0 R -/F7 49 0 R -/F9 59 0 R -/F10 78 0 R ->> -endobj -195 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 197 0 R ->> -endobj -200 0 obj -<< -/Length 6757 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(5:)-444(The)-334(DejaGn)27(u)-332(Implemen)27(tation)-20326(37)]TJ/F4 10.91 Tf 28.8 -23.91 TD[(expect:)-524(does)-525({)]TJ/F5 10.91 Tf 80.18 0 TD[(to)-27(ol)-334(output)]TJ/F4 10.91 Tf 54.48 0 TD[(})-524(\(spawn_id)]TJ/F5 10.91 Tf 68.73 0 TD[(n)]TJ/F4 10.91 Tf 6.06 0 TD[(\))-524(match)-525(pattern)]TJ -209.45 -12.46 TD[({)]TJ/F5 10.91 Tf 5.73 0 TD[(exp)-27(ected)-334(pattern)]TJ/F4 10.91 Tf 80.63 0 TD[(}?)]TJ/F1 10.91 Tf -115.16 -16.14 TD[(F)83(or)-325(ev)27(ery)-325(unsuccessful)-325(matc)26(h,)]TJ/F4 10.91 Tf 145.84 0 TD[(expect)]TJ/F1 10.91 Tf 37.91 0 TD[(issues)-325(a)-326(`)]TJ/F4 10.91 Tf 42.44 0 TD[(no)]TJ/F1 10.91 Tf 11.46 0 TD[(')-325(after)-326(this)-326(message;)-328(if)-326(other)-325(patterns)-326(are)]TJ -237.65 -13.15 TD[(sp)-27(eci\014ed)-341(for)-341(the)-341(same)]TJ/F4 10.91 Tf 107.14 0 TD[(expect)]TJ/F1 10.91 Tf 38.09 0 TD[(command,)-342(they)-341(are)-341(re\015ected)-341(also,)-342(but)-341(without)-341(the)-341(\014rst)-340(part)]TJ -145.23 -13.15 TD[(of)-333(the)-333(message)-333(\(`)]TJ/F4 10.91 Tf 80.42 0 TD[(expect...match)-333(pattern)]TJ/F1 10.91 Tf 123.91 0 TD[('\).)]TJ -189.39 -16.14 TD[(When)]TJ/F4 10.91 Tf 32.05 0 TD[(expect)]TJ/F1 10.91 Tf 38.24 0 TD[(\014nds)-354(a)-355(matc)27(h,)-359(the)-354(log)-355(for)-354(the)-355(successful)-355(matc)27(h)-353(ends)-355(with)-355(`)]TJ/F4 10.91 Tf 281.12 0 TD[(yes)]TJ/F1 10.91 Tf 17.18 0 TD[(',)-359(follo)26(w)28(ed)]TJ -383.53 -13.15 TD[(b)27(y)-356(a)-356(record)-357(of)-357(the)]TJ/F4 10.91 Tf 90.13 0 TD[(expect)]TJ/F1 10.91 Tf 38.25 0 TD[(v)55(ariables)-356(set)-357(to)-356(describ)-28(e)-357(a)-357(successful)-356(matc)26(h.)-514(Here)-356(is)-357(an)-357(excerpt)]TJ -128.38 -13.15 TD[(from)-333(the)-333(debugging)-333(log)-334(for)-333(a)]TJ/F7 10.91 Tf 140.06 0 TD[(gdb)]TJ/F1 10.91 Tf 23.77 0 TD[(test:)]TJ/F9 9.96 Tf -163.83 -9.44 TD[(\013)]TJ ET 23.98 -116.74 m 450.40 -116.74 l 450.40 -116.34 l 23.98 -116.34 l b BT 456.38 -116.74 TD[(\010)]TJ ET 18.00 -440.32 m 18.40 -440.32 l 18.40 -122.47 l 18.00 -122.47 l b BT/F4 10.91 Tf 21.39 -136.02 TD[(send:)-524(sent)-525({break)-525(gdbme.c:34\\n})-525(to)-525(spawn)-525(id)-525(6)]TJ 0 -12.46 TD[(expect:)-524(does)-525({})-525(\(spawn_id)-525(6\))-525(match)-525(pattern)-525({Breakpoint.*at.*)-525(file)]TJ 5.72 -12.45 TD[(gdbme.c,)-524(line)-525(34.*\\\(gdb\\\))-525($}?)-525(no)]TJ -5.72 -12.45 TD[({.*\\\(gdb\\\))-524($}?)-525(no)]TJ 0 -12.46 TD[(expect:)-524(does)-525({})-525(\(spawn_id)-525(0\))-525(match)-525(pattern)-525({}?)-525(no)]TJ 0 -12.45 TD[({\\\(y)-524(or)-525(n\\\))-525(}?)-525(no)]TJ 0 -12.45 TD[({buffer_full}?)-524(no)]TJ 0 -12.46 TD[({virtual}?)-524(no)]TJ 0 -12.45 TD[({memory}?)-524(no)]TJ 0 -12.45 TD[({exhausted}?)-524(no)]TJ 0 -12.46 TD[({Undefined}?)-524(no)]TJ 0 -12.45 TD[({command}?)-524(no)]TJ 0 -12.45 TD[(break)-524(gdbme.c:34)]TJ 0 -12.46 TD[(Breakpoint)-524(8)-525(at)-525(0x23d8:)-525(file)-525(gdbme.c,)-525(line)-525(34.)]TJ 0 -12.45 TD[(\(gdb\))-524(expect:)-525(does)-525({break)-525(gdbme.c:34\\r\\nBreakpoint)-525(8)-525(at)-525(0x23d8:)]TJ 0 -12.45 TD[(file)-524(gdbme.c,)-525(line)-525(34.\\r\\n\(gdb\))-525(})-525(\(spawn_id)-525(6\))-525(match)-525(pattern)]TJ 0 -12.46 TD[({Breakpoint.*at.*)-524(file)-525(gdbme.c,)-525(line)-525(34.*\\\(gdb\\\))-525($}?)-525(yes)]TJ 0 -12.45 TD[(expect:)-524(set)-525(expect_out\(0,start\))-525({18})]TJ 0 -12.45 TD[(expect:)-524(set)-525(expect_out\(0,end\))-525({71})]TJ 0 -12.46 TD[(expect:)-524(set)-525(expect_out\(0,string\))-525({Breakpoint)-525(8)-525(at)-525(0x23d8:)-525(file)]TJ 0 -12.45 TD[(gdbme.c,)-524(line)-525(34.\\r\\n\(gdb\))-525(})]TJ 0 -12.45 TD[(expect:)-524(set)-525(expect_out\(spawn_id\))-525({6})]TJ 0 -12.46 TD[(expect:)-524(set)-525(expect_out\(buffer\))-525({break)-525(gdbme.c:34\\r\\nBreakpoint)-525(8)]TJ 0 -12.45 TD[(at)-524(0x23d8:)-525(file)-525(gdbme.c,)-525(line)-525(34.\\r\\n\(gdb\))-525(})]TJ 45.81 -12.45 TD[(PASS:)-1574(70)-3150(0)-3675(breakpoint)-525(line)-525(number)-525(in)-525(file)]TJ ET 456.38 -440.32 m 456.77 -440.32 l 456.77 -122.47 l 456.38 -122.47 l b BT/F9 9.96 Tf 18 -446.54 TD[(\012)]TJ ET 23.98 -446.54 m 450.40 -446.54 l 450.40 -446.14 l 23.98 -446.14 l b BT 456.38 -446.54 TD[(\011)]TJ/F1 10.91 Tf -438.38 -17.39 TD[(This)-309(example)-310(exhibits)-310(three)-309(prop)-28(erties)-310(of)]TJ/F4 10.91 Tf 198.73 0 TD[(expect)]TJ/F1 10.91 Tf 37.74 0 TD[(and)-309(DejaGn)27(u)-309(that)-310(migh)27(t)-309(b)-28(e)-309(surprising)-310(at)]TJ -236.47 -13.15 TD[(\014rst)-333(glance:)]TJ/F3 10.91 Tf 8.95 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(Empt)27(y)-272(output)-274(for)-274(the)-273(\014rst)-274(attempted)-274(matc)27(h.)-424(The)-273(\014rst)-274(set)-274(of)-273(attempted)-274(matc)27(hes)-273(sho)27(wn)]TJ 0 -13.15 TD[(ran)-377(against)-377(the)-377(output)-377(`)]TJ/F4 10.91 Tf 116.54 0 TD[({})]TJ/F1 10.91 Tf 11.46 0 TD[('|that)-377(is,)-387(no)-378(output.)]TJ/F4 10.91 Tf 109.71 0 TD[(expect)]TJ/F1 10.91 Tf 38.47 0 TD[(b)-27(egins)-377(attempting)-377(to)-377(matc)26(h)]TJ -276.18 -13.15 TD[(the)-401(patterns)-401(supplied)-401(immediately;)-435(often,)-419(the)-401(\014rst)-401(pass)-401(is)-401(against)-402(incomplete)-401(output)]TJ 0 -13.15 TD[(\(or)-333(completely)-333(b)-28(efore)-333(all)-334(output,)-333(as)-333(in)-334(this)-333(case\).)]TJ/F3 10.91 Tf -12.65 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(In)27(tersp)-26(ersed)-446(to)-27(ol)-445(output.)-780(The)-445(b)-28(eginning)-445(of)-445(the)-445(log)-445(en)27(try)-445(for)-445(the)-445(second)-445(attempted)]TJ 0 -13.15 TD[(matc)27(h)-341(ma)26(y)-341(b)-28(e)-342(hard)-343(to)-343(sp)-27(ot:)-463(this)-343(is)-342(b)-28(ecause)-343(the)-342(prompt)-343(`)]TJ/F4 10.91 Tf 273.03 0 TD[(\(gdb\))]TJ/F1 10.91 Tf 32.27 0 TD[(')-342(app)-28(ears)-342(on)-343(the)-343(same)]TJ -305.3 -13.15 TD[(line,)-333(just)-333(b)-28(efore)-333(the)-334(`)]TJ/F4 10.91 Tf 99.79 0 TD[(expect:)]TJ/F1 10.91 Tf 40.09 0 TD[(')-333(that)-333(marks)-333(the)-334(b)-28(eginning)-333(of)-333(the)-334(log)-333(en)27(try)83(.)]TJ/F3 10.91 Tf -152.53 -16.14 TD[(\017)]TJ/F1 10.91 Tf 12.65 0 TD[(F)83(ail-safe)-342(patterns.)-472(Man)27(y)-342(of)-343(the)-342(patterns)-343(tested)-342(are)-343(fail-safe)-343(patterns)-342(pro)27(vided)-342(b)27(y)]TJ/F7 10.91 Tf 390.27 0 TD[(gdb)]TJ/F1 10.91 Tf -390.27 -13.15 TD[(testing)-471(utilities,)-506(to)-472(reduce)-471(p)-28(ossible)-471(indeterminacy)82(.)-858(It)-472(is)-471(useful)-472(to)-471(an)27(ticipate)-471(p)-28(oten-)]TJ 0 -13.15 TD[(tial)-484(v)55(ariations)-484(caused)-485(b)27(y)-483(extreme)-485(system)-484(conditions)-485(\()]TJ/F7 10.91 Tf 265.55 0 TD[(gdb)]TJ/F1 10.91 Tf 25.42 0 TD[(migh)27(t)-483(issue)-485(the)-484(message)]TJ ET 0 g 0 G -endstream -endobj -201 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F5 31 0 R -/F7 49 0 R -/F9 59 0 R -/F3 21 0 R ->> -endobj -199 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 201 0 R ->> -endobj -204 0 obj -<< -/Length 2123 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(38)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ 21.6 -23.91 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(virtual)-333(memory)-333(exhausted)]TJ/F1 10.91 Tf 133.27 0 TD[(')-361(in)-361(rare)-361(circumstances\),)-368(or)-361(b)27(y)-360(c)27(hanges)-360(in)-361(the)-361(tested)-361(pro-)]TJ -136.3 -13.15 TD[(gram)-354(\(`)]TJ/F4 10.91 Tf 35.41 0 TD[(Undefined)-333(command)]TJ/F1 10.91 Tf 95.28 0 TD[(')-354(is)-355(the)-355(lik)27(eliest)-353(outcome)-355(if)-355(the)-354(name)-355(of)-355(a)-355(tested)-354(command)]TJ -130.69 -13.15 TD[(c)27(hanges\).)]TJ 0 -16.14 TD[(The)-355(pattern)-356(`)]TJ/F4 10.91 Tf 64.76 0 TD[({})]TJ/F1 10.91 Tf 57.27 0 TD[(')-355(is)-356(a)-355(particularly)-356(in)27(teresting)-355(fail-safe)-355(to)-356(notice;)-367(it)-355(c)27(hec)27(ks)-354(for)]TJ -122.03 -13.15 TD[(an)-421(unexp)-28(ected)]TJ/F11 8.97 Tf 74.65 0.39 TD[(h)]TJ ET 117.16 -58.83 m 135.26 -58.83 l 135.26 -58.43 l 117.16 -58.43 l b BT/F12 7.97 Tf 117.16 -65.55 TD[(RET)]TJ ET 117.16 -67.40 m 135.26 -67.40 l 135.26 -67.00 l 117.16 -67.00 l b BT/F11 8.97 Tf 134.76 -65.16 TD[(i)]TJ/F1 10.91 Tf 8.18 -0.39 TD[(prompt.)-709(This)-421(ma)27(y)-421(happ)-28(en,)-443(for)-422(example,)-444(if)-421(the)-422(tested)-421(to)-28(ol)-422(can)]TJ -103.34 -13.15 TD[(\014lter)-333(output)-333(through)-333(a)-334(pager.)]TJ 0 -16.14 TD[(These)-317(fail-safe)-317(patterns)-318(\(lik)27(e)-316(the)-318(debugging)-317(log)-318(itself)-77(\))-318(are)-317(primarily)-318(useful)-317(while)-317(dev)26(el-)]TJ 0 -13.15 TD[(oping)-357(test)-357(scripts.)-516(Use)-357(the)]TJ/F4 10.91 Tf 131.49 0 TD[(error)]TJ/F1 10.91 Tf 32.54 0 TD[(pro)-27(cedure)-358(to)-357(mak)27(e)-356(the)-358(actions)-357(for)-357(fail-safe)-357(patterns)]TJ -164.03 -13.16 TD[(pro)-27(duce)-391(messages)-390(starting)-391(with)-390(`)]TJ/F4 10.91 Tf 158.86 0 TD[(ERROR)]TJ/F1 10.91 Tf 28.64 0 TD[(')-390(on)-391(the)]TJ/F4 10.91 Tf 42.47 0 TD[(runtest)]TJ/F1 10.91 Tf 44.35 0 TD[(standard)-390(output,)-405(and)-390(in)-391(the)]TJ -274.32 -13.15 TD[(detailed)-333(log)-333(\014le.)]TJ ET 0 g 0 G -endstream -endobj -205 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F11 97 0 R -/F12 100 0 R ->> -endobj -203 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 205 0 R ->> -endobj -208 0 obj -<< -/Length 6090 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(6:)-444(Ho)27(w)-333(T)83(o)-333(W)83(rite)-333(a)-333(T)82(est)-332(Case)-21861(39)]TJ/F2 17.22 Tf 0 -25.91 TD[(6)-562(Ho)30(w)-374(T)93(o)-374(W)93(rite)-374(a)-375(T)93(est)-374(Case)]TJ/F2 14.35 Tf 0 -42.83 TD[(6.1)-562(W)93(riting)-374(a)-375(test)-375(case)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(The)-338(easiest)-338(w)27(a)28(y)-337(to)-338(prepare)-339(a)-338(new)-338(test)-338(case)-338(is)-338(to)-338(base)-339(it)-338(on)-338(an)-338(existing)-338(one)-338(for)-338(a)-338(similar)]TJ -14.94 -13.15 TD[(situation.)-702(There)-419(are)-419(t)26(w)28(o)-418(ma)-56(jor)-419(categories)-419(of)-419(tests:)-617(batc)27(h)-418(or)-420(in)27(teractiv)28(e.)-701(Batc)26(h)-418(orien)27(ted)]TJ 0 -13.15 TD[(tests)-333(are)-333(usually)-333(easier)-334(to)-333(write.)]TJ 14.94 -16.14 TD[(The)]TJ/F7 10.91 Tf 21.56 0 TD[(gcc)]TJ/F1 10.91 Tf 22.66 0 TD[(tests)-253(are)-254(a)-254(go)-28(o)-28(d)-254(example)-253(of)-254(batc)26(h)-252(orien)26(ted)-253(tests.)-418(All)]TJ/F7 10.91 Tf 246.46 0 TD[(gcc)]TJ/F1 10.91 Tf 22.66 0 TD[(tests)-253(consist)-254(primarily)]TJ -328.28 -13.15 TD[(of)-387(a)-388(call)-388(to)-388(a)-388(single)-388(common)-388(pro)-28(cedure,)-401(since)-388(all)-388(the)-388(tests)-388(either)-388(ha)27(v)27(e)-386(no)-388(output,)-402(or)-388(only)]TJ 0 -13.15 TD[(ha)27(v)28(e)-429(a)-431(few)-431(w)27(arning)-429(messages)-431(when)-430(successfully)-431(compiled.)-736(An)27(y)-430(non-w)27(arning)-430(output)-430(is)-431(a)]TJ 0 -13.15 TD[(test)-331(failure.)-444(All)-332(the)-332(C)-332(co)-28(de)-332(needed)-332(is)-332(k)27(ept)-331(in)-332(the)-331(test)-332(directory)82(.)-443(The)-332(test)-332(driv)27(er,)-331(written)-332(in)]TJ/F4 10.91 Tf 0 -13.15 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(,)-302(need)-294(only)-295(get)-294(a)-295(listing)-294(of)-295(all)-294(the)-295(C)-294(\014les)-295(in)-294(the)-295(directory)82(,)-301(and)-294(compile)-295(them)-294(all)-295(using)]TJ -34.36 -13.15 TD[(a)-307(generic)-307(pro)-28(cedure.)-435(This)-308(pro)-27(cedure)-307(and)-308(a)-307(few)-307(others)-307(supp)-28(orting)-307(for)-307(these)-307(tests)-308(are)-307(k)27(ept)-306(in)]TJ 0 -13.15 TD[(the)-325(library)-325(mo)-28(dule)-325(`)]TJ/F4 10.91 Tf 95.55 0 TD[(lib/c-torture.exp)]TJ/F1 10.91 Tf 97.36 0 TD[(')-325(in)-325(the)]TJ/F7 10.91 Tf 37.92 0 TD[(gcc)]TJ/F1 10.91 Tf 23.43 0 TD[(test)-325(suite.)-441(Most)-325(tests)-326(of)-325(this)-325(kind)-325(use)]TJ -254.26 -13.15 TD[(v)27(ery)-332(few)]TJ/F4 10.91 Tf 43.67 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(features,)-333(and)-333(are)-333(co)-28(ded)-334(almost)-333(purely)-333(in)-334(Tcl.)]TJ -81.67 -16.14 TD[(W)83(riting)-332(the)-334(complete)-333(suite)-333(of)-334(C)-333(tests,)-333(then,)-334(consisted)-333(of)-333(these)-334(steps:)]TJ 5.91 -16.14 TD[(1.)-660(Cop)27(ying)-289(all)-290(the)-291(C)-290(co)-28(de)-290(in)27(to)-290(the)-290(test)-291(directory)83(.)-429(These)-291(tests)-290(w)27(ere)-290(based)-290(on)-290(the)-291(C-torture)]TJ 15.69 -13.15 TD[(test)-263(created)-264(b)26(y)-263(T)83(orb)-55(jorn)-264(Granlund)-264(\(on)-264(b)-27(ehalf)-264(of)-264(the)-264(F)82(ree)-263(Soft)27(w)28(are)-263(F)82(oundation\))-263(for)]TJ/F7 10.91 Tf 390.51 0 TD[(gcc)]TJ/F1 10.91 Tf -390.51 -13.15 TD[(dev)27(elopmen)28(t.)]TJ -15.69 -16.14 TD[(2.)-660(W)83(riting)-333(\(and)-333(debugging\))-333(the)-334(generic)]TJ/F4 10.91 Tf 193.33 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(pro)-27(cedures)-334(for)-333(compilation.)]TJ -231.33 -16.14 TD[(3.)-660(W)83(riting)-359(the)-360(simple)-360(test)-360(driv)27(er:)-497(its)-360(main)-360(task)-360(is)-359(to)-360(searc)26(h)-359(the)-359(directory)-360(\(using)-360(the)-360(Tcl)]TJ 15.69 -13.15 TD[(pro)-27(cedure)]TJ/F4 10.91 Tf 50.96 0 TD[(glob)]TJ/F1 10.91 Tf 26.84 0 TD[(for)-360(\014lename)-360(expansion)-361(with)-360(wildcards\))-361(and)-360(call)-361(a)-360(Tcl)-361(pro)-27(cedure)-361(with)]TJ -77.8 -13.15 TD[(eac)27(h)-332(\014lename.)-444(It)-334(also)-333(c)27(hec)27(ks)-332(for)-333(a)-334(few)-333(errors)-333(from)-334(the)-333(testing)-333(pro)-28(cedure.)]TJ -6.66 -19.13 TD[(T)83(esting)-412(in)27(teractiv)28(e)-412(programs)-412(is)-412(in)26(trinsically)-411(more)-413(complex.)-681(T)82(ests)-412(for)-412(most)-412(in)26(teractiv)28(e)]TJ -14.94 -13.15 TD[(programs)-333(require)-333(some)-333(trial)-334(and)-333(error)-333(b)-28(efore)-334(they)-333(are)-333(complete.)]TJ 14.94 -16.14 TD[(Ho)27(w)28(ev)28(er,)-465(some)-439(in)27(teractiv)28(e)-438(programs)-439(can)-439(b)-28(e)-439(tested)-439(in)-439(a)-438(simple)-439(fashion)-439(reminiscen)26(t)-438(of)]TJ -14.94 -13.15 TD[(batc)27(h)-378(tests.)-583(F)83(or)-379(example,)-391(prior)-379(to)-380(the)-379(creation)-379(of)-380(DejaGn)27(u,)-390(the)]TJ/F7 10.91 Tf 312.86 0 TD[(gdb)]TJ/F1 10.91 Tf 24.27 0 TD[(distribution)-379(already)]TJ -337.13 -13.15 TD[(included)-407(a)-408(wide-ranging)-407(testing)-408(pro)-28(cedure.)-667(This)-408(pro)-27(cedure)-408(w)27(as)-407(v)27(ery)-407(robust,)-426(and)-407(had)-408(al-)]TJ 0 -13.15 TD[(ready)-314(undergone)-315(m)27(uc)28(h)-314(more)-315(debugging)-314(and)-315(error)-315(c)27(hec)28(king)-314(than)-315(man)27(y)-314(recen)27(t)-313(DejaGn)26(u)-313(test)]TJ 0 -13.16 TD[(cases.)-685(Accordingly)83(,)-433(the)-413(b)-28(est)-414(approac)27(h)-413(w)27(as)-412(simply)-414(to)-414(encapsulate)-413(the)-414(existing)]TJ/F7 10.91 Tf 382.39 0 TD[(gdb)]TJ/F1 10.91 Tf 24.64 0 TD[(tests,)]TJ -407.03 -13.15 TD[(for)-355(rep)-27(orting)-356(purp)-27(oses.)-510(Thereafter,)-361(new)]TJ/F7 10.91 Tf 194.75 0 TD[(gdb)]TJ/F1 10.91 Tf 24.01 0 TD[(tests)-355(built)-355(up)-355(a)-355(family)-355(of)]TJ/F4 10.91 Tf 123.67 0 TD[(expect)]TJ/F1 10.91 Tf 38.24 0 TD[(pro)-27(cedures)]TJ -380.67 -13.15 TD[(sp)-27(ecialized)-334(for)]TJ/F7 10.91 Tf 71 0 TD[(gdb)]TJ/F1 10.91 Tf 23.77 0 TD[(testing.)]TJ -79.83 -16.14 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(gdb.t10/crossload.exp)]TJ/F1 10.91 Tf 120.28 0 TD[(')-333(is)-333(a)-333(go)-28(o)-28(d)-333(example)-334(of)-333(an)-333(in)26(teractiv)28(e)-332(test.)]TJ ET 0 g 0 G -endstream -endobj -209 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F7 49 0 R -/F4 28 0 R ->> -endobj -207 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 209 0 R ->> -endobj -212 0 obj -<< -/Length 10014 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(40)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(6.2)-562(Debugging)-375(a)-375(test)-375(case)]TJ/F1 10.91 Tf 0 -23.12 TD[(These)-333(are)-333(the)-333(kinds)-334(of)-333(debugging)-333(information)-334(a)27(v)56(ailable)-333(from)-333(DejaGn)27(u:)]TJ 5.91 -16.14 TD[(1.)-660(Output)-330(con)27(trolled)-329(b)26(y)-329(test)-330(scripts)-331(themselv)27(es,)-330(explicitly)-330(allo)27(w)28(ed)-330(for)-330(b)27(y)-330(the)-330(test)-330(author.)]TJ 15.69 -13.15 TD[(This)-252(kind)-252(of)-252(debugging)-252(output)-252(app)-28(ears)-252(in)-253(the)-252(detailed)-252(output)-252(recorded)-252(in)-252(the)-253(`)]TJ/F5 10.91 Tf 365.98 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.48 0 TD[(.log)]TJ/F1 10.91 Tf 22.91 0 TD[(')]TJ -407.37 -13.15 TD[(\014le.)-455(T)82(o)-336(do)-337(the)-337(same)-337(for)-337(new)-337(tests,)-338(use)-337(the)]TJ/F4 10.91 Tf 205.01 0 TD[(verbose)]TJ/F1 10.91 Tf 43.77 0 TD[(pro)-27(cedure)-337(\(whic)26(h)-336(in)-337(turn)-337(uses)-337(the)]TJ -248.78 -13.15 TD[(v)55(ariable)-328(also)-330(called)]TJ/F4 10.91 Tf 93.6 0 TD[(verbose)]TJ/F1 10.91 Tf 40.09 0 TD[(\))-329(to)-330(con)27(trol)-328(ho)26(w)-328(m)27(uc)27(h)-328(output)-330(to)-329(generate.)-443(This)-330(will)-330(mak)27(e)]TJ -133.69 -13.15 TD[(it)-328(easier)-328(for)-328(other)-328(p)-28(eople)-328(running)-328(the)-328(test)-329(to)-328(debug)-328(it)-328(if)-328(necessary)82(.)-442(Whenev)27(er)-327(p)-28(ossible,)]TJ 0 -13.15 TD[(if)-353(`)]TJ/F4 10.91 Tf 13.25 0 TD[($verbose)]TJ/F1 10.91 Tf 45.82 0 TD[(')-353(is)]TJ/F4 10.91 Tf 18.08 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(,)-358(there)-354(should)-353(b)-28(e)-354(no)-353(output)-354(other)-354(than)-353(the)-354(output)-354(from)]TJ/F4 10.91 Tf 271.73 0 TD[(pass)]TJ/F1 10.91 Tf 22.91 0 TD[(,)]TJ/F4 10.91 Tf 6.94 0 TD[(fail)]TJ/F1 10.91 Tf 22.91 0 TD[(,)]TJ/F4 10.91 Tf -407.37 -13.15 TD[(error)]TJ/F1 10.91 Tf 28.64 0 TD[(,)-370(and)]TJ/F4 10.91 Tf 28.6 0 TD[(warning)]TJ/F1 10.91 Tf 40.1 0 TD[(.)-533(Then,)-371(to)-363(whatev)27(er)-362(exten)27(t)-362(is)-363(appropriate)-363(for)-363(the)-364(particular)-363(test,)]TJ -97.34 -13.15 TD[(allo)27(w)-363(successiv)27(ely)-363(higher)-364(v)54(alues)-363(of)-364(`)]TJ/F4 10.91 Tf 170.44 0 TD[($verbose)]TJ/F1 10.91 Tf 45.82 0 TD[(')-364(to)-364(generate)-364(more)-364(information.)-537(Be)-364(kind)]TJ -216.26 -13.15 TD[(to)-333(other)-333(programmers)-333(who)-334(use)-333(y)27(our)-333(tests:)-444(pro)27(vide)-333(for)-333(a)-333(lot)-334(of)-333(debugging)-333(information.)]TJ -15.69 -16.14 TD[(2.)-660(Output)-293(from)-293(the)-293(in)26(ternal)-292(debugging)-293(functions)-293(of)-294(Tcl)-293(and)]TJ/F4 10.91 Tf 287.64 0 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(.)-431(There)-293(is)-293(a)-293(command)]TJ -306.31 -13.15 TD[(line)-329(options)-330(for)-329(eac)27(h;)-330(b)-28(oth)-329(forms)-330(of)-329(debugging)-330(output)-329(are)-330(recorded)-329(in)-330(the)-329(\014le)]TJ/F4 10.91 Tf 370.31 0 TD[(dbg.log)]TJ/F1 10.91 Tf -370.31 -13.15 TD[(in)-333(the)-333(curren)27(t)-333(directory)83(.)]TJ 0 -16.14 TD[(Use)-243(`)]TJ/F4 10.91 Tf 23.02 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(')-243(for)-243(information)-244(from)-243(the)]TJ/F4 10.91 Tf 122.16 0 TD[(expect)]TJ/F1 10.91 Tf 37.02 0 TD[(lev)27(el;)-272(it)-244(generates)-243(displa)27(ys)-243(of)-243(the)]TJ/F4 10.91 Tf 153.75 0 TD[(expect)]TJ/F1 10.91 Tf -376.04 -13.15 TD[(attempts)-266(to)-267(matc)26(h)-265(the)-267(to)-28(ol)-267(output)-267(with)-267(the)-267(patterns)-267(sp)-28(eci\014ed)-266(\(see)-267(Section)-267(5.7.3)-267([Debug)]TJ 0 -13.15 TD[(Log],)-357(page)-353(36\).)-503(This)-353(output)-353(can)-353(b)-28(e)-353(v)27(ery)-352(helpful)-353(while)-353(dev)27(eloping)-352(test)-353(scripts,)-357(since)-353(it)]TJ 0 -13.15 TD[(sho)27(ws)-322(precisely)-323(the)-323(c)27(haracters)-322(receiv)26(ed.)-440(Iterating)-323(b)-27(et)26(w)28(een)-322(the)-323(latest)-323(attempt)-323(at)-323(a)-323(new)]TJ 0 -13.15 TD[(test)-347(script)-348(and)-348(the)-347(corresp)-28(onding)-348(`)]TJ/F4 10.91 Tf 165.6 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[(')-347(can)-348(allo)27(w)-347(y)27(ou)-347(to)-347(create)-348(the)-348(\014nal)-347(patterns)]TJ -205.69 -13.15 TD[(b)27(y)-332(\\cut)-333(and)-334(paste".)-444(This)-333(is)-334(sometimes)-333(the)-333(b)-28(est)-334(w)27(a)28(y)-332(to)-334(write)-333(a)-333(test)-334(case.)]TJ 0 -16.14 TD[(Use)-486(`)]TJ/F4 10.91 Tf 25.67 0 TD[(--strace)]TJ/F1 10.91 Tf 45.82 0 TD[(')-486(to)-486(see)-486(more)-486(detail)-487(at)-486(the)-486(Tcl)-486(lev)26(el;)-561(this)-487(sho)27(ws)-485(ho)27(w)-486(Tcl)-486(pro)-28(cedure)]TJ -71.49 -13.15 TD[(de\014nitions)-484(expand,)-522(as)-485(they)-484(execute.)-898(The)-485(asso)-28(ciated)-484(n)27(um)27(b)-26(er)-485(con)27(trols)-484(the)-484(depth)-485(of)]TJ 0 -13.16 TD[(de\014nitions)-247(expanded;)-277(see)-248(the)-248(discussion)-247(of)-248(`)]TJ/F4 10.91 Tf 202.3 0 TD[(--strace)]TJ/F1 10.91 Tf 45.81 0 TD[(')-247(in)-248(Chapter)-248(3)-248([Running)-248(the)-248(T)82(ests],)]TJ -248.11 -13.15 TD[(page)-333(9.)]TJ -15.69 -16.14 TD[(3.)-660(Finally)83(,)-273(if)-259(the)-260(v)55(alue)-258(of)-259(`)]TJ/F4 10.91 Tf 123.47 0 TD[(verbose)]TJ/F1 10.91 Tf 40.09 0 TD[(')-259(is)-259(3)-259(or)-259(greater,)]TJ/F4 10.91 Tf 76.27 0 TD[(runtest)]TJ/F1 10.91 Tf 42.92 0 TD[(turns)-259(on)-259(the)]TJ/F4 10.91 Tf 60.09 0 TD[(expect)]TJ/F1 10.91 Tf 37.19 0 TD[(command)]TJ/F4 10.91 Tf -364.34 -13.15 TD[(log_user)]TJ/F1 10.91 Tf 45.82 0 TD[(.)-434(This)-304(command)-305(prin)27(ts)-303(all)]TJ/F4 10.91 Tf 127.56 0 TD[(expect)]TJ/F1 10.91 Tf 37.68 0 TD[(actions)-304(to)-304(the)]TJ/F4 10.91 Tf 68.2 0 TD[(expect)]TJ/F1 10.91 Tf 37.68 0 TD[(standard)-304(output,)-310(to)]TJ -316.94 -13.15 TD[(the)-333(detailed)-333(log)-333(\014le,)-334(and)-333(\(if)-333(`)]TJ/F4 10.91 Tf 136.67 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(')-333(is)-333(on\))-333(to)-334(`)]TJ/F4 10.91 Tf 53.39 0 TD[(dbg.log)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ/F2 14.35 Tf -291.84 -30.88 TD[(6.3)-562(Adding)-375(a)-375(test)-375(case)-375(to)-375(a)-375(test)-375(suite)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(There)-357(are)-358(t)27(w)28(o)-357(sligh)27(tly)-357(di\013eren)27(t)-357(w)27(a)27(ys)-356(to)-358(add)-358(a)-358(test)-357(case.)-518(One)-358(is)-358(to)-357(add)-358(the)-358(test)-358(case)-357(to)]TJ -14.94 -13.16 TD[(an)-297(existing)-298(directory)83(.)-432(The)-297(other)-298(is)-297(to)-298(create)-297(a)-298(new)-297(directory)-298(to)-298(hold)-297(y)27(our)-297(test.)-432(The)-298(existing)]TJ 0 -13.15 TD[(test)-284(directories)-285(represen)26(t)-284(sev)27(eral)-284(st)27(yles)-284(of)-285(testing,)-295(all)-285(of)-285(whic)27(h)-284(are)-285(sligh)27(tly)-284(di\013eren)27(t;)-300(examine)]TJ 0 -13.15 TD[(the)-333(directories)-333(for)-333(the)-334(to)-28(ol)-333(of)-333(in)27(terest)-333(to)-333(see)-333(whic)26(h)-332(\(if)-333(an)26(y\))-332(is)-333(most)-334(suitable.)]TJ 14.94 -16.14 TD[(Adding)-347(a)]TJ/F7 10.91 Tf 47.89 0 TD[(gcc)]TJ/F1 10.91 Tf 23.68 0 TD[(test)-347(can)-348(b)-28(e)-347(v)27(ery)-347(simple:)-473(just)-348(add)-347(the)-348(C)-347(co)-28(de)-348(to)-348(an)27(y)-346(directory)-348(b)-28(eginning)]TJ -86.51 -13.15 TD[(with)-333(`)]TJ/F4 10.91 Tf 27.88 0 TD[(gcc.)]TJ/F1 10.91 Tf 22.91 0 TD[(')-333(and)-333(it)-333(runs)-334(on)-333(the)-333(next)-334(`)]TJ/F4 10.91 Tf 124.63 0 TD[(runtest)-333(--tool)-333(gcc)]TJ/F1 10.91 Tf 98.91 0 TD[('.)]TJ -259.39 -16.14 TD[(T)83(o)-288(add)-289(a)-289(test)-289(to)]TJ/F7 10.91 Tf 78.55 0 TD[(gdb)]TJ/F1 10.91 Tf 20.14 0 TD[(,)-297(\014rst)-289(add)-289(an)26(y)-288(source)-289(co)-27(de)-289(y)27(ou)-288(will)-289(need)-289(to)-289(the)-289(test)-289(directory)82(.)-429(Then)]TJ -113.63 -13.15 TD[(y)27(ou)-312(can)-313(either)-313(create)-314(a)-313(new)]TJ/F4 10.91 Tf 133.9 0 TD[(expect)]TJ/F1 10.91 Tf 37.78 0 TD[(\014le,)-317(or)-313(add)-313(y)27(our)-313(test)-313(to)-313(an)-313(existing)-314(one)-313(\(an)27(y)-312(\014le)-314(with)-313(a)]TJ -171.68 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(')-309(su\016x\).)-437(Creating)-310(a)-310(new)-310(`)]TJ/F4 10.91 Tf 122.32 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(')-309(\014le)-310(is)-310(probably)-310(a)-310(b)-28(etter)-310(idea)-310(if)-310(the)-310(test)-310(is)-310(signi\014can)27(tly)]TJ -171.17 -13.15 TD[(di\013eren)27(t)-395(from)-395(existing)-396(tests.)-632(Adding)-396(it)-396(as)-396(a)-395(separate)-396(\014le)-396(also)-396(mak)27(es)-395(upgrading)-396(easier.)-632(If)]TJ 0 -13.15 TD[(the)-365(C)-365(co)-28(de)-365(has)-365(to)-365(b)-28(e)-365(already)-365(compiled)-365(b)-28(efore)-365(the)-365(test)-365(will)-366(run,)-373(then)-365(y)27(ou'll)-364(ha)27(v)27(e)-364(to)-365(add)-365(it)]TJ 0 -13.15 TD[(to)-333(the)-333(`)]TJ/F4 10.91 Tf 35.15 0 TD[(Makefile.in)]TJ/F1 10.91 Tf 63 0 TD[(')-333(\014le)-333(for)-333(that)-334(test)-333(directory)82(,)-332(then)-333(run)]TJ/F4 10.91 Tf 179.27 0 TD[(configure)]TJ/F1 10.91 Tf 55.19 0 TD[(and)]TJ/F4 10.91 Tf 21.21 0 TD[(make)]TJ/F1 10.91 Tf 22.91 0 TD[(.)]TJ -361.79 -16.14 TD[(Adding)-333(a)-333(test)-333(b)26(y)-332(creating)-333(a)-334(new)-333(directory)-333(is)-334(v)27(ery)-332(similar:)]TJ -9.03 -16.14 TD[(1.)-660(Create)-360(the)-360(new)-360(directory)82(.)-523(All)-360(sub)-28(directory)-360(names)-360(b)-28(egin)-360(with)-360(the)-360(name)-361(of)-360(the)-360(to)-28(ol)-360(to)]TJ 15.69 -13.15 TD[(test;)-341(e.g.)]TJ/F7 10.91 Tf 45.77 0 TD[(g)]TJ/F4 10.91 Tf 6.99 0 TD[(++)]TJ/F1 10.91 Tf 15.15 0 TD[(tests)-338(migh)27(t)-338(b)-27(e)-339(in)-338(a)-339(directory)-338(called)-339(`)]TJ/F4 10.91 Tf 174.21 0 TD[(g++.other)]TJ/F1 10.91 Tf 51.55 0 TD[('.)-459(There)-339(can)-338(b)-28(e)-339(m)27(ultiple)]TJ -293.67 -13.15 TD[(test)-333(directories)-333(that)-333(start)-334(with)-333(the)-333(same)-334(to)-28(ol)-333(name)-333(\(suc)27(h)-333(as)-333(`)]TJ/F4 10.91 Tf 291.36 0 TD[(g++)]TJ/F1 10.91 Tf 17.19 0 TD[('\).)]TJ ET 0 g 0 G -endstream -endobj -213 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F5 31 0 R -/F4 28 0 R -/F7 49 0 R ->> -endobj -211 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 213 0 R ->> -endobj -216 0 obj -<< -/Length 9135 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(6:)-444(Ho)27(w)-333(T)83(o)-333(W)83(rite)-333(a)-333(T)82(est)-332(Case)-21861(41)]TJ 5.91 -23.91 TD[(2.)-660(Add)-320(the)-320(new)-320(directory)-320(name)-320(to)-321(the)-320(`)]TJ/F4 10.91 Tf 190.51 0 TD[(configdirs)]TJ/F1 10.91 Tf 57.27 0 TD[(')-320(de\014nition)-320(in)-320(the)-320(`)]TJ/F4 10.91 Tf 89.12 0 TD[(configure.in)]TJ/F1 10.91 Tf 68.73 0 TD[(')-320(\014le)]TJ -389.94 -13.15 TD[(for)-285(the)-287(test)-286(suite)-286(directory)83(.)-428(This)-286(w)27(a)28(y)-285(when)]TJ/F4 10.91 Tf 204.37 0 TD[(make)]TJ/F1 10.91 Tf 26.02 0 TD[(and)]TJ/F4 10.91 Tf 20.7 0 TD[(configure)]TJ/F1 10.91 Tf 54.67 0 TD[(next)-285(run,)-296(they)-286(include)]TJ -305.76 -13.15 TD[(the)-333(new)-333(directory)82(.)]TJ -15.69 -16.14 TD[(3.)-660(Add)-333(the)-333(new)-334(test)-333(case)-333(to)-334(the)-333(directory)82(,)-332(as)-333(ab)-28(o)27(v)28(e.)]TJ 0 -16.14 TD[(4.)-660(T)83(o)-387(add)-389(supp)-27(ort)-389(in)-388(the)-388(new)-388(directory)-388(for)-389(con\014gure)-388(and)-388(mak)27(e,)-401(y)27(ou)-387(m)26(ust)-387(also)-388(create)-388(a)]TJ/F4 10.91 Tf 15.69 -13.15 TD[(Makefile.in)]TJ/F1 10.91 Tf 67.88 0 TD[(and)-447(a)]TJ/F4 10.91 Tf 32.8 0 TD[(configure.in)]TJ/F1 10.91 Tf 68.73 0 TD[(.)-787(See)-448(section)-448(\\What)-447(Con\014gure)-448(Do)-28(es")-448(in)]TJ/F5 10.91 Tf 205.78 0 TD[(Cygn)27(us)]TJ -375.19 -13.15 TD[(Con\014gure)]TJ/F1 10.91 Tf 46.7 0 TD[(.)]TJ/F2 14.35 Tf -68.3 -30.89 TD[(6.4)-562(Hin)30(ts)-374(on)-375(writing)-375(a)-375(test)-375(case)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(There)-305(ma)27(y)-305(b)-28(e)-305(useful)-306(existing)-305(pro)-28(cedures)-305(already)-306(written)-305(for)-306(y)27(our)-305(test)-305(in)-306(the)-305(`)]TJ/F4 10.91 Tf 366.82 0 TD[(lib)]TJ/F1 10.91 Tf 17.18 0 TD[(')-305(direc-)]TJ -398.94 -13.15 TD[(tory)-333(of)-333(the)-333(DejaGn)26(u)-332(distribution.)-444(See)-334(Section)-333(5.3)-333([DejaGn)26(u)-332(Builtins],)-333(page)-334(23.)]TJ 14.94 -16.14 TD[(It)-291(is)-292(safest)-291(to)-292(write)-291(patterns)-292(that)-291(matc)27(h)]TJ/F8 10.91 Tf 190.3 0 TD[(al)-51(l)]TJ/F1 10.91 Tf 16.01 0 TD[(the)-291(output)-292(generated)-291(b)27(y)-291(the)-291(tested)-292(program;)]TJ -221.25 -13.15 TD[(this)-254(is)-255(called)]TJ/F5 10.91 Tf 60.58 0 TD[(closure)]TJ/F1 10.91 Tf 32.82 0 TD[(.)-418(If)-255(a)-254(pattern)-255(do)-28(es)-255(not)-254(matc)26(h)-253(the)-255(en)27(tire)-254(output,)-271(an)27(y)-254(output)-254(that)-255(remains)]TJ -93.4 -13.15 TD[(will)-416(b)-28(e)-416(examined)-416(b)27(y)-416(the)]TJ/F8 10.91 Tf 122.71 0 TD[(next)]TJ/F4 10.91 Tf 25.41 0 TD[(expect)]TJ/F1 10.91 Tf 38.9 0 TD[(command.)-693(In)-416(this)-416(situation,)-437(the)-416(precise)-417(b)-28(oundary)]TJ -187.02 -13.15 TD[(that)-341(determines)-341(whic)26(h)]TJ/F4 10.91 Tf 110.36 0 TD[(expect)]TJ/F1 10.91 Tf 38.09 0 TD[(command)-341(sees)-341(what)-342(is)-341(v)26(ery)-340(sensitiv)27(e)-341(to)-341(timing)-342(b)-27(et)26(w)28(een)-340(the)]TJ/F4 10.91 Tf -148.45 -13.15 TD[(expect)]TJ/F1 10.91 Tf 39.03 0 TD[(task)-427(and)-427(the)-428(task)-427(running)-427(the)-428(tested)-427(to)-28(ol.)-726(As)-428(a)-427(result,)-451(the)-427(test)-428(ma)27(y)-426(sometimes)]TJ -39.03 -13.16 TD[(app)-27(ear)-388(to)-388(w)27(ork,)-400(but)-388(is)-388(lik)27(ely)-387(to)-388(ha)27(v)28(e)-387(unpredictable)-388(results.)-608(\(This)-388(problem)-387(is)-388(particularly)]TJ 0 -13.15 TD[(lik)27(ely)-360(for)-360(in)26(teractiv)28(e)-360(to)-27(ols,)-368(but)-361(can)-361(also)-361(a\013ect)-360(batc)26(h)-359(to)-28(ols|esp)-28(ecially)-361(for)-361(tests)-360(that)-361(tak)27(e)-360(a)]TJ 0 -13.15 TD[(long)-270(time)-271(to)-271(\014nish.\))-424(The)-270(b)-28(est)-271(w)27(a)27(y)-269(to)-271(ensure)-271(closure)-271(is)-271(to)-271(use)-270(the)-271(`)]TJ/F4 10.91 Tf 307.09 0 TD[(-re)]TJ/F1 10.91 Tf 17.18 0 TD[(')-270(option)-271(for)-271(the)]TJ/F4 10.91 Tf 73.37 0 TD[(expect)]TJ/F1 10.91 Tf -397.64 -13.15 TD[(command)-323(to)-323(write)-323(the)-323(pattern)-324(as)-323(a)-323(full)-323(regular)-324(expressions;)-326(then)-323(y)26(ou)-322(can)-323(matc)27(h)-322(the)-324(end)-323(of)]TJ 0 -13.15 TD[(output)-344(using)-345(a)-344(`)]TJ/F4 10.91 Tf 76.79 0 TD[($)]TJ/F1 10.91 Tf 5.73 0 TD[('.)-478(It)-344(is)-345(also)-344(a)-345(go)-28(o)-28(d)-344(idea)-345(to)-344(write)-345(patterns)-345(that)-344(matc)27(h)-344(all)-345(a)27(v)56(ailable)-344(output)]TJ -82.52 -13.15 TD[(b)27(y)-398(using)-399(`)]TJ/F4 10.91 Tf 48.16 0 TD[(.*\\)]TJ/F1 10.91 Tf 17.18 0 TD[(')-398(after)-399(the)-399(text)-399(of)-399(in)27(terest;)-431(this)-399(will)-399(also)-399(matc)27(h)-398(an)27(y)-398(in)27(terv)27(ening)-397(blank)-399(lines.)]TJ -65.34 -13.15 TD[(Sometimes)-356(an)-357(alternativ)27(e)-356(is)-357(to)-357(matc)27(h)-356(end)-357(of)-357(line)-357(using)-356(`)]TJ/F4 10.91 Tf 269.44 0 TD[(\\r)]TJ/F1 10.91 Tf 11.46 0 TD[(')-356(or)-357(`)]TJ/F4 10.91 Tf 23.57 0 TD[(\\n)]TJ/F1 10.91 Tf 11.46 0 TD[(',)-362(but)-357(this)-357(is)-357(usually)-357(to)-27(o)]TJ -315.93 -13.15 TD[(dep)-27(enden)27(t)-333(on)-333(terminal)-333(settings.)]TJ 14.94 -16.14 TD[(Alw)27(a)28(ys)-494(escap)-28(e)-495(punctuation,)-535(suc)26(h)-494(as)-495(`)]TJ/F4 10.91 Tf 186.48 0 TD[(\()]TJ/F1 10.91 Tf 5.73 0 TD[(')-495(or)-495(`)]TJ/F4 10.91 Tf 26.59 0 TD[(")]TJ/F1 10.91 Tf 5.73 0 TD[(',)-535(in)-495(y)27(our)-494(patterns;)-576(for)-496(example,)-535(write)]TJ -239.47 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(\\\()]TJ/F1 10.91 Tf 11.45 0 TD[('.)-448(If)-335(y)27(ou)-334(forget)-335(to)-335(escap)-27(e)-335(punctuation,)-335(y)26(ou)-333(will)-335(usually)-335(see)-335(an)-334(error)-335(message)-335(lik)27(e)-334(`)]TJ/F4 10.91 Tf 388.88 0 TD[(extra)]TJ -403.36 -13.15 TD[(characters)-333(after)-333(close-quote)]TJ/F1 10.91 Tf 156.18 0 TD[('.)]TJ -141.24 -16.14 TD[(If)-372(y)27(ou)-372(ha)27(v)28(e)-372(trouble)-373(understanding)-372(wh)27(y)-372(a)-373(pattern)-372(do)-28(es)-373(not)-372(matc)26(h)-371(the)-373(program)-372(output,)]TJ -14.94 -13.15 TD[(try)-496(using)-497(the)-496(`)]TJ/F4 10.91 Tf 73.61 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(')-496(option)-497(to)]TJ/F4 10.91 Tf 59.29 0 TD[(runtest)]TJ/F1 10.91 Tf 40.09 0 TD[(,)-537(and)-496(examine)-497(the)-496(debug)-497(log)-497(carefully)83(.)-933(See)]TJ -213.08 -13.15 TD[(Section)-333(5.7.3)-333([Debug)-333(Log],)-334(page)-333(36.)]TJ 14.94 -16.14 TD[(Be)-304(careful)-305(not)-305(to)-304(neglect)-305(output)-305(generated)-305(b)27(y)-304(setup)-304(rather)-305(than)-305(b)27(y)-304(the)-304(in)26(teresting)-303(parts)]TJ -14.94 -13.15 TD[(of)-349(a)-349(test)-350(case.)-493(F)83(or)-349(example,)-353(while)-350(testing)]TJ/F7 10.91 Tf 201.56 0 TD[(gdb)]TJ/F1 10.91 Tf 20.13 0 TD[(,)-353(I)-349(issue)-350(a)-349(send)-350(`)]TJ/F4 10.91 Tf 78.38 0 TD[(set)-333(height)-333(0\\n)]TJ/F1 10.91 Tf 76 0 TD[(')-349(command.)]TJ -376.07 -13.15 TD[(The)-360(purp)-28(ose)-360(is)-360(simply)-361(to)-360(mak)27(e)-360(sure)]TJ/F7 10.91 Tf 176.31 0 TD[(gdb)]TJ/F1 10.91 Tf 24.06 0 TD[(nev)27(er)-359(calls)-360(a)-361(paging)-360(program.)-526(The)-360(`)]TJ/F4 10.91 Tf 173.42 0 TD[(set)-333(height)]TJ/F1 10.91 Tf 55.18 0 TD[(')]TJ -428.97 -13.15 TD[(command)-427(in)]TJ/F7 10.91 Tf 64.48 0 TD[(gdb)]TJ/F1 10.91 Tf 24.8 0 TD[(do)-27(es)-428(not)-427(generate)-428(an)27(y)-427(output;)-475(but)-427(running)]TJ/F8 10.91 Tf 215.41 0 TD[(any)]TJ/F1 10.91 Tf 22.64 0 TD[(command)-427(mak)27(es)]TJ/F7 10.91 Tf 84.54 0 TD[(gdb)]TJ/F1 10.91 Tf -411.87 -13.15 TD[(issue)-318(a)-319(new)-319(`)]TJ/F4 10.91 Tf 60.26 0 TD[(\(gdb\))]TJ/F1 10.91 Tf 32.27 0 TD[(')-318(prompt.)-440(If)-319(there)-319(w)27(ere)-318(no)]TJ/F4 10.91 Tf 128.04 0 TD[(expect)]TJ/F1 10.91 Tf 37.85 0 TD[(command)-318(to)-319(matc)26(h)-318(this)-319(prompt,)-322(the)]TJ -258.42 -13.15 TD[(output)-281(`)]TJ/F4 10.91 Tf 38.22 0 TD[(\(gdb\))]TJ/F1 10.91 Tf 32.27 0 TD[(')-281(b)-27(egins)-282(the)-281(text)-281(seen)-281(b)27(y)-280(the)-282(next)]TJ/F4 10.91 Tf 159.51 0 TD[(expect)]TJ/F1 10.91 Tf 37.43 0 TD[(command|whic)27(h)-280(migh)27(t)-280(mak)27(e)]TJ/F8 10.91 Tf 146.17 0 TD[(that)]TJ/F1 10.91 Tf -413.6 -13.16 TD[(pattern)-333(fail)-333(to)-333(matc)26(h.)]TJ 14.94 -16.13 TD[(T)83(o)-426(preserv)27(e)-426(basic)-426(sanit)27(y)83(,)-449(I)-426(also)-427(recommended)-426(that)-427(no)-427(test)-426(ev)27(er)-426(pass)-427(if)-426(there)-427(w)27(as)-425(an)26(y)]TJ -14.94 -13.16 TD[(kind)-373(of)-374(problem)-374(in)-373(the)-374(test)-374(case.)-566(T)83(o)-373(tak)27(e)-373(an)-374(extreme)-373(case,)-384(tests)-374(that)-374(pass)-373(ev)26(en)-372(when)-374(the)]TJ 0 -13.15 TD[(to)-27(ol)-381(will)-380(not)-381(spa)27(wn)-380(are)-380(misleading.)-586(Ideally)82(,)-391(a)-381(test)-380(in)-381(this)-380(sort)-381(of)-380(situation)-381(should)-380(not)-381(fail)]TJ 0 -13.15 TD[(either.)-453(Instead,)-337(prin)27(t)-336(an)-336(error)-336(message)-337(b)27(y)-335(calling)-336(one)-337(of)-336(the)-336(DejaGn)26(u)-335(pro)-28(cedures)]TJ/F4 10.91 Tf 389.97 0 TD[(error)]TJ/F1 10.91 Tf 32.3 0 TD[(or)]TJ/F4 10.91 Tf -422.27 -13.15 TD[(warning)]TJ/F1 10.91 Tf 40.09 0 TD[(.)]TJ ET 0 g 0 G -endstream -endobj -217 0 obj -<< -/F1 9 0 R -/F4 28 0 R -/F5 31 0 R -/F2 12 0 R -/F8 52 0 R -/F7 49 0 R ->> -endobj -215 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 217 0 R ->> -endobj -220 0 obj -<< -/Length 3621 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(42)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(6.5)-562(Sp)-31(ecial)-375(v)61(ariables)-374(used)-375(b)31(y)-374(test)-375(cases)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(Y)83(our)-488(test)-489(cases)-489(can)-489(use)-489(these)-490(v)55(ariables,)-527(with)-489(con)27(v)27(en)28(tional)-488(meanings)-489(\(as)-489(w)27(ell)-488(as)-489(the)]TJ -14.94 -13.15 TD[(v)55(ariables)-332(sa)27(v)27(ed)-332(in)-333(`)]TJ/F4 10.91 Tf 90.45 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-333(see)-333(Chapter)-333(4)-334([Setting)]TJ/F4 10.91 Tf 116.46 0 TD[(runtest)]TJ/F1 10.91 Tf 43.72 0 TD[(defaults],)-333(page)-333(15\):)]TJ/F8 10.91 Tf -267.65 -15.44 TD[(These)-357(variables)-358(ar)50(e)-357(available)-357(to)-358(al)-51(l)-358(test)-358(c)50(ases.)]TJ/F4 10.91 Tf -28.8 -22.12 TD[(prms_id)]TJ/F1 10.91 Tf 57.6 0 TD[(The)-378(trac)27(king)-377(system)-379(\(e.g.)]TJ/F7 10.91 Tf 129.46 0 TD[(gna)66(ts)]TJ/F1 10.91 Tf 31.09 0 TD[(\))-378(n)27(um)28(b)-27(er)-378(iden)26(tifying)-377(a)-378(corresp)-28(onding)-378(bugre-)]TJ -160.55 -13.15 TD[(p)-27(ort.)-445(\(`)]TJ/F4 10.91 Tf 35.49 0 TD[(0)]TJ/F1 10.91 Tf 5.72 0 TD[(')-333(if)-333(y)27(ou)-333(do)-333(not)-333(sp)-28(ecify)-333(it)-334(in)-333(the)-333(test)-334(script.\))]TJ/F4 10.91 Tf -98.81 -22.11 TD[(bug_id)]TJ/F1 10.91 Tf 57.6 0 TD[(An)-307(optional)-308(bug)-307(id;)-316(ma)26(y)-306(re\015ect)-308(a)-307(bug)-308(iden)27(ti\014cation)-307(from)-308(another)-307(organization.)]TJ 0 -13.15 TD[(\(`)]TJ/F4 10.91 Tf 7.27 0 TD[(0)]TJ/F1 10.91 Tf 5.73 0 TD[(')-333(if)-333(y)27(ou)-333(do)-333(not)-333(sp)-28(ecify)-333(it.\))]TJ/F4 10.91 Tf -70.6 -22.12 TD[(subdir)]TJ/F1 10.91 Tf 57.6 0 TD[(The)-333(sub)-28(directory)-333(for)-333(the)-334(curren)27(t)-332(test)-333(case.)]TJ/F8 10.91 Tf -28.8 -18.43 TD[(These)-357(variables)-358(should)-358(never)-358(b)51(e)-357(change)50(d.)-459(They)-358(app)50(e)51(ar)-356(in)-358(most)-358(tests.)]TJ/F4 10.91 Tf -28.8 -22.12 TD[(expect_out\(buffer\))]TJ/F1 10.91 Tf 57.6 -13.15 TD[(The)-297(output)-297(from)-298(the)-297(last)-297(command.)-433(This)-297(is)-297(an)-298(in)27(ternal)-296(v)54(ariable)-296(set)-297(b)26(y)]TJ/F4 10.91 Tf 337.01 0 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(.)]TJ/F4 10.91 Tf -428.97 -22.12 TD[(exec_output)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(This)-349(is)-349(the)-349(output)-349(from)-349(a)]TJ/F5 10.91 Tf 126.33 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_load)]TJ/F1 10.91 Tf 32.44 0 TD[(command.)-491(This)-349(only)-349(applies)-349(to)-349(to)-28(ols)-349(lik)26(e)]TJ/F7 10.91 Tf -177.69 -13.15 TD[(gcc)]TJ/F1 10.91 Tf 24.35 0 TD[(and)]TJ/F7 10.91 Tf 22.03 0 TD[(gas)]TJ/F1 10.91 Tf 23.13 0 TD[(whic)27(h)-407(pro)-28(duce)-408(an)-409(ob)-55(ject)-409(\014le)-408(that)-409(m)27(ust)-407(in)-409(turn)-408(b)-28(e)-408(executed)-409(to)]TJ -69.51 -13.15 TD[(complete)-333(a)-333(test.)]TJ/F4 10.91 Tf -57.6 -22.12 TD[(comp_output)]TJ/F1 10.91 Tf 57.6 -13.15 TD[(This)-398(is)-399(the)-399(output)-398(from)-399(a)]TJ/F5 10.91 Tf 129.58 0 TD[(to)-27(ol)]TJ/F4 10.91 Tf 18.92 0 TD[(_start)]TJ/F1 10.91 Tf 38.71 0 TD[(command.)-640(This)-399(is)-399(con)27(v)28(en)28(tionally)-398(used)]TJ -187.21 -13.15 TD[(for)-377(batc)27(h)-376(orien)26(ted)-376(programs,)-389(lik)27(e)]TJ/F7 10.91 Tf 162.4 0 TD[(gcc)]TJ/F1 10.91 Tf 24.01 0 TD[(and)]TJ/F7 10.91 Tf 21.69 0 TD[(gas)]TJ/F1 10.91 Tf 18.68 0 TD[(,)-388(that)-377(ma)26(y)-376(pro)-28(duce)-377(in)27(teresting)]TJ -226.78 -13.15 TD[(output)-333(\(w)27(arnings,)-332(errors\))-334(without)-333(further)-333(in)26(teraction.)]TJ ET 0 g 0 G -endstream -endobj -221 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R -/F8 52 0 R -/F7 49 0 R -/F5 31 0 R ->> -endobj -219 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 221 0 R ->> -endobj -224 0 obj -<< -/Length 6574 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(7:)-444(New)-334(T)83(o)-27(ols,)-333(T)82(argets,)-332(or)-334(Hosts)-20764(43)]TJ/F2 17.22 Tf 0 -25.91 TD[(7)-562(New)-375(T)93(o)-30(ols,)-375(T)92(argets,)-374(or)-375(Hosts)]TJ/F1 10.91 Tf 14.94 -28.09 TD[(The)-350(most)-350(common)-351(w)27(a)28(ys)-350(to)-350(extend)-351(the)-350(DejaGn)27(u)-350(framew)27(ork)-349(are:)-479(adding)-350(a)-351(suite)-350(of)-351(tests)]TJ -14.94 -13.15 TD[(for)-265(a)-266(new)-265(to)-28(ol)-266(to)-266(b)-27(e)-266(tested;)-288(adding)-266(supp)-28(ort)-265(for)-266(testing)-266(on)-265(a)-266(new)-265(target;)-289(and)-265(p)-28(orting)]TJ/F4 10.91 Tf 391.91 0 TD[(runtest)]TJ/F1 10.91 Tf -391.91 -13.15 TD[(to)-333(a)-333(new)-333(host.)]TJ/F2 14.35 Tf 0 -30.89 TD[(7.1)-562(W)93(riting)-374(tests)-375(for)-375(a)-375(new)-375(to)-31(ol)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(In)-426(general,)-450(the)-426(b)-28(est)-427(w)27(a)28(y)-426(to)-426(learn)-427(ho)27(w)-426(to)-426(write)-427(\(co)-27(de)-427(or)-427(ev)27(en)-425(prose\))-427(is)-426(to)-427(read)-427(some-)]TJ -14.94 -13.15 TD[(thing)-385(similar.)-602(This)-385(principle)-386(applies)-386(to)-385(test)-386(cases)-386(and)-385(to)-386(test)-386(suites.)-601(Unfortunately)82(,)-397(w)26(ell-)]TJ 0 -13.15 TD[(established)-479(test)-479(suites)-479(ha)27(v)28(e)-479(a)-479(w)27(a)28(y)-478(of)-480(dev)27(eloping)-478(their)-479(o)27(wn)-478(con)26(v)28(en)28(tions:)-735(as)-479(test)-480(writers)]TJ 0 -13.15 TD[(b)-27(ecome)-315(more)-315(exp)-28(erienced)-315(with)-315(DejaGn)27(u)-314(and)-315(with)-315(Tcl,)-319(they)-315(accum)27(ulate)-314(more)-315(utilities,)-319(and)]TJ 0 -13.15 TD[(tak)27(e)-332(adv)55(an)27(tage)-332(of)-333(more)-334(and)-333(more)-333(features)-334(of)]TJ/F4 10.91 Tf 216.82 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(and)-333(Tcl)-333(in)-333(general.)]TJ -239.88 -16.14 TD[(Insp)-27(ecting)-425(suc)27(h)-423(established)-425(test)-424(suites)-425(ma)27(y)-424(mak)27(e)-423(the)-425(prosp)-28(ect)-424(of)-425(creating)-424(an)-425(en)27(tirely)]TJ -14.94 -13.15 TD[(new)-342(test)-342(suite)-342(app)-28(ear)-342(o)27(v)28(erwhelming.)-470(Nev)27(ertheless,)-343(it)-342(is)-342(quite)-342(straigh)26(tforw)28(ard)-341(to)-342(get)-342(a)-342(new)]TJ 0 -13.15 TD[(test)-333(suite)-333(going.)]TJ 14.94 -16.14 TD[(There)-315(is)-315(one)-315(test)-315(suite)-316(that)-315(is)-315(guaran)27(teed)-314(not)-316(to)-315(gro)27(w)-314(more)-315(elab)-28(orate)-315(o)26(v)28(er)-314(time:)-435(b)-28(oth)-315(it)]TJ -14.94 -13.15 TD[(and)-377(the)-378(to)-28(ol)-378(it)-378(tests)-378(w)27(ere)-377(created)-378(expressly)-378(to)-378(illustrate)-378(what)-378(it)-378(tak)27(es)-377(to)-378(get)-378(started)-378(with)]TJ 0 -13.15 TD[(DejaGn)27(u.)-681(The)-413(`)]TJ/F4 10.91 Tf 79.14 0 TD[(example/)]TJ/F1 10.91 Tf 45.82 0 TD[(')-412(directory)-413(of)-412(the)-413(DejaGn)27(u)-412(distribution)-412(con)26(tains)-411(b)-28(oth)-413(an)-412(in)27(ter-)]TJ -124.96 -13.15 TD[(activ)27(e)-360(to)-27(ol)-361(called)]TJ/F4 10.91 Tf 85.44 0 TD[(calc)]TJ/F1 10.91 Tf 22.91 0 TD[(,)-367(and)-361(a)-361(test)-361(suite)-360(for)-361(it.)-527(Reading)-361(this)-361(test)-360(suite,)-368(and)-361(exp)-28(erimen)27(ting)]TJ -108.35 -13.15 TD[(with)-389(it,)-404(is)-389(a)-390(go)-27(o)-28(d)-390(w)27(a)28(y)-389(to)-389(supplemen)27(t)-389(the)-390(information)-389(in)-390(this)-389(section.)-613(\(Thanks)-390(to)-389(Rob)-28(ert)]TJ 0 -13.16 TD[(Lupton)-323(for)-324(creating)]TJ/F4 10.91 Tf 96.57 0 TD[(calc)]TJ/F1 10.91 Tf 26.44 0 TD[(and)-323(its)-324(test)-324(suite|and)-324(also)-323(the)-324(\014rst)-324(v)27(ersion)-323(of)-324(this)-324(section)-323(of)-324(the)]TJ -123.01 -13.15 TD[(man)27(ual!\))]TJ 14.94 -16.14 TD[(T)83(o)-344(help)-344(orien)27(t)-344(y)27(ou)-343(further)-345(in)-344(this)-345(task,)-347(here)-344(is)-345(an)-344(outline)-344(of)-345(the)-344(steps)-345(to)-344(b)-28(egin)-344(building)]TJ -14.94 -13.15 TD[(a)-333(test)-333(suite)-333(for)-334(a)-333(program)]TJ/F5 10.91 Tf 125.97 0 TD[(example)]TJ/F1 10.91 Tf 39.09 0 TD[(.)]TJ -159.15 -16.14 TD[(1.)-660(Create)-413(or)-414(select)-413(a)-414(directory)-413(to)-414(con)27(tain)-413(y)27(our)-413(new)-413(collection)-414(of)-413(tests.)-685(Change)-414(to)-414(that)]TJ 15.69 -13.15 TD[(directory)-333(\(sho)27(wn)-332(here)-334(as)]TJ/F4 10.91 Tf 120.82 0 TD[(testsuite)]TJ/F1 10.91 Tf 51.54 0 TD[(\):)]TJ/F4 10.91 Tf -143.56 -15.44 TD[(eg$)-524(cd)-525(testsuite/)]TJ/F1 10.91 Tf -44.49 -16.14 TD[(2.)-660(Create)-555(a)-555(`)]TJ/F4 10.91 Tf 67.83 0 TD[(configure.in)]TJ/F1 10.91 Tf 68.73 0 TD[(')-555(\014le)-555(in)-555(this)-555(directory)83(,)-610(to)-555(con)27(trol)-554(con\014guration-dep)-28(enden)27(t)]TJ -120.87 -13.15 TD[(c)27(hoices)-383(for)-384(y)26(our)-383(tests.)-597(So)-385(far)-384(as)-384(DejaGn)26(u)-383(is)-384(concerned,)-397(the)-385(imp)-27(ortan)26(t)-383(thing)-384(is)-385(to)-384(set)]TJ 0 -13.15 TD[(a)-375(v)55(alue)-375(for)-375(the)-376(v)55(ariable)]TJ/F4 10.91 Tf 116 0 TD[(target_abbrev)]TJ/F1 10.91 Tf 74.45 0 TD[(;)-396(this)-375(v)54(alue)-374(is)-376(the)-375(link)-376(to)-375(the)-376(init)-375(\014le)-376(y)27(ou)-374(will)]TJ -190.45 -13.15 TD[(write)-334(so)-27(on.)-448(\(F)83(or)-333(simplicit)26(y)84(,)-334(w)27(e)-333(assume)-334(the)-335(en)27(vironmen)28(t)-333(is)-334(Unix,)-335(and)-334(use)-334(`)]TJ/F4 10.91 Tf 352.26 0 TD[(unix)]TJ/F1 10.91 Tf 22.91 0 TD[(')-334(as)-334(the)]TJ -375.17 -13.15 TD[(v)55(alue.\))]TJ 0 -16.14 TD[(What)-303(else)-304(is)-303(needed)-304(in)-304(`)]TJ/F4 10.91 Tf 112.74 0 TD[(configure.in)]TJ/F1 10.91 Tf 68.73 0 TD[(')-303(dep)-28(ends)-304(on)-303(the)-304(requiremen)27(ts)-303(of)-303(y)26(our)-302(to)-28(ol,)-310(y)27(our)]TJ -181.47 -13.15 TD[(in)27(tended)-351(test)-352(en)26(vironmen)28(ts,)-356(and)-352(whic)27(h)]TJ/F4 10.91 Tf 189.42 0 TD[(configure)]TJ/F1 10.91 Tf 55.39 0 TD[(system)-352(y)27(ou)-351(use.)-502(This)-352(example)-352(is)-352(a)]TJ -244.81 -13.15 TD[(minimal)]TJ/F4 10.91 Tf 42.96 0 TD[(configure.in)]TJ/F1 10.91 Tf 72.9 0 TD[(for)-382(use)-383(with)-382(Cygn)27(us)-382(Con\014gure.)-592(\(F)83(or)-382(an)-383(alternativ)27(e)-381(based)-383(on)]TJ -115.86 -13.15 TD[(the)-340(FSF)]TJ/F4 10.91 Tf 42.88 0 TD[(autoconf)]TJ/F1 10.91 Tf 49.53 0 TD[(system,)-342(see)-340(the)]TJ/F4 10.91 Tf 75.89 0 TD[(calc)]TJ/F1 10.91 Tf 26.62 0 TD[(example)-340(distributed)-340(with)-341(DejaGn)27(u.\))-465(Replace)]TJ/F5 10.91 Tf -194.92 -13.15 TD[(example)]TJ/F1 10.91 Tf 43.34 0 TD[(with)-333(the)-333(name)-333(of)-334(y)27(our)-332(program:)]TJ ET 0 g 0 G -endstream -endobj -225 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R -/F5 31 0 R ->> -endobj -223 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 225 0 R ->> -endobj -228 0 obj -<< -/Length 3165 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(44)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F9 9.96 Tf 21.6 -20.18 TD[(\013)]TJ ET 45.58 -6.23 m 450.40 -6.23 l 450.40 -5.83 l 45.58 -5.83 l b BT 456.38 -6.23 TD[(\010)]TJ ET 39.60 -201.93 m 40.00 -201.93 l 40.00 -11.96 l 39.60 -11.96 l b BT/F4 10.91 Tf 42.99 -24.6 TD[(#)-524(This)-525(file)-525(is)-525(a)-525(shell)-525(script)-525(fragment)]TJ 0 -12.45 TD[(#)-524(for)-525(use)-525(with)-525(Cygnus)-525(configure.)]TJ 0 -24.91 TD[(srctrigger=")]TJ/F5 10.91 Tf 68.72 0 TD[(example)]TJ/F4 10.91 Tf 39.1 0 TD[(.0")]TJ -107.82 -12.45 TD[(srcname="The)-524(DejaGnu)]TJ/F5 10.91 Tf 120.27 0 TD[(example)]TJ/F4 10.91 Tf 45.43 0 TD[(tests")]TJ -165.7 -24.91 TD[(#)-524(per-host:)]TJ 0 -24.91 TD[(#)-524(per-target:)]TJ 0 -24.9 TD[(#)-524(everything)-525(defaults)-525(to)-525(unix)-525(for)-525(a)-525(target)]TJ 0 -12.46 TD[(target_abbrev=unix)]TJ 0 -24.9 TD[(#)-524(post-target:)]TJ ET 456.38 -201.93 m 456.77 -201.93 l 456.77 -11.96 l 456.38 -11.96 l b BT/F9 9.96 Tf 39.6 -208.16 TD[(\012)]TJ ET 45.58 -208.16 m 450.40 -208.16 l 450.40 -207.76 l 45.58 -207.76 l b BT 456.38 -208.16 TD[(\011)]TJ/F1 10.91 Tf -432.47 -17.39 TD[(3.)-660(Create)-301(`)]TJ/F4 10.91 Tf 53.55 0 TD[(Makefile.in)]TJ/F1 10.91 Tf 63 0 TD[(',)-307(the)-302(source)-301(\014le)-302(used)-301(b)27(y)]TJ/F4 10.91 Tf 117.53 0 TD[(configure)]TJ/F1 10.91 Tf 54.84 0 TD[(to)-301(build)-301(y)26(our)-300(`)]TJ/F4 10.91 Tf 68.07 0 TD[(Makefile)]TJ/F1 10.91 Tf 45.82 0 TD[('.)-433(Its)]TJ -387.12 -13.15 TD[(leading)-333(section)-333(should)-333(as)-334(usual)-333(con)27(tain)-333(the)-333(v)55(alues)-333(that)]TJ/F4 10.91 Tf 263.94 0 TD[(configure)]TJ/F1 10.91 Tf 55.18 0 TD[(ma)27(y)-332(o)27(v)28(erride:)]TJ/F9 9.96 Tf -319.12 -9.75 TD[(\013)]TJ ET 45.58 -248.45 m 450.40 -248.45 l 450.40 -248.05 l 45.58 -248.05 l b BT 456.38 -248.45 TD[(\010)]TJ ET 39.60 -446.58 m 40.00 -446.58 l 40.00 -254.18 l 39.60 -254.18 l b BT/F4 10.91 Tf 42.99 -266.82 TD[(srcdir)-524(=)-525(.)]TJ 0 -12.45 TD[(prefix)-524(=)-525(/usr/local)]TJ 0 -24.91 TD[(exec_prefix)-524(=)-525($\(prefix\))]TJ 0 -12.45 TD[(bindir)-524(=)-525($\(exec_prefix\)/bin)]TJ 0 -12.46 TD[(libdir)-524(=)-525($\(exec_prefix\)/lib)]TJ 0 -12.45 TD[(tooldir)-524(=)-525($\(libdir\)/$\(target_alias\))]TJ 0 -24.91 TD[(datadir)-524(=)-525($\(exec_prefix\)/lib/dejagnu)]TJ 0 -24.9 TD[(RUNTEST)-524(=)-525(runtest)]TJ 0 -12.46 TD[(RUNTESTFLAGS)-524(=)]TJ 0 -12.45 TD[(FLAGS_TO_PASS)-524(=)]TJ 0 -24.91 TD[(####)-524(host,)-525(target,)-525(site)-525(specific)-525(Makefile)-525(frags)-525(come)-525(in)-525(here.)]TJ ET 456.38 -446.58 m 456.77 -446.58 l 456.77 -254.18 l 456.38 -254.18 l b BT/F9 9.96 Tf 39.6 -452.81 TD[(\012)]TJ ET 45.58 -452.81 m 450.40 -452.81 l 450.40 -452.41 l 45.58 -452.41 l b BT 456.38 -452.81 TD[(\011)]TJ/F1 10.91 Tf -416.78 -17.38 TD[(This)-305(should)-306(b)-28(e)-306(follo)27(w)28(ed)-305(b)27(y)-305(the)-306(standard)-306(targets)-306(at)-306(y)27(our)-305(site.)-435(T)82(o)-305(b)-27(egin)-306(with,)-311(they)-306(need)]TJ 0 -13.16 TD[(not)-333(do)-333(an)27(ything|for)-333(example,)-333(these)-333(de\014nitions)-334(will)-333(do:)]TJ ET 0 g 0 G -endstream -endobj -229 0 obj -<< -/F1 9 0 R -/F9 59 0 R -/F4 28 0 R -/F5 31 0 R ->> -endobj -227 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 229 0 R ->> -endobj -232 0 obj -<< -/Length 3671 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(7:)-444(New)-334(T)83(o)-27(ols,)-333(T)82(argets,)-332(or)-334(Hosts)-20764(45)]TJ/F9 9.96 Tf 21.6 -20.18 TD[(\013)]TJ ET 45.58 -6.23 m 450.40 -6.23 l 450.40 -5.83 l 45.58 -5.83 l b BT 456.38 -6.23 TD[(\010)]TJ ET 39.60 -170.36 m 40.00 -170.36 l 40.00 -11.96 l 39.60 -11.96 l b BT/F4 10.91 Tf 42.99 -30.39 TD[(all:)]TJ 0 -24.9 TD[(info:)]TJ 0 -24.91 TD[(install-info:)]TJ 0 -24.91 TD[(install:)]TJ 0 -12.45 TD[(uninstall:)]TJ 0 -24.91 TD[(clean:)]TJ 45.82 -12.45 TD[(-rm)-524(-f)-525(*~)-525(core)-525(*.info*)]TJ ET 456.38 -170.36 m 456.77 -170.36 l 456.77 -11.96 l 456.38 -11.96 l b BT/F9 9.96 Tf 39.6 -176.59 TD[(\012)]TJ ET 45.58 -176.59 m 450.40 -176.59 l 450.40 -176.19 l 45.58 -176.19 l b BT 456.38 -176.59 TD[(\011)]TJ/F1 10.91 Tf -416.78 -17.39 TD[(It)-328(is)-328(also)-328(a)-328(go)-27(o)-28(d)-328(idea)-328(to)-328(mak)27(e)-327(sure)-328(y)26(our)-327(`)]TJ/F4 10.91 Tf 195.72 0 TD[(Makefile)]TJ/F1 10.91 Tf 45.82 0 TD[(')-328(can)-328(rebuild)-328(itself)-328(if)-328(`)]TJ/F4 10.91 Tf 102.83 0 TD[(Makefile.in)]TJ/F1 10.91 Tf 63 0 TD[(')]TJ -407.37 -13.15 TD[(c)27(hanges,)-332(with)-333(a)-334(target)-333(lik)27(e)-333(this)-333(\(whic)27(h)-332(w)26(orks)-332(for)-333(either)-334(Cygn)27(us)-332(or)-334(FSF)-333(Con\014gure\):)]TJ/F9 9.96 Tf 0 -10.05 TD[(\013)]TJ ET 45.58 -217.18 m 450.40 -217.18 l 450.40 -216.78 l 45.58 -216.78 l b BT 456.38 -217.18 TD[(\010)]TJ ET 39.60 -266.78 m 40.00 -266.78 l 40.00 -222.91 l 39.60 -222.91 l b BT/F4 10.91 Tf 42.99 -236.46 TD[(Makefile)-524(:)-525($\(srcdir\)/Makefile.in)-525($\(host_makefile_frag\))-525(\\)]TJ 74.45 -12.45 TD[($\(target_makefile_frag\))]TJ -28.63 -12.46 TD[($\(SHELL\))-524(./config.status)]TJ ET 456.38 -266.78 m 456.77 -266.78 l 456.77 -222.91 l 456.38 -222.91 l b BT/F9 9.96 Tf 39.6 -273.01 TD[(\012)]TJ ET 45.58 -273.01 m 450.40 -273.01 l 450.40 -272.61 l 45.58 -272.61 l b BT 456.38 -273.01 TD[(\011)]TJ/F1 10.91 Tf -416.78 -17.38 TD[(Y)83(ou)-363(also)-365(need)-364(to)-364(include)-364(t)26(w)28(o)-363(targets)-364(imp)-28(ortan)27(t)-364(to)-364(DejaGn)27(u:)]TJ/F4 10.91 Tf 296.54 0 TD[(check)]TJ/F1 10.91 Tf 28.64 0 TD[(,)-371(to)-365(run)-364(the)-364(tests,)]TJ -325.18 -13.15 TD[(and)]TJ/F4 10.91 Tf 21.3 0 TD[(site.exp)]TJ/F1 10.91 Tf 45.81 0 TD[(,)-342(to)-341(set)-341(up)-341(the)-341(Tcl)-341(copies)-341(of)-341(con\014guration-dep)-28(enden)27(t)-340(v)54(alues.)-466(The)]TJ/F4 10.91 Tf 314.65 0 TD[(check)]TJ/F1 10.91 Tf -381.76 -13.16 TD[(target)-333(m)27(ust)-332(run)-334(`)]TJ/F4 10.91 Tf 82.24 0 TD[(runtest)-333(--tool)]TJ/F5 10.91 Tf 81.73 0 TD[(example)]TJ/F1 10.91 Tf 39.7 0 TD[(':)]TJ/F9 9.96 Tf -203.67 -9.44 TD[(\013)]TJ ET 45.58 -326.14 m 450.40 -326.14 l 450.40 -325.74 l 45.58 -325.74 l b BT 456.38 -326.14 TD[(\010)]TJ ET 39.60 -374.53 m 40.00 -374.53 l 40.00 -331.87 l 39.60 -331.87 l b BT/F4 10.91 Tf 42.99 -344.51 TD[(check:)-524(site.exp)-525(all)]TJ 45.82 -12.46 TD[($\(RUNTEST\))-524($\(RUNTESTFLAGS\))-525($\(FLAGS_TO_PASS\))-525(\\)]TJ 22.9 -12.45 TD[(--tool)]TJ/F5 10.91 Tf 40.09 0 TD[(example)]TJ/F4 10.91 Tf 45.43 0 TD[(--srcdir)-524($\(srcdir\))]TJ ET 456.38 -374.53 m 456.77 -374.53 l 456.77 -331.87 l 456.38 -331.87 l b BT/F9 9.96 Tf 39.6 -380.76 TD[(\012)]TJ ET 45.58 -380.76 m 450.40 -380.76 l 450.40 -380.36 l 45.58 -380.36 l b BT 456.38 -380.76 TD[(\011)]TJ/F1 10.91 Tf -416.78 -17.99 TD[(The)]TJ/F4 10.91 Tf 23.09 0 TD[(site.exp)]TJ/F1 10.91 Tf 50.12 0 TD[(target)-394(should)-394(usually)-394(set)-395(up)-394(\(among)-394(other)-395(things!\))-627(a)-394(Tcl)-394(v)54(ariable)-393(for)]TJ -73.21 -13.15 TD[(the)-333(name)-333(of)-333(y)26(our)-332(program:)]TJ ET 0 g 0 G -endstream -endobj -233 0 obj -<< -/F1 9 0 R -/F9 59 0 R -/F4 28 0 R -/F5 31 0 R ->> -endobj -231 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 233 0 R ->> -endobj -236 0 obj -<< -/Length 5426 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(46)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F9 9.96 Tf 21.6 -20.18 TD[(\013)]TJ ET 45.58 -6.23 m 450.40 -6.23 l 450.40 -5.83 l 45.58 -5.83 l b BT 456.38 -6.23 TD[(\010)]TJ ET 39.60 -416.97 m 40.00 -416.97 l 40.00 -11.96 l 39.60 -11.96 l b BT/F4 10.91 Tf 42.99 -25.51 TD[(site.exp:)-524(./config.status)-525(Makefile)]TJ 45.82 -12.45 TD[(@echo)-524("Making)-525(a)-525(new)-525(config)-525(file...")]TJ 0 -12.46 TD[(-@rm)-524(-f)-525(./tmp?)]TJ 0 -12.45 TD[(@touch)-524(site.exp)]TJ 0 -24.91 TD[(-@mv)-524(site.exp)-525(site.bak)]TJ 0 -12.45 TD[(@echo)-524("##)-525(these)-525(variables)-525(are)-525(automatically\\)]TJ -40.1 -12.45 TD[(generated)-524(by)-525(make)-525(##")-525(>)-525(./tmp0)]TJ 40.1 -12.45 TD[(@echo)-524("#)-525(Do)-525(not)-525(edit)-525(here.)-525(If)-525(you)-525(wish)-525(to\\)]TJ -40.1 -12.46 TD[(override)-524(these)-525(values")-525(>>)-525(./tmp0)]TJ 40.1 -12.45 TD[(@echo)-524("#)-525(add)-525(them)-525(to)-525(the)-525(last)-525(section")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(host_os)-525(${host_os}")-525(>>)-525(./tmp0)]TJ 0 -12.46 TD[(@echo)-524("set)-525(host_alias)-525(${host_alias}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(host_cpu)-525(${host_cpu}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(host_vendor)-525(${host_vendor}")-525(>>)-525(./tmp0)]TJ 0 -12.46 TD[(@echo)-524("set)-525(target_os)-525(${target_os}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(target_alias)-525(${target_alias}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(target_cpu)-525(${target_cpu}")-525(>>)-525(./tmp0)]TJ 0 -12.46 TD[(@echo)-524("set)-525(target_vendor)-525(${target_vendor}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(host_triplet)-525(${host_canonical}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(target_triplet)-525(${target_canonical}">>./tmp0)]TJ 0 -12.46 TD[(@echo)-524("set)-525(tool)-525(binutils")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(srcdir)-525(${srcdir}")-525(>>)-525(./tmp0)]TJ 0 -12.45 TD[(@echo)-524("set)-525(objdir)-525(`pwd`")-525(>>)-525(./tmp0)]TJ 0 -12.46 TD[(@echo)-524("set)]TJ/F5 10.91 Tf 62.99 0 TD[(examplename)-581(example)]TJ/F4 10.91 Tf 110.59 0 TD[(")-524(>>)-525(./tmp0)]TJ -173.58 -12.45 TD[(@echo)-524("##)-525(All)-525(variables)-525(above)-525(are)-525(generated)-525(by\\)]TJ -40.1 -12.45 TD[(configure.)-524(Do)-525(Not)-525(Edit)-525(##")-525(>>)-525(./tmp0)]TJ 85.91 -12.46 TD[(@cat)-524(./tmp0)-525(>)-525(site.exp)]TJ -45.81 -12.45 TD[(@sed)-524(<)-525(site.bak)-525(\\)]TJ 40.09 -12.45 TD[(-e)-524('1,/^##)-525(All)-525(variables)-525(above)-525(are.*##/)-525(d')-525(\\)]TJ 0 -12.46 TD[(>>)-524(site.exp)]TJ -40.09 -12.45 TD[(-@rm)-524(-f)-525(./tmp?)]TJ ET 456.38 -416.97 m 456.77 -416.97 l 456.77 -11.96 l 456.38 -11.96 l b BT/F9 9.96 Tf 39.6 -423.2 TD[(\012)]TJ ET 45.58 -423.20 m 450.40 -423.20 l 450.40 -422.80 l 45.58 -422.80 l b BT 456.38 -423.2 TD[(\011)]TJ/F1 10.91 Tf -432.47 -18 TD[(4.)-660(Create)-333(a)-333(directory)-334(\(in)-333(`)]TJ/F4 10.91 Tf 126.39 0 TD[(testsuite/)]TJ/F1 10.91 Tf 57.27 0 TD[('\))-333(called)-333(`)]TJ/F4 10.91 Tf 44.85 0 TD[(config/)]TJ/F1 10.91 Tf 40.09 0 TD[(':)]TJ/F4 10.91 Tf -224.11 -15.44 TD[(eg$)-524(mkdir)-525(config)]TJ/F1 10.91 Tf -44.49 -16.14 TD[(5.)-660(Mak)27(e)-319(an)-320(init)-320(\014le)-320(in)-321(this)-320(directory;)-324(its)-320(name)-321(m)27(ust)-319(start)-320(with)-320(the)]TJ/F4 10.91 Tf 320.57 0 TD[(target_abbrev)]TJ/F1 10.91 Tf 77.94 0 TD[(v)55(alue,)]TJ -382.82 -13.15 TD[(so)-362(call)-363(it)-363(`)]TJ/F4 10.91 Tf 48.3 0 TD[(config/unix.exp)]TJ/F1 10.91 Tf 85.9 0 TD[('.)-532(This)-363(is)-363(the)-362(\014le)-363(that)-363(con)27(tains)-362(the)-363(target-dep)-27(enden)26(t)-361(pro-)]TJ -134.2 -13.15 TD[(cedures;)-365(fortunately)83(,)-359(most)-355(of)-354(them)-355(do)-354(not)-355(ha)27(v)28(e)-354(to)-354(do)-355(v)27(ery)-354(m)27(uc)28(h)-354(in)-354(order)-355(for)]TJ/F4 10.91 Tf 370.31 0 TD[(runtest)]TJ/F1 10.91 Tf -370.31 -13.15 TD[(to)-333(run.)]TJ 0 -16.14 TD[(If)]TJ/F5 10.91 Tf 10.9 0 TD[(example)]TJ/F1 10.91 Tf 43.33 0 TD[(is)-332(not)-333(in)27(teractiv)28(e,)-332(y)27(ou)-331(can)-333(get)-333(a)27(w)28(a)28(y)-332(with)-332(this)-333(minimal)-332(`)]TJ/F4 10.91 Tf 264.61 0 TD[(unix.exp)]TJ/F1 10.91 Tf 45.82 0 TD[(')-332(to)-333(b)-27(egin)]TJ -364.66 -13.15 TD[(with:)]TJ/F9 9.96 Tf 0 -7.32 TD[(\013)]TJ ET 45.58 -548.84 m 450.40 -548.84 l 450.40 -548.44 l 45.58 -548.44 l b BT 456.38 -548.84 TD[(\010)]TJ ET 39.60 -585.99 m 40.00 -585.99 l 40.00 -554.57 l 39.60 -554.57 l b BT/F4 10.91 Tf 42.99 -568.12 TD[(proc)-524(foo_exit)-525({})-525({})]TJ 0 -12.46 TD[(proc)-524(foo_version)-525({})-525({})]TJ ET 456.38 -585.99 m 456.77 -585.99 l 456.77 -554.57 l 456.38 -554.57 l b BT/F9 9.96 Tf 39.6 -592.22 TD[(\012)]TJ ET 45.58 -592.22 m 450.40 -592.22 l 450.40 -591.82 l 45.58 -591.82 l b BT 456.38 -592.22 TD[(\011)]TJ/F1 10.91 Tf -416.78 -17.39 TD[(If)]TJ/F5 10.91 Tf 10.95 0 TD[(example)]TJ/F1 10.91 Tf 43.38 0 TD[(is)-337(in)27(teractiv)28(e,)-337(ho)26(w)28(ev)28(er,)-337(y)27(ou)-337(migh)27(t)-336(as)-337(w)26(ell)-336(de\014ne)-337(a)-337(start)-338(routine)]TJ/F8 10.91 Tf 304.73 0 TD[(and)-361(invoke)]TJ -359.06 -13.15 TD[(it)]TJ/F1 10.91 Tf 11.64 0 TD[(b)27(y)-332(using)-333(an)-334(init)-333(\014le)-333(lik)26(e)-332(this:)]TJ ET 0 g 0 G -endstream -endobj -237 0 obj -<< -/F1 9 0 R -/F9 59 0 R -/F4 28 0 R -/F5 31 0 R -/F8 52 0 R ->> -endobj -235 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 237 0 R ->> -endobj -240 0 obj -<< -/Length 5208 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Chapter)-333(7:)-444(New)-334(T)83(o)-27(ols,)-333(T)82(argets,)-332(or)-334(Hosts)-20764(47)]TJ/F9 9.96 Tf 21.6 -20.18 TD[(\013)]TJ ET 45.58 -6.23 m 450.40 -6.23 l 450.40 -5.83 l 45.58 -5.83 l b BT 456.38 -6.23 TD[(\010)]TJ ET 39.60 -154.07 m 40.00 -154.07 l 40.00 -11.96 l 39.60 -11.96 l b BT/F4 10.91 Tf 42.99 -25.51 TD[(proc)-524(foo_exit)-525({})-525({})]TJ 0 -12.45 TD[(proc)-524(foo_version)-525({})-525({})]TJ 0 -24.91 TD[(proc)-524(foo_start)-525({})-525({)]TJ 11.45 -12.45 TD[(global)]TJ/F5 10.91 Tf 40.09 0 TD[(examplename)]TJ/F4 10.91 Tf -40.09 -12.46 TD[(spawn)-524($)]TJ/F5 10.91 Tf 40.09 0 TD[(examplename)]TJ/F4 10.91 Tf -40.09 -12.45 TD[(expect)-524({)]TJ 11.46 -12.45 TD[(-re)-524("")-525({})]TJ -11.46 -12.45 TD[(})]TJ -11.45 -12.46 TD[(})]TJ 0 -12.45 TD[(foo_start)]TJ ET 456.38 -154.07 m 456.77 -154.07 l 456.77 -11.96 l 456.38 -11.96 l b BT/F9 9.96 Tf 39.6 -160.29 TD[(\012)]TJ ET 45.58 -160.29 m 450.40 -160.29 l 450.40 -159.90 l 45.58 -159.90 l b BT 456.38 -160.29 TD[(\011)]TJ/F1 10.91 Tf -432.47 -17.39 TD[(6.)-660(Create)-333(a)-333(directory)-334(whose)-333(name)-333(b)-28(egins)-333(with)-334(y)27(our)-332(to)-28(ol's)-333(name,)-334(to)-333(con)27(tain)-333(tests:)]TJ/F4 10.91 Tf 44.49 -15.45 TD[(eg$)-524(mkdir)]TJ/F5 10.91 Tf 57.27 0 TD[(example)]TJ/F4 10.91 Tf 39.09 0 TD[(.0)]TJ/F1 10.91 Tf -140.85 -16.14 TD[(7.)-660(Create)-356(a)-357(sample)-357(test)-357(\014le)-357(in)-357(`)]TJ/F5 10.91 Tf 152.53 0 TD[(example)]TJ/F4 10.91 Tf 39.09 0 TD[(.0)]TJ/F1 10.91 Tf 11.46 0 TD[('.)-515(Its)-356(name)-357(m)27(ust)-356(end)-357(with)-357(`)]TJ/F4 10.91 Tf 133.69 0 TD[(.exp)]TJ/F1 10.91 Tf 22.91 0 TD[(';)-368(y)27(ou)-356(can)-357(use)]TJ -343.99 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(first-try.exp)]TJ/F1 10.91 Tf 74.45 0 TD[(')-326(T)82(o)-325(b)-28(egin)-327(with,)-328(just)-326(write)-327(there)-327(a)-326(line)-327(of)-326(Tcl)-327(co)-28(de)-326(to)-327(issue)-327(a)-326(message:)]TJ/F9 9.96 Tf -77.48 -9.74 TD[(\013)]TJ ET 45.58 -232.16 m 450.40 -232.16 l 450.40 -231.76 l 45.58 -231.76 l b BT 456.38 -232.16 TD[(\010)]TJ ET 39.60 -256.86 m 40.00 -256.86 l 40.00 -237.89 l 39.60 -237.89 l b BT/F4 10.91 Tf 42.99 -251.44 TD[(send_user)-524("Testing:)-525(one,)-525(two...\\n")]TJ ET 456.38 -256.86 m 456.77 -256.86 l 456.77 -237.89 l 456.38 -237.89 l b BT/F9 9.96 Tf 39.6 -263.08 TD[(\012)]TJ ET 45.58 -263.08 m 450.40 -263.08 l 450.40 -262.69 l 45.58 -262.69 l b BT 456.38 -263.08 TD[(\011)]TJ/F1 10.91 Tf -432.47 -18 TD[(8.)-660(Bac)27(k)-332(in)-333(the)-334(`)]TJ/F4 10.91 Tf 77.36 0 TD[(testsuite/)]TJ/F1 10.91 Tf 57.27 0 TD[(')-333(\(top)-333(lev)27(el\))-333(directory)83(,)-333(run)]TJ/F4 10.91 Tf -90.14 -15.44 TD[(eg$)-524(configure)]TJ/F1 10.91 Tf -28.8 -16.14 TD[(\(Y)83(ou)-383(ma)27(y)-383(ha)27(v)28(e)-383(to)-384(sp)-28(ecify)-384(more)-383(of)-384(a)-384(path,)-396(if)-384(a)-384(suitable)]TJ/F4 10.91 Tf 268.71 0 TD[(configure)]TJ/F1 10.91 Tf 55.74 0 TD[(is)-383(not)-384(a)27(v)55(ailable)-383(in)]TJ -324.45 -13.15 TD[(y)27(our)-332(execution)-333(path.\))]TJ -15.69 -16.14 TD[(9.)-660(Y)83(ou)-370(are)-371(no)27(w)-370(ready)-370(to)-371(triumphan)27(tly)-370(t)27(yp)-27(e)-371(`)]TJ/F4 10.91 Tf 219.54 0 TD[(make)-333(check)]TJ/F1 10.91 Tf 55.19 0 TD[(')-370(or)-371(`)]TJ/F4 10.91 Tf 23.87 0 TD[(runtest)-333(--tool)]TJ/F5 10.91 Tf 81.73 0 TD[(example)]TJ/F1 10.91 Tf 39.7 0 TD[('.)]TJ -404.34 -13.15 TD[(Y)83(ou)-332(should)-334(see)-333(something)-333(lik)26(e)-332(this:)]TJ/F9 9.96 Tf 0 -9.45 TD[(\013)]TJ ET 45.58 -364.55 m 450.40 -364.55 l 450.40 -364.15 l 45.58 -364.15 l b BT 456.38 -364.55 TD[(\010)]TJ ET 39.60 -485.53 m 40.00 -485.53 l 40.00 -370.27 l 39.60 -370.27 l b BT/F4 10.91 Tf 42.99 -382.92 TD[(Test)-524(Run)-525(By)-525(rhl)-525(on)-525(Fri)-525(Jan)-525(29)-525(16:25:44)-525(EST)-525(1993)]TJ 91.63 -24.9 TD[(===)]TJ/F5 10.91 Tf 22.91 0 TD[(example)]TJ/F4 10.91 Tf 45.43 0 TD[(tests)-524(===)]TJ -159.97 -24.91 TD[(Running)-524(./)]TJ/F5 10.91 Tf 57.27 0 TD[(example)]TJ/F4 10.91 Tf 39.09 0 TD[(.0/first-try.exp)-524(...)]TJ -96.36 -12.45 TD[(Testing:)-524(one,)-525(two...)]TJ 91.63 -24.91 TD[(===)]TJ/F5 10.91 Tf 22.91 0 TD[(example)]TJ/F4 10.91 Tf 45.43 0 TD[(Summary)-524(===)]TJ ET 456.38 -485.53 m 456.77 -485.53 l 456.77 -370.27 l 456.38 -370.27 l b BT/F9 9.96 Tf 39.6 -491.76 TD[(\012)]TJ ET 45.58 -491.76 m 450.40 -491.76 l 450.40 -491.36 l 45.58 -491.36 l b BT 456.38 -491.76 TD[(\011)]TJ/F1 10.91 Tf -416.78 -17.39 TD[(There)-391(is)-391(no)-392(output)-391(in)-392(the)-391(summary)82(,)-405(b)-28(ecause)-391(so)-392(far)-391(the)-392(example)-391(do)-28(es)-392(not)-391(call)-392(an)27(y)-390(of)]TJ 0 -13.15 TD[(the)-333(pro)-28(cedures)-333(that)-333(establish)-334(a)-333(test)-333(outcome.)]TJ -21.14 -16.14 TD[(10.)-660(Begin)-427(writing)-428(some)-428(real)-428(tests.)-728(F)82(or)-427(an)-428(in)27(teractiv)28(e)-427(to)-28(ol,)-451(y)26(ou)-427(should)-427(probably)-428(write)-428(a)]TJ 21.14 -13.15 TD[(real)-339(exit)-339(routine)-339(in)-339(fairly)-339(short)-339(order;)-341(in)-339(an)26(y)-338(case,)-340(y)27(ou)-338(should)-339(also)-339(write)-339(a)-339(real)-339(v)27(ersion)]TJ 0 -13.15 TD[(routine)-333(so)-28(on.)]TJ ET 0 g 0 G -endstream -endobj -241 0 obj -<< -/F1 9 0 R -/F9 59 0 R -/F4 28 0 R -/F5 31 0 R ->> -endobj -239 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 241 0 R ->> -endobj -244 0 obj -<< -/Length 6498 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(48)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(7.2)-562(Adding)-375(a)-375(target)]TJ/F1 10.91 Tf 14.94 -23.12 TD[(DejaGn)27(u)-522(has)-524(some)-523(additional)-523(requiremen)26(ts)-522(for)-523(target)-524(supp)-28(ort,)-570(b)-28(ey)27(ond)-523(the)-523(general-)]TJ -14.94 -13.15 TD[(purp)-27(ose)-424(pro)27(visions)-423(of)-423(Cygn)26(us)]TJ/F4 10.91 Tf 147.27 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(.)]TJ/F4 10.91 Tf 10.83 0 TD[(runtest)]TJ/F1 10.91 Tf 44.71 0 TD[(m)27(ust)-422(activ)26(ely)-422(comm)27(unicate)-423(with)-424(the)]TJ -254.36 -13.15 TD[(target,)-322(rather)-319(than)-319(simply)-320(generating)-319(or)-319(managing)-320(co)-28(de)-319(for)-319(the)-320(target)-319(arc)27(hitecture.)-439(There-)]TJ 0 -13.15 TD[(fore,)-329(eac)27(h)-328(to)-28(ol)-328(requires)-329(an)-328(initialization)-329(mo)-28(dule)-328(for)-329(eac)27(h)-328(target.)-443(F)83(or)-328(new)-329(targets,)-329(y)27(ou)-328(m)27(ust)]TJ 0 -13.15 TD[(supply)-259(a)-259(few)-259(Tcl)-259(pro)-28(cedures)-259(to)-259(adapt)-259(DejaGn)27(u)-258(to)-259(the)-260(target.)-419(This)-259(p)-28(ermits)-259(DejaGn)27(u)-259(itself)-259(to)]TJ 0 -13.15 TD[(remain)-281(target)-282(indep)-28(enden)27(t.)-426(See)-282(Section)-282(5.2)-282([Initialization)-281(mo)-28(dule],)-292(page)-282(22,)-292(for)-282(a)-281(discussion)]TJ 0 -13.15 TD[(of)-333(the)-333(naming)-333(con)26(v)28(en)28(tions)-332(that)-334(enable)-333(DejaGn)27(u)-333(to)-333(lo)-28(cate)-333(and)-333(use)-334(init)-333(\014les.)]TJ 14.94 -16.14 TD[(Usually)-284(the)-284(b)-27(est)-284(w)26(a)28(y)-283(to)-284(write)-284(a)-284(new)-284(initialization)-284(mo)-28(dule)-284(is)-284(to)-284(edit)-284(an)-284(existing)-284(initializa-)]TJ -14.94 -13.15 TD[(tion)-337(mo)-28(dule;)-340(some)-338(trial)-337(and)-338(error)-338(will)-337(b)-28(e)-338(required.)-458(If)-337(necessary)82(,)-338(y)27(ou)-337(can)-337(use)-338(the)-338(`)]TJ/F4 10.91 Tf 388.88 0 TD[(--debug)]TJ/F1 10.91 Tf 40.09 0 TD[(')]TJ -428.97 -13.15 TD[(option)-333(to)-333(see)-333(what)-334(is)-333(really)-333(going)-334(on.)]TJ 14.94 -16.14 TD[(When)-324(y)26(ou)-323(co)-28(de)-325(an)-325(initialization)-325(mo)-27(dule,)-327(b)-28(e)-324(generous)-325(in)-325(prin)27(ting)-324(information)-325(con)27(trolled)]TJ -14.94 -13.15 TD[(b)27(y)-332(the)]TJ/F4 10.91 Tf 33.94 0 TD[(verbose)]TJ/F1 10.91 Tf 43.73 0 TD[(pro)-27(cedure)-334(\(see)-333(Section)-333(5.3)-334([DejaGn)27(u)-332(Builtins],)-334(page)-333(23\).)]TJ -62.73 -16.14 TD[(Most)-432(of)-433(the)-433(w)27(ork)-432(is)-433(in)-433(getting)-433(the)-433(comm)27(unications)-432(righ)27(t.)-742(Comm)26(unications)-432(co)-27(de)-433(\(for)]TJ -14.94 -13.15 TD[(sev)27(eral)-277(situations)-279(in)27(v)28(olving)-278(IP)-278(net)27(w)28(orks)-278(or)-278(serial)-279(lines\))-278(is)-279(a)27(v)56(ailable)-278(in)-278(a)-279(DejaGn)27(u)-278(library)-278(\014le,)]TJ 0 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(lib/remote.exp)]TJ/F1 10.91 Tf 80.18 0 TD[('.)-444(See)-333(Section)-334(5.3)-333([DejaGn)27(u)-332(Builtins],)-334(page)-333(23.)]TJ -68.27 -16.14 TD[(If)-331(y)27(ou)-331(susp)-28(ect)-332(a)-331(comm)26(unication)-330(problem,)-333(try)-331(running)-332(the)-332(connection)-332(in)27(teractiv)28(ely)-331(from)]TJ/F4 10.91 Tf -14.94 -13.15 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(.)-422(\(There)-266(are)-267(three)-266(w)27(a)28(ys)-266(of)-266(running)]TJ/F4 10.91 Tf 164.66 0 TD[(expect)]TJ/F1 10.91 Tf 37.27 0 TD[(as)-266(an)-266(in)26(teractiv)28(e)-265(in)26(terpreter.)-421(Y)83(ou)-266(can)-266(run)]TJ/F4 10.91 Tf -236.29 -13.15 TD[(expect)]TJ/F1 10.91 Tf 37.88 0 TD[(with)-322(no)-322(argumen)27(ts,)-324(and)-322(con)27(trol)-321(it)-322(completely)-323(in)27(teractiv)28(ely;)-325(or)-322(y)27(ou)-321(can)-323(use)-322(`)]TJ/F4 10.91 Tf 359.76 0 TD[(expect)]TJ -397.64 -13.15 TD[(-i)]TJ/F1 10.91 Tf 11.45 0 TD[(')-280(together)-280(with)-281(other)-280(command-line)-281(options)-280(and)-281(argumen)27(ts;)-297(or)-281(y)27(ou)-279(can)-281(run)-280(the)-281(command)]TJ/F4 10.91 Tf -11.45 -13.15 TD[(interpreter)]TJ/F1 10.91 Tf 66.35 0 TD[(from)-306(an)27(y)]TJ/F4 10.91 Tf 45.81 0 TD[(expect)]TJ/F1 10.91 Tf 37.71 0 TD[(pro)-27(cedure.)-436(Use)]TJ/F4 10.91 Tf 75.49 0 TD[(return)]TJ/F1 10.91 Tf 37.71 0 TD[(to)-306(get)-307(bac)27(k)-306(to)-307(the)-307(calling)-306(pro)-28(cedure)]TJ -263.07 -13.15 TD[(\(if)-355(an)26(y\),)-360(or)]TJ/F4 10.91 Tf 56.29 0 TD[(return)-333(-tcl)]TJ/F1 10.91 Tf 64.79 0 TD[(to)-355(mak)26(e)-355(the)-355(calling)-356(pro)-28(cedure)-356(itself)-356(return)-356(to)-356(its)-356(caller;)-367(use)]TJ/F4 10.91 Tf 288.01 0 TD[(exit)]TJ/F1 10.91 Tf -409.09 -13.16 TD[(or)-442(end-of-\014le)-442(to)-442(lea)27(v)28(e)]TJ/F4 10.91 Tf 109.02 0 TD[(expect)]TJ/F1 10.91 Tf 39.18 0 TD[(altogether.\))-770(Run)-442(the)-442(program)-442(whose)-442(name)-442(is)-442(recorded)-442(in)]TJ -148.2 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[($connectmode)]TJ/F1 10.91 Tf 68.73 0 TD[(',)-520(with)-482(the)-483(argumen)27(ts)-482(in)-482(`)]TJ/F4 10.91 Tf 130.76 0 TD[($targetname)]TJ/F1 10.91 Tf 63 0 TD[(',)-520(to)-482(establish)-483(a)-483(connection.)-892(Y)82(ou)]TJ -265.52 -13.15 TD[(should)-333(at)-333(least)-333(b)-28(e)-334(able)-333(to)-333(get)-334(a)-333(prompt)-333(from)-334(an)27(y)-332(target)-333(that)-334(is)-333(ph)27(ysically)-333(connected.)]TJ/F2 14.35 Tf 0 -30.88 TD[(7.3)-562(P)30(orting)-374(to)-375(a)-375(new)-375(host)]TJ/F1 10.91 Tf 14.94 -23.11 TD[(The)-472(task)-473(of)-473(p)-28(orting)-472(DejaGn)26(u)-472(is)-472(basically)-473(that)-473(of)-473(p)-28(orting)-472(Tcl)-473(and)]TJ/F4 10.91 Tf 331.76 0 TD[(expect)]TJ/F1 10.91 Tf 34.37 0 TD[(.)-862(Tcl)-473(and)]TJ/F4 10.91 Tf -381.07 -13.16 TD[(expect)]TJ/F1 10.91 Tf 34.36 0 TD[(,)-357(as)-352(distributed)-353(with)-352(DejaGn)27(u,)-356(b)-28(oth)-353(use)]TJ/F4 10.91 Tf 195.95 0 TD[(autoconf)]TJ/F1 10.91 Tf 45.81 0 TD[(;)-361(they)-353(should)-352(p)-28(ort)-353(automatically)]TJ -276.12 -13.15 TD[(to)-333(most)-333(Unix)-333(systems.)]TJ 14.94 -16.14 TD[(Once)-367(Tcl)-368(and)]TJ/F4 10.91 Tf 69.62 0 TD[(expect)]TJ/F1 10.91 Tf 38.38 0 TD[(are)-367(p)-28(orted,)-377(DejaGn)27(u)-367(should)-368(run.)-548(Most)-368(system)-368(dep)-28(endencies)-367(are)]TJ -122.94 -13.15 TD[(tak)27(en)-332(care)-333(of)-334(b)27(y)-332(using)]TJ/F4 10.91 Tf 108.88 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(as)-333(the)-333(main)-333(command)-334(shell.)]TJ ET 0 g 0 G -endstream -endobj -245 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R ->> -endobj -243 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 245 0 R ->> -endobj -248 0 obj -<< -/Length 8496 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(App)-27(endix)-334(A:)-333(Installing)-333(DejaGn)27(u)-24351(49)]TJ/F2 17.22 Tf 0 -25.91 TD[(App)-31(endix)-375(A)-562(Installing)-375(DejaGn)30(u)]TJ/F1 10.91 Tf 14.94 -24.19 TD[(Once)-304(y)27(ou)-303(ha)26(v)28(e)-303(the)-304(DejaGn)26(u)-303(source)-304(unpac)26(k)28(ed)-303(and)-304(a)26(v)56(ailable,)-309(y)27(ou)-304(m)27(ust)-303(\014rst)-305(con\014gure)-304(the)]TJ -14.94 -13.16 TD[(soft)27(w)28(are)-370(to)-371(sp)-28(ecify)-371(where)-371(it)-371(is)-371(to)-370(run)-371(\(and)-371(the)-371(asso)-28(ciated)-371(defaults\);)-390(then)-371(y)27(ou)-370(can)-371(pro)-28(ceed)]TJ 0 -13.15 TD[(to)-333(installing)-333(it.)]TJ/F2 14.35 Tf 0 -28.54 TD[(A.1)-562(Con\014guring)-375(the)-375(DejaGn)30(u)-374(test)-375(driv)31(er)]TJ/F1 10.91 Tf 14.94 -22.34 TD[(It)-412(is)-412(usually)-412(b)-27(est)-412(to)-413(con\014gure)-412(in)-412(a)-412(directory)-412(separate)-412(from)-412(the)-412(source)-412(tree,)-432(sp)-27(ecifying)]TJ -14.94 -13.15 TD[(where)-328(to)-328(\014nd)-328(the)-329(source)-328(with)-328(the)-328(optional)-329(`)]TJ/F4 10.91 Tf 207.56 0 TD[(--srcdir)]TJ/F1 10.91 Tf 45.82 0 TD[(')-328(option)-328(to)]TJ/F4 10.91 Tf 53.77 0 TD[(configure)]TJ/F1 10.91 Tf 51.55 0 TD[(.)-442(DejaGn)27(u)-328(uses)]TJ -358.7 -13.15 TD[(the)-426(GNU)]TJ/F4 10.91 Tf 49.38 0 TD[(autoconf)]TJ/F1 10.91 Tf 50.48 0 TD[(to)-426(con\014gure)-427(itself.)-724(F)82(or)-426(more)-426(info)-427(on)-427(using)-426(auto)-28(conf,)-450(read)-427(the)-426(GNU)]TJ -99.86 -13.15 TD[(auto)-27(conf)-444(man)26(ual.)-775(T)82(o)-443(con\014gure,)-471(execute)-445(the)-444(`)]TJ/F4 10.91 Tf 224.24 0 TD[(configure)]TJ/F1 10.91 Tf 51.54 0 TD[(')-444(program,)-471(no)-444(other)-444(options)-444(are)]TJ -275.78 -13.15 TD[(required.)-444(F)82(or)-332(an)-333(example,)-333(to)-333(con\014gure)-333(in)-333(a)-333(sep)-28(erate)-333(tree)-333(for)-334(ob)-55(jects,)-333(execute)-333(the)-333(con\014gure)]TJ 0 -13.15 TD[(script)-333(from)-333(the)-333(source)-334(tree)-333(lik)27(e)-333(this:)]TJ/F4 10.91 Tf 28.8 -14.66 TD[(../dejagnu-1.3/configure)]TJ/F1 10.91 Tf -13.86 -15.36 TD[(DejaGn)27(u)-314(do)-27(esn't)-315(care)-315(at)-315(con\014g)-315(time)-314(if)-315(it's)-315(for)-315(testing)-315(a)-314(nativ)26(e)-314(system)-314(or)-315(a)-315(cross)-315(system.)]TJ -14.94 -13.16 TD[(That)-333(is)-333(determined)-333(at)-334(run)27(time)-332(b)26(y)-332(using)-333(the)-334(con\014g)-333(\014les.)]TJ 14.94 -15.36 TD[(Y)83(ou)-536(ma)27(y)-536(also)-537(w)27(an)27(t)-536(to)-537(use)-536(the)]TJ/F4 10.91 Tf 161.13 0 TD[(configure)]TJ/F1 10.91 Tf 57.4 0 TD[(option)-536(`)]TJ/F4 10.91 Tf 39.19 0 TD[(--prefix)]TJ/F1 10.91 Tf 45.82 0 TD[(')-536(to)-537(sp)-28(ecify)-537(where)-537(y)27(ou)]TJ -318.48 -13.15 TD[(w)27(an)28(t)-512(DejaGn)27(u)-512(and)-512(its)-513(supp)-28(orting)-513(co)-28(de)-512(installed.)-983(By)-513(default,)-557(installation)-513(is)-513(in)-513(sub)-28(di-)]TJ 0 -13.15 TD[(rectories)-430(of)-431(`)]TJ/F4 10.91 Tf 61.34 0 TD[(/usr/local)]TJ/F1 10.91 Tf 57.27 0 TD[(',)-455(but)-431(y)27(ou)-430(can)-431(select)-430(an)26(y)-430(alternate)-430(directory)]TJ/F5 10.91 Tf 221.96 0 TD[(altdir)]TJ/F1 10.91 Tf 31.58 0 TD[(b)27(y)-430(including)]TJ -372.15 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--prefix=)]TJ/F5 10.91 Tf 51.55 0 TD[(altdir)]TJ/F1 10.91 Tf 26.87 0 TD[(')-294(on)-295(the)]TJ/F4 10.91 Tf 39.34 0 TD[(configure)]TJ/F1 10.91 Tf 54.76 0 TD[(command)-294(line.)-432(\(This)-294(v)54(alue)-293(is)-295(captured)-295(in)-294(the)-295(Mak)27(e\014le)]TJ -175.55 -13.15 TD[(v)55(ariables)]TJ/F4 10.91 Tf 45.24 0 TD[(prefix)]TJ/F1 10.91 Tf 38 0 TD[(and)]TJ/F4 10.91 Tf 21.21 0 TD[(exec_prefix)]TJ/F1 10.91 Tf 63 0 TD[(.\))]TJ -152.51 -15.36 TD[(Sa)27(v)28(e)-492(for)-492(a)-493(small)-493(n)27(um)28(b)-27(er)-493(of)-493(example)-492(tests,)-533(the)-493(DejaGn)27(u)-492(distribution)-492(itself)-493(do)-28(es)-493(not)]TJ -14.94 -13.15 TD[(include)-441(an)27(y)-441(test)-441(suites;)-496(these)-441(are)-442(a)27(v)56(ailable)-441(separately)82(.)-768(T)83(est)-441(suites)-441(for)-442(the)]TJ/F7 10.91 Tf 366.17 0 TD[(gnu)]TJ/F1 10.91 Tf 25.19 0 TD[(compiler)]TJ -391.36 -13.15 TD[(\(testing)-416(b)-28(oth)-416(GCC)-417(and)-417(G)]TJ/F4 10.91 Tf 127.18 0 TD[(++)]TJ/F1 10.91 Tf 11.45 0 TD[(\))-416(and)-417(for)-416(the)]TJ/F7 10.91 Tf 68.21 0 TD[(gnu)]TJ/F1 10.91 Tf 24.92 0 TD[(binary)-416(utilities)-417(are)-416(distributed)-417(in)-416(parallel)]TJ -231.76 -13.15 TD[(with)-329(the)-329(DejaGn)26(u)-328(distribution)-329(\(but)-330(pac)27(k)56(aged)-329(as)-329(separate)-330(\014les\).)-443(The)-329(test)-329(suite)-330(for)-329(the)]TJ/F7 10.91 Tf 411.62 0 TD[(gnu)]TJ/F1 10.91 Tf -411.62 -13.15 TD[(debugger)-342(is)-342(distributed)-342(in)-343(parallel)-342(with)-342(eac)26(h)-341(release)-342(of)-342(GDB)-343(itself,)-344(starting)-343(with)-342(GDB)-342(4.9.)]TJ 0 -13.15 TD[(After)-288(con\014guring)-289(the)-289(top-lev)26(el)-288(DejaGn)27(u)-288(directory)83(,)-297(unpac)27(k)-288(and)-289(con\014gure)-289(the)-289(test)-289(directories)]TJ 0 -13.15 TD[(for)-444(the)-444(to)-28(ols)-444(y)27(ou)-444(w)27(an)28(t)-443(to)-445(test;)-499(then,)-472(in)-445(eac)27(h)-443(test)-444(directory)82(,)-471(run)]TJ/F4 10.91 Tf 318.76 0 TD[(make)]TJ/F1 10.91 Tf 27.76 0 TD[(to)-444(build)-444(auxiliary)]TJ -346.52 -13.15 TD[(programs)-333(required)-333(b)27(y)-333(some)-333(of)-333(the)-334(tests.)]TJ/F2 14.35 Tf 0 -28.55 TD[(A.2)-562(Installing)-375(DejaGn)30(u)]TJ/F1 10.91 Tf 14.94 -22.34 TD[(T)83(o)-398(install)-398(DejaGn)26(u)-397(in)-399(y)27(our)-398(\014lesystem)-398(\(either)-399(in)-398(`)]TJ/F4 10.91 Tf 239.2 0 TD[(/usr/local)]TJ/F1 10.91 Tf 57.27 0 TD[(',)-414(or)-399(as)-399(sp)-27(eci\014ed)-399(b)27(y)-398(y)27(our)]TJ -311.41 -13.15 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(--prefix)]TJ/F1 10.91 Tf 45.82 0 TD[(')-333(option)-333(to)]TJ/F4 10.91 Tf 53.94 0 TD[(configure)]TJ/F1 10.91 Tf 51.54 0 TD[(\),)-333(execute)]TJ/F4 10.91 Tf -125.53 -14.66 TD[(eg$)-524(make)-525(install)]TJ/F1 10.91 Tf -28.8 -15.36 TD[(`)]TJ/F4 10.91 Tf 3.03 0 TD[(make)-333(install)]TJ/F1 10.91 Tf 66.64 0 TD[(')-333(do)-28(es)-333(these)-333(things)-334(for)-333(DejaGn)27(u:)]TJ -63.76 -15.36 TD[(1.)-660(Lo)-27(ok)-307(in)-306(the)-306(path)-307(sp)-28(eci\014ed)-306(for)-306(executables)-307(\(`)]TJ/F4 10.91 Tf 223.93 0 TD[($exec_prefix)]TJ/F1 10.91 Tf 68.73 0 TD[('\))-306(for)-306(directories)-307(called)-306(`)]TJ/F4 10.91 Tf 113.22 0 TD[(lib)]TJ/F1 10.91 Tf 17.18 0 TD[(')]TJ -407.37 -13.15 TD[(and)-333(`)]TJ/F4 10.91 Tf 24.24 0 TD[(bin)]TJ/F1 10.91 Tf 17.18 0 TD[('.)-444(If)-333(these)-334(directories)-333(do)-333(not)-334(exist,)-333(`)]TJ/F4 10.91 Tf 169.04 0 TD[(make)-333(install)]TJ/F1 10.91 Tf 66.63 0 TD[(')-333(creates)-333(them.)]TJ -292.78 -15.36 TD[(2.)-660(Create)-333(another)-333(directory)-334(in)-333(the)-333(`)]TJ/F4 10.91 Tf 171.87 0 TD[(lib)]TJ/F1 10.91 Tf 17.18 0 TD[(')-333(directory)83(,)-333(called)-333(`)]TJ/F4 10.91 Tf 89.16 0 TD[(dejagnu)]TJ/F1 10.91 Tf 40.09 0 TD[('.)]TJ -318.3 -15.36 TD[(3.)-660(Cop)27(y)-332(the)]TJ/F4 10.91 Tf 62.96 0 TD[(runtest)]TJ/F1 10.91 Tf 43.73 0 TD[(shell)-333(script)-333(in)27(to)-333(`)]TJ/F4 10.91 Tf 80.45 0 TD[($exec_prefix/bin)]TJ/F1 10.91 Tf 91.64 0 TD[('.)]TJ -278.78 -15.36 TD[(4.)-660(Cop)27(y)-221(all)-222(the)-222(library)-223(\014les)-222(\(used)-222(to)-222(supp)-28(ort)-222(the)-223(framew)27(ork\))-221(in)27(to)-221(`)]TJ/F4 10.91 Tf 306.93 0 TD[($exec_prefix/lib/dejagnu)]TJ/F1 10.91 Tf 137.46 0 TD[('.)]TJ -444.39 -15.36 TD[(5.)-660(Cop)27(y)-439(`)]TJ/F4 10.91 Tf 48.37 0 TD[(runtest.exp)]TJ/F1 10.91 Tf 63 0 TD[(')-440(in)27(to)-440(`)]TJ/F4 10.91 Tf 34.16 0 TD[($exec_prefix/lib/dejagnu)]TJ/F1 10.91 Tf 137.45 0 TD[('.)-765(This)-441(is)-440(the)-441(main)-440(Tcl)-441(co)-27(de)]TJ -267.29 -13.15 TD[(implemen)27(ting)-332(DejaGn)27(u.)]TJ -6.66 -17.57 TD[(Eac)27(h)-360(test)-360(suite)-361(collection)-361(comes)-361(with)-361(simple)-361(installation)-360(instructions)-361(in)-361(a)-361(`)]TJ/F4 10.91 Tf 358.76 0 TD[(README)]TJ/F1 10.91 Tf 34.36 0 TD[(')-360(\014le;)]TJ -408.06 -13.15 TD[(in)-489(general,)-530(the)-490(test)-490(suites)-490(are)-490(designed)-490(to)-489(b)-28(e)-490(unpac)27(k)27(ed)-489(in)-490(the)-490(source)-490(directory)-490(for)-490(the)]TJ 0 -13.16 TD[(corresp)-27(onding)-334(to)-27(ol,)-334(and)-333(extract)-333(in)26(to)-332(a)-333(directory)-334(called)-333(`)]TJ/F4 10.91 Tf 265.36 0 TD[(testsuite)]TJ/F1 10.91 Tf 51.55 0 TD[('.)]TJ ET 0 g 0 G -endstream -endobj -249 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F4 28 0 R -/F5 31 0 R -/F7 49 0 R ->> -endobj -247 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 249 0 R ->> -endobj -252 0 obj -<< -/Length 117 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(50)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ ET 0 g 0 G -endstream -endobj -253 0 obj -<< -/F1 9 0 R ->> -endobj -251 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 253 0 R ->> -endobj -257 0 obj -<< -/Type /FontDescriptor -/CapHeight 611.11 -/Ascent 611.11 -/Descent -222.22 -/Flags 5 -/FontBBox [-6 -237 731 801] -/FontName /CMTT9 -/ItalicAngle 0 -/XHeight 431 -/StemV 80 -/FontFile 256 0 R ->> -endobj -258 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F14 -/FontDescriptor 257 0 R -/BaseFont /BBAFZC+CMTT9 -/FirstChar 0 -/LastChar 127 -/Widths [524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 -524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 -524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 -524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 -524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 -524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 -524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 -524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 -524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 -524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 -524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99 524.99] ->> -endobj -260 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -194.44 -/Flags 4 -/FontBBox [-259 -250 1036 969] -/FontName /CMR9 -/ItalicAngle 0 -/XHeight 431 -/StemV 80 -/FontFile 259 0 R ->> -endobj -261 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F15 -/FontDescriptor 260 0 R -/BaseFont /GSDFLN+CMR9 -/FirstChar 0 -/LastChar 127 -/Widths [642.28 856.48 799.38 713.58 685.18 770.67 742.28 799.38 742.28 799.38 742.28 -599.53 570.98 570.98 856.48 856.48 285.49 314.04 513.89 513.89 513.89 513.89 513.89 -770.67 456.79 513.89 742.28 799.38 513.89 927.77 1041.97 799.38 285.49 285.49 513.89 -856.48 513.89 856.48 799.38 285.49 399.69 399.69 513.89 799.38 285.49 342.59 285.49 -513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 285.49 -285.49 285.49 799.38 485.34 485.34 799.38 770.67 727.93 742.28 785.03 699.38 670.83 -806.48 770.67 370.99 528.08 799.22 642.28 941.97 770.67 799.38 699.38 799.38 756.48 -570.98 742.28 770.67 770.67 1056.17 770.67 770.67 628.08 285.49 513.89 285.49 513.89 -285.49 285.49 513.89 570.98 456.79 570.98 457.17 314.04 513.89 570.98 285.49 314.04 -542.43 285.49 856.48 570.98 513.89 570.98 542.43 402 405.4 399.69 570.98 542.43 742.28 -542.43 542.43 456.79 513.89 1027.77 513.89 513.89 513.89] ->> -endobj -263 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -194.44 -/Flags 68 -/FontBBox [-172 -250 1171 969] -/FontName /CMTI9 -/ItalicAngle -14 -/XHeight 431 -/StemV 80 -/FontFile 262 0 R ->> -endobj -264 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F16 -/FontDescriptor 263 0 R -/BaseFont /PFWZRU+CMTI9 -/FirstChar 0 -/LastChar 127 -/Widths [643.84 839.52 787.05 710.5 682.11 762.97 734.58 787.05 734.58 787.05 734.58 -629.64 577.17 603.4 905.11 918.22 314.82 341.05 524.7 524.7 524.7 524.7 524.7 850.94 -472.23 550.93 734.58 734.58 524.7 906.19 1011.13 787.05 262.35 314.82 527.78 839.52 -786.08 839.52 787.05 314.82 419.76 419.76 524.7 787.05 314.82 367.29 314.82 524.7 -524.7 524.7 524.7 524.7 524.7 524.7 524.7 524.7 524.7 524.7 314.82 314.82 314.82 -787.05 524.7 524.7 787.05 762.97 722.54 734.58 775.01 696.31 670.07 794.15 762.97 -395.68 538.9 789.21 643.84 920.38 762.97 787.05 696.31 787.05 748.78 577.17 734.58 -762.97 762.97 1025.32 762.97 762.97 629.64 314.82 527.78 314.82 524.7 314.82 314.82 -524.7 472.23 472.23 524.7 472.23 314.82 472.23 524.7 314.82 314.82 472.23 262.35 -839.52 577.17 524.7 524.7 472.23 432.88 419.76 341.05 550.93 472.23 682.11 473.77 -498.46 419.76 524.7 1049.4 524.7 524.7 524.7] ->> -endobj -266 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -194.44 -/Flags 68 -/FontBBox [-207 -250 1150 969] -/FontName /CMSL9 -/ItalicAngle -9 -/XHeight 431 -/StemV 80 -/FontFile 265 0 R ->> -endobj -267 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F17 -/FontDescriptor 266 0 R -/BaseFont /HGHLSL+CMSL9 -/FirstChar 0 -/LastChar 127 -/Widths [642.28 856.48 799.38 713.58 685.18 770.67 742.28 799.38 742.28 799.38 742.28 -599.53 570.98 570.98 856.48 856.48 285.49 314.04 513.89 513.89 513.89 513.89 513.89 -829.32 456.79 513.89 742.28 799.38 513.89 927.77 1041.97 799.38 285.49 285.49 513.89 -856.48 513.89 856.48 799.38 285.49 399.69 399.69 513.89 799.38 285.49 342.59 285.49 -513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 513.89 285.49 -285.49 285.49 799.38 485.34 485.34 799.38 770.67 727.93 742.28 785.03 699.38 670.83 -806.48 770.67 370.99 528.08 799.22 642.28 941.97 770.67 799.38 699.38 799.38 756.48 -570.98 742.28 770.67 770.67 1056.17 770.67 770.67 628.08 285.49 513.89 285.49 513.89 -285.49 285.49 513.89 570.98 456.79 570.98 457.17 314.04 513.89 570.98 285.49 314.04 -542.43 285.49 856.48 570.98 513.89 570.98 542.43 402 405.4 399.69 570.98 542.43 742.28 -542.43 542.43 456.79 513.89 1027.77 513.89 513.89 513.89] ->> -endobj -268 0 obj -<< -/Length 23119 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Index)]TJ 421.09 0 TD[(51)]TJ/F2 17.22 Tf -421.09 -25.91 TD[(Index)]TJ/F2 14.35 Tf 0 -119.73 TD[(-)]TJ/F14 8.97 Tf 0 -18.87 TD[(--all)]TJ/F15 8.97 Tf 26.61 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.68 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.92 0 TD[(10)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--baud)]TJ/F15 8.97 Tf 31.32 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.39 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--build)]TJ/F15 8.97 Tf 36.02 0 TD[(\()]TJ/F14 8.97 Tf 3.59 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.33 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.85 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.31 TD[(--connect)]TJ/F15 8.97 Tf 45.44 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 30.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.79 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--debug)]TJ/F15 8.97 Tf 36.02 0 TD[(\()]TJ/F14 8.97 Tf 3.59 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.33 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.85 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--help)]TJ/F15 8.97 Tf 31.32 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.39 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.31 TD[(--host)]TJ/F15 8.97 Tf 31.32 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.39 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--name)]TJ/F15 8.97 Tf 31.32 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.39 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--objdir)]TJ/F15 8.97 Tf 40.73 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.03 0 TD[(option\))]TJ/F16 8.97 Tf 31.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.32 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.31 TD[(--outdir)]TJ/F15 8.97 Tf 40.73 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.03 0 TD[(option\))]TJ/F16 8.97 Tf 31.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.32 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--reboot)]TJ/F15 8.97 Tf 40.73 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.03 0 TD[(option\))]TJ/F16 8.97 Tf 31.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.32 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--srcdir)]TJ/F15 8.97 Tf 40.73 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.03 0 TD[(option\))]TJ/F16 8.97 Tf 31.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.32 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.31 TD[(--strace)]TJ/F15 8.97 Tf 40.73 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.03 0 TD[(option\))]TJ/F16 8.97 Tf 31.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.32 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--target)]TJ/F15 8.97 Tf 40.73 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.03 0 TD[(option\))]TJ/F16 8.97 Tf 31.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.32 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--tool)]TJ/F15 8.97 Tf 31.32 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 31.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.39 0 TD[(10)]TJ/F14 8.97 Tf -197.81 -13.31 TD[(--tool)]TJ/F15 8.97 Tf 31.32 0 TD[(and)-342(naming)-343(con)28(v)28(en)29(tions)]TJ/F16 8.97 Tf 98.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 68.04 0 TD[(21)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--verbose)]TJ/F15 8.97 Tf 45.44 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 30.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.79 0 TD[(13)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(--version)]TJ/F15 8.97 Tf 45.44 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 30.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.79 0 TD[(13)]TJ/F14 8.97 Tf -197.81 -13.31 TD[(-b)]TJ/F15 8.97 Tf 12.49 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 30.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 115.7 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(-v)]TJ/F15 8.97 Tf 12.49 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 30.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 115.7 0 TD[(13)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(-V)]TJ/F15 8.97 Tf 12.49 0 TD[(\()]TJ/F14 8.97 Tf 3.58 0 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option\))]TJ/F16 8.97 Tf 30.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 115.7 0 TD[(13)]TJ/F2 14.35 Tf -197.81 -40.01 TD[(.)]TJ/F14 8.97 Tf 0 -18.87 TD[(.exp)]TJ/F16 8.97 Tf 20.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 181.92 0 TD[(1)]TJ/F2 14.35 Tf -202.42 -40 TD[(A)]TJ/F14 8.97 Tf 0 -18.87 TD[(absolute)]TJ/F17 8.97 Tf 40.73 0 TD[(path)]TJ/F16 8.97 Tf 19.43 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 137.65 0 TD[(28)]TJ -197.81 -13.3 TD[(adding)-342(a)-343(target)]TJ/F16 8.97 Tf 63.74 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.07 0 TD[(48)]TJ -197.81 -13.31 TD[(adding)-342(a)-343(test)-342(case)]TJ/F16 8.97 Tf 73.27 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 124.54 0 TD[(40)]TJ/F14 8.97 Tf -197.81 -13.3 TD[(all_flag)]TJ/F16 8.97 Tf 38.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 159.3 0 TD[(17)]TJ -197.81 -13.3 TD[(am)28(biguit)29(y)85(,)-341(required)-343(for)-343(POSIX)]TJ/F16 8.97 Tf 125.44 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 76.98 0 TD[(7)]TJ -202.42 -13.31 TD[(arc)28(hiv)29(e)-342(ob)-57(ject)-343(\014les)]TJ/F16 8.97 Tf 76.71 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.1 0 TD[(30)]TJ -197.81 -13.3 TD[(auxiliary)-342(\014les,)-343(building)]TJ/F16 8.97 Tf 94.25 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108.17 0 TD[(3)]TJ -202.42 -13.3 TD[(auxiliary)-342(programs)]TJ/F16 8.97 Tf 77.24 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.57 0 TD[(49)]TJ -197.81 -13.31 TD[(auxiliary)-342(test)-343(programs)]TJ/F16 8.97 Tf 94.94 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 102.87 0 TD[(12)]TJ/F2 14.35 Tf 27.16 589.87 TD[(B)]TJ/F14 8.97 Tf 0 -15.91 TD[(baud)]TJ/F16 8.97 Tf 20.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 177.43 0 TD[(17)]TJ -197.81 -11.95 TD[(baud)-342(rate,)-343(sp)-28(ecifying)]TJ/F16 8.97 Tf 85.81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112 0 TD[(11)]TJ -197.81 -11.96 TD[(bps,)-342(sp)-29(ecifying)]TJ/F16 8.97 Tf 60.2 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 137.61 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(bt)]TJ/F16 8.97 Tf 11.32 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 186.49 0 TD[(31)]TJ -197.81 -11.95 TD[(bug)-342(n)27(um)29(b)-28(er)]TJ/F16 8.97 Tf 50.42 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 147.39 0 TD[(42)]TJ -197.81 -11.96 TD[(bug)-342(n)27(um)29(b)-28(er,)-342(extra)]TJ/F16 8.97 Tf 76.7 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.11 0 TD[(42)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(bug_id)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(42)]TJ -197.81 -11.96 TD[(build)-342(con\014g)-343(name,)-342(c)27(hanging)]TJ/F16 8.97 Tf 115.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 82.45 0 TD[(11)]TJ -197.81 -11.95 TD[(build)-342(host)-343(con\014guration)-342(test)]TJ/F16 8.97 Tf 116.06 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.75 0 TD[(25)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(build_triplet)]TJ/F16 8.97 Tf 63.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.45 0 TD[(17)]TJ -197.81 -11.96 TD[(built)-342(in)-343(pro)-28(cedures,)-343(DejaGn)28(u)]TJ/F16 8.97 Tf 119.86 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.95 0 TD[(23)]TJ/F2 14.35 Tf -197.81 -31.93 TD[(C)]TJ/F15 8.97 Tf 0 -15.9 TD[(C)-342(torture)-343(test)]TJ/F16 8.97 Tf 58.53 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 139.28 0 TD[(39)]TJ -197.81 -11.96 TD[(canadian)-342(cross)-343(con\014guration)-342(test)]TJ/F16 8.97 Tf 133.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 64.04 0 TD[(25)]TJ -197.81 -11.96 TD[(cancelling)-342(exp)-29(ected)-342(failure)]TJ/F16 8.97 Tf 107.69 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.12 0 TD[(26)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(check)]TJ/F15 8.97 Tf 26.61 0 TD[(mak)28(e\014le)-342(target)]TJ/F16 8.97 Tf 62.62 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 113.19 0 TD[(3)]TJ/F14 8.97 Tf -202.42 -11.95 TD[(clear_xfail)]TJ/F17 8.97 Tf 54.85 0 TD[(con\014g)]TJ/F16 8.97 Tf 26.21 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.75 0 TD[(26)]TJ -197.81 -11.96 TD[(Closing)-342(a)-343(remote)-342(connection)]TJ/F16 8.97 Tf 116.04 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.77 0 TD[(27)]TJ -197.81 -11.96 TD[(command)-342(line)-343(option)-342(v)56(ariables)]TJ/F16 8.97 Tf 124.87 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 72.94 0 TD[(17)]TJ -197.81 -11.95 TD[(command)-342(line)-343(options)]TJ/F16 8.97 Tf 90.27 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.15 0 TD[(9)]TJ -202.42 -11.96 TD[(command)-342(line)-343(Tcl)-342(v)56(ariable)-342(de\014nition)]TJ/F16 8.97 Tf 150.47 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 47.34 0 TD[(10)]TJ -197.81 -11.96 TD[(comm)28(unications)-342(pro)-28(cedures)]TJ/F16 8.97 Tf 112.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 85.45 0 TD[(26)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(comp_output)]TJ/F16 8.97 Tf 54.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.52 0 TD[(42)]TJ -197.81 -11.95 TD[(comparing)-342(\014les)]TJ/F16 8.97 Tf 63 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.81 0 TD[(28)]TJ -197.81 -11.96 TD[(compile)-342(a)-343(\014le)]TJ/F16 8.97 Tf 55.03 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.78 0 TD[(29)]TJ -197.81 -11.96 TD[(con\014guration)-342(dep)-29(enden)28(t)-342(defaults)]TJ/F16 8.97 Tf 133.59 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 64.22 0 TD[(15)]TJ -197.81 -11.95 TD[(con\014guring)-342(DejaGn)27(u)]TJ/F16 8.97 Tf 85.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.45 0 TD[(49)]TJ -197.81 -11.96 TD[(connecting)-342(to)-343(target)]TJ/F16 8.97 Tf 84.37 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 113.44 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(connectmode)]TJ/F16 8.97 Tf 54.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.52 0 TD[(17)]TJ -197.81 -11.96 TD[(con)28(v)29(erting)-342(relativ)28(e)-342(paths)-343(to)-342(absolute)]TJ/F16 8.97 Tf 150.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 47.79 0 TD[(28)]TJ -197.81 -11.95 TD[(Core)-342(In)27(ternal)-341(Pro)-29(cedures)]TJ/F16 8.97 Tf 103.07 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 94.74 0 TD[(23)]TJ -197.81 -11.96 TD[(cross)-342(con\014guration)]TJ/F16 8.97 Tf 77.12 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.3 0 TD[(4)]TJ -202.42 -11.96 TD[(curren)28(t)-342(test)-342(sub)-29(directory)]TJ/F16 8.97 Tf 102.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.29 0 TD[(42)]TJ/F2 14.35 Tf -197.81 -31.93 TD[(D)]TJ/F14 8.97 Tf 0 -15.91 TD[(dbg.log)]TJ/F15 8.97 Tf 36.02 0 TD[(\014le)]TJ/F16 8.97 Tf 14.1 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 147.69 0 TD[(11)]TJ -197.81 -11.95 TD[(debug)-342(log)]TJ/F16 8.97 Tf 41.32 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 156.49 0 TD[(36)]TJ -197.81 -11.96 TD[(debug)-342(log)-343(for)-342(test)-343(cases)]TJ/F16 8.97 Tf 95.08 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 102.73 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(debugger.exp)]TJ/F16 8.97 Tf 58.82 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.99 0 TD[(30)]TJ -197.81 -11.95 TD[(debugging)-342(a)-343(test)-342(case)]TJ/F16 8.97 Tf 88.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108.91 0 TD[(40)]TJ -197.81 -11.96 TD[(default)-342(options,)-343(con)28(trolling)]TJ/F16 8.97 Tf 111.04 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.77 0 TD[(17)]TJ -197.81 -11.96 TD[(defaults,)-342(option)]TJ/F16 8.97 Tf 64.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 133.66 0 TD[(17)]TJ -197.81 -11.96 TD[(defaults,)-342(setting)-343(in)-342(init)-343(\014le)]TJ/F16 8.97 Tf 107.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.83 0 TD[(23)]TJ -197.81 -11.95 TD[(DejaGn)28(u)-342(con\014guration)]TJ/F16 8.97 Tf 93.82 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.99 0 TD[(49)]TJ -197.81 -11.96 TD[(DejaGn)28(u)-342(test)-342(driv)27(er)]TJ/F16 8.97 Tf 81.81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.61 0 TD[(9)]TJ -202.42 -11.96 TD[(DejaGn)28(u,)-342(the)-342(name)]TJ/F16 8.97 Tf 81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.42 0 TD[(6)]TJ ET 0 g 0 G -endstream -endobj -269 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F14 258 0 R -/F15 261 0 R -/F16 264 0 R -/F17 267 0 R ->> -endobj -255 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 269 0 R ->> -endobj -272 0 obj -<< -/Length 23714 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(52)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F15 8.97 Tf 0 -32.23 TD[(Delete)-342(a)-343(w)28(atc)28(hp)-27(oin)27(t.)]TJ/F16 8.97 Tf 85.32 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.49 0 TD[(31)]TJ -197.81 -12.1 TD[(design)-342(goals)]TJ/F16 8.97 Tf 50.46 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 151.96 0 TD[(5)]TJ -202.42 -12.09 TD[(detailed)-342(log)]TJ/F16 8.97 Tf 49.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 148.29 0 TD[(36)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(diff)]TJ/F17 8.97 Tf 21.9 0 TD[(\014lename)-398(\014lename)]TJ/F16 8.97 Tf 72.39 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.52 0 TD[(28)]TJ -197.81 -12.1 TD[(directories)-342(matc)27(hing)-341(a)-343(pattern)]TJ/F16 8.97 Tf 124.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 73.43 0 TD[(28)]TJ -197.81 -12.09 TD[(directory)-342(names)-343(and)]TJ/F14 8.97 Tf 85.34 0 TD[(--tool)]TJ/F16 8.97 Tf 30.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 82.11 0 TD[(21)]TJ -197.81 -12.09 TD[(do)28(wnload)-342(a)-342(\014le)]TJ/F16 8.97 Tf 63.09 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.72 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -12.1 TD[(download)]TJ/F17 8.97 Tf 40.73 0 TD[(\014le)]TJ/F15 8.97 Tf 15.35 0 TD[([)]TJ/F17 8.97 Tf 5.63 0 TD[(spa)28(wnid)]TJ/F15 8.97 Tf 35.98 0 TD[(])]TJ/F16 8.97 Tf 4.81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.31 0 TD[(27)]TJ -197.81 -12.09 TD[(do)28(wnload,)]TJ/F14 8.97 Tf 43.77 0 TD[(tip)]TJ/F16 8.97 Tf 15.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.28 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -12.1 TD[(dumplocals)]TJ/F16 8.97 Tf 50.14 0 TD[(expr)-202(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 147.67 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(dumprocs)]TJ/F16 8.97 Tf 40.73 0 TD[(expr)-241(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 157.08 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(dumpvars)]TJ/F16 8.97 Tf 40.73 0 TD[(expr)-241(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 157.08 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -12.1 TD[(dumpwatch)]TJ/F16 8.97 Tf 45.44 0 TD[(expr)-221(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 152.37 0 TD[(30)]TJ/F2 14.35 Tf -197.81 -32.75 TD[(E)]TJ/F14 8.97 Tf 0 -16.21 TD[(echo.exp)]TJ/F16 8.97 Tf 38.64 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 163.78 0 TD[(5)]TJ/F14 8.97 Tf -202.42 -12.09 TD[(ERROR)]TJ/F16 8.97 Tf 26.33 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 161.24 0 TD[(9,)-342(23)]TJ -187.57 -12.09 TD[(example)]TJ/F16 8.97 Tf 34.14 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.28 0 TD[(5)]TJ/F14 8.97 Tf -202.42 -12.1 TD[(exec_output)]TJ/F16 8.97 Tf 54.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.52 0 TD[(42)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(exec_prefix)]TJ/F15 8.97 Tf 51.78 0 TD[(,)-342(con\014gure)-343(options.)]TJ/F16 8.97 Tf 77.99 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 68.04 0 TD[(49)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(execute_anywhere)]TJ/F16 8.97 Tf 78.39 0 TD[(cmd)-52(line)-236(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 119.42 0 TD[(30)]TJ -197.81 -12.1 TD[(executing)-342(commands)-343(remotely)]TJ/F16 8.97 Tf 124.24 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 73.57 0 TD[(30)]TJ -197.81 -12.09 TD[(existing)-342(tests,)-343(running)]TJ/F16 8.97 Tf 90.72 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 111.7 0 TD[(3)]TJ -202.42 -12.1 TD[(exit)-342(co)-29(de)-342(from)]TJ/F14 8.97 Tf 61.21 0 TD[(runtest)]TJ/F16 8.97 Tf 34.01 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 107.2 0 TD[(9)]TJ -202.42 -12.09 TD[(exit)-342(pro)-29(cedure,)-342(tested)-343(to)-28(ols)]TJ/F16 8.97 Tf 111.72 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.09 0 TD[(31)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(exit_remote_shell)]TJ/F17 8.97 Tf 83.1 0 TD[(spa)28(wnid)]TJ/F16 8.97 Tf 33.81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 80.9 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -12.1 TD[(exp)]TJ/F15 8.97 Tf 17.19 0 TD[(\014lename)-342(su\016x)]TJ/F16 8.97 Tf 59.53 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.09 0 TD[(21)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(expect)]TJ/F15 8.97 Tf 31.32 0 TD[(in)28(ternal)-342(tracing)]TJ/F16 8.97 Tf 63.48 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.01 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -12.1 TD[(expect)]TJ/F15 8.97 Tf 31.32 0 TD[(script)-342(names)]TJ/F16 8.97 Tf 53.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 117.58 0 TD[(1)]TJ/F14 8.97 Tf -202.42 -12.09 TD[(expect)]TJ/F15 8.97 Tf 31.32 0 TD[(scripting)-342(language)]TJ/F16 8.97 Tf 75.66 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.44 0 TD[(8)]TJ/F14 8.97 Tf -202.42 -12.09 TD[(expect_out\(buffer\))]TJ/F16 8.97 Tf 86.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 111.79 0 TD[(42)]TJ -197.81 -12.1 TD[(exp)-28(ected)-343(failure)]TJ/F16 8.97 Tf 66.06 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.51 0 TD[(9,)-342(25)]TJ -187.57 -12.09 TD[(exp)-28(ected)-343(failure,)-342(cancelling)]TJ/F16 8.97 Tf 111.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.66 0 TD[(26)]TJ/F2 14.35 Tf -197.81 -32.75 TD[(F)]TJ/F14 8.97 Tf 0 -16.21 TD[(FAIL)]TJ/F16 8.97 Tf 19.74 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 172.44 0 TD[(7,)-342(9)]TJ/F14 8.97 Tf -192.18 -12.09 TD[(fail)-342(")]TJ/F17 8.97 Tf 26.61 0 TD[(string)]TJ/F14 8.97 Tf 23.88 0 TD[(")]TJ/F16 8.97 Tf 5.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 141.81 0 TD[(24)]TJ -197.81 -12.1 TD[(failing)-342(test,)-343(exp)-28(ected)]TJ/F16 8.97 Tf 85.67 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.75 0 TD[(9)]TJ -202.42 -12.09 TD[(failing)-342(test,)-343(unexp)-28(ected)]TJ/F16 8.97 Tf 95.14 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 107.28 0 TD[(9)]TJ -202.42 -12.09 TD[(failure,)-342(exp)-29(ected)]TJ/F16 8.97 Tf 68.1 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.71 0 TD[(25)]TJ -197.81 -12.1 TD[(failure,)-342(POSIX)-343(de\014nition)]TJ/F16 8.97 Tf 102.87 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.55 0 TD[(7)]TJ -202.42 -12.09 TD[(\014lename)-342(for)-343(test)-342(\014les)]TJ/F16 8.97 Tf 85.58 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.23 0 TD[(21)]TJ -197.81 -12.09 TD[(\014les)-342(matc)27(hing)-341(a)-343(pattern)]TJ/F16 8.97 Tf 98.23 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.58 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -12.1 TD[(find)]TJ/F17 8.97 Tf 21.9 0 TD[(dir)-414(pattern)]TJ/F16 8.97 Tf 46.35 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.56 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(findfile)]TJ/F16 8.97 Tf 38.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 159.3 0 TD[(22)]TJ -197.81 -12.1 TD[(\014nding)-342(\014le)-343(di\013erences)]TJ/F16 8.97 Tf 89.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108.29 0 TD[(28)]TJ -197.81 -12.09 TD[(future)-342(directions)]TJ/F16 8.97 Tf 68.26 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.16 0 TD[(8)]TJ/F2 14.35 Tf 22.55 539.88 TD[(G)]TJ/F14 8.97 Tf 0 -17.74 TD[(gdb.t00/echo.exp)]TJ/F16 8.97 Tf 77.08 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.34 0 TD[(5)]TJ/F14 8.97 Tf -202.42 -12.79 TD[(get_warning_threshold)]TJ/F16 8.97 Tf 101.8 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 96.01 0 TD[(24)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(getdirs)]TJ/F17 8.97 Tf 36.02 0 TD[(dir)]TJ/F16 8.97 Tf 14.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 147.61 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(getdirs)]TJ/F17 8.97 Tf 36.02 0 TD[(dir)-414(pattern)]TJ/F16 8.97 Tf 45.83 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 115.96 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(getenv)]TJ/F17 8.97 Tf 31.32 0 TD[(v)57(ar)]TJ/F16 8.97 Tf 14.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 151.51 0 TD[(29)]TJ -197.81 -12.79 TD[(getting)-342(en)27(vironmen)29(t)-342(v)57(ariables)]TJ/F16 8.97 Tf 120.79 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.02 0 TD[(29)]TJ -197.81 -12.79 TD[(GNA)85(TS)-341(bug)-343(n)28(um)28(b)-27(er)]TJ/F16 8.97 Tf 85.42 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.39 0 TD[(42)]TJ -197.81 -12.79 TD[(Granlund,)-342(T)85(orb)-57(jorn)]TJ/F16 8.97 Tf 81.47 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.34 0 TD[(39)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(grep)]TJ/F17 8.97 Tf 21.9 0 TD[(\014lename)-398(regexp)]TJ/F16 8.97 Tf 64.47 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 111.44 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -12.8 TD[(grep)]TJ/F17 8.97 Tf 21.9 0 TD[(\014lename)-398(regexp)]TJ/F14 8.97 Tf 66.6 0 TD[(line)]TJ/F16 8.97 Tf 19.72 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.59 0 TD[(28)]TJ/F2 14.35 Tf -197.81 -36.93 TD[(H)]TJ/F15 8.97 Tf 0 -17.73 TD[(help)-342(with)]TJ/F14 8.97 Tf 40.96 0 TD[(runtest)]TJ/F16 8.97 Tf 35.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.56 0 TD[(11)]TJ -197.81 -12.79 TD[(hin)28(ts)-342(on)-342(test)-343(case)-342(writing)]TJ/F16 8.97 Tf 103.28 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 94.53 0 TD[(41)]TJ -197.81 -12.8 TD[(host)-342(con\014g)-343(name,)-342(c)27(hanging)]TJ/F16 8.97 Tf 111.41 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.4 0 TD[(11)]TJ -197.81 -12.79 TD[(host)-342(con\014guration)-343(test)]TJ/F16 8.97 Tf 93.39 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.42 0 TD[(25)]TJ -197.81 -12.79 TD[(host,)-342(explained)]TJ/F16 8.97 Tf 63.12 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.69 0 TD[(49)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(host_triplet)]TJ/F16 8.97 Tf 58.82 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.99 0 TD[(17)]TJ/F2 14.35 Tf -197.81 -36.93 TD[(I)]TJ/F14 8.97 Tf 0 -17.74 TD[(ignoretests)]TJ/F16 8.97 Tf 54.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.52 0 TD[(17)]TJ -197.81 -12.79 TD[(init)-342(\014le)-343(name)]TJ/F16 8.97 Tf 55.03 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.78 0 TD[(22)]TJ -197.81 -12.79 TD[(init)-342(\014le,)-343(purp)-28(ose)]TJ/F16 8.97 Tf 67.87 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.94 0 TD[(22)]TJ -197.81 -12.79 TD[(initialization)]TJ/F16 8.97 Tf 51.56 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 146.25 0 TD[(22)]TJ -197.81 -12.79 TD[(input)-342(\014les)]TJ/F16 8.97 Tf 41.86 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 155.95 0 TD[(34)]TJ -197.81 -12.79 TD[(installed)-342(to)-29(ol)-342(name)]TJ/F16 8.97 Tf 80.03 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 117.78 0 TD[(24)]TJ -197.81 -12.79 TD[(installing)-342(DejaGn)27(u)]TJ/F16 8.97 Tf 77.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.63 0 TD[(49)]TJ -197.81 -12.79 TD[(in)28(ternal)-342(details)]TJ/F16 8.97 Tf 62.88 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.93 0 TD[(21)]TJ -197.81 -12.79 TD[(in)28(v)29(oking)]TJ/F16 8.97 Tf 36.7 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 165.72 0 TD[(9)]TJ -202.42 -12.79 TD[(IP)-342(net)27(w)29(ork)-342(pro)-28(cedures)]TJ/F16 8.97 Tf 93.58 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.23 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(isbuild)-342(")]TJ/F17 8.97 Tf 40.73 0 TD[(host)]TJ/F14 8.97 Tf 17.13 0 TD[(")]TJ/F16 8.97 Tf 6.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 133.77 0 TD[(25)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(ishost)-342(")]TJ/F17 8.97 Tf 36.02 0 TD[(host)]TJ/F14 8.97 Tf 17.13 0 TD[(")]TJ/F16 8.97 Tf 6.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.3 0 TD[(25)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(isnative)]TJ/F16 8.97 Tf 38.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 159.3 0 TD[(25)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(istarget)-342(")]TJ/F17 8.97 Tf 45.44 0 TD[(target)]TJ/F14 8.97 Tf 24.27 0 TD[(")]TJ/F16 8.97 Tf 6.79 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.31 0 TD[(25)]TJ/F2 14.35 Tf -197.81 -36.93 TD[(K)]TJ/F14 8.97 Tf 0 -17.74 TD[(kermit)]TJ/F17 8.97 Tf 31.32 0 TD[(p)-28(ort)-363(bps)]TJ/F16 8.97 Tf 36.61 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.88 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -12.79 TD[(kermit)]TJ/F15 8.97 Tf 28.25 0 TD[(,)-342(remote)-343(testing)-342(via)]TJ/F16 8.97 Tf 79.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.8 0 TD[(11)]TJ ET 0 g 0 G -endstream -endobj -273 0 obj -<< -/F1 9 0 R -/F15 261 0 R -/F16 264 0 R -/F14 258 0 R -/F17 267 0 R -/F2 12 0 R ->> -endobj -271 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 273 0 R ->> -endobj -276 0 obj -<< -/Length 24305 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Index)]TJ 421.09 0 TD[(53)]TJ/F2 14.35 Tf -421.09 -97.38 TD[(L)]TJ/F15 8.97 Tf 0 -18.59 TD[(last)-342(command)-343(output)]TJ/F16 8.97 Tf 89.12 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108.69 0 TD[(42)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(lib/debugger.exp)]TJ/F16 8.97 Tf 76.95 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.86 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(lib/remote.exp)]TJ/F16 8.97 Tf 67.89 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.92 0 TD[(26)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(lib/target.exp)]TJ/F16 8.97 Tf 67.89 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.92 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(lib/utils.exp)]TJ/F16 8.97 Tf 63.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.45 0 TD[(28)]TJ -197.81 -13.18 TD[(Lib)-28(es,)-343(Don)]TJ/F16 8.97 Tf 46.08 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 156.34 0 TD[(8)]TJ -202.42 -13.18 TD[(list,)-342(pruning)]TJ/F16 8.97 Tf 50.83 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 146.98 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(list_targets)]TJ/F16 8.97 Tf 58.82 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.99 0 TD[(29)]TJ -197.81 -13.18 TD[(lists)-342(supp)-29(orted)-342(targets)]TJ/F16 8.97 Tf 90.89 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 106.92 0 TD[(29)]TJ -197.81 -13.18 TD[(load)-342(library)-343(\014le)]TJ/F16 8.97 Tf 63.63 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.18 0 TD[(25)]TJ -197.81 -13.18 TD[(load)-342(pro)-29(cedure,)-342(tested)-343(to)-28(ols)]TJ/F16 8.97 Tf 112.61 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 85.2 0 TD[(31)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(load_lib)-342(")]TJ/F17 8.97 Tf 45.44 0 TD[(library-\014le)]TJ/F14 8.97 Tf 42.27 0 TD[(")]TJ/F16 8.97 Tf 6.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.59 0 TD[(25)]TJ -197.81 -13.18 TD[(lo)-28(cal)-343(`)]TJ/F14 8.97 Tf 24.32 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')]TJ/F16 8.97 Tf 5.23 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 130.6 0 TD[(19)]TJ -197.81 -13.18 TD[(log)-342(\014les,)-343(where)-342(to)-343(write)]TJ/F16 8.97 Tf 95.17 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 102.64 0 TD[(12)]TJ -197.81 -13.17 TD[(Lupton,)-342(Rob)-29(ert)]TJ/F16 8.97 Tf 64.26 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 133.55 0 TD[(43)]TJ/F2 14.35 Tf -197.81 -39.27 TD[(M)]TJ/F14 8.97 Tf 0 -18.6 TD[(make)]TJ/F15 8.97 Tf 21.9 0 TD[(builds)-342(part)-343(of)-342(tests)]TJ/F16 8.97 Tf 77.35 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.56 0 TD[(49)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(make)-342(check)]TJ/F16 8.97 Tf 46.88 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 155.54 0 TD[(3)]TJ -202.42 -13.17 TD[(master)-342(`)]TJ/F14 8.97 Tf 32.84 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')]TJ/F16 8.97 Tf 5.33 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.98 0 TD[(18)]TJ -197.81 -13.18 TD[(Menapace,)-342(Julia)]TJ/F16 8.97 Tf 67.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.65 0 TD[(6)]TJ/F14 8.97 Tf -202.42 -13.18 TD[(mondfe)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(32)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(mondfe)]TJ/F15 8.97 Tf 28.24 0 TD[(,)-342(remote)-343(testing)-342(via)]TJ/F16 8.97 Tf 79.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.8 0 TD[(11)]TJ/F2 14.35 Tf -197.81 -39.27 TD[(N)]TJ/F15 8.97 Tf 0 -18.59 TD[(name)-342(\\DejaGn)27(u")]TJ/F16 8.97 Tf 72.03 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 130.39 0 TD[(6)]TJ -202.42 -13.18 TD[(name)-342(for)-343(remote)-342(test)-343(mac)28(hine)]TJ/F16 8.97 Tf 121.3 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 76.51 0 TD[(12)]TJ -197.81 -13.18 TD[(name)-342(transformations)]TJ/F16 8.97 Tf 89.81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108 0 TD[(24)]TJ -197.81 -13.18 TD[(name,)-342(initialization)-343(mo)-28(dule)]TJ/F16 8.97 Tf 111.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 85.91 0 TD[(22)]TJ -197.81 -13.18 TD[(naming)-342(con)27(v)29(en)29(tions)]TJ/F16 8.97 Tf 81.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.63 0 TD[(21)]TJ -197.81 -13.18 TD[(naming)-342(tests)-343(to)-342(run)]TJ/F16 8.97 Tf 81.22 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.59 0 TD[(10)]TJ -197.81 -13.18 TD[(nativ)28(e)-342(con\014guration)]TJ/F16 8.97 Tf 81.8 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.62 0 TD[(4)]TJ -202.42 -13.18 TD[(nativ)28(e)-342(con\014guration)-342(test)]TJ/F16 8.97 Tf 99.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.43 0 TD[(25)]TJ -197.81 -13.18 TD[(net)28(w)29(ork)-342(\(IP\))-343(pro)-28(cedures)]TJ/F16 8.97 Tf 99.34 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.47 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -13.18 TD[(NOTE)]TJ/F16 8.97 Tf 19.62 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 167.95 0 TD[(9,)-342(24)]TJ/F14 8.97 Tf -187.57 -13.18 TD[(note)-342(")]TJ/F17 8.97 Tf 26.61 0 TD[(string)]TJ/F14 8.97 Tf 23.88 0 TD[(")]TJ/F16 8.97 Tf 5.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 141.81 0 TD[(24)]TJ/F2 14.35 Tf 27.16 589.86 TD[(O)]TJ/F14 8.97 Tf 0 -15.9 TD[(objdir)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(17)]TJ -197.81 -11.96 TD[(ob)-57(ject)-342(directory)]TJ/F16 8.97 Tf 66.96 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 130.85 0 TD[(12)]TJ -197.81 -11.96 TD[(Op)-28(ening)-343(a)-342(remote)-343(connection)]TJ/F16 8.97 Tf 120.37 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.44 0 TD[(26)]TJ -197.81 -11.96 TD[(op)-28(erating)-343(principles)]TJ/F16 8.97 Tf 81.33 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.48 0 TD[(21)]TJ -197.81 -11.95 TD[(option)-342(defaults)]TJ/F16 8.97 Tf 62.87 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 134.94 0 TD[(17)]TJ -197.81 -11.96 TD[(option)-342(list,)]TJ/F14 8.97 Tf 46.64 0 TD[(runtest)]TJ/F16 8.97 Tf 34.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.02 0 TD[(9)]TJ -202.42 -11.96 TD[(options)]TJ/F16 8.97 Tf 30.07 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 172.35 0 TD[(9)]TJ -202.42 -11.96 TD[(options)-342(for)]TJ/F14 8.97 Tf 46.41 0 TD[(runtest)]TJ/F15 8.97 Tf 32.95 0 TD[(,)-342(common)]TJ/F16 8.97 Tf 41.24 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.82 0 TD[(4)]TJ -202.42 -11.95 TD[(options,)-342(Tcl)-343(v)56(ariables)-341(for)-343(defaults)]TJ/F16 8.97 Tf 137.36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 60.45 0 TD[(17)]TJ -197.81 -11.96 TD[(order)-342(of)-343(tests)]TJ/F16 8.97 Tf 54.97 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.84 0 TD[(21)]TJ -197.81 -11.96 TD[(Ousterhout,)-342(John)-343(K.)]TJ/F16 8.97 Tf 85.61 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.81 0 TD[(8)]TJ/F14 8.97 Tf -202.42 -11.95 TD[(outdir)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(17)]TJ -197.81 -11.96 TD[(output)-342(directory)]TJ/F16 8.97 Tf 68.11 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.7 0 TD[(12)]TJ -197.81 -11.96 TD[(output)-342(\014les)]TJ/F16 8.97 Tf 46.85 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 150.96 0 TD[(35)]TJ -197.81 -11.96 TD[(output,)-342(additional)]TJ/F16 8.97 Tf 75.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.91 0 TD[(13)]TJ -197.81 -11.95 TD[(o)28(v)29(erriding)-342(`)]TJ/F14 8.97 Tf 45.87 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')]TJ/F16 8.97 Tf 5.35 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108.93 0 TD[(15)]TJ -197.81 -11.96 TD[(o)28(v)29(erview)]TJ/F16 8.97 Tf 37.23 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 165.19 0 TD[(1)]TJ/F2 14.35 Tf -202.42 -31.93 TD[(P)]TJ/F14 8.97 Tf 0 -15.91 TD[(PASS)]TJ/F16 8.97 Tf 19.74 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 172.44 0 TD[(6,)-342(9)]TJ/F14 8.97 Tf -192.18 -11.96 TD[(pass)-342(")]TJ/F17 8.97 Tf 26.61 0 TD[(string)]TJ/F14 8.97 Tf 23.88 0 TD[(")]TJ/F16 8.97 Tf 5.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 141.81 0 TD[(24)]TJ -197.81 -11.95 TD[(path)-342(lo)-29(okup)]TJ/F16 8.97 Tf 50.54 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 147.27 0 TD[(28)]TJ -197.81 -11.96 TD[(pattern)-342(matc)27(h,)-341(directory)]TJ/F16 8.97 Tf 102.07 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.74 0 TD[(28)]TJ -197.81 -11.96 TD[(pattern)-342(matc)27(h,)-341(\014lenames)]TJ/F16 8.97 Tf 102.46 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.35 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -11.95 TD[(perror)-342(")]TJ/F17 8.97 Tf 36.02 0 TD[(string)-428(n)27(um)29(b)-28(er)]TJ/F14 8.97 Tf 58.09 0 TD[(")]TJ/F16 8.97 Tf 5.49 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.21 0 TD[(23)]TJ -197.81 -11.96 TD[(p)-28(ersonal)-343(con\014g)-342(`)]TJ/F14 8.97 Tf 65.86 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')]TJ/F16 8.97 Tf 4.07 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.22 0 TD[(20)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(pop_host)]TJ/F16 8.97 Tf 38.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 159.3 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(pop_target)]TJ/F16 8.97 Tf 49.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 148.05 0 TD[(29)]TJ -197.81 -11.95 TD[(p)-28(orting)-343(to)-342(a)-343(new)-342(host)]TJ/F16 8.97 Tf 89.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 108.29 0 TD[(48)]TJ -197.81 -11.96 TD[(POSIX)-342(conformance)]TJ/F16 8.97 Tf 84.94 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 117.48 0 TD[(6)]TJ/F14 8.97 Tf -202.42 -11.96 TD[(prefix)]TJ/F15 8.97 Tf 28.25 0 TD[(,)-342(con\014gure)-343(options)]TJ/F16 8.97 Tf 75.4 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 94.16 0 TD[(49)]TJ -197.81 -11.96 TD[(Prin)28(t)-342(a)-342(bac)27(ktrace)]TJ/F16 8.97 Tf 72.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.66 0 TD[(31)]TJ -197.81 -11.95 TD[(Prin)28(t)-342(global)-342(v)56(ariable)-342(v)56(alues)]TJ/F16 8.97 Tf 111.75 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.06 0 TD[(30)]TJ -197.81 -11.96 TD[(Prin)28(t)-342(lo)-28(cal)-343(v)56(ariable)-341(v)56(alue)]TJ/F16 8.97 Tf 102.89 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 94.92 0 TD[(30)]TJ -197.81 -11.96 TD[(Prin)28(t)-342(pro)-28(cedure)-343(b)-28(o)-29(dies)]TJ/F16 8.97 Tf 94.22 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.59 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(print)]TJ/F16 8.97 Tf 26.61 0 TD[(var)-293(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 171.2 0 TD[(31)]TJ -197.81 -11.95 TD[(Prin)28(t)-342(w)28(atc)29(hp)-28(oin)28(ts)]TJ/F16 8.97 Tf 73.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 124.63 0 TD[(30)]TJ -197.81 -11.96 TD[(Prin)28(ting)-342(v)57(ariable)-342(v)56(alues)]TJ/F16 8.97 Tf 97.79 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 100.02 0 TD[(31)]TJ -197.81 -11.96 TD[(PRMS)-342(bug)-343(n)28(um)28(b)-27(er)]TJ/F16 8.97 Tf 80.53 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 117.28 0 TD[(42)]TJ/F14 8.97 Tf -197.81 -11.95 TD[(prms_id)]TJ/F16 8.97 Tf 33.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 163.83 0 TD[(42)]TJ -197.81 -11.96 TD[(problem,)-342(detected)-343(b)28(y)-342(test)-342(case)]TJ/F16 8.97 Tf 124.65 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.77 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -11.96 TD[(prune)]TJ/F17 8.97 Tf 26.61 0 TD[(list)-362(pattern)]TJ/F16 8.97 Tf 46.47 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 124.73 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(prune_system_crud)]TJ/F17 8.97 Tf 83.1 0 TD[(system)-342(text)]TJ/F16 8.97 Tf 49.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 65.19 0 TD[(29)]TJ -197.81 -11.95 TD[(pruning)-342(system)-343(output,)-342(examining)-343(program)-342(output)]TJ/F16 8.97 Tf 20.18 -11.96 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 177.63 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(psource)]TJ/F17 8.97 Tf 36.02 0 TD[(\014lename)]TJ/F16 8.97 Tf 36 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.79 0 TD[(28)]TJ/F14 8.97 Tf -197.81 -11.95 TD[(push_host)]TJ/F16 8.97 Tf 45.44 0 TD[(name)-193(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 152.37 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(push_target)]TJ/F16 8.97 Tf 54.85 0 TD[(name)-397(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 142.96 0 TD[(29)]TJ ET 0 g 0 G -endstream -endobj -277 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F15 261 0 R -/F16 264 0 R -/F14 258 0 R -/F17 267 0 R ->> -endobj -275 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 277 0 R ->> -endobj -280 0 obj -<< -/Length 22673 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(54)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -92.76 TD[(Q)]TJ/F14 8.97 Tf 0 -18.42 TD[(quit)]TJ/F16 8.97 Tf 20.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 177.43 0 TD[(31)]TJ -197.81 -13.11 TD[(Quiting)-342(DejaGn)27(u)]TJ/F16 8.97 Tf 71.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.91 0 TD[(31)]TJ/F2 14.35 Tf -197.81 -38.8 TD[(R)]TJ/F15 8.97 Tf 0 -18.42 TD[(ranlib)-342(a)-343(\014le)]TJ/F16 8.97 Tf 47.09 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 150.72 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -13.11 TD[(reboot)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(17)]TJ -197.81 -13.1 TD[(reb)-28(o)-29(oting)-342(remote)-343(targets)]TJ/F16 8.97 Tf 102.35 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.46 0 TD[(12)]TJ -197.81 -13.1 TD[(regular)-342(expression,)-343(\014le)-342(con)27(ten)29(ts)]TJ/F16 8.97 Tf 128.66 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 69.15 0 TD[(28)]TJ -197.81 -13.11 TD[(remote)-342(connection)-343(pro)-28(cedures)]TJ/F16 8.97 Tf 121.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 76.63 0 TD[(26)]TJ -197.81 -13.1 TD[(remote)-342(connection,)-343(ending)]TJ/F16 8.97 Tf 107.56 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.25 0 TD[(27)]TJ -197.81 -13.1 TD[(remote)-342(test)-343(mac)28(hine)-342(name)]TJ/F16 8.97 Tf 107.71 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.1 0 TD[(12)]TJ -197.81 -13.1 TD[(remote)-342(testb)-29(ed,)-342(connecting)-343(to)]TJ/F16 8.97 Tf 121.16 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 76.65 0 TD[(11)]TJ -197.81 -13.11 TD[(remote)-342(testing)]TJ/F16 8.97 Tf 59.55 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.26 0 TD[(32)]TJ -197.81 -13.1 TD[(remote)-342(testing)-343(via)]TJ/F14 8.97 Tf 76.11 0 TD[(kermit)]TJ/F16 8.97 Tf 30.62 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.08 0 TD[(11)]TJ -197.81 -13.1 TD[(remote)-342(testing)-343(via)]TJ/F14 8.97 Tf 76.11 0 TD[(mondfe)]TJ/F16 8.97 Tf 30.62 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.08 0 TD[(11)]TJ -197.81 -13.1 TD[(remote)-342(testing)-343(via)]TJ/F14 8.97 Tf 76.11 0 TD[(rlogin)]TJ/F16 8.97 Tf 30.62 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.08 0 TD[(11)]TJ -197.81 -13.11 TD[(remote)-342(testing)-343(via)]TJ/F14 8.97 Tf 76.11 0 TD[(rsh)]TJ/F16 8.97 Tf 17.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.68 0 TD[(11)]TJ -197.81 -13.1 TD[(remote)-342(testing)-343(via)]TJ/F14 8.97 Tf 76.11 0 TD[(telnet)]TJ/F16 8.97 Tf 30.62 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.08 0 TD[(11)]TJ -197.81 -13.1 TD[(remote)-342(testing)-343(via)]TJ/F14 8.97 Tf 76.11 0 TD[(tip)]TJ/F16 8.97 Tf 17.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.68 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(remote.exp)]TJ/F16 8.97 Tf 49.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 148.05 0 TD[(26)]TJ/F14 8.97 Tf -197.81 -13.11 TD[(remote_close)]TJ/F17 8.97 Tf 59.56 0 TD[(shellid)]TJ/F16 8.97 Tf 26.87 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 111.38 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(remote_open)]TJ/F17 8.97 Tf 54.85 0 TD[(t)28(yp)-28(e)]TJ/F16 8.97 Tf 20.96 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 122 0 TD[(26)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(rlogin)]TJ/F17 8.97 Tf 31.32 0 TD[(hostname)]TJ/F16 8.97 Tf 40.93 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.56 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(rlogin)]TJ/F15 8.97 Tf 28.24 0 TD[(,)-342(remote)-343(testing)-342(via)]TJ/F16 8.97 Tf 79.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.8 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.11 TD[(rsh)]TJ/F17 8.97 Tf 17.19 0 TD[(hostname)]TJ/F16 8.97 Tf 41.46 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 139.16 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(rsh)]TJ/F15 8.97 Tf 14.12 0 TD[(,)-342(remote)-343(testing)-342(via)]TJ/F16 8.97 Tf 80.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.4 0 TD[(11)]TJ -197.81 -13.1 TD[(running)]TJ/F16 8.97 Tf 33.25 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 169.17 0 TD[(9)]TJ -202.42 -13.1 TD[(running)-342(tests)]TJ/F16 8.97 Tf 54.95 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 147.47 0 TD[(3)]TJ/F14 8.97 Tf -202.42 -13.11 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(description)]TJ/F16 8.97 Tf 45.64 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.76 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -13.1 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(exit)-342(co)-29(de)]TJ/F16 8.97 Tf 37.41 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 128.99 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -13.1 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option)-342(defaults)]TJ/F16 8.97 Tf 62.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.5 0 TD[(17)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(runtest)]TJ/F15 8.97 Tf 36.02 0 TD[(option)-342(list)]TJ/F16 8.97 Tf 41.92 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 124.48 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -13.11 TD[(runtest)]TJ/F15 8.97 Tf 32.95 0 TD[(,)-342(listing)-343(options)]TJ/F16 8.97 Tf 65 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.86 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(runtest)]TJ/F15 8.97 Tf 32.95 0 TD[(,)-342(most)-343(common)-342(options)]TJ/F16 8.97 Tf 96.25 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 73.22 0 TD[(4)]TJ/F14 8.97 Tf -202.42 -13.1 TD[(runtest)]TJ/F15 8.97 Tf 32.95 0 TD[(,)-342(v)56(ariable)-342(defns)-342(on)-343(cmdline)]TJ/F16 8.97 Tf 109.57 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 55.29 0 TD[(10)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(runtest.exp)]TJ/F16 8.97 Tf 54.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.52 0 TD[(21)]TJ/F14 8.97 Tf -197.81 -13.11 TD[(runtest_file_p)]TJ/F17 8.97 Tf 68.97 0 TD[(run)28(tests)-382(testcase)]TJ/F16 8.97 Tf 69.02 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 59.82 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -13.1 TD[(runtests)]TJ/F16 8.97 Tf 38.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 159.3 0 TD[(17)]TJ/F2 14.35 Tf 27.16 518.26 TD[(S)]TJ/F15 8.97 Tf 0 -18.53 TD[(searc)28(hing)-342(\014le)-342(con)27(ten)29(ts)]TJ/F16 8.97 Tf 90.06 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 107.75 0 TD[(28)]TJ -197.81 -13.15 TD[(selecting)-342(a)-343(range)-342(of)-343(tests)]TJ/F16 8.97 Tf 101.12 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.85 0 TD[(10,)-342(29)]TJ -182.97 -13.16 TD[(selecting)-342(tests)-343(for)-342(a)-343(to)-28(ol)]TJ/F16 8.97 Tf 98.41 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.4 0 TD[(10)]TJ -197.81 -13.15 TD[(serial)-342(do)27(wnload,)]TJ/F14 8.97 Tf 67.91 0 TD[(tip)]TJ/F16 8.97 Tf 16.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 113.14 0 TD[(27)]TJ -197.81 -13.15 TD[(serial)-342(line)-343(connection,)]TJ/F14 8.97 Tf 90.19 0 TD[(kermit)]TJ/F16 8.97 Tf 30.12 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.5 0 TD[(27)]TJ -197.81 -13.15 TD[(serial)-342(line)-343(connection,)]TJ/F14 8.97 Tf 90.19 0 TD[(tip)]TJ/F16 8.97 Tf 16.52 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.1 0 TD[(27)]TJ -197.81 -13.15 TD[(set)-342(curren)27(t)-341(host)]TJ/F16 8.97 Tf 64.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 133.36 0 TD[(29)]TJ -197.81 -13.15 TD[(set)-342(curren)27(t)-341(target)]TJ/F16 8.97 Tf 72.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.43 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(set_warning_threshold)]TJ/F17 8.97 Tf 101.93 0 TD[(threshold)]TJ/F16 8.97 Tf 39.92 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 55.96 0 TD[(24)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(setenv)]TJ/F17 8.97 Tf 31.32 0 TD[(v)57(ar)-414(v)56(al)]TJ/F16 8.97 Tf 28.99 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 137.5 0 TD[(29)]TJ -197.81 -13.15 TD[(setting)-342(defaults)-343(for)-342(DejaGn)27(u)-341(v)56(ariables)]TJ/F16 8.97 Tf 155.01 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 42.8 0 TD[(15)]TJ -197.81 -13.15 TD[(setting)-342(en)27(vironmen)29(t)-342(v)57(ariables)]TJ/F16 8.97 Tf 120.3 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.51 0 TD[(29)]TJ -197.81 -13.15 TD[(setting)-342(up)-343(targets)]TJ/F16 8.97 Tf 72.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 125.04 0 TD[(22)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(setup_xfail)-342(")]TJ/F17 8.97 Tf 59.56 0 TD[(con\014g)]TJ/F15 8.97 Tf 27.39 0 TD[([)]TJ/F17 8.97 Tf 2.56 0 TD[(bugid)]TJ/F15 8.97 Tf 22.88 0 TD[(])]TJ/F14 8.97 Tf 2.56 0 TD[(")]TJ/F16 8.97 Tf 5.97 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 76.89 0 TD[(25)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(site.exp)]TJ/F16 8.97 Tf 38.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 159.3 0 TD[(15)]TJ -197.81 -13.15 TD[(`)]TJ/F14 8.97 Tf 2.56 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')-342(for)-343(all)-342(of)-343(DejaGn)28(u)]TJ/F16 8.97 Tf 80.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.21 0 TD[(18)]TJ -197.81 -13.16 TD[(`)]TJ/F14 8.97 Tf 2.56 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')-342(for)-343(eac)28(h)-342(p)-28(erson)]TJ/F16 8.97 Tf 67.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.69 0 TD[(20)]TJ -197.81 -13.15 TD[(`)]TJ/F14 8.97 Tf 2.56 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(')-342(for)-343(eac)28(h)-342(to)-28(ol)]TJ/F16 8.97 Tf 58.13 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.46 0 TD[(19)]TJ -197.81 -13.15 TD[(`)]TJ/F14 8.97 Tf 2.56 0 TD[(site.exp)]TJ/F15 8.97 Tf 37.66 0 TD[(',)-342(m)27(ultiple)]TJ/F16 8.97 Tf 44.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 113.44 0 TD[(15)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(slay)]TJ/F17 8.97 Tf 21.9 0 TD[(name)]TJ/F16 8.97 Tf 24.1 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 151.81 0 TD[(28)]TJ -197.81 -13.15 TD[(sla)28(ying)-342(pro)-28(cesses)]TJ/F16 8.97 Tf 68.72 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.09 0 TD[(28)]TJ -197.81 -13.15 TD[(source)-342(directory)]TJ/F16 8.97 Tf 67.13 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 130.68 0 TD[(12)]TJ -197.81 -13.15 TD[(sourcing)-342(Tcl)-343(\014les)]TJ/F16 8.97 Tf 69.05 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 128.76 0 TD[(28)]TJ -197.81 -13.15 TD[(sp)-28(ecial)-343(v)56(ariables)]TJ/F16 8.97 Tf 67.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 130.3 0 TD[(42)]TJ -197.81 -13.15 TD[(sp)-28(ecifying)-343(target)-342(name)]TJ/F16 8.97 Tf 93.75 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.06 0 TD[(11)]TJ -197.81 -13.15 TD[(sp)-28(ecifying)-343(the)-342(build)-343(con\014g)-342(name)]TJ/F16 8.97 Tf 132.81 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 65 0 TD[(11)]TJ -197.81 -13.15 TD[(sp)-28(ecifying)-343(the)-342(host)-343(con\014g)-342(name)]TJ/F16 8.97 Tf 128.86 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 68.95 0 TD[(11)]TJ -197.81 -13.15 TD[(sp)-28(ecifying)-343(the)-342(target)-343(con\014guration)]TJ/F16 8.97 Tf 141.28 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 56.53 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(srcdir)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(17)]TJ -197.81 -13.15 TD[(standard)-342(conformance:)-457(POSIX)-342(1003.3)]TJ/F16 8.97 Tf 155.17 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 47.25 0 TD[(6)]TJ -202.42 -13.15 TD[(start)-342(pro)-29(cedure,)-342(tested)-343(to)-28(ols)]TJ/F16 8.97 Tf 115.86 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.95 0 TD[(31)]TJ -197.81 -13.16 TD[(starting)-342(in)27(teractiv)29(e)-342(to)-28(ols)]TJ/F16 8.97 Tf 101.85 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.96 0 TD[(22)]TJ -197.81 -13.15 TD[(starting)-342(the)-343(tcl)-342(debugger)]TJ/F16 8.97 Tf 102.34 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.47 0 TD[(13)]TJ/F14 8.97 Tf -197.81 -13.15 TD[(subdir)]TJ/F16 8.97 Tf 29.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.36 0 TD[(42)]TJ -197.81 -13.15 TD[(success,)-342(POSIX)-343(de\014nition)]TJ/F16 8.97 Tf 106.53 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 95.89 0 TD[(6)]TJ -202.42 -13.15 TD[(successful)-342(test)]TJ/F16 8.97 Tf 59.1 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.32 0 TD[(9)]TJ -202.42 -13.15 TD[(successful)-342(test,)-343(unexp)-28(ected)]TJ/F16 8.97 Tf 110.85 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.57 0 TD[(9)]TJ -202.42 -13.15 TD[(su\016x,)]TJ/F14 8.97 Tf 26.93 0 TD[(expect)]TJ/F15 8.97 Tf 31.32 0 TD[(scripts)]TJ/F16 8.97 Tf 27.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.4 0 TD[(1)]TJ -202.42 -13.15 TD[(summary)-342(log)]TJ/F16 8.97 Tf 54.42 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.39 0 TD[(35)]TJ ET 0 g 0 G -endstream -endobj -281 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F14 258 0 R -/F16 264 0 R -/F15 261 0 R -/F17 267 0 R ->> -endobj -279 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 281 0 R ->> -endobj -284 0 obj -<< -/Length 26944 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(Index)]TJ 421.09 0 TD[(55)]TJ/F2 14.35 Tf -421.09 -24.04 TD[(T)]TJ/F15 8.97 Tf 0 -15.91 TD[(target)-342(con\014guration)-343(test)]TJ/F16 8.97 Tf 99.14 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.67 0 TD[(25)]TJ -197.81 -11.96 TD[(target)-342(con\014guration,)-343(sp)-28(ecifying)]TJ/F16 8.97 Tf 128.09 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 69.72 0 TD[(12)]TJ -197.81 -11.95 TD[(target)-342(dep)-29(enden)28(t)-342(pro)-28(cedures)]TJ/F16 8.97 Tf 116.45 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 81.36 0 TD[(31)]TJ -197.81 -11.96 TD[(target)-342(mac)27(hine)-341(name)]TJ/F16 8.97 Tf 86.04 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 111.77 0 TD[(11)]TJ -197.81 -11.96 TD[(target,)-342(explained)]TJ/F16 8.97 Tf 68.87 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 128.94 0 TD[(49)]TJ/F14 8.97 Tf -197.81 -11.95 TD[(target.exp)]TJ/F16 8.97 Tf 49.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 148.05 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(target_triplet)]TJ/F16 8.97 Tf 67.89 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.92 0 TD[(17)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(targetname)]TJ/F16 8.97 Tf 49.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 148.05 0 TD[(17)]TJ -197.81 -11.96 TD[(targets)]TJ/F16 8.97 Tf 29.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 168.63 0 TD[(32)]TJ -197.81 -11.95 TD[(tcl)]TJ/F16 8.97 Tf 11.85 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 190.57 0 TD[(8)]TJ -202.42 -11.96 TD[(tcl)-342(debugger)]TJ/F16 8.97 Tf 51.06 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 146.75 0 TD[(13)]TJ -197.81 -11.96 TD[(Tcl)-342(v)56(ariables)-342(for)-342(option)-343(defaults)]TJ/F16 8.97 Tf 129.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 67.91 0 TD[(17)]TJ -197.81 -11.96 TD[(Tcl)-342(v)56(ariables,)-342(de\014ning)-342(for)]TJ/F14 8.97 Tf 106.08 0 TD[(runtest)]TJ/F16 8.97 Tf 35.42 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 56.31 0 TD[(10)]TJ/F17 8.97 Tf -197.81 -11.95 TD[(tclv)57(ar)]TJ/F14 8.97 Tf 23.45 0 TD[(=)]TJ/F17 8.97 Tf 4.7 0 TD[(v)57(alue)]TJ/F16 8.97 Tf 22.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 146.89 0 TD[(10)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(telnet)]TJ/F17 8.97 Tf 31.32 0 TD[(hostname)-398(p)-29(ort)]TJ/F16 8.97 Tf 62.04 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.45 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(telnet)]TJ/F15 8.97 Tf 28.24 0 TD[(,)-342(remote)-343(testing)-342(via)]TJ/F16 8.97 Tf 79.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.8 0 TD[(11)]TJ -197.81 -11.96 TD[(terminating)-342(remote)-343(connection)]TJ/F16 8.97 Tf 125.24 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 72.57 0 TD[(27)]TJ -197.81 -11.95 TD[(test)-342(case)-343(cannot)-342(run)]TJ/F16 8.97 Tf 82.37 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 120.05 0 TD[(9)]TJ -202.42 -11.96 TD[(test)-342(case)-343(messages)]TJ/F16 8.97 Tf 76.16 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 126.26 0 TD[(9)]TJ -202.42 -11.96 TD[(test)-342(case)-343(w)28(arnings)]TJ/F16 8.97 Tf 75.99 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 126.43 0 TD[(9)]TJ -202.42 -11.95 TD[(test)-342(case,)-343(debugging)]TJ/F16 8.97 Tf 81.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 115.83 0 TD[(40)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(declaring)-342(am)27(biguit)29(y)]TJ/F16 8.97 Tf 120.93 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 76.88 0 TD[(24)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(declaring)-342(failure)]TJ/F16 8.97 Tf 106.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 90.83 0 TD[(24)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(declaring)-342(no)-343(supp)-28(ort)]TJ/F16 8.97 Tf 124.94 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 72.87 0 TD[(24)]TJ -197.81 -11.95 TD[(test)-342(case,)-343(declaring)-342(no)-343(test)]TJ/F16 8.97 Tf 108.15 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.66 0 TD[(24)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(declaring)-342(success)]TJ/F16 8.97 Tf 110.63 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 87.18 0 TD[(24)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(ERR)28(OR)-342(in)]TJ/F16 8.97 Tf 85.82 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 111.99 0 TD[(23)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(exp)-28(ecting)-343(failure)]TJ/F16 8.97 Tf 107.99 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 89.82 0 TD[(25)]TJ -197.81 -11.95 TD[(test)-342(case,)-343(informational)-342(messages)]TJ/F16 8.97 Tf 134.2 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 63.61 0 TD[(24)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(W)114(ARNING)-342(in)]TJ/F16 8.97 Tf 98.85 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.96 0 TD[(23)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(W)114(ARNING)-342(threshold)]TJ/F16 8.97 Tf 128.99 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 68.82 0 TD[(24)]TJ -197.81 -11.96 TD[(test)-342(case,)-343(writing)]TJ/F16 8.97 Tf 71.48 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 126.33 0 TD[(39)]TJ -197.81 -11.95 TD[(test)-342(cases,)-343(debug)-342(log)]TJ/F16 8.97 Tf 84.95 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.86 0 TD[(11)]TJ -197.81 -11.96 TD[(test)-342(directories,)-343(naming)]TJ/F16 8.97 Tf 97.63 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 100.18 0 TD[(21)]TJ -197.81 -11.96 TD[(test)-342(\014lename)]TJ/F16 8.97 Tf 54.03 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.78 0 TD[(21)]TJ -197.81 -11.95 TD[(test)-342(output,)-343(displa)28(ying)-342(all)]TJ/F16 8.97 Tf 106.57 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.24 0 TD[(10)]TJ -197.81 -11.96 TD[(test)-342(programs,)-343(auxiliary)]TJ/F16 8.97 Tf 98.4 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.41 0 TD[(12)]TJ -197.81 -11.96 TD[(test)-342(suite)-343(distributions)]TJ/F16 8.97 Tf 93.44 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.37 0 TD[(49)]TJ -197.81 -11.96 TD[(test,)-342(failing)]TJ/F16 8.97 Tf 46.85 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 155.57 0 TD[(9)]TJ -202.42 -11.95 TD[(test,)-342(successful)]TJ/F16 8.97 Tf 60.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.04 0 TD[(9)]TJ -202.42 -11.96 TD[(test,)-342(unresolv)27(ed)-341(outcome)]TJ/F16 8.97 Tf 102.48 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.94 0 TD[(9)]TJ -202.42 -11.96 TD[(test,)-342(unsupp)-29(orted)]TJ/F16 8.97 Tf 72.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 129.66 0 TD[(9)]TJ -202.42 -11.96 TD[(tests,)-342(running)]TJ/F16 8.97 Tf 56.23 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 146.19 0 TD[(3)]TJ -202.42 -11.95 TD[(tests,)-342(running)-343(order)]TJ/F16 8.97 Tf 81.24 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 116.57 0 TD[(21)]TJ -197.81 -11.96 TD[(tests,)-342(running)-343(sp)-28(eci\014cally)]TJ/F16 8.97 Tf 104.7 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 78.27 0 TD[(10,)-342(29)]TJ -182.97 -11.96 TD[(TET)]TJ/F16 8.97 Tf 20.88 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 181.54 0 TD[(6)]TJ/F14 8.97 Tf -202.42 -11.96 TD[(tip)]TJ/F17 8.97 Tf 17.19 0 TD[(p)-28(ort)]TJ/F16 8.97 Tf 19.77 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 160.85 0 TD[(27)]TJ/F14 8.97 Tf -197.81 -11.95 TD[(tip)]TJ/F15 8.97 Tf 14.12 0 TD[(,)-342(remote)-343(testing)-342(via)]TJ/F16 8.97 Tf 80.29 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.4 0 TD[(11)]TJ/F14 8.97 Tf -197.81 -11.96 TD[(tip_download)]TJ/F17 8.97 Tf 59.56 0 TD[(spa)28(wnid)-380(\014le)]TJ/F16 8.97 Tf 51.08 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 87.17 0 TD[(27)]TJ/F14 8.97 Tf 27.16 555.85 TD[(tool)]TJ/F16 8.97 Tf 20.38 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 177.43 0 TD[(17)]TJ -197.81 -12.53 TD[(to)-28(ol)-343(command)-342(language)]TJ/F16 8.97 Tf 98.32 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.1 0 TD[(8)]TJ -202.42 -12.52 TD[(to)-28(ol)-343(initialization)]TJ/F16 8.97 Tf 71.8 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 126.01 0 TD[(22)]TJ -197.81 -12.53 TD[(to)-28(ol)-343(name,)-342(as)-343(installed)]TJ/F16 8.97 Tf 93.51 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.3 0 TD[(24)]TJ -197.81 -12.52 TD[(to)-28(ol)-343(names)-342(and)-343(naming)-342(con)27(v)29(en)28(tions)]TJ/F16 8.97 Tf 146.28 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 51.53 0 TD[(21)]TJ/F17 8.97 Tf -197.81 -12.53 TD[(to)-28(ol)]TJ/F14 8.97 Tf 15.96 0 TD[(_exit)]TJ/F16 8.97 Tf 25.65 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 156.2 0 TD[(31)]TJ/F17 8.97 Tf -197.81 -12.52 TD[(to)-28(ol)]TJ/F14 8.97 Tf 15.96 0 TD[(_load)]TJ/F16 8.97 Tf 25.65 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 156.2 0 TD[(31)]TJ/F17 8.97 Tf -197.81 -12.52 TD[(to)-28(ol)]TJ/F14 8.97 Tf 15.96 0 TD[(_start)]TJ/F16 8.97 Tf 30.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 151.67 0 TD[(31)]TJ/F17 8.97 Tf -197.81 -12.53 TD[(to)-28(ol)]TJ/F14 8.97 Tf 15.96 0 TD[(_version)]TJ/F16 8.97 Tf 39.25 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.6 0 TD[(32)]TJ/F14 8.97 Tf -197.81 -12.52 TD[(tracelevel)]TJ/F16 8.97 Tf 49.76 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 148.05 0 TD[(17)]TJ -197.81 -12.53 TD[(tracing)-342(Tcl)-343(commands)]TJ/F16 8.97 Tf 93.1 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 104.71 0 TD[(12)]TJ/F14 8.97 Tf -197.81 -12.52 TD[(transform)]TJ/F16 8.97 Tf 45.23 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 152.58 0 TD[(22)]TJ/F14 8.97 Tf -197.81 -12.53 TD[(transform)-342(")]TJ/F17 8.97 Tf 50.15 0 TD[(to)-28(olname)]TJ/F14 8.97 Tf 37.62 0 TD[(")]TJ/F16 8.97 Tf 6.48 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 103.56 0 TD[(24)]TJ -197.81 -12.52 TD[(transform)-342(to)-29(ol)-342(name)]TJ/F16 8.97 Tf 84.92 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.89 0 TD[(24)]TJ -197.81 -12.52 TD[(turning)-342(on)-343(output)]TJ/F16 8.97 Tf 75.66 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 122.15 0 TD[(13)]TJ/F2 14.35 Tf -197.81 -35.34 TD[(U)]TJ/F15 8.97 Tf 0 -17.15 TD[(unexp)-28(ected)-343(success)]TJ/F16 8.97 Tf 77.9 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 124.52 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -12.52 TD[(UNRESOLVED)]TJ/F16 8.97 Tf 49.12 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 143.06 0 TD[(7,)-342(9)]TJ/F14 8.97 Tf -192.18 -12.53 TD[(unresolved)-342(")]TJ/F17 8.97 Tf 54.85 0 TD[(string)]TJ/F14 8.97 Tf 23.89 0 TD[(")]TJ/F16 8.97 Tf 6.64 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.43 0 TD[(24)]TJ -197.81 -12.52 TD[(unset)-342(curren)27(t)-341(host)]TJ/F16 8.97 Tf 76.11 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.7 0 TD[(29)]TJ -197.81 -12.53 TD[(unset)-342(curren)27(t)-341(target)]TJ/F16 8.97 Tf 81.86 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 115.95 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -12.52 TD[(unsetenv)]TJ/F17 8.97 Tf 40.73 0 TD[(v)57(ar)]TJ/F16 8.97 Tf 14.64 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.44 0 TD[(29)]TJ -197.81 -12.53 TD[(unsetting)-342(en)27(vironmen)29(t)-342(v)57(ariables)]TJ/F16 8.97 Tf 129.78 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 68.03 0 TD[(29)]TJ/F14 8.97 Tf -197.81 -12.52 TD[(UNSUPPORTED)]TJ/F16 8.97 Tf 53.65 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)]TJ/F15 8.97 Tf 138.53 0 TD[(7,)-342(9)]TJ/F14 8.97 Tf -192.18 -12.52 TD[(unsupported)-342(")]TJ/F17 8.97 Tf 59.56 0 TD[(string)]TJ/F14 8.97 Tf 23.88 0 TD[(")]TJ/F16 8.97 Tf 6.47 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 107.9 0 TD[(24)]TJ -197.81 -12.53 TD[(unsupp)-28(orted)-343(test)]TJ/F16 8.97 Tf 69.3 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 133.12 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -12.52 TD[(UNTESTED)]TJ/F16 8.97 Tf 40.06 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 152.12 0 TD[(7,)-342(9)]TJ/F14 8.97 Tf -192.18 -12.53 TD[(untested)-342(")]TJ/F17 8.97 Tf 45.44 0 TD[(string)]TJ/F14 8.97 Tf 23.88 0 TD[(")]TJ/F16 8.97 Tf 6.99 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.5 0 TD[(24)]TJ -197.81 -12.52 TD[(un)28(tested)-342(prop)-28(erties)]TJ/F16 8.97 Tf 80.33 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 122.09 0 TD[(9)]TJ -202.42 -12.53 TD[(utilities,)-342(loading)-343(from)-342(init)-343(\014le)]TJ/F16 8.97 Tf 120.39 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 77.42 0 TD[(23)]TJ/F14 8.97 Tf -197.81 -12.52 TD[(utils.exp)]TJ/F16 8.97 Tf 45.23 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 152.58 0 TD[(28)]TJ/F2 14.35 Tf -197.81 -35.33 TD[(V)]TJ/F15 8.97 Tf 0 -17.16 TD[(v)57(ariables)-342(for)-343(all)-342(tests)]TJ/F16 8.97 Tf 85.48 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 112.33 0 TD[(42)]TJ -197.81 -12.52 TD[(v)57(ariables)-342(for)-343(option)-342(defaults)]TJ/F16 8.97 Tf 115.18 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 82.63 0 TD[(17)]TJ -197.81 -12.52 TD[(v)57(ariables)-342(of)-343(DejaGn)28(u,)-342(defaults)]TJ/F16 8.97 Tf 124.1 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 73.71 0 TD[(15)]TJ/F14 8.97 Tf -197.81 -12.53 TD[(verbose)]TJ/F16 8.97 Tf 33.98 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 163.83 0 TD[(17)]TJ/F14 8.97 Tf -197.81 -12.52 TD[(verbose)]TJ/F15 8.97 Tf 36.02 0 TD[([)]TJ/F14 8.97 Tf 2.56 0 TD[(-log)]TJ/F15 8.97 Tf 18.83 0 TD[(])-342([)]TJ/F14 8.97 Tf 8.19 0 TD[(-n)]TJ/F15 8.97 Tf 9.42 0 TD[(])-342([)]TJ/F14 8.97 Tf 8.19 0 TD[(--)]TJ/F15 8.97 Tf 9.42 0 TD[(])]TJ/F14 8.97 Tf 5.63 0 TD[(")]TJ/F17 8.97 Tf 4.7 0 TD[(string)]TJ/F14 8.97 Tf 23.89 0 TD[(")]TJ/F17 8.97 Tf 7.78 0 TD[(n)28(um)29(b)-28(er)]TJ/F16 8.97 Tf 33.31 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 29.87 0 TD[(26)]TJ/F14 8.97 Tf -197.81 -12.53 TD[(verbose)]TJ/F15 8.97 Tf 36.02 0 TD[(builtin)-342(function)]TJ/F16 8.97 Tf 63.54 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 98.25 0 TD[(26)]TJ -197.81 -12.52 TD[(v)28(ersion)-342(n)28(um)29(b)-28(ers)]TJ/F16 8.97 Tf 67.65 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 130.16 0 TD[(13)]TJ -197.81 -12.53 TD[(v)28(ersion)-342(pro)-28(cedure,)-343(tested)-342(to)-29(ols)]TJ/F16 8.97 Tf 124.82 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 72.99 0 TD[(32)]TJ -197.81 -12.52 TD[(VxW)85(orks,)-341(link)-343(with)-343(`)]TJ/F14 8.97 Tf 84.54 0 TD[(-r)]TJ/F15 8.97 Tf 9.42 0 TD[(')]TJ/F16 8.97 Tf 4.49 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 99.36 0 TD[(33)]TJ ET 0 g 0 G -endstream -endobj -285 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F15 261 0 R -/F16 264 0 R -/F14 258 0 R -/F17 267 0 R ->> -endobj -283 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 285 0 R ->> -endobj -288 0 obj -<< -/Length 5533 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(56)-25998(DejaGn)27(u)-333(T)83(esting)-333(F)83(ramew)27(ork)]TJ/F2 14.35 Tf 0 -31.59 TD[(W)]TJ/F14 8.97 Tf 0 -16.19 TD[(WARNING)]TJ/F16 8.97 Tf 35.4 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 152.17 0 TD[(9,)-342(23)]TJ/F14 8.97 Tf -187.57 -12.08 TD[(warning)-342(")]TJ/F17 8.97 Tf 40.73 0 TD[(string)-428(n)27(um)29(b)-28(er)]TJ/F14 8.97 Tf 58.08 0 TD[(")]TJ/F16 8.97 Tf 7.5 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 91.5 0 TD[(23)]TJ -197.81 -12.08 TD[(W)85(atc)29(h)-342(when)-342(a)-343(v)56(ariable)-342(is)-342(read)]TJ/F16 8.97 Tf 124.24 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 73.57 0 TD[(30)]TJ -197.81 -12.08 TD[(W)85(atc)29(h)-342(when)-342(a)-343(v)56(ariable)-342(is)-342(unset)]TJ/F16 8.97 Tf 128.49 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 69.32 0 TD[(30)]TJ -197.81 -12.09 TD[(W)85(atc)29(h)-342(when)-342(a)-343(v)56(ariable)-342(is)-342(written)]TJ/F16 8.97 Tf 136.67 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 61.14 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -12.08 TD[(watchdel)]TJ/F16 8.97 Tf 40.73 0 TD[(watch)-392(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 157.08 0 TD[(31)]TJ/F14 8.97 Tf -197.81 -12.08 TD[(watchread)]TJ/F16 8.97 Tf 45.44 0 TD[(var)-215(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 152.37 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -12.09 TD[(watchunset)]TJ/F16 8.97 Tf 50.14 0 TD[(var)-196(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 147.67 0 TD[(30)]TJ/F14 8.97 Tf -197.81 -12.08 TD[(watchwrite)]TJ/F16 8.97 Tf 50.14 0 TD[(var)-196(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 147.67 0 TD[(30)]TJ 27.16 119.74 TD[(What)-342(is)-343(New)]TJ/F16 8.97 Tf 54.92 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 147.5 0 TD[(3)]TJ/F14 8.97 Tf -202.42 -11.97 TD[(which)]TJ/F17 8.97 Tf 26.61 0 TD[(binary)]TJ/F16 8.97 Tf 28.42 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 142.78 0 TD[(28)]TJ -197.81 -11.97 TD[(writing)-342(a)-343(test)-342(case)]TJ/F16 8.97 Tf 76.22 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 121.59 0 TD[(39)]TJ/F2 14.35 Tf -197.81 -32 TD[(X)]TJ/F14 8.97 Tf 0 -15.93 TD[(XFAIL)]TJ/F16 8.97 Tf 26.46 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)]TJ/F15 8.97 Tf 165.72 0 TD[(6,)-342(9)]TJ -192.18 -11.97 TD[(XF)114(AIL,)-342(a)28(v)28(oiding)-341(for)-343(POSIX)]TJ/F16 8.97 Tf 115.55 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 86.87 0 TD[(6)]TJ/F14 8.97 Tf -202.42 -11.96 TD[(XFAIL)]TJ/F15 8.97 Tf 23.54 0 TD[(,)-342(pro)-29(ducing)]TJ/F16 8.97 Tf 48.27 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 126 0 TD[(25)]TJ/F14 8.97 Tf -197.81 -11.97 TD[(XPASS)]TJ/F16 8.97 Tf 25.04 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)]TJ/F15 8.97 Tf 177.38 0 TD[(9)]TJ/F14 8.97 Tf -202.42 -11.97 TD[(XPASS)]TJ/F15 8.97 Tf 23.54 0 TD[(,)-342(pro)-29(ducing)]TJ/F16 8.97 Tf 48.27 0 TD[(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)-171(.)-171(.)-172(.)]TJ/F15 8.97 Tf 126 0 TD[(25)]TJ ET 0 g 0 G -endstream -endobj -289 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F14 258 0 R -/F16 264 0 R -/F15 261 0 R -/F17 267 0 R ->> -endobj -287 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 289 0 R ->> -endobj -293 0 obj -<< -/Type /FontDescriptor -/CapHeight 686.11 -/Ascent 694.44 -/Descent -194.44 -/Flags 68 -/FontBBox [-216 -250 1303 953] -/FontName /CMBXTI10 -/ItalicAngle -14 -/XHeight 444 -/StemV 80 -/FontFile 292 0 R ->> -endobj -294 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F18 -/FontDescriptor 293 0 R -/BaseFont /LWIKPI+CMBXTI10 -/FirstChar 0 -/LastChar 127 -/Widths [697.77 944.44 885.55 806.66 767.77 896.1 826.66 885.55 826.66 885.55 826.66 -755.55 674.44 703.89 1044.72 1059.44 355.55 385 591.11 591.11 591.11 591.11 591.11 -948.88 532.22 665 826.66 826.66 591.11 1022.77 1140.54 885.55 296.66 386.11 620.55 -944.44 868.53 944.44 885.55 355.55 473.33 473.33 591.11 885.55 355.55 414.44 355.55 -591.11 591.11 591.11 591.11 591.11 591.11 591.11 591.11 591.11 591.11 591.11 355.55 -355.55 386.11 885.55 591.11 591.11 885.55 865.55 816.66 826.66 875.55 756.66 727.22 -895.27 896.1 471.66 610.55 894.99 697.77 1072.77 896.1 854.99 787.21 854.99 859.44 -649.99 796.1 880.83 865.55 1159.99 865.55 865.55 708.88 356.11 620.55 356.11 591.11 -355.55 355.55 591.11 532.22 532.22 591.11 532.22 400 532.22 591.11 355.55 355.55 -532.22 296.66 944.44 649.99 591.11 591.11 532.22 501.67 486.94 385 620.55 532.22 -767.77 560.55 561.66 490.55 591.11 1182.21 591.11 591.11 591.11] ->> -endobj -295 0 obj -<< -/Length 12061 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 446.97 13.95 TD[(i)]TJ/F2 17.22 Tf -428.97 -25.91 TD[(T)93(able)-374(of)-375(Con)31(ten)31(ts)]TJ/F2 14.35 Tf 0 -41.04 TD[(1)-1124(What)-375(is)-375(DejaGn)30(u?)]TJ/F18 14.35 Tf 158.76 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F2 14.35 Tf 193.17 0 TD[(1)]TJ -351.93 -32.38 TD[(2)-1124(What)-375(is)-375(new)-375(in)-375(this)-375(release)-375(?)]TJ/F18 14.35 Tf 233.09 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F2 14.35 Tf 118.84 0 TD[(3)]TJ/F1 10.91 Tf -316.06 -16.44 TD[(2.1)-1000(Running)-333(existing)-333(tests)]TJ/F8 10.91 Tf 133.84 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 184.84 0 TD[(3)]TJ -318.68 -13.15 TD[(2.2)-1000(What)-333(do)-28(es)-333(a)-333(DejaGn)26(u)-332(test)-333(lo)-28(ok)-333(lik)26(e?)]TJ/F8 10.91 Tf 204.99 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 113.69 0 TD[(5)]TJ -318.68 -13.15 TD[(2.3)-1000(Design)-333(goals)]TJ/F8 10.91 Tf 86.93 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 231.75 0 TD[(5)]TJ -318.68 -13.15 TD[(2.4)-1000(A)-333(POSIX)-333(conforming)-334(test)-333(framew)27(ork)]TJ/F8 10.91 Tf 205.42 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 113.26 0 TD[(6)]TJ -318.68 -13.15 TD[(2.5)-1000(F)83(uture)-333(directions)]TJ/F8 10.91 Tf 108.32 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 210.36 0 TD[(8)]TJ -318.68 -13.15 TD[(2.6)-1000(Tcl)-333(and)-333(Exp)-28(ect)]TJ/F8 10.91 Tf 102.04 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 216.64 0 TD[(8)]TJ/F2 14.35 Tf -354.55 -29.09 TD[(3)-1124(Using)]TJ/F10 14.35 Tf 69.88 0 TD[(runtest)]TJ/F18 14.35 Tf 52.99 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F2 14.35 Tf 229.06 0 TD[(9)]TJ -351.93 -32.38 TD[(4)-1124(Setting)]TJ/F10 14.35 Tf 79.99 0 TD[(runtest)]TJ/F2 14.35 Tf 57.06 0 TD[(defaults)]TJ/F18 14.35 Tf 58.34 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F2 14.35 Tf 148.47 0 TD[(15)]TJ/F1 10.91 Tf -272.13 -16.44 TD[(4.0.1)-1000(Con\014g)-333(V)82(ariables)]TJ/F8 10.91 Tf 113.54 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 163.82 0 TD[(15)]TJ -277.36 -13.15 TD[(4.0.2)-1000(Master)-333(Con\014g)-333(File)]TJ/F8 10.91 Tf 124.23 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 153.13 0 TD[(18)]TJ -277.36 -13.15 TD[(4.0.3)-1000(Lo)-27(cal)-334(Con\014g)-333(File)]TJ/F8 10.91 Tf 118.05 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 159.31 0 TD[(19)]TJ -277.36 -13.15 TD[(4.0.4)-1000(P)27(ersonal)-332(Con\014g)-333(File)]TJ/F8 10.91 Tf 133.11 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 144.25 0 TD[(20)]TJ/F2 14.35 Tf -349.09 -29.09 TD[(5)-1124(The)-375(DejaGn)30(u)-374(Implemen)30(tation)]TJ/F18 14.35 Tf 240.1 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F2 14.35 Tf 103.76 0 TD[(21)]TJ/F1 10.91 Tf -307.99 -16.44 TD[(5.1)-1000(Con)27(v)28(en)28(tions)-332(for)-334(using)-333(to)-28(ol)-333(names)]TJ/F8 10.91 Tf 185.66 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 127.56 0 TD[(21)]TJ -313.22 -13.15 TD[(5.2)-1000(Initialization)-333(mo)-28(dule)]TJ/F8 10.91 Tf 127.46 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 185.76 0 TD[(22)]TJ -313.22 -13.15 TD[(5.3)-1000(DejaGn)27(u)-332(pro)-28(cedures)]TJ/F8 10.91 Tf 123.84 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 189.38 0 TD[(23)]TJ -277.36 -13.15 TD[(5.3.1)-1000(Core)-333(In)27(ternal)-332(Pro)-28(cedures)]TJ/F8 10.91 Tf 155.07 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 122.29 0 TD[(23)]TJ -277.36 -13.15 TD[(5.3.2)-1000(Remote)-333(Comm)27(unication)-332(Pro)-28(cedures)]TJ/F8 10.91 Tf 206.85 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 70.51 0 TD[(26)]TJ -277.36 -13.15 TD[(5.3.3)-1000(Utilit)27(y)-332(Pro)-28(cedures)]TJ/F8 10.91 Tf 123.34 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 154.02 0 TD[(28)]TJ -277.36 -13.15 TD[(5.3.4)-1000(Cross)-333(target)-333(pro)-28(cedure)]TJ/F8 10.91 Tf 144.41 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 132.95 0 TD[(29)]TJ -277.36 -13.16 TD[(5.3.5)-1000(Debugging)-333(Pro)-28(cedures)]TJ/F8 10.91 Tf 143.44 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 133.92 0 TD[(30)]TJ -313.22 -13.15 TD[(5.4)-1000(T)83(arget)-333(dep)-27(enden)26(t)-332(pro)-28(cedures)]TJ/F8 10.91 Tf 165.3 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 147.92 0 TD[(31)]TJ -313.22 -13.15 TD[(5.5)-1000(Remote)-333(targets)-333(supp)-28(orted)]TJ/F8 10.91 Tf 150.22 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 163 0 TD[(32)]TJ -313.22 -13.15 TD[(5.6)-1000(The)-333(\014les)-333(DejaGn)27(u)-333(reads)]TJ/F8 10.91 Tf 143.12 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 170.1 0 TD[(34)]TJ -313.22 -13.15 TD[(5.7)-1000(The)-333(\014les)-333(DejaGn)27(u)-333(writes)]TJ/F8 10.91 Tf 144.94 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 168.28 0 TD[(35)]TJ -277.36 -13.15 TD[(5.7.1)-1000(Summary)-333(log)]TJ/F8 10.91 Tf 98.34 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 179.02 0 TD[(35)]TJ -277.36 -13.15 TD[(5.7.2)-1000(Detailed)-333(log)]TJ/F8 10.91 Tf 92.79 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 184.57 0 TD[(36)]TJ -277.36 -13.15 TD[(5.7.3)-1000(Logging)]TJ/F4 10.91 Tf 74.7 0 TD[(expect)]TJ/F1 10.91 Tf 38 0 TD[(in)27(ternal)-332(actions)]TJ/F8 10.91 Tf 76.98 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 87.68 0 TD[(36)]TJ/F2 14.35 Tf -349.09 -29.09 TD[(6)-1124(Ho)30(w)-374(T)93(o)-374(W)92(rite)-374(a)-375(T)93(est)-374(Case)]TJ/F18 14.35 Tf 216.48 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F2 14.35 Tf 127.38 0 TD[(39)]TJ/F1 10.91 Tf -307.99 -16.44 TD[(6.1)-1000(W)83(riting)-333(a)-333(test)-333(case)]TJ/F8 10.91 Tf 117.52 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 195.7 0 TD[(39)]TJ -313.22 -13.15 TD[(6.2)-1000(Debugging)-333(a)-333(test)-334(case)]TJ/F8 10.91 Tf 132.45 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 180.77 0 TD[(40)]TJ -313.22 -13.15 TD[(6.3)-1000(Adding)-333(a)-333(test)-334(case)-333(to)-333(a)-334(test)-333(suite)]TJ/F8 10.91 Tf 185.22 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 128 0 TD[(40)]TJ -313.22 -13.15 TD[(6.4)-1000(Hin)27(ts)-332(on)-333(writing)-334(a)-333(test)-333(case)]TJ/F8 10.91 Tf 159.12 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 154.1 0 TD[(41)]TJ -313.22 -13.15 TD[(6.5)-1000(Sp)-27(ecial)-334(v)55(ariables)-332(used)-334(b)27(y)-332(test)-334(cases)]TJ/F8 10.91 Tf 195.13 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 118.09 0 TD[(42)]TJ ET 0 g 0 G -endstream -endobj -296 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F18 294 0 R -/F8 52 0 R -/F10 78 0 R -/F4 28 0 R ->> -endobj -291 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 296 0 R ->> -endobj -299 0 obj -<< -/Length 2800 ->> -stream -0 w 0 g 0 G BT/F1 10.91 Tf 18 13.95 TD[(ii)-26443(DejaGn)27(u)-332(T)82(esting)-332(F)82(ramew)28(ork)]TJ/F2 14.35 Tf 0 -23.91 TD[(7)-1124(New)-375(T)92(o)-30(ols,)-375(T)93(argets,)-374(or)-375(Hosts)]TJ/F18 14.35 Tf 233.2 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F2 14.35 Tf 110.66 0 TD[(43)]TJ/F1 10.91 Tf -307.99 -16.44 TD[(7.1)-1000(W)83(riting)-333(tests)-333(for)-333(a)-334(new)-333(to)-28(ol)]TJ/F8 10.91 Tf 159.4 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)]TJ/F1 10.91 Tf 153.82 0 TD[(43)]TJ -313.22 -13.15 TD[(7.2)-1000(Adding)-333(a)-333(target)]TJ/F8 10.91 Tf 102.9 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 210.32 0 TD[(48)]TJ -313.22 -13.15 TD[(7.3)-1000(P)27(orting)-332(to)-333(a)-334(new)-333(host)]TJ/F8 10.91 Tf 132.43 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 180.79 0 TD[(48)]TJ/F2 14.35 Tf -349.09 -29.09 TD[(App)-31(endix)-375(A)-1125(Installing)-375(DejaGn)31(u)]TJ/F18 14.35 Tf 240.03 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F2 14.35 Tf 103.83 0 TD[(49)]TJ/F1 10.91 Tf -307.99 -16.44 TD[(A.1)-1000(Con\014guring)-333(the)-333(DejaGn)27(u)-333(test)-333(driv)27(er)]TJ/F8 10.91 Tf 201.97 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F1 10.91 Tf 111.25 0 TD[(49)]TJ -313.22 -13.15 TD[(A.2)-1000(Installing)-333(DejaGn)27(u)]TJ/F8 10.91 Tf 119.26 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)]TJ/F1 10.91 Tf 193.96 0 TD[(49)]TJ/F2 14.35 Tf -349.09 -29.09 TD[(Index)]TJ/F18 14.35 Tf 44.26 0 TD[(.)-166(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)-166(.)-167(.)-167(.)]TJ/F2 14.35 Tf 299.6 0 TD[(51)]TJ ET 0 g 0 G -endstream -endobj -300 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F18 294 0 R -/F8 52 0 R ->> -endobj -298 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 300 0 R ->> -endobj -7 0 obj -<< -/Length1 2090 -/Length2 15387 -/Length3 533 -/Length 18010 ->> -stream -%!PS-AdobeFont-1.1: CMR10 1.00B -%%CreationDate: 1992 Feb 19 19:54:52 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /PNKVMB+CMR10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 13 /fl put -dup 14 /ffi put -dup 33 /exclam put -dup 34 /quotedblright put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 63 /question put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 91 /bracketleft put -dup 92 /quotedblleft put -dup 93 /bracketright put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /endash put -dup 124 /emdash put -readonly def -/FontBBox{-251 -250 1009 969}readonly def -/UniqueID 5000793 def -currentdict end -currentfile eexec -€SQM(ì(Ú0_«&(‚Óü§ˆ‚¥±)þ–¾c(C¹¶¼‘¶X˜]µkÊ`îiÊ’Ï\‚ìæ.ÚÓáØ54ˆ"@ f¯e*ånЋW›s«¨ÏÊlqð<*HÅùÖ"f¯Jcuÿ` ›¬?Î4-hg§•Å3k²ós6g.DcŠ—~.©dN1ê­)ê3Å@àÈnmè«jM@§{¢uó•‰þ¢âÛ‚V­ÁÖùÌ€7¤~ÔiÅùŠ^<½JÎ@Ó@‹ÿ}Ø«°¬Wµµ¢Â -Q•{–ÄSí·Úå¯ý‘¤m“à¡3c„MíC#ñîm0*ê°$¥R1US\…Ü&ºÓ Åe€)vÒ˜Äé DÃbæ¿:³b¤Tî“Þ%ÎTAžuÈ âj„@KÙÞ:î?’ŇùW+ƒT¥Ã^ê~‹+¤ã3€!2÷`´ iŽ³Òs‹ê -¯z®–¥Xð‹a®ÇÇÖ[(‰»{™€ ÿî[¡šÉÎC{áÝüð¼¥g T;–D§‡&ÐÁZ½¹on ÷ʪ1•|¨, øq|‘¶:vé²S)Î&%·Ë{ù#ì+µìŠï¸Á£´"­a{=¤Ô–…ýDÌ!¡þ^A:³áYFÖ<~˜€wFGCwΓøóW -ûÕÛþwW†‘z¹ic˜~nü-?™úVì®d"W˜RVÌäïmoqÑ…‚p Twâ!Š7\¨Åȳ¯Ï¹gŽ»/ÀÃÄý14Å£ßkoLuì˜TfÄõ„uÉ]ƒ¦¿uH7Úùèhë ×nÄÓ‹Ù5¬ÊsáË›A’» -…?”r(ÃN’:‘3îÉÅ,bn)hÕO¤3¹p&6ûØ|]Äòx‡ƒP_BVÇz…\—¤ÞnáÔ||3é­"~×ñ 071¾¦ó]v@FîÓjÇXU©(LWsŠ¹…Þ§Ív|x -‘ç@æàˆË“Ô:H‘E!Þ-¾•Nô¹V;S)õü¾é'ª#0šÒ.ù4›l­ç Ñ›”`@\Þ¸›ña{,)zõb”X#_Œ•õ¼D-ë³M¥Ò éf`Ξ\Ñš„ªTô+oÈ||°Ë¼$™PÓ§ÃSÖ‘×{ 1È@Èô:" ütœãL'‘Ýb| tu9cÒå—”ImU®ÉoýHêý²ŸŠ¼‘“-Õ°eëÚKï'¸LC³ŸâG¸á•8d$m2SW¢F6[›+ÜhÍ×äM™Øld%e±ü7m.SH²z|D¶M:Éœ»õfZçoâxŒsEKÇ”±C.l:X»¸Ëï4]1xÈÐk&¿HZ\;ÓmÐ9°4å6«Üf2ë@8üÊàE>…³¾ØÃÔb -*¢Ú½ Ù0é¸édđîä[Y.N± 2ÈU+’O•_‘ì^g?öŒ*Iá÷‚~FÚ@H]r*­_'Ô›PŸ¸æ+¡Lª$±½/m¨ßŽRMÛBF¶ò’ÄlèÊí¯sauÄ—%T‹ï`ª‡Ç¸ýçÑùaʽ'ÌM;†ªEÛDQϸͿZ4v»Q“cHž²ß¥›0¬8(H™•×¹ìW€öK -õ7ñ¡©Pý¡RW*7ƒsSÂhWêÖAÈ @×®È[`E’›^B ÿF©KÓ}Ëlà)L˜“Æ¢d»Ï+çÙR4)ë1®¬'u¶‡ -xÿÞþH]#¿þ¥X‚Àoý©ê„â"™Ò°ÄÔL¶}Ð/¼½"¹ìàà(Ž8yÖ¯8bïèÈo5VöªX,c’¤ˆØ4Üo,½DWz`ë?R.Îõé*'Zº_ ð À‚Âè_¬c°ÿì§Nb˜À| f³öâ -s‹Ï›Výû‡(l‘´ÇA#÷…9 ’C—=S:'˜¾ ÖÔŠVŽrX¢Û'Éhg ÓÚ\vÛÀBšÝuž*´9 Íµž¾¥,º.“¢éìÒ-}Fàu/¾­äùŸÔg—DR´ë/³‰ÛUÕ׸²ÀýHO\c²Ï‰¢wnÎ8x…X³3T7ÞhÊvèEzðÐ…Ü?:¥KŽSv#eÞ£)Åv´lQ¶lo‹ñZ#‹¼UHý·ò]<ø÷_ˆèzÕ "*w嬃Mžd.Ñ)pd!Q鳂eD…‚Óa'/\¤jì}ñˆ›%ܵ€MOvâ2F}âã9´˜®¦klšùCþv$@!Ü´Z3_Ñ.ñv—r2ÕCT_ÿ3¥ÛZ¿ N¾Ñf¥Õ! j7Ý£2¹Ùñ>—ÿ(ƒª@ð[£N‹²>1õ¹V3©½×8>7=û¡¶-– pµùŒá|´h=-×þ†© -ô÷=Y©I ÚR}é1f5NM¶MÏJJrÊ H:3Ù YC$IJ£© >9¶F¦6ãr¿Ó}²ä½à‡ïåÒ‚tY²âŽõoÝ&Ý¿­®ÅõRôÜ ò‡˜ç'0_ŠŠ¾/¶ ‘–"ó–0 E£Çˆ¨šÀ“sü¥e¢óZzŸ§§›%kËÅý’–¾wr‚fOÒ ˜€ÕÑÛ‚ŽE¦û&%ÞˆZŽB80ÂÖ™¸bùôŒä/a¦“lì)P“Î@‘î6 -¾’f¶tâ1 -‰Ñíq*F'$1}Þý«çµ<5›®ù¨kö)æ’{*8³„uSmÞ§Ù¼k£NevU„6NR‘Okx“ÅBvm{#5^*¸î@}: ‚•ÎÞÔBü9÷HfONß 9 Œ‰^äA wp‡ì•vÄ¥Ú¥;3Iq¸#odÍià_â5:*ü0î$ù­€†¬×¢¹ R;á7…óˆx:©‘*È9h©(£¡~B -uœ.æpÕŸÔ¢Ø8¤^éZ×¹ ¼ˆÔ#¾58î„ôb%)5h ’þ‘ê Ö^òê–<#øæoíb ð«("Ø è)Fëۂq'ÿƒpòF'²ò9|.S©Ý×0O-=énr«¤p\©L¨ñ´â5I¿ B,"xƒ¡?DÓC8…ùÊ ¨D̆ ‘¾1Ü<*¬v„˳úP¾³öÑð úŽ±!Ʋ`íh…A„“®˜A“³w€ŒàE/ñìÝ-ɺHT8p(¨Üpù•÷gœ²pöþ_iòrºýT@¾F8nª¦ÿÞ=ñ3#ÁႺúÛg A‚=FWyÿ›õƯÊg¿oc¨mDì”Ç‹ÎŽ–ˆ«çÊÕ®,•¶–Â1¢§yŠ\ÆOÁJ*m KÛ¨·VoB¡î2š;‘' =hˆ™Áx& â¼äâ&w…Ÿ.é?²qá]*FœöyîÚ€bF'¢å\›~™ˆDU›ëí^Ðßg}ÏóØ ^Lµlú„ÉÒM´GUÍKz«<iIÞžŠ¾ÿ²,€*—EPT¼ì÷·ÜEs‚Nκ‹{œóè‹÷° Ò(«˜T¾`ðÏs`–/ ¤˜ˆ;çâbŸ)È^;~ÓKÔ3鬃2§~9….Ö:Q†Y´{ô1µ!²P$«åµÃ*«T‹Ñ/¹”t» * b¥/ÑÁ½žÀ¿yn ø:äZM^ÂOÆJJªü¾}„J^zÄþ¤Â›} !¬Õð\ŠäD ØÙ®,(¤¨w~”ãù(H¼ñËÞÔØ÷t„å ›ïeÔqv k°—¹¾5ÝÝ£ç™M¡·,oä¥Ê ŸÖ¤/&’j‚¶‡š·†Ðoxñì­MÑY9Õ?Õ ÊƒNö¨P÷‹®z<6`M÷‡Vž]‰×¾E-íN‡HWëqD$qx©?÷ÉmØU³Ÿ©†·ï¼PÓœµ×KI&¬ÙÃ5äꊅvCÌæáOoõá°mv_e¸Š`Å ôú@+æ3§ÿ gH´á¬Ä~‹t`ÁNÕh×g¾ßÿ ÿUÆú& Ý,ú:7‘I—ðEýFê`{âügþ($Fg2H¥Ð/‹zTÿel§qF,`yÁ 4§¹w™õO§½è™ÄXUZö×\ú ‡{BU$0û¶Š,Ž/õ…)~ŒHW°CH&‚b¯q[Q˜^}—Ósu(·/©ô”&)«›‚öÉ–ˆ‰9ÿÏp(ŽU*¤­ðý¹{.FíUb€NµÛL¼¢’áÕÿBOgý‹$c‹n5Þ²aFâuÚ|¾-X½°ØþÂB9FŒ”¸`'žT€sÁ TŠš^ê>ïôOàLd&´7œÙE<ú\lŒ -fPäÈ -îÑv^Ë朲*4µ´åôbÿŸª6ù©Rpï“f€Ý´g°>Æ毽`YÝa‘òE¿¸ Í'DGÿF7HÂlí*DLIŽ(šŒ½¨ÄGÍ|¬©±A$t5þkñäE¼zà›ÆFŸÀ?–)Ëü©òÕÌ.”ÒŠ±Z„Ï!ê©-¾â‹ã½æy®¥Fæ;ÊË•¿ár\.$å„Ç?d*x®™ÓçùÆ?®U‰EqO´IJ*ÑTE=¡€‘ÁÊI| Î•WKup.ƒ'&ë †ò$ƒÖ¢ç„ÃÄܼT-Š÷Žf>z¿\Ë<ZhC´®é+] @Œ;"%–Å<Û¶€ÍÜ/¹dÊ|%­(„ &Ègai•A®jFÂ& ^ø&£à–Zô—5E&™*èz¶¸‹Ø°{íœzè2V€gí,ŸrÃÔ@ó(ü¸Ü62m¶ŸñíºuÃ<Òƒm.a}‡nΚN°ºM‘ÁIF:­ê;7‚ÚF¸,ìÕuï•£R˜±PŒ8jÛ -bV®/U–B¤e À©Á0`Í­Ë¿i6˜|§òBd!‰ ‡YèòòUƼk{uO[¿ÝtT¿‡}ƃ"[óÆ¥²`õºvâôØ݅߇GÔ-,÷§Ñ·¬y+3jR…ØètAŸ8R\éìRûºÈËŸ&4B‘ƒå\A='EÑöö5îÊÜ]æb䜀³8¡(¸¬SJ/RÀ?°Þhá˜~µbŠ æ -¹ïò*HÝàé>Æ)Å8ª°‚ÿ±'‹Í ¼0¾W±×Çé[ß‚µ¼bœç£zóX+¡ÉWòÒ pŠ'„A¬Ä¶2´2l¿_ý“»ë6ãÒ!Íkɯ‰–œ”óJÇ/3åduò¦WÆo«T.\^ð§²ßÌoëe  ÄÒ+¯ÅÀ}š,Ä †ˆ!0d@¼•Þ,Äæe:L¡CÀÃ{M4Ë›²uUZ÷·‘…‹ö.0B`•ŠÊs##ål©1U½ãðKåu†]2 6¶ò¶'²{tn&fó4}½K‘TÜOýØYyµ>8ùüÃÄ”`FL"ò°žtI"ÉmôRÈ‘vˆÍAà¢Tð×àDc"mÜ–Q§ãÇiÙc\ÕÐ;ª[Oª(´Bâ G¿ÓmXGæÝ£Š-T˜Q=]"Z群6Ó´¦Q×6—ž Ü”Q›‘o{£oùûVTfJÁUïý2?&2|d[m[f—Ô^ê¹3p½é_¶b»©°°ò@d§˜´ûßÒ›~»+ìÔôo÷´Ô9ºÇw¡­âü únÝAÇs/³Ë -ß.d“aºƒ²B"=¯-Ým†0ºœ’ÝŸ<ȼ„Èè¤%oç_$n/`&³[é ›¬´^ç4H?ñ‘à ºU˜öáÍì«Åû3¾»¼É MÊ«ø7Ä0 4â&Üâ<  9BIAÍO°ß„{ô¯Î£.œ¯û ˆoy_ -Ãçúc/$=ÜŠ΋½ -/Ù®•Z‚uHÔ7HAY§ 0¶?ãˆd8Í'—„ÂHì÷(b²©\ ¤ÌÏè;œn¹¨Ys<Åøƒ]° TìkFñ.AÎÑ¡t £e¿¦3³ÑqQêÝôǃ éZ9øcwVêjå¤|×^àÃcìpWÄñÖ`Z’._”]^n£ºû%â|üÎ ÜrŽ¨T枌‹ˆ~4àüB§?QµS¼» ¦ÁQ{°k„Pþ¸´ñøý0íÆÆŒ?ÀEG€Fΰã´{ô½¨ ç H‘˜Ã CE1IâB9ŸXC­Õ‚bJ:«X†(ða”|<µ]&¸;ãE¨ÜEš+ë< ûu ÆŽG½ä¢“ëç¡öz–”Ú@ÌÿZÕþÚ ãµÖŠÝФ»áÄz™lû1•$8Ú~E"pAêm8w8?Öø«p -’ ²˜Õ©Z¦…4 4T‹‘šNQøaùÑæVˆÇ™8ÿg|úmÿm“I 1|Ö^˜÷ªBH«#+ááìýÑ^ +‡Ü>°â&7 -&j¿¦GOþ7:Ùœ„Y DÀgÄ6ÐÏ:PàŸ§ÈÙTk·ºvsG_О ø`­ˆº5´Æ“póŽ¤Fž­“ù¬>Æ{™O½ªù0¸»  )‰%Sœž–‰š•ôtoæ&’$€Ua–:y0¬ì³‹åIHÖÐíaRmç’éÚ`AÓ‡ãÞ6d®å8€¶’ÞXÙ%îåߊªG3e\D:Åômôž-å†)c˜»ˆó‰©Û½l4{K”  à²4SÏéc’=ÈëCßDŽ¿KÖæoÙð|ßÜSœ\ò‹æªáÚ§¾‘Íò%u6nL„½ñ&a÷ƒwçK?GÍèì½Ù)Å ~3óK:ºbÝV`­í,o”šc(ú 'e¾èyµ‘M/ÅñF²XÛF^ê°…I,x ¢„Ví%ù9/ùÅ+¸‚ÓxÐÑúoãµ纯Hw`î „r¢¦y9ÆMÞ£øäWÇN+Ò!êj-sMŠÄ›²U9ìk°1Úס4+_ƒ1ÅÜv/$*§Ë˜ŽÙ†Äž“¸7HV„kðršZxS=ƒÐH~ƒOhÂ÷‰×+kÄtÛ–j -fä.&†÷þÇ{à[Ò#~]ŸU¦ÔžÃY1Pån:k*À TéºûŸïózAØêÞwv®óÍnÔÉ )‹»Y h.÷®lOÇÆaÌÊ`Ôåª>ÃÙÉV0zÒöD¦›Ôñáñ¦öS~çEµm±±ÐgÆOóvË°ïi†;ÿ1ÏJN”ø’¬!·HӌֵªX,f¾ûð „”LíÞØqîÊ=ÊèG3¡ö¼¡ê¶`nÏCÛN=Ê=C~ûÛMÌRö¡Éÿp¬ƒæV™Žç5¬ /{BéŠ|"s?÷G€¦Á«¸d•jlúo?¿ŸÝÈ -UëÇ^»ÕsØeßÛÿ‘|Ü“©Üãf%d5m4Líéµ`¿ÎVÑ°$o·§jD¿s\S±h“‹ˆðJg^%ÿ¯ òÜ©FŸêËúý#’§>‘õ¦ÖY&¹-B%vä­ác剠ÁžWÉ߃ӥ²ðÖŹòXôzÁ­>™)µÕ€ý§æe ÷àuóüUN4zØ}ìÍ×]šPÉø‘G®=i¡P'Imˆ³·PHÌ85€ñ×ës^…yS(bŽÖóIõÁZƒ5K¯#!µ0MÖZŇ"¶Âá¾n4ugAu¶ÄÝ"8ŸH‘™ƒ„3/„d•Ï°XÖjŠo·TÞ0ؽ?½û·êÖ:V’ܼ±îÒ0»ÒÐ~ÞÅ -—×xУîÞéT´g+w†§BœÍ!Iw ª<æë£h;ÁÆpgMç yáÈRôˆm;%K¤CZû¾ Üô)©ÿ. /žÐf[ãšXEcFF©“¤¡ƒÏsr-£\)&!žy¬ŒæÍÑ“µòg=Hè+(™Ø]ßçGþ¢ðG“†ò P¸PIè:Ÿ$>[’§¥$ÏȪæ5àp VeeË([nž††pË{]«>¦IÏù ˆEw\TˆçM”O® ƒ ™ÓtØ ¯»ë;~\ï­Èà4öŠ‹þ ^€ÞÆÄøŠ™.?´¶;]áw8l_™ûzýÝ\iì¸úòP©Ñx‘Oð^ÂöÔÍ1/ýš3Þ¹À6ÓÍäU(ÿþ™û2ÒÉÆ+ M²Iæ2Ó¿€ÂŽ¹YU…H àšY©É¥žÏX`DZáåæeèD\ŸdAÔíÞ®ÖxÎã៨Kþ›Á[¼üç‡T¶d/¿ô 6¬0Ô—««ÅŒt­éùŽÄ9«[sƒSY¿嵦ŒüL"1wº ¢/9·Â í…Š×r ”Õ|°†øÎB©p:ÂœM@Ç!Á”5Ý»óÆõ–´qÌÉ$PÚ£ö?âÊT@r™¥¼8¼%ƒ³,ÜviXG?Ã<„^—fd¼'H4$Ì×tw:²Û}*„ÃS¥¨m¨x„$ ¶ï. ‘èQÀN÷¥Õë7Ÿ~'Ô@×ÞËe^ðóÔeAåÚ¨¡í[ÆQYI7u¯¿º´Öæ›'¢L°Ë?hhÅyxU4ZÝñIþƒê|Ê †3J,ª©©[¨C‡ƒþ´² ‚òð2Òæ?4ÊÐÏÖ:–§ËÄ,Œ’£„¥þ4‡ØYKn/\HÄ’ƒ¶«Ô â ›€G>ðb¡„Ðn8¨¤™\|¡/è×3Órœ¹¿˜µÎtÓjPÖ©!oÄ*‹4cÝA«0O-}Mt¤n7"%hâM'^òzÔ_¾…YÒñÏ¿v ®Lìíû‡§*W»:¤Ã6ÝÑeäå€WžïŸ3áÌM$Ô«  ¶–¾ &ÛÈúvD%-¼õ!Úºi¼…0Ø\ßØ4Q·'>àwÑÓÝðd¸XWÛq')r Õú¢A61kÙ ÂQœf¦/‹N`IÍê礚e?Ö,¹¤t6É;H ¥ßßYÇBÎn§TŽè2 ²fØ͇Û'¹|ÛÄ0ø!XƒÅ!ý/wK–æ*åYÔ»Öœ-]’¡ÎˆN—iLTëÆ3T)Såšõ8/N¹(Ÿ4‡Ûø4f¡cñv®N(t?%Ý?éÐäZ±î^3îí -œBƒYƒ¹R9iêG(|&¯ØM™_UÖõî:’Þ0 rQ ;7¦b¾ç*Å-­3Ïc®Öjj]AÍ"¡²y kŸ¸3š0ò5®FÌúù‡—kïÁÆ 1ÑöÕ¼BèV³ È럳[ïÂÀ'&†¥C8õUÍHu6 ¼w´>> cø¡(IÎ,yî=rfÜx«ú®KDåR?CÖeÁY*ùmO3‘ Uj;l¢„ ,¬ˆƒqG5Ï[õŒÁ_òüà ÔY$€_[(Á5æسø$G<±¦6Û„C•5Lë ¼9 *— L”KÏv„æá,CòÊ_@lªuUÞ+¢6Ø? µ#jtQÏÚñ}³åŽÙɧŒ†Ç#^T•O†PÀ™=D«ºµî Aó_͆®×!RY=òQ¼S ÌGõåuÓÈkÀycrMh‹ƒxo€|±jpcè‰a‘À‘Eþ1TñèÜêÕ0ÍÏ«î/0ÛéÆàÅ_zô¿”1“›¤°`ñùxML LéÚšÞâµl’¿Ù[zh–ùÐœ¿n#%ã?ú5àÚb$léž”­« ¾Õù¤†_›fk+Ý+Ê{%ÐßIʾŠ‰jmʪÞøç:åÌ„"hô]‡ÂIýŽ²jð;³ÖNÝÈ'%}$˜A‹lÈ)ÔßCù-ŸÖáÛ&^ê8.gžâ‘*«:š!Ûç4ÌRw¼ŽÛ¨ DŸURP©¾ÂÓ¿CiÙAdkÖ'S™\ZfÎ)‘ÊÐ~°¹Â?ìp³Œ œ"T‹-£­ž¾ää”Ù’¿ÓTŠ˜3oj=ârÌíó zx2˜֛2ºòâb…vô~w®Zè(†~ªÝU¸n: ‰<‹´½][žé_ˆT¿Ý¾×ê%šn_çJÀÜÝC!>zþoÞŠãêCÜ3ÉÉöDä3Ž‚úþ`ï(k  Z»äÎuV9sÐïï×t‡¡! ¹gÊ°Ç(Ì„³ëw%ï± 1ÚŽ³j"†ßß+9Û„»Íuõ Eð˜Ÿ8ð*Ý“Ø­·Ê÷õ -è ô„—E‡N¶öJœ¡r¨?ûÛGÏXáÉ陯3m-4B¥¬xJê Ko£,°2›KinU°îîßzèE‡E.ÑMÄì7dà{o3O/Œòÿ³cHš{ÿÆ`™•"ó>„«kØ &Ž£ê" ÒPâf-îº.&]Š¨Ñ0Äb¥LѧWØ#åB”³HJ%l‘•K£êÿ[r òt Bq1é¼9²ò>Ü~ãieÑ•žo™Ë¶[¯M’òýO¶õ§‡Æ¡·-ûçnÒš€ ^Dð‘4ÆŠüúeÙC^¦¿OÉ‘é9cq* ˆèv&†LP–dH1Þáš2ò­EÈéûžæ+£t(Š|â4ÜæÁjÀ -UßìSÄúIf‡âpõGUZ®¦¤ý_Tq’&å;1öºIöPÇÖã -fªˆ·üïú”ÜS6sÓG/œSd_Gœáý£CÌC`K}Ï°¸­„P@ÂÿBDA$ˆ¯\QËÇüPå؈·Ùºýt¶ú<ÞÖˆ¬Di×òœ#=ìÿÀpZóV{X êÂ@]/w®”β6h‡žú}ðU~®µ -.ŸÎ˜tßX™Á*ú|Oú©‡gúï^‹ˆKSñh€n* T¤‹î‰„Ñ€Jzì~Òh§Í–Y±¨f¼JYFEdÄSÒº¯j"Ž(˜w†î=—ZݨŽùYоž/w;‡”º`W¨y-Su²€˸ÊXHÊ>͹®tìuÆ#Äl lÉócj³p¦®¶]"ÚK‚|ÑTñM¥~–¬Ir{Òû[Ïpܹ¬À†äþ¸hÝôXW¾2îWÿN_F)ÑŸ %ÇÌx“k*IM}P>>—øî\ªAß 3òI˜1ÑUïåGñ½ï §@<…V‚´¦æ(û§tíY»'EÐHkå×ÚGªxᢸ%ÐëfÚ垨Ôqz½š{$7/B“¤JšüpL€ta·6ÌLD¼øá±Yp`Ùux±/¯Ó.BöÑòbUT“«ŸŠE:º4q4çï2+ØÃz¦KˆÿÃÏyÝ|R!£¢"&õ.ª³~Ï•³íš‚ÄiDbAwi;­°,ÁØþ‘BXŒb=Å.¡QÒþ ¶vs¤-©· -ØX]ÏYÃÊßYÔÎâK¦”¯û^ÅrA÷ªJ¤8 -›b·Ñ n³üo§¥GÙ㳸BËŒ- -ô~¡ÙU'å@ëèd?l6ÆñÁÖf)íÇ>`ÚQÈ–_%g@µ·ìýîµWf“©} hpÕÙèi¼UÆr:ˆ°­jKaû_¼Z:¦*CgŽŠ¸n#Õ©þÖP—îž•³ŸB§#r§É -²:KÖv.èö3H´q]7\ôf´Ê«´­A L¸›‡YgZg~#=䞣QJP¶­‰²Hć ‚Þƒ \Aq„eL‘\7c¬;ªÉ%r·ÕÊãdv<ì`˜¯àßÛ ‚ÑèÛãíq5<¶ºu.ü¦i»OzìLÖÁ âð -¸®n¢óÍŒûÜÌkiÈcäÆ';Øm³ªÞÎwHã2s§yqÉ¡ãœ~¬;«.×™Õ@cèÓI­H±!Si¡Y.Šüöç?ÅàÅ]ÐÛpóü¹Ž%;ài{e©$”Bw€Mk!Û…—œxËòEáÿ>Ì›@Iê~ˆ¶®¯³Â¢4‘ ìû£9äðfu ::•XƒÇ‚«¾`XßÂ"û‡Ð½´6ór;÷ÕCe`q˜ãý² GXIJà¼iHÆbmß5@(Êãèµ€˜ß2véMÌ\&“¾“išÙüjždAÉdd‹Z¸{c–t|°­`SêÀj—b.FÌÓ7lg+ý—5ÿp¸Œð9iMòYÑûK}g Œò [`CÓ–á̶ìiFfSÎÛr ä^kÅ*{нCg÷S§iö>Du*žî\j}+h9å©×_©t®¿X\%Q9.auw8{†ã1ææ I‘a1" ~9ülÅ=Çl¼&5×Ʊ˳j*㪱]ðZ‹—Ùˆ.e^mU‘œûµö˜§·bÉÝ85Z¶[£ ðÁå:*¹±í¹f¡2c;’eð¼IDôž$0'5S“j¢¨€«Z¶ïÙà­JsÁˆÿ–™·®OÆ|{©øÊå wÌ>¶‹›Ec榕4ÁhKàvtIÇ ES—?ú·Îø9OkÓŠ ŠU”·5ø©ò‡V¢¾Ÿ´ní¤z\/(0àíÏÌܸ¥]­E͘e\½kõ®tô)2ø5Ôo床Ÿ–á)¨xSî´ˆ%_!¿J{^ÛÐÀ_Ôc£*œ;ku°¾È€¬š´ÆÅÝ“ð-âXæê›mx[DØK@ʆ³ÞSÖhéR·5o\ýO±‰ÆÌ@o]Ħ°Rï—ÝÂAüÍY˜å›K–ˆvΫ R3/;®.Ñ0ºàÀ'΋ul,=ZlEjÀÙ¾Ÿg«hÌIÒ5ûgaX˜á?ÒëÅñ £z+ÆTŒlã%brкR up¸ï‘`ûá-nl¨¼¦IEÜ |R:ùdÛènAϺÅZ„ˆôIôÒ4ÂúøRr§ÎÏð²[bóÅäÌ{vk3ùz)•!ô×m‹cI­Q3§9©å(™ëœF6¯ÍOCúa‚³#dkH [–'‚æÄ$"ÈÛ´¨ob- …U‹¥ %gÛY7ÿÌ¢š»˜á–)r¡dÍ9[o»·–`ïÔtd,ã$uïÉÑäÙ^°&)—o‰ ZÒI÷«&yçЪÊåÓì°ž[#‘öõ+ -ûÏ6èåqQï”L{ƒ½^i^ç"Se¡+´Ôxò¡p´:ÈÏSÒÀ”¢ ÅiÞ¸½ÁW»‡Dz³~þ`h©`©¹UÜ*­•ÿ } y2ôrñï¢]$³î‘•°|ÛD=U¿íÿ=^g²ýÐÕ¼ûzTÏ‘Žu˜^ôƒ‰!ÂÊ-ÚˆÜô•Å¬F§”£¼J—œãvqþµñmcÑNòLOÛ¿J¬ݵ‚§Q¡ú0ä`“õ™šó}šEóÛÔéZ,ÛBævò“'½ßîŒ\R9Þíqwg?]ozÀÉÎòWy]Uã…R´:¨ûxrVaÀ `>‘Ÿ"Ñ$ã´PyÕäÝßYmð$øÆÞžŠJ–éÄYd¾uŠÌs¾qÔPÒ"¯>¯k úø.ã¡Kö?:œà)¢ÃÅ×+ÄMw QZýŠµN¯ý¿'Ñä¹$vŒÕ]W%†$í’3ÉÖî³MÍ‘Z}ôD‹NÇåÙ² t}ڳλhëˆ.ãõÃO< “?Ϋ§n‰Î - x-kÊB*¸ 9 r6±4Pú7oŽÞ'sãOŒ8»îW8*V9â¥S‹î„™ŸÎÖi®Ìr5nj:×=KhÐ*üÔ;ÌÛ,ŸJŠü™8ÖØeR¼XhÁtô"¾ŠÓj³ø¢.éŒìá¿Ö::Vß×b–Uÿ¶y¼ê&2Èá¶Ttž!x Ç`Ö7éåùža¥ -Ó ý[Ý›OÕð‘•æðLf6)|7gé“Â\;OÍåŸÇH†\ÎIzë²ùW -/ Öë‡HI£¦ -º gÏ—¥(W—§Å%”aÔQÑiµ/b‚>UÈüÙi¨&ç;‚ëxŽãÌ$‰·ƒŒ¹ãmQñH;½rá‰]ò`ædu?‘2º4=˪¢p3páÙŠ(l'©bšÕ}­ì8Þ"ˆ0¬–ÈÇ`¡Iå?ÚG}ÆÌO \×¼a…J½×5Á—ËH‰ÛÚòÝ1( Dy&Ûšøo7Æài`ÃôÏþ4jðvÁñO‡“Àžh®C°k½ -Œ«E™«úË«¤ÀŸeͪT‘üŒ2B“OE`uËaÆDìÀ Õ=âaOï+¦=ƒ~]` ‚ÅùÔÈžOÓ¼ty5«BØ%éÑlQGª£'H!à×®ëæ[QY,ÅS^¥Š;r$Áû/S@¸á0D=Å&oú†6•ïy4\W¥¬kg±Âã²²¡U±$ÞÈÏCq·gÓBDŽl”žƒ"œU÷ÅSÿ­F! -ù‡¨?”VÄ1H ^ ^éë9Hùg^Núzxi\hŠ¶;oSdKÄÕã á%Àö¦bÎ= ßÒð2Ü ã¤Zš7–ÞíM"H H6 -* B×´4°`ÿ°¿¹m“ûKK„Ö*‚ÑåkÀŸû*q¢ËСÓóSYñ×ßûÈÿ1zÚ¿U‰RƒI{ŸW.)Ñ3G?'0Ž­ ÞŠ0À³Äñ¸‡™9mn;¹áw‘Ñax61ÝþÚlŠv÷SNðbxü0Â=o!baˆ<Øx O¥m¦â^™›”:Ó×d’À™M¯‰6šíkß!£»=Uiþm³!õ°^^ç_6{g[© ·;†–?ÝÅÖú;·"­ ø$CvR[„C¿ínÿêpŒ7b|JƸ; â¦qñèè&:ç ú±Á³zú ÚýlÃo4¡[›*oÜn^Gå¸ÝA’ôƒM  v3ª ì'XlRôå¿À#g—Pt)zãòòµs3ìäë®Áºmé±¾¼d\ç(nå€ Iž¹iëŠÔ÷µ‚©Úcíú§2àꟀ†âk‰])™<Š!#·R)ÃØ*Œsñý9¾Å°9¶Î€hàÁÅ›ÔS!³a¯9†LåF¨¶TÕj?TœÚXL¬Wõ8ݺ˜Í¹^‡r pœr&i%Ârî„¿ Kžd\2§Ú*ü7% ßÈ6fÕ>õ‡sUØxz‚ÍÞ†•»B5Þ©Fø¦ëìÔáx]Žbà¬Xðƒ÷}ÄSȵÅ51–ªÐ÷úY3”V_E§è"ÜÓw.Î_øÌx\^¬#,¨£æ„ Ñ|¨]­4!\?3úï󮾄}ŤûÍÄ^&Âd¢€æ,1jRõ*Ä3N³ÁG¦3½…[h'i!Ÿ•¸XøB”ý¦5miHþåKˆ’æ°°‚Så9š:XeVÜO]#'‘l=iä»â¢ -Ó`pÒóNBœÙ?†©EqØ!`˜jß5u3’Á$´A˨½Ì?.«Qí0hC*Ú#ªë¾¡¶Ãqv·õ[[~×,5»¤#½i /Aã˜N„0Ï&‹±¶³”?µàHœ­‚&˜lö< Ÿ×—ª_Šz3^ÒñßøýÈø[Ü­?ÀÔP‘™­«¸`´¶kÝaGZ)Y˜LîøÈ¥%kŽMÚq†ÐÅÜCúzñÍQhèaõ`n”•kq¯î#8éPcûF³íºPæ „TÚ`ÜY¹$‡f>Ó®ý&ý…ó"ÍjB”ÍÒ*p²PC „ÎcË›ÈÇN¬¬‚Éqn%Ë0Ã~ÏÌmž5*$Ÿè*—pM‹¼ãx¥°VGÁQïÍy -¦Åÿ?dòæ•t{—Ñê»è™D‹IÞßéÕéäuäÝnª½å¾IìÚŸdv÷.[¢â¸ß`yÔùD$Vš¤•£T@ZvèÌ༛ ;<ùTíl¦Þ^„±3Ï}›X‡í=‡oµìï³»Ÿâè‹Ûréø.“÷}ôXÕƒô -Õ)B‡Ò¨ïCœ(24æíB+H•¡ptw/€:0¾×îj`ª³ —&0Œ]Ü^¾1ìÑɸF@·Õ” -†Ò·è -àq÷ÐEvFɺZ#4ªŠjÀ¶7[n <~0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -10 0 obj -<< -/Length1 1686 -/Length2 10475 -/Length3 533 -/Length 12694 ->> -stream -%!PS-AdobeFont-1.1: CMBX12 1.0 -%%CreationDate: 1991 Aug 20 16:34:54 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /XOEAXU+CMBX12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 57 /nine put -dup 63 /question put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -readonly def -/FontBBox{-53 -251 1139 750}readonly def -/UniqueID 5000769 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÍÖP -½¥í˜5ö ÏÈð l.×j‡…kPôØ úëPŒ—ø(?ˆ±~M;Àö^Ãyy¬Ü*f˼[âõ:­ç-ѵZ/¿îeŒ¹_[³+ 5{^Ýòd tp¾ñÅ!¶ûÕÇ~¾Ùd¬Z+¾ÉسäŠå»:cÕEwK’+_ö°nÎCdZy°2}m‚3…þUó@-UÓ´HkçÑõ¿®\Gnæð^±ÒÊë&™X±”R—³üÎÔ†<½ ×ØÿÚÍEKNz—µŸçpæwQ›#ÖÀ„$ÕU$*Œ ŒI®ó”]™¹™§œçH®kýæ#ôF3qD/e#¥öÎÈ9§À%."Æ–ÈÌ­äV€åq‰ÐùŽ _•^59p³’ÏS -hÌV°]ß¿ l0t¾ë9ܼ¢r¦æ)ûzê,[§ºå {L¥•ßx 5)—ì>ådß"Ÿ»Tsõè̱ÌSé§â™¨ê¢›iѶ"±ðÏüX)Hu–ÙPËQ pÜŸt;ëïDö®’úÎÅvX™œ‹ð`a`9bÀi^¸} Ú«eeW Šf é®ïŠå_q¸¼v9My)gäØ;nŒ=™‡ÕåLS¿+»2…[”ds´H3½x‡=øäÇæhÿÿ%ª»¤tK$ÖË‚${0RÌ]fóñ¼ø¥j?´FêX{ؾ0%vRÎà5bŠíßØ(;ZÒ‹€­$ؘ— -È¡ã>T<äãÄžæ!ÅÎ>Šé0øcfɈ``hÙé#–ëõ³Û Eü= ÔpÇ¡M’»þ'½t³c¨Ž3¨é¨ZÃ!ç=Å+3;‘ pÅHs¤"-fà&¾m,ˆ•ŠpÁnå ð «—g^Ži"níP]6Â!¾ dtBDKð2_‰›¡^›Eù ÷=ÃIomàÝD¡yI¥(fÇ7t”¾ÿDA¼¤ü+ûryú)8ú›âÞv/ ÔpP‘H9ÞåÕÒ¶?ƒè§•83ïâI*01O2⽚u*½¨vîø†ñ9îÎ)ã &¥§rqÈ”P¶ËC å65þÀà$Ë ¹7,ôØ~Çê»aZÉ~ï¯îZØUºK#»Ã½vX¢Ú½ŠCA—ùsý1!\„³˜Ç]òpPª~æN]Ï2Å´¢y¤Mmç®Í –«`¥ }¥™Q¿ErP96iÑínûºJæø´­ÞØmjˆê¶ñpýon]…øÀ xÈ&(©À’ÑýÍú ë¯#ŠWRÖ3©d|Y QsܳÛàŠú–½ý¹Süq§“è†6òòÁ„F9þëAÞ‡e@¯¥š#Âçi‹ä¦ÚFèw1<þ=‹±MøY# -˜ßI6ŽÙž¢,ìXËKÝà?¼žH¨«_/\êꯞÂàûHÝP²ü ‡‘$| §¾² ëmJ†=î¿?üžâW]¿h({!5jPÁô?z ?hý" ×~Žšiý®T3Ô‘R¸Dî qÙŸpÿ¨ÉpôO^ø¤°]tÞf»àNŸëd™S€áRzÓ‰ ±6 - åÀ§ÿ=µs8‚·ì0pcŸ±Q\ÿ0¥Ëlfýº’g«Éc˜Û›°²%Ù [a™“èS?ãh¸åõ/.ôPTõ„H½Ë²‚4Ǻ$ -õúG@Î…Gª=žüíž`͈ÃGÂ×Üï®^\SÁŒ³/¾Dà0fïòYl#*5y€ ~ÊYÂ$.ר‚g´7±l8þïZ[žm”|Õ2ƒî³SÑQ— ÃɺÝh#‹É%ÏTGá]AÐ<ÍÙ½õ$ò#“G<|€FNúÕ“Ÿ /Ì՞͔_#šd‰ÞV" -ªÂ•Ybý@4(–Š{Ò«¿ð¹ÌT€†"è÷¹ô3´1Šö<©)IáÌH,ûÉÉÌ”8‚S¢Yâ=×êM[wu¢ü‹­–UL²û9z°3CÒŽ¥ôòV±Ë»V`<‚ŠÝqfSÚôrJ+\=24?!šÆ+Ë3 #‰>Ž^Ì'?zóÖû´/›õl ¥NÃäXµwÂá‹ÚÞçÙ‚[®ü“äªÉ! -È5„ºÖmðÒ,YðTjt.Ó§“êð¾'‹Þ8vd¡4_‹Ÿ )h9SõI£ MAÕZÄ2î£HÒÅ¥wF|•û -…Â:ýqv2Ê—•)f-÷½)‡S~>Çpê’Äg{šºYÏIdU&Æ2»tÄF»©–¸™onûSÆ”ón§Ä–ºNÔtùn¿¾w}Ýä$T²ûŠ¥ôx± ¬-Ã&ôii.ý°·èØôŘÂÐhè˜}([ c¯øO€·pÚcÒ­ü`¢çQæa®vI1ñ‘ú”.ó77Ǥ\´¯ÞiùË^‚Ì»BÆETiZ¸µÏ¥ý™Eãë³ù.[`œ«G žÉ!ˆ€"8 Ó —&5¯´7•Ô½;C:ñÊj²A‚ -l‘l/ŽNdrÿê,m+êó¤ÕHÚó’*vS»ªP`­ÕE¶/5 çî.”NÚs.Ï|¤mm|ü6,çl$uz‰1;Äša;[ýÙgX)Ø@=à@’•´=«³dásmºçÈj¹'ïŸá5ѧþÿ¸…$œyåWäMÓEUni1šÄvœ3¹E¿¯5´Âä®íl +){èÓßF›*ÎÚ×nšŸ²¤¾Úß -rÿfþþ|saÚ ÊQ5¸AE¤Ý6—|Î1 ¡G|d+!Û;ÍHUß Ål2f1ʼnœ[Èový)ê -‰=˜n}ªÍ§Ð©eåé–KTí1ˆO`Dùg ÄÅeÜ×ÃWy½3fÊ~ Ê<‘ÈÓglHAF³úµöåLƒ§nÍS@Ûh"ýònð©Që|ÎQxó¯FuúxÍ·Wô—…«}¯pR@kŒkV?>çJ×YÌ ¸„øC6‰(ÌöÑ.I,û&Ésw!„C>T_F˜í2ñЛÛ-¼d¡fo¼)V“mWÏr(öqžTIò¦ ª½ÿ¢Ü÷k¿,¥ƒX_sÓrÜÝߥ”dÉæ5‘•‰˜¶ˆZÉ„”×µ@Æ/Åx¦‡wîh¶u–íÐŽõ ÆÙ\%ùò=êhîošñè†Øå—©gþ— Ä9m¨à¸Ì)ˆgõ‹ÌÃû§Âk30½]\¢ó…áYCiEJ9þ¶4ûáˆDûNyêEÃb3–«2ÿøüRý*oS /üÕ¹I¼™çn¸?ÌÏeÅF–¡oïÆÌï³áVn—·*ÿ£dXåúG}ɪ?¨ârulEr‘²ڷùøx Ò£L¯Ï »=­ÖØEßÛgReÝfrl‘ñ<Ä -9¦Mü3ÛhC_z @þOîõ¼çã†9ÖÝyTƒ•Ä'Œ€,„ŽYF¦YìúØêLPñ¸¡f¨€Z©ÑÜwj®ó†Í*›Ä˜AŒÀcž˜­z³²Áµ™oºŽåËéˆìåPk€Ãó‘×AâRæk§kÉZܯп’Mhn§ð2Éx#’…u©Bß­ÃÇÞ-¸Aª•0-RêDÇ%…’H W•&Sx<è–ÐÍ]ò“Ž¸õ9{a™XÞlÍ¢!ÿq—U%=Æß=œœg´–¬Å〛»U3X§ BrNÛ­^w»)ÛºSk¦cY²]à-î™ù4(A°£’@yJz»f›™ÿ“˜¿¨Â¸D@äâ Üx§ªÓUÒJ-q MÑÚÓÃVU”î’n,š'¿qÏóùfŽA&Ò&)ÁuDµ]*þ• Ýß.‚'òJ¶¯Þ55ÚNìã“$kDn4P;Á›³šæÚI$Q§t‡»Ìq©íw|”`Ë°õ²n>`M?†– -‰µ²Af³‹×î¾{fÿµ)ÐJï¸"?¨ð“*$¤Ù»}Ùa¡xGF*øŠCRS™Ã\ñaYQWé/H³¸$(F:»Så’Ž›ï~ÕxtT•µŸè• ‰lЕL°CRÄïWâ€qÝŠBÇñC RŽñʜޣg½šöÉjìh¤¥þnÐ1–µœ&ÕÈ£J³Ù$ËŽ/î°ÁÀîLc€=‡!i䈱°m'YYКH§Û®É‚b¦ê<­á(Ÿ3Œµ’Á=†ÜR7NCý ²ŽçÉ#KÒ=hÄÐþ‚7h ÷@ɹªŽ"T ÖÒ&{ØqEizμßâTU¶cÉUCðE¦(XK‹j‡#ìßé’ÚPÂdYY%p¡ÂŸ¨Úô’éËå8Í€Ï?XdŽ^H0’[Ѓ²ØÐ]±U­‡Ä«º,<[ªu…äpü>¡ÑÉöæG´Ážã“$4‡ñ¼4•i{,©Æl¡ùüøÊ1ìì¯gÀQ‘nQ”qG\Ù¿‰¦`¼%Ï“èU€¹šF…7ö]i%9„0NµÛNÁ…Žº³iFîƺ§@¸sLRœVÌG½f  €@±ÃkN¸:ñ¤áºxQ‰UG8‡øÝΙÎ:ÖÛ÷ÛøJã\േ< VÔXdçtÿmÕ>†72VÏ7{ñâ¹1G¥/hÔ"G1;ú§"û%Tð䶵[ÕÝMvò»Mù*2ŸÄ¨ éØÏ×Ö†õOªïFÛŠL+2ÌÞç&´øDÄds³cÂÂz|î<ÁÈŒ&#Ê!Sôp¶ûYسJ¦1!‹@#ºRT¢{`vÓþìä”´£çëw… Çί$^£æ¤•q¤Ç\•IíìñC–/«p–Çkן ]R†ÞetðÔÉö«–9Ï!?§§^×u–LXê Ž’;,¾þN\ÅšWòHÊo€É{¾ï°ÜÀqŒG™‚ñºaëˆp,Ó«x -ÏYèóg=ñ -rñW§M”TW¶–?)aÀÙ|–;Ö¼FµŒ¦Å2NÕ“ÅþòÂI«{52 ‘‹Bê?åGç›ôÀA¿Ü(™Rˆ.õ “K O|î2†Æ„`?¾¨À±™˜¹6ÿèüÇ.N™°tžG ã$) .¹ÒJ5·ð¢ÍKý;;?“†=°WX+.cwÑêB…¬;&“^,ç¾@ÿnn–ƒ5œ´T‚à½Ö ë òî̧/Ÿ¨Ù®&cE·aô«Ì¾x/žN¥ŒÌ€Ww G9’˜šÚX‘8mQZs^ü-³]ÏÛÄ™CéCV2t;-$Ý$š ¤àÈÎw ™ŠŽ¥]Áu1^5Ô?²)U`óß½»{ÐÙÁ”6–î8ûÀO€K¹úþ4ãtý}«ËŒ8áÔ?;C9éé‰ Æ$]yV£·ˆžòÎŽ5@'òjßôi_£Îü ßÀ‘+m®F…?åEÎÿ Гñ>]c1ᵈT®º±ùƒ`ÿ¢ŽÊßí¨ º5Õ…ucÍa9ûžú3Uf8(Ü›5ƒñé*H@]ö!]KÍþ¡›b±¥#E™Üd,Œ¨÷‹ÏÃdÎHaÆ´hï&¿åﰗǨŽ6S•¤ƒ\E“ó‰OJz‚³íÕ\Lå¿£Û¬ÇÝÁœ8¨¦Ó »¶²*>¬52¿ooúПÃ0uÑž¡{à`‹gTª˜kG$¥]Ú™.í¥¯Nþn_QÒ9ìZ:šâ“LÛBvc«²¸Û]2ßÍlý|@ч"šêPa -bϾ&Šá¼à{GsJôJ#ñjèx7[ÊQ&œ™4Ä6›Ô_ؘÃȦ¹s§ÍŒ‚úÉßý*PJcö¸ßŽù.pX‰LôWM@.Âh7¬>#õ+"»……v_a 9ØP+Üù£Â ¦x#g¥9ÝBéÑ- o5ØWáÎĸJ=Qy–o½¤îžâ»ö¼|â‡Ú½¬BÁˆ½âºÄ¾@ƒ“…i4* `ÐôÕ© 8£’o‘@%1zý•à¨–ÝQøоØ!R'ƒ·!“2ÎkÌŧåÙàÛP¥i¤P°íÖ`’·Î4R’&]äœà#oÍIpÙÈÌ$š´Ž”ïÖëCLJ -W†­þ_î71 îr/m0É>aþu^ï@ PÀuõÊž4–´ ¬Mé žúrk´Á…G~oÞT¬Öì¨aC ßkB’¯j¤eÑ7f¿ó¦vµÔ¥Ìè$ŒPbF æ³(=;*ÿŸ¿.‰‹·†4>(˜R»Úm86Ùí»Ìwe -è¦Í®¿gyŽ6?s¥ÅùÌØ°p®Th@lè?ÈÌ—ŸøL@Mä’ *2úÝB•D˜Ööü àu÷³á“AÜœ¿iòFÊÔcOZKúÃÛ÷ú8,HJ‡ó\@uiUä!ŽØΓ;Ux–M€fÞøÓ5z½é´–ë¦u´›ÊºGÆŠÌ´Šîb°ï.nR “{T\·h࣡Åw‹ê¤ér r—-^UÈ1°ªn¸%pºkGHÏú(¤–#ŽE›ÛuΛ/öP/ávƒ™6az &0"-„Ü=lĸ<ŒD*ŸÁñ^'Eûš2ÀÊxä»óÓR”ô±º_Gg×#"b’4ÿ¥¦zËÄ„ÛÍ·ÜUz_ˆ€[$r+è­&ËÜDÖDÑ(¿gÁè—x±ú5ªD¨Á™Ø¬ôüï?£SÚdS Bò½A&å!úÿ›&ã¨ô0?º‘‚¦ÃAÙ&¦ª¶áÍEì.(øÌBä¶ñc€ØÒ1ÓL[SsŽñ–úŒ1É[Ÿ„Ò‘¬³>@E{ï¹-UõTÆE0>±Í×cüu¯AmþDVT“¬ö›¡[Se65}Ô¨$®Å{ßÂíéDµ¢q’üp3éë¯UÇÁ–¯©ÇöÌÛ‚Vˆìï=N¸3«Q¾§ÅCð…ûÙ…à×Jú«„>gnC‰œíquù?wŠlô‰¢r–awAn›ëÖýê¨s¡«ñŒ®lx¨ãˆ´e=ÖÅsI¡E€ÿÀ—líReNÒû™ŒS³ôCO‰›M˜$ßùÝâYã†*µ£†lÆ çpÐzݺ[Â*´*ûæË$&×¥èjRÞ]ÄOÒ¨(™@àÙæ0ÖA™Ð‡Ã@cŸÙå{ãÄ䉅‰ÁãáÅî–Î,ݲe³wRvæ5Á -—÷%ÿ½B<žoPÉ£Á~.PUçQÈ -•:cIÙ®ÄM²¢Â]T¿hG ~,à]ö Û†l,ôn5߉+{ª£ >r0¨U¾ZŠ…e§Šòž€£PxÿvGFàRl”füØú€Ç ç;ä' t™ï¾5§ÿ+ÿv0~Ø>Å–iY¸f X¤µ€ê­¦ü ¦:è£-)!ªÈ†´Bb_ÔÁkx -,¡•ÞXESX]¥¹7d½ -¦¿³4‚`3Ꞻì…J±e¡ ž*>9R×·|j5~ïb‘ùæÜh3¾u ×w63òqð½TD?í¬]ÞWÜø)œ¢9™Ð³íX\Êl­×ºZn(x8 ¤2LdÄ'¦“ÄóIþz,í:í©§X`»X—¬`aOSEów¶²‚ºÍ16&'ÅëÝp~Ãé±¼¤wοb—:‘aN‰aØbümúd³Ó÷½]§©½üdÀÇõQèZ—óŒˆYBWÞy9Úi¢éCA&ÔpfÿxÿCÛ^ †Ú)YC±Ûb±TÍu}(ì;ýØöÌ=2S€Ë!¸ ÀRoûÄ H‚ã û>ÓÕQ,’#&qx ‘LÀ¨ÃXš°%D3œ$ ®é@ü.u†_êØZ…¸g›Ô¦Wˆ0$¦ãç”Fͽ³8½2‚óó×Füíú ÁµmŒþž .ÉžÚòŽ‹¶x®_îqzn*ÿœ¡±·OT£¥$kEφYçÖD¼¸jxÌôó£_’ÑuìRˆ®ï/C…äE²3©KI\$Sƒ³ªÖ6zkrmgxUkì t0$ëØ¥ðÉKo>Ïc>ˆ,m¥_¬´„£’¾ñ¿7 ÎÕšCH„¬7G®®FC1Üô~‰t—©.qPÑesƒ &ÄÑôgî:BS¹}Ý×ÿ€ëoAH8ñ äã±-8&ÿ|WÐü¶÷ÞÂ`J@os‘²‡V3g¡Ì¾¹õK*àÙ"E1Ô8üÞ‹1º*Яy4À‘*´µZMÆ.O±t¨ùFÂZzV¦ï®™Ó~ç]FnžÏqešÔŽg„àÿ;]Û!7/!Ÿ¾B^ÖÜÉ2‹òruK[ˆs/gp~Úƒ,¾|ÝkÞåöLW V|¸ÛXñüŽ1Þ› Ø~úݯDfsÌLÇ¢¨òbõ¹û+…£ÀŠŒ P †ñÀ$Tj‚K©ß`Éõ“nÈ;a''…‡HD}Ø?šÂðÅ2_ç;U«”wi·6ƒ¹uô ¢E9CÕN"ì S‹¿Ñ›ÜLjï$VýNÓÚÞDÝ•«ð -«Ú/F /†)Ë‚jí>öÍ ùÞG¸ÔKB•Ê¹Ù×"X^ý9Áo] r=¶ÈÑÅt#¸Î:ýš¾CG¿( '‘½±¿"q…ç%ÎÇ D4×l¹Í{N‚˜o ”#²·œ°R*M‡à§¬sÇùg+rŽG >ÍöXŠ›­ö&JâÙ$Ý÷Æ–Ð¥#)øøñþ<'vÂÄ’6ÖãÔë9y¶wAqÅ€Ai‚+ŒQ?¢ÆQ©ÀîÆÙÃþ e}¶cVú/dT„’ˆÈÏe“µòõ=N}Ç -¹J‘È ±¡~μÈh Ú4AöǤY¦“Þ‚38¾®Ñô -f„1¾pRáن̯–a0ÓÁ{O^ N€’œn¶Ý¹È¦\nù -ßÆ5⼮ŒÐ=¯«… ‚Õ5(à”ñÙ¦M„õ}â¿ÓA¾>P¨ylÑB/hƒŽ– ¡»! üá¾Ñy¢{Lïˆqâ2ÕmoN“E§fº§¦­>_s•\ìšè;cú85øìºx»Ÿ‡ÚàH]4ªŸ½q¢E|Px•vqüEDÀk÷3z¡œzÙ}çÁߤŠE—íCvª5pU„ªk~¸\”tFñ´Oâ~:´–7Þˆ¡k ]¨%³¼Îr#‡ºÐAŠ†ã¿OŒ™TÛh=@Óssö>¬rÆoµ¥­óÈ‘„)´Xé­þ2Ø+œj|î=¼jd%œh7=°hÃsb Iþó#ÏýMnÆ žs  {½‚U¢•:ø9J¬¿ÖÜ|"ÿä•VbÉlŒa%’€Ð|Šßô>¯!s…Á0~Ú"ø}taÄÓõ½Ç=Pa R‚ðý¹ºoM¨#ë0Ë^VÕF"l3XÓ¨ `Û/$j4æ=–Wµã¤;ñ‘Ù4” 5DàHR-b¬©†AgG÷÷Üå3£F„;Enõ‡ODÜÃz‘WÁU·#ý8lÕŤcòÜ„&à|v¦¡Úƒé²ùo˜6‘ -<[»!YÚßW°—À€\˜(‰çVc¼Hv”:Tð²ó©8”kvz·lp8YÃÕ -å}ûEeÜbvúþ> Á•¾Êå˜OöÉ =äžKfaTÀûÀÀÔØAAµƒ(0x×~Ã4´#-RPMGO“¿_t˜ ¶§u´%DáF?¼5s•‰ ¦¯¬bk*K¬·º=DDƒ”A,£êK_áŸH’à âÈ·¨MÉá-µq¸ë™6âhxåÔP¡CøJÆö@œw®J(˜Û!!d¨ðVº±í”ò(u®ÀÐöùÃm&[ªÝ…nƒÚ‡²ÜfòŪè¯ŸÏ ^_~&Ɉ¸Ù ¼ÞO}3zÅPÂÌóüÓJ?¥–üQ ÇŒ·¸Ð‡¡šíGóâ¡yf~F$‡(k¹Ub„ìÀ«ü˜úA©£Ì3H'È£$ï(…|­üœô²ÍÅá@öB–ÆkW· Àr¾2ÌÎî>1=“üº"Mï£ñ~÷AtKçmõrqâS­i MÆæú€ ¾ø¸|oÒ{$[ Ô’ÙÏql‰[¡ˆ š ; -0õÐO¦©3Œ!û®|&õÉÂò ñ #*sƒYó…/ŸYÐù¦cŸøu† 8w7þá(d²òþ^=g’T¹¤(»_„ƒ8õÐCÓõÜ¥ª§W.ÎRÈÐr1š"+' ‰GBd‹ÒiÎ;àáè Ñ YËpbÙ¦qÿ¬;ómßü4ÄÖBMéY¤&Ç•ŒˆY&|RÂЂû#¼¸¸3á%åЈϚkÈíKÓÁÀ d˜h¼È ³@ËpÊ ìõ$è™Ïtէ󦄣_=wÃmÉJ«ð•‘3q_ö¾K`ê°&Ô&G3ÉœïÕ›Ûqï<TT4.§Î]6%èÀJÛ+–æ‹ß!±Ãˆjêܼ6£c÷€Ò”/(d·>€¥w »õî‘–éYzl£¥à›³¾ì—ü Í·˜Ã!¿Æô¤ÄæzPú4(ßZßö\¤©à›GCQ„ZQy`!$º­E¥Y‘üW»öÞRgPU´Ö@Ç_ãÓ“¢C•i½4¿Þ zÅ÷dʘ%ýIjô§Ë.¤·éhÃS›[rñ2wÚ-Fö}3 -#òu\˜NÖî7Ô—ú™la—á¸Ññôч¹âXÙ4ñì™sƵ¤š3#¦&"g÷¦`ö‡¶#ñvT’uÈÒq¾ µáaàÇ|ˆôUø–P`*ö†¢Jï­šqxXR8ßH ”Ýšâ{(RcƬò׋¦ÎQ -ê¯:a,9•€3µ‘‡ÓÀ‘ͪËd’|šÜF)™¬ðÔ#íó‰*ô¿£†oIÒàZ9hÇE¹øÛ‹z„ƼŽÁ*•é8þÛÎyË.ÒŽì;ºÚÎå…ÁkÍ -§Ñž¢Y4§ÚqÉéóŸtÒY¿Ÿ•(ímÌœ[î;JÝ·´öÏîN©Ã—“jRéêÆ|žÒå áŒ‹Ãej}©„ñ@kî½Q@€èX{«LIrœÎ¢ R®ÑP°$ppvéWÕ¨BºÞ {ÏJ–&Öwµ=ñn(YfKØF±¾ÆÁ.˜Âä'Ì +&%.¸¨øÈ»jç[­=H©•Ûû›à¶y%ó cKíû*ÃǵèʸO˜ç,&ºÆ~XθaMŽQ´¤lÕ‰‰ÓZQŸü$Àm"ºÄašÿ6@º2éÈÜ~>]Ã(kk½ËßÀ½ÏF/B-1'膆¯“ûVNŠ}*<.!W¦fß0<•Vµ½öÚ0Ò·‚_þ®ï—ÿDLdÂl`§Åk´Ý1ËÙGiB®¾Ê«RB¼ü?íëuT5G˜ãÊ謨i’ó7Ëé`|Î#¿Òö]OLæ°9<¡»õ†¸:¯† Ww3ÜשÚSTtž²Fð‰P•U•óßü¿Á†DGb{y¸+¯ÿ̆V•'BEÂÁ/ N,awÊ>¢ù”džÊ!}@c6Ëñê‰éVw¸,0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -19 0 obj -<< -/Length1 800 -/Length2 727 -/Length3 533 -/Length 2060 ->> -stream -%!PS-AdobeFont-1.1: CMSY10 1.0 -%%CreationDate: 1991 Aug 15 07:20:57 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /ZRNQXX+CMSY10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 13 /circlecopyrt put -dup 15 /bullet put -readonly def -/FontBBox{-29 -960 1116 775}readonly def -/UniqueID 5000820 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÈÎÙ°š'Z²1NÏ‚“R‚oN—]ÎÎÇ+,󡈙ÌÞÙ5Ð; lƸ<ßO#¹¦ ´™v¬32cÉÜïͽL„í£nt‡cMŸÔZô£ŠV¤A,; ¯úëq{ðÞŸûz„`¿GZg°ÇºW¹Šb3ÙéðÃðÌk,j›¢:ó‰æßÿNþÃÞÖ'lkäp<å7%–ô탴›¸só¦9ÎóV"›dw “?ï;¸+ÿ§÷Ug±úMs›w/gNVu4ÆÅ»ñÏaSr¾ ±„r÷ªX¾Œ!m½ßÌ -†¶Ø1Œ¦â,Šñ;T×WoäÊZzù^¥ÌNÛyÀ«fŽOìKZžµðäÀˆÍŽÌOëK@ì‹Ò˜ò3`t¶LC5󯋌YÎ&1ƒ6…@Ad­Eÿ$| بvhØ54’30Hð'¢Qcã"c¸W6~9é´©©ÏV&üüäÑØt$±›oRÊ„mCÀUOXêjmQî·‡'p !Ǿ]öèíDºekÓ©ï9¬NãC§÷6íÓnÔ<¾=ðr0É´† -öçÑ«¦wÙ&@g(;ÅÖ ÃGt`çE „*㡶Ymä÷4Ö6 mm8µCv/üdyù./“rô×0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -26 0 obj -<< -/Length1 2237 -/Length2 14365 -/Length3 533 -/Length 17135 ->> -stream -%!PS-AdobeFont-1.1: CMTT10 1.00B -%%CreationDate: 1992 Apr 26 10:42:42 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /YSVNVS+CMTT10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 33 /exclam put -dup 34 /quotedbl put -dup 35 /numbersign put -dup 36 /dollar put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 43 /plus put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 61 /equal put -dup 62 /greater put -dup 63 /question put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 91 /bracketleft put -dup 92 /backslash put -dup 93 /bracketright put -dup 94 /asciicircum put -dup 95 /underscore put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /braceleft put -dup 124 /bar put -dup 125 /braceright put -dup 126 /asciitilde put -readonly def -/FontBBox{-4 -235 731 800}readonly def -/UniqueID 5000832 def -currentdict end -currentfile eexec -€SQM(ì(Ú0_«&(‚Óü§ˆ‚£yÝëELì«:ÒD<ˆ|X'‰r5Vså¯þ”ü}³ãdäõl$<}ò&\VD^Æ:V•¦¡¹DáÍ·ÅcV¤ý~nÜ®²ÐÚlž“–ÕJXèýÁW‡0ù’CU`¦âÓãhwî/xõ‰c‰¬„p¼€aiëv.‰¶Üšß…~­ef âXš®r,7¢íz)AÃ`°gî4ØÕÊ;ö·%aM“kË wôÔì*Æ{¥­?šÝ{^=H1ã ÀEFúè<©:5˜žeÂuhˆ÷'¹~SɇÉnLì9ê¥ÇDuD…çÑi»É‹ørÐynC·• 7†%}‹àj¶ “’12˜2uI¨¤¢Î£i J3>EªZdúÊá´F@† ‹†‡¯¾ý½[JTrQNçÓàu*óéjˆÉ]1úÓK¢ð/Ûˆ±e„OasJÛÌ 7¿tÞ§è¼Ü pÃ7r÷wؼÝôa¹Ìÿׯ+°]ïÃH Ú³ ïòóu¯´àß/€Ñ „`Ë“!¡ê¯4­Ï«˜e!½·Ë§*#S”/¾¤ Ñ¶~Í剦Zøç¥úK‡g*Õ_W׃ÆmáÑ -¼ó%0i#€Ç0Ñ(4wzÆu…w°õ;bf5ÊÓ»ŽŸTú\¼Ë9O_²â%æ,á.Œy/[~#FˆÒªbzFp3ždc™ù”BBcåÁ/Ÿ=A¤DIa©xZ û§3ÿ*x’ÑdƒlÔ,X̸AÖ⥮0úÞ˜F­˜#`Ly›©—yüË¡Dt ¼ÇèW´³Þf’vb ðãDþ !_%wéÉ,jÐ/Ft ä*Åå©l<Vµ5ÿÖK¥SMÝsÀÆTûÖúôýüUß*7¡½Ôéس`Óéþ%cMpœ(žRJfßÃ<Úd 9ri½žËèJ}{“©}Å"¡kie·Õ×y -04Ë>€˜Sq¥›8;ü\ëâÙ Cº],ì};—-2ª“+u lÈ49sû¹—-„g -ÅÊÅеç\à!ù”“Î)®¼ Ëu‹°¤}úæÈÐu;ýs‰‘ ¸ ჆צúøŸëÄ­*ꈄëú‡~"Â" ¶ÐKÆݵA(N@(î¢u$Ki°3Ò­™{çÑÞ¾Ïx;árx$läµãóM ú²6t>rÀ3™ze)‚‚“vß‘«õ3ð ò$ÂyÓQQvßÕl2[=z>þ ïøB3µ§î&%WøMuO| EÛÕÜY´kè„}¾ÝpyÄ-H„âøø”­Õë,ñŸRUŠøM嶓† øÞvGýAtYÖW˜°nÅÑ2¬âbN—ø l -"æ²x©é C\Œ‡Ñ>@µkOu-ZŠÀƒvÛž÷ ¢ê6OMÂëWðåôwΠëxkѲ=v,hblGÂYÿN‰ø:BØßå?–|Š´~þ÷$í(ÂÎì´¨¤µ¤€YZ*¯“"Žãr$(¼Ì´hRF¿>Ÿý²„\ ]ýIçDƒbl/ë´çlx²­j–7-®Gô¼ÒšCɬ+&›Û §Ù´ÈÊBçÚ1ÝÿQRl ¥J=i$gªç¡%´ØaiÜkîœ4̹ò!©ÎÛÚ½žÅz“x]‰ì¢ó N&Šù¡¸ô)%a Ë0¶þK -Æ[áÍ"êÓ£ªË+£Ú€V1Ë: /¤­a¯0V$±ˆ‡G0C[š¶·Òg ¿¨ß‚>j}¦3õ( HùÄž¶‘&æëŒSĬžT†e2¥G»Æœ uï&Ù¡ýŒ4¿Tˆo$*ü>öZ™–Óˤ5°õ^žç®Ž‚ˆp:èA{´ßÌï#î‡uN¿gAY6kû[ÚUÑíWÍ° mÿÇÑaô¡ YD½nÉ¥çÀ·\Ì›ÉgaŸJ÷i-Ðܶ -†™ JÔœ;}s'¥¡{µí÷È­0RÂÀéþ Gfݶ…P#`ñ³?¨¹SÅjI´M-z5köÈÞØ Âám­53 ÒÎs¡‚:ÀÔz(¢SdUpÕ¸ŽÐ‹ÜÆcå‰?±–§|AЂ¼Rî?‘ZÚ§Õv*­ SS j_bƒåtN*O±¤àÉ R|ÛoÚA½Ûµ|Á³šÿ°<ã'­yÊ’S£Q½'¹uEùà úòç†Ãà•‘ö2RnLœta8o/~2H:â ôø•‰zÿ±5>4YÂ’^!:g8p0'sF±«ì9úúì¼-Þ"ŸGOÛ¡k1¿V™UìðotçY}…²£ƒÈÛäœ*i] -Ñ1[á%Dl…·«_r(¿J&fÈ`v -®½é ¢ë7µæÖ©ÕæùùV -[‡­æ Môáßß¿§»µõ˜ð¾ÊàØ7òØ™²ó qwHf +êêÔV§Á;w.øvT*— -813Úq}ˆ`ΕÃ=é­¥?Yÿ——lò¯l_JNi7\¬!BuÕ©uN†èú3éÌo‹ïS—¦R¶¾ƒjpôl'{ÖÙÿ¢¬1|¯ƒ@H›ÙÜ/ÊŠÞÑVŒ³Düó¤—?G¯Çã^AzõŠ —³JÑ“JmhÛ"q;äV&¼šß# šú)ÎÙ_s‘,Qôù6—)ïG0{Så«ûË›íN6N5‚Œ½Ñ=áCWv8µägóïïBõ¸"·±£y¿á¡z=˜Ž6ŸþŒüI`³¼j!„Ì¥ôÞ×XÖ¯4&Õ—@üûêýHáäÈj-lI2åTØ$=Ó(`ô~î+ SÛpY,±Ó—+BMöT&ì¥Ðä(ù±2²zùDWUœÖÓÅ uùÉ<øc–ƒ!ðä ŒÁ9ð)X7Í:îa¨—3gìû5.Œìs¸M\Þ†ªž:ñí'‰üíΚl¦ßÅ.Îö^ß-ú›Ê7\±ë¼O®Œ£‚·2Dï€$-;:4¶pîùÕ}aa•Í5ùþ™…<ù\n'âן4ÆëVsi´P¸ß}RÐõ´Òb,¹¨¼@Käù-9 $†ö’µW<[x´bVlNˆv–&¿ü4â‘•_Ê9~)5áE§ùUšÀ j}¯%©úÔJ˜1kô"oªŠ À)u¯ä¨•i\w¦ íõßÞŠ©~?OMÑj”©ñÃ$’Ÿ„\ÃyÉgʅȧ¿`„ÆœçJDsøÔ9Æ »ÔÜ …R8ô9¬ù/y¯¾InÚnøõ%/Ô“ˆåpøÝgF˜'Oœ…Œ2í´‡è=¿E4y›Ü:Ú¯Jþñè°ÁP³ÃÿŸ°úÖZß-„†tN¢&Š“Ta>o5ý Ì[cµy^¬€ø4ÅûIíÍ‘Ž)Ó5g¶.Nd™ÿFàòín7Zòƒ•nK‡?¬¡ôÍ@Ç…«¹%(„d·+ç(€z|´én®3Žø¼ ôíõv›T:Q‘¯ÊâþQ¥T4Ú=Òø1`,µå”EÌx©EkÃiB^˼í^âÇhåü„ š5}ç¾,÷Lí´;“y]AõL3å" íu0·Ü„k—ç2z"æFÅÒZëÛ¥Î÷àï -í€û_d=­„6ɧj¢¢¯¬šÎër¡ôT6°vžF€@Î|i¯BÐ+lžÕ,ßVQ1éÜó‚]Êfsá ~«\I&ѹ’ÝÌϽ¶Á›®“÷;(»Ä‘F«zdƒòC+$xÄ-bpVd¢eÁΟÔ^<¨å`ÁÓB¦åqê– -9§Úx†ksèçhØ©òUVzl‡Ø2¼ƒ>Òʹ4°cÍíõ#GT6,m8œÍô”&4ùô¡T B…H^‰ ˆ°°Lß…Ü¥,ví¯µÇs~7œ 2Ïdw@ˆËÛ~ôÉ„óŠu¾1[¦œŽýå°ævT§î.”Òn±,Û€–»À<Q« î‹ÿäonἈ}Þ¶] þ„xþŽk¬ÑÑ <ý; Ör#,?;ØE®‚¿´Ù«»Oœè ÉÐÅ»YŠá¯…•pucã±<¤'À;ÝI›.Éf Ìx¸=@#î(‡ó9qÇŽò!isÎ@ëGÙXY§Ð¥Íf‡É²ž¥œa°>~ÑÝ ³ðì¡EP1h»BÈâgMð®É¨æÝNî­xÁRÁD¼“ÒZhfbp'šœ0s²`ãÔúóÇo^Äo%‹<¾\ìöˆ™h÷Œ'²ÖÞ¶ö¢¨ÚÎD½ s…í°àÞª¦¦“ælÝo¶òˆ©°$"ÜzDçÛ H -ðÃè4ÅÞüÉäì"ŽÒ+X½Ýæ¥A¦“5,¥O|H1¦Y'0 -Óyy³~³l–¦,ãö€Iá¨ãåöÙT.¨’X"\I}ªçbh¡¢ð ý6zЪ<ÔN˧ðCz]Ÿ[­§Ëø®†¸º\Ä~©ªhJÈjÉÌO=äýô¯¨ÑDl;dº8hql²µtoñëaµ¤úï:…~ò‘«6;l·{iJñÀ†Æ'ô8lµÖáð,kCŽ}sÔœ•g\‡ì“þÅ£œ¾cÁŽ­˜¡µ#~lÉü—%#Cl¬¦é,fÖt)œp”G³•‡’n/è˜b'ùÓ”B Ϲ/ž¤›ú-RìûáØ+…ðž¥AÞg¥³¡×ZfîÜJ¸…Mºjù$µ»Õ‡Ðè4‚Îaóøì-Ñ…qÉ"5g Û3Ò%ú㉞•ä%éQ~fw„]gªÀk¯ÏQ4ÒkÙ¾.¾u±V›¯ôED¸ ¡ÆŒé[{!ÔLcºï¬¢úòh$¹õD‡S!WŸ/DhñÍ™‹õ§ _7p5ßžü’•ØïDãþXª€!â®î£¥¡èßú«”"ӛƖ„ÁI¡Çr8³Ò3¨b^Ÿúqÿð¬Ùt:Lácù/_t ßË&áªZ¥Õhó·z¯=‹F©˜ÏâŠW†¼Ï¬}&àØ4ŒÒ‹ä˜éqDnÑæÚf!þ´éòDøVTcI‚¤³¾Äëxѧ*|I²'pn6¨–8¼˜Ê¡£ -€iâÝ -muYBÌuµf]É=Öf·é&éºÛ<Þ¶x²Â…µi¢÷Ͼ˜IT¦Jº©›*†AWïÖ@G¡‹[Õ‰"Óñ‹ØU“x *_»èG'M¦^DoÕ»ò÷+ªO6ÏÔojƒ¬e§Ûþ•gÜ}§‚¶¥p¸i1Åþ*¤»©+…}Ï×!{Í0}$oúniÔ.3piYØV˜—)ç¨÷L[èù2·ÓÉ;€œå3Øå›,lEiÂôõ¸ Þ(¡Ü3å ͤHõƒ^ƒ°`€MçØ»5Þå+¸cä^bs6½Ÿ…,Òf›œz÷îà›E­þ?ŽL4eyfŠÿg¾CviLUý¡A(wG!®¦æ~ÏøümôFmyI¤à®<ÖÑ|ÆÂní䔉P¾©6À Wǵäñ}‘¿Q2Éï¬+½u<”š©ï[ß®“þ3¤¹E ûy_Ät[te×ò¤{NZñÅòŠþGßê¤Óì–È<ùÉ}íGAlX tÏí¬T›Ø‹)1¬ö¤¨Í)ï+EéÔÌqhAbðö§' “¬›ìƒùbÂÍjP¦CÖ@c¥>eM°=6 ñüùIPg‘E€P›/T=“¢×”õæ_DpĨøçN“ È3ñ#;ÇÝÜ<ƒ‘áÜ -Îÿ'½k?ât$í:‡” ^´^þ6T›@W£™íƒ…[ù–¬‰ßGÁºªwq˳ÆÔæõöÌÔ ˜-EÊ-àÜdŽå£öU‚é·4Á%™‰’DvÇøs  IýÒà#G€M8DÔ,B¬•©,þòA¢¿˜02} -8 晽󗨓½ '‡¿K$.§m˜«:÷{ˆwýV·Õ—ûÊ\Ÿ³!{KˆÆÝ7fä–±9¹Ts^d¥u.Œ‡7%ŸÝô°ô-ú]{N bô¹øwfüâ}ž±È ©÷DÝ3ÂË`%)Eù`cªLccÒÎöiPKL0þÕ¸F=ùÝ^ïŒwÆDãϨ÷vÊS)ç¹îÁýë›l/KRÍ µÈ2öjæÄCžs4:èIjÜÕqYnÄû$’–0°Bvjé -¹úxågC[Ö!)è80*²€R´ô¹’ÃRBÌfãÔcጠ̾ŽÓ–‡ÁÒ]F?¾pÒ.#†²!–°Ê%ËU˜„jßy¤PIƒ«tüèBjN©¬GœD£ëÚ¯I7nÔp¸Öl,Ë›ý¨ÅÅ>ú–ÌÁrëáÒªÒÔjªGÕÉkMÇë ÄßÔ,šH_*i«0‡J’m­H‡/®Klb¯æWŠnéö>¡Ì8Nšdí¦.øÛà µ4Æ¢ôé%dÅFöd·\@š„;6WŠKÚËå4ŸÂÖzìG¯îgEŠÚב˜ èèå­³l‘›"“ù±/üÅî¬n\¾²^_l‰VE´XöŸ ‹·ßÄ :»sÆS®ƒÉî=<Æ/¼ôó¿jõ¼f^Ã<9#ïǹ%DbÊ!DÄrÝw!šÍ¸|Ô¤g/¯ãúVùW@‡‡öPt×›ŒeÝCÕ/xzU{¸3œ—™FžÿGASkèdÛ"ྰ ¡=Ǿo#¸„îÉds|yFzë¡ÞºN•”C¥Ùr‘¢u­cÂoš¢ð$,ÇljeÝ”èi;/]6]o¸®óPc·KÖ$ä’ZµŠë¹¦ïB…À ,¦Ê¢ÔkS5Ä(öÊZi…í¾oJs쀗éYïLEêdùáÄÉÝÍ+dš¢L”Ø™ñchj™äºÒ¨2·pîiôyB=N5˜·z©Ø|.D”ÅV©^ì–0/°ñCW‚M 0¤·Šªˆ<ðCÍúÞÇ>€„)$Æ1\QÈ\²]ðµ6å†æ¬“9±€\¤Pµ“mÊœEI!ôñœ #bÊËŠÒþ-“’GÀéá“ؘîLs©Q -¡š"zjú’=¤æÖÊž)áÖŸ ´ÁUä€õïÊ8/½DŒ>¡$/šÀV€û@Ÿ}5Âñ2tùs½ÿͶÎdàº-L~Öñl¬Œº]ë>f{›6P„Þ@uH§6Ä”{»½k†\f5òž£7¢¸rv¡‰‹^ð$ØQOýu ‰S…æ1ò܈ÝoבŽõn õÔÖoÑÄõáÍÙ”º1ŽÍõ#“(^îõ5++³läu¹f‰Y]$‰]ŸpT(eF{9ŸÄKleã—ÿWU&pÙø œîx -­M…Úß…g¸ë_9ô=âå‹YÂÀÃÀ<Ø¿1°­d“ÀCSð–þD¶×îzˆ$[¹½dÏjW2^#9&íw1Ì"/lÙ€!/Á±€èr´œ.Õ[#Ÿ˜æ1iùŸÉµgm'p•®` ©F4±öì¡Zz¡/""¹AƒàQ}VÕ¹Y¸ W¹ão‰†¦™¿i!'$S’:ŽR}®–^UªW˜Iú¾ï‹N>;~ª¬ÙNrEÈ4ìJ­JCšÛhV Ä>×[®º%ê À]O»¸*]fMâg¹B˜&ÙÌã\ƒœ6žIÀyà°áIn‘#œc‹~³Í"eû0¦º°€›ÀÞ[nâÆ5î-zUö,ôýYßW\ù0‘¤UÔëɪŸÖh$ASl ÆÚ–þëþ@Cå‘Øš‚³rXºûµšXÒÂ/`Ùciw# M'qvŸLêŸ4‚¦D*õ+u–ª8* -Ž?.@-ËsaŽ*r^YKÊ›©é._ò¼¶üem¶åƒ8ÎÛ;Kâ*ÝW?FëT[Ó4sp«¸òÀZ@ÆÕH‘ï;©µ×Rv«·bîý6¤"Ð2yªí^³ÕºPí3òŒšS¾€-ÓÊ ¢â[r‹“‰aK[á=×öÙ\¹ÖÙÚd>L¶ç¯ªÕÀ{²‰ƒ]Èâ -p’X‹:·¶k@m­1îÚuÄbÇx˜GžO-â3~PÍ…£êMYbØlï›5´FÄ 7z7¾`.;Ù§½T,Ø|IỚ!>¥²ÝDåѵìk<–ëKÛ>ÚW«¦,·ôUßÄqG$­å7,W¬ÁÒj}‹áóÚ¶úÜöóÈ’Ô§r€’*Ùw#Þ"z¬¸.â&óÜ»G,,u[j]¦“Û×õÍ´¨7½ÑÅÙë‰só´©4œ úꋲ*’b}J¨#?Œ¤¼f¾KVµžNß_ïöºAÐvÀ+)-±Sø8ØíùŽÁ}6™ò‰8íã²OK•ž–®IÚ‰Ö÷ƒ;=ṎÌ0ð/½Í%¹¬âÇàJáü‹]½²jÊÖã0à¦ä¾ƒ¯Eâ["‚9ãàðçQ*-ô{¤k·m`l"“¬d­1YÖø:Ÿ}Ä¿â³Ë(*ŒŸ3àíPE^FùÅþ¨ý_Ho.õ©ÝZ‘¨£âa ì×Íèõ” -¯{ÖZ‚¢3È‚X¤m‘‹€T ÎÍJ*2›?ðâ¯C•cAKÍëñWïNc$7ŒqžÊèDc=B;ÉÝŸ"ØP:J-K -8ˆðXñuÅ+ßaDÕ^îÎùtû¼-¦ôÇ„>€²kwØ÷ë€[ãÀ%k@AõŒ¾ÇEˆPPEòN±œø>îìà` a +ø5ÃZª‹æ¾ArQõºNô†ø褧"$ȇ¢gûEäDœø~ø]§”ëù»ã5ý¦Y§_}å¯ZØU26Àö÷šu~¡'}³øŸþ¢‹‰W´‡)§U„ á#EÛsnAÔ¡t5Hù~\H+R#*9 U, -`¸?ƒÊ¹qÝÌV“]Ï{è·æœ«©ØMÚVÂ9{ ”P$­x†1£]ÚÖÿW‚«Äš÷8^ý†ÅP^ý# l-CD|†N¢R¶ÖÙ¯kFyc;†Ë¥Ò³)©"\>§¢’¬Ö~þ×Ò'K›•Ç#3YÌ+ï¹F1‹S"K”ØBA‰‘ƒï>s8Y×cÝAv”†ÿñÏ*ʸŠg:ôÒ/r£sSØèIŒ¶þBæÛi[“êËyµÛýUäbE¸7_/И³¯á4ÑÂ;†ÚR"xÑGS}‚hÂ%¿±—êÝi÷Î.|®@ñGç÷Ý5:)HNK¯møù)‹V?ñÎH%áÄ3˜þªj—8(›iÒˆJĸØk5ßåYGªOÕS·`ÙS ¹©á° ä”àØÂø²¤»$8”:G*JÍ8-dÖÍÿácŒ£$rW~A~ê*¹­úÝ“½XP§N GwÉú>=²ÊsäðBìpvôÞ4ÛÙHQÁ¯èä­ÿ #Ñ]Ž_±+OH®ÍI¢™ó¿Nvß-<ƒS?*ØÇëfß;ÓM«]íôØ{Þ]ñº”W!—õ™ü¹™ÐÆÐå.’iµ‘ƒ5CëÖ$ÿ_ÛéŒ!œÜÂS³‰mw¸n©ŸZ¼¼ªÖV%¶•+«g@>³¥µJk×#Ä;5 Iì´üy¼P—võ.°Rçîa -̓߄7m ÉBÕwÁÆИˆZ¯XÏŒûk‰wEÔ4y,üÍËB[GÓ9iä¸Õ9‡ñp¹·tu ÷µL΄týG6ŸÜmêÓfô‡ j¥®$ýõÂ`ú•Mg\Cs+o¤Ž8üeD°Á>SàŽ†A¢»Ì•ûòÂÊo'd“TŸî6|ÂaRœ‚ߣ„¬.RÜ¡²v6ˆËQÉßÔ&n$ïbB‡<ÿ] ¤üË0ŽÆš”¬øh½"ÀÈþÁHO¦ïQêC–ÒuüùG@™ëLa¢ï'yÂwŸÏ¶mÁèNiàOYx³¹sï)¬í£_ŠC„Þ?ÄQ¾?óµH¾}žFãQžá3¾v²³CÚ²Ÿb[Ó×O=7Vª ¾2:ï#‚r24­ä‡òýkl›jtÿËZUÈd6PWz -÷ú*ü< `‚˜¸ë”ÜÙ;µjtñÒ«ëÂV§©¨ôJkÚÇ)ì’`ó¶åÙ¥¥q•á[fj„<9Ñk1PY`QÃ]eu¿J÷["W°ç‡ ƒ•/¸ ¹_æʱÎrH+Ú ]º4wÿôEÊHVÁó|Ëè“Vü*Tö¥à´¼ª/@ù]R xàu„ ¾ëÄßÕ¾èfz›n‹æžBbß<ιáB¦ŠÁOÐÕ£©àUÍt¼HÊq ¥È.ïÅå°—„NŸîmÀÕ¹ˆÎ±%ö:D‚?ÍÍMfŸ ¸†_Ó°V]¢dõkC3?Xy'¯Üä8àbR‘iSŠ%Ü­±nMF›F4ÃVÝàÌ#\ÒzÂÞ,Eròƒ-–¡ßg>u¬‘/ä (ûÓþW¹åÀÂ:_¡£B<HRáï棊çžÒ²¥ÿŒâz'áCM‘-•¿C> =µ`åîÎ%¦ûôRÚÉœwhQÏðøêçô­ž;UঃEËý¸þŽTvh­ë,¶®ÍÏ›»† hQaˆ½·œ/©znDïx² fZ?ác (ÖQ¸ŽM/Ìx§&ÐKägZô'?­É6jCtöeÊpŠÞº90 V1¹üv›Ë”˜¡=ÀÀ”5l#-4¹³n*tÜÖJÅlpü¹…¸Ô¤{ÈaúsjÝ 9º] ®LÄŸ•¥>õ%Ü'‹Û=éÍ“ Ÿõ-Ÿÿ¾¨LÐç¡4cÑC|]÷²e²ñX× -\}¼enÔ…ý‡ô².ó€½_¿ºŸ -Ç(¯¼Q4ÉÖÑUÁîÊŸYSt0,ëô!¸„œ„Üm~ý½1N/o¢K»f§’Dx}6Õº6ÆpušâTÖ=A‘Mhv}ø èWïx~¸¹ £ àî•Eñ¥"0‡xᣮŋëÒ¢»ã¯áñÕîï–n‡ÿWg¾­êîË'IUÐ,Vóéؘb­RÔ6‡¤wÌu9æKÆM‚4ÿ0,ÍƾPJF?ø•H»•{R¹Èуƒß‘ÃŒ‚Tß¼£ìÈKæ—ìÇp¦‡={sXF PÔéy~ÊëˆþìË*ɲ^Šh8œiil}GŠN.yy„u»–Xž/4˜8r"P™oÕpŽ,äñùb?Å8€oU¬6ù¬ÿKM™Rß®4ïààbqeø;¶vðÜ({¿ žè‘ :ÁôWÆ?ÃoªZ’šÌ~vL&ÝÚA#­/Úï"¬\å<9—"nÁö{3Mm–7ï[§!8²Ô¾Pˆçà·aÆÄœ$àÙšôËÇÊ^ý°[ -dÖ@$mG Ûþ>áÙׇ ó2hòaØÇÆ÷]Ê௓aAÛd»¹5E ©p…"…Ó,ö«cKèÞ¤á j´ÐÄdCÞí@ꇛ H-õÍ&•â”' šˆqžÜNºç3’1ÇÊsÒXßÌ’Wps–¼ˆré³õ'iÄ"CxUÙQѬ]hÁHù—ñdw -̇˜³‚Yœ›Aq­„G´`Ä)]ãi,ámêè3LÙÜ«J¼ú1|[üˆ;õ>À¶  ÐÄŸ! -¶¾M’UŸ¿‰-ûì&J>RxÙýÌpÍDÊF‚µ•‹—·S»ŒÞâxÖ·ð½µ÷}€®?ƒ¯ÊGP³¬T-žg?¥™¸|½ì À&—ü]†Ò^¾ç<„²d> -stream -%!PS-AdobeFont-1.1: CMSL10 1.0 -%%CreationDate: 1991 Aug 20 16:40:20 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSL10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch false def -end readonly def -/FontName /YXBGJA+CMSL10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 45 /hyphen put -dup 58 /colon put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 73 /I put -dup 76 /L put -dup 78 /N put -dup 79 /O put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 87 /W put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -/FontBBox{-62 -250 1123 750}readonly def -/UniqueID 5000798 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÎ僥É99>'´~ ¤}(Jܤ—×r¼¨ÅC8ŽmÀÑâÄ”G@G ö^û7°…+§©  6Ð}¦¼µ) ¹µžþXw4z<^efªÓ2þo¼ÎÑAx‚*;Öxu&=k½ K¼öä‡î­`ñ»v¢qמž#ÒfåzÏ,ØÕ˜ •ÌÈxo„Ë6ÂTvŸÞ™±%^'ØskhàGÈ9à‚¡3CçÁ’á^¥™ÿÀÒjÈ†Ì Wå ÞáY½§ªf~ªÃw¦µ‘~‹(ërB}’Ž°´¬®~/±,I+Ø×y‰œ±¾9ÎÝYcÚ×HwCU;O~÷ŒägózWµªSº¹·þöí¿{ºü@×û¼sf¹â¸Ê¨A°TŽ¥ÓãW8ÒS"e¢›ÇËÝ¡¯ä´ª …Ò¼á¤Àd8»hmîrp€ÅÉ2 ¤¶ßõÔlA‚&$Y…ÙÉËÊŠ{iƒa ÊÎCµ¨ûd±”1@V)Cú îZîOÇî.ÖY\ED0ïêÓÙû»x¢ÀSüYaͪ`âÖc=ðïHdªó‚ü> Z+zQ@ǪH^n„˜w ÞCÏØ’¦¸NpGü¯Oå5B5îÜŠÍ ¡_Æ¿ý‚ªÉ5’ÕïK³¨lkÆ åé Õ -oYãp§¯¼ªhؾŒÊU%W,ÛÔ >æF aHòÁ¦¡IT°ªýÕø_½ -k\i`+ Ý¥°i3u.S}xâAZÕÝá°ƒ¹rÒÒÛ¼nÙ¨¡ÔôœÞ5 k²(q¦ÖºoWà[Ã{’Â¥d_îŒ.ÊL•Øʨº*8ÀãÁ6#FË©Ùg4OŽbè:kGŒÝWÐÎæáÀ Ì^$wf ®ÊCmœk‰ÆÃÛ)lÕž¼*,êW­J]r³ë^ëîí¯êí*¾†LS@¤´9Ÿ÷TjË"2ãz7–¼Ÿ-ágk¾ï75ýÝí}‰˜,• Ô¬]ÐÝ–ü¨° í'°Dh™Ñáãê*˜« G“¹³o3.T~j%D…¯¯š¢-çÍSH¬Ÿ~¥›tÈEóøTÞ2¦·(]'8nµjb25ÿI#ðĈºœK棯`o—”‰žß ði)ôëÜo|p`Ad ;Ùÿ¾F­'MÜáúžì{/ò×4&oLѳÝëUm“‡g«²L¾ø¤ÿmç5]¤÷+ö‹øDν\kRO -êWz×#xÔ“Ž ¢;cn²]ï…,òìdi*_ƒþS/b -ö €Ãýfx-$ ÍðÓ ‹j%DhéE[Ú®hëVqÙ9Z - -A®ÖjTž[îTpð¹ßõåRɦiK¢kGUYÀŽàêÂ*÷÷—u"ëJ_"%H7-«bÈÐü†œ\É̇lÍ¡–ÿíLï‚VK=< -…™å&¾kϦ¡¶§Ù÷¥´çÅâ»-V!Vì P )BÝè1å Ø&k·,'B¡w|®º|òÿ“›Ã‡^î…ÜKl˜ãäûæ‡LM$íÿ„°9äb£Ö¶÷öTà0ØŠyhœ›„¥’q÷)©¾šØWYvš¹i -¹4€änÖ½¹ƒœ´cQêbq$ñÒ%UŸéX¿ÑpÀª˜÷Ø -ýýK |v§”+ÝD_Œ}™AgUoÕ$~c>‡“n?»à“ÞÓ¢ÐtOl²S`1N{8´@Dpäw`ò¶HJCƒfY †ˆÝ*hdùÅ3‹[¶¡÷-0ˆß Áë[85¥D«Œ;O›7_æ\¶”YË%3Æ/“;&i—æßÄ jã¼²J-äJò…¡\79‘ 3HMžƒØ<9HªœIŽC忼úê&E7A™nÞz0¨‡Ì³¹àÁ—'·¹!‚¸B”/’ƒ¹ðÎpÁƒOÀº{ÍlÁ¸hÛ9Úò–ƒ×™³éÁpjŒJXä÷L™Ý~p¾Ö8þ$¯ñó)O\Q¢z"hÅm>.iJ ‡Cr|ÜÙR-&$DdC/U„m‘ž„aë(Þkz€sU`ó=Ò›à黡c‰àmØZíwò:ÝoS‡ŠQÎå/¬ãJïY0˜M[&Ò^ïÑ"ŸþÂ×B²qy’#>ç­%oÝÅ|ÝÆ1á‚à„‚ñÙ¸<ÐîµÁ–¢Ïþ>˜Äd>ru}#ƒ©|ík~yŠå©8·4ÝaÔúŒx’?·X@öÒÖgXéžÜ†Z^.0p6D³Þ‘êx‰>WAÆÃK0; [ì#ù¹~âÎr³«Ç‹,f?Ì¡k§ýN<¢òälßþJÁ%cˆ­»1îUwd×°`›¿Y É6¼‰}µÑ»†‡úg–Ðb×¢ä`f7êªaF\„·­BzÀæ 8kœXÖ¯P(3R|_:`T¨H$xøb'ª‘F®î" îŸE¦ ™%k³éêÀrHË4B‹/$®Ì*6 ålŒ·Ž#Fçý -—„ÊJ²Ë©O~›ð‹X«Z1k€‘’€ ô:Æó¥Fá›#•V¸M~¸úÛ‰ÁÙ‚Ö -zú2¼V˜®úèiFð‰”R;Xõó@2j(ÀÌ5!i¹ô–ÈHšVg{Ìà…âP¡˜Ý5µ7ŽÒŸ¡1‰Ø:ߪ uÿ^(&l¹Giðª8 ÉÏõ›4òUµÀí |V^¸4ó¶ µý{¯³¸©z’ )¯`D® åH}ú³Æ?s¾ûÝ„E†âè²ORÍmZ#yƈçïÑzO†Ø -tîÉî6;­mk¨‰½9µy:\ØM%0ݦ¦rÀÔ!\CîÎÛ\ýQ]4»OiúG¨Í@:@¥x7ê…mR__õÃÚ Kpv…cü¦4³-¤·ËÙ¾ä¶E†}ç'Tv¶—ݦ8ëý¥ÿÖˆÒ>¶¥Ÿê³8“Îò¥÷[#îûQ©Ày¯SÞ*Ag ˆø$KÅþ¨üAÄ\$òíkàýÇ/ñ'J\øTŒï_¼4A„!“áGñÝ$F³R3ƒ$`²ÏfcÞçWZ”Ü q¡[ìlc LY¼¨Œ,~ƯÊuÿK8{?º¥_ò™3У޺¿Ö¯*%ëñp P»MÚ¹y¸¸v=D¨Y©lmH~¨-ŸíÍûý.ζw{t¾kÑ„~†É ÝXƒ²¥*|?‚sö[Ô„ô-ý7À-ÆÞòkãI/¥ Q‹êŒ´š¶¨ …8”Eö¢Vl!Qü@=®H4&O ÓݨN˚Š-´À%3s»Â#®>ÀyØLõ”3ÝaZÞL\–ª~EÜgü\\HQJdÒ A9……¶ÏÕó¦´^½hU’÷áçá>b‘ò,G¬-Á‡X5ó}¦Êá4ái>²j€KÎF¹×’€È’;VQ«}ÑÜ[ãÝY_¸4%žÁ<ÂÌ©>…y`zÏƵ¾î‚“à¿#â3æ -ý(¿¼‡I”z^ª¤G{Réa_Õɽ¢E±Üí¡õö„ýÙž(%O]ÂàŽ%ÃNÈ4°^•.‹ï -_ÚO{‡ç¡…k§Ê‚À„¹K—H¡ËàQ;(<’Q€ -3Á˜¾a6Å›ÜXü°/;)KR8› -/¦£ÌØývÆû˵Ÿû1;‡˜‚‹ÐÏØdÝ©HñÅäÜ.OÁÈ9Íâ¤17Ý©ƒ5¯#}Š¤§Õ‚º]ûkÑ«=`<…Ø‚]¢ŠÇ¦6=,¼ÿµ×Ê.ˆ,Æ3ƒ’si5öeþáô(¨hËèÅGœKôû7ÈXŽìÚ@†®¢bÂUÈ4ùÍC˜êÒ[‰4òE2¶ƒ2ÜÃ"u…C¯útÉLÀf6â3ÕÆ+‘Ó>Š²ne…\zÍ„KDÎÞ„ˆ¹R’lã:ˆNN E$cìÈϦ4-Wã¥×epi°W fxžf©‹› A_Ï¡7`Û&ž”õð€_úпܙî8ü{²Õ:Æx ¡‡‹À`6Ó‡¯!Rå:N ñ½ƒ²ëyœSõYáÖ«ç9EšMõΞpo< øŠ Ñîê-Ärß'ÏÙ~G‚éùz¹.fD>¸èZ‹G}Í`ùÓ©¡1›æýrÝô4½%>¹iõÞ0bn ɬP\!/ÕÒƒZ#³ä”‚tv+³¦Aðiµ×»yjO‰µ=oKAìAïÓX¦ó+…kZ˜ýpÌ8zËâwÁ4’w[ Þ¨ž¢î_¸thÄ^ˆ^^)@î ’oB̤ê쨷à‹8'¨n³‹º+@|—˜¯³¦cÞåf ü™lƆGw‚OàˆÞà›!b¸ðÈrôpËS7æ2‡iߘCHªRé³G#®ò¥)ÇÚý™åà`ÊAÈ/|מÇqÝüÌGºgƒnÑ/€ ¢?iÖ+¸†¸„²n*àíkÞ}dÒLe°¦´çXò:»,Œí 4w{½tª!`J6^ì‡Ù‹¤¥Ì4FÞ¢=èS‘=aÈöÜ5 Ýx[èÔðf7Mþ‰¦’Ÿ¯o6t|åAÎ|ˆhGmA=É]ÚùùY O,I 5º=;°ã«©8y$s) é9Qÿé\½©‡*ø;`¹˜K ýÓ­ÊA{H¬,Ö"Œø€ÎyÔØ—¸7(Œ<ŒžfûÑ?Ñ°m% +ü•)ì\lép¼0w&ép±‚Lð‹õ5@I™Š~o[ëõìcÖ¿[—ý$9•ÊNÞ†±¼ N—³f§Ã -í‘äø `ÓÉ÷c™>óµý§I%·v›hšö'‰pK!¯ÉÍ‘É.ë?Ÿvþƒ†z^Æ êÒYnÅ=Ó B÷ŸËÊ ˆ²JÜšÔô¾@Ü`úŽQmàÛ_e`»@ð½µKûϼõF¡FZæJÞ^´âOq•%xû’¨ÆÙÇ épUôô:ÜÚmä”vhÅhº¤Ÿ¼L‹ÆÂGQé‰IXm{`P…%ÎRanÅ FÐYÜ"'¥HÆÇŸc…l#»ŸLˆˆTaþ.è)™Kµæ €Ð’ã"ÕÀ!oÄCFì–¶ ¿¹ï-³ûz‘›xù©p…ŽæÀ½²bßcð[;å©ÙˆN -DWRþ‚„ÂË_<Š$L¡¯©*x„Å¡M»îe˜Çk÷»X_wŒìô¦Aª‰¢KÁñ<‚wd–Gf·œ:Ë iêšm/‹±fp^Å©õËÀ ¼˜9*â4-u§ræ@º6 “%Ïs¥‚IÍÀ@G Éͨ¯^Uqáƨk˜tæî¢ê·K6.£€¬†¿ì•.Ï Ê9bêÅÈäuˆÓGggù']¼ÈÁÀ$™¿È–ÊÅe$6pò1ÐDß$Ë1û¾],užc´9­Äï (ÉÄs\÷݇[ÒãÅà èĈ§=Êƒåº ¶;&úR@èþÜS<›5—ŽJ©šƒËzK÷~}TNëý+Ä1³-ùÊn©ý¯ÂÚw™k1àÈˇäØ¿ÈÊŽ5ÖÊÆK¹)¦þè—\šò‡QJ„Ó:äÇ÷ƒ]Ã\q™¦& -.<–®ÉwE®x´r×[ÉIþ(§·QâÙ%)þ#ɲù.ÓÍÞIóÃ#=,âUc1ÝDö๸@\*%c$õä»á$Õï?Ô´:ñ]½mƒ$䬼]Úì"CFZ'?z´"`t”óbJXìX‹ /O¾eœYC°Õi·{hþžË3ãp书aÉ™ÅWâKYÆÕÄ(]Vª‚TG‘.eâå¶æñ©ÔnÀ1Óúv²ÎëïøpÙ¨R%°bŠÜ•~)ïÙ% .jÅÔµ†Ú*œo÷Q)Ï\ÂK!í+©bÁ.‘Ï>íé3ƒÍš_. -Ît±uvàÎ ÓšG-@‹ÿ}€©¯ŸÒfiíìG¼Ðz—`'—7—#†ÛXÒÊ>͉ š€©ÁÀHŸc{•¢rÆ•L\+'Ñ^Æë+ÍH;iŽuÖRßÆ8èÜÓ_Zp¿‡‘y®èÆÛ¥± `:‹rL‚ßW«D^ù²–뫦Üðèå@ѳ|„¿ìP^Åë¶Åã‚œD?ãýÐ.’’aÉêÖÅ{úébÿF -ÝꥹI °÷/LÃ’†ŒÆÏ“‚a‰3#¬KxÃÞdiŠ=3h²p„ÜÍ£ ÏýÄœââò‡àDïÑ-¶ªDOö ñ,ˆJ¼Ng"§…¡{@°Ä §V°ïEx -Le·oB79¼ Ç¡¹Ô]= û’E’Ü&q—ÅÀ£ÌnMÍ<íÿ¨ÁþY8é-}¿MT'—2y´$É‚ÑUeQ„Ç%ƨ)ìñs -häɹ{äÍ¥ä«UtþÔЈ™z²\Ƽ "ž)ìlrR…‚‹U†m9»à@ü¾O|_µ‚ue'.Cá¶ê¶Îj ‚,ì´U3Lwä‚æ^¤½À1ÀD÷=l%ô?¿ P;€#·gÑa O¡M<¼e¯pß’øìw4[i+‰éëN4}…9·5U†Ô²ø ‘×6Ñ:Ô/vY_ŽÉÿX%øýc“øYÌŒKeŠõ…¡+s^ùî5¥¦G·ÈµÎL½™nž»MÌ¢S¸Ú=#‡àüõsK-~`õÿ¡IŸ4kˆnY[Dî -. 2*Ìj>1z1µö§#ˆôñ’t8¸v.¢þ²{;‹übCƒ¶ÓaÐÛÐë-§Ô'œ]-Éh¶ÒóÜÐ\âë渮&v/èhÉN6ÙHads£Ñë÷ò!bßY¬çf-—ÿäMC”ë¥=çòë.f$mÊîL£É´|꒭鉴äW[Ã!·¡Ïà¹Äø“˜ FÏúé¡ÿS …Mù ïÈK¦rCdÑyspLCÏQ#kBj<îñ¯e¥Uw««ÛD¡Êl¹–= @À ¡ý¨¯KååY™× -\Š³íâÀËÈ[-µSR;ø”†Îó(·ëåäËɶdµoe\ÉE± êK’iî$‚SçØIãPðaŽòk~¥ÖI©˜›0‡æÝ×úáu¹Ìo)Æy2^~Kóœjh6»ÃUaǧéì?NÒ!eä“Q†+:êœÈA\ɱðhÑúyÈ6'ê:ƒŠ4 Z´bG‰ –G žú@é’8aõbÑmw…ªÍ–ÛÈ}­ ï "Ãá—pö!o®[:6-9L5'øL’d’}?¸ƒ¾7ŽB«è_H ^4Õ`ÔlÐ)EfºŸ×ìóÓø24é\€ÅØlñ*‡š­ì–‰÷¤›/ç•úûdô0F—ôë2¡¥ ¦a4ù²[ËØëWÿm„¹x± o¶G¶I<‰ $S¶æ¿º3`#IÉ:PÓùê]©þpd]5¼ㆅVˆ;R^üã¿“Ã:T@Œ§Ûd»W@Ý„æ •'7Î×–UŒµ"ÕŒ^@5TwÇÍQ=ý}îdŒ»)ÉÚ•…3©`‚æØŸ£Ñµí˜9]‰»¡Z½Lý‘:@±9·y‹éú@ò <äµWB/qH~6`å^­îÜ°¬6ÔX0Ë‚4šÏž5Óš3²Êw[tÌÝ‘•Õ#è¯:‚æÜÃWܤ¯ ‘h#I¥„}W¡Þ|þN„Ê›¦•æh - ©nûïãþ‚IjŠ¸ -}ó‘NÒ•;ÓDR‡êH"t€B—)>ãu¨ìÂaï¤]¸ö.d¥Í.}œ6Þþµ½Ò†èÎ2é\¬áªT˜lúÑe;^Þ¨©¡¨"l䌙~¬ÛŠL¾vÝåï9ÜîoL ¾`qî´ Uuˆ!©æÙ-°:UCë/p³$Pfö¦¶Ê”X²æ¸tsϵ,'ü#ýô…Æ-±‚[úƒA•à~WMä\ÂÀQ‡ø4ù1lk~%v—±õE÷x{§§Å‘¼Ýïléî>pOâ™Fj¨R'Ït?„…ôêUuPjh¤•0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -44 0 obj -<< -/Length1 794 -/Length2 1508 -/Length3 533 -/Length 2835 ->> -stream -%!PS-AdobeFont-1.1: CMR7 1.0 -%%CreationDate: 1991 Aug 20 16:39:21 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR7) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /AAPMXE+CMR7 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 49 /one put -dup 50 /two put -dup 51 /three put -readonly def -/FontBBox{-27 -250 1122 750}readonly def -/UniqueID 5000790 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÍÖP -½¥í˜5ö ÏÈð l.×j‡…kPôØ úëPŒ—ø(?ˆ±~M;Àö^Ãyy¬Ü*f˼[âõ:­ç-ѵZ/¿îeŒ¹_[³+ 5{^Ýòd tp¾ñÅ!¶ûÕÇ~¾Ùd¬Z+¾ÉسäŠå»:cÕEwK’+_ö°nÎCdZy°2}m‚3…þUó@-UÓ´HhY@ržn"ô¾ÆP\º†yP“õV¶K€×ë“m:È>Wƒµ÷åm6:Y &¥aš5}!Äç{ê²K }­“Žß‘)@éÒñy"³X…‰FDwss ±šùçSá·^Ü;':—˜‘ÖÕæ$ô£ˆó‰~°EãKNâõäü^™m5IdÆqÞÑ‹ <Óå}¬"å›û÷²”"#põ‰ϪԵ |XíÍ’=onV%̸‚Û{m ¡XeèËd*šF‘^J–â‚œ²"ÁÂã`´‡¤Sý"ìŒ_«cåK^„MKÊ/ÿ7Æœ6m×*Ð)"ÁL 2ö^Ð>BÁ–.Û­-Íê©Á è¯8¤®Râ³w$[ ášwÖÉ6çS Äз Ä©&˜ú(púTòØP>-³Õ/²þ» ò²¯ *’ž¾¦ ‡™¨XãÓ–1½i%¡TÑaß9JÚkÕ+­Ý -Ü?âÙñ^'Ë÷þ‹˜Ä \!ú‘àYòù“"þÖ?5šÉÚ—®Ãƒðgò>]ã1Qè -ˆ«PþÚä¥Þ“Á®/Ü aP³rF ‡Ë#%¦ #I*㬓NîfZ‰Sýþ†¶çbQË%­ÉgÓйåâyá6«"´ÊQ –CB8:„ ïÓ–§(jÁ4ätÿ.xJÔw5†M¸El¾B3$.³´G÷­DMÁlûi«Q[<5yðèGH™×òƒ=¶çojØÉ$S/ZûÏÙ9TK·ÚP…ãpó¥mûÁzIÃsBkÆÙN‚šŒ¿ÿš%Éâ‚:êç9ð ©ŸŽ`” $ãÄ…*iÖSͱzØì/@|K’gQR–Gйòaã•dÇŸ ×š§ÊóÐ…VÆoí«ÂxpÊüðñ‚Ž“’‘Þ¥ð8ûù(7èÜœª~ÉÙgq\—ÆÕw YÄQ=Ò9õ^Û=n'‚onÉnR breÊkçA ØÚ÷)঒rãHhøé=ãI&.*…B‹’»Œ¬Œ <_^?þ)á2Ž4Y2PÑyQ¡ôÖs|pB҇芺Àâ$hºl³à˸”éºWÒC碌¾…E…öãkî³Üm®”%+·¾éçÀ†Ç‹}TáF2<%̸ cWAͽJfþ¨ìÑ•«F/ú‚MñU¼¢hÉÛ¤Y8áȱpî\#ZÙPŒÍN¨º.Œ™lÅC¬5Ž)5"Cu³Ÿήp¶Ö{—9m€YÀ–*8§-"oOõd*8°‚={Øí´T%€mUûPí!†¥Ÿ+4Fš&–× ~©õkëJÏT…*À7ãæÎÔkÈ èž½pfÚs•×p>føX'€[­)óqn©2òÇ:ét -É‹Ÿæ’‹ðl{è[ƒßHq§½JËèoŽj‡Öt¦U‰/f¸4hað¸9Þ_7Grh£™ÐûÓ_ÆÔ$0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -47 0 obj -<< -/Length1 1031 -/Length2 4023 -/Length3 533 -/Length 5587 ->> -stream -%!PS-AdobeFont-1.1: CMCSC10 1.0 -%%CreationDate: 1991 Aug 18 17:46:49 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMCSC10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /NVUTVS+CMCSC10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 71 /G put -dup 78 /N put -dup 85 /U put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 105 /i put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 120 /x put -readonly def -/FontBBox{14 -250 1077 750}readonly def -/UniqueID 5000772 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÎ僥É99>'´~ ¤}(Jܤ—×r¼¨ÅC8ŽmÀÑâÄ”G@G ö^û7°…+§©  6Ð}¦¼µ) ¹µžþXw4z<^efªÓ2þo¼ÎÑAx‚*;Öxu&=k½ K¼öä‡î­`ñ»­Ý˜jÓ©gÀqÉsÆ&µ˜?a0”YAàêù¾½P…ôSHÎb#÷ºâ÷ëÇô„ ûh{5—42O9N¬ì¢W~4}ë1ÑxÔ/اùSrKÎHM‚¾¾Ì’`LÈ’:Å×~YI¶”¶«ödbkëœÉýØR32Zð8øýü*m]¦Õ€IhX¯­°-q ØeaÑ|ˆ’…·;~-ÛdyÙ)I)¥žƒWÓŠi5Þ½byr¦ßÖ“g‡œcÀ”!AÅŸÏ…çÛ­JEõe@å“‹&Žò_ŠîþG¶¯vƹ²vmi5ì°•Š]7ú_ s‹ òÚö†¹¨QO¸rd¹bi]³Ú\oÚ€Á';†giŒÏ& ëOfÔª74¾]á]®Ÿ Qé\sÞ/×™ "¯2‡òORÔ¦)þ]^Ûw¢]¾,óêêØÌ‘ ½KŒ²^$­0e…MŽò^š¤Wê¯_^\¸®6š”–@í•Îø…R½ß2°ÞDù6È*û\1£6XéßÀº:Û9Qr"Dƒ«:WIÙ"Ðôµ$š ‚®Ü ôQ‰œõÝgDÜÖh@ê.À¡-¼„Òêb‹ŽÅü.?Ü“Ë;RÑÜÍrÍþJý™Ö´ÀJDÌ߶/R„VÀìñrp~.o þ´«×ìR¦ÍþÀTWÒ)óåAxø:gk -I«¢ê·¥FÞEÖÁYé{Ö] Þì'h…Ë—,$´Ó±¢Ô½sñ½™‹Rújô~¾k;lêUk 0>”Ô…`"ü’©³v?À þW†ŽKº˜wyçJ%X©íÖžAeLþ¥ì%”aƒC•C£,‚¿³§».ù…×JíefÓ‡)Ý]9AU‚̪ÓE™vWÞs+×Hî¹î} QPÉßcñ„ÈìƒÅu.Ýcëk:õb=ŒhTK-Ë“€ÙôÌUÌYSâZzÃó"$ü}æ[zÉR7Dߨ¾Æ;Þ…MOk‚p÷ã»)OtÀdº|cuvngÚèQb¶?^þË®¸\¤²=ª©Sçúðuo=i½ÛÎwÐAïm)m…œá Oæ¦Èmf6Qb»£¶F·ÎùIcrè9rB´àp˜ÖH[õœödaŸYFÕ·ùDÌÖQ$‰­¾Q»©Wiú!5+…`0O¬iHQub•=E8Uƒ,2Ý‚£J²p-UvyÒyœÓc ½áSÊAXëÆ.ÑÒ(³Pëæ ÝóÚÞè¸ç>5?ëKܙ뉨ŸJ´£tŽÿ/O_Yž“T--§› Þ~Kç®î‡¾ïù ]ŠÎy¤eÚÇì'È|ÇLsž÷±*ÚúÄf™…Û#J™ÚâäbN*‡€.Rt™³¾Míb%«cn>³W/È-Jz$åM1'{«ð*§…¤ïuƒF빜¶ãÈ -b½ÌMÜÒa”©›$mm oÎ{—ŸÄê7™p¼lâð•ÃÉï^ ào2ž®ç’#„›D1è2Wq’(ã–È€ºêì>Íô#N†8DžãØV0Æ«…ÈP0 -MHÎÁT¨#ïv£üùü´—ãlä+tEª¨âç8VÓÖ‹4h6æõ È:íP­Ñºxê°øq®¢ÛYŠœîËÄ_Ás®\»ží# 9‘úrOâðÿ÷:„sœ‚Ñùè+¯Rñ+ý6  3›‰fPâpÕƒÕ©àkOëyé÷.¸ñp®¥¦l28ïO-ôœ?I_Þ,C<¨ÇSbãîDnxì‡H*ZkòiK9wàÑ–kÒV‡Ú£€–ÇðóO×Þ)íU0î`7YrËr©î L[|e'Ž2*¤äðáQi’íÓ/GjÑÃ(—øÖ#=l±:…S¿q™jÂ6cñàz™±Ï@×÷QQ9í ²‰óF.*VÞ§ÿò™Á¼+êÌÞƒŽ…4Ç4Ê\óžø¦åÄ&Ø•UрėՂnLÆÑÂl|ø’Ât§L¦oJ¾ÿ…†¶TŸþpÚ‹O’We3 -Þ¬E±"+‘ŽùBs§Öš'¢Ñ©kLÌÐä­·ÿ-²u=¼žÔÇ…®ƒÌlm`“u·SZ¡°Dô½;,’)3ÄC{yLͦmøÍPr¹¢+Âo av™ƒ˜Ð3®š·tи à–Ï‘åul åXE- HÓ@.ܨi,½l)n­ïôÖ×I/.Æù{3¼Bûº±ö³ê ÿ>¤9¾’áVó%t4¬&p‡ ”ËÐdÖ+_*>(ÖkôYu¿“Q‘ÝDm¬PíÓ~RQ*¨Üp>V.ÁTi~iÛ“ñ˜ÜJhÈífpü¦u{¿«Ç§Øn’ÿX¾MÜ¿õx¾4ñØ›xdIʼAñOTÞ y3oª$,VZòY·QSû¥íbÊîÿÑoÿù¾}ÂÌQz9ÒÉ$ò«¡T¹`v¤È¸:Èì{Ðo·™]¢õ¹°†]"\ÕñØý­@¹m‘ÿ0ÚÿÚsµ[PÃ4\Îç³KÞ?óz‹?³6‘„Ár3äÒw˜åÆgÌ.iwØO1Dí4ÛYGdQËl8áêCÀ²¾¾úÜð– ’€OÝ€ 7²Ä…óu-$=%+þ·îÉo@º4È;ª]~³US¨û ¢R‡Ü,9qYÅœqªÔü^D7jŽ ä£#¦UŠ¨Ä¶ŠÌÆz~hOZõçšö°´ˆ©â%™B;:‹õO÷ÄQêîc£kyî$h]?ÁLXÁZ –wÛ^Blnàk¢A$- ‚Ưƒä\ û§]Šm«i®¤ha£ëÌ÷ØSéÆDÄÎ{3˜«Ú}î‚^Ou&A»<æ!’ÛE·¡ ­ÊfÀŸOÉ®ÉówÚ6Ì0XŽ¬úáèÈ›õbÃS ·øgOæ‹ËVꚤ+Èøö‚Zä$í—GOÔã¬#¶¡È·ÙϦÁnqºÚ#(ïf Ï'],À -؃Ñâj "ol1pà¹yªVo–lQ -V©©ŽU»k{ÝmûÐ ®Ü‚dõ¯:ÅCï€FÂÎ-_9w 4¹÷¡$’½€tG®k;•u¯žàý”H¶è—R,¯K7€Ç$¨R­.9ÅrE-d´xÍà,¬ÝcÇýŽWiÉógWq­åän  `͹!vDhY¾gmúrgÑ7s”þt ’ÈnõŒV%û¨³6N?¾o±›ÐúEÍÝÚ¼©'*/•¸]–\J²¡Õ5û†çGäXì´b6³#g6ØøÖSZÝ™\I SÝsÔïlÜ‹ŒT„4S(½ÔÏ@˜Q¿ížØS”¹ 4¨êˆ,š¹ˆQ†É+§0æœfÆ3 ¡Z¨åÄõà’ö,‰?#\:–§&F›h»N¶E²a"!*‚!Ç{5HUcÔ¿H?\G3˜<Žkð}R@æÞ6 ±úºôM8dû²tYLÙ•³IÚµ [fšc‚Ùµ7iCäêRMšàCïÖ"ü«lP‘Z_ ì]¥Ñ'#öªm@ŸèZæîå¸CÃç ø®¼…‹ 8½®Ra”ö|Ï *Ž2®~ÍÜŠ×G,X~«tµðÞ°¦ÍñN;#x/ªƒ'¦ÞKtÝ -rÆüW„“í|Ät'ÈÉÏ4=ŠsÐgH:äƒ@å÷ïËë`BZP™èŒ{NÅ1xv×]›¥€“'#ÿ|.Ô½ -ü”o‘ù…*­“Ê—¬a$ÝÓþg))\߆žåc32Bu”BDŸ›,.}ìQ¬!º0wF4dt¡<5f6šÚ|à7r>0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -50 0 obj -<< -/Length1 1312 -/Length2 9001 -/Length3 533 -/Length 10846 ->> -stream -%!PS-AdobeFont-1.1: CMTI10 1.00B -%%CreationDate: 1992 Feb 19 19:56:16 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00B) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /OXLDNK+CMTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 44 /comma put -dup 46 /period put -dup 58 /colon put -dup 67 /C put -dup 69 /E put -dup 73 /I put -dup 77 /M put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 87 /W put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -/FontBBox{-163 -250 1146 969}readonly def -/UniqueID 5000828 def -currentdict end -currentfile eexec -€SQM(ì(Ú0_«&(‚ÓÿÒ&”{ed›S>µé㨊‡þ˜y¦‡• &öGÖà‹ñM˜>ÑÔ¨Ê-¨Ù…ùD.¹õ¶í—¬|3áãj;ô`ÓLä_1‡—ËñŽ8‰Lô¬8ëHÒOã¾{ꤣs‹H1þYÖÙÎ.Fkbœ{¢ùÎ>Ë¢ô;Áb¥ wÊ(‚¤*ýÎÃô·[]c༎]ÉRWvmŽ¤g­œºô{æyu€Ìíh„³¦pÉO߀ýí‘9çô€Ü:v¯r­›CA‡s ß®þL¿åÇíʯ$’ýp0“.Z<'¾F‹}«iÚ¡»¶3Z¸ÝýÆ–|X'cúCV;¡w™EÏBü±œ÷ŒQßÄØQmCÁ«8èeï6†_ÿ:°¼°pºH“÷H-ÇšÐ=3~R}ŒØ;¸¬zÿMógQôñ*ªê+mr`Àš&é‡É>#}¼Ä¨äè\Ó%Ÿ@ÓÊõ\t,»@­ ±L ¤ñ"¦?{”[úif!‰ÎM”dÒêÙöí`µ°AÕÔ^—¾'¥v5N›„dò ßÚ…^µdÓK .„bZvÑoí¹ˆ¤=-dÃ'hÝkŸTèæŠÀ»s™áoMK t²- -N›[ü!¿ Õ1âeåÿÀTÝNÐ×NÊ ç–pAŸ’à;ËþìóUMf–öòžÑZ% ‘þz‹n¥0GÙ{¥dXšeÊa‘)ñâjÿæÂ/ 8TŒã~ûnž›`µZœ´EO×Çù//”7–‡«Y5¹F¥D‘§sœ’iàñûH±)‚í³½QþeitÛŠ}©/OCÜk6im†Ò6 ³a‘ÛŸêré‚ËÅ8/iÚ7|é@ˆ¢§aµo9„g Wó]ÀÃwà,‰Èrâ.:\q#Í'ìÍÈs’©ýö;´·dœüSï“ìpÍ´£>L¡tN” çxâF“„)àž„õÙ("'.iz+NÅ.ÆMgIÕ«|ZF{|O²µ™¸Sg&“Z_Bm/-­S™[™—tL B|ÑzâFQ@2óûªöþ›Imj+È¿·p@ÒnªCF þ‰Áÿü=€¸f5‚¸“‘+||Våu=#Ü/ï\:ï ™)÷G -½Ü™ìüÄL”VR¡›Šüÿl˜½È~jyù€ê ýÇ­¼—ÿ™W‹€™2Û{›jx2"(U ¥†sù5Óþ¸’½é@Üw„*Û—56«ÂvJ®þÐ#§ð£ ³ŒØÕç¦SÏà‹5tÆ!ËŸŽÛøK°4£™öô#qqÂÓ©gâÚ²‡ð%¨Õ *bÇqßžyïÏé,µæj¡Ó ¯@xžÈ%3o°ÿºC¼àóˆâ…´2é¼…­VA:ï:Ä5ÏÅÓºi{PS…ÞÀÓov„ŸÅPah äÒìÁàZ©„8©fRcDܻգU.ö±Ë 'gJ«Y@tÜ{Mß|U)¹ìß9¡HØU” -`ªØ÷¤ËŒ¿ø«>Á ‹mɵ~|·á¶fE˜mÆÉsopzϦ‡àJ‹Ô‰¤“9EûwR/Mò¥dyýN¡tvqà2EºÒvcÜ2­å‘ìW¡AK2¾>ÜVÖãTÏ”Áד©¾àdliÄí"_A<úsù) Ð¼ì•kü)ú{P ¿ãŸ†CŸÒEFRÀ!=3e븣c-3Š…Ò+¿™ÔâjøõéßÔdÉÏ$ûY¢õÐŒæi v„ƒQI(«‚?3^=^æ¬x ~‚ ÷Ó®ôg«á“þkT¥ãcÇyZ»>fêˆ=¦9ß0„ÍÆú¼C3P nÔ)óCÙwû<<‡Ð×›ö[Ž;'é·(yJWÚ>%ÝÞíˆÐ1?ò󌠴æ‘ñTaø0ÖƒGÁØ]óžPaLÚ%¯ô¶0*fOøøÄ+ý² *B­ŽF]=NÛfÈÙ'Oú6P¾4 "QÄŸ*v5À暢£fŠº4€¡%Èn¶< "ä<ùÿ¨ÛŽBºÏu5~9<=†=Û¬Ø@ò“Žjӿɷݦ‚FÞÉï‹ØrïuåÆCÏ`²¶…£W®ˆð"jêÎÁ}¿˜ÔY?øªCI ssqüd½)7Æâ"mÿØxy¼^éY $U‹]3.äѧÖ4që–Óõæ:³èJTã_ŸÑÍD­o§|àmp™äV㳊 ›§€q_ž]“zæÙ÷° +Bîo”ìišw‹vé0aw#EÒñ ‘®I2â*ãÿ¦Ñt§Rô#ÐÁ@ËOÅVPÝ9E:$2û žéÉ>/@ߎ‘N#·ðÄø'¦ª+º5wµ®c£Ž °c\D¶^¼=K{d»;îi«ïäEÝšhVðÑR»gôÔÇïÈ22µÑ¸¥âÅc1Û3ûøIŒjºò@"Ñp!óP.qõl4ð›vÚ§¢þ!“Þ½uæE^’ški_KÛÖììÏÞ¶Tˆ ¹Y¢[ÄöAd:ùñšÄo¦>ÐT)‚4ØÜçÄh`ìŒÆTýÔxU%š•¨Í/Fœ¶ØÝ-Âüªé·@Râ+:Ó°B{_À'–€RWƒ<SSÓv‡»çN¨ß#óiRv#z&ÂIrd„Y„‚¹(˜ùÃORù×ØjT@ÔŒ£øóÉ7=àÝiëq¼¯­ +´¾ßPK}U{Ÿ•)µÖ .Œu%\L*/TÔAÔ\$ðý!¾ÈÕK˜6°¨Çöœ^âå"¸Ccc“Zµìh7`·F”õÖ©::cÏ GõÖ–iÄü!û°8´?!^û®–] „Jÿý1 Ýu™m9ŸÁu…KYÁ"Â{+![H‚¾IíPߤn«…ŸM,ÂqA'ôQ f‚žã˜’’ÁS<ƒìi΂š&qÕ²póçþœ?å5þr ¤eà`=hú±‡,âÙ³¡i£àI6Õ>=\Çèå ’ î}X:V]> ¡Š]ýM}û#¶Í„¾]!kz„Ú÷¶´nÂɺâRuT˜–3i3Ökº”pöfÿÕÅç£äVÌø”6€AïÐÞ 5nËq#×.ÀZ—íŒ"Þ öչ஭Öõ_Í„s‡ýS.ˆƒצ}ßjŸ;šX¥›#™/)‰Ñ…–½Ó ^ÝiÛúH€àؘ‰=”cÖ¾N*½HF‚ ̬°þ3Xùê%â H†F/´Ä¹\’>þPAeyÅxÑNhà‚P•ÚÓ¿¹9/ÑŒ€¹Wòaº½~o*àƒåú% iõ&¢J1A»1¾‰”„¯öõî×ü UÚ&DÌö?%o±Ð‰€@T|C’Ÿâ†ìH^ÒÏEinžÔ’‚§¢:‘BG{–Ñ Ó,bc‰÷ç(Ì€Hý,â E>'½ô`¹•>LÜ÷…¢ØT}"élYÿóžÁ6{bºçn&-ÈíLIp‰â›(éÏ<»ÏPÌÍr¤D6v`ûò’ù­Õäçô²ÜB¹Y^íÕŒó/«íÒåNWçÂvµelÕ/ø–·g¼&·I°õ9Ó“l.Ãsþ¢'Ëu3ýÆD²a»*8bè5¥…‹—˜[RÈÄ©ÁkKËN?VŒ·ÚüWväúú‡áE?;¥á¢6×É]“ÌÜü>-SK‰¬­v‹¥ -?׳ÐYŒÔàÓ¬Û¢ì—á´ˆýtË_ÌÐú/èv4v+¶*„0&ENøaט›fmµGNð‡;@ó²QZ #ú¾6A\e_&V¯Vzc¶ðdc"P槾ç­å¤þj¦Ï…“½ó6ýÃøk˜ú½ÄÿÜû– (¬Ì8ë&ÏJË.»C×(â=+:÷ -À‰LM}Í3ˆÿ7ÏO¶w?ÂêÃè) • ~›RýÕªòB€õ ¹Œ–S#:"\$/dêtß&u³lÈ<³ß!ÁxÓ~4,tgœN®æ¾ÿd´[™ŠÊÊ ð„¼Ükà]9ÊŠ+èb·y%hLtyÁò»š¹L‘9ißóµâêÌ@!‰bM‘g^ôºLZwÔ³glHÔð€€âa°˜ wÙú^îë kÔdï‡÷æùôCfä…œ÷EV}ÑôxN´œ yÍ%‡F Ë!­C‹0e²4½ýe`©g5¢qhÉ¿[Çc|äŠ3!ÏŒ+I­‘3<Ž¢–­½>ÞŒbb¹óo^L ŸŠ’R– ½4£™*ú¼îH·ºÁ•j d`ך]ý¨“ÎÙ%¿Ôâwj­ì‘±ð Ný¹ ªC‘Ç%ìQÑmÐ?|ËAyóaܶˆ/KÀßùW¹’šÁªáý]ç¨GúYàÁtwèózßÏàÒ¼Hì•cþŒ½+i1UÁ†Yceæ[ ,CK=µh½<ÀJSñ¦„Rjî!srå(ý–БõW´ôh<´pìÓɨÁ\j¸,†›µ¶¶ué8º#•ÝgJ‚&ÔK”„]\2úñp8…ù±" 3Œ¥’'¬áÇÛoÖàE¿Þ1MçfKVWI[†Ô÷Æ)ø<ÏlZ"ô½ìÕjaí<šªÖFh/ ÎW©]×â*E—™¾N}D±ýœŸw¹Mq -~ -qèC\€D¸µßßQ3ôèpT7ìЮúRši—FržÌIæµÿð[Òû]/R' –kH ‚Ûþˆ©[µšt€"Sxh\’¹…¶D ^º>ÚÐPÇ‚!¹¡sÙ#ÁÕࡘ̷m&Pùs;ãX\û[1ëBÍ»ÔRF`èNÜ…kÍÛA[k{ÐÏ %I«[gÒX\5O=Á+ðÓLînýÈ̼Þ}Y÷)ÃâÐP=‚ ¬ÿvgx€w?f Xý'* Í^þoZpÄd„ÿ™A´„|me£$ÑùŸ68œþ’£ì]™0 6Ĩ‰ HpOΘ蓾À.Üa6§@ˆ4?Ö‚ -ÑŸMAAËÃ/Êw:™GDæ¸z;`yxõýqÎ&­â/âÙz¶¨V¢3úÓ…JúmAaCfÙ:ñ}y³óüÝ9[9Iì騺݋ÞúrÍr‰ èû6!J¯|§À,£1.ã[Ú?‹¡£2wñ÷ãòt¿ZIsÈù§ªNoBKçÿ—wˆñZ0Iü0úyU=«Öœ¬â ,¸ÓÞW5¸`ê“4gÑU|Ú›šîKC³p ¯“Æ¥tÍÐþDà”м§!”ÄJQlGµ(Z³Ž«–õg<¨ôÁþÁ™8·(NO6ÿ_AEX×åôøÏx<Q,ÅDÀÆú_—O\õØü‰èÁ)~² ¯ ˜#€òR8”©wÏm8„F×Á^î>ÔÚ ™Ð)‚Š––C@îI¨ƒ „GDH²rp >N*?fw©ØâÒ9ûºËÎF¸¼ ,ŽŠo%BAÜ:R‡mï -¥j*²¸·%ò5ôW¼çBg$;¦¼‘ƒœIÅÿjrÞ¼Û*9d§©âàÔÊèÛÝÎ~Ÿm‰²Û‹›Sq^S6x¼ªÔå…©Òì%;v§W™LšÃB•k)æ²h¾¯ööïêv¿îˆf ûýÑa˜T‘9h "ÌælžZù|A,’Á½Ó ?ÎÎõÚ*WK¶pÙ.V£`ª‰7lƱ†ïqK+Q#º²+mZ‹ƒ9 ¯ÂiÞ½¹¾¸ßÉ^ ×ú4Ë;ôG#ódšín ·@^=2Ìàw†'¼±Yˆ^»˜5ÇeÑ„Ù}?¸|!Þá[Ù%¥ml´rÌ= ªŸœ uOFc¢èx¾ðƒ -η#ªnÄ‘xma§¼ë ÍÔyÇç¿*õg¢(þfuÄâq»@ØUÏçA²¾a°³}d ÄÒ¹ïlŒ¾­ûÙö\¯Ë“ª:”°È0V·ÙåQaôÒÛ?ô@q×¥ðfêÂFð·M©£cRj!E£ÀkîÝæFGG £·›·€¼lÓ«ƒ.êœû?4?W*Ø FÖôzÏGcÄóq¤f¢óq•]Ç·ê„Êv|ØSmd¾³9ÆÈ”À©ÔÒªðMÆÇUX4«™¯™X1f±cÓ’õDÓ=Îܪq<€µˆ; Çw -"ëˆ6Š¶•œéHå2$€O6?t²A—qØ&Úüõl.®ý¤µDp ºÈ&¹ J»MÜŽê±fo2Þ}êέQ{™QŸ2àÌû§èYÐàÝ®t·ÎÂ)dÉàKštZ{‚´n ”XžÖh@aØuv›$ËèµúZyj$¨‘zœK`h=î8ÃsfãXeÁûÖ˜Ý=P¯òÙ“ÃLo‰NÎýÜÐâãÇ®@n½kÞ…zr©äæ^ç7ÚPc{ïõ6gË€cÕÙæ¨Û@ ¤äjÂW¥@1=Ýèûf Ö0˧$ñ+{a3Dn6*´S[ tµ¤ISYÖµÓÜ/@"†t„gˆµœK¦2Eô¼Œ£è#çê½îza% Ìt*]JDô %GŠ_*0%Ü}—ÏÁ¼Ê_ %Üx §Š?Ú?¸/™‚‚a’Ñ,ãÔŸðˆ0ùŠg´«sµ³OÕŤ@Ë'(âóû?èë‚ µÞˆ3¡E³ßÌ@7ëa)~^äÒ88ÏV—§uÃåßùÀK8DÌÐü†L`´ã¤äö^Ĥ?ßÖÌ›w@®B,{˽ܹF“tIõ}¶¬…Ïsqä×Äê&Ň,8á{s#Âü@ç%øïlÒòËÔq¬‚áÊ ôIÿt«q!½å)'Κg>;§,&YWMÑ.‡-Š¯‹¨ë''LøÈÎh„`m)–œÅBÃü½õ‹ß§ô}–Yn¸Îs_gC[Ζ¿Ü¡“I:)áuùQ¶ò£|§’\6X†N ´AP±üø«Y Àôî=¸eŽœôR]¢6PŽ¢Ž>rúx+@VZ!!éÑù½„PéÝØÁµJ p©Á èq=JŒ‰FÌÍ,Ý”‘Ý’x]xÆI²j Øñ ë®Èg‹R¼Fn#>)e̺"4&¬¬¾bâ9®©TJÿèNpLvG¡GúŽ-õ–Þãžd™3âv zÞÓ”y•+2–=']3rúYȽô„lU°œí@´•Ì+yÓvéÝôÙù#¢ŠîD#ƒ·kíºý#ˆa¥òC:î XF¦Ç púwñ³©ú˜ÛÅ8ÓÃz`êý²¢ŸmÑ­\y^Z•áÉcè¾sàõKÓå±ê6qqIŸ¢Œ‘×ó?+M‡“~]ðáêõ¯Õr´0yÔù -ª#ì7–ƘB؉Ål7ýcI‹¼~“hö‚Ýüpª±2…ø²[eT_^CöÚ€ë'ñø¶q@³ Õ:SùÐí6èÔØN±É*¯ß >yø±n£ÜOm¬- ™z àZö´¹+â×?x«×¼ýͬÑY+×e…¯¼ð‰xÛ(MK.g„¤y¦¨I¶x×CæKQ¹Ù0ìÉ£â§sÒÁ>gÂ~Ñï¸ú—›ØKIÞé–±’6Ðu^ì;`ÒO*?Nô¥m\Åaߊ±p·@ï—>~uœç®f•Íp­#cäî‹{ò ž9”¼—üߊ>BϨ´r]J÷]?%Â^j Tˆ‰i‡×ÌSœ˜>³å§=å±ÞÉ°¬O :15„ïW'4g—ŠÙ b’4¸Ž‡jwph—}¡+¨ ž†òâÑÓ^“;±æÝú¯‘Qa5ä}[<^jCi»e`þ^Ôîú]ýú¨:×+dŒVã°´ŸïƒëÐûV”ôˆ'Þ‡{xé°±»@WsLÜÎè½—OßÏùŠUË zl³*~ å×"xŠnk+“͘X{>â FLÃôR´àx*<”ñ6ì(Áodð}]r6é}„-Ö[±É‰>¡ÖO4r}®ÕÁ…^Ñc,Û §Å0Q•“7Þ”ø˜ê˜a£¤J¡Ÿ@ð÷òxÞ4¤ŸÜk_-Þ½wšÌŠE½Ó§v®¸±+óÂpŒµ Ëåìӣݚå]í½JÀîúF¤SE¬™a—º& (ÿ/[óu ­ìÆ—«®ƒ•ÛÖµÍð^?¶–]“Ôbè„‹äf–äª2WÈOÍ5XD.ö![×eDþÒ¸ºMè É\¬I“ªÑÃÀTOÚNmùÆe £ÖØa¯äÈ›×[”9Þ¿ø±“°¹—u¯JW”šäâøÙCßäJ5Tù²Ç*·e‘ÁPÚmÂ4ß›\᳕¢@ƒêhfÕ¦¨1Îœ#¤¢“~à©lˆÜN3ÜcG…iÃð0ž -Ø çd_ˆÍAÂVü,­ òّȵó4Î9“C­£Cy3=qèIRÀýiËBð¼¸qû~Ò =ÌÅüSªÏf'š{¿æw'Ð%¯!'ð¹çìpžr–€=@ý…üÁ›1¦ÿ¿Sâœni×––Ë"Õ%6x³öH pŒ]ú#D±ÄòP¥Xj),T©¼¤rBÐ×Øàk3Ëi*ˆCÚžíçl03A¾´ 1T9 ñ•v^u„mEY|Yà³3|Ûà/››æü°¦‰Ëé6Fî\ejb¹\JëJžlSŠöÝGÌ0cÍG›£j¥‘>°0­p²¶›±FíÎßµÄPTü1s!kYÿkèÚ'>Dttiø´bûÈ9>Èò—cÖxf$ÚÕ?$ E;‘³ø´Ð”öw„Kò½[G’wÎX¾>q-–T‰EªÛI§t=.~/îè0ÚÉàCx"=Ú-9Ö/ -&âÇn`¼eh¨Š{–?áp–¯|°Èè7”0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -57 0 obj -<< -/Length1 815 -/Length2 1173 -/Length3 533 -/Length 2521 ->> -stream -%!PS-AdobeFont-1.1: LCIRCLE10 1.00 -%%CreationDate: 1992 Oct 23 20:21:59 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.00) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (LCIRCLE10) readonly def -/FamilyName (LaTeX) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /BMCYBZ+LCIRCLE10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 8 /a8 put -dup 9 /a9 put -dup 10 /a10 put -dup 11 /a11 put -readonly def -/FontBBox{-2000 -2000 2040 2040}readonly def -/UniqueID 5011942 def -currentdict end -currentfile eexec -€4y‚«9BÙ0ài§ H1uÉšFQ}Õ_W×Ðn®ÎB¼oGÒ°¾â´² 5¹’±žŽAP­ri³­ð#¯’Âh;V ØžZ¤æ–‘'üð«ÃáßÂS2iÝ”„kd¿ºk„ Ò\@íœfÌ2|jºòð8;P¯Œøíˆ(b¢ !$Ô³Ýe0þ¬Y0kq5«²ažÎÐ|½MKCæG0áK¶ÅBG¡÷ù”ª&ëùÊùÕqjÄ9õ¹OÊaÎ!Œ"K>Á¬Ý ½œƒ'u>,¡æ•ÆŽÌôáÝ94^P}Ë -d7Â‚Õ K¶£•ÀË@Eì¡‹¶`ò{+Z°Vg®|Ãç¡öHÞ¡Š'Ð ƒ8fd]â^ÍšÀé.(KŠù9W>zí ½Î4•íç¬#äÞ5^²¤ýxÖ¡ua˜Æ“tñ±æ -ƒjûçc¶g´;EÈW Šþa“MÏ.¤· DÈeöOv^YµÑY„né8o1ï"xÙPÄ1îY¬?¡½6¨ÌäÍ?Avý‘ƒ›ˆ©ó 6 iK[ðfš*a×+ føhBØAÚ”~˜‹¶®X³É²hÀ¢3-„?þ[ë3^©~©L—³[<²=@Òëí¬Nbfó8«WÑ檢E͵¿¢óóÿ³îíMÄàZ7EWG°õíDF¼àµå;Üâ¨>.H?h¨3fA‚ßs<îõ妅Ρ6€&ÖË /—a¶DôZOi_lv4®<í{úÓʼ@ÆXÓC¶ÏeÀ« LÇË –^Ö¯±¼ÎˆØšÞRàÿŽárò*+²_•üÎìøóÍ›–*eû€zà$çùÌ€^Ì;wMĽž@Zÿã:¢¸ MÒùù–¶¤©€µ¤ñ궉5,gE“'ä¬ÞjVwzÀ€-ÂÓE#Tf(¿4 ¸K’ɤù9Èz²Çq¤Î¸¯>°E+nhjþbˆÊ0`5¼îIíÛ å3"[ W–Yʺ)…·•ÐÍð9jK&—ÿ¬>³1צÓT`ÓÒÞ†bà>ûü9É¿<\\C©BÖxOZaÜá³¥+óŸ·¼¨gÇl‚• –7„)ÎCá¹ìŠ=.úª$n›ö6-ê¾[%|‡e ò™¶EfsÜ‘#œ´‡Ôhb*öÑáf=q€Nmò´¾Ø'@ûUqIxÒl ²R¦xÅXe3°hT{1Èa¬K8ô˜þù]5¤Õ°º>¤Ô)$S’ª’lü‘è6ñOHðÐr”š£èõÆ©ŒŒò-—'”îmó—‹Ëˆ]}abXòÝ¢2õ -²CUž×Ìcél‘ê6{‹™¢í²sPQKX[äà›¤XÀÉ!kC2¡QúÙýö†ºjÖPÈ/ýÁ(æˆYð8#=q3Pâ&…ÐÄ®ù¡5‹%éÁQ¦¤‚s]vÆ!Äñÿ€*àZ¢E~NJ s |ŽÝšÚäå‹p>jίQ¦ŒÑÑ~š&30¯:Òß ºa÷v™7¦è¥ºž¹ äD…u§ - ¤;ní0dç>1þÛ0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -76 0 obj -<< -/Length1 881 -/Length2 2369 -/Length3 533 -/Length 3783 ->> -stream -%!PS-AdobeFont-1.1: CMTT12 1.0 -%%CreationDate: 1991 Aug 20 16:45:46 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /QZZRHI+CMTT12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 99 /c put -dup 101 /e put -dup 110 /n put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 120 /x put -readonly def -/FontBBox{-1 -234 524 695}readonly def -/UniqueID 5000833 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÍÖP -½¥í˜5ö ÏÈð l.×j‡…kPôØ úëPŒ—ø(?ˆ±~M;Àö^Ãyy¬Ü*f˼[âõ:­ç-ѵZ/¿îeŒ¹_[³+ 5{^Ýòd tp¾ñÅ!¶ûÕÇ~¾Ùd¬Z+¾ÉسäŠå»:cÕEwK’+_ö°nÎCdZy°2}m‚3…þUó@-UÓ´HkçÑõ¶gîØ_­ã -²ìN/OçPÏšiPdXè‰baÀ±Â“¤*¨}äéøjLœöŸºq‘ø®Q -L¥‹o=à'öro2t=Îs•ÂÆóÂÞíÜúŽí}¥mÖ¼Þ3Ÿ÷¦”vIä2^Éa²ß­Ò­Fñ‡ûÖ>ìbÂo´jfj ˆc‚Üë©÷ÎÝdÝÈ¢ñ_ã@v dÄoëÑôÜ7®Þ è¯ËŽJÚ - TºÊ[ç(«‹ó/× )ªò}eŠhôT¤¿8oc"MÇð¨bOk†1šN/Ñxõ–ó² °2ê(ÁW¦ŠiúÒ¼ˆˆXÒ(l Nða¼ 1Eò£~¾À?QÞ|Ú4Í—~°—X³¤–ôšt'žóÆ2-ÅIEùPbÅózQÏ~¯Eò³cK-}ì;)ó[fÍ0 à–öƪ+ðLJ“aÁŸêXœ®ÛXoÙ¸ôß2ì‘›t4Õ»å~‰.°8V}õ¸¯ Ú^’Ejó``’æ×ýÕ¡4<=ŒØSÄ…Ã7ÄH®¦O1ø‡'V–£'.ø†`¯±©2${pÔ_ì›uƒM¡oé¶Ñ—}lòQVŽÆá²2 -à«°Û…Z<“Ûbgß3¾4£E¨4ÀõpïÄæ­›ý5?$ø–æ/¯¢çμø“xAµA'‚ sx7ãµT{Ñû`t`¯Z[w".u™ñÝÏÕ¦‚^D°¥âÈò3zj>#Y$(µxxkÅ'ÎëàGŸ/FX꣪9§þ£óàyÄ´žÊ—AV‡qò *ÿV;µôpÜÖÏÿ“׆Îvr¨ÂçK™:Ü)+È‚ãƪ¸¶.ƒÐ¥Ø¾g¾ïä!hò\¼è–Þš;5j€ ðf¹à¸oâõ¤æ,ëu4Q³­jvÌ4î%€iGŸÔt©û-é¾C‘¨Ín¼O ;u2¸ØÍÌ£‚u b-ŒEŠ”ÕjNöK ÂjðK¦Ÿ“*1nÇ2¸“voèÿèGoS½RûMÏ87dŒy‰•Ï»-ReDu}ît -Ð/aûÍkž›ÑhÙ¥*!£Õg…ÉÆ‹îýB¼Œ©Ö×æÃðÝ/iQÍÆ5«Ä Öô®Ò\—çi/Bꬵ0Yˆ\‘Œ’›¦””¾A!9Âôç1X%Ô<ØΊ\óËc¿¿7ÕéæöÛ&ÇŒgŸ¾Ç3Øu‹ãäÑÔ@“¾ÞZõ'Ò0´}Ë| +R«A¤6Šˆyvøí§Œvq¤^—óõ£”eüéŒûÕ N[9Þë;!1môž5?:lé‚Q厬ø¬W›å&ò<_JôüKÂQ…Š¬-jAR­îIcœÉÿQíJ<¦wPb´©fŽÛŸHg 7du–×zNºðFª”iÓÊL ϡ¨*9#‚½3¿ÑSQ*ú1!¬OHC]V¾gn3e@LAäA>ŽÅÚSû4vk ³E(x‘úÉTœÃŸÞ$¡ °«Xi4Ÿ<2'y{³¡#3Óöf-5·i·VûÁ»þÐê÷«ÒþÓ\ ^‚l‹ƒ‚/)3d±À Fˆ¼“8ÜFÖÐëp:@ÈÑ]ÆLóÃT=™hÛ„\œ­»õ"¾€QáÖmì>u9SU? -9`œ;ÛQ z[Ò&óÉä1¹#œ,1÷—Çh=šuÎ ;Ý —ƒ )û5x8£\†½ž#é°:L)¥Âç6±Mêó¼­”¦WE9EµcqpKÙl³mУÚËS]j‚ZÏMœúÎs÷âÃÀô+t?ê.°8.ÁiêÞ黧XJìU*¨Ì{?d!½ŽPj0U:ã/a .œYL=T¶º¢«‹©:¡<Ž¥¿W@2#И»–á]2]5ÁHÍ|,;ozú•­ÂÎÍqŒ”ƒe6%‚Ø®Š€([µz1‰Êj&ãŠ7íâÜrÒʲÚÈ¿Ó[0þÜ©1jvuª!/&Ê% Tü'+ÒU+f¹^¶¿¡½{EaÆ­å¼Ü5U«ÒfHœ ,olÊh vn:J»]ˆEË®Í\²3XÅfë§=®W8ؽµæ6q[zç´ÿå°°¤´ìªÒ‰\£6|)‡EFlµxô¸{dù眼«ÊdÌο®q,6±Ü=þO­°¢W°‰T'à<ýŒ xÅêãyÈt,>‚Ä,8õ8uLï -Âõ}!vg|õgÉ—æ_¸¬¨F•3°Yó1â§ü¸WЦürŸ4ß`áÜÜq㤴²@§Òe+b'y&Ýeº“ ì(t“¦Ä~~ ¬Ì<ßbYßûf^pš1àö·,à¿ÍTÞ…›”çÊ^Ù©®(˜b\Ä„ÿéÄ –ÅO>Í‚Ñý7pŸèXçD1†ÆëÍ$Qù#©‰Æ1JªîÆK¿î_ã¤.~fG “– Á¯àx—(zaÄ.J ÿ\6ûÔ°öë1»4¡î†Mt‘0+´ÑôÛ ýzšMÏÑ}§·»k“A>hKD7^ ng•Ý“ Ú£ö€ v&é¯ÀÚ9aÿcr - MP:àðØ_€ntßå?1ˆtNJ s vKi56ˆœÆëqµT•¥©X$Ѫ%u§™Ï†ÄKo"Ò&Ìÿ¦ù¦9«˜]†G.IS¡Z mÄCÈ{= Äô]Ò’ÓÞAŸ{'3¢0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -95 0 obj -<< -/Length1 810 -/Length2 784 -/Length3 533 -/Length 2127 ->> -stream -%!PS-AdobeFont-1.1: CMSY9 1.0 -%%CreationDate: 1991 Aug 15 07:22:27 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /UJKJVH+CMSY9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 104 /angbracketleft put -dup 105 /angbracketright put -readonly def -/FontBBox{-30 -958 1146 777}readonly def -/UniqueID 5000819 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÈÎÙ°š'Z²1NÏ‚“R‚oN—]ÎÎÇ+,󡈙ÌÞÙ5Ð; lƸ<ßO#¹¦ ´™v¬32cÉÜïͽL„í£nt‡cMŸÔZô£ŠV¤A,; ¯úëq{ðÞŸûz„`¿GZg°Ç·Œ:ÿ€Œô¥í¾(1·Zzî f°T—¾ö³ËÁˆæ%º€‘°¥ýÁ“Ùi²h[½6*Ïõ>&µN}ï­û“+P]žªööVxOÈ2Í]ÐÈ×ÀK­#&ßþ/h ­oÐo€oÿ?f„o#FK$âb¶·Dä¸õ4®Í—§?uûʈ¶ý”ÇEL8Ë%I¡™²òr ßÍÜóTƒ{LÒ°>Ë5—1r˜Ns@cç)B+±Ñ1Rˆ­7qÚ³ÏññÌ:¨L°;´ Ǚ՗p+ÜRRì£È^dîÁ+™bÊõIÅÞÚåãœæ®ÚÉÜßn.gŽµþ ÅËA¦¢Ø·µ®±RƒŒ|E™3çý /#<Öü/qè<î¸D|©41phP)34›«ÓVWÃCÜÃø0U(&Þ©/>#Y0”Aúb ­“=ÿbÉŸNh*Ès ë¬ßèÛzÉ'ɲßi¡ÖTM*3VБ\ÖöfC7±ÑÝîIý/hiù¿â.š†ûpú8š4ÄÅa©Z|6¡Ì’'‡jnXã@9+جìÖl¹Šš¯v0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -98 0 obj -<< -/Length1 833 -/Length2 1926 -/Length3 533 -/Length 3292 ->> -stream -%!PS-AdobeFont-1.1: CMR8 1.0 -%%CreationDate: 1991 Aug 20 16:39:40 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR8) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /PLCKEA+CMR8 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 45 /hyphen put -dup 67 /C put -dup 69 /E put -dup 82 /R put -dup 84 /T put -dup 99 /c put -readonly def -/FontBBox{-36 -250 1070 750}readonly def -/UniqueID 5000791 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÍÖP -½¥í˜5ö ÏÈð l.×j‡…kPôØ úëPŒ—ø(?ˆ±~M;Àö^Ãyy¬Ü*f˼[âõ:­ç-ѵZ/¿îeŒ¹_[³+ 5{^Ýòd tp¾ñÅ!¶ûÕÇ~¾Ùd¬Z+¾ÉسäŠå»:cÕEwK’+_ö°nÎCdZy°2}m‚3…þUó@-UÓ´HhX²¤µ Ì.ô⤠çHH<;Ï]ä|Å& -:–|¬p§£[ˆµC#´\zC)‡“Œkí­;r­c‘‹nZ E~ N¼ K EAóEì6zè\©½$VŠÓ¹ø _t æÄ#ijÜÎm¤ÑÈšVÐxàÐâòb¡6@ mäNã†l4qûXþßZ;w)Ee½×&}9¥Nqqu-½æ:Á›´³é^µþg9 ®MžÔצtCõ]άٖÁõà#Éå¡Œ¾ìà #v:ˆÍ×Í8çNHI^ÇúR9ØŠË<‚buF›h‡jE~}[ègDZ̭it*Œ› -ÙCH+ò¤­ -í@ºëi #;­6´Ê--§2)VÇuÑRe5²ò-*¶™ ­Þ-¡KI÷Q^d¼=–¿wRXü}®NB¤É¶ÚŽÝìJ€ Š­È×^HÊå!7à\g]j‚úFÙòüVÖ.\`Zx˜¸Ñ@,¬"¢È§ªà–òÅò’“ ›™Y9’ƒ¾‰R‰‚8·wÛ˜0ÿC¢˜²!Ĩ ÇÊ–OÉžkž°ºü9¾š©ßú/£&²¤fg&³ÛÈXDço“«S>ákËGfÞU¶ŽnÁêaõ2Ïþ¤WC$K2ê8¸( b°;ÏGj2Â4츠ú*??3“Õóªw@fÐ$b XX›OêÅ»—lk:ã7&†±¼¡ã -%S¬â\aGƒéT¶9[‡þ]x]ìAÏéls ‹.é#é!²©Øê ­$ƒ2Ê]ùßÕGû™;b¨²ÝBIû‡Ö§_¹†J>0f²- LÒ‹-¤´‘sl—d”Ø|i¨Š?í“%û(ÅÓ¨ž`"© Þ#-ãÚ̧I”¸ÉÚ˜/hã§[Ù(`…€R¯gŒù7B KªÀ|ÏÅH%Æ–ýèRÁ¯¼ ´O·Å¡D.àc5" |QuÖ‡áü¥›9(_å1Ðtroþ#"(Qr3oøþ•Æ…ãˆL¶3ãñÓcªjœÈaŽ_¸ÎBC<ß«[ñ möÔ'Q'†ÄfÍWª5RîÜ2©y“8ü)YW™;¤öZˆöyzÞžF~sa§}6IjååW¦uéÆøê±0-É^ÅYoˆ}{¥Ì,J¿3³5 -›°Œ1L –5P|J~ç;¶yÙ0àZHa)ï’ê-%êP½}ÖEr7CLLª)”CðzžØ rŽ#%^ð±œJ§ÎÝåÔ- (XomMj›Tw±™ËE½HË}ŧäê‹8„£_|€¤ŽszÅ-–äVÄDá@ßN!ŸDH;Û«ÚÛÉè'GœÂcTíðî{Ði‚LÌÚŠœÝªˆþuÞKñŸëâÇB·ØâUºàTZSÈC>Mõú[hMÈ}󀘟-ãºO;™Ì~y=Ù¬M… -ЫUoßçºË&¢³)þ‡*¶mC4¦¨VœÊ~izøw˜=°x{^³2H# *Ƕ?dEn÷‘SÕž!D«(§¸õ“¸ºÈU´‰R‡v˶®XÒ)€sñÞ$ÜÝáÃk ×ëó÷¶²Ž€è¬´"Ó8‘Z¹ÃÖ]R±‚§Ï#ú0Q'i~T±—ìÒxùKpýóÕyª(Ž±*<’ǯÑéÂY$Ôak7e3턱¯ê vY´–ï=[ûKß©¡n¿PsY~Ð)¯,Â#‰ò¸d…Uàž¿ª1ߦղ%9-ÓRµt³>ŠœwÏód$´Kðèr½v“mÍîí¿20/ZÓµ=x8d…ºÂw‡Âitç‹ (ú/±¬$>è]–Sm—¬‰˜ÞKŸˆbwÝâ¦%£‘=“’='ÀÒ>ÈZÉy\¿’q¥*ÙFÄ­)Šâ;RsQ{ý±µ¬|šTôè¿Žév¼ !&.’çî­YÙè¡ x€cï]ùZäŠ>¥`›Qâ.o]þ™,5n‰wo““Ô€…béÒMGü&¢kéê F[(±&¤~áæq7øVÕxÝH#mò§7G¬9Ì5jRl¤ÆàŒ^”,]n€µöüËpõO¤5GøÝrS“Fš³îÁH}Òáa'qQÈ@Ñt"ݦà@|¥×ªÎ˜Áò¼O> -stream -%!PS-AdobeFont-1.1: CMB10 1.0 -%%CreationDate: 1991 Aug 20 16:34:36 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMB10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /EUXRYM+CMB10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 40 /parenleft put -dup 41 /parenright put -dup 44 /comma put -dup 46 /period put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 53 /five put -dup 54 /six put -dup 56 /eight put -dup 57 /nine put -dup 65 /A put -dup 66 /B put -dup 68 /D put -dup 69 /E put -dup 73 /I put -dup 75 /K put -dup 77 /M put -dup 80 /P put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 119 /w put -dup 120 /x put -readonly def -/FontBBox{-62 -250 1011 750}readonly def -/UniqueID 5000761 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÍÖP -½¥í˜5ö ÏÈð l.×j‡…kPôØ úëPŒ—ø(?ˆ±~M;Àö^Ãyy¬Ü*f˼[âõ:­ç-ѵZ/¿îeŒ¹_[³+ 5{^Ýòd tp¾ñÅ!¶ûÕÇ~¾Ùd¬Z+¾ÉسäŠå»:cÕEwK’+_ö°nÎCdZy°2}m‚3…þUó@-UÓ´Hkäe•›U”ó»üRj¼z•¤NEß)§…WÑÌFý¢ÀÐ$ÎÛàLVy½†ýF¡™Ix&6_ Cl¼àþR‡%jAg £gº WMDÃÜÿä½WTÄ4ÚÁ‘ZÌL7 ªãçÀå¸{ 2(µs—•ô5þ,%> ë¹O‡+ÿ^‹B&…5»Û©Øà“?`²l§:`$  ¶\“ú3½þ°q6ŠE„ ÇÅN5<6EÊL2~œä(² 3q»CVÐhõèEu«ÙÃûšj]µÃBQ|Gûº`'Û ¼†x|ÔuMâ0£¢› -‹s ’za§q=Ì)W’)Þ;+êÿàæÅt±ªºA²µiïÿ†)ú>©Tç½ ÁÌWc(½å¿ÙJìöb° #Õú“›; Øtœ]¢Uû§àÉoMKs*Þ¥Ø÷¹}LŒO -g­¿5¬ÖrÚwÿ*Ñ.7|x ÐÃ96_•‡LÁÿMKÐHªÀô &Ï5åGn?ø$I©Á· Aýz¡ƒÐÊO\t¦CÀN -R’u#ºjˆöë«+]ü…Gúƒt¿Ñ1GÖ©ÚżÔÄžjat˜@Ú‚ªÔÑ÷)ÿÐ*DWÁmï6yQ"-9öÀ¼Œßf–fû{„’·+\2TG?žÂÖŽ[@û0·ƒ¶‚lxFÉàüœ^ÇA`ÊFD­¿7C•§@d0ù¶÷Œ–]õ EÓ‘ú‚ Üí;~ÚÏd@OIÍc³‚ç_†;ÐÄRy¨ðB×ðð(ÿ`M;ý§hUéÀ6;ˆÉ†Mú°Ï ŠUâÀÖb„_`µ=†“ -éìÂÞ¿÷š -†KòDª.;ÉþÍ ‹øçð oö;eÚZH, áE¸£E˜'¤3(_ÐXKÁ¤3¾|*‚Éá­ÿ™8ª‰û×ÎÊ®V2\Æ«8G/ªþäMÄ[È=¤*b¡â8mòŒ ÎàûÑ¡™÷ú -*åÙœù.¶Ä2BÍõ‡5n¥˜ZV2ø -îH—(9Ýv6gMõäÇ؈)ÁÀ7- ›óc.]ùˆýZÍY< -}À89AéCôí6]F‹aÆ¿d=ÕÖÞÑ°^(oˆK(̹"ê?yÆT!LŒB…Û˜øÓ1ä:(ää•ßìë©5IsÈÍú#c¿-™öQ#§¬ü°×ynkó$Ë(HêðôQØ0â$¨6rû“»Ã®œa#6JBÙ…(Ý–±Hk~«÷'æ™ðóªÜdÑ&!ªÜ× ÷ø]$:”>ÁeýÒøaì:úÿ|å2gÀX'}šŒ˜äÖàNÖ›¯Ÿîw*9Ú ´O´Ï¨Æ;2´ˆiÀ×h÷b¿Lº](Ç–£‰…ä_ÝOƒ‹(Â6|sÔI™1ië.gü¢».º)vžðbi5d ?EÅéI­*X9”î ïüqys8´¢ÓˆÍq@zÛ»t$¤W‚÷͵Æý´~è2ë¢ô]êãf*‡q:ÄZ;×iãa52ϼÓ¼=:ÉV·k"úì1…ÙÅï´j l+ðWœ† ƒßWQ6âI†ÍvÕ~K1ÑeÙ§Iå–ŸI^à~$R°öÂ_ÕþX×ç 1ælüàs6®᜕C±º.Œ2Ôxœ'Oìú¼(û¸"ÀPmSG¨‡×M‘ç@lK]Š„%"ðš„«=€é~æú4öñµx ~³eítÂïîˈl¤ŸlƒjE]ˆŒÍ²¶]Cþ&ŠX -„jpÓyÔ -Ç™8q¥±šm‚»me3ÝÝ®ßE®ó³Àñ•œ¹F··è5(” Û//dõõ ò«"O.› >&ëêy²¡6i *5>D¶¾ù‰ûÝD—|ÚSÑ÷ëKãsŽùâ+D®Š«›ó¤Z™òùö樒`1“5"®?ÄRk“XÇkëPöÚòDKßΡäQRaDî#±Ë›%Ûäžk‡Í`âµwäsÅ;cwÓ¸Ls¯‹ãá“z&†då£:M;EÃ*(SO¼Ùw6•ë,16´%ÁTÁE1ÈhT´‹Ç‚gÙ-k›8ëx-ÌeÊAÙ.UÎCßr¦§ÞCpÑ+û•>$ÂïLŒè–=I—ñxÕ2IÙûÁÑðh)eÙrÝÚ-Í I0“t‚7 Þ–ê¥÷*•fæ(Çó©'‚™ªK ^%Ô"(–SÚ¸¹foU'¹cÃ^ØaáÛöí¿œ<þÛ8Ç=k©¸þk‚ Hm“¯I^ð²Ò¡?GV!dÙK%àÒãmvªˆe•6¬…~OVª‘IN€4Îíâ)æÂ3½q¼?Z€lVºm'@9¾ö_èÂèáñ›K)C€•ŸÊìVÓß•ï½gÑ’Ÿa0ý]G0‘Û©ô¼‹¤ÐþàvÍ°E%~“)¼Ž# /6µµåêè{Âö~Û'áLãín"õ}ÍWq»©w¸ª\Fkw †3¬Å)^ã2Ù!pm†fÙ.€wvÅËQŠØ—?3‰•(1x$EÒ—ïú4-úŠÍ~°„…\›Z0‹p% 0ÄP³ðvÅF&É÷èTVÌxµ¾4¼/sªüσ¯¨;…e|5¡yÐàî«‘ §ç Ýw!NñZsU.?ÁÊ».òrü-gÞÝ·¬7ù¡×´5ÊJ…¾Æš–øÙgr'Ëšmw3ø—IÈ’õ¡€zÊ_ÎcÁàÇ‚|VUh…{5V^É4©êçü€öà ÔKEó“…åù y””¦ë¢Q‘H#Îõ…p¤GrÎdà8a}}Wno'„¬3—)Í1µ-qÛ”º`°‘¡ÆÁ."ÌðÝa>÷ÀV»Ý¶Í”¾Q6G¢QÉX#Ö½ NGk».ÆQó̽x·èQO^Ð<û6«Ù]Æë^õ»Tõ ùñ.5Ø "Á.ʾ›8àûÀ:™U·wT¿¹„vXä@§)†=ߟ˜*6°áiD8póGà¢d„%ÂÅZ˜Ýªç¬UO -ä,!MªÓk…«íƒh5÷D¸ÁR­ 3>ïê6E>ô>½j^RÓÞ,þ GÕ5Í>¾'½N39ãˆ;Ïí8àH C»>±´zĺîM¹N\k|rVÉwý5/*k‡Hfª d¡NÔû‘avçœUõ£ -·‰a^´Rz¢b{eŸ4ïYƺ?Ã;ÅnFˆ“€ ¸šÔUģZÉ«X©^ÊDi߀ïã -wt¶ ¥›¶pŽ„ 9È9f¿¤ȶUP´ÑÞõ©ø'H)D3Áà•ü×U"bFM<èæ4Íø+ÝðGºÚ'zL#¢™}#ÅÒX྄´6<˜˜D<f¡®ù«Ú\!;6lßÑ{"^607Þ[Œ徚‚…f °ø>)Ï“3IÊ?G³ÍzEõw+‰ç$"9Ý¡/KGºýéD?¡Çv¾Ž~6Zj»#|´‘,/9À×Ú4¯X¸I¨ÔBÍVÂõJš)ίJs6ò‰^a]3ª~”ÊÚYÿ•Vl°ð± › ƒp”oLcGf;Ä;>ö¾³¹ØY¿ñ|¯mÚÆxŠ¹ÇQ¼QŽ¿ú飺å-ŠñóûW-!æM—ˆ„% püh!È­ŠÎRv¼ñŸ2Ít»Ú™ 2-W5à]>äª÷2QKΞ“¬Åþ¶«§€塴ЛMÂDm7'ÈX8 ¹}æ yƶ’±l¹%‚Duš‘VÚ¬iÞW_8QGdé*éu—ecßSvŽø^à¯WÕT+ê—ȨK¼Î[]§Ã›E"ÐöQþûAë*¿÷Rý§UI ÅÇŽ³lDLbÉ,}Ðñì–ƒz¢Àû-…¿¼f-oȾ?¦¿U}@I3Sjªí7”¡€5ÿ¢0I™ÌDÁ‡Ør8»S"ß™Š&r¼»¯*Ò3ð^b•%D§÷w«5'«jýßêbö˜(;/&njv°xçËY¿:^DóZ*ãÁ&­5½x 7w†ªúº ¯ãó2¡ú…³k>]{/ùôý)K]ðICS"Rò¹è¶\S˜îëb²Ûœ‘_Ê×É(c õ|h¿~Àqø·šÿ,-Ëa`.Êâô`+°ÞÌn+`–Š™H»ÂÈÞü3ö걸Ðܽi–Çx6û`&U*…; ˜'HÉî›î'eRÚ˜ Œé³öÆ0tÚù%…ÍÛ+k;áîbýiØd¶´Pƒäð5D©(ÉãF0“,S¬üT Ûs<-Í{§A¹„>)aÉ‹xÐÜ¥ªÊ‚ó7å|Ä~­“ÿÎÑ ©(]]ññ<çA]p¤% -^h­Öèø®=oÜŠõ?@îÍ.×l©>šŠBWLTÜßœx·î˜ZP>’ Ùy¶nÚ&¾û6[ýŠ™­¯k«538¬Ó•pAÁ`…¤…÷§ -lYfè+ªíHeÊ‘l~G÷}1•f€/]8G£ðR YQÀë4²ápMƒ$Ðöp¡6éK 9vú,.¦kÉX9ùßÀ"2úZ}5³TïteY©ß”;{TŽdB˜ØyäS:JnEÌÊïËÚ¿³<8æZX=Z¸ã-“@& GX[žeÖ -¹À÷”xÕî° IÌŸøO@6ƒ«²’I÷-~ÂÈ×ú:™ÄÃð!$l9X½:›é¼°û±e|y¤þ"ZÐ-©Jþ[• ¢~Mõ =+® ½LŠ\×HZ×þW{ñžö›—ü7yˆ`((kð*z×w›óÙ§~„+¶ ·ÁëÄ'SaÉ ßÈúþ {ÏãŽ6ÁYŽ‹8’åe˵„¼äùw*çD±g#Õ™Þ²ÐÓÙg^L@÷(‡TY•<ÍŽ{0PûÃZ1 ÿ,9 *¸ÛÈõE½Olr;5êìšÚâÌ55'pž´Ù‘{ð+ËjD¦¶0ÞÈ@¥„çÜQ«)~’ÕÇÙ,…"w[y ;¬§Y}èá)Ú@JˆÊ‡Lµ¸±ûÕwÂ\Ùâ -¾mŸÅ/¢z¨7¼ˆfud6¦J4ð¬E›ùWp$ãL·(n ×V‚Ö³Fï_m0‚ÚÒÂŽÏÁ‡)¾œÚ,~Ïzß‘ißU^v覶{{C¤5àG1"ôò‰­›$ë²HR}Y:­qú(á ˜z³zË´ucGKóé#œí(ªÑæ!– Vv\Ð2«‚˾¨¨Gm]½ -ǽ«Ûó>߯ȡFØÑƽIˆÙ -åñ€ï·Î´;—äôƒôÌí»ÇBdÏ–ŽLçÞ9ërö‰˜C`A9»õ ŒCÕ×vÉ3Ì@¥4$QßtÕf©š©b^‹­;ü*PÈÈ)±*p»À†7Ží}ô| %ü-€7Åcĵ@™ >Gü$¼k"ž×1Lâyª¦= ë•þgô73Ù©“ðœ[”aV ³¼kÔÐY|ÐŽÖUÕÝ ÅäÓ`!&¶Ï¿×.RŒÖ ‹Ð@Q1lhcs‘3#ìÕšõ - -· ††ú„ï3*)L˜Ü„9“uõ†²µme ÒuÌ7:Gè üýªÙ`–Ä›ÝüÏìÌbØJ¬V&Å06-{sÓ]ò·í*C–3§\“ÞûÆ"^(ßöþ·½ÎÁcLwÿ"Õ”n÷fyžsüp0 -·§`0þ&y -"‹D«ª}Pøû‹½ÉBºJÏÀB:ß>:}"Òý¥8 dÎÏ+ÇšhH~Ý6ÝI¡÷C]áÑ% 5ÎÄQ=x¶»ª–Ìzyk‰0™?¥;c™Š‰Ë§#š†wÅ­gJ¦3­A‡1ý2JŠÕhŽÍ2k6QwÈa&‘Q€æãÛQ@‰£¢ @1Þ³]zÿCŠ[+¿+jœ$‡^a;c9O¤;&NI›¥=ÛÃ`¤½Å‚½5† ƒä•íÜ2vÚ‡èšî°ØÜFJÁÎ,g w8ž9ÿm’ã¾°€NÔÑ(¦MÏ4!Òwÿ~š ž¿ô$£c÷ä^ÚN^›êÔ };•?iÍÀº4l6ŽÈñ:Œ­·R«D-®Å¦rR™³àšç÷ÝG0Þ6\RÇ-ÍîEQ*Y«=÷Ì{«T'='¸¨ïðþ/4ÍÍFÛ‚$|‘§ÏÉz™Õamc›ªTµ¦·]ùhb"–Ыô›üÃjÖì ½8ï‰lÂ+A·_$y¯°„¯d 9Þ}1[GÑ0ƒ¼#ŒºÍ÷,l|xUP|XŠ©~” ¥Qdûi›¤©—Þ -©"GÕ¸³k/ëÕhë%Þä ¿çlª–ãÔÜeéÒÆÁ÷xiÎKHÄ!ve°!¸UCwù” ’ã)ˆûàÛIz$ºdÔð®¥1ï°œpº\tlZÑ6h:ì¿°^ü‡LŠ¡ÒR°}øÞ6f6-æ4°¤´ÛtÁ}ò÷nYFn¨ÃXéwÐæíÓj纸p‹áò3¾6xH¦>€”˜,)[5¾x¸gÇÑÞþᮂÐð¦{OTÖÿ³I{èãjèÖ¤H´ò&R¤[;e¶6êÇÛæ;ÏŸ6qb±M­w-þ›Õ‘Q˜%ôß<÷'c®3äðt· Œ¬€~cë `q ¸×*pà•`,Ù½=/Wh¢‚êFí8V¢chAÃ:YRôZi^>Hþ‰.§ÔùYˆ0Rf•¾§q’8IÙype.,‰þ’Ý|Ìåö’Þ#õ”ê–,6Ä -˜ö£âAÉ‘š ¡Ö3ÒºùPÂ术ŽÌ$3Ý/¦s¡\M­ä¾ž“0Bì/siÙ­¤ëÆ$Ý\Œ‘v"¡ƒfl^»0\«÷zˆÈçBIPœZÖI"ëH‡GÍ„ÓT¯ÝEÝZRï¶~ÀÀ -1 5ÝûXÜ%åÍ2Öy¨‡¡3Cß^Z4A°FmðÌ¢ï‡9Hž1Ïdé]f ©´˜è÷Î ÔAm¬Ãa-¨¸•2Xì$¸¢ÛnTf’ÙD™fÞó®ô ™Øîžå§í©b·¼¥3¸;~<Òˆ cªßGŸmŽ¤BAÉ-’²Vê¶íôX›«`»N)âç¡à¹ †7Óµš8Œå<99wH˜aÆåø^kß:”a8§}æqOÀª¯ FÍDXÊ,<þƒcf­ð%2‡z=#¹sQöӘ갨 Åé‚=#N€ÞÛ6‚ÁlÊ„œLeK½„ÿG GÁÌ ƒ_ÂÏn´š½Ïø)rÏK[¾n öÁ̵ÉáÛ6JK(xßZ[þŠ/œFí¯gÇÖú–9£¥ð,WõÆZõŠKŸ†5Ì}ÿçÖ`l"­%ÉLjO‹5ìM8êŸìãÍ -Å`v€Õœµv@ð¶OÇ¡òUl±`‡ÑdÇ…)Ñþ0þBC¸Ð½¯­MË‘píg :„g5XëØ­­!œž¼¯¨W‹/Ðä’Ñ& k(ìÿMíîJ\“vH; GÍ =å¹È*…ÕƒÉmt¥xàãä~×^6¥aD|nÉsŒ­¥ôÁñšÙÚÜÄG“Aʧq‘ ÌÌ9Îaÿ ?µNÀ!õ²X‘€ ¥œGÜ3ᦺ°ð¯Ë4—½HÉiê¤þq¦Ùrã¿iÉð4Ï¢}îñåxäÍÇE C§! EÖBè?ÁhD Ëq6á_É{%-ZšÄN.«Øµ£*ë¹ÉL;ÀêÍÊ’zvÒtEuƒ>l÷.¦o“=Ðù9ÕÏ‘ÇøDÎK ULá÷…¸›ëÊë3çEî]Žr„¬‘žÞ ÊBþ‘K¬¨Ü“Å&…~á˜Î†ç³ýî#”½Ñ¡8yG4Ñòd¢(Id`1ßë¨À\pѾÁl‘ÙŽò*aTì£3štÄ%~®½!Ý3YìDg|ÄÓÎA¢“7Ĩ¾µ Ý6,‹påª$6ÂÚšA·è“h!!1¶Ðì§;W±ø“»Š÷´¹f£Pè•9³¥äJ¸ˆ‘$N[ -¥NÄòצÚø6­Û‡>XšÚXï ¯¨M@šë å;u&Š»n ):Ô µËN°Ùn#8[>€#"i·¤udž”.¾¯y¼|ʦ•©Ö‘woÁ¿¥¡éµÉMJ‹bkmga±=¯‚âp"ÔMí•jXÁ«­7=0pwëZ`9®1Ù“ó$ øLÙyÍ÷þ%ðMuÁû`w\9áõq¤SAC"ðv1EqjÖatA·´ŒY/^0O,ûí)¿ð4*/+­¥¤ÈÑHq“i'FàâvøÖÉÜðp]oà¸Þì‘eª·¨ÐÞ~9ŽO ˆ7éx8Óå³^òú% ‡ 9’÷\°:´°ȳ‡A¢GèÏZ;\ð!±­M¶ìæqýK9Ù2r”ý¿ ùØ™ -qgûjRÃ9ª[Á[XÏ»7}ÝYõC;ƒC/ïjeÿŒôu¼xÛÑôØTµ1Ó[’¬o>¹ƒúÑöÎæ‹ þDyô6ƒÃD‘ÚVì÷82·—™D†NYzå”Ibi†œ&s´'ýqô<“9²WÏ^{MU¬(‚e|9ôÙŽu/S˜—õ®ºzF¿–àÀ/,ùÕŸ—f$¾ZYPç°@͸¹ô,´ ¢‰Èx¥¼ãøî8W‡‡ø­*4!èD¢€úñåï¼D½jÊ“ç §å«Ä´ˆ -Oô¤ûÀæ[ÜU6‘ŽÎ×O½¤L•cŒ‚• \àmwk4Œq}}Vl«¶j êb…œÒ1nnÎbÕŸ‡ŠY­Tõ¿*Š!ÒaŠÄí©)¬À©Ñf7è¹»C†9–™›Çê‘N8îùeòå/¡~}:F‚ã\æªhwL Fsòα‡ŽŠî - <‚M2æV¢d ³±í·z_VúÂó2-ÐühÇ_~¢„SÌ×Q -€°@çÃýƆ -|fñ°àñÙ³½ð [ "ìË-¶JöiVs„žù -ÚH¸UÁ»Ah0‰›#[¡óUõ —|ü’È` -×Í -AâR±X|G‡2°FEìhÐ"½@–ì3CW*Vß>„ƒ`kÄèÀ”|¡žúdšUó'…°ísŸÕêd3]º ÌÜæ -S -v6՞ɜ€ú\êÊýƒO?¤M•FÕÄÓ¯ø¦n’5Ï9xTŸY2PÝ9î¿„÷!Ü”«qf[Û(sZz@q èy'„Gu4~æ?Ñ£dæN{û-"#}/ÇôW•ÎàšP…Wèî/¯¸›ÝnƒÌâÉOÕ\Ï¿åíÄeˆmü¦‚ÄGÕbá÷OC™Ärk-hÐo’†E"õP ãùMãnUX<´u(þ¬‚¬BVWZš`ì{öÝ |ƒœ)4ØéFv;\ .ÂáÕñ³FËDëçæ­nB.ëüêÙd¿uE¥†—w×ñÚò¹óŠÀÝèÛ±·gÛ^¤òÔ~r ©¦E£J÷\Òe"„z)ÀésR U"`.§‘+Z¦/„Ë%ìKgïªá'pFü…d¨Ì}qgóLÃ@[ü‡†:¸—ëqŸtEà“ J’½ÂJYR†³ßƒ -HèúÃ*z­,pøàœ:0ÙÕû¨å‘—OØÔZ L ŸCp†Au}±ëûe$íz=ˆÝÁn´µ…¦¨>é›^‡ÕuÌGC?°X/Â)“6xý‚)D,WûԤ߸É`ÿ ÁÔY6FnwK"û½Žö÷_½ðS’µJR¤¤‘kè³€˜Ô‰~6»ÿ^Qÿ¤ÓQüo±ö²Ësç í‰èµØ38¥ýÚ±I]MÕˆO)näØ)BE5¢7oÅ2<ª¯énêl #_Äažª~ Z¦Q¡ñuã2Z+ò-ÅQÝÍaå~ßÀÕ¿ñ´×Áƒv¿V–¥Ÿ„[LÁ²}·—GVÍt‡Øob•Å/êM³@ƒÌó¿yÈùâ?jç~)en4lÓÕ€§?¹÷aÕ¾—ˆ­JS«S¯oØââ^¼m»<0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -256 0 obj -<< -/Length1 1534 -/Length2 8105 -/Length3 533 -/Length 10172 ->> -stream -%!PS-AdobeFont-1.1: CMTT9 1.0 -%%CreationDate: 1991 Aug 20 16:46:24 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /BBAFZC+CMTT9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 34 /quotedbl put -dup 40 /parenleft put -dup 41 /parenright put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 61 /equal put -dup 65 /A put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 73 /I put -dup 76 /L put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 95 /underscore put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -/FontBBox{-6 -233 542 698}readonly def -/UniqueID 5000831 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÍÖP -½¥í˜5ö ÏÈð l.×j‡…kPôØ úëPŒ—ø(?ˆ±~M;Àö^Ãyy¬Ü*f˼[âõ:­ç-ѵZ/¿îeŒ¹_[³+ 5{^Ýòd tp¾ñÅ!¶ûÕÇ~¾Ùd¬Z+¾ÉسäŠå»:cÕEwK’+_ö°nÎCdZy°2}m‚3…þUó@-UÓ´Hkäe•›ˆ÷m÷‚LZ³‚Äá ßèV¶óERÊHÂKWÝ„HúÂWÄÙ?±"á!Ók™²×­¸¦fï›çx§¢ÖxàÖœìÃb2®‡¡r¯à•S*Œô ÝJ_϶ÌýsÅr#4à`œgCîey‚ 6|IšÁÔW`ÀÎÁæ~+ër¾m(yT~Kµ$e·YGÒ$™‚#'Z,4 -ÀC(Ì)5Å>âr?æ5z)†?lG{> t+0¤Áï«2MgƒáËǪÿ© s—Sx¹Þ¼Óöª¶&£a¾€hÆÝ +䧻ôï¢Â6¿~%VÁ{Y#×°üm_êt@aG@§|Dky-”VBJ]Uº—ù}ÍÕ¸9ö! RÑZfaÓ¬'džs$íèƒX›9åÑRy0 ËZëg¤MÐaGãCkÛ²‚Î=)£±ßÇ+ÙBøË3v´á,ÿS§“Ù54lë*ü4(Í“Æqì%,Þ4V™š¯tªP…Ú£^çSýÂÇØ>ÂÞÚ«±¸›™äËR‚œ¿´Z(okó«ÞÜËÜë¯i”±à}ð ºGòûöl`(& µ¼<»½·¼»íœ2#6¢òäùT ]HyÓÙvâ„ŠÜ…·cÃTè~¤™˜Å × w"Uƞ呼6På"†æ÷šÖ2Þ9ÿ›@÷%øæà+t‰)Ýy¸ü.{v ªðŸ? -Å”ˆ°ÒÔ©\%΃ -R#Ö¦4ôq÷7»!KÖ±†|ÏÑiN†YZÂÓÅ×ïüÔw=½¸BLtð &SY…qÃõÙq&q èµUüÈù¯Å€œÇîa1æbãÓn= g¡ˆ´&B›DRÓòã?¥4<ÍÔŽ01‰¢WèšÓÑRo³÷²$9g/±-Ì8’;U^Z¸Ð§ðN…–ÉópÂÉÿô³ðìï0À/ËÓ(ÐúkG! xìÁýÆÉz~)°qTg",¿Ìg—öÜ9jÂw®Ñ¯ã$ü±¢Å¾¬§JŸÇ%5g2جµØ™*åε¯V«¹NCšá—G4·¬ÿ]²RtÔV¼)<¤ÙFFüU šbщí_Æ7dŠ'{'ø“3QÒÌu›y4õíOö0²î“–¤(84#>r ~ ä8•G3,Ý] líøÿ=™?VK~vžÍû/¨÷3Z/E1¤úv]ÂöàÉ·ºÞ!ãP¡ -öMw4I"Ou½ýçvºâÉ„ZÖ¨×q®Ó'žK“ÌÂ>C;KX5îA•pÚ:µ[ªí# Q²KÉ|ˆj!8œ S„SÝîü ­ÈRUÙ×r¸?zžû.¢p¹%BW÷oL\Ê© <yU°qõë ®,¯:îÆüc·6ƒ¹s_Úò"º0,U˜éýðîOtÒ”¢è @T]?‘”ýÏ‚é½½Gƒþ¨À­ ÃàÈé€ù"u9P&ƒP€ˆõ–K÷&ˆÈO;}å‘ýÃÑL–5-‚œM“påCû¬êôÚ^FAmî5ÿ¹G§nXN Zù\).[tþ€ãè÷ð@;x}q¥äw ³Aó–˜2"OÍ\Ž†bÛØS:2 ‚f#ò¤OPúO£kÍÐO ¶uSvzÖsáHË'”ΆTÇn™îߘCÑ“ŠÕ¨¬^ ¥5"@àÉDÃßsô8f•OÔ®š¬XdvrŽ˜Ýà»&E%¨YsžM”è»'a0F…×þöeèæ…¼¥¹~ìöD1¸´2aÔ“zü%ÍIGÎh®ºg ˆxô•q\·áÉx5 08Ú_¢ÏŠÒ¼Èt¸HÖŸ5§ôuLæá.Pøø¤™ã°«3«Æ#×^³Û“ºåg©I;ÕŽ£Û‘­h7q]᤽sCñ3´àX4ÞLÂ<êT¬xo‹¬Ãeùuc[eM“g˨Ê)c#F¿vGÜuÃSЬ«ô·gò -@øé1Ðçá«SËïºúè¿ œKËÈÌ1Ä¿¶SÊ6>°cv´ª¤=l_ÆD!S'ŽW“ÝžÿñÏõ†Ò’O4HËþ‡·5:ëåjçhýe¯»9¢¶¸¿Ü’j‘%·RIMÎ2>8b º¾†j’ºªâ)Lh¯ì5ªßÁ‘‘'ã÷8€PÕÂŒcÓö2@ãQŒç’TÀÙÖÓð}/o”‚yÖ¾Ø^?Ëæ² -‚Ôs&Û÷ƒ¬É3¶¡>°.O"išš5|…éîhƒ%ã;“¼ëR6.&HzD‹ú ”ªÓtø×£¿˜.âŽ]x3 ¢óÐ.p®QÎT:q÷ È®Îc«Q*\zG†~u„i,öþ¿> ®`?2nÄþlBÐþ Dé½Z%#-G¥6 "X‰à(>|晵lxŠ|?‘x²Wݾ»ƒ°-WM„‘·>£²' @d¡ž¯~l7!nntΩë\×'v7ß¼UªÜ‘/·%‡¢bºö rL¯ˆÜ/¸˜…_˜@J2þA€v -Ø‘É>&/TÙ'xiù •*«&wäöÍßBb £E -(*ÐÅÛÔTEݾÀû©_Qñ¢ø¬â=LÀŸÓ&i˜‚.Å|ŸM—_D‡ƒ^£¶+Oæðû4CùÖ%6»Gpqwkn>žò.kÌâ\1²ìÄä[J€ô†!çÆÕW@ðW¿o”sW gv75Ÿˆ¿´,ɽ̄¾SyUuÓN¾éëÔG°-Lónv¥p‡MióØŸëØU¾„¥®UàÜŸHĬÌ)p Å$20#F å½Ñp/Y±[=á¦yäãb̧ìaC@÷ -³q°°÷ s-³FÌ<©†þ€[é]'ª[~'˜¨E'l¨§çÁNJng&W!« :}ŒM] <.¡âð§*°Àt¯Ñÿ6:†QßÕNnqtãÖíÜôÇi£Ø¾£À·2੤ƩÔçÈJæãLi:à!:¹0Á)K÷Ð8sø'ß&Œ¡d) .li?4~”÷Gz¶Ó#Pwd°]Sq$Þ=ÚÄrpÔý,/În0ïæŸÁ¿¿¼‘Èúg"*ïõ<Ø(xtà®üh6!]ÔšÇ ŽNã\å¨u1ÅLÿñ6Aȯ$þž 礲†ÚãgŠ¬W9jºRttvf­ I¯¨ ¨èO¦9jf9!Bˆ2ʶ³=Å€Äi˜2õ}µ«Ë1ϪáXuzÑ8—…å¹qu:,ë¿ÃÀiȪó©Ç…(ŧé½÷¥ë¿ÊL~`¶äŒ|± ñÌ<gD0ôkØåxpO=ü"§§~MŽ½þ$;©ûØÁ÷6(C½ÊDЊ%$ÍAê‹ÂYé˲/xCüW)ž…ð%ª ©Ïafüü5ŠvÝ d8ä’7WS×µ2Ö —S‡„CúR]@GéVŸ5}ÖÙfo˜!Ôºnø™fFòÁÀSp w°eÅyíy{Å°¦ÊÄZÒ篱ܿ˻½[q†ˆ^â©9õÄÓÅÍ;,Î`Ô‰ CvJ¸êgÜà(ÕŒÆUÇJ,:еâí0z¥fÊc£‹ðK"n„Éw`ý¹Ÿ)aQCʼnËÒ˱ vƒW>‡HHC‹[ ™ê BlÃáLeã,¬ÏpžŠ›¥o>·*ï/¤Âô¼Kéð 1D3 -kü‡°B ÐzP1‹XÃ’]‰bRH„ùò58õæ0, -¬C[M¨ÝÕåML6V?(e°£iÒáî$?…åjÂì=˜CœœüÑú3Ž¤b²ñ>£í¡Zyàz1Ÿº 7&–ÍRá o‰Ná°usk5“}¡*¯rï!á÷r~õB>‰›ÙI(¦lнñœ™öËËFÒâ„â뮆dŸåOÚÓnû*íÈ#Ê{H¥s‚q± We&*é ²#;Ûi€._^€Xf¿õ~"`]”k Ò¤ rïÕÇx½Ã“ +‹¸í?f‚ìBÿr; ¡•ü™TsOÈ|€ñm}–oÃ}y -aŠm9báÞù¯ÅÌk†qyT¹uk˜rÍÏl 0½°<.Ý3È\Ô¢[•c›ÛUÏ»½ÆþÂɇ¼±Äˆ»oqè$\ëL‡9¦éwa×VÕÈ`Fø»½*ó`¨‡†¼‰à`"?=ÉEÁt–«_íð¾ÛÅzm5C4¹¬{”Lk •ÜÕ¶)ʸÏÁå}VÚD¥¬ $¯\í‚ß^!ˆ—› ¤¨Õ7Ûžrk%€:˜Wâ¨?¢Ÿrùºô„Ú{ $‚Yæg0¦r%÷!xŒœÈ”-ë÷¤k¿©!­ˆ“q”åº: ·Ÿ+Ïúæ<Ý|¾@þ 1h! !S Ó9äa'œûÄ&T*ÞϲWýiõ¯¯%ŠÊp0Ž¯&7€Npƒ •ʬïLû:Ø¿E{1»„oê¯åCÁ¢Ë;PÄQÊ%K!“‰,úøÇ"Ô ÖIðQáαoŽÀ傳T{8ac›±qLë)†3³éê,F7ƒCd6E -=–¥™wO-_§7±3PO«.a%cPMkäÅ0 Œ,,ªXœ«t`¹Æš˜¨çªãà0÷{÷ÌcG71›½ÑHÑÄ»±ççy¡¶À -gOÏÈh«Í{aÏv.ÁÍœ4Ðø›Iã÷|ºã^QlþÙLçÌ;õŒ‡Ü®$+`Âl ¸Ù̦†1s†ß þ[Õ®Ú„?œsš¥z’¯ç§‹ñ7qþî‘´7é½®©‰1U ¹öúÕ=°AÊ©Ž¶îŽâ…@l ¨›VçÎ#þžtëstã!s«.‡ÆóŠf¿àøë¯ïeXuBõ¦Y -BjSÿÆÝŸW~? ƒ=}U·ÎÜïÉÎû5ø­Æ†ôäË5±uw]ýoo¼¿¯îm„öÆykÓÔy¶#E* -’l½wTûÀÑ;ϳJÙÿûÒm’Ð"1¶®ý”‹éö¡ÙaR–Oø$lÖ`LÎh%÷¹þV[•æÊ2Кå´`©¨”næµÝôL×Ë”q¯šý°5øQ Ò!m —ÎÖWɲæaê«O¦Êžî¿úy™M"!&²™¤:ù^¸(PÙíZNjcÅÀ”è9Y©ƒ?Á{*à©]f/ ÎçC“Íc½®~¸&é]ãá_59¯÷¹|†u÷é]Z®ù/:ê!gºrIýÂ1¼Œ•Ñ7›ój p¦„éÔqÖ-¨¥„ˆ6j­w®™”_ÌZe½ 1q>ÄþÞ ucØêv_£I¨gŽ]gžˆ} ËДþÎ,ézÌïV%®Î¦;µùXÁ8ˆá¸6åqr±_%/>þŸ½0Ùó‰ûSWjWÇæÇáªÀ:,Ý{ÏVÎN—B>X„±ÜÄwô…Ìû•3º¢%%¯c Ê¸\ |¯í†+îG~äêÓ¢’‹³´HÏ öø+$|Ñ{µî ! AêŸƒË cŸnçÜóD Ïk¢“<ÑIÄ?¤¥èæßô %Å' /ìq¹LöŒjãÕÄJ8¡xVw7ªLìË"nO£&Á¹:­?q~É5ª·†‡Eäñ##8¥%R -¢ñ03kt´ g;®ö¹Qr Vy¨&„Ù!b$•]“¥zItžŠ9æzÉ%>/I/‡-bRå.OõoÜ TEm%½Ð½¸·Ü9r­ñHÃ^'RäÏAciÛÿ&,Ê™À¢fVÀÖ"œìð–8‚Ïà*u±e ëœáê·ÿ€—]~ÅÙÇñbcë^_Ô€‰M4æîõѨ‘D«™èyû‚‡^\ÿhoꑺaEcKøK¯x>o¬.&PÎòVS.Ù­|ÌZs.5÷ÔxÿâÒl¥ÕŸ@Z …I”sd ƨh±§¹»wû:›tTt*ðÑý»ÞK']–ÆåÐ@)Þ{«•œ áðY5挠(i.~CÀš ð*ß©Ú°…-ÖFæx3jsaÃÈR—´=ÄÝýr·%µÌ-dsÏUјè†TGg â£0èc! ¿¯Í~¢VÁ`~ú[m‚UŸoõ< -@)§œçËf뼕VÁáíå3v1>Ç#º/ ÕZkqTCrûÕ`[hŽØk{N˜éó^÷yz$! \†Ñ”‚jQ§NáÕáh<Â:ÝŠuóù i¦„‰®1¿Ô„ úÍ<ªµ>ÜuîLq ¯‹k¢Þ~óŸÅÙQûuwµÞ_kI†—GZp&\P_êL`›¡aáÿôV[VÛ{´Dà üW,lØ8;6³æSa3z·[”dƒ“^vÔ¶ÏT:+¸B\(á¹Pó†ìåŠGJ°dH¤)ÖÜ~ÐúÕ,¾×õbÿ!ŒÛÑTϦÐ1r<Ìu÷4»ƒ¾°g ‰õ¥IŠÚÁí‚ûTëÆy¹ÏîØíÀ$Þ~%ïO¾ÈÀJ&‰T³åÕd+n5î«Ù––êK¨ßÞmÕ9b*ýd+ ü£…†&åH^ØW0—šµ?%'Ŷ)”ÿa¬·´ï"®tb<ío³ŽU-΢†àœlCh]lN®Ž+P ¡w<¼Í[¹Ð¨C*ƒJS¦{|×ÈM¿«A/:$¨ŸÅUsªg“}ÿ¹6îÉoNÉ*É7WÏ|Ciâíî`  n KÕ;¯³O»;ôu½Ÿ5khŽÑør1rå' S‰þª¡ßׇ[<û± f£ƒ­Ζ™¹µ1Ž´ÜX<ÿÈì@÷]zWPëh.Ô\Ø(^˜îꢃF4[·Vï÷7|:ʸZá¨:@‰ßI@.Ù§cAù‰Ì4’wh%¾GkÓK%©-EŽØ„b¡©>=û”(ÅŒ€?a½þñ`áæáÒÌeìì[šK¹’qŽ -¢¤FxñÅ?ÉYé­nvD, â(ËÓDÎ0g¸ Á‚4/y´âÚ½oB42Æ+nJnuÀxÚägÓ]E2Êzeùª‡u†Wm/:<±5Ÿ7˜Â4N eIS´æ‰#Ê…ÿÙ£ƒífºßÚzfÑ(TýNÖ_"°l˜\þ°ó|º³ÛgOTK"ø¥‰9,[“xöÖ§¸.06Í#weâd˜Â—݃W(‹÷6yápE…À(ÍRè1PvodÓÔÌ?+“¡©OG¢='MfÛûÐÿtä×iâŸ!ñ]±kh¡MŒÀe™; nñÁ¸»@Éæ}áÿ²÷{ÚËXeV96‹ž¡Æ,‚ëBN ¢/—)<0ù£à[˜‚½´WSåñßLª Ü‚Ô<Œ…ð?›¹Ã?*°ZðÓï_i/È,‚£ªµ½š{}66PGýlº™'»ðºþR„J=Úd_E‡ß@çœÚèFÙ¨¿Y!'>…‡oaÀÐ…ªÎõŸþxn’1ê]èúFwÑ—]å/íïðI|ê½RôŽ#ÈSNÔïXË3aM¹ÆÒåºÙq¡É{ö\2+V÷¿l#˹}©S› ©–»>SÉ ’>jÐ¥óªÄÑHÚ¿0Z”ÿb“²H|BÖ>î»ÿødTIû×EëÖÜçâÅwbmRCŠ &éÛïê7ŠÍ^Ž¶½c`I¥#µ \$û -ù®!Éë1rps]È'ôÖþÂ飔u?— @ÞØÙ"Ç¢ój‘®›­Ÿÿèœ ø‘*(Ï\S‚¡9Ù<¯á#K8õ‹ iWpìc’µ–²ÚI/o®t@Ž¡nÅ0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -259 0 obj -<< -/Length1 1886 -/Length2 12514 -/Length3 533 -/Length 14933 ->> -stream -%!PS-AdobeFont-1.1: CMR9 1.0 -%%CreationDate: 1991 Aug 20 16:39:59 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /GSDFLN+CMR9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 14 /ffi put -dup 34 /quotedblright put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 44 /comma put -dup 46 /period put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 91 /bracketleft put -dup 92 /quotedblleft put -dup 93 /bracketright put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -readonly def -/FontBBox{-39 -250 1036 750}readonly def -/UniqueID 5000792 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÍÖP -½¥í˜5ö ÏÈð l.×j‡…kPôØ úëPŒ—ø(?ˆ±~M;Àö^Ãyy¬Ü*f˼[âõ:­ç-ѵZ/¿îeŒ¹_[³+ 5{^Ýòd tp¾ñÅ!¶ûÕÇ~¾Ùd¬Z+¾ÉسäŠå»:cÕEwK’+_ö°nÎCdZy°2}m‚3…þUó@-UÓ´Hh[Ý ëÕçÂa2ã:Y§ Üô‡]<žõ}3bÙòפ@»i¿e3d_ôÐð5‚ù¬í=ÌvH›ãúŠD`”Ó8°nÌí¢iòê¹Ñš™Çù9ùT lZEz' +‚Ä; üUsFŽª>zJ2ø(‘Ø^KËË0‘Ò€TÈ}„Îœ­hiµª»¾Gô hy˜“Ò+vR•áæž3ª‹~Ù‹¤€ÎÊ‘óëøï…þš9v–&¹ZÅ” Sù°"ØJDƒ{¢^Ñ\Î PO3PeYO;È$T@u‘ÌËÏÔd]¦ – “ñ‡°Ï{UCÀ·‰¯]&Kln:æF¬ñE•ìs(!ãæÏ+Íâ,ãíöÛ#QdB&U/ôG-t˜òwhPÐÐëãÇŸ™ž™µÀò.®»Ùw‚±½‘²¡ö*vA%H­SÀÝAJÀðqÂÂcÙ­·ZF!€>˄»#[b e‰„²ØàÄc~(¼ l‰5¯ÇAá²ÙÂ;Û%0K3xúø’‹Ð–†ª@û ±ÜHÉ–ï‘Sðxfo­"z5‰õ `Rg!-:eëÁšŽìš9 yGáP\eŒ®2òtýÈÈwK TÄ¡ÑphÜ°ÂW\V/ÜZ!v`›­š,%^BjC%¤ü0Sdz/5÷»ÉªP_0"3`ú/¿’”±Òœ^*¤‰þ†á¨y^©ò Š’ÈE¼P"q«q¦áŒJâñ -,`1 þùêþÊ¥þàü?HòiUõ€ŸŽð¿uÇî6çH(XRÐœ½:…“‡V”ÅQ‚jSsl( jB¥”5’¬"؃{Upéox·†Bx4õ1ÃEò3«ä:ÏSÍƽûõWˆ¼ð‚hê=" -á-@;q…ÃÜÁÒñþ缦°äëÿž¤óˆãjÉhʶý½2!À!ÔUš9mBLº•¾BEGž4÷AmìïÖ£5&ñqVy:Q%n2ôPxR=¹ð¤xnËVÄ:Š6{8’oo·#„œܳ¢~çÀ?ªhwéèð™A©v›¯àû¸÷WµEŠ1ü$–† cÏB'i’bè•Ñ&$¹²ÿ'~üúVM#„V`äçµúÿc´:Î*¤\ê.ƆI›ŸÃ‘6¼£C¢ƒêF†×fçï]ÌlUDÝ°®“’ÿ‹ìÙJµßõç †LÄ#åb%>GRŠíUKÕØz@ç |óÛÜ„Щ|, `’‚nüÙßì²½ŠóÈZÚP°ÖQ¯d. ¼ 1û 'eÊ”0`¾ÔÊjJ&š£§+©‡©¬€ûu'cé4 òßÛ`;Í/:1?¡¼òôYRÈÄ¿i©0²3Ý›é¼ÈÏ|´«µÊø“ Y(7vñ6–)%wŽdżîGƒýQIy³œ 4q(\¶% ›–06;o’ýàv´z’kþ9äð×Øû”ãL!V6Z-Þ’7>}cÕ3,9´uýWJãx¶†¹ôüò'„y‹Ë2ÝPý ´¾ ›%G{·¸çà {x7DÌÖw™}Ü>9JYE‚\<þÎÓýVxÝŸk¨lM|m§6²ÃÑ ¼ßõ(V5)°ýCpBçÑÁˆv퀦ٯ ±à“ÿƒ¾œ…lß63)£ªÐ®rKä ø´—¬´¼uXê¨ý6ßF¾ÄA¹$ëQ¬$ÕH’@Ï/gÒ îºiŽ­ n;HTÛóYN~XPçQÌ4H¸÷lœip†œpàÓç"«ôUóZÁݸ Uõò×Ç¥Œ×æÐî$Zæ¯ -×ÕÓèøòsé´@Tá0;Ð22c-… "’®³>9°“ÜUR™{†˜#>¯€{-e»üWKÈèÄðº|]'æ â­æÕÊÄuªVwYK„?žz?‘ñUÞ–'…]Iâ]—y´õ2vït‡p]ŒÐá<=Üö1Ö¿Ù‚E…T)×@UUºÍ„æ&„.¡·­emKj«'>0Ü –UR…‡÷t7Ü|чÿowE!pÚT@þWžscGn’Q¹|6?²~%"‚`u5Ùç_Añ£—5çh©¨¾(6ÌR7¸¶¤Ê¶Š9û'Íp¹V}¼UŽÚÀNÄ=‰b}„p²íß#Û·6AØo–ùN~á?"°qiómȵÉiÔ7$)5ÝIˆš¦êA¸öŽJ:{¥å{7¹v&þÉ‹´…ž±ôÎgdLü\là‹_ný¸¢?•l…*æIÌ„¥¢y»3êó³#ÓÚ¾ã6ÞSÒ•[ö”ê>Ã'O0“CO:¯à_…­UW¯£û}Y(!Óƒô€{åñ7 s[wŠ M!»¸÷ïb™ê”0!èFYšIIÝ#—ôA’HC°&øWú暇Z¬"£ôLKƒ„>æËI!k¸­Ô¨Xû9†‡¢‡¡/›S³Ú$"KÊË-n¦8ýÓùŠÉðü/ "^Ë2«l5$8Ž¦¦¼‰ÌG€N;AþvÄit AWC72,S@@ÂÛ%ÚhoJ¹õ¾ë·viÇzOãW2êi¾d9+o³éšÓØÇÞØ‚~^JVÛ·)ÆîÎTûÇѯô™agp‚ýNA.€EÉË#_„iOÄÏY°w¾ò6ÉÞ’œK/QT•Bà¤e&‰^˜YåØ7®Œ—tm¿äو̃ŽÆÉXþ)xuÒ:ÈJm‹p3ðMWx¿t\J¼M™ÂQOua,~6K - 8P',têï7áXBûåÊÌw™“ÿç>ê¹x<8»PyŒD ¡ûpc´g4œ¸ðD/˜ÏÉ¡/½'6 £›Ð";Þßüß’NȆÐï+|¸eÚ"|Û³uV@–nŽeâyk½Èc¦B›Ër€’!$¹6ÌKd& ñ‰Æ» D•\Ðöê”sÁRjû¿ë#ZåÑq67+#;$Êæ¼$ÿ4°ü[£ø|eŽ8<1⡽Ô=ŠRe*ÌXmó~;ªïUFôZ1àÎÔ¡žÒœÒåóÂ{‚ÉÜï©?‹ ûh]$2u~z¬ã0 O´*Yù'¬> -jæŸsKJÔËcÞ•C'ëªF‰F"G>¼½ç-.죽õ7h4†3)ÿÆöŸQïüÈÇç!$¹÷@¾ 6-pÕN®öÄcJ¤ b=±—7¢-L+Q\‡½ä—ÎûÅ ©œi1¶»­<†H+Ýþõúå;¡œÍBÝîó bA‹Ó]_”`^ÓÜãÁ­‚Ž¼lOœ­8î?òÎP'#7ºâùFAÐSÆG7¨èô;_,“‹•}:'ùEîC,[À>ùg=³TüI®È«¢×ieO*d"Ÿ7ê¤sõŽØž|:Š¸ABèœÑ{šºÂðn«ñûœÄúˆ©Õò?Æî0Ã_¹®±Bæ‚)Ù™ÚmXG©~)cáxò7tÁ”[±ƒE©:Õ°tÞˆÔϳ%yÝ!‚›âðOSj%µ (…ØÅ)Õè†JW'CÜÅôºhâ>ÌïH, pŒn@3÷J)T¿[ÊS»‰\Hbd¿~÷sàˆƒ±cË2ÝhÉÖ{cåC'7J¢Ü9€¾_±AßcWràwGÅOî®ÆŸª'Õ2?œªªr]3Jˆ½l!˜ê”ú¡Ô˜a“_íu5,ëü³”#?ß™*¹ÉœMé˜ÎMždÑKO½Þ]Žã‘Ž>Ä4®–çÁ YÀÄ1Ÿ¦½Æ—wÉk¯.O ðY%¬+ÈMŠˆdøôHqÖŒç4x¥@ ‹ WìµºÍ¾Ü ³¬ï†î 5ûÉ™V´lÑÝZѾeÄL6b4 Û¢•t:V*ÑrÔ-éAóÒ„)ÎUr¹x7ïûÈP?ð€2þÂÄõ)ÕÉiª׳~j-pu“ß3 ¦ûK®€5η¤Or¨Ùby=áãû?·ó­Z­»øŒesÂúbø26Ä+ødâ‰Ê ª8¼bž‚fûñ{Ú+\´øOÿ;!䆿æ/Øò?yÁõŸPWÎj0™Zž‹¸xL;[?‚+ê­­Œî`ötW ,ý¡þ„EËxä½àå^Æ:DkÄÉ› -1ëð2ó‘ÍD wižÂ ñmÍÿýTàsYö0×í>n¢Hnðt`¦†Â~cÎL«+äæÏã ìí–ñàÿÌÊÁZÚ™^8Þ›n×%È]~°kW„A}& ]âõË0cCΕøÙ/·¿Äão3¸ †Â$GžÙ†éù6§ò³u÷A>dëÆA*Ôv¤±Cáx <Ÿ“ä¨ðâïƒ^Ò€ŸÁ鯠Üy:e4ÑAŸ[ê>àÍçNœ®I6š÷÷‰(‹dÒu<^¥Cë…&ª!È»"¨P¨=HšÛÕnw÷®Ü4¶«¡ÿO¿ucÖò÷|éϸ¤¯˜AxÍøàìƱ¥FÔ¡Ú³úèl’ìb,|¶[!³&ºí†n‡} <=?6~”XâÊTÔY8ùˆÁz'VÑMÊZCrýiãìœgرå¹ñ®™3–ïè“[ õÁŸûúé¥>,ê%–Ëèðm¸2}€«8ówwEµ]4ì÷;Y³„Ѿ£‡%»t©l™ ;‚Ï{û §Z‚c[ ƒFcO(âgð‡N˜2)øQZ½*ÎJ=/…8šG =ìñôЖò[Pšóè1÷ʹ©ùØ9{¾“ZDx‡}ö˜“ÔJìYé]AZn·Ù 6 -@l,¤hÞ¢ýuú©ˆ‹* ñ†j÷–Ùì‡T&•ïXßö*Cù_=£i½°¤”“D:Wª/pô×!8;¹Á -L@–Ë<ÙõO˜Þ`ƒQpèxA¹—ñ&?õ#Ï…¿‘>~ù~§ž žíYÓù‘À-Ú$ÊÓ݆KŽØ‘,ãV´½[©Ê£Üî`Åõ¤™eNÝ‚)ìE鶟†áC´¢ŸU~¥®hÄ›A-±%»âêÅ{"$2§lEìfñ1¯“#ñb°{S8P1G,»¤ÿÏÅ÷DlÆÐH:¯‚ý 1&wfû›šg¢¿N˜½Á¼¯hÃh…,ú·„îî9 úõw2W1x÷·òz4‹^âìê§Lœá5¯´ÅK7Óö«ºÏ÷ Ò);ûqÝðìþ¦ëbÂÞï–£ ¶ˆÝ# XT)‘is€Åñd0:FñZ<0h¨0R¹Æ®£y£õä†A×"MàÄÚ69,ŠA}¹&÷•¡ñ…ím@îÈ._ôßçüØVQí¸€`òyÁòÄÜÍÙ­@e)íðÓõý؆]"÷Ñ@ã“j -Ï5CÚ¿ “øÁå™4îK’˜–£²+<’2œ78üNZðh½ìY¶GaªAbþëÁù²ÐÕù«BKû `eÙ -V>>²ˆ"q¡ž Oâk/ƒÆâPš•š…U‰‰¡¢qŠ» ÄßHï¸ÇÆÔà«0*$HŒǶ`9^êֻŷ;퇬Ùwöâ×—¿Æèäóãúzæ“?î̓f¹èãÓqA¼£Ù¥XÔbg”@º~˜ÃIÒŠ¦Ðg4­ßv†£ŒñÊÈn«’R`£—2xv6ƒœ1g#•ÐǸê$Ò˜HFäûÍy\€áÚ°¡°ý14ößÃ`0Atdu·ägî”ýö ™VÝé‚ßbNTëò"u™:‡£²6Žsf°Å®¡À>ð„¥‡Cc¿ õ–û@œ²¶þ:?5µþ)ûRBœ…« fiú®6Ü‚Æ -#1l.^-T[i>ù"19£93²P5ÓқˡVÉ=¾s^­abÉ­Ï&‰Ò×j¨ŽG” D1x?\=óˆ£ ,gÕ…-Š9ýÝ“3y¤Qcµ_M{=ÇUxQ—âÆ$4DЋž‡ÚEîHÚµ,[tr…uNÖçMõ$«Ï4žÇi•öcv;IÙÒ£D"›¤*mn}Óˆ‰^ƨ‰C9 ¶·õéGȨpä\%Ä®ìåºÕ?øzö=‚„+D§#&©æ"GI]l¿×òÕíB¹- ~@»ÇYÆ–¡Wúä9 &Ngœ~xΫ7fÉiòQÝ^p'bXAú¨ç2±K˜ƒž¸%ïëo´¦½îx;â80‹¸ ¸Sùþà•°óMWó‡cÆ÷¸È@ºY^ ¶AG=–¨)éS™—±0ÛÄa¶µZq9hªo¾Ø+“±ðHókZN²’pqveúØnHû—.0ŠŽ õº¿Ô -„Òz"±€~ð$+ô½9ÝÓO|0lœý[Ñ kÏ:›\B^DM"i`êš(ó2T/øŒ3f8€‘h¯Djd‰2ÍY_‹yHT7ð/ìóŠƒS·Ýùtçù+xÅÀý®f?HÑÔÏ1@b«’ìŸ-U©ƒä,WnêI—+@™•÷¤L¹®éö¸Ð=`>–r_áÌÌ'b)‚Ê °‚ÀAzÄH±3SC‘&KêS—p¸w³ÝH¯»Šl¿ã>üXŠ|lA–%‘>OÂô ügžÎBf;zaXç¡94O‘O7feRz¤Îü±/ƒw«uwt²v•µéÞ…kö4>cŒèÜT±ê3~ÚjÎ+›Ì¥Bü¾Ø‹P©äÔÔÙÕº|(:ReÝüÿ“Á>Çý_DÖB1z-ÔlÎ/ThÇãàVv´8É]¸Ì‘¼tiÏfj#!- Íî.´ -L< /iOg~œð|¢Æ{ù(X,MW ©ªh„ðÑa˜u ‘Në’þ‹~Åÿ˜Ì+r+b *KE»Û¹äŽ*La ò;²J]ºj}Už™ùS¦UU9gÕœ´!,ûeM—ŠAD„­×ñÕˆ½:¬nè§q5'b0LÊøÕ*¬w#_·'±Y2“ÊÑ/Ø}•èÀêh~mâ‹‹…å ˆ,,¬–íglPÖY¬0JÑu7“‰•<ÏW/:Þ;Cíc¤¿«þ¸¥„,ÑÒIHëß?ÝsUÅ<]º´ƒŒ¨éè:‰¼ª¨Yº>êPwsU™ Tp?$Ø×ÇXò¥™”ú ½u­óâ;É5öcûfEÜ¥“}cö–û")òÂá’ á¹°S<ÞÐzÈ#Ë&]p0YÚw!€î -ï> ®ù!àSIiÓVðŠIó%Œ< -PÇŸ³²¶Ä”¶vwï±$`Go}¦n45bŸ•¬L2ßL -àà¶VpÎS6¤WÚzN¹FžÑêÑ-Á¡°pŸ­!æ¸^Á&}˜­|íÊmí”H*Ž>Tõeÿd¯•‹’Xñ®$! u >°ª÷¯6­({¥#f÷®$ÔæŠFŠ˜³ä-:)W»ÛÛΠ[qãBQ -8¢ÔR¸‡À²<ྥŒôp΢k§8LÂæ[^û‡Q)ñ XIJ-Ѳ(Ôùœ‘Y¸"¯Í´Èæy€ô¨Àg »×?cŸ?;¡. -ägì&å·8&’ŒžÚIŽø7½\_ÒGPÁN}ÅÒôܶs½n:ëÚ Ê¤ú½ gÓr Ò„€ Z‚œuØþH[’%; zA/Ž(憫Ì}¿·ÿ½Ó”¥™#ôDÆ 3ÜnƒÊ#$ò²)×UMPLÓµJ°`›‘Ù, äXká;Ôw|I—2NPÎgQù2ÂIT£©‰bGT¡Õ:öö̞|»ý×øßéC -î­xlí3'ؽ6O3øç/÷^D™µ¯NŠÞ Yã-BÁ} <íó~Š7gyì^JHQ3›Fx?\òfN­Ž&óO}w‘F»XàežàÃœ»·¾¯ 7ÃÑYª1ÊO'FC~yÛgøˆTÏ.|Ô%Àà[5ì«ôŒß(×WŒ³ò7}ÂYãÇø7 óÙ!Ú•µ¢NI–Ò“’lï:õ…n7€Èk“ Ã`?+‹ò %éÈ虲Õrnƒãˆ†'C¬£?a¼fžëÃ5OÝ6¹¸ï]‘ê~ièp§£")øíÿG,õÕMôd‘’ÄN. ùq½ÛXæÐäèmçGD¯Q°ØÞ@Ä’”êŠ\·ÎyâÐ Èš„ÈÙ4²‹Å¤ -Ä«÷j,ïéØ°ÿ€•eцóçUZõæø4?æ fL¤ô)¸UGFÕzµ~„“_%åÎxÎìÁŸ½êçœØ'çZXë{ fÂßÂTV+Ç¿JÀœ3\ìF¤ŒƒËfŒŠaö>€N:Ýýv¾wºpÔåNî+žo*$a{HP ¾Öã[6c¶ƒûmöÃy¼œÕ$Jß™€¢h:Ÿy:ÉSÛ™™5Ô7%Ñ :¾Ù_÷nËë£nš} ¶…oï›zvßénÝòTGyõø¥s·ƒ´ëøp–~/ ½5¥oI,þ|>pö‹Æ}v4-ìw»³½Aövú‹À!²QÈ> µ®G­€dÄϯ;.†=a%¡IVl‡Ÿûp™±ïÂV¢¥j\íSÎW•ah£_µö'±¶eš¸wQŒšìiÛì—ô“|p0'¶B+ï[3TDõ¥!7ˆ(K‘~[;bÒÆdúð©&?²¤x£Å“Á -µqDs–òŠW)Õi«案¶±¡›ß,Ë5øhzyû-WþËótÎjXÄe¯uÉ °•~9.¦Œg˵ Šë£Všx°âó½±ñš -®6­æ'Mõ>*&DzM¶#Qü^šJ<Ì¥»QôngOpÇ:syà+fvžM‚µbþeóÚKû -»àÓ`IÉîy`@ô‡úDŒîÇ35 ½ä} 0w¸Mß×Òiëaàܬ¹…©ø%GÊt8UPëè€Ãì89­ÚJ3Ó¼g·´QšŠ -=^2?wð¤¤Îâ«mdì-DêÝŠ\2ø3M\°4-(DêR~ä± -ÀάýaƒU&é…†Pýrzc‘ž„|™ \¼˜³n­²µ{‰š._OÂ/y³ÖôU¡/Y É -½4BÜ·\øSb]@_{)¶dÓOH·ÜÂó#õ =(0$ñxµûŠÚ’Y×@2ÅÊ0} ªHWüij1˜í -׊•§$Þu\º5’`PÌǃ5YÙ¼:ľÅ<ªDÏûÉŽ¸í¾RâîÚ'7¨ËÒØ'EÚk¥ìÂ.áŽ+\T±Çn‹È›˜9²ÞãV½'å…Ê«'ƒÉŒhPËy¢éË`N¿^-ej…B÷î5ªò˜a&è‚×y=õpÂwÚYÑ@SPÄ÷7#Wš‘daâÒün okG(ë•Ìª+âÁf­ãä^ŠQkü÷Ÿ), Ñ9 `ËkË¥s0õ7ãç2åsüáþðé˜|="{¢á¢s.Qþí>}ê‚/¤^pw%¬ëdM÷“Ò hö¬žT®< ™JmœlZ)?cÔ*–†L]ØÉ&µÔÒ‡y™~ªðÖWcº3wIæ¡aj¡2rªº «¶G_=ÔjV%ÌqëI*w‘Lv£zðCÑ2Wm.[6‚´Â‹?®Ž\X X]Ñ®‚µ9œ»·=qíü~baq¡¼á±{uˆ¦"{ï?–_ÿïÝZùö§·í¹#(væÀJÅWäÑùñ䀆ÖêVjP©É¹ËUð~™¢ýáØW_•qјß!EW´!ÝÀ›ZÔ1˜œu¹¸B;÷ü(¢4b@’Úê«bôÍ\î,{L¿§Ì?4šË±쪛Yg¬‘§ÐGû¥—6;Ô$‚G‹¬BÀ=6 /4³.K2óˆB·Œ2§?­?5ø— †ßW:D|œ·®ÃßZˆ\·¢ì/­p6›¦|Â`–=Ïž„¿¦e¦Qe‡HWâ¡\íîE©nÀ}üŸ?U]á&åÂ… xQ©Ô嗔ͣZµLVñß äÞ~Tð?V -x;Çѯ ie¼ÎC|åní»Ù»X×쳑Tg†T›gç5V¬îÖ%ñú!$žÄ»@_KöV›¬Vù´/yΧS…ÍC1ôÛpZ ¯ÿ¹:HS·Ë4Q•¸oÎÿŒ?üJoìlµŠ2‚ -Ø’òµgl·öþ½]`;5Š.iRwËDá)äîz¶%pZTÞÞÈb(ÜŠ'¼CÑîÈùöœ¥Lmß»IfÃîî.¹ÙAÝ}”œÖ`ÄçR4&¿Ÿ„ƒJ¡!‚Eö‹Çw°ìÌm&1û+mˆÅQ3 ïlÏ=Žd•îÒ­o -”dã%W¡Àïª4À"`Ó+µF6zò\7C*¡éìF¢óœ‹gHY M©Ó|¿ê{´a2[QFæýî¢m—¶ãª@L7jñ1 fÖO€3¬7Ÿã·Î¡òwsêò‡q¥‡£ü¾;wƒÿ‹4·@ýI6—&é½¥³†‹®Æ[Á&Îøºä4;u—‹¯,&oÁ?Dþn8¹‚‹! v³:l¨Wó'ÁQPð^•èõé -4m„Û’QH;¢ð H¦È¹ö&‰ö,s×S‹)/XÄ!)ùúx£=2`u¥õ½ ”òQNz¦;ãžð”8z^ÈG»„Ê3û—‡ †åŒú`Ã{ÖÙNÎcLL>­W¿ÜhÀ7æd@a÷rÛ%”,´ûG(Ö¢8»0™¹Ñ•Óû¶fº@¥Ñ"ó%´®¸g* -næ£=OŒ«ÕâR¸/v{Ÿ(4ÆóaKSÅÜ]í¢G|øo€ÈéŒÆñå1PŽÐö0¾ò^†œå2áÞ‘:bô(X$MP›—áËúYâ龯¶íåÏ5‡¿‰zŸÄL€x -~-]z{9â\=î‹ #ŸoòvÇ•vpõÀs(ð¨€Øåò‰Ò·ZV¢]ÐÈ -…üjÞa«,Nò„Á«u4T81Wøxßœ0rÞ»¡Dªºýu‰çG}EWL‡Ä˜Ž}&yƒ -JVc’Wó[ŒŸðò ðÙ'¶G’9>Œ`ÔÈ-AW²Ü)žCj¬k‰Ô§`;¡š\p(0Ï°+>B4‘$ôE«Ct]òR?¾EØ*Œñö…”K—þ×9<.åwîM7 ƒ:¤­ŸªÐ åqÀæÔ7Hãö ™«¨½T.øTaçþ^ƒjã{j~˜Wð#äöûʘ00g«~¤x@qä­F\vÊ¢U2h㻶J©%Èz{ã‹ø’{6O­ÄM äìCã`¶L… ÎÔþÍ]@ä¡(ŠdWªˆ:§”¦ØÈ1”x¶pÅøÜ‹,Ìó’Kt.ñT›9ìQa+@6Nÿ²Œä¿ó“0&‡—!æå.†ÖNLFE·#êŠkl½wÆß~ÒÏRE™ÈI»Pisþð@ÔB2Fï‘Œ’›¦””¾Fû/ÜÈbÙ/ÒzXaÞ{]=÷ó}7v¥ÆØ<ªú€³ö¯­¼°_mñ‡¥¤ó$ôã·ÜŸiƒCý#\²eôõIÎvW™ré+ãÂï•Ó€JŒë_<%åí}Æ «'&·ÕŽqò€ëš‹|¸~@SÕXZÃD®øjîˆLg*„kt¯J Ÿ6™ 3ýRd]¢¢Ó³D„Xp苘 ¥‹œ¡.b ùËø«j4B " ­šö­Cñ€ ˆ¨c®½Ù}i½I3Ǚܗ·Á®Jæó‹$‹ðW9ý|A†ÁÅ—MËl>ÚH¨à?ÿÖl~CTÚÃSÕòÜ*(%ÜCãtöý+×—$O‹<Ù&1[Íþ¿Lx%ûè²~L›®ñåÂw†è°‚Û x±AkÙ7E —±ÜQÝŸ·* -½’ëˆ *>á×q~µ×êò„ŽxGÉêýB”·¢ÑŠ‚Ow·wª®óýâ0`…o ˆëŠvoÙ$4úoÁ¸W›KÀNÅšH„,PP>ö‡$“ÐçílŒ‘µËµ”¡üaÿ/ëtö(^ÄÂIÿD@¼<ÂÑ÷)šTrñîu ±¡ïŠ8ü£y Dì¹V§ŒÈcÇM¬|xûÌp°²Ä^'Rô±² †,÷ÞpÖeΗ~¬Ñ̦ƒñsx²t¸ÛO†.•!$:¯ÀsAR §¡¦V_eMû¡¬{ -ËœºIïA2ç"¨¼ñË­ðå¼²µÚO•kÁá.$Ò~o1™›ùÝ“«¼s‰l^iÑè|éÉè )à˜-È2Æ gGfg†þ2MëÓ‡/0$¤ÕúI¶•rBâô½üç]:6Øeûÿ•L–ò {›v§o²†ibÙ÷ÀÆOÝ ÊñÉm/Û:1‰šü?ýúq²øø/ÞeÃA4‡Ëšî‡‡œ=n¡Éâ'îÇûÀKp`;0gnº;”rmLê$àtÒ‚/:çÉV‘SÐ.GÕ¦§ðB„ø«iE×Ô‡_á’SïvmªjaI{”ñ~nŽð6Šø½ªì­|7oOÞ¬9xó#4ЖK‚7™¶ô–7%3˜nLIä LP(\Æ×ß7„ &+Mié6RIщ˜GðešÄm3Öb8š—aSÆgÍÌYGÚŸ—ð¥©ÔíE ´wÊ««u-ŽXµ”sÏO÷«Æ ?Z&ÐfMH=§¼À} .´¤ÜÒLÒÝ‚ŒBÓû8ˆÜU¯¼Öë~aÛZ-dÎÃéQÀ^tÖ%çså¯7‹à¨ ­€1ulºyºñ†Ó/z¼Áí2d#Ðø]1/N_Õ> S-Ôÿ'ß|‹ÖÃ(bÉ7–°@¹Jxœ3¬ƒäa OKY¿‹ÏLÊ^1”kø·úÜÍyö¾šbª«müiÛIb_ìéŒöEÃÔ.stNìO0¡8oùl§ïšsçZq'¶#\ ×b"™˜]²Â¼Dätd¹)9ì‹6W:æû„iÚ„ œýš™Ç=¢“ -ƒ<Èä‰B—”5óqGÈi"”øÐÞÏé¦Ù¬š<ÖÓ"´ L>[>ÉR¬õ¨¦hÞ2¤}Ù±£O¯Ö{rVu£ÂÚzÞ/}ÞÒ]¼/`=ÛÁ`婸U`VOâCÖ»%ìɧß$ŠU’”rÃ[î:ß ùûØNå¹'§…0‡ÿÎþŠÊ»¬rWäŒç-ªm—ˆ©l·<[ëÏË›¶sQÙ\퉎ù«à}wàÇ¿$C€ò'"ÜlçÔZEUmn,؆O:³!°;‡ÝÑúð97×Æ?—ºä‰mÃÃÐKUAQTWsŒ‚…á†K q¸y6Æ®‹7\…]^Œ*\c -Ö}ÿûì»aÓI -èVÀ@aNñötë‡B©*·CÛYÌuÀ>Óßõ½y—rAÜ"IÖZdHéü²›pøEÁ-£–€€^qÚM5\ÌBÜHðlÞÄøÞ¾,Àz0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -262 0 obj -<< -/Length1 994 -/Length2 4088 -/Length3 533 -/Length 5615 ->> -stream -%!PS-AdobeFont-1.1: CMTI9 1.0 -%%CreationDate: 1991 Aug 18 21:08:07 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTI9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /PFWZRU+CMTI9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 46 /period put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 112 /p put -dup 114 /r put -dup 116 /t put -dup 118 /v put -dup 119 /w put -dup 120 /x put -readonly def -/FontBBox{-35 -250 1148 750}readonly def -/UniqueID 5000827 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÎ僥É99>'´~ ¤}(Jܤ—×r¼¨ÅC8ŽmÀÑâÄ”G@G ö^û7°…+§©  6Ð}¦¼µ) ¹µžþXw4z<^efªÓ2þo¼ÎÑAx‚*;Öxu&=k½ K¼öä‡î­`ñ»…QAb³»DI:eñµmêñRý¼‹d.`!¯™ŽÜv¶¡’Ÿ»Ÿ¤ýC ýDdµ?u_fÇ&üÂ<ðšü`wØêêyÁâËZj™NZŽ\ÆÖ)‘ßv•ÛX¢ßÏ;É¡xˆÂ•YÎ7Ý5À®5ÞóèÚ¦ØÕtôW°8^ýÀH¹Îv9?¿ ý#×BÏç`5_éS±)¨$ÇyJä~F:ÜBýr¹Ú?«Ãæ]%ŠÉÁì½6T±¤ˆq_žd›Wkxj£™Æÿ9óbc¡à¬ƒ¤È4 tVƒèCö•yì$Ãi5íG–/IL@0;YåÚ¨ÜSýÚ?ÈTå5üÕu³Š¤==\J8Õk¯©&ûžÖ›á¯+P(IP“ÚÝ_³Z‹ ¶O(Ÿ3õñìëÖ”Z"ÐÞòYl¹±‰“… SÙŒ6Î - ãGí¯Nw|0;J=§®Q@ÎúŠ†i°µQinMÕL bêôʇwßÑܬb(ŒÿøIÔ¡BËÅú ®ð9ãÍìnÞU£úë°Óî¹åaýè‰]NÿØa -!±î™ ƒmuÊŠßVÎ8»Eúš”Iû—í3óhi#}o›‹¦çÝÙ²Âå:õn(ÂÜŠä8i§#fz´‡!,0éŒkåÉ*§ÇÊà¨(ñWY¢íÝ“eì,=-¥ÏçZ¶Gî Lï§wf…u?ªÞëöKy£,X"áÊàBýE‰W@7,=R>WÓ÷Gù5 öžÓÏJ,í»¡—U›9ˆÅS÷x3EÙt=ëªr¿JU©=Ño¼:qïŽI ’Í‚¬ùkßNÙ*…v -b\ãOÎvâÌx¶|WžxÈð:D Î|#—óH+‡+BVªÀëÛü²Ó˜nHcsì¶ì™Š¤?$gb—¨¢¸´ÿ­ Àƒ>?Ùö4ê0k$‚&ÇÕF¡tv²&#,n”öÀÌãË°ô¼Ø?7•7äúð¦­Ýø‰&;k×~ïU`m.äH?ËÈÒGà,àÈE9Ñäl¶/9%ƒxÀ¥S ÃÀÈÕï^öSLæ„Ƞn Ô$ÄQäƒ á|š±_ˆ˜øÊg13ò^lµ*Ìý3͆ÿ?b1³1)© m锡Ëg¡/GK×ÄæVHÇ#»V¥v3S'nùÏœww_Ë×›Ð'S}b]ž… -¸ÔF?¥X–_P•Jñœ»A€à(ŽD) -4GpûDû)n6°±cÅ+ÒÀÂëHD©xöáñ d-Üžj!—·lb -?=Š¿häXìÉúü=ÆÑÒmí{B!½“Ñ`Å¢` -^XV‰j?ÊsÙÊ7Wxi@×k©ÕëH1A?þ)©ó“Š‘¯Žˆ«ÍXýD » Ï)vïºu•ÝäÑöV¿S5 ÿÔUcˆjGŸÒ–9ˆyrP<ú 6‚e܆‰V:ì–SŒ ž;\^ì{¾EÅ;o-’|i—"ŠË¤oú^Z³°ÔÚkÆÆ‘—Ð+Ž§Í÷§vÑçZŽDO[ EÌ[oäxM2N¿¡+0cvŽhCþžù3#Â×$}(ÛTTà"ÎOlæªQÔxÆQ^M4·åøLD™TbôNFë¬<e0°hº÷/g÷©®§v—bƒ´ó¼·K+/ ïoKðÈGì'µp~ T µÇ][A…àú.­‚mT´òìX^(5É´C®®_åæ´BòõÒ­@ºyn`NÓ6ƒƒ ùÃßpŠžxbÜƃ¯Ÿ½þ“Ø¥H›“ZpzGM#9¾„=Âg‹Ü‹î¼;V'm‡Kûð%ß®¹.fZJ q•H¤1Ù¿O¤°™Óà[?k4j -˜Ð–ÎŒüuFupÞÃÆÚ¸Fw¼«ÀBj‡;=bÎå‚$îÁ¢ªö|¨I(nSJ߃–&@`õ»NÉñJ‡ì¢Œ%ÕpØ„„ÁäÈqê‡è|é™Ê6|¡ †Å6Ç£s¨GòW‚YÙrö‡×Ê„0Gµ›n x»’ -0®*›&1Áó:HfR ôT½÷Ò#’w#™ýV-/Šjy‡Í0éÃ3—»~õ™X bh+)‰Yr{NÉC²ØíUnss@°å>Ú*¸¬ê ÞQZÕc£ÿ8Ê©¹¬Ïáåà¶(°äÙ¯ `ü o|áê7Ûk¬·ŒcIWRáŽE¦Z6»°ÒH¾ @âPg¢Bw›¬Uµ®û4¹TŸ¿Á€/Ù uW}é*„tã¡ÈQÂX¦KQ™ÒãÀÁ3-Jb+U9Þzo.Ø#‡¥ã¯RãVVRnb):È8â` I)b£Xó6î¡\<^~ÓyZÚ$E[Ñ0?C3§q®K‡@Zéz?×?´c`?Ða§ÁCJsŽRµCy ~ } ~PƒßH¤—ÑúÅdÜsN!’«IIX&©¬†Å6Ç®·”¹'i»Ã´m]@Zº³Ôó.̺ò¾ìÓfg0›™Á¤[ Ã’õô‚OÃ%… /ò7eó°`Ñ3šÊ0c©™¤ÑÄgçÄ~y¦ Π¡!~#¬8Öô™CŒýËYïù—àÄ(rú¶TÛ×öuho¹H9ÀªrO¶¹‰ö‚„Ñ$Æ9ö(Gæ“repô•okE\Ôš -†*÷µgÙ»£ýMÅNà²zÐñ) #•gF缩zÇ•ÝÐ÷2ˆès §ƒ tž Ç~x¥g3Ýèåáò¶4Í—Ô°¿l©:ÎÃ3ë•Vm„º5 ²Ð¸èÒ<ù bÉ·õDICÙKI„×Ò†=(v–!òÌÐx®e @êÜ^L½û§Þ·ºèÀ‘"ªApùòRWc0 -â¡ê b¾L«ì!è‹e;— 9dÒ~B.‚‘Ñ`S¿ ¹šc/ -Ç»¾eëë&/‘@þ*ñÌ5AଖHcø°RP†ÌTôËGQ/œs‘Ë}âÈ9¤Æý¢ààØ%9`—¶Óˆ!¥Ž®Q×=öäJi‡y¿4ªù*¢N6Š’ÃGn4‰ð -ý–¤ÜÄx®AnQ13tY½í†¿ØקÛÈÄ“UºF9ãylu?ÒlŠd!r›ÎáxDå6ñ?ÁÝCäöxDûDA˜@«Åܯª#Û¾3þ×ÅØÉ-w.ªøšÒB+²;_£¤£I{îrG -‘¾.jéTôËæ¥+ĽT]kptq2 *¿S®¢¬Ð>è_‡)­TaSLRl3™Û1Á¥Q´z‰É¤,Vs0Ç–Ÿ³Œ1jï¶]0"ò‹¶Àl)·öù©?šƒu’Žœ±±Nçkî±Â6 -8šÃ­Ó¾‹ÃÁž‡”bÅú›;ÚrBXó¾ùÛˆ«ÃG8˜"Þ¨q„S,c¬j`oñX$V¹ª$fhÙ‚ûYT.4MðÕ—ý¡¡v¯¥œèT©Sf¤·ˆ¹2w0¢eŸoÏ€‡píÐ^Ïd§²¨¥­”öç ¤çbÁˆá^SÏ=yAt£¥™ ¯BMôÞßЇMŽž\Óp–Ä5aÌ£˜úÏm¡Ç…ŸK¶8ÖœØ`å[^iЯN?åÜƳ´+^¤Müj•¡Y—$­Í2q=×—²<§–æàòî¬12Z¡H§r^üÖ˜.Ç&†žÒ|˪yû›.Æ|ý7mÚhŸ©‡ú^¤ÈCÉ[W~LÅó¢æcz‡ðÓ -2ï¾G¹^M&;#­Ô)9 Þ‘ƒFˆ¶Ã¤ýµDØiBÛ«%i Ú=˜ÞÁé Ú!Qç¯+Î)}Ot”xæ>÷ßÆT@1E¡¨F æ-_Aæ 8€KPI×?œ¿‹}Mg,Ñ8<.G/êLÝR V^Õá€rP“µ@åÃi\_1©¸±ƒó×XŽ½\_@9ú¥5’ßÀYî3±GU!x™ìÆX}iz“L‰ˆ’dšF¿¸:ñ×}Õ6R0‹ÏCªeZé±¥Š @¦c•–y^ô#èMî)¬“C#ù„M=y¼ü,kãXûŽ®H.ài]~²s…Äâ))s(q–מžf«³°»ü^¨‘sM—íÜAžcÔIA0ü¯2âß»„Ke`ì‹9|ÒÅgšbnÓn†ü‡$ó9â°‹Ú1Ó÷ý=`”"6ùoYš‰UZÇTêæ‚ôQàûÙò4¨èË›P@)1¸NSÏ—”rFB”Ìù»ŠÑ{rÅ ÷UI©šÑ+Ð%6·šBÖ¼9  -´ƒ‹,›ÇûK:¿ Rj˜8XOÔÌ.Ӊ‘YÒ5ý2¥^ … ãÛ½»ôsùý(> -stream -%!PS-AdobeFont-1.1: CMSL9 1.0 -%%CreationDate: 1991 Aug 20 16:41:23 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSL9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch false def -end readonly def -/FontName /HGHLSL+CMSL9 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 45 /hyphen put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -/FontBBox{-61 -250 1150 750}readonly def -/UniqueID 5000797 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÎ僥É99>'´~ ¤}(Jܤ—×r¼¨ÅC8ŽmÀÑâÄ”G@G ö^û7°…+§©  6Ð}¦¼µ) ¹µžþXw4z<^efªÓ2þo¼ÎÑAx‚*;Öxu&=k½ K¼öä‡î­`ñ»©+¼m»ÙlOaŠƒA{FÜÄÂ&ÃS´mÍ=Ü­Íe²ú…ˆ@Ä ±Õî·zÐûý´IVžó±Šü½i}Cn¡¼24½ -îÁªÆ꤇6WV-BôÙÄ-ÒµŸJ®öZŸø:¼ïØöß7HÏ»½©ån®z`‰K³…ºî­ i#ùÁ”Œ¥kƒÊuÑxDƒÏ%"ŽÇ©jIZ!ùŒ Q®IêßËZt.4})½úÂÌ‹/> 1I´ú¡ØaƒŸj±i.Wš#j…¤¢ÞÃ'Nç瓯yFË|ØSý8ÜÀ"fŠóº àtÀçMƒÕ~ZR*~Ñï—t¶¹áCm/;î¦r-.(\éM…0` E\…æiÙÎ1q#áðžqxê™÷°ªE.º¢&:GJxÂV‡Ô$Càqsjk³êxzc'…²RÔø4„c -»jp\¥ƒ£D¬Òé™o,7La‡XÙëÖ‡Ïûy¬qó¦ûQ÷ ¾Ðå9Œöbݯb±Ý€Dö‡Ý@+†7UNe„Pý…Q\sö5):ÞÅMÐmì Y¤››î“ô7mð ï[rg8o"„p,_iؽѣG -ßÄŽ J»àÓúíE1 ¡àmŒ•¬`‰ñ/‚ïã”Òÿ4ýqŠ8'V,B— ³ß„GãNH8ìÌvŠR¬b¶§9LUB¡_¾¥üJ”0B·üé„?Â{&©Ã)­<ºXÿHF‰:5jdU®z+YW”Õ2wÄØdñ·dËú5 [×å’ ð¯LÚq o WÏ(K ÷˜üšÍ@`pU¤j¥&Áÿ]8*Ñ^¹oWü¹ÁÜƯ̫ _GNÓšYÍ¡üi½UÊ7¹²SgÃÉѯ½¤góüÛèÝüÛìÿOà9Aòê2ß:Š:ê…¾µ¡ŸnƒXÆîêêŸóœ˜ƒòú—Ý7óU"“´=£—dZOþøû SZòwg5†þp–-z_^j;8É¿æ$Tíj¯· Î"q9šzpseѵ’¯õ6‘/W2 Å…A ýðã #3ü™3½Nc¿Éþ'å¨#½îMhd[° Q·V|ªb™.Ñ©æz$[mN¾çùçO¾à’Ï@’†›·ÑB¡„¾T±’ZÐ`š% ñ·wÐ`M) \=ý^od‘•5<(˜é–#Ç|œ/èÉH”CL«½R7pÖ0¦Í u¹WH™0K¸¼9¯˜{M2ûš¿àn_¡le½r?œ>'iµüú±tì†Úg6šC L‰clcªôY'¾ÃË29™ŠUp]¬"7tS—“ -è^g2›inÉU¤¤O–N‘Ê.Ö"¯œÅ+?ltwyèÕppêE}G?Èí2:‰]ÈO€Ò^ÌO ÇÒ=¹)*CSC÷âÞð„®—Ñ‡) -l±,{Žt1`½Çdôî†Íï|ÖÖ_¤fTJKtPfüêÍ“«Øôå eHÐïĽ,š” ë_wÁi€¥ LwµIi×ÙÏxº{<ñ0Hõ™úë¼zýÜj”:ÍW!Nìè·®ä!hU”Tn¶Úý÷Ìr‚J·Þûè¿oçp¦‚05f¨Š¿€[©¬¥oE~6–²ãG«=ñéŒÎNM挬8:™AGˆqIEäè•g8çÛ—ÚD½¿ sÁ6ß-æÓ’En.›Ù¼é‚`SÑ“AÓ­ÏÜ!ý÷'>!woW•bÀw«œÝ{%:”CX%3Ô,Nµ¦(”ª¤ØMÃø'g_aG±Bû¬~’ìžX¶Ëïnû‡w¤YÕ/”og®ˆ èCQkêöà0‚ËÙ¿]©¤è©…)e×Ôq»‘µ6ÓXU@0f&Rˆ±Êì -2M -ܽ¸ˆ¡B–0R+º‹£»z~ç Ɔžˆé¹ÿ ¯lkv jª+tªoÞv ûq°h¦8dÝÍ8¿‡Zz`´3¨ï0T þ`âæCÊŒÇC=RÖ»1Ñ™páé=ö¼;"ú™º6¸ žß6«ÜæL`HíØŠ¾\HxIBêÛBù«V>±Jè2몡²Ó˜¶ô==‚rU^-ü Ž~þùAӧ濰erX©Ö»d_éE¡þ[Äxî®Mç¶ú©C;ÈžîÜƆoÏ»1¸hÆ~nÔâsļ-=1F½Öùz{$TY €æÈÓÝ¿É–´C…C“‡èÎ7s÷©zý:¸Ò­ü¶—úØ@MµŸÓ¦TóX¾Ò ÐòÛ*KÅð½±k-c¨n9VÍm¶ç6K‚T™ê Ù):es¸¯à]ÙT¦´$ -wsJÌcy¬|§‡lóÌ+ßèU=*[Œ5‘jŽ¦çþy<¬%š:/·î€Ïs2ôGІ)8do&ÚVßO šÍˆÇˆ®ä -™³Ž¥'DÅ3ˆÇKZaqż6œN䮡*Ã*IšÊ2/$ŽúMTm-1”ë vú¯¼ÏIÑ!›j¨²f”q`€Cý£.ÙG¬M%æÐA|hÓŠ€¬6÷”ŸØ’ƒO¶‹G²Uì6ÖäÔ!›ï†úð9ÐuÇ bš(2 6Ñ8°’ž‚A„v뼡p9ÿ“‚§-r†žñ¸|Aå^–ê³o¤ñx¢¨‚ÇZ¾ -ïº+ÛÝ ïš“ºÿR{9ÍZL¡ç‘¤ÚæìÓ•ÐÓ"hÖÆÿvùa3Ìy.ç‹QÊù©x^‚ˆ²^E‚ÔßÏûûU ¥HðÈVÁì *W`Ô¿=×s¯û«|Ëé ´Õ™Ùé†zJ´ÆcsSx%qÀr¢ ¯zÕªyȇwCŠÇBLÍɈ.9_²3`\Ü>#T“¿£Û˜sè]AÏ»%'›41oI^a7I‰‚£§ùgÖ'‚p‚Ë£_rUhcRq:ø›¸àù“#«™MðòÚÛLæ—Û%dËýàÙæ/ÊÛžŠJŸ›å€$‘tl$%vž¸BrH®xÊù'ÈlùG¤c¬¥kñG—yä–Åc„"w:»²ËÐòôízg4!—ƒbr A’S7?ünù,žh9*i«JЋ©YWqŒw’›&ç …¹Ü ¶<º;`¢cë.lÄ ëgÀáaxH€X`-kqrÎ¥GPƆ+¿4ÓµòÆ8>¦¦¼DÎÁ¦Bã³ÃRÕš³À–¥E¯Ÿ¥" o°=`Îépããj¨¹$«MÍ_\ØÛM²_¢ê@jÛfþOñŠ¡8µøtÞµÁÇ%ä›HŸêU¢Ì Ä-tû)-áÒXé]†KV†…nô–ÿÓxÆ·fåÇ7ŸL°|û-Z/–銅ê±Óû÷xÚ23 ·G¡aïk9­©ôlÙ¬¼h¸ Éü´y#C´óÖIÚPA]1ÜZ¸Kò…{ˆ¤WÂy Ã_'ܾh‘û8?nœÛc5%Š¸âDGöyg¢Ý;fPF‰e!OÌ´¬B¾–ËÇ7×Þlëü0Yû›±¨88¾)ë3>¯š=ÕŽ&º˜¼¤:Ào)Q£òºK{†éápEnºfKnZø]ï0©Ȭn½ºù¤3¿ã ·ž¡H]F²¡Â Þ›ÚæR÷‰¿Pwv$Nþ¸ü´MÃa­{úŒáì!©lÙαdðjЮ…‰šó Y€°0„»ctóÌÛ ‚#%t¤)lþYäCc;$B?Q²8©íÇgò3‘§ÿ­ÇB·@å¾ÃüqHÀ©yCáfã¼oûBÙuy«%·Q1’«Pi:¡NgèY¢ ÖÌmÊýÃsm2½ñ¦õ âdˆZ¤¹T)è~—Œ¶ˆ<ÌgïqÆ[Wƒ³‚Ô} …ü¢mÈnê)ïüÙSº/?jüyÉOçS0ÒCUêJù?áêï™Ùw…?|e3aŽñ=(´[0Б¸ -Ï_Ší[€æú!Á#\ú* f78D?z–¡Þ¶é̳QtwIZ½R¾EU —GQpOšxÖqt•|2:„x³®Óáèõ&0žâ´(¥7åÆTl‡7ìv0F,ð’UöÀŒ^óv$ñ%xQ^ÍÂäK*žþ˜Öú~_YâÅæÙvcX$¯»d<íHªÏ®æµ>šõ+Q «Ô‘*ÑkXÊäN—ƒúç<ö«Ì Ï¬ÞìGX¼×uGù¼U/‚"³|ÞŒ…õ‡‹¾|Sôc$ÐYy»ÔÍiŸ¾&²Ë=(b¯Å;Š‘ÜA;†÷Œ ¢”Qè VÌÁ¥™hxXb.È_«û$&S¸…DE -®Lq:|ÒÁïs1Moõ\N”£Ow<Í{‘Ë ¹+}Û½-ƒ=Ÿ%¯ -Jñ™TÁðÛ™Û€O ÜO˨qЃ #X«¬§uñïç$€µ_¸T$¶árFU¾dåÏv tŸÛ¯c@ô®¢ç0î§/ì!BãL¼^‚Ø8¥ˆ¿Snä^^¿üµ&M €•/¾*aôTЋ,ŽùGIzXtMb«¬šÎ&k'ljÝ“2ÎÉ ±¤BoK^‘± -̽“ÓH¦~þ{]ŽN©Š rèiÁçÊr£5z:“'Â99$TR³Ék#ºeì_„i|œ01dŸi/dEsàáÎÓqïD¢¸¾•Ê† v<8¶;d¨ÿ2q¢°ÔήMZ+äÔ^/URì'—ýîÞãbÖ÷-„A4ðg‚©1  9Tim¼ˆòÿ¯)h–Mb.-­‹Ë÷äÀðQ‰"+¤øÞ„ÛñǪÁVŸz£Ò•kV× -Æ0KkP“ÚÃ>Æ•{Àl|^ÕñÃa¬Pæ/‰S[,#^W ôÐ}$îSrK(Nc?•þ¬}3ì°†F56ää£Ë/È°«ãÒŠÒ÷‰4²ÞØÀisªâcÖÛÛyÞÔA¥€¿-<Í[0þ×ÀQA…hC|rrZ@Öß„%O$æN9î™ÐX=³£‡‚›Awà/}礖=¸d•Ã§Ø»ÕÁ™>ýxû¤{q•sخۧý+ -Iu>÷Uõæˆ~á `.û2‚åÏÖtʼn4¡‘íΚ«\› €<\v¡õÌ3¦ÑrËøNõ±vœHà?V¿‡ƒ^ÍR^¯Á·ìÕýµ ÚEª†5µ»c~Ó àP¸98¨'-,¬¾X!Jfò40»¡„·wØcîÌLÔ>ÌXÕšr8 ìUf#÷Ø/žá6–F¡-£‹+ÖB3ˆA‰˜Yú+Ø+4ž0TbMUƒn¼¤¬-®˜ƒöÒÌCîJä÷¬Rb·‡pã‰Û›¦†!KMv‰l¨Ñx¿Þ.pÚ!î]“~æ8áotÿ㉪=.®²ò´¶ryÌD$ö)N§KG¾¶(“|ƒÇÉPZ’X|+Ž†«½Ï•’sêk¸³u&¯|†YÍ£Û˜=h:ðËy^IĜ鲦EF¦@Ò¥f_‰u"=¹.‡ål¾`Åω7qädˆµjVÏ&å ÏØGã^ÈX%õ¯ëwYÂÇÜ›_vGî‘Úú”‚‰íìÞup·ÏzÔ—…ÚžÓbÑNq¤¼—°")‰ä±YRê`xv\BâJpÀxP‘Í)oàá0Ô³0aE³;‡Ìî ÆTmDUä’ƹ-”&Ã5VÁ5+šzýÞ àè`Ú­_Ò×^†¹øµåV tsl©nH¡A•I‰j9ÿ#ú€01Ud_áóÌù®ÕBÞô@aÆb6Nã×–¯P–½3ÿyŠÔ":×ë›5˜ÈÓ¾rå1¥G×î ©³ )îÐæËë)!ž#mw !KÐ÷~ç–¯.cvþ·a мƊ§©•«¥m¡œBÏVg†E·=M9pWùBüÉ›îÚU‡ÛfsYtü 9 âGs^g¼bY&ÎÁ"1¯Œ«u¯gÜ(k0dñIÝO‡A1KÒ÷Z5¿ ˆ9;;¥i©ëfàu¹*¶ý0-×#×XYêR{˜ÕÙÎýíÃv(7¼eÈ¥?\ÞÏd«Âw7,5À¸›Ø5xÖöÈd²þ”ÝgDË'U0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -292 0 obj -<< -/Length1 778 -/Length2 1052 -/Length3 533 -/Length 2363 ->> -stream -%!PS-AdobeFont-1.1: CMBXTI10 1.0 -%%CreationDate: 1991 Aug 18 17:46:30 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBXTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /LWIKPI+CMBXTI10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 46 /period put -readonly def -/FontBBox{-29 -250 1274 754}readonly def -/UniqueID 5000771 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÎ僥É99>'´~ ¤}(Jܤ—×r¼¨ÅC8ŽmÀÑâÄ”G@G ö^û7°…+§©  6Ð}¦¼µ) ¹µžþXw4z<^efªÓ2þo¼ÎÑAx‚*;Öxu&=k½ K¼öä‡î­`ñ»›õÀ{ŠY»T€+õ¹ô"Œ‹‹j“õËnLìíóíLEÔ6§«[¥gô¡’PÖ {-µíZQ¢Í5)Ñà4Œ·¤ÉdÔ¤j˜`BF”;4ïóS¦PH¤zg17g› ?UÕAXqž1ÐÔÓûì[¯D¾¹ñwÞ-€<žÿ§¿‰½p>€[£š?ª?­·Ò°¶q^D%5'?¬ÚÀq•€o’ç‰h/ŸfÞ -ÉÌÊsQíiqvjaøÒ¡»¯ãÕéöQ`vv¦æ6}oe8P w ·EÄv -¥9¿µ__hXž!ÿÆZ!V_8Ÿo çø—‡`ÔÀ%d72Ý›r€ æsúÆ­WD|êó°sÐ46FéÞ@¶ŸGU‘Y -H†ñ˜µy¥gêëô(gâša£‘µÜ-rpL.f¦eµV]гi‘‹Ú$p -ÞyßZºÛ+°º%Aí΂bý`p¾\ÐÚN¼ÛtTº³J7ŠMÀUY“ó, (ÜþÆýœ¾ÿf.Zò*'¯pöÜÜ¿ÎBp"ó@<’ï=¾¨YæÞU„.Òɧ~ÆØ›šØ^ÀËïº==Àeº’ËNGÖ°µ964ö<±iVM–(ºLN1twÊ(¶¹ø` -4ø§áJIo·ö ¸^p$ÉEI‡Ù¨ÿà«°’Õ žÅ³7zSÇϾ• B*ª:·r‹Ï}Ä*vIÊ=«=˼C‡ÆËY-Œ““SOæÚvjéÓO4ÕÑFÛÂ}Á;®3R© û}-ÚîsõöG5&íE·ã;šÙ=¶½ÚšµnøÒ` d¿ öòéu±;>_!0]ëÜÑËnC¨ÁØå`DIê¦búz†¸„ º¸]寷~4lA’HÐ-äFXá¿]ûü³®ÝÈGÀZÒl¥ÌÜÓ¯Ëj€þþ´¤{[Å“Ù1-êº3B>‡Éhfæ*ˆåDXýݵÀd:m§$òáÁEž¤ZÕøÌêË|üJ‡8a™fEµˆÔ?"¾Ïî~=¹8Ë;PJë»\Ïd@·÷àHEü&ûõŸÓÕÝÒJ²åVÔ†òÞŽuÃlŽé!¤Ð¥p?®´`¯¦û£ãꉽ0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -1 0 obj -<< -/Creator ( TeX output 1999.09.19:2152) -/Producer (dvipdfm \(null\), Copyright \251 1998, by Mark A. Wicks) -/CreationDate (D:19990919215248+00'00') ->> -endobj -5 0 obj -<< -/Type /Page -/Resources 6 0 R -/Contents [13 0 R 4 0 R 14 0 R 15 0 R] -/Parent 302 0 R ->> -endobj -17 0 obj -<< -/Type /Page -/Resources 18 0 R -/Contents [13 0 R 4 0 R 22 0 R 15 0 R] -/Parent 302 0 R ->> -endobj -24 0 obj -<< -/Type /Page -/Resources 25 0 R -/Contents [13 0 R 4 0 R 32 0 R 15 0 R] -/Parent 302 0 R ->> -endobj -302 0 obj -<< -/Type /Pages -/Count 3 -/Kids [5 0 R 17 0 R 24 0 R] -/Parent 301 0 R ->> -endobj -34 0 obj -<< -/Type /Page -/Resources 35 0 R -/Contents [13 0 R 4 0 R 36 0 R 15 0 R] -/Parent 303 0 R ->> -endobj -38 0 obj -<< -/Type /Page -/Resources 39 0 R -/Contents [13 0 R 4 0 R 40 0 R 15 0 R] -/Parent 303 0 R ->> -endobj -42 0 obj -<< -/Type /Page -/Resources 43 0 R -/Contents [13 0 R 4 0 R 53 0 R 15 0 R] -/Parent 303 0 R ->> -endobj -55 0 obj -<< -/Type /Page -/Resources 56 0 R -/Contents [13 0 R 4 0 R 60 0 R 15 0 R] -/Parent 303 0 R ->> -endobj -303 0 obj -<< -/Type /Pages -/Count 4 -/Kids [34 0 R 38 0 R 42 0 R 55 0 R] -/Parent 301 0 R ->> -endobj -62 0 obj -<< -/Type /Page -/Resources 63 0 R -/Contents [13 0 R 4 0 R 64 0 R 15 0 R] -/Parent 304 0 R ->> -endobj -66 0 obj -<< -/Type /Page -/Resources 67 0 R -/Contents [13 0 R 4 0 R 68 0 R 15 0 R] -/Parent 304 0 R ->> -endobj -70 0 obj -<< -/Type /Page -/Resources 71 0 R -/Contents [13 0 R 4 0 R 72 0 R 15 0 R] -/Parent 304 0 R ->> -endobj -74 0 obj -<< -/Type /Page -/Resources 75 0 R -/Contents [13 0 R 4 0 R 79 0 R 15 0 R] -/Parent 304 0 R ->> -endobj -304 0 obj -<< -/Type /Pages -/Count 4 -/Kids [62 0 R 66 0 R 70 0 R 74 0 R] -/Parent 301 0 R ->> -endobj -81 0 obj -<< -/Type /Page -/Resources 82 0 R -/Contents [13 0 R 4 0 R 83 0 R 15 0 R] -/Parent 305 0 R ->> -endobj -85 0 obj -<< -/Type /Page -/Resources 86 0 R -/Contents [13 0 R 4 0 R 87 0 R 15 0 R] -/Parent 305 0 R ->> -endobj -89 0 obj -<< -/Type /Page -/Resources 90 0 R -/Contents [13 0 R 4 0 R 91 0 R 15 0 R] -/Parent 305 0 R ->> -endobj -93 0 obj -<< -/Type /Page -/Resources 94 0 R -/Contents [13 0 R 4 0 R 101 0 R 15 0 R] -/Parent 305 0 R ->> -endobj -305 0 obj -<< -/Type /Pages -/Count 4 -/Kids [81 0 R 85 0 R 89 0 R 93 0 R] -/Parent 301 0 R ->> -endobj -301 0 obj -<< -/Type /Pages -/Count 15 -/Kids [302 0 R 303 0 R 304 0 R 305 0 R] -/Parent 3 0 R ->> -endobj -103 0 obj -<< -/Type /Page -/Resources 104 0 R -/Contents [13 0 R 4 0 R 105 0 R 15 0 R] -/Parent 307 0 R ->> -endobj -107 0 obj -<< -/Type /Page -/Resources 108 0 R -/Contents [13 0 R 4 0 R 109 0 R 15 0 R] -/Parent 307 0 R ->> -endobj -111 0 obj -<< -/Type /Page -/Resources 112 0 R -/Contents [13 0 R 4 0 R 113 0 R 15 0 R] -/Parent 307 0 R ->> -endobj -307 0 obj -<< -/Type /Pages -/Count 3 -/Kids [103 0 R 107 0 R 111 0 R] -/Parent 306 0 R ->> -endobj -115 0 obj -<< -/Type /Page -/Resources 116 0 R -/Contents [13 0 R 4 0 R 117 0 R 15 0 R] -/Parent 308 0 R ->> -endobj -119 0 obj -<< -/Type /Page -/Resources 120 0 R -/Contents [13 0 R 4 0 R 121 0 R 15 0 R] -/Parent 308 0 R ->> -endobj -123 0 obj -<< -/Type /Page -/Resources 124 0 R -/Contents [13 0 R 4 0 R 125 0 R 15 0 R] -/Parent 308 0 R ->> -endobj -127 0 obj -<< -/Type /Page -/Resources 128 0 R -/Contents [13 0 R 4 0 R 129 0 R 15 0 R] -/Parent 308 0 R ->> -endobj -308 0 obj -<< -/Type /Pages -/Count 4 -/Kids [115 0 R 119 0 R 123 0 R 127 0 R] -/Parent 306 0 R ->> -endobj -131 0 obj -<< -/Type /Page -/Resources 132 0 R -/Contents [13 0 R 4 0 R 133 0 R 15 0 R] -/Parent 309 0 R ->> -endobj -135 0 obj -<< -/Type /Page -/Resources 136 0 R -/Contents [13 0 R 4 0 R 137 0 R 15 0 R] -/Parent 309 0 R ->> -endobj -139 0 obj -<< -/Type /Page -/Resources 140 0 R -/Contents [13 0 R 4 0 R 141 0 R 15 0 R] -/Parent 309 0 R ->> -endobj -143 0 obj -<< -/Type /Page -/Resources 144 0 R -/Contents [13 0 R 4 0 R 145 0 R 15 0 R] -/Parent 309 0 R ->> -endobj -309 0 obj -<< -/Type /Pages -/Count 4 -/Kids [131 0 R 135 0 R 139 0 R 143 0 R] -/Parent 306 0 R ->> -endobj -147 0 obj -<< -/Type /Page -/Resources 148 0 R -/Contents [13 0 R 4 0 R 149 0 R 15 0 R] -/Parent 310 0 R ->> -endobj -151 0 obj -<< -/Type /Page -/Resources 152 0 R -/Contents [13 0 R 4 0 R 153 0 R 15 0 R] -/Parent 310 0 R ->> -endobj -155 0 obj -<< -/Type /Page -/Resources 156 0 R -/Contents [13 0 R 4 0 R 157 0 R 15 0 R] -/Parent 310 0 R ->> -endobj -159 0 obj -<< -/Type /Page -/Resources 160 0 R -/Contents [13 0 R 4 0 R 161 0 R 15 0 R] -/Parent 310 0 R ->> -endobj -310 0 obj -<< -/Type /Pages -/Count 4 -/Kids [147 0 R 151 0 R 155 0 R 159 0 R] -/Parent 306 0 R ->> -endobj -306 0 obj -<< -/Type /Pages -/Count 15 -/Kids [307 0 R 308 0 R 309 0 R 310 0 R] -/Parent 3 0 R ->> -endobj -163 0 obj -<< -/Type /Page -/Resources 164 0 R -/Contents [13 0 R 4 0 R 165 0 R 15 0 R] -/Parent 312 0 R ->> -endobj -167 0 obj -<< -/Type /Page -/Resources 168 0 R -/Contents [13 0 R 4 0 R 169 0 R 15 0 R] -/Parent 312 0 R ->> -endobj -171 0 obj -<< -/Type /Page -/Resources 172 0 R -/Contents [13 0 R 4 0 R 173 0 R 15 0 R] -/Parent 312 0 R ->> -endobj -312 0 obj -<< -/Type /Pages -/Count 3 -/Kids [163 0 R 167 0 R 171 0 R] -/Parent 311 0 R ->> -endobj -175 0 obj -<< -/Type /Page -/Resources 176 0 R -/Contents [13 0 R 4 0 R 180 0 R 15 0 R] -/Parent 313 0 R ->> -endobj -182 0 obj -<< -/Type /Page -/Resources 183 0 R -/Contents [13 0 R 4 0 R 184 0 R 15 0 R] -/Parent 313 0 R ->> -endobj -186 0 obj -<< -/Type /Page -/Resources 187 0 R -/Contents [13 0 R 4 0 R 188 0 R 15 0 R] -/Parent 313 0 R ->> -endobj -190 0 obj -<< -/Type /Page -/Resources 191 0 R -/Contents [13 0 R 4 0 R 192 0 R 15 0 R] -/Parent 313 0 R ->> -endobj -313 0 obj -<< -/Type /Pages -/Count 4 -/Kids [175 0 R 182 0 R 186 0 R 190 0 R] -/Parent 311 0 R ->> -endobj -194 0 obj -<< -/Type /Page -/Resources 195 0 R -/Contents [13 0 R 4 0 R 196 0 R 15 0 R] -/Parent 314 0 R ->> -endobj -198 0 obj -<< -/Type /Page -/Resources 199 0 R -/Contents [13 0 R 4 0 R 200 0 R 15 0 R] -/Parent 314 0 R ->> -endobj -202 0 obj -<< -/Type /Page -/Resources 203 0 R -/Contents [13 0 R 4 0 R 204 0 R 15 0 R] -/Parent 314 0 R ->> -endobj -206 0 obj -<< -/Type /Page -/Resources 207 0 R -/Contents [13 0 R 4 0 R 208 0 R 15 0 R] -/Parent 314 0 R ->> -endobj -314 0 obj -<< -/Type /Pages -/Count 4 -/Kids [194 0 R 198 0 R 202 0 R 206 0 R] -/Parent 311 0 R ->> -endobj -210 0 obj -<< -/Type /Page -/Resources 211 0 R -/Contents [13 0 R 4 0 R 212 0 R 15 0 R] -/Parent 315 0 R ->> -endobj -214 0 obj -<< -/Type /Page -/Resources 215 0 R -/Contents [13 0 R 4 0 R 216 0 R 15 0 R] -/Parent 315 0 R ->> -endobj -218 0 obj -<< -/Type /Page -/Resources 219 0 R -/Contents [13 0 R 4 0 R 220 0 R 15 0 R] -/Parent 315 0 R ->> -endobj -222 0 obj -<< -/Type /Page -/Resources 223 0 R -/Contents [13 0 R 4 0 R 224 0 R 15 0 R] -/Parent 315 0 R ->> -endobj -315 0 obj -<< -/Type /Pages -/Count 4 -/Kids [210 0 R 214 0 R 218 0 R 222 0 R] -/Parent 311 0 R ->> -endobj -311 0 obj -<< -/Type /Pages -/Count 15 -/Kids [312 0 R 313 0 R 314 0 R 315 0 R] -/Parent 3 0 R ->> -endobj -226 0 obj -<< -/Type /Page -/Resources 227 0 R -/Contents [13 0 R 4 0 R 228 0 R 15 0 R] -/Parent 317 0 R ->> -endobj -230 0 obj -<< -/Type /Page -/Resources 231 0 R -/Contents [13 0 R 4 0 R 232 0 R 15 0 R] -/Parent 317 0 R ->> -endobj -234 0 obj -<< -/Type /Page -/Resources 235 0 R -/Contents [13 0 R 4 0 R 236 0 R 15 0 R] -/Parent 317 0 R ->> -endobj -317 0 obj -<< -/Type /Pages -/Count 3 -/Kids [226 0 R 230 0 R 234 0 R] -/Parent 316 0 R ->> -endobj -238 0 obj -<< -/Type /Page -/Resources 239 0 R -/Contents [13 0 R 4 0 R 240 0 R 15 0 R] -/Parent 318 0 R ->> -endobj -242 0 obj -<< -/Type /Page -/Resources 243 0 R -/Contents [13 0 R 4 0 R 244 0 R 15 0 R] -/Parent 318 0 R ->> -endobj -246 0 obj -<< -/Type /Page -/Resources 247 0 R -/Contents [13 0 R 4 0 R 248 0 R 15 0 R] -/Parent 318 0 R ->> -endobj -250 0 obj -<< -/Type /Page -/Resources 251 0 R -/Contents [13 0 R 4 0 R 252 0 R 15 0 R] -/Parent 318 0 R ->> -endobj -318 0 obj -<< -/Type /Pages -/Count 4 -/Kids [238 0 R 242 0 R 246 0 R 250 0 R] -/Parent 316 0 R ->> -endobj -254 0 obj -<< -/Type /Page -/Resources 255 0 R -/Contents [13 0 R 4 0 R 268 0 R 15 0 R] -/Parent 319 0 R ->> -endobj -270 0 obj -<< -/Type /Page -/Resources 271 0 R -/Contents [13 0 R 4 0 R 272 0 R 15 0 R] -/Parent 319 0 R ->> -endobj -274 0 obj -<< -/Type /Page -/Resources 275 0 R -/Contents [13 0 R 4 0 R 276 0 R 15 0 R] -/Parent 319 0 R ->> -endobj -278 0 obj -<< -/Type /Page -/Resources 279 0 R -/Contents [13 0 R 4 0 R 280 0 R 15 0 R] -/Parent 319 0 R ->> -endobj -319 0 obj -<< -/Type /Pages -/Count 4 -/Kids [254 0 R 270 0 R 274 0 R 278 0 R] -/Parent 316 0 R ->> -endobj -282 0 obj -<< -/Type /Page -/Resources 283 0 R -/Contents [13 0 R 4 0 R 284 0 R 15 0 R] -/Parent 320 0 R ->> -endobj -286 0 obj -<< -/Type /Page -/Resources 287 0 R -/Contents [13 0 R 4 0 R 288 0 R 15 0 R] -/Parent 320 0 R ->> -endobj -290 0 obj -<< -/Type /Page -/Resources 291 0 R -/Contents [13 0 R 4 0 R 295 0 R 15 0 R] -/Parent 320 0 R ->> -endobj -297 0 obj -<< -/Type /Page -/Resources 298 0 R -/Contents [13 0 R 4 0 R 299 0 R 15 0 R] -/Parent 320 0 R ->> -endobj -320 0 obj -<< -/Type /Pages -/Count 4 -/Kids [282 0 R 286 0 R 290 0 R 297 0 R] -/Parent 316 0 R ->> -endobj -316 0 obj -<< -/Type /Pages -/Count 15 -/Kids [317 0 R 318 0 R 319 0 R 320 0 R] -/Parent 3 0 R ->> -endobj -3 0 obj -<< -/Type /Pages -/Count 60 -/Kids [301 0 R 306 0 R 311 0 R 316 0 R] -/MediaBox [0 0 612 792] ->> -endobj -13 0 obj -<< -/Length 1 ->> -stream - -endstream -endobj -15 0 obj -<< -/Length 1 ->> -stream - -endstream -endobj -4 0 obj -<< -/Length 18 ->> -stream -1 0 0 1 72 720 cm -endstream -endobj -321 0 obj -<< ->> -endobj -322 0 obj -null -endobj -323 0 obj -<< ->> -endobj -2 0 obj -<< -/Type /Catalog -/Pages 3 0 R -/Outlines 321 0 R -/Threads 322 0 R -/Names 323 0 R ->> -endobj -xref -0 324 -0000000000 65535 f -0000635516 00000 n -0000644549 00000 n -0000644206 00000 n -0000644414 00000 n -0000635684 00000 n -0000002827 00000 n -0000492409 00000 n -0000000009 00000 n -0000000212 00000 n -0000510513 00000 n -0000001127 00000 n -0000001334 00000 n -0000644314 00000 n -0000002253 00000 n -0000644364 00000 n -0000002784 00000 n -0000635789 00000 n -0000005701 00000 n -0000523302 00000 n -0000002891 00000 n -0000003097 00000 n -0000004056 00000 n -0000005658 00000 n -0000635896 00000 n -0000011564 00000 n -0000525453 00000 n -0000005766 00000 n -0000005970 00000 n -0000542683 00000 n -0000006627 00000 n -0000006836 00000 n -0000007757 00000 n -0000011499 00000 n -0000636092 00000 n -0000011828 00000 n -0000011629 00000 n -0000011796 00000 n -0000636199 00000 n -0000016838 00000 n -0000011893 00000 n -0000016784 00000 n -0000636306 00000 n -0000027653 00000 n -0000553613 00000 n -0000016903 00000 n -0000017108 00000 n -0000556540 00000 n -0000018141 00000 n -0000018349 00000 n -0000562220 00000 n -0000019385 00000 n -0000019595 00000 n -0000020607 00000 n -0000027566 00000 n -0000636413 00000 n -0000035295 00000 n -0000573160 00000 n -0000027718 00000 n -0000027921 00000 n -0000028507 00000 n -0000035186 00000 n -0000636617 00000 n -0000044452 00000 n -0000035360 00000 n -0000044354 00000 n -0000636724 00000 n -0000052587 00000 n -0000044517 00000 n -0000052511 00000 n -0000636831 00000 n -0000056512 00000 n -0000052652 00000 n -0000056436 00000 n -0000636938 00000 n -0000065186 00000 n -0000575773 00000 n -0000056577 00000 n -0000056781 00000 n -0000057823 00000 n -0000065109 00000 n -0000637142 00000 n -0000074715 00000 n -0000065251 00000 n -0000074650 00000 n -0000637249 00000 n -0000083844 00000 n -0000074780 00000 n -0000083779 00000 n -0000637356 00000 n -0000092126 00000 n -0000083909 00000 n -0000092061 00000 n -0000637463 00000 n -0000098283 00000 n -0000579648 00000 n -0000092191 00000 n -0000092396 00000 n -0000581866 00000 n -0000093436 00000 n -0000093641 00000 n -0000094669 00000 n -0000098192 00000 n -0000637768 00000 n -0000098551 00000 n -0000098349 00000 n -0000098518 00000 n -0000637878 00000 n -0000107009 00000 n -0000098618 00000 n -0000106942 00000 n -0000637988 00000 n -0000113238 00000 n -0000107076 00000 n -0000113183 00000 n -0000638191 00000 n -0000120696 00000 n -0000113305 00000 n -0000120619 00000 n -0000638301 00000 n -0000126188 00000 n -0000120763 00000 n -0000126111 00000 n -0000638411 00000 n -0000132286 00000 n -0000126255 00000 n -0000132220 00000 n -0000638521 00000 n -0000137583 00000 n -0000132353 00000 n -0000137506 00000 n -0000638732 00000 n -0000145879 00000 n -0000137650 00000 n -0000145802 00000 n -0000638842 00000 n -0000153896 00000 n -0000145946 00000 n -0000153808 00000 n -0000638952 00000 n -0000162854 00000 n -0000153963 00000 n -0000162777 00000 n -0000639062 00000 n -0000171767 00000 n -0000162921 00000 n -0000171712 00000 n -0000639273 00000 n -0000180901 00000 n -0000171834 00000 n -0000180824 00000 n -0000639383 00000 n -0000190157 00000 n -0000180968 00000 n -0000190080 00000 n -0000639493 00000 n -0000199353 00000 n -0000190224 00000 n -0000199276 00000 n -0000639603 00000 n -0000206640 00000 n -0000199420 00000 n -0000206574 00000 n -0000639914 00000 n -0000213584 00000 n -0000206707 00000 n -0000213507 00000 n -0000640024 00000 n -0000220322 00000 n -0000213651 00000 n -0000220256 00000 n -0000640134 00000 n -0000229802 00000 n -0000220389 00000 n -0000229714 00000 n -0000640337 00000 n -0000239919 00000 n -0000585250 00000 n -0000229869 00000 n -0000230077 00000 n -0000231018 00000 n -0000239807 00000 n -0000640447 00000 n -0000248016 00000 n -0000239986 00000 n -0000247937 00000 n -0000640557 00000 n -0000251984 00000 n -0000248083 00000 n -0000251918 00000 n -0000640667 00000 n -0000257810 00000 n -0000252051 00000 n -0000257733 00000 n -0000640878 00000 n -0000263713 00000 n -0000257877 00000 n -0000263613 00000 n -0000640988 00000 n -0000270678 00000 n -0000263780 00000 n -0000270590 00000 n -0000641098 00000 n -0000272990 00000 n -0000270745 00000 n -0000272921 00000 n -0000641208 00000 n -0000279266 00000 n -0000273057 00000 n -0000279200 00000 n -0000641419 00000 n -0000289478 00000 n -0000279333 00000 n -0000289401 00000 n -0000641529 00000 n -0000298821 00000 n -0000289545 00000 n -0000298733 00000 n -0000641639 00000 n -0000302650 00000 n -0000298888 00000 n -0000302562 00000 n -0000641749 00000 n -0000309410 00000 n -0000302717 00000 n -0000309344 00000 n -0000642060 00000 n -0000312761 00000 n -0000309477 00000 n -0000312695 00000 n -0000642170 00000 n -0000316618 00000 n -0000312828 00000 n -0000316552 00000 n -0000642280 00000 n -0000322241 00000 n -0000316685 00000 n -0000322164 00000 n -0000642483 00000 n -0000327635 00000 n -0000322308 00000 n -0000327569 00000 n -0000642593 00000 n -0000334308 00000 n -0000327702 00000 n -0000334253 00000 n -0000642703 00000 n -0000343001 00000 n -0000334375 00000 n -0000342924 00000 n -0000642813 00000 n -0000343270 00000 n -0000343068 00000 n -0000343237 00000 n -0000643024 00000 n -0000371577 00000 n -0000595111 00000 n -0000343337 00000 n -0000343542 00000 n -0000605378 00000 n -0000344585 00000 n -0000344792 00000 n -0000620407 00000 n -0000345833 00000 n -0000346044 00000 n -0000626115 00000 n -0000347056 00000 n -0000347266 00000 n -0000348308 00000 n -0000371481 00000 n -0000643134 00000 n -0000395508 00000 n -0000371644 00000 n -0000395412 00000 n -0000643244 00000 n -0000420030 00000 n -0000395575 00000 n -0000419934 00000 n -0000643354 00000 n -0000442920 00000 n -0000420097 00000 n -0000442824 00000 n -0000643565 00000 n -0000470081 00000 n -0000442987 00000 n -0000469985 00000 n -0000643675 00000 n -0000475830 00000 n -0000470148 00000 n -0000475734 00000 n -0000643785 00000 n -0000489354 00000 n -0000633060 00000 n -0000475897 00000 n -0000476111 00000 n -0000477148 00000 n -0000489263 00000 n -0000643895 00000 n -0000492342 00000 n -0000489421 00000 n -0000492274 00000 n -0000637668 00000 n -0000636003 00000 n -0000636520 00000 n -0000637045 00000 n -0000637571 00000 n -0000639814 00000 n -0000638098 00000 n -0000638631 00000 n -0000639172 00000 n -0000639713 00000 n -0000641960 00000 n -0000640244 00000 n -0000640777 00000 n -0000641318 00000 n -0000641859 00000 n -0000644106 00000 n -0000642390 00000 n -0000642923 00000 n -0000643464 00000 n -0000644005 00000 n -0000644481 00000 n -0000644504 00000 n -0000644526 00000 n -trailer -<< -/Size 324 -/Root 2 0 R -/Info 1 0 R ->> -startxref -644648 -%%EOF diff --git a/contrib/bluegnu2.0.3/doc/dejagnu.ps b/contrib/bluegnu2.0.3/doc/dejagnu.ps deleted file mode 100644 index 78471ab..0000000 --- a/contrib/bluegnu2.0.3/doc/dejagnu.ps +++ /dev/null @@ -1,6690 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.85 Copyright 1999 Radical Eye Software -%%Title: dejagnu.dvi -%%Pages: 60 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%DocumentPaperSizes: a4 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -f dejagnu.dvi -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 1999.09.19:2152 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -TeXDict begin 39158280 55380996 1000 600 600 (dejagnu.dvi) -@start -%DVIPSBitmapFont: Fa cmtt12 14.4 6 -/Fa 6 118 df101 -D110 D114 D<903901FFF00F011F9038FE1F8090B612BF000315FF5A -5A5A393FFE003F01F01307D87FC0130190C8FC5A48157FA47EEE3F00D87FC091C7FC13F0 -EA3FFE381FFFF06CEBFFC06C14FE6C6E7EC615E0013F14F8010780D9003F7F02007F0307 -1380030013C0003EED3FE0007F151F48150F17F06D1407A37FA26D140F6D15E0161F01FC -EC3FC06D14FF9026FFC00F138091B612005E485D013F5C6D14E0D8FC0714802778007FF8 -C7FC2C3677B43E>I<147C14FC497EAD003FB712FC5AB87EA36C5EA2260001FEC9FCB3A6 -173FA2EF7F80A76E14FF6D16006F5A9238C007FE91387FF01F92B55A6E5C6E5C6E5C6E14 -80020149C7FC9138003FF031437DC13E>I<263FFF80EB7FFF4892B5FCB56C4880A36C80 -6C81D8003FEC007FB3AC17FFA25E5E80011F140F6E5B02FE90B612806DB812C06D17E083 -010114FE6DDAF83F13C0023F01E01480020790C9FC3B347FB23E>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fb cmbxti10 14.4 1 -/Fb 1 47 df<13FCEA03FF000F13804813C05AA25AA2B5FCA31480A214006C5A6C5A6C5A -EA0FE0121271912B>46 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fc cmsl9 9 23 -/Fc 23 122 df12 D<387FFFF8A4B512F015057D921A>45 D97 -D<137EEA1FFE5B123F1201A2120012015BA512035BA50007137F9038E1FFC09038E781F0 -9038FE00FC01F8137E49133E4848133FED1F805BA216C0A2121F5BA4153F003F158090C7 -FCA3ED7F00A24814FE007E5C4A5A007F13035D397B8007C039F1C01F8026E0E07EC7FC38 -C07FF838001FC0223578B32B>II<167EED1FFE16FC153F1501A416F8A41503A216F0A4150714FE903907FFC7 -E090381F81E790387E007749133F4848131F4848130F484814C0120F485AA24848131FA2 -007F158090C7FCA3153F5A481500A3127E5DA2157E6C14FE14016C13036C6C487E2607C0 -0E13F03803E07C3800FFF090393F80FC0027357BB32B>II<163C91387F01FF903901FFE3CF903907C1FF0F90391F80 -FC1F90393F007C0E017EEB3E005B153F485AA35D157E5BA25D6D5B0000495A90387C03E0 -9038FE0FC02601CFFFC7FC380383F80180C8FCA21207A37F90B57E6C14F015FC6C804880 -380F800048C7EA3F80003E141F48140F12FC5AA3151F16006C143E007C5C6C5C6CEB03F0 -3907E01FC00001B5C7FC38003FF028337FA126>103 DII108 D<90260F80FFEB07F82603FF839038 -C01FFE48903A8F03E0781F913B9C01F0E00F8026007FB8D9F9C013C0D93FF0EBFB8002E0 -EBFF0002C05B02805BA202005BA2490103141F017E4A1480A501FE0107143F494A1400A5 -0001020F5C494A137EA40003021F14FE3D7FFFC3FFFE1FFFF0A2B500C75C3C217EA041> -I<90380F80FE3A03FF83FF804890388F07E0EC9C0326007FB813F0EB3FF014E014C01480 -A2140015075B017E14E0A4150F13FE4914C0A4151F1201491480A40003143F3A7FFFC7FF -FCA2B5FC26217EA02B>I<14FF010713C090381F81F090383E00F80178133C4848133E48 -487FA248481480120F4848130FED1FC0123F90C7FCA25AA400FEEC3F80A31600007E5C15 -7EA25D003E5C003F495A6C495A6C6C485A6C6C485A2603F03EC7FC3800FFF8EB3FC02223 -7CA126>I<903803E07F9039FFE1FFC0489038E781F09138FE00FC26000FF8137E6D5A49 -487F17805C161F17C0A2131F5CA4163F013F158091C7FCA2167F17005E495C017E495A5E -017F13034B5A9039FF800FC06E485A9026FCE07EC7FCEC7FF8EC1FC091C9FC1201A25BA4 -1203A25B487EB512C05CA22A3080A02B>I<90383E03E03907FE1FF8143C000FEB71FC38 -007EE1EB7FC1EC81F815F091C7FCA2137EA213FE5BA512015BA512035BA41207B512C0A3 -1E217EA01E>114 D<903807F83890383FFF7890387C07F03801E0013803C00048481370 -A2120F90C712607FA26D130013F0EBFF806C13F86C13FE6C7F6C1480013F13C013019038 -001FE0140F003013071403A2007014C0A21278EC0780127CEC0F0000FE131E38F7807C38 -E1FFF038C07F801D237EA11E>I<13065BA4131CA25BA2137813F812011203485A381FFF -FEB5FCA23803F000A212075BA5120F5BA5121FEB8018A41438003F13301300A214706C13 -60EB80E0380F81C0EBC3803803FF00EA00FC172F7AAD1E>II<3A -7FFF803FFCA2B538007FF8D807F8EB1FC06C48EB0F00150E150C7F00015C153815306D5B -12005D140101FE5BD97E03C7FCA21406137F6D5A141C141814B0131F14E0A25C130F5C91 -C8FCA2130626217A9F29>I<3C7FFF1FFF80FFF0A2B5028113E03C0FF003FC007F800007 -6D48EB3E00171C0003010014185FA24A6C5B13F80001D9037C5BA20206495AA291260C7E -03C7FCD800FC5C9138183E060238130E0230130C9138703F18EB7E604A6C5AA2D97F805B -16E0D93F005B150F013E5CA2013C91C8FC131C0118130634217A9F37>I<3B03FFFC0FFF -C014F85A3B003FE007F800010FEB03E0ED0780010791C7FC903803F00E6E5A01015B6E5A -01005BEC7FC05D6EC8FC81141F4A7E4A7E14E7903801C7F0EB038390380701F8010E7FEB -1C00497F0178137ED801F8137F00074A7E267FFC0113FC00FF5BA22A207F9F29>I<90B5 -EB7FF8A248EDFFF026000FF0EB3F806D48EB1E00161C6E13180103143816305E8001015C -15015E6E48C7FC13001506150EECFE0CEC7E18A25D147F6E5A15E05D5D141F92C8FCA214 -0E140CA25C143814305CA25CEA3C01007C5BD8FC03C9FC5B130EEA701CEA7878EA3FE0EA -0F802D30819F29>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fd cmti9 9 16 -/Fd 16 121 df<121C127F12FFA412FE12380808778718>46 D97 -D<14FCEB07FF90381F078090383E03C0EBFC013801F8033803F0073807E00F13C0120F39 -1F80070091C7FC48C8FCA35A127EA312FE5AA4007C14C0EC01E0A2EC03C06CEB0F80EC1F -006C137C380F81F03803FFC0C648C7FC1B2278A023>99 DII104 DI<133FEA -07FF5A13FEEA007EA3137CA213FCA213F8A21201A213F0A21203A213E0A21207A213C0A2 -120FA21380A2121FA21300A25AA2123EA2127EA2127C1318EAFC1C133CEAF838A2137813 -7012F013F0EAF8E01279EA3FC0EA0F00103579B314>108 D<2703C003F8137F3C0FF00F -FE01FFC03C1E783C1F07C1E03C1C7CF00F8F01F03B3C3DE0079E0026383FC001FC7FD97F -805B007001005B5E137ED8F0FC90380FC00100E05FD860F8148012000001021F13036049 -1400A200034A13076049013E130FF081800007027EEC83C0051F138049017C1403A2000F -02FC1407053E130049495CEF1E0E001F01015D183C010049EB0FF0000E6D48EB03E03A22 -7AA03F>I<3903C007F0390FF01FFC391E787C1E391C7CF01F393C3DE00F26383FC01380 -EB7F8000781300EA707EA2D8F0FC131F00E01500EA60F8120000015C153E5BA20003147E -157C4913FCEDF8180007153C0201133801C013F0A2000F1578EDE070018014F016E0001F -ECE1C015E390C7EAFF00000E143E26227AA02B>I<011E137C90387F81FF9039F3C387C0 -9039E3EF03E03901E1FE01D9C1FC13F0EBC3F8000313F0018314F814E0EA078713070003 -13C01200010F130316F01480A2011F130716E01400A249EB0FC0A2013EEB1F80A2017EEB -3F00017F133E5D5D9038FF81F09038FDC3E09038F8FF80027EC7FC000190C8FCA25BA212 -03A25BA21207A25BB5FCA325307FA027>112 D<3903C00FC0390FF03FF0391E78F07839 -1C7DE03C393C3FC0FC00381380EB7F00007814F8D8707E13701500EAF0FC12E0EA60F812 -001201A25BA21203A25BA21207A25BA2120FA25BA2121FA290C8FC120E1E227AA020> -114 D<1303EB0F80A3131FA21400A25BA2133EA2137EA2137C387FFFF8A2B5FC3800F800 -A21201A25BA21203A25BA21207A25BA2120FA25B1460001F13F014E01300130114C01303 -001E1380EB07005BEA0F1EEA07F8EA01E015307AAE19>116 D<01F01338D803FC13FCEA -0F1E120E121C123C0038147CEA783E0070143CA2137ED8F07C1338EA60FCC65A15780001 -14705BA215F0000314E05BA2EC01C0A2EBC003158014071500EBE00EA26C6C5A3800F878 -EB7FE0EB1F801E227AA023>118 DI<011F137C90387FC1FF3A01E1E787803A03C0F703C0903880FE0FEA07 -004813FC000E1580001E9038F80700001C91C7FC1301003C5B1218120013035CA31307A2 -5C1506010F130F150E14800038141ED87C1F131C00FC143C1538013F5B39F07FC0E03970 -F3C3C0393FE1FF80260F807EC7FC22227CA023>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe cmr9 9 71 -/Fe 71 123 df<91393FE00FE0903A01FFF83FF8903A07E01EF83C903A1F800FF07E903A -3F001FE0FE017E133F4914C0485A1738484890381F8000ACB812C0A33B03F0001F8000B3 -A7486C497EB50083B5FCA32F357FB42D>11 DI14 D<003C13F0387E01F838FF03FCA2EB83FEA2EA7F81383D -80F600011306A40003130EEB000CA248131C00061318000E1338000C1330001C13704813 -E0387001C00060138017177EB326>34 D<123C127EB4FCA21380A2127F123D1201A41203 -1300A25A1206120E120C121C5A5A126009177AB315>39 D<14C01301EB0380EB0F00130E -5B133C5B5BA2485A485AA212075B120F90C7FC5AA2121E123EA3123C127CA55AB0127CA5 -123C123EA3121E121FA27E7F12077F1203A26C7E6C7EA213787F131C7F130FEB0380EB01 -C01300124A79B71E>I<12C07E1270123C121C7E120F6C7E6C7EA26C7E6C7EA27F137813 -7C133C133EA2131E131FA37F1480A5EB07C0B0EB0F80A514005BA3131E133EA2133C137C -137813F85BA2485A485AA2485A48C7FC120E5A123C12705A5A124A7CB71E>I<123C127E -B4FCA21380A2127F123D1201A412031300A25A1206120E120C121C5A5A126009177A8715 ->44 D<123C127E12FFA4127E123C08087A8715>46 D48 D<13075B5B137FEA07FFB5FC13BFEAF83F1200B3B3A2497E -007FB51280A319327AB126>IIII<000C14C0380FC00F90B5128015005C5C14 -F014C0D80C18C7FC90C8FCA9EB0FC0EB7FF8EBF07C380FC03F9038001F80EC0FC0120E00 -0CEB07E0A2C713F01403A215F8A41218127E12FEA315F0140712F8006014E01270EC0FC0 -6C131F003C14806CEB7F00380F80FE3807FFF8000113E038003F801D347CB126>I<14FE -903807FF80011F13E090383F00F0017C13703901F801F8EBF003EA03E01207EA0FC0EC01 -F04848C7FCA248C8FCA35A127EEB07F0EB1FFC38FE381F9038700F809038E007C039FFC0 -03E0018013F0EC01F8130015FC1400A24814FEA5127EA4127F6C14FCA26C1301018013F8 -000F14F0EBC0030007EB07E03903E00FC03901F81F806CB51200EB3FFCEB0FE01F347DB1 -26>I<1230123C003FB6FCA34814FEA215FC0070C7123800601430157015E04814C01401 -EC0380C7EA07001406140E5C141814385CA25CA2495A1303A3495AA2130FA3131F91C7FC -A25BA55BA9131C20347CB126>III<123C127E12FFA4127E123C1200B0123C127E12FFA412 -7E123C08207A9F15>I<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A6C7EA2 -02707FEC601FA202E07FECC00FA2D901807F1507A249486C7EA301066D7EA2010E80010F -B5FCA249800118C77EA24981163FA2496E7EA3496E7EA20001821607487ED81FF04A7ED8 -FFFE49B512E0A333367DB53A>65 D67 -DIIII73 D<017FB5FCA39038003FE0EC1FC0 -B3B1127EB4FCA4EC3F805A0060140000705B6C13FE6C485A380F03F03803FFC0C690C7FC -20357DB227>IIII -IIIII<90381FE00390387FFC0748B5FC3907F01FCF390F8003FF -48C7FC003E80814880A200788000F880A46C80A27E92C7FC127F13C0EA3FF013FF6C13F0 -6C13FF6C14C06C14F0C680013F7F01037F9038003FFF140302001380157F153FED1FC015 -0F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C147E01C05B39F1FC03F800E0B5 -12E0011F138026C003FEC7FC22377CB42B>I<007FB712FEA390398007F001D87C00EC00 -3E0078161E0070160EA20060160600E01607A3481603A6C71500B3AB4A7E011FB512FCA3 -30337DB237>I86 -DI<267FFFFC90B512C0A3000101E090381FF8 -0026007F80EB0FC0013F6E5A6E91C7FC6D6C130E010F140C6E5B6D6C133801035C6E1360 -6D6C13E06D6C485A5EDA7F83C8FCEC3FC715C6EC1FECEC0FFC5D14076E7EA26E7E815C6F -7E9138063FC0140E4A6C7E9138180FF0EC380702707F91386003FCECC0010101804A6C7E -49C77E4981010E6E7E010C6E7E131C496E7E01786E7E13FCD807FEEC1FFEB56C90B512F8 -A335337EB23A>I91 -D<0003130C48131C000E133848137000181360003813E0003013C0EA700100601380A2EA -E00300C01300A400DE137800FF13FCEB83FEA2EA7F81A2383F00FC001E1378171774B326 ->II<12035A120E5A121812381230127012 -60A212E05AA412DEB4FC1380A2127FA2EA3F00121E09177BB315>96 -DIII<153FEC0FFFA3EC007F81AEEB07F0EB3FFCEBFC0F3901F003BF3907E001FF48487E -48487F8148C7FCA25A127E12FEAA127E127FA27E6C6C5BA26C6C5B6C6C4813803A03F007 -BFFC3900F81E3FEB3FFCD90FE0130026357DB32B>III<15 -1F90391FC07F809039FFF8E3C03901F07FC73907E03F033A0FC01F83809039800F800000 -1F80EB00074880A66C5CEB800F000F5CEBC01F6C6C48C7FCEBF07C380EFFF8380C1FC000 -1CC9FCA3121EA2121F380FFFFEECFFC06C14F06C14FC4880381F0001003EEB007F4880ED -1F8048140FA56C141F007C15006C143E6C5C390FC001F83903F007E0C6B51280D91FFCC7 -FC22337EA126>IIIIII<2703F01FE013FF00FF90267FF80313C0903BF1E07C0F03E0903BF3803E1C01 -F02807F7003F387FD803FE1470496D486C7EA2495CA2495CB3486C496C487EB53BC7FFFE -3FFFF0A33C217EA041>I<3903F01FC000FFEB7FF09038F1E0FC9038F3807C3907F7007E -EA03FE497FA25BA25BB3486CEB7F80B538C7FFFCA326217EA02B>II<3903F03F8000FFEBFFE09038F3C0F89038F700 -7ED807FE7F6C48EB1F804914C049130F16E0ED07F0A3ED03F8A9150716F0A216E0150F16 -C06D131F6DEB3F80160001FF13FC9038F381F89038F1FFE0D9F07FC7FC91C8FCAA487EB5 -12C0A325307EA02B>I<903807F00390383FFC07EBFC0F3901F8038F3807E001000F14DF -48486CB4FC497F123F90C77E5AA25A5AA9127FA36C6C5B121F6D5B000F5B3907E003BF39 -03F0073F3800F81EEB3FF8EB0FE090C7FCAAED7F8091380FFFFCA326307DA029>I<3803 -E07C38FFE1FF9038E38F809038E71FC0EA07EEEA03ECA29038FC0F8049C7FCA35BB2487E -B512E0A31A217FA01E>II<13 -30A51370A313F0A21201A212031207381FFFFEB5FCA23803F000AF1403A814073801F806 -A23800FC0EEB7E1CEB1FF8EB07E0182F7FAD1E>IIIII<3A7FFF807F -F8A33A07F8001FC00003EC0F800001EC070015066C6C5BA26D131C017E1318A26D5BA2EC -8070011F1360ECC0E0010F5BA2903807E180A214F3010390C7FC14FBEB01FEA26D5AA314 -78A21430A25CA214E05CA2495A1278D8FC03C8FCA21306130EEA701CEA7838EA1FF0EA0F -C025307F9F29>I<003FB512F0A2EB000F003C14E00038EB1FC00030EB3F800070137F15 -00006013FE495A13035CC6485A495AA2495A495A49C7FC153013FE485A12035B48481370 -485A001F14604913E0485A387F000348130F90B5FCA21C207E9F22>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ff cmtt9 9 51 -/Ff 51 122 df<00101320007C13F838FE01FCAAEAFC00007C13F8A900381370161778AE -27>34 D40 D<127012F812FE7E6C7E6C7EEA0FE06C7E12 -037F6C7E1200137EA27FA2EB1F80A3EB0FC0A4EB07E0ACEB0FC0A4EB1F80A3EB3F00A213 -7EA25B1201485A5B1207485AEA3FC0485A48C7FC5A12F81270133A7AB327>I<007FB512 -F8B612FCA46C14F81E067C9927>45 D<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A72 -8927>I<1538157C15FCA2140115F8140315F0140715E0140F15C0141F1580143F1500A2 -5C147E14FE5C13015C13035C13075C130F5CA2131F5C133F91C7FC5B137E13FE5B12015B -12035BA212075B120F5B121F5B123F90C8FC5A127E12FE5AA25A12781E3A7CB327>II<007FB512FEB7FCA4003F14FEC9FCA6003FB512FEB7FCA46C14FE20 -127D9F27>61 D65 D<387FFFFC14FFB612C06C80813907E00FF81407EC -01FC6E7EA2157E157F811680151FA316C0150FABED1F80A3153F1600A25D15FEA24A5A4A -5A140F007FB55A5DB65A6C91C7FC14FC222E7FAD27>68 D<007FB61280B712C0A37E3907 -E0000FA6ED078092C7FCA4EC07804A7EA390B5FCA5EBE00FA36E5A91C8FCA4ED03C0ED07 -E0A7007FB6FCB7FCA36C15C0232E7FAD27>I<007FB61280B712C0A37E3907E0000FA6ED -078092C7FCA4EC07804A7EA390B5FCA5EBE00FA36E5A91C8FCAC387FFF80B57EA36C5B22 -2E7EAD27>I<903807F03890381FFC7C90387FFFFC90B5FC5A3803FC1F3807F00F380FE0 -07EBC003001F13011380123F90C7FCA2127EA2157892C7FC5AA8EC1FFF4A1380A3007E6D -1300EC00FCA36C1301A21380121FEBC003120FEBE0073807F00F3803FC1F6CB5FC7EEB7F -FE90381FFC78D907F0C7FC21307DAE27>I<007FB512E0B612F0A36C14E039001F8000B3 -B2007FB512E0B612F0A36C14E01C2E7BAD27>73 D<387FFFC080B5FC7E5CD803F0C8FCB3 -AAED0780ED0FC0A7007FB6FCA2B7FC7E1680222E7FAD27>76 D<3A7FF003FFE0486C4813 -F0A213FC007F6D13E000079038003E0013DEA313CFA3148013C714C0A213C314E0A213C1 -14F0A3EBC0F8A31478147CA2143C143EA2141E141F140FA3EC07BEA3EC03FEEA7FFCEAFF -FE1401A26C486C5A242E7FAD27>78 DI<007FB5FCB612E081816C8039 -07E003FEEC00FF81ED3F80151F16C0150FA6151F1680153FED7F005DEC03FE90B55A5D5D -5D92C7FC01E0C8FCADEA7FFEB5FCA36C5A222E7FAD27>I<387FFFF0B512FE6E7E816C80 -3907E01FF014076E7E1401811400A514015D14034A5A141F90B55A5D5DA281EBE01F6E7E -14076E7EA816F0EDF1F8A4397FFE01FBB5EBFFF08016E06C48EB7FC0C8EA1F00252F7FAD -27>82 D<90387FC0E03901FFF1F0000713FF5A5AEA3FE0EB801F387F000F007E130712FE -5A1403A3EC01E06C90C7FC127E127FEA3FC013F86CB47E6C13F86C13FE6CEBFF80C614C0 -010F13E0010013F0140FEC07F81403140115FC1400127812FCA46CEB01F8A26C13039038 -8007F09038F01FE090B5FC15C0150000F85B38701FF81E307CAE27>I<007FB61280B712 -C0A439FC03F00FA60078EC0780000091C7FCB3AB90B512C04880A36C5C222E7EAD27>I< -3A7FFE01FFF8B54813FCA36C486C13F83A07E0001F80B3AB6D133F00031500A26D5B0001 -147E6D13FE6C6C485A90387F87F814FF6D5B010F13C06D5BD901FEC7FC262F80AD27>I< -3A7FFC03FFE06D5A00FF15F0007F15E0497E3A07E0007E00A46C6C5BA4EBF80100015CA4 -6C6C485AA490387E07E0A56D485AA4011F5B149FA3010F90C7FCA5EB07FEA46D5AA26D5A -242F7FAD27>II<393FFC1FFE387FFE -3F815D383FFC1F3903F00FE001F85B1201EBFC1F00005CEBFE3F017E90C7FCEB7F7FEB3F -7E14FE6D5AA26D5AA26D5AA21303130780130F80131F80EB3F7E147F497E017E7F141F01 -FC7F140FD801F87F14071203496C7E120701E07F3A7FFC0FFF8000FF15C06D5A497E007F -1580222E7EAD27>I<007FB512F8B612FCA46C14F81E067C7E27>95 -D<3803FFC0000F13F04813FC4813FF811380EC1FC0381F000F000480C71207A2EB0FFF13 -7F0003B5FC120F5A383FFC07EA7FC0130012FE5AA46C130F007F131FEBC0FF6CB612806C -15C07E000313F1C69038807F8022207C9F27>97 DIIIII<153F9039 -1FC0FF80D97FF313C048B612E05A4814EF390FF07F873A1FC01FC3C0EDC000EB800F4848 -6C7EA66C6C485AEBC01FA2390FF07F8090B5C7FC5C485BEB7FF0EB1FC090C9FCA27F6CB5 -FC15E015F84814FE4880EB8001007EC7EA3F80007C140F00FC15C0481407A46C140F007C -1580007F143F6C6CEB7F009038F807FF6CB55A000714F86C5CC614C0D90FFCC7FC23337E -A027>II<130F497E49 -7EA46D5A6DC7FC90C8FCA7383FFF80487FA37EEA000FB3A4007FB512F0B6FC15F815F07E -1D2F7BAE27>I<143C147E14FFA4147E143C1400A73801FFFE4813FFA37EC7123FB3B014 -7E1238007C13FE38FE01FC1303B512F814F06C13E06C13803807FE0018407CAE27>II<387FFF80B57E -A37EEA000FB3B2007FB512F8B612FCA36C14F81E2E7CAD27>I<397F07C01F3AFF9FF07F -C09039FFF9FFE091B57E7E3A0FFC7FF1F89038F03FC001E0138001C01300A3EB803EB03A -7FF0FFC3FF486C01E3138001F913E701F813E36C4801C313002920819F27>I<387FE07F -39FFF1FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B5BA25BB03A7FFF83FFE0B5 -00C713F0A36C018313E024207F9F27>II<387FE0FFD8FFF313C090B512F0816C800003EB81FE49C67E49EB3F804913 -1F16C049130FA216E01507A6150F16C07F151F6DEB3F80157F6DEBFF009038FF83FEECFF -FC5D5D01F313C0D9F0FEC7FC91C8FCAC387FFF80B57EA36C5B23317F9F27>I<90380FF0 -3C90383FFE7E90B5FC000314FE5A380FFC1F381FE007EBC003383F800148C7FC127EA200 -FE147E5AA67E007E14FEA2007F1301EA3F80EBC003381FE007380FF81F6CB5FC7E6C147E -38007FFCEB0FF090C7FCAC91381FFFF8A24A13FC6E13F8A226317E9F27>I<397FFC03FC -39FFFE0FFF023F13804A13C0007F90B5FC39007FFE1F14F89138F00F809138E002004AC7 -FC5CA291C8FCA2137EAD007FB57EB67EA36C5C22207E9F27>I<9038FFF3800007EBFFC0 -121F5A5AEB803F38FC000F5AA2EC07806C90C7FCEA7F8013FC383FFFF06C13FC000713FF -00011480D8000F13C09038003FE014070078EB03F000FC1301A27E14036CEB07E0EBE01F -90B512C01580150000FB13FC38707FF01C207B9F27>I<133C137EA8007FB512F0B612F8 -A36C14F0D8007EC7FCAE1518157EA415FE6D13FC1483ECFFF86D13F06D13E0010313C001 -0013001F297EA827>I<397FE01FF8486C487EA3007F131F00031300B21401A21403EBFC -0F6CB612E016F07EEB3FFE90390FF87FE024207F9F27>I<3A7FFC0FFF80486C4813C0A3 -6C486C13803A07C000F800EBE00100035CA2EBF00300015CA2EBF80700005CA390387C0F -80A36D48C7FCA3EB3F3FEB1F3EA214FE6D5AA36D5AA26D5A22207E9F27>I<3A7FFE07FF -E000FF15F06D5A497E007F15E03A0F80001F00A36D5B0007143EA414F0EBC1F83903E3FC -7CA4EBE79EA200011478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E024207F9F27> -I<393FFC1FFF486C5A168016006C487E3901F807E06C6C485A4A5A017E90C7FC6D5AEB1F -7E5C6D5A13076D5A5C80497E130F497E143EEB3E3FEB7E1F90387C0F8001F87F00016D7E -3803F0033A7FFE1FFF80A2B54813C06C486C1380A222207E9F27>I<3A7FFC0FFF80486C -4813C0A36C486C13803A07E000F800000313015D13F00001130301F85B1200A26D485A13 -7CA290387E0F80133EA2011F90C7FC5CA2130F149E14BE130714FC1303A25C1301A25CA2 -13035CA213075C1208EA3E0F007F5B131FD87E7FC8FCEA7FFE6C5A5B6C5AEA07C022317E -9F27>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg cmtt12 13.14 5 -/Fg 5 121 df99 D101 -D112 D116 D<3B3FFFE007FFFC486D487FB56C487F -A36C496C5B6C496C5B28007F8000FEC7FC013F495A6D6C485A6D6C485AEB07F04B5A6D6C -485AD901FC5B903800FE3F4BC8FCEC7FFE6E5A141F6E5A5D6E5A814A7E141F4A7E157EEC -7E7F4A7E01016D7E02F87F49486C7E0107130749486C7E02C07F011F6D7E49486C7E49C7 -FC167F277FFFE003B5FCB56C481480A56C496C1400312F7DAE38>120 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fh cmb10 10.95 45 -/Fh 45 121 df<147814F81301EB03F0EB07E0EB0FC0A2EB1F80133FEB7F00A213FEA248 -5A1203A25B1207A2485AA3121F5BA2123FA4485AA612FFB3A2127FA66C7EA4121FA27F12 -0FA36C7EA212037FA212016C7EA2137FA2EB3F80131FEB0FC0A2EB07E0EB03F0EB01F813 -001478155A78C323>40 D<127012F87E127E7E6C7EA26C7E7F6C7EA26C7EA26C7E7FA212 -007FA2EB7F80A314C0133FA214E0A4EB1FF0A614F8B3A214F0A6EB3FE0A414C0A2137F14 -80A3EBFF00A25B1201A25B485AA2485AA2485A5B485AA248C7FC127E5A5A1270155A7BC3 -23>I44 D46 D48 D<143C147CEB01FC1307131FEA03FFB5FCA4EAFC1F -1200B3B3A8007FB6FCA5203C7ABB2D>III<000E1407D80F80133F9038F801FF90B6FC5D5DA25D5D5D158092C7FC14FC -14F00180C8FCA9EB87FE90389FFFC090B512F0819038FC0FFC9038F007FE9038C003FF01 -80148016C0497EC714E0A416F0A21207EA1FC0EA3FE0EA7FF012FF13F8A316E013F0A26C -484813C01380D87E0014806C491300391FC00FFE390FF03FFC6CB55A6C5C6C14C06C91C7 -FCEB1FF8243D7CBB2D>53 DI56 DI65 -DI68 DI73 -D75 D77 D80 D85 DII97 D<13FFB5FCA512077EAF4AB4FC020F13E0023F13F891B57E9138 -FE07FFDAF8011380DAE00013C05C4AEB7FE017F0A3EE3FF8A317FCAC17F8A3EE7FF0A217 -E06E13FF17C06E481380DAF80313009138FE0FFE9039FC7FFFFC496C13F0496C13C0C7D8 -03FEC7FC2E407FBE33>II<16FF92B5FCA5150781AFEB01FF011F13E3017F13FB90B7FC -4813C148EB003F48487F48487F001F805B123FA2485AA312FFAC127FA36C7EA3001F5C6C -6C5B00074A13806D4913FC2603FF83B5FCC690B6FC6D13F7011F13C7903A03FE07FC002E -407DBE33>I<49B47E010F13F0013F7F90B512FE48EBC3FF48010013804848EB7FC04848 -133F001F15E05B003FEC1FF0A2485A150F16F8A212FFA290B6FCA401F0C8FCA5127FA37F -003F15F8A26C6C1301000F15F06D13036C6CEB07E06C9038800FC06C9038F07F806C6CB5 -12006D5B010F13F8010013C0252B7EA92A>III<13FFB5FCA512077EAFED7FE0913801FFF802077F4A7F9138 -1FC3FFDA3E031380147CEC780102F014C014E0A214C0A31480B3A4B5D8FE1F13FFA5303F -7EBE33>III<13FFB5FCA512077EB092B512E0A592380FE0004B5A4B5A4BC7FC15FE4A5A4A5A -4A5A4A5A4A5A143FECFFE0A28181A2ECDFFCEC8FFE140F6E7E6E7FA26E7F6E7FA26F7E6F -7EA26F7E6F7EB539FC7FFFF8A52D3F7FBE30>I<13FFB5FCA512077EB3B3AFB512FCA516 -3F7EBE19>I<01FFD97FE0EB3FF0B52601FFF8EBFFFC0207D9FC037F4A6D487F91281FC3 -FF0FE17FDA3E03D99F017F0007017C14BE6CD97801EBBC0002F002F88002E05CA202C05C -A302805CB3A4B5D8FE1FD9FF0FEBFF80A549297EA84C>I<01FFEB7FE0B53801FFF80207 -7F4A7F91381FC3FFDA3E0313800007137C6CEB780102F014C014E0A214C0A31480B3A4B5 -D8FE1F13FFA530297EA833>I<49B47E010F13F0013F13FC90B6FC48018113803A03FE00 -7FC04848EB3FE0000F15F049131F001F15F8A24848EB0FFCA2007F15FEA400FF15FFAB00 -7F15FEA3003F15FC6D131F001F15F8A26C6CEB3FF0000715E06C6CEB7FC03A01FF81FF80 -6C90B51200013F13FC010F13F001011380282B7EA92D>I<9038FF01FFB5000F13E0023F -13F891B57E9138FE0FFFDAF80313800003D9E00113C014C04A6C13E017F0167FA217F8A2 -163F17FCACEE7FF8A317F016FF17E0804B13C06E481380DAF80713009138FE0FFE91B55A -02BF13F0029F13C0DA83FEC7FC0280C8FCACB512FEA52E3B7FA833>I<3901FE07F800FF -EB0FFE91383FFF804A13C0EC7C7F9138F8FFE03807FFF06C5B5CA2ED7FC09138803F80ED -1F0092C7FCA291C8FCB3A3B6FCA523297FA827>114 D<90387FE1E03803FFFB4813FF5A -381FE07F383F801F387F000F007E130712FE1403A27EA26DC7FC13F013FF6C13F014FC6C -13FF15806C14C07E6C14E0000114F06C7E010313F8EB003F140F0078130712F814037EA3 -6C14F06C1307A29038800FE09038F03FC090B51280150000F813FC38E03FF01D2B7DA924 ->I<131FA65BA55BA25BA25A5A5A001FEBFFC0B6FCA4000790C7FCB3EC03E0A97EEC87C0 -A26CEBCF806C13FF6D1300EB1FFEEB07F81B3B7EB923>II119 -D<3B7FFFFC7FFFE0A5C69039E007E0004B5A90387FF01FD93FF85B4BC7FC90381FFC7EEB -0FFE5D6D6C5A7F5D6D5B7FA26E7E143F814A7E14FF81497FEB03F301078002E17FEB0FC0 -49487F6F7E90383F003F017E806F7EB500E0B512F8A52D287FA730>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fi cmbx12 13.14 37 -/Fi 37 122 df<923807FFE092B512FC020714FF021F81027F9038007FC0902601FFF0EB -0FE04901C0497E4990C7487ED90FFC147F011F824A14FF495AA2137F5CA2715A715A715A -EF078094C8FCA7EF07FCB9FCA526007FF0C7123F171FB3B3A2003FB5D8E00FB512F8A53D -4D7ECC44>12 D46 D48 D<15F014011407141F147FEB03FF137FB6FCA313FC1380C7FCB3 -B3B2007FB712E0A52B4777C63D>IIIII<121F7F7F13FE90B812E0 -A45A18C0188018005F5FA25F485E90C8EA07E0007E4B5A5F007C151F4CC7FC167E5E485D -15014B5A4B5AC8485A4B5AA24BC8FC157EA25D1401A24A5A1407A24A5AA2141FA24A5AA2 -147FA314FFA3495BA45BA55BAA6D5BA26D90C9FCEB007C334B79C93D>55 -D<93261FFF80EB01C00307B500F81303033F02FE13074AB7EAC00F0207EEE03F021F903A -FE007FF87F027F01E0903807FCFF91B5C70001B5FC010301FC6E7E4901F0151F4901C081 -4949814990C97E494882494882485B48197F4A173F5A4A171F5A5C48190FA2485B1A07A2 -5AA297C7FC91CDFCA2B5FCAD7EA280A2F207C07EA36C7FA26C190F6E18807E6E171F6C1A -006E5F6C193E6C6D177E6D6C5F6D6C4C5A6D6D15036D6D4B5A6D01F04B5A6D01FCED3FC0 -010001FFEDFF806E01E0D903FEC7FC021F01FEEB3FFC020790B612F002015EDA003F92C8 -FC030714FCDB001F13804A4D79CB59>67 D -I70 D73 -D76 DI80 D82 -DI85 DI97 DI<91380FFF8091B512F8010314FF010F15804948 -C613C0D97FF8EB1FE0D9FFE0EB3FF04849137F4849EBFFF84890C7FCA2485A121FA24848 -EC7FF0EE3FE0EE1FC0007F92C7FC5BA212FFAC127FA27FA2123FA26C6C153EA26C6C157E -177C6C6D14FC6C6D14F86C6D13036C6DEB07F0D97FFCEB1FE06DB4EBFFC0010F90B51200 -01035C010014F0020F13802F347CB237>III103 D<13FCEA03FF487F487FA2487FA66C5BA2 -6C5B6C90C7FCEA00FC90C8FCABEB7FC0B5FCA512037EB3B3A2B61280A5194D7BCC22> -105 D108 -D<90287FC001FFC0EC7FF0B5010F01FC0103B5FC033F6D010F804B6D4980DBFE07902680 -3F817F9126C1F801903AC07E007FF00003D9C3E0DAE0F8806C9026C78000D9F1E06D7E02 -CFC7EBF3C002DEEDF780DD7FFF6E7E02FC93C7FC4A5DA24A5DA34A5DB3AAB6D8C03FB5D8 -F00FB512FCA55E327BB167>I<903A7FC001FFC0B5010F13F8033F7F4B13FFDBFE077F91 -38C1F00300039026C3E0017F6CD9C78080ECCF0014DE02DC6D7F14FC5CA25CA35CB3AAB6 -D8C07FEBFFE0A53B327BB144>I<913807FF80027F13F80103B6FC010F15C090261FFE01 -7F903A7FF0003FF849486D7E480180EB07FE4890C76C7E4817804980000F17C048486E13 -E0A2003F17F0A249157F007F17F8A400FF17FCAB007F17F8A46C6CEDFFF0A2001F17E0A2 -6C6C4A13C0A26C6C4A13806C6D4913006C5E6C01E0EB1FFC6D6C495A903A3FFE01FFF001 -0FB612C0010392C7FCD9007F13F80207138036347DB23D>I<90397FC007FFB5017F13E0 -02C1B512FC02C714FF9126CFF80F7F9126DFC0037F000301FFC77F6C496E7E02F8814A6E -7E717E4A81831980A28319C0A37113E0AC19C05FA319805F19005F606E143F6E5D4D5A6E -4A5A02FF495BDBC0075B9126EFF01F5B02E7B548C7FC02E114F8DAE07F13E0DB0FFEC8FC -92CAFCAFB612C0A53B477CB144>I<9039FF803FE0B5EBFFF8028113FE02837FDA87E113 -80EC8F830003D99F0713C06C139E14BCA214F8A24A6C13806F13006F5A4A90C7FCA45CB3 -A8B612E0A52A327CB132>114 D<903907FF8070017FEBF1F048B6FC1207380FFC01391F -E0003F4848130F491307127F90C71203A2481401A27FA27F01F090C7FC13FCEBFFC06C13 -FEECFFE06C14FC6C806CECFF806C15C06C15E06C15F06C7E011F14F8010114FCEB000FEC -007FED1FFE0078140F00F8140715037E1501A27E16FC7E15036D14F86D13076D14F001F8 -EB1FE001FFEBFFC04890B51280486C1400D8F81F13FCD8E00313C027347CB230>I<14F8 -A51301A41303A21307A2130FA2131F133F137F13FF1203000F90B512F0B7FCA426007FF8 -C7FCB3A7167CAA013F14F880A290391FFE01F0010F1303903907FF87E06DEBFFC06D1480 -6D6C1300EC0FFC26467EC430>II<007FB500C090387FFFE0A5C601F0C73803F8006E -5D017F5E6E1407013F5E80170F011F5E6E141F6D93C7FC6F5B6D153E6F137E6D157C6F13 -FCA26D6D5B16016D5DEDF803027F5CEDFC07023F5CEDFE0F021F5C15FF161F6E91C8FC16 -BF6E13BE16FE6E5BA26E5BA36E5BA26F5AA26F5AA26F5AA393C9FC5D153E157E157CD81F -8013FC486C5B387FE001D8FFF05B14035D14074A5A49485A007F133F4948CAFC383F81FE -381FFFF86C5B6C13C0C648CBFC3B477EB041>121 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fj cmr8 8 6 -/Fj 6 100 df45 D67 D69 -D82 -D<007FB712F8A29039000FC003007C150000701638A200601618A200E0161CA248160CA5 -C71500B3A94A7E011FB512E0A22E2D7EAC33>84 D99 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fk cmsy9 9 2 -/Fk 2 106 df104 D<126012F07EA21278127CA27EA2 -121E121FA26C7EA212077FA26C7EA212017FA26C7EA21378137CA27FA2131E131FA2EB0F -80A2130714C0A41480130FA2EB1F00A2131E133EA25BA2137813F8A2485AA25B1203A248 -5AA25B120FA248C7FCA2121E123EA25AA2127812F8A25A1260124A7CB71E>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fl cmtt12 17.28 6 -/Fl 6 118 df101 D110 D114 D<913A1FFF800F800103B5EA -F81F011F9138FF3FC0017F15FF48B8FC5A5A5A5A48EBE00049C7121FD87FF880491403D8 -FFC080A25B82A37FEF7F806C7E01F892C7FC13FE383FFFC06C13FE6CEBFFF86CECFFE06C -15FC6CEDFF806C6C15F0011F81010315FED9007F8002011580DA000F14C0DB003F13E016 -07040113F0D83F809138007FF8007F163F486CED1FFC170F7F1707A27FA26D150FA27F6D -ED1FF86D157F02C0ECFFF06E130302FC013F13E091B712C0A2188001BF1600019F15FC01 -0F15F0010315C0267E007F49C7FC007C010713E0364176BF4A>II<263FFFF049B57E486D49806E82B55CA36C81A26C81 -D8000F91C7127FB3B118FFA35F5F6E5C5F6E5C6D6D137FDBF003B612F86D90B812FCA26D -18FE7F6E4A7E6E02FC14FC6EECE03F0207DA801F13F89126007FF8C9FC473F7FBD4A>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fm lcircle10 10 4 -/Fm 4 12 df8 D<1818183CA7187CA21878A418F8A218F01701A218E01703A218C01707 -A2EF0F80171F1800173EA25F17FC5F4C5A16034C5A4C5A4C5A4CC7FC167E5EED03F84B5A -ED1FC0ED7F80DA01FEC8FCEC07FCEC3FF0903803FFC0017F90C9FC387FFFFCB512E049CA -FCEA7FC03636B2B564>I<126012F0A77EA21278A3127CA2123C123EA2121E121FA27E7F -A26C7E7F12036C7EA26C7E7F137E133E7F806D7E6D7E6D7E6D7E6D7E147F6E7EEC0FC0EC -07F0EC03FCEC00FFED7FC0ED1FF8ED07FF030113FC9239007FFFF8040F13FC1601933800 -07F8363680B564>II E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fn cmti10 10.95 37 -/Fn 37 122 df<933807FF80043F13E09338FE00F8DB01F0133EDB07E0130E4B48131F4C -137F031F14FF4BC7FCA218FE157E1878180015FE5DA31401A25DA414030103B712F0A218 -E0903A0003F000070207140F4B14C0A3171F020F15805DA2173F1800141F5D5F177EA214 -3F92C712FE5FA34A1301027EECF81CA3160302FEECF03C4A1538A21878187013014A0101 -13F018E0933800F1C0EF7F804948EC1F0094C7FCA35C1307A2001E5B127F130F00FF5BA2 -49CAFC12FEEAF81EEA703CEA7878EA1FF0EA07C0385383BF33>12 -D44 D<120FEA3FC0127FA212FFA3 -1380EA7F00123C0A0A77891C>46 D<131EEB3F80137FEBFFC05AA214806C13005B133C90 -C7FCB3120FEA3FC0127FA212FFA35B6CC7FC123C122777A61C>58 -D<9339FF8001C0030F13E0033F9038F803809239FF807E07913A03FC001F0FDA0FF0EB07 -1FDA1FC0ECBF00DA7F806DB4FC4AC77E495AD903F86E5A495A130F4948157E4948157C49 -5A13FF91C9FC4848167812035B1207491670120FA2485A95C7FC485AA3127F5BA312FF5B -A490CCFCA2170FA2170EA2171E171C173C173817786C16706D15F04C5A003F5E6D140300 -1F4B5A6D4AC8FC000F151E6C6C5C6C6C14F86C6C495A6C6CEB07C090397FC03F8090261F -FFFEC9FC010713F0010013803A4272BF41>67 D<49B812F8A390260003FEC7121F18074B -14031801F000F014075DA3140F5D19E0A2141F4B1338A2EF7801023F027013C04B91C7FC -A217F0027F5CED80011603160F91B65AA3ED001F49EC07805CA3010392C8FC5CF003804C -13070107020E14005C93C75A180E010F161E4A151C183CA2011F5E5C60A2013F15014A4A -5A1707017F150F4D5A4A147F01FF913807FF80B9FCA295C7FC3D3E7BBD3E>69 -D<49B6FC5BA2D9000313005D5DA314075DA3140F5DA3141F5DA3143F5DA3147F5DA314FF -92C7FCA35B5CA313035CA313075CA3130F5CA3131F5CA3133F5CA2137FA25C497EB67EA3 -283E7BBD23>73 D<49B5933807FFFC496062D90003F0FC00505ADBBF805E1A771AEF1407 -033F923801CFE0A2F1039F020FEE071F020E606F6C140E1A3F021E161C021C04385BA2F1 -707F143C023804E090C7FCF001C0629126780FE0495A02705FF00700F00E0114F002E003 -1C5BA2F03803010116704A6C6C5D18E019070103ED01C00280DA03805BA2943807000F13 -070200020E5C5FDB03F8141F495D010E4B5CA24D133F131E011CDAF9C05CEEFB80197F01 -3C6DB4C7FC013895C8FC5E01784A5C13F8486C4A5CD807FE4C7EB500F04948B512FE16E0 -1500563E7BBD52>77 D79 D<49B77E18F018FC903B0003FE0003FEEF00FF4BEC7F80 -F03FC00207151F19E05DA2020F16F0A25DA2141FF03FE05DA2023F16C0187F4B1580A202 -7FEDFF00604B495A4D5A02FF4A5A4D5A92C7EA3FC04CB4C7FC4990B512FC17E04ACAFCA2 -1303A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137FA25C497EB67EA33C3E -7BBD3E>I<49B612FCEFFF8018F0903B0003FE000FF8EF03FE4BEB00FF8419800207ED3F -C05DA219E0140F5DA3021FED7FC05DA2F0FF80143F4B15004D5A60027F4A5A4B495A4D5A -EF3F8002FF02FEC7FC92380007F892B512E01780499038000FE04A6D7E707E707E010381 -4A130083A213075CA25E130F5C5F1603131F5CA3013F020714404A16E05F017F160119C0 -4A01031303496C1680B6D8800113079438FE0F009338007E1ECAEA3FFCEF07F03B407BBD -42>82 D<92390FF001C0ED7FFE4AB5EA0380913907F80FC791390FC003EF91391F8001FF -4AC71300027E805C495A4948143EA2495AA2010F153C5CA3011F1538A38094C7FC80A214 -FC6DB4FC15F015FE6DEBFFC06D14F06D14FC6D80143F020F7F020180EC001F150303007F -167F163FA2161FA212075A5F120EA2001E153F94C7FCA2163E003E157E167C003F15FC4B -5A486C5C4B5A6D495AD87DE0EB1F80D8F8F849C8FC017F13FE39F03FFFF8D8E00F13E048 -C690C9FC32427ABF33>I<48B9FCA25A903AFE001FF00101F89138E0007FD807E0163E49 -013F141E5B48C75BA2001E147FA2001C4B131C123C003814FFA2007892C7FC12704A153C -00F01738485CC716001403A25DA21407A25DA2140FA25DA2141FA25DA2143FA25DA2147F -A25DA214FFA292C9FCA25BA25CA21303A25CEB0FFE003FB67E5AA2383D71BC41>I<277F -FFFE01B500FC90B512E0B5FCA20003902680000790C7380FFC006C90C701FCEC07F04972 -5A04035EA26350C7FCA20407150EA2040F5D1A3C041F153862163B6216734F5A6D14E303 -014B5A6C15C303034BC8FC1683DB0703140E191E030E151C61031C7F61ED380161157003 -F04A5A15E002014B5A15C0DA03804AC9FC60DA0700140E60140E605C029C5D14B8D97FF8 -5D5C715A5C4A5DA24A92CAFC5F91C7FC705A137E5F137C5F137801705D53406EBD5B>87 -D<147E49B47E903907C1C38090391F80EFC090383F00FF017E137F4914804848133F485A -A248481400120F5B001F5C157E485AA215FE007F5C90C7FCA21401485C5AA21403EDF038 -5AA21407EDE078020F1370127C021F13F0007E013F13E0003E137FECF3E1261F01E313C0 -3A0F8781E3803A03FF00FF00D800FC133E252977A72E>97 DIIII<167C4BB4FC923807C78092380F83 -C0ED1F87161FED3F3FA2157EA21780EE0E004BC7FCA414015DA414035DA30103B512F8A3 -90260007E0C7FCA3140F5DA5141F5DA4143F92C8FCA45C147EA414FE5CA413015CA4495A -A4495AA4495A121E127F5C12FF49C9FCA2EAFE1EEAF83C1270EA7878EA3FE0EA0F802A53 -83BF1C>III<14 -78EB01FCA21303A314F8EB00E01400AD137C48B4FC38038F80EA0707000E13C0121E121C -EA3C0F1238A2EA781F00701380A2EAF03F140012005B137E13FE5BA212015BA212035B14 -38120713E0000F1378EBC070A214F0EB80E0A2EB81C01383148038078700EA03FEEA00F8 -163E79BC1C>I107 DII -II<903903E001F890390FF807FE903A1E7C1E0F80903A -1C3E3C07C0013C137801389038E003E0EB783F017001C013F0ED80019038F07F0001E015 -F8147E1603000113FEA2C75AA20101140717F05CA20103140F17E05CA20107EC1FC0A24A -1480163F010F15005E167E5E131F4B5A6E485A4B5A90393FB80F80DA9C1FC7FCEC0FFCEC -03E049C9FCA2137EA213FEA25BA21201A25BA21203A2387FFFE0B5FCA22D3A80A72E>I< -D801F013FC3A07FC07FF803A0F3E0F03C0260E1F1C13E0001EEB380F001C1370003CEBE0 -1F123814C0D8783F14C00070903880070092C7FC91C8FC12F05BEA007EA313FE5BA31201 -5BA312035BA312075BA3120F5BA3121F5B0007C9FC232979A726>114 -DII<137C48B4141C26038F -80137EEA0707000E7F001E15FE121CD83C0F5C12381501EA781F007001805BA2D8F03F13 -03140000005D5B017E1307A201FE5C5B150F1201495CA2151F0003EDC1C0491481A2153F -1683EE0380A2ED7F07000102FF13005C01F8EBDF0F00009038079F0E90397C0F0F1C9039 -1FFC07F8903907F001F02A2979A731>I<017CEB01C048B4EB07F038038F80EA0707000E -01C013F8121E001C1403EA3C0F0038EC01F0A2D8781F130000705BA2EAF03F91C712E012 -005B017E130116C013FE5B1503000115805BA2ED07001203495B150EA25DA25D15780001 -14706D5B0000495A6D485AD97E0FC7FCEB1FFEEB03F0252979A72A>I<017C167048B491 -387001FC3A038F8001F8EA0707000E01C015FE001E1403001CEDF000EA3C0F0038177C15 -07D8781F4A133C00701380A2D8F03F130F020049133812005B017E011F14784C137013FE -5B033F14F0000192C712E05BA2170100034A14C049137E17031880A2EF070015FE170E00 -010101141E01F86D131C0000D9039F5BD9FC076D5A903A3E0F07C1E0903A1FFC03FFC090 -2703F0007FC7FC372979A73C>I<903903F001F890390FFC07FE90393C1E0E0F9026780F -1C138001F0EBB83FD801E013F89039C007F07FEA0380000714E0D9000F140048151C000E -4AC7FCA2001E131FA2C75BA2143F92C8FCA35C147EA314FE4A131CA30101143C001E1538 -003F491378D87F811470018314F000FF5D9039077801C039FE0F7C033A7C0E3C07802778 -3C1E1EC7FC391FF80FFC3907E003F029297CA72A>I<137C48B4143826038F8013FCEA07 -07000E7F001E1401001C15F8EA3C0F12381503D8781F14F000701380A2D8F03F13070200 -13E012005B017E130F16C013FE5B151F1201491480A2153F000315005BA25D157EA315FE -5D00011301EBF8030000130790387C1FF8EB3FF9EB07E1EB00035DA21407000E5CEA3F80 -007F495AA24A5AD8FF0090C7FC143E007C137E00705B387801F0383803E0381E0FC06CB4 -C8FCEA03F8263B79A72C>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fo cmcsc10 10.95 19 -/Fo 19 121 df71 D78 D85 D97 -DIIIIII105 -D109 -DIII<90383FC00C9038FFF81C00 -03EBFE3C390FE03FFC381F8007EB0003003E1301481300157C5A153CA36C141CA27E6C14 -006C7E13E013FE383FFFE06C13FE6CEBFF806C14E0000114F06C6C13F8010F13FC1300EC -07FE14011400157F153F12E0151FA37EA2151E6C143E6C143C6C147C6C14F89038C001F0 -39FBF807E000F1B512C0D8E07F130038C007FC20317BAF2A>115 -D<007FB712F8A39039801FF0073A7E000FE00000781678A20070163800F0163CA348161C -A5C71500B3A8EC3FF8011FB512F0A32E2E7CAD36>II<3B7FFF -F001FFFEA30003D9C00013E0C649EB7F80017F027EC7FC167C6D6C13786D6C5B6D6C5B15 -016D6C485AD903FC5B15076D6C48C8FC903800FF1EEC7F9C15BCEC3FF86E5AA2140F6E7E -14034A7E4A7EEC1EFF141C91383C7F804A6C7E14709138F01FE049486C7E49486C7E1480 -01076D7E49486C7E130E011E6D7E496E7E017C6E7E13FC000382D80FFEEC7FF8B549B512 -C0A3322F7DAE38>120 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fp cmr7 7 3 -/Fp 3 52 df<13381378EA01F8121F12FE12E01200B3AB487EB512F8A215267BA521>49 -D<13FF000313E0380E03F0381800F848137C48137E00787F12FC6CEB1F80A4127CC7FC15 -005C143E147E147C5C495A495A5C495A010EC7FC5B5B903870018013E0EA018039030003 -0012065A001FB5FC5A485BB5FCA219267DA521>I<13FF000313E0380F01F8381C007C00 -30137E003C133E007E133FA4123CC7123E147E147C5C495AEB07E03801FF8091C7FC3800 -01E06D7E147C80143F801580A21238127C12FEA21500485B0078133E00705B6C5B381F01 -F03807FFC0C690C7FC19277DA521>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fq cmsl10 10.95 42 -/Fq 42 122 df12 -D<007FB5FCA2B512FEA418067C961E>45 D<13F0EA01FC1203EA07FEA313FCA2EA03F8EA -01E0C7FCB3121EEA3F80EA7FC012FFA41380EA7F00123C0F2778A619>58 -D<17E016011603831607A2160FA2161F83163FA2167F167716F7EEE7FCED01E316C31503 -16831507EE03FEED0F01150E151E151C153C03387FED7800157015F05D4A4880177F4A5A -A24AC7FCA2020E81173F5C021FB6FC5CA20270C7EA3FE0171F5CA2495AA2494881170F49 -C8FCA2130EA24982013C1507A2137CD801FE4B7E2607FF80EC3FFEB500F00107B512FC19 -F85E3E417DC044>65 D<013FB7FC18E018FC903B007FE00007FE6E48903801FF80943800 -7FC05DF03FE0F01FF0A3027F16F892C8FCA54A16F04A153F19E0187F19C0F0FF8001014B -13004A4A5A4D5AEF1FF04D5ADC03FFC7FC49B612F8EFFF8002F8C7EA3FE0EF0FF0EF07FC -717E010715014A81711380A319C0130F5CA5011F4B13805C19005F601707013F4B5A4A4A -5A4D5A4D5A017F913801FF8001FF020F90C7FCB812FC17F094C8FC3D3E7DBD40>II<013FB7FC18E018F8903B007FF0000FFE -6E48EB01FF9438007FC04B6E7E180F85727E727E147F4B6E7EA2727EA302FF178092C9FC -A54918C05CA41A8013034A5DA41A0013074A5DA261A24E5A130F4A5E180F61181F61011F -4C5A5C4E5A4EC7FC4D5A4D5A013F4B5A4A4A5AEF3FE0EF7F80017F4A48C8FC01FFEC1FFC -B812F0178004FCC9FC423E7DBD45>I<013FB812F8A39026007FF0C7127F6E48140F1803 -4B14011800A31978147F4B1570A502FF143892C7FCA3190017784915704A14F016011603 -160F91B6FC495DA29138FC001F16071603160101075D5CA2197019F019E0010F4A5A4A90 -C7120119C0A218031980011F16075CF00F00A260181E013F163E4A157E4D5A1703017F15 -0F01FFEDFFF8B9FCA2603D3E7DBD3E>I<013FB812E0A3903A007FF000016E48EB003F18 -0F4B14071803A31801147F4B15C0A514FF92C71270A395C7FC17F0495D5C160116031607 -161F49B65AA39138FC003F160F160701075D4A1303A5010F4AC8FC5C93C9FCA4131F5CA5 -133F5CA3137FEBFFF0B612F8A33B3E7DBD3B>I<4BB46C1370031F01F013F0037F9038FC -01E0913A03FF807E03913A0FF8000F83DA1FE0EB07C7DA7F80EB01EF4AC812FFD903FE16 -C04948157F4948153F495A4948151F495A4948168091C9120F5A485AA2485A000F180049 -82121FA248485EA295C7FC485AA412FF5BA6043FB512E05BA29339001FFC00715AA2607F -127FA2171F123F6D5EA2121F7F000F163F6C7E6C6C4B5A7F6C6C15FF6C6DEB01EFD93FC0 -EB07C7D91FF0EB1F87D907FE9038FE03800101B5EAF8016D6C01E0C8FCDA07FEC9FC3C42 -76BF47>I<011FB512FC5BA29039003FF8006E5AA25DA5143F5DA5147F5DA514FF92C7FC -A55B5CA513035CA513075CA5130F5CA5131F5CA3133F497E007FB512F0A2B6FC263E7EBD -21>73 D<013FB512FEA25E9026007FF8C8FCEC3FE0A25DA5147F5DA514FF92C9FCA55B5C -A513035CA513075CA21838A21870130F5CA218E0A3011F15014A15C01703A21707EF0F80 -013F151F4A143F177FEFFF00017F140301FF143FB9FC5FA2353E7DBD39>76 -D<90263FFFE0023FB5FC6F16FEA29026003FF8020313C0021F030013004A6C157C023B16 -3C6F15381439810238167802787FDA707F157082153F82031F15F002F07FDAE00F5D8215 -078203031401010180DAC0015D82811780047F1303010315C04A013F5C17E0161F17F004 -0F1307010715F891C7000791C7FC17FC160317FE04015B4915FF010E6E130E188E177F18 -CEEF3FDE011E16FE011C6F5AA2170FA21707133C01386F5A133C017C150113FE2607FF80 -1400B512FC18705C483E7DBD44>78 D<923803FF80031F13F09238FE01FE913903F0003F -DA0FC0EB1FC0DA3F80EB07E0027EC76C7E49486E7E49488149486E7E4948157F495A013F -17804948ED3FC049C9FCA24848EE1FE012035B000718F05B120FA2485A19F8123F5BA212 -7FA219F04848163FA5F07FE0A35BF0FFC0A219805F19007F4D5A127F4D5A60003F160F6D -5E001F4C5A4D5A6C6C4B5A95C7FC6C6C15FE00034B5A6C6C4A5A6C6C4A5A017FEC1FC06D -6C495AD90FE001FEC8FC903903F807F80100B512C0DA0FFCC9FC3D4276BF47>I<013FB6 -12F017FF18E0903B007FF0003FF86E48EB07FCEF01FE4B6D7EF07F8019C0183F19E0147F -4B15F0A502FFED7FE092C8FCA219C0F0FF80A2494B13004A5D4D5AEF0FF04D5AEF7F8001 -03DA07FEC7FC91B612F017809139FC0007E0EE03F8EE00FC0107814A147F717EA284A213 -0F5CA484011F157F5CA41902013F17075CA2F0F00F017F170E496C143FB600E0011F131C -94380FF83C4B01071378CA3801FFE09438003F8040407DBD43>82 -D<9239FF8003800207EBF007021F9038FC0F0091387F00FE02FCEB1F1FD903F0EB07BF49 -486DB4FC49487F4A6D5A49C8FC49157E133E137E173E49153CA57F1738A26D92C7FC8080 -80EB7FFEECFFE06D13FEEDFFC06D14F06D14FC010380010080143F020380DA003F7F1503 -1500707E163F161FA2160F121CA31607160F003C5EA35F003E151F94C7FC007E5D007F15 -3E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF87F803F8027F01FFFFEC8FCD8E007 -13F839C0007FC031427BBF33>I<0007B912F0A33C0FFE000FF8003F01F0160F01C04A13 -034848160190C7FC121EF000E048141F5E1238A212781270153F5E5AA3C81600157F5EA5 -15FF93C9FCA55C5DA514035DA514075DA5140F5DA3141FEC7FFC0003B7FCA33C3D76BC42 ->II87 -D97 -DI -IIII<177C913907F803FE91393FFE0F8F9139FC0F9C3F903901F007F89039 -07E003E0D90FC013F0011F903801F80C02801400133FD97F007FA315035B495CA3017E49 -5A5E150F6D5C6D495A90263F803EC7FCECC0FC903871FFF09038E07F8091C9FC485AA47F -A27F90B512F8EDFF806C15E016F86D8048B6FC3A07E0000FFED80F801300003FC8127F00 -3E815A00FC815AA25E163EA25E6C15FC007C4A5A6C4A5A6CEC0FC0D80FC0013FC7FC3903 -F801FCC6B512F0010F90C8FC303D7FA82D>I<147FEB3FFFA313017FA25CA513015CA513 -035CA4ED07F80107EB1FFF9139F0781FC09138F1E00F9139F38007E0ECF70002FE14F049 -5A5CA25CA24A130F131F4A14E0A4161F133F4A14C0A4163F137F91C71380A4167F5B4915 -00A300015D486C491380B5D8F87F13FCA32E3F7DBE33>I<1478EB01FE130314FFA25B14 -FE130314FCEB00F01400ACEB03F8EA01FF14F0A2EA001F130FA314E0A5131F14C0A5133F -1480A5137F1400A55B5BA4EA03FF007F13F0A2B5FC183E7DBD1A>I<147FEB3FFFA31301 -7FA25CA513015CA513035CA501070103B5FC02F014FEA26F13F06F1380EEFE00010F14F8 -4A485AED03C04B5A031FC7FC153E011F13784A5AECC3E0ECC7F0ECCFF814FF497F14F9EC -E1FE14C04A7E4A7E4980017E133F82151F82150F01FE8049130782A2000181486C49B4FC -B5D8F03F13F04B13E0A2303F7EBE30>107 D<143FEB1FFF5BA213017FA214FEA5130114 -FCA5130314F8A5130714F0A5130F14E0A5131F14C0A5133F1480A5137F1400A55B5BA4EA -03FF007F13F8A2B5FC183F7DBE1A>I<902707F007F8EB03FCD803FFD91FFF90380FFF80 -913CE0781FC03C0FE09126E1E00FEBF0073E001FE38007E1C003F090260FE700EBE38002 -EEDAF70013F802FC14FE02D85C14F84A5CA24A5C011F020F14074A4A14F0A5013F021F14 -0F4A4A14E0A5017F023F141F91C74914C0A549027F143F4992C71380A300014B147F486C -496DEBFFC0B5D8F87FD9FC3F13FEA347287DA74C>I<903907F007F8D803FFEB1FFF9139 -E0781FC09138E1E00F3B001FE38007E090380FE70002EE14F014FC14D814F85CA24A130F -131F4A14E0A4161F133F4A14C0A4163F137F91C71380A4167F5B491500A300015D486C49 -1380B5D8F87F13FCA32E287DA733>II<91387F01FE903A7FFF -0FFFC09139FE3E03F09238F801F8903A01FFE000FE4B137F6D497F4990C713804A15C04A -141FA218E0A20103150F5C18F0A3171F010716E05CA3173F18C0130F4A147F1880A2EFFF -004C5A011F5D16034C5A6E495AEE1FC06E495AD93FDC017EC7FC91388F01F8913883FFE0 -028090C8FC92C9FC137FA291CAFCA45BA25BA31201487EB512F8A3343A81A733>I<9039 -07F01F80D803FFEB7FE09138E1E1F09138E387F839001FE707EB0FE614EE02FC13F002D8 -13E09138F801804AC7FCA25C131FA25CA4133F5CA5137F91C8FCA55B5BA31201487EB512 -FEA325287EA724>114 D<9138FF81C0010713E390381F807F90397C003F8049131F4848 -130F5B00031407A248481400A27FA27F6D90C7FCEBFF8014FC6C13FF6C14C015F06C6C7F -011F7F13079038007FFE1403140100381300157EA2123C153E157E007C147CA2007E1478 -15F8007F495A4A5A486C485A26F9E01FC7FC38E0FFFC38C01FE0222A7DA824>II<01FE147F00FFEC7FFF4914FEA2000714 -0300031401A34914FCA4150312074914F8A41507120F4914F0A4150F121F4914E0A2151F -A3153F4914C0157F15FFEC01DF3A0FC003BFE09138073FFF3803F01E3801FFF826003FE0 -1380282977A733>III<48B539C07FFFC0A33C000FFE00 -3FF8006D48EB1FE0010315800101023EC7FC6E133C01005C027F5B6F5A91383F81C0EDC3 -80DA1FC7C8FC15EFEC0FFE6E5A5D140381A24A7E140FEC1E7F023C7FEC383F02707FECE0 -1F010180903803C00F49486C7ED90F007F491303017E80D801FE80D807FF497EB5D8803F -13F8A332277FA630>I<90B539E007FFF05E18E0902707FE000313006D48EB01FC705A5F -01014A5A5F16036E5C0100140794C7FC160E805E805E1678ED8070023F13F05EED81C015 -C191381FC38015C793C8FC15EF15EEEC0FFCA25DA26E5AA25DA26E5A5DA24AC9FC5C140E -141E141C5C121C003F5B5A485B495A130300FE5B4848CAFCEA701EEA783CEA3FF0EA0FC0 -343A80A630>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fr cmtt10 10.95 88 -/Fr 88 127 df<121C127FEAFF80B3EA7F00B2123EC7FCA8121C127FA2EAFF80A3EA7F00 -A2121C09396DB830>33 D<00101304007C131F00FEEB3F80A26C137FA248133FB2007E14 -00007C7F003C131E00101304191C75B830>I<903907C007C0A2496C487EA8011F131FA2 -02C05BA3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F -90B512FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA2 -29387DB730>I<1438147C14FCA4EB03FF011F13E090B512FC4880000780481580261FFE -FD13C09039F0FC3FE0D83FC0131FD87F80EB0FF001001307007E15F800FE14035A1507A3 -6CEC03F0A2007F91C7FC138013C0EA3FF0EA1FFE13FF6C13FF6C14E0000114F86C6C7F01 -1F7F01037F0100148002FD13C09138FC7FE0151FED0FF015070018EC03F8127E1501B4FC -A35AA26CEC03F07E01801307ED0FE0D83FC0131F01F0EB7FC0D81FFEB512806CB612006C -5C6C5CC614F0013F13C0D907FEC7FCEB00FCA5147C143825477BBE30>I39 D<141E147F14FF5BEB03FEEB07FCEB0F -F0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F5BA2127F90C7 -FCA412FEAD127FA47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7EEB7F80EB3FC0 -EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E184771BE30>I<127812FE7E7F6C7E6C -7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB03F8A214FC13 -01A214FE1300A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14E0EB1FC0133F -1480137FEBFF00485A485A485A485AEA3FE0485A485A90C7FC5A1278184778BE30>I<14 -E0497E497EA60038EC0380007EEC0FC0D8FF83EB3FE001C3137F9038F3F9FF267FFBFB13 -C06CB61280000FECFE00000314F86C5C6C6C13C0011F90C7FC017F13C048B512F0488000 -0F14FE003FECFF80267FFBFB13C026FFF3F913E09038C3F87F0183133FD87E03EB0FC000 -38EC0380000091C7FCA66D5A6D5A23277AAE30>I<143EA2147FAF007FB7FCA2B81280A3 -6C1600A2C76CC8FCAF143EA229297DAF30>II<007FB612F0A2B712F8A36C15F0A225077B9E30>I<120FEA3FC0EA7FE0 -A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A21507A2ED0FF0 -A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA24A5AA24A5AA2 -4A5AA24AC7FCA2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249C8FCA2485AA2 -5B1203A2485AA2485AA2485AA2485AA2485AA248C9FCA25AA2127CA225477BBE30>I<14 -FE903807FFC0497F013F13F8497F90B57E48EB83FF4848C6138049137F4848EB3FC04848 -EB1FE049130F001F15F0491307A24848EB03F8A290C712014815FCA400FEEC00FEAD6C14 -016C15FCA36D1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A26C6CEB3FC06C -6CEB7F806D13FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FEC7FC273A7CB8 -30>IIIII<000FB612804815C05AA31680 -0180C8FCAEEB83FF019F13C090B512F015FC8181D9FE0313809039F0007FC049133F0180 -EB1FE06CC7120F000E15F0C81207A216F81503A31218127EA2B4FC150716F048140F6C15 -E06C141F6DEB3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C6C14E06C6C13 -80D90FFCC7FC25397BB730>II<127CB712FC16FEA416FC48C7EA0FF816F0ED1FE0 -007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA24A5AA24AC7FCA25C5C -13015CA213035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7CB830>I<49B4FC011F -13F0017F13FC90B57E0003ECFF804815C048010113E03A1FF8003FF049131FD83FC0EB07 -F8A24848EB03FC90C71201A56D1303003F15F86D13076C6CEB0FF06C6CEB1FE0D807FCEB -7FC03A03FF83FF806C90B512006C6C13FC011F13F0497F90B512FE48802607FE0013C0D8 -0FF8EB3FE0D81FE0EB0FF04848EB07F8491303007F15FC90C712014815FE481400A66C14 -016C15FC6D1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01FFE06C90B512C06C15 -80C6ECFE006D5B011F13F0010190C7FC273A7CB830>I<49B4FC010F13E0013F13F890B5 -7E4880488048010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0FF048481307A290 -C7EA03F85A4815FC1501A416FEA37E7E6D130315076C7E6C6C130F6D133FD80FFC13FF6C -B6FC7E6C14FE6C14F9013FEBE1FC010F138190380060011400ED03F8A2150716F0150F00 -0F15E0486C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC90B55A6C5C6C5C6C -1480C649C7FCEB3FF0273A7CB830>I<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0 -EA0F00C7FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C276EA630>I< -EA03C0EA0FF0EA1FF8A2EA3FFCA4EA1FF8A2EA0FF0EA03C0C7FCAFEA03C0EA0FF0121F13 -F8123F13FCA3121FA2120F12031200120113F8120313F01207EA1FE0123FEA7FC0EAFF80 -EA7F00127E12380E3470A630>I<16F01503ED07F8151F157FEDFFF014034A13C0021F13 -8091383FFE00ECFFF8495B010713C0495BD93FFEC7FC495A3801FFF0485B000F13804890 -C8FCEA7FFC5BEAFFE05B7FEA7FF87FEA1FFF6C7F000313E06C7F38007FFC6D7E90380FFF -806D7F010113F06D7FEC3FFE91381FFF80020713C06E13F01400ED7FF8151F1507ED03F0 -1500252F7BB230>I<007FB7FCA2B81280A36C16006C5DCBFCA7003FB612FE4881B81280 -A36C1600A229157DA530>I<1278127EB4FC13C07FEA7FF813FEEA1FFF6C13C000037F6C -13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E7E91380FFF806E13C0020113F080 -ED3FF8151F153FEDFFF05C020713C04A138091383FFE004A5A903801FFF0495B010F1380 -4990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7FFE13F8EAFFE05B90C9FC127E1278 -252F7BB230>III<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7FA314C1A2011F -7FA490383F80FEA590387F007FA4498049133F90B6FCA34881A39038FC001F0003814913 -0FA4000781491307A2D87FFFEB7FFFB56CB51280A46C496C130029397DB830>I<007FB5 -12F0B612FE6F7E82826C813A03F8001FF815076F7E1501A26F7EA615015EA24B5A1507ED -1FF0ED7FE090B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E1500167FA3EE3F80 -A6167F1700A25E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7FC29387EB730>I< -91387F803C903903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB801F3903FE -000F484813075B48481303A2484813015B123F491300A2127F90C8FC167C16005A5AAC7E -7EA2167C6D14FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13076C6CEB0FF03901 -FF801F6C9038E07FE06DB512C06D14806D1400010713FC6D13F09038007FC0273A7CB830 ->I<003FB512E04814FCB67E6F7E6C816C813A03F8007FF0ED1FF8150F6F7E6F7E15016F -7EA2EE7F80A2163F17C0161FA4EE0FE0AC161F17C0A3163F1780A2167F17005E4B5A1503 -4B5A150F4B5AED7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B387FB730>I<007FB7 -FCB81280A47ED803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FCA6EBF800A4157C92 -C8FCA5EE07C0EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<003FB712804816C0B8 -FCA27E7ED801FCC7121FA8EE0F8093C7FCA5153E157FA490B6FCA69038FC007FA4153E92 -C8FCAE383FFFF8487FB5FCA27E6C5B2A387EB730>I<02FF13F00103EBC0F8010F13F101 -3F13FD4913FF90B6FC4813C1EC007F4848133F4848131F49130F485A491307121F5B123F -491303A2127F90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C6D1400ED03F8A27F -003F1407A27F121F6D130F120F7F6C6C131FA2D803FE133F6C6C137FECC1FF6C90B5FC7F -6D13FB010F13F30103EBC1F0010090C8FC293A7DB830>I<3B3FFF800FFFE0486D4813F0 -B56C4813F8A26C496C13F06C496C13E0D803F8C7EAFE00B290B6FCA601F8C7FCB3A23B3F -FF800FFFE0486D4813F0B56C4813F8A26C496C13F06C496C13E02D387FB730>I<007FB6 -FCB71280A46C1500260007F0C7FCB3B3A8007FB6FCB71280A46C1500213879B730>I<49 -B512F04914F85BA27F6D14F090C7EAFE00B3B3123C127EB4FCA24A5A1403EB8007397FF0 -1FF86CB55A5D6C5C00075C000149C7FC38003FF025397AB730>I<383FFFF8487FB57EA2 -6C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8FCA27E6C16802A387EB730> -76 DII<90383FFFE048B512FC000714FF4815804815C04815E0EBF80001E0133FD87F -80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A36D130FA26D131F6C6CEB -3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13E0253A7BB830>I<007F -B512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE15016F7EA2821780163FA616 -7F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F001F8C9FCB0387FFFC0 -B57EA46C5B29387EB730>I<003FB57E4814F0B612FC15FF6C816C812603F8017F913800 -3FF0151F6F7E15071503821501A515035E1507150F4B5A153F4AB45A90B65A5E93C7FC5D -8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EBFFF8B5 -6C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>82 D<90390FF803C0D97FFF13 -E048B512C74814F74814FF5A381FF80F383FE001497E4848137F90C7123F5A48141FA215 -0FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C80011F13 -FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07F8A2007C140312FEA56C14 -0716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8D8F8 -1F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA43AFE003F800FA8007CED07 -C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I<3B7FFFC007FFFCB56C4813 -FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C6C14FE6D13016D5CEC8003 -90393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038007FFCEC1FF02F3980B730 ->II< -D83FFC903801FFE0486C4913F000FF16F8A2007F16F06C486D13E0D81FC09038001FC000 -0F1680A76D143F00071600A7000390380F803E9039F01FC07EEC3FE0A3EC7FF0A2147D00 -01157CA29039F8FDF8FCA314F8A300005D01F913FCA2ECF07CA201FD137DA2017D5CECE0 -3DA3017F133FA2ECC01FA2013F5CA2EC800F6D486C5A2D397FB730>I<3A3FFF01FFF848 -01837F02C77FA202835B6C01015B3A01FC007F806D91C7FC00005C6D5BEB7F01EC81FCEB -3F8314C3011F5B14E7010F5B14FF6D5BA26D5BA26D5BA26D90C8FCA4497FA2497FA2815B -81EB0FE781EB1FC381EB3F8181EB7F0081497F49800001143F49800003141F4980000714 -0FD87FFEEB7FFFB590B5128080A25C6C486D130029387DB730>I<007FB5FCB61280A415 -0048C8FCB3B3B3A5B6FC1580A46C140019476DBE30>91 D<127CA212FEA27EA26C7EA26C -7EA26C7EA26C7EA26C7EA26C7EA212017FA26C7EA26D7EA26D7EA26D7EA26D7EA26D7EA2 -6D7EA2130180A26D7EA26E7EA26E7EA26E7EA26E7EA26E7EA26E7EA2140181A26E7EA2ED -7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07F8A21503A2ED01F0150025477BBE30>I<007F -B5FCB61280A47EC7123FB3B3B3A5007FB5FCB6FCA46C140019477DBE30>I<1307EB1FC0 -EB7FF0497E000313FE000FEBFF80003F14E0D87FFD13F039FFF07FF8EBC01FEB800F38FE -0003007CEB01F00010EB00401D0E77B730>I<007FB612F0A2B712F8A36C15F0A225077B -7D30>I<1338137CEA01FE12031207EA0FFC13F0EA1FE013C0EA3F8013005A127EA212FE -5AA5EAFFC013E013F0127FA2123FA2EA1FE0EA07C00F1D70BE30>IIII<913801FFE0 -4A7F5CA28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0 -133F49131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E -6D137F390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0 -D907FCC8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E48804801811380 -3A07FC007FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7 -FCA516F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FF -C07FE06C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>IIII<14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3 -A9003FB612C04815E0B7FCA27E6C15C023397AB830>III<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025 -387BB730>I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F -13872607FE07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF -07FF80B548018F13C0A46C486C01071380322881A730>II<49B4FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3F -E0D81FE0EB0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15 -FCA26D1303003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90 -B512806C15006C6C13FC6D5B010F13E0010190C7FC272A7CA830>II<49B413F8010FEBC1FC013F13F14913FD48B6FC -5A481381390FFC007F49131F4848130F491307485A491303127F90C7FC15015A5AA77E7E -15037FA26C6C1307150F6C6C131F6C6C133F01FC137F3907FF01FF6C90B5FC6C14FD6C14 -F9013F13F1010F13C1903803FE0190C7FCAD92B512F84A14FCA46E14F82E3C7DA730>I< -ED07F83A3FFF803FFF486DB51280B512C302CF14C06C13DF6C9038FFFC3FD8001F13E092 -38801F809238000F004A90C7FC5C5C5CA25CA45CAF003FB512FC4880B7FCA26C5C6C5C2A -287EA730>I<90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880A4 -6C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F903800 -0FFF02001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF00 -90B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>II -I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D1307 -00005DA26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2ECE0 -FE01075BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3FFF -C01FFFE0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157EA5 -6D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A301 -7E13FBA290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3A3FFF81FF -FC4801C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE90383F81FC90381FC3F8EB -0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7E0EB07E790380FE3 -F0ECC1F890381F81FC90383F80FE90387F007E017E137F01FE6D7E48486D7E267FFF80B5 -FCB500C1148014E3A214C16C0180140029277DA630>I<3B3FFFC07FFF80486DB512C0B5 -15E0A26C16C06C496C13803B01FC0003F000A2000014076D5C137E150F017F5C7F151FD9 -1F805BA214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F85DA2EB00F9ECFD -F0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE486C5AEA3FC1EBC3 -F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<001FB612FC4815FE -5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A4A -5A4A5A4A5A4990C7FC495A495A495A495A495A495A4948133E4890C7127F485A485A485A -485A485A48B7FCB8FCA46C15FE28277DA630>II<127CA212FEB3B3B3AD127CA207476CBE30>II<01 -7C133848B4137C48EB80FE4813C14813C348EBEFFC397FEFFFF0D8FF8713E0010713C048 -6C1380D87C0113003838007C1F0C78B730>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fs cmbx12 17.28 40 -/Fs 40 121 df44 -D<16F04B7E1507151F153FEC01FF1407147F010FB5FCB7FCA41487EBF007C7FCB3B3B3B3 -007FB91280A6395E74DD51>49 D<913801FFF8021FEBFFC091B612F8010315FF010F16C0 -013F8290267FFC0114F89027FFE0003F7F4890C7000F7F48486E7FD807F86E148048486E -14C048486E14E048486F13F001FC17F8486C816D17FC6E80B56C16FE8380A219FFA283A3 -6C5BA26C5B6C90C8FCD807FC5DEA01F0CA14FEA34D13FCA219F85F19F04D13E0A294B512 -C019804C14004C5B604C5B4C5B604C13804C90C7FC4C5A4C5A4B13F05F4B13804B90C8FC -4B5AED1FF84B5A4B5A4B48143F4A5B4A48C8FC4A5A4A48157E4A5A4A5AEC7F8092C9FC02 -FE16FE495A495A4948ED01FCD90FC0150749B8FC5B5B90B9FC5A4818F85A5A5A5A5ABAFC -A219F0A4405E78DD51>I<92B5FC020F14F8023F14FF49B712C04916F0010FD9C01F13FC -90271FFC00077FD93FE001017F49486D8049C86C7F484883486C6F7F14C0486D826E806E -82487FA4805CA36C5E4A5E6C5B6C5B6C495E011FC85A90C95CA294B55A614C91C7FC604C -5B4C5B4C5B4C5B047F138092260FFFFEC8FC020FB512F817E094C9FC17F817FF91C7003F -13E0040713F8040113FE707F717F7113E085717FA2717F85A285831A80A31AC0EA03FCEA -0FFF487F487F487FA2B57EA31A80A34D14005C7E4A5E5F6C495E49C8485BD81FF85F000F -5ED807FE92B55A6C6C6C4914806C01F0010791C7FC6C9026FF803F5B6D90B65A011F16F0 -010716C001014BC8FCD9001F14F0020149C9FC426079DD51>II<01C0EE01C0D801F8160F01FF167F02 -F0EC07FFDAFF8090B5FC92B7128019006060606060606095C7FC17FC5F17E0178004FCC8 -FC16E09026FC3FFCC9FC91CBFCADED3FFE0203B512F0020F14FE023F6E7E91B712E001FD -D9E00F7F9027FFFE00037F02F801007F02E06EB4FC02806E138091C8FC496F13C04917E0 -7113F0EA00F090C914F8A219FC83A219FEA419FFA3EA03F0EA0FFC487E487E487FA2B57E -A319FEA35C4D13FC6C90C8FC5B4917F8EA3FF001804B13F06D17E0001F5E6C6C17C06D4B -1380D807FC92B512006C6C4A5B6C6C6C01075B6C01E0011F5BD97FFE90B55A6DB712C001 -0F93C7FC6D15FC010115F0D9003F1480020301F0C8FC406078DD51>III<91380FFF -F849B612C0010F15F8013F15FE496F7E2701FFF80080480180011F13F0D807FCC700077F -D80FF080484882003F8301F880486C827FB5178080A76C90C7FC4C14006C5A6C5AD807F0 -4A5BC95C5E4C5B604C5B4C138093B5C7FC4B13FC5F4B13E05F4B5B4B90C8FC5E5E4B5A5E -4B5AA25E4B5AA293C9FCA215FEA35DAE5D92CAFCABEC01FCEC07FF4A7F023F13E0A24A7F -A291B57EA76E5BA26E5BA2020F13806E90C9FCEC01FC396577E44C>63 -D65 -D<4DB5ED03C0057F02F014070407B600FE140F047FDBFFC0131F4BB800F0133F030F05FC -137F033F9127F8007FFE13FF92B6C73807FF814A02F0020113C3020702C09138007FE74A -91C9001FB5FC023F01FC16074A01F08291B54882490280824991CB7E4949844949844949 -8449865D49498490B5FC484A84A2484A84A24891CD127FA25A4A1A3F5AA348491A1FA448 -99C7FCA25CA3B5FCB07EA380A27EA2F50FC0A26C7FA37E6E1A1F6C1D80A26C801D3F6C6E -1A00A26C6E616D1BFE6D7F6F4E5A7F6D6D4E5A6D6D4E5A6D6D4E5A6D6E171F6D02E04D5A -6E6DEFFF806E01FC4C90C7FC020F01FFEE07FE6E02C0ED1FF8020102F8ED7FF06E02FF91 -3803FFE0033F02F8013F1380030F91B648C8FC030117F86F6C16E004071680DC007F02F8 -C9FC050191CAFC626677E375>67 DI<4D -B5ED03C0057F02F014070407B600FE140F047FDBFFC0131F4BB800F0133F030F05FC137F -033F9127F8007FFE13FF92B6C73807FF814A02F0020113C3020702C09138007FE74A91C9 -001FB5FC023F01FC16074A01F08291B54882490280824991CB7E49498449498449498449 -865D49498490B5FC484A84A2484A84A24891CD127FA25A4A1A3F5AA348491A1FA44899C8 -FCA25CA3B5FCB07E071FB812F880A37EA296C70001ECC000A26C7FA37E807EA26C80A26C -80A26C807F6D7F816D7F7F6D7F6D6D5F6D14C06D6E5E6E7F6E01FC5E020F01FF5E6E02C0 -ED7FEF020102F8EDFFC76E02FF02071383033F02FC013F1301030F91B638FC007F03014D -131F6F6C04E01307040704801301DC007F02F8CAFC050191CBFC6D6677E37F>71 -DI -I78 D83 -D<001FBEFCA64849C79126E0000F148002E0180091C8171F498601F81A0349864986A249 -1B7FA2491B3F007F1DC090C9181FA4007E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3 -021FBAFCA663617AE070>II87 D<913803FFFE027FEBFFF00103B612FE010F6F7E4916E090273FFE001F7FD9 -7FE001077FD9FFF801017F486D6D7F717E486D6E7F85717FA2717FA36C496E7FA26C5B6D -5AEB1FC090C9FCA74BB6FC157F0207B7FC147F49B61207010F14C0013FEBFE004913F048 -B512C04891C7FC485B4813F85A5C485B5A5CA2B55AA45FA25F806C5E806C047D7F6EEB01 -F96C6DD903F1EBFF806C01FED90FE114FF6C9027FFC07FC01580000191B5487E6C6C4B7E -011F02FC130F010302F001011400D9001F90CBFC49437CC14E>97 -D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF80047F14F00381B612FC038715FF -038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02007F03F8824B6F7E4B6F1380 -4B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA44F13F8A31BF0A24F13E0A24F -13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C495B9126F83FE0013F13C09127 -F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C7001F91C8FC90C8000313E04F65 -7BE35A>I100 D<92380FFFC04AB512FC020FECFF80023F15E091B712F80103D9FE037F4990 -39F0007FFF011F01C0011F7F49496D7F4990C76C7F49486E7F48498048844A804884485B -727E5A5C48717EA35A5C721380A2B5FCA391B9FCA41A0002C0CBFCA67EA380A27EA27E6E -160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17016D6C4B5A6D6D4A5A6D01E04A5A6D -6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D6C90B55A021F15F8020715E0020092 -C8FC030713F041437CC14A>III<903807FF80B6FCA6C6FC7F7FB3 -A8EF1FFF94B512F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FDB83F86D7F -DB87F07FDB8FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F007B7 -1280A651647BE35A>III<903807FF80B6FCA6C6 -FC7F7FB3B3B3B3ADB712E0A623647BE32C>108 D<902607FF80D91FFFEEFFF8B691B500 -F00207EBFF80040702FC023F14E0041F02FF91B612F84C6F488193267FE07F6D4801037F -922781FE001F9027E00FF0007FC6DA83F86D9026F01FC06D7F6DD987F06D4A487F6DD98F -C0DBF87EC7804C6D027C80039FC76E488203BEEEFDF003BC6E4A8003FC04FF834B5FA24B -5FA24B94C8FCA44B5EB3B2B7D8F007B7D8803FB612FCA67E417BC087>I<902607FF80EB -1FFFB691B512F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FC6DA83F86D7F -6DD987F07F6DD98FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F0 -07B71280A651417BC05A>I<923807FFE092B6FC020715E0021F15F8027F15FE494848C6 -6C6C7E010701F0010F13E04901C001037F49496D7F4990C87F49486F7E49486F7E48496F -13804819C04A814819E048496F13F0A24819F8A348496F13FCA34819FEA4B518FFAD6C19 -FEA46C6D4B13FCA36C19F8A26C6D4B13F0A26C19E06C6D4B13C0A26C6D4B13806C6D4B13 -006D6C4B5A6D6D495B6D6D495B010701F0010F13E06D01FE017F5B010090B7C7FC023F15 -FC020715E0020092C8FC030713E048437CC151>I<902607FF80EBFFF8B6010FEBFF8004 -7F14F00381B612FC038715FF038F010114C09227BFF0003F7FC6DAFFC0010F7F6D91C76C -7F6D496E7F03F86E7F4B6E7F4B17804B6F13C0A27313E0A27313F0A21BF885A21BFCA385 -1BFEAE4F13FCA41BF861A21BF0611BE0611BC06F92B512801B006F5C6F4A5B6F4A5B03FF -4A5B70495B04E0017F13C09226CFFC03B55A03C7B648C7FC03C115F803C015E0041F91C8 -FC040313E093CBFCB3A3B712F0A64F5D7BC05A>I114 D<913A3FFF8007800107B5EAF81F011FECFE7F017F91B5FC48B8FC48EBE0014890 -C7121FD80FFC1407D81FF0801600485A007F167F49153FA212FF171FA27F7F7F6D92C7FC -13FF14E014FF6C14F8EDFFC06C15FC16FF6C16C06C16F06C826C826C826C82013F168001 -0F16C01303D9007F15E0020315F0EC001F1500041F13F81607007C150100FC81177F6C16 -3FA2171F7EA26D16F0A27F173F6D16E06D157F6D16C001FEEDFF806D0203130002C0EB0F -FE02FCEB7FFC01DFB65A010F5DD8FE0315C026F8007F49C7FC48010F13E035437BC140> -II<902607FF -C0ED3FFEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60183E6D6D147E4E7F -6D6D4948806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F5C020314F8DA003F -018002F0C7FC51427BC05A>I119 D<007FB600C0017FB512F8A6D8 -001F01F8C70007EBF0006D040190C7FC6D6D5D6D6D4A5A6D6D4A5A70495A6D4C5A6E7F6E -6D495A6E6D495A7049C8FC6E4A5A6E6D485A6E6D485A6E13FFEF8FF06EEC9FE06FEBFFC0 -6F5C6F91C9FC5F6F5B816F7F6F7F8481707F8493B57E4B805D4B80DB0FF37FDB1FE17F04 -C080153F4B486C7F4B486C7F4A486D7F4A486D7F4A5A4B6D7F020F6E7F4A486D7F4A486D -804A5A4AC86C7F49486F7F4A6F7F0107707FEB3FFFB600F049B7FCA650407EBF55>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ft cmsy10 10.95 2 -/Ft 2 16 df13 D15 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fu cmbx12 14.4 61 -/Fu 61 123 df12 D44 DII<157815FC14031407141F14FF130F -0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>49 -DI<91380FFFC091B512FC0107ECFF80011F15E09026 -3FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15 -E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B -5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E701380 -7013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FC -A25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A -6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<177C -17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C -15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A13 -1F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7 -FCAF020FB712C0A53A4F7CCE43>III<121F7F7FEB -FF8091B81280A45A1900606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A5F -4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FF -A24A90C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC0 -6E5A395279D043>I<91380FFF8091B512F8010314FE010F6E7E4901037F90267FF8007F -4948EB3FF048496D7E484980486F7E484980824817805A91C714C05A7013E0A218F0B5FC -A318F8A618FCA46C5DA37EA25E6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF80301 -1FB512E36D14C30103028313F89039007FFE03EC00401500A218F05EA3D801F816E0487E -486C16C0487E486D491380A218005E5F4C5A91C7FC6C484A5A494A5A49495B6C48495BD8 -03FC010F5B9027FF807FFEC7FC6C90B55A6C6C14F06D14C0010F49C8FC010013F0364F7A -CD43>57 D<91B5FC010F14F8017F14FF90B712C00003D9C00F7F2707FC00017FD80FE06D -7F48486E7E48C87FD87FE06E7E7F7F486C1680A66C5A18006C485C6C5AC9485A5F4B5B4B -5B4B5B4B5B4B90C7FC16FC4B5A4B5A16C04B5A93C8FC4A5A5D14035D5D14075DA25D140F -A25DAB91CAFCAAEC1FC04A7EECFFF8497FA2497FA76D5BA26D5BEC3FE06E5A315479D340 ->63 D<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C8083047F80167E -8304FE804C7E03018116F8830303814C7E03078116E083030F814C7E031F81168083033F -8293C77E4B82157E8403FE824B800201835D840203834B800207835D844AB87EA24A83A3 -DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A820103854A82010785A24A82 -010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>65 -DI<932601FFFCEC01C0047F -D9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7 -383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F882494982494982494982 -4949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA2 -98C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D -606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D -6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F -93C8FC030715FCDB007F14E0040101FCC9FC525479D261>IIII<9326 -01FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003 -EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F88249 -49824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA24849181F -A3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000A36C7F -A36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF6D6C6D -5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033FEE001F03 -0703FC1307DB007F02E01301040149CAFC5B5479D26A>III75 DIII<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF -020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1FFF4949 -6F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A83481B804A8348 -1BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C -1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D -4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F -01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13E0565479D265> -II<93 -380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF020F01C0010F13C0023F90C700 -0313F0DA7FFC02007F902601FFF0ED3FFE49496F7E49496F7F49496F7F4990C96C7F4948 -707F4948707F01FF854A177F48864849717EA24849711380A2481BC04A83481BE0A24A83 -481BF0A3481BF8A291CB7EA3B51AFCAF6C1BF8A26E5FA36C1BF0A36C6D4D13E0A36C1BC0 -6E5F6C1B806E5F6CDB01FE16006C6D902607FF80495A4C13E06C6D013F6D495A017F9126 -7F03F85C6D6C90277C00FC015B6D6C49D97E035B6D01806E485B6D6D48D91F8F5B6D01E0 -039F90C7FC6D01F06EB45A6DD9FCF85DDA3FFF6E13F0020F6D4913C0020301FF90B5C8FC -020091B512FC031F180C0303181EDB001FEBE3FE93C7EA01FF74133E74137E7413FEF2F8 -077290B5FC1CFCA285A21CF8A2851CF07314E0A27314C0731480731400735B9638007FF8 -F21FE0576A79D265>II<91 -260FFF80130791B500F85B010702FF5B011FEDC03F49EDF07F9026FFFC006D5A4801E0EB -0FFD4801800101B5FC4848C87E48488149150F001F824981123F4981007F82A28412FF84 -A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86CECFF8016FC6CEDFFC017F06C16FC -6C16FF6C17C06C836C836D826D82010F821303010082021F16801400030F15C0ED007F04 -0714E01600173F050F13F08383A200788200F882A3187FA27EA219E07EA26CEFFFC0A27F -6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFFC003FFE0486C -90B65AD8FC0393C7FC48C66C14FC48010F14F048D9007F90C8FC3C5479D24B>I<003FBC -1280A59126C0003F9038C0007F49C71607D87FF8060113C001E08449197F49193F90C817 -1FA2007E1A0FA3007C1A07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0A553517BD0 -5E>IIII<003FB7D88003B7FCA5D8000749C8000701F8C7FC -6D6D9238007F806D6E93C8FC7015FE6D17016E6D5D704A5A6E16076E6D4A5A6E6D5D4F5A -6E6D143F6E6D4A5A7191C9FC6E16FE6EECC00171485A6F5D6F6D485A6FEBF80F71485A6F -5D6F6D485AEFFF7F6F4ACAFC6F5C6F5CA2705B705B8482707F707FA2707F7080855E4C80 -855E4C80DC3FCF7F058F7FEE7F074C6C7FDB01FE814C7E4B486C8003076E7F4B48814C7F -4B486D7F033F824C7F4BC76C7F4B6E7F4A5A4B6E804A486E800207844A48814B6F7F4A48 -83023F824A486F7F92C96C7F02FE840101830103718090263FFFC084B76C0103B712F8A5 -5D527CD166>I -97 DI<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE -0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F130070 -5A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C -6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49 -C7FC020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13 -FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F48 -4980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D -5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE -0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C0 -4901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C048 -8191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06C -EE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB -03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>IIII<137F -497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017E -B3B3A6B612E0A51B547BD325>I<157FEDFF80020313E04A13F0A24A13F8A76E13F0A26E -13E002001380ED7F0092C7FCADED1FF891B5FCA51401EC007FB3B3B1EA0780EA1FE0487E -487E486C13FF16F0A216E05C16C04A13806C4848130049485A003F495A000FB512F06C5C -0001148026001FFCC7FC256C87D329>IIIII<913801FFE0021F13FE91B612C0010315F0010F -9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F488348 -90C86C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C -5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0F -FF807FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<903A3FF001FFE0B5 -010F13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9FFE0EB1FFFC60280 -6D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A0060A36118FFA261 -5F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FBFE075B02F8B612E0 -6F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<90397FE003FEB590 -380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE780 -14EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537> -114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307D81FE0130148487F -4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15F86C14FF16C06C15 -F06C816C816C81C681013F1580010F15C01300020714E0EC003F030713F015010078EC00 -7F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC7F0001FEEB01FE90 -39FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB635>I<143EA6147E -A414FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FCB3 -A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B -020313802A4D7ECB34>IIII<007F -B500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D495A6D4B5A6F495A -6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06EEBCFC06EEBFF806E -91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03F87F4A486C7E4A48 -6C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A49486D7F01076F7E4948 -6E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>II< -001FB8FC1880A3912680007F130001FCC7B5FC01F0495B495D49495B495B4B5B48C75C5D -4B5B5F003E4A90C7FC92B5FC4A5B5E4A5B5CC7485B5E4A5B5C4A5B93C8FC91B5FC495B5D -4949EB0F805B495B5D495B49151F4949140092C7FC495A485E485B5C485E485B4A5C4849 -5B4815074849495A91C712FFB8FCA37E31357CB43C>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fv cmr10 10.95 82 -/Fv 82 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907 -F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7 -FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11 -D<4AB4FC021F13C091387F01F0903901FC0078D907F0131C4948133E494813FF49485A13 -7F1400A213FE6F5A163893C7FCAA167FB8FCA33900FE00018182B3AC486CECFF80007FD9 -FC3F13FEA32F407FBF33>I<4AB47E021F13F791387F00FFEB01F8903807F001EB0FE0EB -1FC0EB3F80137F14008101FE80AEB8FCA3C648C77EB3AE486CECFF80007FD9FC3F13FEA3 -2F407FBF33>I<4AB4ECFF80021FD9C00F13E0913B7F01F03F80F8903C01F80078FE003C -D907F0D93FF8130E49484948131F49484948EB7F804948484913FF137F02005CA201FE92 -C7FC6FED7F0070141C96C7FCAAF13F80BBFCA3C648C76CC7FC197F193FB3AC486C4A6CEB -7FC0007FD9FC3FD9FE1FB5FCA348407FBF4C>I<121EEA7F80EAFFC0A9EA7F80ACEA3F00 -AC121EAB120CC7FCA8121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A4179C019>33 -D<001E130F397F803FC000FF137F01C013E0A201E013F0A3007F133F391E600F30000013 -00A401E01370491360A3000114E04913C00003130101001380481303000EEB070048130E -0018130C0038131C003013181C1C7DBE2D>I<121EEA7F8012FF13C0A213E0A3127FEA1E -601200A413E013C0A312011380120313005A120E5A1218123812300B1C79BE19>39 -D<1430147014E0EB01C0EB03801307EB0F00131E133E133C5B13F85B12015B1203A2485A -A2120F5BA2121F90C7FCA25AA3123E127EA6127C12FCB2127C127EA6123E123FA37EA27F -120FA27F1207A26C7EA212017F12007F13787F133E131E7FEB07801303EB01C0EB00E014 -701430145A77C323>I<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA2 -7FA2133F7FA21480130FA214C0A3130714E0A6130314F0B214E01307A614C0130FA31480 -A2131F1400A25B133EA25BA2137813F85B12015B485A12075B48C7FC121E121C5A5A5A5A -145A7BC323>I<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113 -80120313005A120E5A1218123812300B1C798919>44 DI<121E -EA7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919>IIIIII< -150E151E153EA2157EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01 -C0A2EB0380EB0700A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5A -B8FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5 -FC5D5D5D15C092C7FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8 -496C7E49137E497F90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA4 -16E090C7121F12FC007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C48 -5A3903F80FE0C6B55A013F90C7FCEB07F8243F7CBC2D>II<1238123C123F90B612FCA316F85A16F016E00078C712010070EC -03C0ED078016005D48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25C -A2147C147814F8A213015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407B -BD2D>III<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FC -B3121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA -7F80A2EA1E00C7FCB3121E127FEAFF80A213C0A4127F121E1200A412011380A312031300 -5A1206120E120C121C5A1230A20A3979A619>I63 D<15074B7EA34B7EA34B7EA34B -7EA34B7E15E7A2913801C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D -7EA34A6D7EA34A6D7EA349486D7E91B6FCA249819138800001A249C87EA24982010E157F -A2011E82011C153FA2013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0 -010FB512F8A33D417DC044>65 DIIIIIII< -B612F0A3C6EBF000EB3FC0B3B3B2EBFFF0B612F0A31C3E7EBD21>I<011FB512FCA3D900 -0713006E5A1401B3B3A6123FEA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C -495A6C495A6C495A2603E07EC7FC3800FFF8EB3FC026407CBD2F>IIIIIII82 DI<003FB91280 -A3903AF0007FE001018090393FC0003F48C7ED1FC0007E1707127C00781703A300701701 -A548EF00E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42>III< -B500FE017FB5D88007B5FCA3000301C0010101E0C713F86C90C849EC3FE07148EC0F807E -7215006E143F017F190E84A26D6C60A24D7E6D6C60A2EFE7F86D6C60A2933801C3FC6E18 -F001076104037F6E0281140101036104077F17006D6C4D5AA2040EEB7F806D6C4DC7FCA2 -4CEB3FC0DA7F80160EA24CEB1FE003C0161E023F171C047814F0DBE070010F133C021F17 -3804F014F84C1307DA0FF05EA2DBF1C0EB03FCDA07F95EA2DBFB80EB01FEDA03FF6F5AA2 -93C8FCA26E5FA24B157F020094C8FCA24B81037C153EA20378151E0338151C58407EBD5D ->I<007FB5D8C003B512E0A3C649C7EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E -6D6C141C6D6C143C5F6D6C14706D6D13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC -020F5BEDF81E913807FC1C163C6E6C5A913801FF7016F06E5B6F5AA26F7E6F7EA2828215 -3FED3BFEED71FF15F103E07F913801C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C -6D7E02386D7E14784A6D7E4A6D7F130149486E7E4A6E7E130749C86C7E496F7E497ED9FF -C04A7E00076DEC7FFFB500FC0103B512FEA33F3E7EBD44>II91 -D<486C13C00003130101001380481303000EEB070048130E0018130C0038131C00301318 -0070133800601330A300E01370481360A400CFEB678039FFC07FE001E013F0A3007F133F -A2003F131F01C013E0390F0007801C1C73BE2D>II96 DII<49B4FC010F13E090383F00F801 -7C131E4848131F4848137F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FCA290 -C9FC5AAB6C7EA3003FEC01C07F001F140316806C6C13076C6C14000003140E6C6C131E6C -6C137890383F01F090380FFFC0D901FEC7FC222A7DA828>IIII< -167C903903F801FF903A1FFF078F8090397E0FDE1F9038F803F83803F001A23B07E000FC -0600000F6EC7FC49137E001F147FA8000F147E6D13FE00075C6C6C485AA23901F803E039 -03FE0FC026071FFFC8FCEB03F80006CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C15 -E06C810003813A0FC0001FFC48C7EA01FE003E140048157E825A82A46C5D007C153E007E -157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE017FC7FC90383FFFFC010313C0293D -7EA82D>III<1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC -147FEB7FFFA313017F147FB3B3A5123E127F38FF807E14FEA214FCEB81F8EA7F01387C03 -F0381E07C0380FFF803801FC00185185BD1C>III<2701F801FE14FF00FF902707FFC00313E0913B1E07E00F03F0913B -7803F03C01F80007903BE001F87000FC2603F9C06D487F000101805C01FBD900FF147F91 -C75B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8F87FD9FC3F13FEA347287DA74C> -I<3901F801FE00FF903807FFC091381E07E091387803F000079038E001F82603F9C07F00 -01138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8F87F13FCA32E287DA733>I<14 -FF010713E090381F81F890387E007E01F8131F4848EB0F804848EB07C04848EB03E0000F -15F04848EB01F8A2003F15FCA248C812FEA44815FFA96C15FEA36C6CEB01FCA3001F15F8 -6C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81FC90380FFF -F0010090C7FC282A7EA82D>I<3901FC03FC00FF90381FFF8091387C0FE09039FDE003F0 -3A03FFC001FC6C496C7E91C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0 -A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C001F89039FDE007F09039FC780FC0DA -3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA733>I<02FF131C0107EBC03C90381F -80F090397F00387C01FC131CD803F8130E4848EB0FFC150748481303121F485A1501485A -A448C7FCAA6C7EA36C7EA2001F14036C7E15076C6C130F6C7E6C6C133DD8007E13799038 -3F81F190380FFFC1903801FE0190C7FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E0 -00FFEB1FF8EC787CECE1FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35B -B3A5487EB512FEA31F287EA724>I<90383FC0603901FFF8E03807C03F381F000F003E13 -07003C1303127C0078130112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F -6C1480000114C0D8003F13E0010313F0EB001FEC0FF800E01303A214017E1400A27E15F0 -7E14016C14E06CEB03C0903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<13 -1CA6133CA4137CA213FCA2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0A912 -009038FE01C0A2EB7F03013F138090381F8700EB07FEEB01F81B397EB723>IIIIII<001FB61280A2EBE0000180140049485A001E49 -5A121C4A5A003C495A141F00385C4A5A147F5D4AC7FCC6485AA2495A495A130F5C495A90 -393FC00380A2EB7F80EBFF005A5B484813071207491400485A48485BA248485B4848137F -00FF495A90B6FCA221277EA628>III -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fw cmbx12 20.736 19 -/Fw 19 120 df68 D70 D<96267FFFE01670063FB6ED -01F80503B700F01403053F04FC14074CB96C130F040706E0131F043F72133F93BA00FC13 -7F0303DC00076D13FF030F03C09039003FFF814B02FCC8000713C3037F02E0030113F792 -B600806F6CB5FC02034ACA121F4A02F8834A02E0834A4A1701027F4A8391B548CC7E494A -85495C4C854988494A85494A85495C8A4991CDFC90B54886A2484A1B7FA2481E3F5D481E -1F5D5A1F0FA2485CA3481E075DA2795A489BC9FCA45DA2B6FCB27EA26F0403BA12C0A47E -A3816C96C8000302F8C7FCA36C80A36C80A27E817E817E817F6D80827F6D806D806D8082 -6D6E606D806E80021F6E5F6E02F05F6E806E02FE5F0200DAFFC05E6F02F04BB6FC031F02 -FE030713CF6FDAFFE0021F138703039226FF8003B51201030093B6EAFC00043F4E133F04 -0706E0131F04014E1307DC003F4CC71201050304F8EC0070DD003F038092C8FCDE007F01 -F0CCFC827A75F798>I<001FC012F8A7481FFC03F0C76C91C7120F92C8EF007F02F81B1F -02E01B0702801B0191C984491D7F491D3F491D1FA2491D0FA2491D07007F1FFEA2491D03 -A4491D01A700FF1FFF90CA85A6CB1A00B3B3B3AD4ABC12C0A8787479F387>84 -D<92383FFFF80207B612E0027F15FC49B87E010717E0011F83499026F0007F13FC4948C7 -000F7F90B502036D7E486E6D806F6D80727F486E6E7F8486727FA28684A26C5C72806C5C -6D90C8FC6D5AEB0FF8EB03E090CAFCA70507B6FC041FB7FC0303B8FC157F0203B9FC021F -ECFE0391B612800103ECF800010F14C04991C7FC017F13FC90B512F04814C0485C4891C8 -FC485B5A485B5C5A5CA2B5FC5CA360A36E5DA26C5F6E5D187E6C6D846E4A48806C6D4A48 -14FC6C6ED90FF0ECFFFC6C02E090263FE07F14FE00019139FC03FFC06C91B6487E013F4B -487E010F4B1307010303F01301D9003F0280D9003F13FC020101F8CBFC57507ACE5E>97 -D<93387FFF80030FB512FC037FECFF804AB712E0020716F8021F16FE027FD9F8077F49B5 -D8C000804991C7003F13E04901FC020F7F49496E7F49498049496E7F49496E7F90B55A48 -727E92C914804884485B1BC048841BE0485BA27313F05AA25C5AA21BF885A2B5FCA391BA -FCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F86C7F1A0F6C6E17F06C191F6F17 -E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13006D6D6CEC0FFE6D02E0EC3FFC -6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002034CC7FC020016F8031F15E003 -0392C8FCDB000F13E04D507BCE58>101 D103 D<903801FFFCB6FCA8C67E131F7FB3AD95380FFFE095B512FE05036E -7E050F15E0053F15F84D81932701FFF01F7F4CD900077FDC07FC6D80DC0FF06D80DC1FC0 -7F4C48824CC8FC047E6F7F5EEDFDF85E03FF707F5EA25EA25EA293C9FCA45DB3B3A6B8D8 -E003B81280A8617879F76C>III<90 -3801FFFCB6FCA8C67E131F7FB3AE0603B612FEA8DE001F01F8C7FC070713804F90C8FCF1 -3FFE4F5AF1FFF04E5B4E5B4E5B061F90C9FC4E5AF07FF84E5A4D5B05075B4D5B4D48CAFC -4D5A4D5A4D5A04035B4C7F4C7F5E4C7F4C7F03FDB6FC92B7FC858585A204F98004E0804C -804C7E4C6C7F4B6D7F4B824B7F7180718086837180727F8684727F728087847280728087 -84737F737F87854F14C0B8D88007B712F0A85C787AF766>I<902601FFF891260FFFE093 -383FFF80B692B500FE0303B512F805036E6C020F14FE050F03E0023F6E7E053F03F891B7 -12E04D6F4982932701FFF01F6D0107D9C07F7F4CD900076D90270FFC001F7FDC07FC6D91 -26801FF06D7FC66CDA0FF06D9126C03FC06D7F011FDA1FC06D4BC77E6D4A48DCE0FE834C -C8ECE1FC047E6FD9F1F86E804CEFF3F0DBF9F8EFF7E04C6003FB7001FF6F804C6015FF4C -95C9FCA24C5FA293C95CA44B60B3B3A6B8D8E003B8D8800FB712FEA8974E79CDA2>109 -D<902601FFF891380FFFE0B692B512FE05036E7E050F15E0053F15F84D81932701FFF01F -7F4CD900077FDC07FC6D80C66CDA0FF06D80011FDA1FC07F6D4A48824CC8FC047E6F7F5E -EDF9F85E03FB707F5E15FF5EA25EA293C9FCA45DB3B3A6B8D8E003B81280A8614E79CD6C ->I<93381FFFE00303B6FC031F15E092B712FC020316FF020F17C0023FD9FC0014F091B5 -00C0010F13FC4991C700037F4901FC02007F010F496F13C049496F7F49496F7F4B814949 -6F7F90B5C96C7F4886A24849707F481B80A248497014C0A2481BE0A348497113F0A3481B -F8A5B51AFCAE6C1BF8A46C1BF06E94B5FCA36C1BE0A26C6D4C14C0A26C1B806E5E6C1B00 -6C6E4B5BA26C6E4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D92B55A6D01FF02035C6D02C001 -0F91C7FC010002FC90B512FC6E90B75A021F17E00207178002014CC8FCDA003F15F00303 -92C9FCDB001F13E056507BCE61>I<902601FFF8EB07FEB691383FFFC094B512F0040380 -4C14FE4C8093261FFC3F138093263FE07F13C0DC7F80B5FCC66C5D011FDAFE0114E06DEB -F9FC16F815FB16F016E015FF16C07114C05E72138095381FFE0093C76C5AF001E095C8FC -A25DA65DB3B3A2B812F8A8434E7ACD4F>114 D<912603FFFCEB0780027F9039FFE00FC0 -0103B6EAF83F010FEDFEFF013F92B5FC49EB000F2601FFF01300480180143F4890C8120F -4848814848814981123F83485A187FA212FF6D163FA37F7F6DEE1F8002C092C7FC14F014 -FEECFFF06CECFF8016FEEEFFE06C16FC6C16FF18C06C836C17F86C836C836C83013F1780 -6D17C0010717E0010117F0EB003F020716F8EC001F030015FC1607EE007F051F13FE1707 -007E82B482836D167FA2183F7F181FA27F19FC7FA26D163F6D17F86D167F19F06D16FF6E -4A13E002E04A13C06E4A138002FE023F1300913AFFC003FFFE01E790B65A01C316F00180 -16C026FE003F92C7FC48010714F80070D9007F90C8FC3F507ACE4C>I<15FFA75CA55CA4 -5CA25CA25CA25CA25C91B5FCA25B5B5B131F5B90B9FC120FBAFCA6D8000791C9FCB3B3A3 -F01FE0AE183F7014C07F187F7014806D16FF826D4B13006E6D485AEEFE0F6E90B55A020F -5D6E5D020115C06E6C5C031F49C7FC030113F03B6E7CEC4B>II -119 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fx cmr10 10 1 -/Fx 1 112 df111 D E -%EndDVIPSBitmapFont -end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: a4 -a4 -%%EndPaperSize - -%%EndSetup -%%Page: 1 1 -1 0 bop 316 83 a Fx(o)150 1112 y Fw(The)64 b(DejaGn)-5 -b(u)65 b(T)-16 b(esting)65 b(F)-16 b(ramew)-5 b(ork)p -150 1212 3600 34 v 2787 1308 a Fv(for)31 b(DejaGn)m(u)g(V)-8 -b(ersion)30 b(1.3)3395 1525 y(Jan)g(1996)150 5068 y Fu(Rob)45 -b(Sa)l(v)l(o)l(y)l(e)p 150 5141 3600 17 v eop -%%Page: 2 2 -2 1 bop 3105 408 a Fv(Cygn)m(us)30 b(Supp)s(ort)150 4480 -y(Cop)m(yrigh)m(t)602 4477 y(c)577 4480 y Ft(\015)g Fv(92,)i(93,)f(94,) -h(95,)f(1996)h(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 -b(oundation,)30 b(Inc.)150 4615 y(P)m(ermission)g(is)i(gran)m(ted)h(to) -f(mak)m(e)i(and)d(distribute)f(v)m(erbatim)i(copies)g(of)g(this)f(man)m -(ual)h(pro)m(vided)f(the)150 4725 y(cop)m(yrigh)m(t)g(notice)f(and)g -(this)f(p)s(ermission)f(notice)i(are)h(preserv)m(ed)f(on)h(all)e -(copies.)150 4859 y(P)m(ermission)36 b(is)i(gran)m(ted)g(to)h(cop)m(y)g -(and)f(distribute)e(mo)s(di\014ed)g(v)m(ersions)h(of)i(this)e(man)m -(ual)g(under)g(the)150 4969 y(conditions)j(for)i(v)m(erbatim)g(cop)m -(ying,)j(pro)m(vided)40 b(also)i(that)h(the)f(en)m(tire)g(resulting)e -(deriv)m(ed)h(w)m(ork)h(is)150 5078 y(distributed)27 -b(under)i(the)i(terms)f(of)h(a)f(p)s(ermission)e(notice)i(iden)m(tical) -f(to)j(this)d(one.)150 5213 y(P)m(ermission)i(is)i(gran)m(ted)g(to)h -(cop)m(y)g(and)f(distribute)d(translations)i(of)i(this)e(man)m(ual)g -(in)m(to)h(another)g(lan-)150 5322 y(guage,)f(under)d(the)h(ab)s(o)m(v) -m(e)i(conditions)d(for)h(mo)s(di\014ed)e(v)m(ersions.)p -eop -%%Page: 1 3 -1 2 bop 150 -116 a Fv(Chapter)30 b(1:)41 b(What)31 b(is)e(DejaGn)m(u?) -2349 b(1)150 100 y Fs(1)80 b(What)54 b(is)g(DejaGn)l(u?)275 -334 y Fv(DejaGn)m(u)35 b(is)e(a)i(framew)m(ork)g(for)f(testing)h(other) -g(programs.)53 b(Its)34 b(purp)s(ose)f(is)g(to)j(pro)m(vide)d(a)i -(single)150 443 y(fron)m(t)30 b(end)g(for)g(all)g(tests.)41 -b(Bey)m(ond)31 b(this,)f(DejaGn)m(u)h(o\013ers)f(sev)m(eral)h(adv)-5 -b(an)m(tages)32 b(for)f(testing:)199 578 y(1.)61 b(The)32 -b(\015exibilit)m(y)e(and)i(consistency)h(of)g(the)g(DejaGn)m(u)g -(framew)m(ork)g(mak)m(e)h(it)e(easy)i(to)f(write)f(tests)330 -687 y(for)e(an)m(y)h(program.)199 822 y(2.)61 b(DejaGn)m(u)21 -b(pro)m(vides)f(a)h(la)m(y)m(er)g(of)g(abstraction)g(whic)m(h)e(allo)m -(ws)h(y)m(ou)h(to)g(write)f(tests)i(that)f(are)g(p)s(ortable)330 -932 y(to)35 b(an)m(y)f(host)g(or)g(target)h(where)f(a)g(program)g(m)m -(ust)g(b)s(e)f(tested.)52 b(F)-8 b(or)35 b(instance,)g(a)f(test)h(for)f -(GDB)330 1041 y(can)26 b(run)e(\(from)i(an)m(y)g(Unix)f(based)g(host\)) -h(on)g(an)m(y)g(target)h(arc)m(hitecture)g(that)f(DejaGn)m(u)h(supp)s -(orts.)330 1151 y(Curren)m(tly)d(DejaGn)m(u)j(runs)d(tests)j(on)f(sev)m -(eral)g(single)f(b)s(oard)g(computers,)i(whose)f(op)s(erating)f(soft-) -330 1260 y(w)m(are)31 b(ranges)f(from)g(just)g(a)h(b)s(o)s(ot)f -(monitor)g(to)h(a)g(full-\015edged,)d(Unix-lik)m(e)h(realtime)h(OS.)199 -1395 y(3.)61 b(All)36 b(tests)j(ha)m(v)m(e)g(the)f(same)g(output)f -(format.)63 b(This)36 b(mak)m(es)j(it)e(easy)i(to)f(in)m(tegrate)h -(testing)f(in)m(to)330 1504 y(other)c(soft)m(w)m(are)i(dev)m(elopmen)m -(t)e(pro)s(cesses.)51 b(DejaGn)m(u's)35 b(output)f(is)f(designed)g(to)h -(b)s(e)g(parsed)f(b)m(y)330 1614 y(other)e(\014ltering)d(script,)i(and) -g(it)f(is)h(also)g(h)m(uman)g(readable.)275 1773 y(DejaGn)m(u)h(is)e -(written)h(in)f Fr(expect)p Fv(,)g(whic)m(h)g(in)g(turn)g(uses)h -Fq(Tcl)p Fv(|T)-8 b(o)s(ol)29 b(command)h(language.)275 -1908 y(Running)21 b(tests)k(requires)d(t)m(w)m(o)k(things:)36 -b(the)24 b(testing)g(framew)m(ork,)i(and)d(the)h(test)h(suites)e -(themselv)m(es.)150 2017 y(T)-8 b(ests)35 b(are)g(usually)d(written)i -(in)f Fr(expect)g Fv(using)g(Tcl,)i(but)f(y)m(ou)h(can)g(also)g(use)f -(a)h(Tcl)f(script)f(to)i(run)f(a)150 2127 y(test)f(suite)f(that)g(is)g -(not)g(based)g(on)g Fr(expect)p Fv(.)44 b(\()p Fr(expect)31 -b Fv(script)g(\014lenames)g(con)m(v)m(en)m(tionally)i(use)f(`)p -Fr(.exp)p Fv(')150 2237 y(as)h(a)g(su\016x;)g(for)g(example,)g(the)g -(main)f(implemen)m(tation)f(of)i(the)g(DejaGn)m(u)h(test)f(driv)m(er)f -(is)f(in)h(the)h(\014le)150 2346 y(`)p Fr(runtest.exp)p -Fv('.\))p eop -%%Page: 2 4 -2 3 bop 150 -116 a Fv(2)2409 b(DejaGn)m(u)32 b(T)-8 b(esting)30 -b(F)-8 b(ramew)m(ork)p eop -%%Page: 3 5 -3 4 bop 150 -116 a Fv(Chapter)30 b(2:)41 b(What)31 b(is)e(new)h(in)f -(this)h(release)g(?)1937 b(3)150 100 y Fs(2)80 b(What)54 -b(is)g(new)f(in)h(this)g(release)f(?)275 334 y Fv(This)39 -b(release)i(has)f(a)h(n)m(um)m(b)s(er)f(of)h(substan)m(tial)f(c)m -(hanges)h(o)m(v)m(er)i(v)m(ersion)d(1.2.)73 b(The)40 -b(most)h(visible)150 443 y(c)m(hange)29 b(is)f(that)h(the)f(v)m(ersion) -g(of)g(exp)s(ect)h(and)f(Tcl)f(included)f(in)h(the)h(release)h(are)f -(up-to-date)i(with)d(the)150 553 y(curren)m(t)j(stable)g(net)h -(releases.)41 b(Other)30 b(c)m(hanges)h(are:)199 687 -y(1.)61 b(The)35 b(con\014g)h(sub-system)f(in)f(DejaGn)m(u)j(has)e(b)s -(een)g(completely)g(redesigned.)55 b(It)36 b(no)m(w)g(supp)s(orts)330 -797 y(testing)30 b(on)h(remote)g(hosts)f(as)h(w)m(ell)e(as)i(remote)g -(targets.)199 932 y(2.)61 b(More)23 b(builtin)c(supp)s(ort)h(for)i -(building)d(target)24 b(binaries)c(with)h(the)h(correct)i(link)m(er)c -(\015ags.)39 b(Curren)m(tly)330 1041 y(this)29 b(only)h(w)m(orks)g -(with)f(GCC,)h(preferably)f(with)g(a)i(target)h(supp)s(ort)d(b)m(y)h -Fr(libgloss)p Fv(.)199 1176 y(3.)61 b(Lots)31 b(of)f(little)f(bug)h -(\014xes)g(from)g(a)h(y)m(ear)g(of)g(hea)m(vy)g(use)f(here)g(at)h(Cygn) -m(us)f(Supp)s(ort.)199 1310 y(4.)61 b(DejaGn)m(u)31 b(no)m(w)g(uses)f -Fr(autoconf)e Fv(for)i(con\014guration.)199 1445 y(5.)61 -b(New)38 b(test)g(cases)h(for)e(DejaGn)m(u)h(ha)m(v)m(e)h(b)s(een)e -(added)g(for)g(the)h(new)f(features,)j(plus)35 b(the)j -Fr(")p Fv({to)s(ol)p Fr(")330 1554 y Fv(option)30 b(bug)g(in)f(the)h -(1.2)i(testsuite)e(has)g(b)s(een)g(\014xed.)199 1689 -y(6.)61 b(The)30 b Fr(--tool)f Fv(option)g(is)h(no)m(w)g(optional.)199 -1823 y(7.)61 b Fr(runtest)26 b Fv(when)g(searc)m(hing)i(for)f(test)i -(driv)m(ers)d(ignores)h(all)f(directories)h(named)g(SCCS,)f(R)m(CS,)i -(and)330 1933 y(CVS.)199 2067 y(8.)61 b(There)30 b(is)f(no)m(w)h(a)h -(generic)f(k)m(eyw)m(ord)h(based)e(test)j(harness)d(that)i(uses)e -(commen)m(ts)i(in)e(source)i(co)s(de)330 2177 y(to)g(con)m(trol)g(ho)m -(w)f(eac)m(h)i(test)f(case)h(gets)f(built)d(and)i(run.)199 -2311 y(9.)61 b(There)30 b(is)f(no)m(w)i(some)f(supp)s(ort)f(for)h -(running)e(a)j(testsuite)f(with)f(m)m(ultiple)f(passes.)150 -2569 y Fu(2.1)68 b(Running)45 b(existing)h(tests)275 -2761 y Fv(T)-8 b(o)25 b(run)e(tests)j(from)e(an)h(existing)e -(collection,)j(\014rst)e(use)h Fr(configure)d Fv(as)j(usual)e(to)j(set) -f(up)f(the)h(source)150 2871 y(directory)30 b(con)m(taining)g(the)g -(tests.)42 b(Then)29 b(try)h(running)390 3000 y Fr(make)47 -b(check)275 3134 y Fv(If)29 b(the)h Fr(check)e Fv(target)j(exists,)f -(it)f(usually)e(sa)m(v)m(es)k(y)m(ou)f(some)g(trouble|for)f(instance,)h -(it)f(can)h(set)g(up)150 3244 y(an)m(y)h(auxiliary)d(programs)i(or)g -(other)h(\014les)e(needed)h(b)m(y)g(the)h(tests.)275 -3378 y(Once)e(y)m(ou)i(ha)m(v)m(e)g(run)e(`)p Fr(make)g(check)p -Fv(')g(to)i(build)c(an)m(y)j(auxiliary)e(\014les,)h(y)m(ou)h(migh)m(t)g -(w)m(an)m(t)h(to)f(call)g(the)150 3488 y(test)e(driv)m(er)d -Fr(runtest)g Fv(directly)h(to)h(rep)s(eat)g(the)g(tests.)40 -b(Y)-8 b(ou)28 b(ma)m(y)f(also)g(ha)m(v)m(e)h(to)f(call)f -Fr(runtest)f Fv(directly)150 3597 y(for)30 b(test)h(collections)f(with) -f(no)i Fr(check)e Fv(target)j(in)d(the)h(`)p Fr(Makefile)p -Fv('.)p eop -%%Page: 4 6 -4 5 bop 150 -116 a Fv(4)2409 b(DejaGn)m(u)32 b(T)-8 b(esting)30 -b(F)-8 b(ramew)m(ork)275 83 y(T)m(ypically)g(,)39 b(y)m(ou)g(m)m(ust)f -(use)h(t)m(w)m(o)h(command-line)d(options:)56 b(`)p Fr(--tool)p -Fv(',)40 b(to)f(sp)s(ecify)e(whic)m(h)h(set)h(of)150 -193 y(tests)31 b(to)g(run)612 160 y Fp(1)648 193 y Fv(,)g(and)e(`)p -Fr(--srcdir)p Fv(',)g(to)i(sp)s(ecify)e(where)h(to)h(\014nd)e(test)j -(directories.)275 327 y(F)-8 b(or)27 b(example,)h(if)d(the)i(directory) -g(`)p Fr(gdb/testsuite)p Fv(')c(con)m(tains)k(a)h(collection)e(of)h -(DejaGn)m(u)h(tests)f(for)150 437 y Fo(gdb)p Fv(,)j(y)m(ou)h(can)g(run) -e(them)h(lik)m(e)g(this:)390 565 y Fr(eg$)47 b(cd)g(gdb/testsuite)390 -669 y(eg$)g(runtest)f(--tool)g(gdb)150 773 y Fn(T)-7 -b(est)33 b(output)g(fol)5 b(lows,)34 b(ending)f(with:)390 -980 y Fr(===)47 b(gdb)g(Summary)f(===)390 1188 y(#)h(of)h(expected)d -(passes)h(508)390 1292 y(#)h(of)h(expected)d(failures)h(103)390 -1396 y(/usr/latest/bin/gdb)d(version)i(4.14.4)h(-nx)275 -1530 y Fv(Y)-8 b(ou)20 b(can)h(use)f(the)h(option)e(`)p -Fr(--srcdir)p Fv(')g(to)i(p)s(oin)m(t)e(to)i(some)g(other)g(directory)f -(con)m(taining)g(a)g(collection)150 1640 y(of)31 b(tests:)390 -1768 y Fr(eg$)47 b(runtest)f(--tool)g(gdb)h(--srcdir)e -(/devo/gdb/testsuite)275 1903 y Fv(These)d(examples)g(assume)h(a)g -Fq(nativ)m(e)48 b Fv(con\014guration,)d(where)d(the)h(same)g(computer)g -(runs)e(b)s(oth)150 2012 y Fr(runtest)31 b Fv(and)h(the)h(tests)h -(themselv)m(es.)48 b(When)33 b(y)m(ou)g(ha)m(v)m(e)h(a)f -Fq(cross)k Fv(con\014guration,)c(the)g(tests)h(run)d(on)150 -2122 y(a)j(di\013eren)m(t)f(computer,)h(con)m(trolled)f(b)m(y)g(the)h -(host)f(running)e Fr(runtest)p Fv(.)47 b(In)33 b(this)f(situation,)h(y) -m(ou)h(need)150 2232 y(the)d(option)e(`)p Fr(--name)p -Fv(')h(to)h(sp)s(ecify)e(the)h(net)m(w)m(ork)h(address)f(for)g(the)h -(other)f(computer:)390 2360 y Fr(eg$)47 b(runtest)f(--tool)g(gdb)h -(--name)f(vx9.munist.com)275 2495 y Fv(If)24 b(y)m(ou)h(alw)m(a)m(ys)g -(use)f(the)h(same)g(option)f(v)-5 b(alues,)25 b(y)m(ou)g(can)g(record)g -(them)g(in)e(a)i(\014le)f(called)f(`)p Fr(site.exp)p -Fv(',)150 2604 y(rather)33 b(than)g(t)m(yping)f(them)h(eac)m(h)h(time.) -48 b(See)34 b(Chapter)e(4)h([Setting)g(defaults)f(for)h -Fr(runtest)e Fv(options],)150 2714 y(page)g(15.)275 2848 -y(By)36 b(default,)g Fr(runtest)e Fv(prin)m(ts)g(only)h(the)h(names)f -(of)h(the)g(tests)h(it)e(runs,)h(output)f(from)g(an)m(y)h(tests)150 -2958 y(that)41 b(ha)m(v)m(e)g(unexp)s(ected)e(results,)j(and)d(a)i -(summary)e(sho)m(wing)g(ho)m(w)h(man)m(y)g(tests)h(passed)e(and)h(ho)m -(w)150 3068 y(man)m(y)26 b(failed.)38 b(T)-8 b(o)26 b(displa)m(y)e -(output)h(from)h(all)e(tests)j(\(whether)e(or)h(not)g(they)g(b)s(eha)m -(v)m(e)g(as)h(exp)s(ected\),)g(use)150 3177 y(the)36 -b(`)p Fr(--all)p Fv(')f(option.)56 b(F)-8 b(or)37 b(more)f(v)m(erb)s -(ose)g(output)f(ab)s(out)g(pro)s(cesses)h(b)s(eing)e(run,)i(comm)m -(unication,)150 3287 y(and)f(so)h(on,)h(use)e(`)p Fr(--verbose)p -Fv('.)55 b(T)-8 b(o)36 b(see)g(ev)m(en)g(more)g(output,)h(use)e(m)m -(ultiple)f(`)p Fr(--verbose)p Fv(')f(options.)150 3396 -y(See)j(Chapter)f(3)i([Using)e Fr(runtest)p Fv(],)h(page)g(9,)i(for)e -(a)g(more)g(detailed)f(explanation)g(of)h(eac)m(h)h Fr(runtest)150 -3506 y Fv(option.)275 3641 y(T)-8 b(est)28 b(output)f(go)s(es)h(in)m -(to)g(t)m(w)m(o)h(\014les)d(in)h(y)m(our)g(curren)m(t)h(directory:)38 -b(summary)27 b(output)g(in)f(`)p Fq(to)s(ol)p Fr(.sum)p -Fv(',)150 3750 y(and)31 b(detailed)g(output)h(in)f(`)p -Fq(to)s(ol)p Fr(.log)p Fv('.)45 b(\()p Fq(to)s(ol)35 -b Fv(refers)d(to)h(the)f(collection)f(of)i(tests;)g(for)f(example,)g -(after)150 3860 y(a)37 b(run)e(with)g(`)p Fr(--tool)29 -b(gdb)p Fv(',)38 b(lo)s(ok)e(for)h(output)f(\014les)f(`)p -Fr(gdb.sum)p Fv(')g(and)h(`)p Fr(gdb.log)p Fv('.\))59 -b(See)36 b(Section)h(5.7)150 3969 y([The)30 b(\014les)f(DejaGn)m(u)j -(writes],)e(page)h(35.)p 150 4070 1200 4 v 192 4136 a -Fp(1)275 4169 y Fv(`)p Fr(--tool)p Fv(')h(selects)j(a)f(particular)f -(suite)g(of)h(tests,)i Fn(not)43 b Fv(the)34 b(name)g(of)h(the)f -(executable)g(program)g(to)275 4279 y(run.)55 b(See)36 -b(Chapter)f(4)h([Con\014guration)f(dep)s(enden)m(t)f(v)-5 -b(alues],)37 b(page)g(15,)h(for)d(information)f(on)i(the)275 -4388 y(v)-5 b(ariables)29 b(that)i(y)m(ou)f(can)h(use)f(to)h(sp)s -(ecify)e(the)i(names)f(of)g(programs)g(to)i(run.)p eop -%%Page: 5 7 -5 6 bop 150 -116 a Fv(Chapter)30 b(2:)41 b(What)31 b(is)e(new)h(in)f -(this)h(release)g(?)1937 b(5)150 83 y Fu(2.2)68 b(What)45 -b(do)t(es)g(a)g(DejaGn)l(u)h(test)f(lo)t(ok)h(lik)l(e?)275 -276 y Fv(Eac)m(h)32 b(DejaGn)m(u)i(test)f(is)e(an)h Fr(expect)f -Fv(script;)h(the)h(tests)g(v)-5 b(ary)32 b(widely)e(in)h(complexit)m(y) --8 b(,)33 b(dep)s(ending)150 385 y(on)d(the)h(nature)f(of)g(the)h(to)s -(ol)f(and)g(the)h(feature)g(tested.)275 520 y(Here)38 -b(is)e(a)i(v)m(ery)g(simple)d Fo(gdb)i Fv(test|one)i(of)f(the)f -(simplest)f(tests)i(shipp)s(ed)d(with)h(DejaGn)m(u)i(\(ex-)150 -629 y(tracted)31 b(from)f(`)p Fr(gdb.t00/echo.exp)p Fv('\):)1556 -596 y Fp(2)150 713 y Fm(\013)p 200 713 3554 4 v 3553 -w(\010)p 150 1833 4 1072 v 178 866 a Fr(#)48 b(send)e(a)i(string)e(to)h -(the)g(GDB)g(stdin:)178 970 y(send)g("echo)f(Hello)h(world!\\n")178 -1177 y(#)h(inspect)d(the)i(GDB)g(stdout)f(for)h(the)g(correct)f(reply,) -178 1281 y(#)i(and)f(determine)e(whether)h(the)h(test)f(passes)g(or)h -(fails:)178 1385 y(expect)f({)274 1489 y(-re)h("Hello)f(world.*$prompt) -e($")190 b({)47 b(pass)g("Echo)f(test")h(})274 1593 y(-re)g("$prompt)e -($")811 b({)47 b(fail)g("Echo)f(test")h(})274 1696 y(timeout)1191 -b({)47 b(fail)g("\(timeout\))e(Echo)i(test")f(})274 1800 -y(})p 3803 1833 V 150 1885 a Fm(\012)p 200 1885 3554 -4 v 3553 w(\011)275 2029 y Fv(Though)33 b(brief,)g(this)g(example)h(is) -f(a)h(complete)h(test.)53 b(It)34 b(illustrates)e(some)i(of)g(the)h -(main)e(features)150 2139 y(of)e(DejaGn)m(u)g(test)g(scripts:)225 -2274 y Ft(\017)60 b Fv(The)31 b(test)h(case)h(do)s(es)e(not)h(start)g -(the)g(tested)g(program)f(\()p Fo(gdb)h Fv(in)e(this)g(case\);)k(all)c -(test)j(scripts)d(for)330 2383 y(in)m(teractiv)m(e)h(to)s(ols)f(can)h -(assume)f(the)h(corresp)s(onding)d(to)s(ol)i(is)g(running.)225 -2518 y Ft(\017)60 b Fv(Commen)m(ts)31 b(start)f(with)g(`)p -Fr(#)p Fv('.)225 2652 y Ft(\017)60 b Fv(The)20 b(main)f(commands)h(y)m -(ou)h(use)f(to)h(con)m(trol)g(a)f(tested)i(program)e(are)h -Fr(send)e Fv(\(to)i(giv)m(e)g(it)f(commands\))330 2762 -y(and)30 b Fr(expect)e Fv(\(to)k(analyze)f(its)e(resp)s(onses\).)225 -2896 y Ft(\017)60 b Fv(The)33 b Fr(expect)e Fv(command)i(uses)g(a)h -(list)d(of)j(pairs;)f(a)h(pattern)f(\(regular)g(expression)f(if)g(`)p -Fr(-re)p Fv(')h(sp)s(ec-)330 3006 y(i\014ed\),)i(follo)m(w)m(ed)g(b)m -(y)g(an)f(action)i(to)f(run)f(if)g(the)h(pattern)g(matc)m(hes)h(output) -e(from)h(the)g(program.)330 3115 y(Only)29 b(the)h(action)h(for)f(the)h -Fn(\014rst)39 b Fv(matc)m(hing)31 b(pattern)f(will)e(execute.)225 -3250 y Ft(\017)60 b Fv(T)-8 b(est)31 b(cases)g(use)f(the)h(commands)f -Fr(pass)f Fv(and)h Fr(fail)f Fv(to)i(record)g(the)f(test)h(outcome.)150 -3507 y Fu(2.3)68 b(Design)46 b(goals)275 3700 y Fv(DejaGn)m(u)d(grew)f -(out)h(of)f(the)h(in)m(ternal)e(needs)h(of)g(Cygn)m(us)g(Supp)s(ort.)75 -b(Cygn)m(us)41 b(main)m(tains)h(and)150 3809 y(enhances)24 -b(a)g(v)-5 b(ariet)m(y)24 b(of)f(free)h(programs)f(in)g(man)m(y)h -(di\013eren)m(t)f(en)m(vironmen)m(ts,)h(and)f(w)m(e)h(needed)g(a)g -(testing)150 3919 y(to)s(ol)30 b(that:)225 4054 y Ft(\017)60 -b Fv(is)29 b(useful)g(to)i(dev)m(elop)s(ers)f(while)e(\014xing)h(bugs;) -225 4188 y Ft(\017)60 b Fv(automates)32 b(running)c(man)m(y)i(tests)h -(during)d(a)j(soft)m(w)m(are)h(release)f(pro)s(cess;)225 -4323 y Ft(\017)60 b Fv(is)29 b(p)s(ortable)h(among)h(a)f(v)-5 -b(ariet)m(y)31 b(of)g(host)f(computers;)225 4457 y Ft(\017)60 -b Fv(supp)s(orts)28 b(cross-dev)m(elopmen)m(t)k(testing;)225 -4591 y Ft(\017)60 b Fv(p)s(ermits)29 b(testing)h(in)m(teractiv)m(e)h -(programs,)g(lik)m(e)e Fo(gdb)p Fv(;)i(and)225 4726 y -Ft(\017)60 b Fv(p)s(ermits)29 b(testing)h(batc)m(h)h(orien)m(ted)f -(programs,)h(lik)m(e)e Fo(gcc)p Fv(.)p 150 4822 1200 -4 v 192 4888 a Fp(2)275 4921 y Fv(More)42 b(recen)m(t)h -Fo(gdb)f Fv(tests)h(use)e(the)h(`)p Fr(gdb_test)p Fv(')f(pro)s(cedure.) -74 b(An)42 b(equiv)-5 b(alen)m(t)41 b(test)i(using)d(that)275 -5031 y(pro)s(cedure)29 b(is)g(`)i Fr(gdb_test)d("echo)h(Hello)g -(world!")f("Hello)h(world!")f Fv(')p eop -%%Page: 6 8 -6 7 bop 150 -116 a Fv(6)2409 b(DejaGn)m(u)32 b(T)-8 b(esting)30 -b(F)-8 b(ramew)m(ork)275 83 y(Some)28 b(of)g(the)h(requiremen)m(ts)e -(pro)m(v)m(ed)i(c)m(hallenging.)39 b(F)-8 b(or)29 b(example,)f(in)m -(teractiv)m(e)i(programs)d(do)i(not)150 193 y(lend)35 -b(themselv)m(es)h(v)m(ery)h(w)m(ell)e(to)i(automated)h(testing.)58 -b(But)37 b(all)e(the)h(requiremen)m(ts)g(are)h(imp)s(ortan)m(t:)150 -302 y(for)29 b(instance,)g(it)g(is)f(imp)s(erativ)m(e)g(to)h(mak)m(e)h -(sure)f(that)g Fo(gdb)g Fv(w)m(orks)g(as)g(w)m(ell)f(when)g -(cross-debugging)h(as)150 412 y(it)h(do)s(es)g(in)f(a)i(nativ)m(e)g -(con\014guration.)275 546 y(Probably)d(the)i(greatest)i(c)m(hallenge)e -(w)m(as)g(testing)g(in)f(a)h(cross-dev)m(elopmen)m(t)h(en)m(vironmen)m -(t)f(\(whic)m(h)150 656 y(can)38 b(b)s(e)e(a)i(real)f(nigh)m(tmare\).) -62 b(Most)38 b(cross-dev)m(elopmen)m(t)h(en)m(vironmen)m(ts)d(are)i -(customized)f(b)m(y)h(eac)m(h)150 765 y(dev)m(elop)s(er.)60 -b(Ev)m(en)38 b(when)e(buying)f(pac)m(k)-5 b(aged)39 b(b)s(oards)d(from) -g(v)m(endors)h(there)h(are)f(man)m(y)g(di\013erences.)150 -875 y(The)e(comm)m(unication)g(in)m(terfaces)g(v)-5 b(ary)36 -b(from)f(a)g(serial)f(line)g(to)i(ethernet.)56 b(DejaGn)m(u)36 -b(w)m(as)g(designed)150 985 y(with)e(a)j(mo)s(dular)c(comm)m(unication) -i(setup,)i(so)f(that)h(eac)m(h)g(kind)c(of)j(comm)m(unication)g(can)g -(b)s(e)f(added)150 1094 y(as)30 b(required,)e(and)h(supp)s(orted)e -(thereafter.)42 b(Once)29 b(a)h(comm)m(unication)f(pro)s(cedure)f(is)h -(co)s(ded,)g(an)m(y)h(test)150 1204 y(can)h(use)f(it.)41 -b(Curren)m(tly)29 b(DejaGn)m(u)i(can)g(use)f Fr(rsh)p -Fv(,)g Fr(rlogin)p Fv(,)f Fr(telnet)p Fv(,)g Fr(tip)p -Fv(,)h Fr(kermit)p Fv(,)f(and)h Fr(mondfe)f Fv(for)150 -1313 y(remote)i(comm)m(unications.)275 1448 y(Julia)20 -b(Menapace)j(\014rst)f(coined)f(the)i(term)f(\\Deja)i(Gn)m(u")e(to)h -(describ)s(e)d(an)i(earlier)g(testing)g(framew)m(ork)150 -1557 y(at)40 b(Cygn)m(us)e(Supp)s(ort.)64 b(When)38 b(w)m(e)i(replaced) -e(it)g(with)g(the)h(Exp)s(ect-based)g(framew)m(ork,)i(it)d(w)m(as)i -(lik)m(e)150 1667 y(DejaGn)m(u)31 b(all)e(o)m(v)m(er)j(again)6 -b(.)22 b(.)g(.)150 1924 y Fu(2.4)68 b(A)44 b(POSIX)h(conforming)g(test) -h(framew)l(ork)275 2117 y Fv(DejaGn)m(u)31 b(conforms)f(to)h(the)g -Fo(posix)e Fv(standard)h(for)g(test)h(framew)m(orks.)275 -2252 y Fo(posix)j Fv(standard)h(1003.3)j(de\014nes)d(what)g(a)h -(testing)g(framew)m(ork)g(needs)f(to)h(pro)m(vide,)h(in)d(order)h(to) -150 2361 y(p)s(ermit)23 b(the)i(creation)g(of)g Fo(posix)f -Fv(conformance)h(test)h(suites.)38 b(This)23 b(standard)h(is)f -(primarily)f(orien)m(ted)i(to)150 2471 y(running)k Fo(posix)i -Fv(conformance)h(tests,)h(but)d(its)h(requiremen)m(ts)g(also)h(supp)s -(ort)d(testing)j(of)g(features)g(not)150 2580 y(related)22 -b(to)h Fo(posix)f Fv(conformance.)38 b Fo(posix)22 b -Fv(1003.3)j(do)s(es)d(not)g(sp)s(ecify)f(a)i(particular)d(testing)j -(framew)m(ork,)150 2690 y(but)30 b(at)h(this)e(time)h(there)h(is)e -(only)h(one)g(other)h Fo(posix)f Fv(conforming)f(test)i(framew)m(ork:) -41 b Fo(tet)p Fv(.)3320 2657 y Fp(3)275 2824 y Fv(The)26 -b Fo(posix)h Fv(do)s(cumen)m(tation)g(refers)f(to)i Fq(assertions)p -Fv(.)40 b(An)26 b(assertion)h(is)f(a)i(description)d(of)j(b)s(eha)m -(vior.)150 2934 y(F)-8 b(or)41 b(example,)j(if)39 b(a)i(standard)f(sa)m -(ys)h(\\The)g(sun)e(shall)g(shine",)j(a)f(corresp)s(onding)e(assertion) -h(migh)m(t)150 3044 y(b)s(e)c(\\The)h(sun)f(is)g(shining.")58 -b(A)37 b(test)g(based)g(on)g(this)f(assertion)g(w)m(ould)g(pass)g(or)h -(fail)f(dep)s(ending)e(on)150 3153 y(whether)d(it)f(is)g(da)m(ytime)i -(or)f(nigh)m(ttime.)42 b(It)32 b(is)e(imp)s(ortan)m(t)g(to)i(note)g -(that)g(the)f(standard)f(b)s(eing)g(tested)150 3263 y(is)g(nev)m(er)h -(1003.3;)i(the)e(standard)f(b)s(eing)g(tested)h(is)f(some)h(other)g -(standard,)f(for)h(whic)m(h)e(the)i(assertions)150 3372 -y(w)m(ere)g(written.)275 3507 y(As)g(there)g(is)g(no)g(test)h(suite)e -(to)i(test)h Fn(testing)g(fr)-5 b(ameworks)41 b Fv(for)31 -b Fo(posix)g Fv(1003.3)j(conformance,)e(v)m(eri-)150 -3616 y(fying)c(conformance)i(to)h(this)d(standard)h(is)f(done)h(b)m(y)h -(rep)s(eatedly)e(reading)h(the)h(standard)e(and)h(exp)s(eri-)150 -3726 y(men)m(ting.)40 b(One)28 b(of)h(the)g(main)f(things)f(1003.3)32 -b(do)s(es)c(sp)s(ecify)g(is)f(the)i(set)h(of)f(allo)m(w)m(ed)f(output)h -(messages,)150 3836 y(and)39 b(their)g(de\014nitions.)66 -b(F)-8 b(our)41 b(messages)f(are)g(supp)s(orted)e(for)i(a)g(required)e -(feature)i(of)g Fo(posix)f Fv(con-)150 3945 y(forming)g(systems,)k(and) -c(a)i(\014fth)e(for)h(a)h(conditional)d(feature.)71 b(DejaGn)m(u)41 -b(supp)s(orts)d(the)j(use)f(of)g(all)150 4055 y(\014v)m(e)h(output)f -(messages;)46 b(in)40 b(this)f(sense)h(a)h(test)h(suite)d(that)i(uses)f -(exactly)i(these)e(messages)i(can)f(b)s(e)150 4164 y(considered)29 -b Fo(posix)h Fv(conforming.)40 b(These)30 b(de\014nitions)e(sp)s(ecify) -h(the)h(output)g(of)h(a)g(test)g(case:)150 4399 y Fr(PASS)288 -b Fv(A)30 b(test)i(has)e(succeeded.)41 b(That)30 b(is,)g(it)g -(demonstrated)g(that)h(the)g(assertion)f(is)f(true.)150 -4583 y Fr(XFAIL)240 b Fo(posix)41 b Fv(1003.3)k(do)s(es)d(not)g(incorp) -s(orate)g(the)g(notion)g(of)g(exp)s(ected)h(failures,)g(so)g -Fr(PASS)p Fv(,)630 4692 y(instead)32 b(of)h Fr(XPASS)p -Fv(,)g(m)m(ust)f(also)h(b)s(e)g(returned)e(for)i(test)h(cases)g(whic)m -(h)d(w)m(ere)j(exp)s(ected)f(to)630 4802 y(fail)24 b(and)h(did)e(not.) -40 b(This)23 b(means)i(that)h Fr(PASS)e Fv(is)h(in)f(some)i(sense)f -(more)g(am)m(biguous)g(than)g(if)630 4912 y Fr(XPASS)j -Fv(is)g(also)h(used.)40 b(F)-8 b(or)30 b(information)d(on)i -Fr(XPASS)f Fv(and)g Fr(XFAIL)p Fv(,)h(see)g(Chapter)g(3)g([Using)630 -5021 y Fr(runtest)p Fv(],)g(page)i(9.)p 150 5122 1200 -4 v 192 5188 a Fp(3)275 5221 y Fo(tet)d Fv(w)m(as)h(created)h(b)m(y)f -(Unisoft)f(for)h(a)g(consortium)f(comprised)g(of)h(X/Op)s(en,)g(Unix)e -(In)m(ternational,)275 5331 y(and)i(the)i(Op)s(en)e(Soft)m(w)m(are)i(F) --8 b(oundation.)p eop -%%Page: 7 9 -7 8 bop 150 -116 a Fv(Chapter)30 b(2:)41 b(What)31 b(is)e(new)h(in)f -(this)h(release)g(?)1937 b(7)150 83 y Fr(FAIL)288 b Fv(A)27 -b(test)g Fn(has)35 b Fv(pro)s(duced)25 b(the)h(bug)g(it)g(w)m(as)h(in)m -(tended)e(to)i(capture.)40 b(That)26 b(is,)h(it)f(has)g(demon-)630 -193 y(strated)32 b(that)g(the)g(assertion)g(is)f(false.)44 -b(The)31 b Fr(FAIL)g Fv(message)i(is)d(based)i(on)f(the)h(test)h(case) -630 302 y(only)-8 b(.)40 b(Other)30 b(messages)i(are)e(used)g(to)h -(indicate)e(a)i(failure)e(of)h(the)h(framew)m(ork.)630 -437 y(As)c(with)g Fr(PASS)p Fv(,)g Fo(posix)f Fv(tests)j(m)m(ust)e -(return)f Fr(FAIL)h Fv(rather)g(than)g Fr(XFAIL)f Fv(ev)m(en)i(if)f(a)h -(failure)630 546 y(w)m(as)j(exp)s(ected.)150 731 y Fr(UNRESOLVED)630 -840 y Fv(A)k(test)i(pro)s(duced)c(indeterminate)h(results.)54 -b(Usually)-8 b(,)36 b(this)e(means)h(the)h(test)g(executed)630 -950 y(in)g(an)h(unexp)s(ected)f(fashion;)k(this)c(outcome)j(requires)c -(that)j(a)g(h)m(uman)e(b)s(eing)g(go)i(o)m(v)m(er)630 -1059 y(results,)c(to)h(determine)e(if)g(the)h(test)h(should)d(ha)m(v)m -(e)k(passed)d(or)h(failed.)50 b(This)33 b(message)i(is)630 -1169 y(also)25 b(used)g(for)g(an)m(y)h(test)h(that)f(requires)e(h)m -(uman)g(in)m(terv)m(en)m(tion)i(b)s(ecause)f(it)g(is)g(b)s(ey)m(ond)g -(the)630 1279 y(abilities)h(of)i(the)h(testing)f(framew)m(ork.)40 -b(An)m(y)28 b(unresolv)m(ed)g(test)h(should)d(resolv)m(ed)i(to)h -Fr(PASS)630 1388 y Fv(or)h Fr(FAIL)g Fv(b)s(efore)g(a)g(test)i(run)d -(can)h(b)s(e)g(considered)f(\014nished.)630 1523 y(Note)h(that)f(for)f -Fo(posix)p Fv(,)g(eac)m(h)i(assertion)e(m)m(ust)g(pro)s(duce)f(a)i -(test)g(result)e(co)s(de.)41 b(If)27 b(the)i(test)630 -1632 y(isn't)36 b(actually)g(run,)h(it)f(m)m(ust)g(pro)s(duce)g -Fr(UNRESOLVED)d Fv(rather)k(than)f(just)g(lea)m(ving)g(that)630 -1742 y(test)g(out)f(of)g(the)g(output.)54 b(This)33 b(means)i(that)g(y) -m(ou)h(ha)m(v)m(e)g(to)g(b)s(e)e(careful)g(when)g(writing)630 -1851 y(tests,)g(to)f(not)g(carelessly)f(use)g(tcl)h(statemen)m(ts)h -(lik)m(e)e Fr(return)p Fv(|if)e(y)m(ou)j(alter)f(the)h(\015o)m(w)g(of) -630 1961 y(con)m(trol)25 b(of)g(the)g(tcl)g(co)s(de)g(y)m(ou)h(m)m(ust) -e(insure)f(that)j(ev)m(ery)g(test)f(still)e(pro)s(duces)h(some)h -(result)630 2071 y(co)s(de.)630 2205 y(Here)31 b(are)g(some)f(of)h(the) -g(w)m(a)m(ys)g(a)g(test)g(ma)m(y)g(wind)d(up)h Fr(UNRESOLVED)p -Fv(:)705 2340 y Ft(\017)60 b Fv(A)30 b(test's)i(execution)e(is)g(in)m -(terrupted.)705 2474 y Ft(\017)60 b Fv(A)34 b(test)g(do)s(es)f(not)h -(pro)s(duce)e(a)i(clear)f(result.)49 b(This)32 b(is)g(usually)f(b)s -(ecause)j(there)g(w)m(as)810 2584 y(an)h Fr(ERROR)e Fv(from)i(DejaGn)m -(u)h(while)d(pro)s(cessing)h(the)h(test,)i(or)e(b)s(ecause)g(there)g(w) -m(ere)810 2693 y(three)41 b(or)f(more)h Fr(WARNING)e -Fv(messages.)72 b(An)m(y)41 b Fr(WARNING)d Fv(or)j Fr(ERROR)e -Fv(messages)j(can)810 2803 y(in)m(v)-5 b(alidate)32 b(the)h(output)f -(of)h(the)h(test.)49 b(This)31 b(usually)g(requires)g(a)j(h)m(uman)e(b) -s(eing)f(to)810 2912 y(examine)k(the)g(output)f(to)i(determine)e(what)g -(really)g(happ)s(ened|and)f(to)i(impro)m(v)m(e)810 3022 -y(the)c(test)g(case.)705 3156 y Ft(\017)60 b Fv(A)30 -b(test)i(dep)s(ends)c(on)j(a)f(previous)f(test,)j(whic)m(h)d(fails.)705 -3291 y Ft(\017)60 b Fv(The)30 b(test)h(w)m(as)g(set)g(up)e(incorrectly) --8 b(.)150 3475 y Fr(UNTESTED)96 b Fv(A)31 b(test)h(w)m(as)g(not)f -(run.)42 b(This)29 b(is)h(a)i(placeholder,)e(used)g(when)h(there)g(is)f -(no)h(real)g(test)h(case)630 3585 y(y)m(et.)150 3744 -y(The)j(only)h(remaining)e(output)h(message)i(left)f(is)f(in)m(tended)g -(to)i(test)g(features)f(that)g(are)h(sp)s(eci\014ed)d(b)m(y)150 -3854 y(the)d(applicable)d Fo(posix)h Fv(standard)h(as)h(conditional:) -150 4038 y Fr(UNSUPPORTED)630 4148 y Fv(There)40 b(is)g(no)g(supp)s -(ort)f(for)h(the)h(tested)g(case.)72 b(This)39 b(ma)m(y)i(mean)g(that)g -(a)g(conditional)630 4257 y(feature)30 b(of)f(an)g(op)s(erating)g -(system,)g(or)h(of)f(a)g(compiler,)g(is)f(not)h(implemen)m(ted.)39 -b(DejaGn)m(u)630 4367 y(also)23 b(uses)g(this)g(message)h(when)e(a)i -(testing)g(en)m(vironmen)m(t)f(\(often)h(a)f(\\bare)h(b)s(oard")f -(target\))630 4477 y(lac)m(ks)31 b(basic)f(supp)s(ort)e(for)i -(compiling)f(or)h(running)e(the)i(test)i(case.)42 b(F)-8 -b(or)31 b(example,)f(a)h(test)630 4586 y(for)38 b(the)h(system)f -(subroutine)e Fr(gethostname)f Fv(w)m(ould)i(nev)m(er)i(w)m(ork)f(on)g -(a)h(target)h(b)s(oard)630 4696 y(running)28 b(only)h(a)i(b)s(o)s(ot)f -(monitor.)275 4855 y(DejaGn)m(u)g(uses)f(the)h(same)h(output)e(pro)s -(cedures)g(to)h(pro)s(duce)f(these)h(messages)h(for)e(all)g(test)i -(suites,)150 4965 y(and)i(these)h(pro)s(cedures)e(are)h(already)g(kno)m -(wn)g(to)h(conform)f(to)h Fo(posix)f Fv(1003.3.)52 b(F)-8 -b(or)34 b(a)g(DejaGn)m(u)g(test)150 5074 y(suite)28 b(to)i(conform)f -(to)h Fo(posix)e Fv(1003.3,)k(y)m(ou)d(m)m(ust)g(a)m(v)m(oid)h(the)f -Fr(setup_xfail)d Fv(pro)s(cedure)i(as)h(describ)s(ed)150 -5184 y(in)21 b(the)i Fr(PASS)e Fv(section)i(ab)s(o)m(v)m(e,)i(and)d(y)m -(ou)h(m)m(ust)g(b)s(e)e(careful)h(to)i(return)d Fr(UNRESOLVED)f -Fv(where)i(appropriate,)150 5293 y(as)31 b(describ)s(ed)d(in)h(the)i -Fr(UNRESOLVED)c Fv(section)k(ab)s(o)m(v)m(e.)p eop -%%Page: 8 10 -8 9 bop 150 -116 a Fv(8)2409 b(DejaGn)m(u)32 b(T)-8 b(esting)30 -b(F)-8 b(ramew)m(ork)150 83 y Fu(2.5)68 b(F)-11 b(uture)44 -b(directions)275 276 y Fv(In)28 b(the)h(near)g(future,)f(there)i(are)f -(t)m(w)m(o)h(parallel)d(directions)h(for)h(DejaGn)m(u)h(dev)m(elopmen)m -(t.)40 b(The)29 b(\014rst)150 385 y(is)g(to)j(add)d(supp)s(ort)g(for)h -(more)h(hosts)f(and)g(targets.)275 520 y(The)d(second)g(w)m(ould)g(p)s -(ermit)f(testing)h(programs)h(with)e(a)i(more)g(complex)f(in)m -(terface,)i(whether)e(text)150 629 y(based)j(or)h(GUI)g(based.)42 -b(Tw)m(o)31 b(comp)s(onen)m(ts)g(already)f(exist:)42 -b(a)31 b(Tcl)f(based)g(X)h(windo)m(w)f(to)s(olkit,)g(and)h(a)150 -739 y(terminal)h(pac)m(k)-5 b(age)36 b(for)e Fr(expect)p -Fv(.)49 b(Both)35 b(of)f(these)g(could)f(b)s(e)g(merged)h(in)m(to)g -(DejaGn)m(u)h(in)d(a)j(w)m(a)m(y)f(that)150 848 y(p)s(ermits)29 -b(testing)h(programs)g(that)h(run)e(in)g(eac)m(h)j(en)m(vironmen)m(t.) -275 983 y(Mean)m(while,)26 b(w)m(e)g(hop)s(e)f(DejaGn)m(u)i(enables)e -(the)h(creation)g(of)g(test)h(suites)e(for)g(conformance)i(to)f -Fo(ansi)150 1093 y Fv(C)33 b(and)g(C)p Fr(++)p Fv(,)h(to)g -Fo(posix)p Fv(,)g(and)g(to)g(other)g(standards.)49 b(W)-8 -b(e)35 b(encourage)g(y)m(ou)f(to)h(mak)m(e)f(an)m(y)g(test)h(suites)150 -1202 y(y)m(ou)c(create)h(freely)d(a)m(v)-5 b(ailable,)30 -b(under)f(the)i(same)g(terms)f(as)g(DejaGn)m(u)i(itself.)150 -1460 y Fu(2.6)68 b(Tcl)45 b(and)f(Exp)t(ect)275 1652 -y Fv(Tcl)25 b(w)m(as)h(in)m(tro)s(duced)e(in)h(a)h(pap)s(er)f(b)m(y)h -(John)f(K.)h(Ousterhout)f(at)i(the)f(1990)i(Win)m(ter)d(Usenix)h -(confer-)150 1762 y(ence,)h Fq(Tcl:)38 b(An)25 b(Em)m(b)s(eddable)f -(Command)g(Language)p Fv(.)40 b(That)26 b(pap)s(er)e(is)g(included)f -(in)h(P)m(ostScript)h(form)150 1871 y(in)32 b(the)i(`)p -Fr(doc)p Fv(')f(sub)s(directory)f(of)h(the)h(Tcl)f(distribution.)46 -b(The)34 b(v)m(ersion)f(of)g(Tcl)g(included)e(in)h(DejaGn)m(u)150 -1981 y(at)f(this)e(time)h(is)g(Tcl)f(7.4p3.)275 2115 -y(Don)h(Lib)s(es)f(in)m(tro)s(duced)f Fr(expect)h Fv(in)g(his)f(pap)s -(er)h Fq(exp)s(ect:)42 b(Curing)28 b(Those)i(Uncon)m(trollable)f(Fits)h -(of)150 2225 y(In)m(teraction)38 b Fv(at)h(the)f(1990)h(Summer)e -(Usenix)f(conference.)64 b(The)37 b(pap)s(er)g(is)g(included)e(in)h(P)m -(ostScript)150 2335 y(form)27 b(in)g(the)h Fr(expect)e -Fv(distribution)f(\(as)j(are)h(sev)m(eral)f(other)g(pap)s(ers)f(ab)s -(out)g Fr(expect)p Fv(\).)39 b(The)27 b(v)m(ersion)h(of)150 -2444 y(exp)s(ect)j(included)d(in)h(DejaGn)m(u)i(at)g(this)e(time)h(is)g -(exp)s(ect)h(5.18.0.)p eop -%%Page: 9 11 -9 10 bop 150 -116 a Fv(Chapter)30 b(3:)41 b(Using)29 -b Fr(runtest)2499 b Fv(9)150 100 y Fs(3)80 b(Using)54 -b Fl(runtest)275 334 y Fr(runtest)28 b Fv(is)i(the)h(executable)g(test) -h(driv)m(er)d(for)i(DejaGn)m(u.)42 b(Y)-8 b(ou)31 b(can)g(sp)s(ecify)e -(t)m(w)m(o)k(kinds)28 b(of)j(things)150 443 y(on)25 b(the)g -Fr(runtest)e Fv(command)i(line:)37 b(command)24 b(line)g(options,)h -(and)g(Tcl)f(v)-5 b(ariables)24 b(for)h(the)g(test)h(scripts.)150 -553 y(The)k(options)g(are)g(listed)f(alphab)s(etically)f(b)s(elo)m(w.) -275 687 y Fr(runtest)g Fv(returns)h(an)i(exit)f(co)s(de)h(of)f -Fr(1)h Fv(if)e(an)m(y)i(test)g(has)f(an)h(unexp)s(ected)f(result;)f -(otherwise)h(\(if)g(all)150 797 y(tests)h(pass)f(or)g(fail)g(as)g(exp)s -(ected\))h(it)f(returns)f Fr(0)h Fv(as)h(the)g(exit)f(co)s(de.)275 -932 y Fr(runtest)25 b Fv(\015ags)i(the)g(outcome)i(of)e(eac)m(h)h(test) -g(as)g(one)f(of)g(these)h(cases.)41 b(\(See)27 b(Section)g(2.4)h([A)g -(POSIX)150 1041 y(conforming)f(test)h(framew)m(ork],)h(page)f(6,)h(for) -e(a)h(discussion)d(of)i(ho)m(w)h Fo(posix)e Fv(sp)s(eci\014es)h(the)g -(meanings)g(of)150 1151 y(these)k(cases.\))150 1310 y -Fr(PASS)288 b Fv(The)29 b(most)g(desirable)f(outcome:)41 -b(the)29 b(test)i(succeeded,)f(and)e(w)m(as)i(exp)s(ected)f(to)h -(succeed.)150 1469 y Fr(XPASS)240 b Fv(A)26 b(pleasan)m(t)h(kind)d(of)j -(failure:)37 b(a)26 b(test)h(w)m(as)g(exp)s(ected)g(to)g(fail,)f(but)f -(succeeded.)40 b(This)24 b(ma)m(y)630 1579 y(indicate)h(progress;)i -(insp)s(ect)e(the)h(test)h(case)g(to)f(determine)f(whether)g(y)m(ou)i -(should)c(amend)630 1689 y(it)30 b(to)h(stop)f(exp)s(ecting)h(failure.) -150 1848 y Fr(FAIL)288 b Fv(A)33 b(test)g(failed,)g(although)f(it)g(w)m -(as)h(exp)s(ected)g(to)g(succeed.)49 b(This)31 b(ma)m(y)i(indicate)f -(regress;)630 1958 y(insp)s(ect)d(the)i(test)g(case)g(and)f(the)h -(failing)d(soft)m(w)m(are)k(to)f(lo)s(cate)g(the)g(bug.)150 -2117 y Fr(XFAIL)240 b Fv(A)38 b(test)g(failed,)h(but)e(it)g(w)m(as)h -(exp)s(ected)g(to)h(fail.)61 b(This)36 b(result)h(indicates)g(no)g(c)m -(hange)i(in)630 2227 y(a)33 b(kno)m(wn)g(bug.)47 b(If)33 -b(a)g(test)h(fails)d(b)s(ecause)i(the)g(op)s(erating)f(system)h(where)g -(the)g(test)h(runs)630 2336 y(lac)m(ks)d(some)g(facilit)m(y)e(required) -g(b)m(y)h(the)g(test,)i(the)e(outcome)i(is)e Fr(UNSUPPORTED)d -Fv(instead.)150 2496 y Fr(UNRESOLVED)630 2605 y Fv(Output)39 -b(from)h(a)h(test)h(requires)d(man)m(ual)h(insp)s(ection;)j(the)e(test) -h(suite)d(could)h(not)h(au-)630 2715 y(tomatically)e(determine)f(the)i -(outcome.)68 b(F)-8 b(or)40 b(example,)i(y)m(our)d(tests)h(can)f(rep)s -(ort)g(this)630 2824 y(outcome)32 b(is)d(when)g(a)i(test)g(do)s(es)g -(not)f(complete)h(as)g(exp)s(ected.)150 2984 y Fr(UNTESTED)96 -b Fv(A)28 b(test)h(case)f(is)f(not)h(y)m(et)h(complete,)g(and)f(in)e -(particular)g(cannot)j(y)m(et)f(pro)s(duce)f(a)h Fr(PASS)f -Fv(or)630 3093 y Fr(FAIL)p Fv(.)39 b(Y)-8 b(ou)28 b(can)h(also)f(use)g -(this)f(outcome)i(in)e(dumm)m(y)g(\\tests")j(that)e(note)h(explicitly)d -(the)630 3203 y(absence)31 b(of)f(a)h(real)f(test)h(case)h(for)e(a)h -(particular)d(prop)s(ert)m(y)-8 b(.)150 3362 y Fr(UNSUPPORTED)630 -3472 y Fv(A)32 b(test)h(dep)s(ends)d(on)i(a)h(conditionally)c(a)m(v)-5 -b(ailable)32 b(feature)g(that)h(do)s(es)f(not)g(exist)g(\(in)f(the)630 -3582 y(con\014gured)40 b(testing)h(en)m(vironmen)m(t\).)71 -b(F)-8 b(or)42 b(example,)h(y)m(ou)e(can)g(use)g(this)e(outcome)j(to) -630 3691 y(rep)s(ort)f(on)h(a)h(test)g(case)g(that)g(do)s(es)e(not)i(w) -m(ork)f(on)g(a)g(particular)f(target)i(b)s(ecause)g(its)630 -3801 y(op)s(erating)30 b(system)g(supp)s(ort)f(do)s(es)h(not)h(include) -d(a)j(required)d(subroutine.)275 3960 y Fr(runtest)g -Fv(ma)m(y)j(also)f(displa)m(y)f(the)h(follo)m(wing)f(messages:)150 -4120 y Fr(ERROR)240 b Fv(Indicates)43 b(a)g(ma)5 b(jor)43 -b(problem)f(\(detected)j(b)m(y)e(the)g(test)h(case)g(itself)7 -b(\))43 b(in)e(running)g(the)630 4229 y(test.)65 b(This)37 -b(is)g(usually)f(an)i(unreco)m(v)m(erable)h(error,)h(suc)m(h)e(as)h(a)f -(missing)e(\014le)i(or)g(loss)g(of)630 4339 y(comm)m(unication)30 -b(to)i(the)f(target.)44 b(\()p Fo(posix)30 b Fv(test)i(suites)e(should) -f(not)i(emit)g(this)f(message;)630 4448 y(use)g Fr(UNSUPPORTED)p -Fv(,)e Fr(UNTESTED)p Fv(,)g(or)i Fr(UNRESOLVED)e Fv(instead,)i(as)g -(appropriate.\))150 4608 y Fr(WARNING)144 b Fv(Indicates)30 -b(a)h(p)s(ossible)e(problem)g(in)g(running)f(the)j(test.)43 -b(Usually)29 b(w)m(arnings)g(corresp)s(ond)630 4717 y(to)24 -b(reco)m(v)m(erable)g(errors,)g(or)f(displa)m(y)e(an)h(imp)s(ortan)m(t) -g(message)i(ab)s(out)f(the)g(follo)m(wing)e(tests.)150 -4877 y Fr(NOTE)288 b Fv(An)30 b(informational)e(message)k(ab)s(out)e -(the)h(test)g(case.)275 5036 y(This)h(is)g(the)i(full)e(set)i(of)g -(command)g(line)e(options)h(that)i Fr(runtest)d Fv(recognizes.)51 -b(Argumen)m(ts)34 b(ma)m(y)150 5146 y(b)s(e)c(abbreviated)f(to)j(the)e -(shortest)h(unique)d(string.)p eop -%%Page: 10 12 -10 11 bop 150 -116 a Fv(10)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)390 83 y Fr(runtest)46 -b(--tool)g Fq(to)s(ol)99 b Fr([)47 b Fq(testsuite)p Fr(.exp)g(...)g(]) -390 187 y([)g Fq(testsuite)p Fr(.exp="testfile1)d(...")j(])390 -291 y([)g Fq(tclv)-5 b(ar)7 b Fr(=)p Fq(v)-5 b(alue)5 -b Fr(...)46 b(])390 394 y([)h(--all)g(])95 b([)47 b(--baud)g -Fq(baud-rate)52 b Fr(])96 b([)47 b(--connect)e Fq(t)m(yp)s(e)53 -b Fr(])390 498 y([)47 b(--debug)f(])95 b([)48 b(--help)e(])95 -b([)48 b(--host)e Fq(string)54 b Fr(])390 602 y([)47 -b(--mail)g(")p Fq(name)52 b Fr(...)o(")c(])95 b([)47 -b(--name)g Fq(string)54 b Fr(])390 706 y([)47 b(--name)g -Fq(name)52 b Fr(])96 b([)47 b(--outdir)f Fq(path)h Fr(])390 -809 y([)g(--objdir)f Fq(path)i Fr(])95 b([)47 b(--reboot)f(])390 -913 y([)h(--srcdir)f Fq(path)i Fr(])95 b([)47 b(--strace)f -Fq(n)h Fr(])390 1017 y([)g(--target)f Fq(string)55 b -Fr(--build)45 b Fq(string)55 b Fr(])390 1121 y([)47 b(-v)h(|)f -(--verbose)e(])96 b([)47 b(-V)g(|)h(--version)d(])95 -b([)48 b(--D)p Fq(n)e Fr(])150 1273 y(--tool)29 b Fq(to)s(ol)630 -1382 y(to)s(ol)39 b Fv(sp)s(eci\014es)c(what)h(set)g(of)g(tests)h(to)f -(run,)g(and)g(what)f(initialization)e(mo)s(dule)h(to)j(use.)630 -1492 y Fq(to)s(ol)c Fv(is)c(used)g Fn(only)38 b Fv(for)30 -b(these)g(t)m(w)m(o)h(purp)s(oses:)39 b(it)29 b(is)f -Fn(not)39 b Fv(used)29 b(to)i(name)e(the)h(executable)630 -1601 y(program)25 b(to)h(test.)40 b(Executable)25 b(to)s(ol)g(names)g -(\(and)g(paths\))g(are)h(recorded)f(in)f(`)p Fr(site.exp)p -Fv(')630 1711 y(\(see)g(Chapter)e(4)i([Con\014guration)d(dep)s(enden)m -(t)h(v)-5 b(alues],)25 b(page)e(15\),)j(and)c(y)m(ou)i(can)f(o)m(v)m -(erride)630 1820 y(them)30 b(b)m(y)h(sp)s(ecifying)d(Tcl)h(v)-5 -b(ariables)29 b(on)i(the)f(command)g(line.)630 1951 y(F)-8 -b(or)33 b(example,)g(including)c(`)p Fr(--tool)g(gcc)p -Fv(')j(on)h(the)f Fr(runtest)f Fv(command)h(line)f(runs)g(tests)630 -2061 y(from)37 b(all)g(test)h(sub)s(directories)d(whose)j(names)f(matc) -m(h)i(`)p Fr(gcc.*)p Fv(',)g(and)e(uses)g(one)h(of)g(the)630 -2170 y(initialization)27 b(mo)s(dules)h(named)i(`)p Fr -(config/*-gcc.exp)p Fv('.)36 b(T)-8 b(o)31 b(sp)s(ecify)d(the)j(name)f -(of)g(the)630 2280 y(compiler)19 b(\(p)s(erhaps)g(as)i(an)g(alternativ) -m(e)g(path)f(to)h(what)g Fr(runtest)d Fv(w)m(ould)h(use)i(b)m(y)f -(default\),)630 2390 y(use)30 b(`)p Fr(GCC=)p Fq(binname)5 -b Fv(')28 b(on)j(the)f Fr(runtest)e Fv(command)j(line.)150 -2541 y Fq(testsuite)p Fr(.exp)f(...)630 2651 y Fv(Sp)s(ecify)j(the)i -(names)f(of)h(testsuites)f(to)i(run.)51 b(By)35 b(default,)g -Fr(runtest)e Fv(runs)f(all)i(tests)h(for)630 2760 y(the)c(to)s(ol,)g -(but)g(y)m(ou)g(can)g(restrict)g(it)f(to)i(particular)d(testsuites)i(b) -m(y)g(giving)f(the)h(names)g(of)630 2870 y(the)g(`)p -Fr(.exp)p Fv(')e Fr(expect)g Fv(scripts)g(that)i(con)m(trol)g(them.)630 -3001 y Fq(testsuite)p Fv(.exp)g(ma)m(y)g(not)f(include)f(path)h -(information;)f(use)h(plain)e(\014lenames.)150 3152 y -Fq(test\014le)p Fr(.exp="testfile1)e(...")630 3262 y -Fv(Sp)s(ecify)38 b(a)j(subset)e(of)i(tests)g(in)d(a)j(suite)e(to)i -(run.)69 b(F)-8 b(or)41 b(compiler)d(or)i(assem)m(bler)g(tests,)630 -3372 y(whic)m(h)31 b(often)i(use)f(a)g(single)f(`)p Fr(.exp)p -Fv(')h(script)f(co)m(v)m(ering)i(man)m(y)g(di\013eren)m(t)f(source)g -(\014les,)g(this)630 3481 y(option)h(allo)m(ws)h(y)m(ou)g(to)h(further) -e(restrict)h(the)g(tests)h(b)m(y)f(listing)d(particular)i(source)h -(\014les)630 3591 y(to)e(compile.)41 b(Some)31 b(to)s(ols)g(ev)m(en)g -(supp)s(ort)e(wildcards)g(here.)42 b(The)30 b(wildcards)f(supp)s(orted) -630 3700 y(dep)s(end)g(up)s(on)f(the)j(to)s(ol,)g(but)e(t)m(ypically)g -(they)i(are)g Fr(?)p Fv(,)f Fr(*)p Fv(,)g(and)g Fr([chars])p -Fv(.)150 3852 y Fq(tclv)-5 b(ar)7 b Fr(=)p Fq(v)-5 b(alue)630 -3962 y Fv(Y)d(ou)30 b(can)g(de\014ne)f(Tcl)g(v)-5 b(ariables)28 -b(for)h(use)h(b)m(y)f(y)m(our)h(test)g(scripts)f(in)f(the)i(same)g(st)m -(yle)g(used)630 4071 y(with)43 b Fr(make)h Fv(for)h(en)m(vironmen)m(t)f -(v)-5 b(ariables.)82 b(F)-8 b(or)46 b(example,)i(`)p -Fr(runtest)29 b(GDB=gdb.old)p Fv(')630 4181 y(de\014nes)39 -b(a)h(v)-5 b(ariable)38 b(called)h(`)p Fr(GDB)p Fv(';)44 -b(when)39 b(y)m(our)h(scripts)e(refer)i(to)g(`)p Fr($GDB)p -Fv(')f(in)g(this)f(run,)630 4290 y(they)31 b(use)f(the)g(v)-5 -b(alue)30 b(`)p Fr(gdb.old)p Fv('.)630 4421 y(The)f(default)g(Tcl)g(v) --5 b(ariables)28 b(used)h(for)h(most)g(to)s(ols)g(are)g(de\014ned)e(in) -h(the)g(main)g(DejaGn)m(u)630 4531 y Fr(Makefile)p Fv(;)50 -b(their)44 b(v)-5 b(alues)44 b(are)i(captured)e(in)g(the)h(`)p -Fr(site.exp)p Fv(')e(\014le.)83 b(See)45 b(Chapter)g(4)630 -4640 y([Con\014guration)29 b(dep)s(enden)m(t)h(v)-5 b(alues],)30 -b(page)h(15.)150 4792 y Fr(--all)240 b Fv(Displa)m(y)38 -b(all)f(test)j(output.)64 b(By)39 b(default,)h Fr(runtest)d -Fv(sho)m(ws)h(only)g(the)g(output)g(of)h(tests)630 4902 -y(that)33 b(pro)s(duce)f(unexp)s(ected)g(results;)g(that)h(is,)g(tests) -g(with)e(status)i(`)p Fr(FAIL)p Fv(')f(\(unexp)s(ected)630 -5011 y(failure\),)25 b(`)p Fr(XPASS)p Fv(')f(\(unexp)s(ected)h -(success\),)i(or)e(`)p Fr(ERROR)p Fv(')f(\(a)i(sev)m(ere)g(error)f(in)f -(the)h(test)h(case)630 5121 y(itself)7 b(\).)57 b(Sp)s(ecify)34 -b(`)p Fr(--all)p Fv(')h(to)i(see)f(output)g(for)g(tests)g(with)f -(status)h(`)p Fr(PASS)p Fv(')g(\(success,)i(as)630 5230 -y(exp)s(ected\))c(`)p Fr(XFAIL)p Fv(')f(\(failure,)g(as)h(exp)s -(ected\),)i(or)d(`)p Fr(WARNING)p Fv(')f(\(minor)h(error)g(in)f(the)i -(test)630 5340 y(case)d(itself)7 b(\).)p eop -%%Page: 11 13 -11 12 bop 150 -116 a Fv(Chapter)30 b(3:)41 b(Using)29 -b Fr(runtest)2453 b Fv(11)150 83 y Fr(--baud)29 b Fq(baud-rate)150 -193 y Fr(-b)h Fq(baud-rate)630 302 y Fv(Set)g(the)f(default)g(baud)f -(rate)i(to)g(something)f(other)h(than)f(9600.)42 b(\(Some)30 -b(serial)e(in)m(terface)630 412 y(programs,)i(lik)m(e)g -Fr(tip)p Fv(,)g(use)g(a)g(separate)i(initialization)27 -b(\014le)j(instead)f(of)i(this)e(v)-5 b(alue.\))150 571 -y Fr(--connect)28 b Fq(t)m(yp)s(e)630 681 y Fv(Connect)d(to)g(a)g -(target)h(testing)f(en)m(vironmen)m(t)f(as)h(sp)s(eci\014ed)e(b)m(y)h -Fq(t)m(yp)s(e)p Fv(,)j(if)c(the)i(target)h(is)e(not)630 -790 y(the)36 b(computer)g(running)e Fr(runtest)p Fv(.)56 -b(F)-8 b(or)37 b(example,)h(use)d(`)p Fr(--connect)p -Fv(')g(to)h(c)m(hange)i(the)630 900 y(program)27 b(used)g(to)i(connect) -f(to)g(a)g(\\bare)g(b)s(oard")f(b)s(o)s(ot)h(monitor.)39 -b(The)27 b(c)m(hoices)h(for)g Fq(t)m(yp)s(e)630 1010 -y Fv(in)k(the)i(DejaGn)m(u)g(1.0)h(distribution)30 b(are)k(`)p -Fr(rlogin)p Fv(',)f(`)p Fr(telnet)p Fv(',)g(`)p Fr(rsh)p -Fv(',)i(`)p Fr(tip)p Fv(',)f(`)p Fr(kermit)p Fv(',)630 -1119 y(and)c(`)p Fr(mondfe)p Fv('.)630 1254 y(The)j(default)f(for)h -(this)f(option)h(dep)s(ends)e(on)i(the)g(con\014guration)g(\(see)h -(Section)f(5.5)h([Re-)630 1363 y(mote)h(targets)g(supp)s(orted],)e -(page)i(32\).)52 b(The)33 b(default)g(is)f(c)m(hosen)j(to)f(b)s(e)f -(the)h(most)g(con-)630 1473 y(v)m(enien)m(t)e(comm)m(unication)f(metho) -s(d)g(a)m(v)-5 b(ailable,)32 b(but)f(often)h(other)g(alternativ)m(es)g -(w)m(ork)g(as)630 1582 y(w)m(ell;)c(y)m(ou)h(ma)m(y)g(\014nd)d(it)i -(useful)f(to)i(try)f(alternativ)m(e)g(connect)i(metho)s(ds)d(if)g(y)m -(ou)i(susp)s(ect)f(a)630 1692 y(comm)m(unication)i(problem)f(with)g(y)m -(our)h(testing)h(target.)150 1851 y Fr(--debug)144 b -Fv(T)-8 b(urns)23 b(on)i(the)f Fr(expect)f Fv(in)m(ternal)h(debugging)f -(output.)39 b(Debugging)24 b(output)h(is)e(displa)m(y)m(ed)630 -1961 y(as)44 b(part)g(of)g(the)g Fr(runtest)e Fv(output,)47 -b(and)c(logged)i(to)f(a)h(\014le)e(called)g(`)p Fr(dbg.log)p -Fv('.)79 b(The)630 2071 y(extra)25 b(debugging)d(output)i(do)s(es)f -Fn(not)34 b Fv(app)s(ear)23 b(on)h(standard)f(output,)i(unless)d(the)i -(v)m(erb)s(ose)630 2180 y(lev)m(el)33 b(is)g(greater)i(than)e(2)i -(\(for)e(instance,)i(to)f(see)h(debug)d(output)i(immediately)-8 -b(,)33 b(sp)s(ecify)630 2290 y(`)p Fr(--debug)c(-v)g(-v)p -Fv('\).)57 b(The)35 b(debugging)g(output)g(sho)m(ws)g(all)g(attempts)i -(at)f(matc)m(hing)g(the)630 2399 y(test)e(output)f(of)g(the)h(to)s(ol)f -(with)f(the)h(scripted)f(patterns)i(describing)c(exp)s(ected)k(output.) -630 2509 y(The)c(output)g(generated)h(with)e(`)p Fr(--strace)p -Fv(')g(also)h(go)s(es)h(in)m(to)g(`)p Fr(dbg.log)p Fv('.)150 -2668 y Fr(--help)150 2778 y(-he)336 b Fv(Prin)m(ts)25 -b(out)h(a)h(short)e(summary)g(of)h(the)h Fr(runtest)d -Fv(options,)i(then)g(exits)g(\(ev)m(en)h(if)e(y)m(ou)h(also)630 -2888 y(sp)s(ecify)j(other)i(options\).)150 3047 y Fr(--host)e -Fq(string)630 3156 y(string)47 b Fv(is)39 b(a)i(full)d(con\014guration) -i(\\triple")f(name)h(as)h(used)e(b)m(y)i Fr(configure)p -Fv(.)67 b(Use)41 b(this)630 3266 y(option)30 b(to)h(o)m(v)m(erride)g -(the)f(default)g(string)f(recorded)i(b)m(y)f(y)m(our)h -(con\014guration's)e(c)m(hoice)j(of)630 3376 y(host.)40 -b(This)27 b(c)m(hoice)j(do)s(es)f(not)g(c)m(hange)h(ho)m(w)f(an)m -(ything)f(is)g(actually)g(con\014gured)g(unless)g({)630 -3485 y(build)21 b(is)h(also)i(sp)s(eci\014ed;)g(it)f(a\013ects)i -Fn(only)33 b Fv(DejaGn)m(u)24 b(pro)s(cedures)f(that)h(compare)g(the)g -(host)630 3595 y(string)39 b(with)f(particular)g(v)-5 -b(alues.)68 b(The)39 b(pro)s(cedures)f Fr(ishost)p Fv(,)j -Fr(istarget)p Fv(,)f Fr(isnative)p Fv(,)630 3704 y(and)d -Fr(setup_xfail)d Fv(are)k(a\013ected)i(b)m(y)d(`)p Fr(--host)p -Fv('.)61 b(In)37 b(this)g(usage,)j Fr(host)c Fv(refers)h(to)i(the)630 -3814 y(mac)m(hine)f(that)h(the)f(tests)h(are)g(to)g(b)s(e)e(run)g(on,)j -(whic)m(h)d(ma)m(y)i(not)g(b)s(e)e(the)i(same)f(as)h(the)630 -3924 y Fr(build)27 b Fv(mac)m(hine.)39 b(If)28 b Fr(--build)e -Fv(is)i(also)g(sp)s(eci\014ed,)f(then)h Fr(--host)e Fv(refers)i(to)h -(the)f(mac)m(hine)630 4033 y(that)j(the)g(tests)g(wil,)d(b)s(e)i(run)f -(on,)i(not)f(the)h(mac)m(hine)f(DejaGn)m(u)h(is)e(run)g(on.)150 -4193 y Fr(--build)f Fq(string)630 4302 y(string)39 b -Fv(is)32 b(a)h(full)e(con\014guration)h(\\triple")g(name)g(as)h(used)f -(b)m(y)h Fr(configure)p Fv(.)45 b(This)31 b(is)h(the)630 -4412 y(t)m(yp)s(e)c(of)h(mac)m(hine)f(DejaGn)m(u)h(and)e(the)i(to)s -(ols)f(to)g(b)s(e)g(tested)h(are)g(built)d(on.)39 b(F)-8 -b(or)29 b(a)g(normal)630 4521 y(cross)h(this)g(is)f(the)i(same)g(as)f -(the)h(host,)f(but)g(for)g(a)h(canadian)f(cross,)h(they)f(are)h(sep)s -(erate.)150 4681 y Fr(--name)e Fq(name)630 4790 y(name)44 -b Fv(is)37 b(a)i(name)g(for)f(the)h(particular)e(testing)h(target)j -(mac)m(hine)d(\(for)h(cross)f(testing\).)630 4900 y(If)31 -b(the)i(testing)f(target)h(has)f(IP)g(net)m(w)m(ork)g(supp)s(ort)f -(\(for)h(example,)g Fr(RPC)f Fv(or)h Fr(NFS)p Fv(\),)g(this)f(is)630 -5010 y(the)38 b(net)m(w)m(ork)g(name)g(for)f(the)h(target)h(itself.)61 -b(\()p Fq(name)43 b Fv(is)37 b Fn(not)i(the)h(c)-5 b(on\014gur)g(ation) -41 b(string)630 5119 y Fv(y)m(ou)26 b(sp)s(ecify)f(as)h(a)h(target)h -(with)c Fr(configure)p Fv(;)i(the)g(`)p Fr(--name)p Fv(')f(option)g -(names)h(a)h(particular)630 5229 y(target,)38 b(rather)e(than)f -(describing)e(a)j(class)f(of)g(targets.\))58 b(F)-8 b(or)36 -b(targets)h(that)f(connect)g(in)p eop -%%Page: 12 14 -12 13 bop 150 -116 a Fv(12)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)630 83 y(other)25 b(w)m(a)m(ys,)i(the) -e(meaning)g(of)g(the)g Fq(name)30 b Fv(string)24 b(dep)s(ends)f(on)i -(the)g(connection)g(metho)s(d.)630 193 y(See)31 b(Section)f(5.5)h -([Remote)h(targets)g(supp)s(orted],)d(page)i(32.)150 -352 y Fr(--name)e Fq(string)630 462 y Fv(Sp)s(ecify)24 -b(a)j(net)m(w)m(ork)g(name)f(of)g(testing)h(target)g(or)f(its)g(host.) -39 b(The)26 b(particular)e(names)i(that)630 571 y(are)f(meaningful)e -(with)g(`)p Fr(--name)p Fv(')h(will)e(dep)s(end)h(on)h(y)m(our)h(site)g -(con\014guration,)g(and)f(on)h(the)630 681 y(connection)31 -b(proto)s(col:)42 b(for)31 b(example,)g Fr(tip)f Fv(connections)h -(require)e(names)i(from)g(a)g(serial)630 790 y(line)24 -b(con\014guration)i(\014le)f(\(usually)f(called)h(`)p -Fr(/etc/remote)p Fv('\),)g(while)g Fr(telnet)f Fv(connections)630 -900 y(use)30 b(IP)g(hostnames.)150 1059 y Fr(--objdir)e -Fq(path)630 1169 y Fv(Use)45 b Fq(path)g Fv(as)g(the)g(top)g(directory) -f(con)m(taining)g(an)m(y)h(auxiliary)e(compiled)g(test)i(co)s(de.)630 -1279 y(This)28 b(defaults)i(to)h(`)p Fr(.)p Fv('.)41 -b(Use)30 b(this)f(option)h(to)h(lo)s(cate)g(pre-compiled)e(test)i(co)s -(de.)41 b(Y)-8 b(ou)31 b(can)630 1388 y(normally)e(prepare)g(an)m(y)i -(auxiliary)d(\014les)h(needed)h(with)g Fr(make)p Fv(.)150 -1548 y Fr(--outdir)e Fq(path)630 1657 y Fv(W)-8 b(rite)28 -b(output)e(logs)h(in)f(directory)h Fq(path)p Fv(.)39 -b(The)27 b(default)f(is)h(`)p Fr(.)p Fv(',)h(the)f(directory)g(where)g -(y)m(ou)630 1767 y(start)k Fr(runtest)p Fv(.)39 b(This)29 -b(option)h(a\013ects)i(only)e(the)h(summary)e(and)h(the)h(detailed)e -(log)i(\014les)630 1876 y(`)p Fq(to)s(ol)p Fr(.sum)p -Fv(')k(and)g(`)p Fq(to)s(ol)p Fr(.log)p Fv('.)57 b(The)35 -b(DejaGn)m(u)i(debug)e(log)h(`)p Fr(dbg.log)p Fv(')e(alw)m(a)m(ys)j -(app)s(ears)630 1986 y(\(when)30 b(requested\))g(in)f(the)i(lo)s(cal)f -(directory)-8 b(.)150 2145 y Fr(--reboot)96 b Fv(Reb)s(o)s(ot)27 -b(the)g(target)i(b)s(oard)d(when)g Fr(runtest)f Fv(initializes.)36 -b(Usually)-8 b(,)27 b(when)f(running)e(tests)630 2255 -y(on)33 b(a)h(separate)g(target)g(b)s(oard,)g(it)e(is)h(safer)g(to)h -(reb)s(o)s(ot)f(the)g(target)i(to)f(b)s(e)e(certain)h(of)h(its)630 -2364 y(state.)42 b(Ho)m(w)m(ev)m(er,)33 b(when)c(dev)m(eloping)h(test)h -(scripts,)e(reb)s(o)s(oting)h(tak)m(es)h(a)g(lot)g(of)f(time.)150 -2524 y Fr(--srcdir)e Fq(path)630 2633 y Fv(Use)40 b Fq(path)f -Fv(as)h(the)g(top)g(directory)f(for)g(test)i(scripts)d(to)i(run.)67 -b Fr(runtest)38 b Fv(lo)s(oks)h(in)f(this)630 2743 y(directory)27 -b(for)h(an)m(y)g(sub)s(directory)d(whose)j(name)f(b)s(egins)f(with)h -(the)h(to)s(olname)f(\(sp)s(eci\014ed)630 2853 y(with)32 -b(`)p Fr(--tool)p Fv('\).)49 b(F)-8 b(or)34 b(instance,)g(with)e(`)p -Fr(--tool)d(gdb)p Fv(',)34 b Fr(runtest)d Fv(uses)i(tests)h(in)f(sub)s -(di-)630 2962 y(rectories)i(`)p Fr(gdb.*)p Fv(')e(\(with)h(the)g(usual) -f(shell-lik)m(e)g(\014lename)g(expansion\).)53 b(If)34 -b(y)m(ou)g(do)h(not)630 3072 y(use)j(`)p Fr(--srcdir)p -Fv(',)g Fr(runtest)e Fv(lo)s(oks)h(for)h(test)h(directories)e(under)f -(the)i(curren)m(t)g(w)m(orking)630 3181 y(directory)-8 -b(.)150 3341 y Fr(--strace)28 b Fq(n)630 3450 y Fv(T)-8 -b(urn)21 b(on)g(in)m(ternal)g(tracing)h(for)g Fr(expect)p -Fv(,)g(to)h Fq(n)e Fv(lev)m(els)g(deep.)38 b(By)22 b(adjusting)f(the)h -(lev)m(el,)i(y)m(ou)630 3560 y(can)g(con)m(trol)g(the)f(exten)m(t)i(to) -f(whic)m(h)e(y)m(our)i(output)f(expands)f(m)m(ulti-lev)m(el)g(Tcl)h -(statemen)m(ts.)630 3670 y(This)h(allo)m(ws)h(y)m(ou)h(to)g(ignore)g -(some)g(lev)m(els)f(of)h Fr(case)e Fv(or)i Fr(if)f Fv(statemen)m(ts.)41 -b(Eac)m(h)26 b(pro)s(cedure)630 3779 y(call)k(or)g(con)m(trol)h -(structure)f(coun)m(ts)h(as)f(one)h(\\lev)m(el".)630 -3914 y(The)49 b(output)h(is)f(recorded)g(in)g(the)h(same)g(\014le,)k(`) -p Fr(dbg.log)p Fv(',)f(used)c(for)h(output)f(from)630 -4023 y(`)p Fr(--debug)p Fv('.)150 4183 y Fr(--target)28 -b Fq(string)630 4292 y Fv(Use)j(this)f(option)h(to)h(o)m(v)m(erride)f -(the)g(default)f(setting)h(\(running)e(nativ)m(e)i(tests\).)44 -b Fq(string)38 b Fv(is)630 4402 y(a)29 b(full)e(con\014guration)h -(\\triple")g(name)1955 4369 y Fp(1)2021 4402 y Fv(as)h(used)f(b)m(y)h -Fr(configure)p Fv(.)38 b(This)27 b(option)h(c)m(hanges)630 -4511 y(the)43 b(con\014guration)f Fr(runtest)f Fv(uses)h(for)h(the)g -(default)f(to)s(ol)g(names,)k(and)c(other)h(setup)630 -4621 y(information.)59 b(See)37 b(section)g(\\Using)g -Fr(configure)p Fv(")e(in)g Fq(Cygn)m(us)h(con\014gure)5 -b Fv(,)39 b(for)e(details)630 4731 y(ab)s(out)30 b Fr(configure)e -Fv(names.)p 150 4829 1200 4 v 192 4895 a Fp(1)275 4928 -y Fv(Con\014guration)h(triples)f(ha)m(v)m(e)k(the)e(form)g(`)p -Fq(cpu)p Fr(-)p Fq(v)m(endor)p Fr(-)p Fq(os)t Fv('.)p -eop -%%Page: 13 15 -13 14 bop 150 -116 a Fv(Chapter)30 b(3:)41 b(Using)29 -b Fr(runtest)2453 b Fv(13)150 83 y Fr(--verbose)150 193 -y(-v)384 b Fv(T)-8 b(urns)32 b(on)h(more)h(output.)50 -b(Rep)s(eating)33 b(this)f(option)h(increases)g(the)h(amoun)m(t)g(of)f -(output)630 302 y(displa)m(y)m(ed.)65 b(Lev)m(el)39 b(one)g(\(`)p -Fr(-v)p Fv('\))h(is)e(simply)e(test)k(output.)66 b(Lev)m(el)40 -b(t)m(w)m(o)g(\(`)p Fr(-v)30 b(-v)p Fv('\))39 b(sho)m(ws)630 -412 y(messages)46 b(on)f(options,)k(con\014guration,)g(and)c(pro)s -(cess)f(con)m(trol.)86 b(V)-8 b(erb)s(ose)46 b(messages)630 -521 y(app)s(ear)31 b(in)e(the)j(detailed)e(\(`)p Fr(*.log)p -Fv('\))h(log)g(\014le,)g(but)f(not)i(in)e(the)h(summary)f(\(`)p -Fr(*.sum)p Fv('\))h(log)630 631 y(\014le.)150 790 y Fr(--version)150 -900 y(-V)384 b Fv(Prin)m(ts)26 b(out)h(the)g(v)m(ersion)g(n)m(um)m(b)s -(ers)f(of)h(DejaGn)m(u,)i Fr(expect)c Fv(and)h(Tcl,)i(and)e(exits)h -(without)630 1010 y(running)h(an)m(y)i(tests.)150 1169 -y Fr(-D0)150 1279 y(-D1)336 b Fv(Start)26 b(the)g(in)m(ternal)e(Tcl)h -(debugger.)39 b(The)25 b(Tcl)g(debugger)h(supp)s(orts)e(breakp)s(oin)m -(ts,)h(single)630 1388 y(stepping,)42 b(and)e(other)g(common)h -(debugging)e(activities.)70 b(\(See)41 b Fq(A)g(Debugger)g(for)f(Tcl) -630 1498 y(Applications)32 b Fv(b)m(y)e(Don)h(Lib)s(es.)1722 -1465 y Fp(2)1758 1498 y Fv(\))630 1632 y(If)c(y)m(ou)h(sp)s(ecify)e(`)p -Fr(-D1)p Fv(',)j(the)e Fr(expect)f Fv(shell)g(stops)i(at)g(a)g(breakp)s -(oin)m(t)f(as)h(so)s(on)f(as)h(DejaGn)m(u)630 1742 y(in)m(v)m(ok)m(es)j -(it.)630 1876 y(If)i(y)m(ou)h(sp)s(ecify)f(`)p Fr(-D0)p -Fv(',)h(DejaGn)m(u)h(starts)f(as)g(usual,)f(but)g(y)m(ou)h(can)g(en)m -(ter)g(the)g(debugger)630 1986 y(b)m(y)c(sending)f(an)h(in)m(terrupt)f -(\(e.g.)42 b(b)m(y)31 b(t)m(yping)2219 1983 y Fk(h)p -2244 1930 106 4 v 2244 1986 a Fj(C-c)p 2244 2001 V 2345 -1983 a Fk(i)2375 1986 y Fv(\).)p 150 5099 1200 4 v 192 -5165 a Fp(2)275 5198 y Fv(Distributed)d(in)h(P)m(ostScript)h(form)g -(with)f Fr(expect)g Fv(as)h(the)h(\014le)275 5308 y(`)p -Fr(expect/tcl-debug.ps)p Fv('.)p eop -%%Page: 14 16 -14 15 bop 150 -116 a Fv(14)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)p eop -%%Page: 15 17 -15 16 bop 150 -116 a Fv(Chapter)30 b(4:)41 b(Setting)30 -b Fr(runtest)e Fv(defaults)2055 b(15)150 100 y Fs(4)80 -b(Setting)53 b Fl(runtest)g Fs(defaults)275 334 y Fv(The)46 -b(site)g(con\014guration)h(\014le,)j(`)p Fr(site.exp)p -Fv(',)f(captures)e(con\014guration-dep)s(enden)m(t)e(v)-5 -b(alues)47 b(and)150 443 y(propagates)36 b(them)f(to)h(the)g(DejaGn)m -(u)g(test)g(en)m(vironmen)m(t)f(using)f(Tcl)g(v)-5 b(ariables.)54 -b(This)33 b(ties)i(the)h(De-)150 553 y(jaGn)m(u)30 b(test)i(scripts)d -(in)m(to)h(the)h Fr(configure)d Fv(and)h Fr(make)h Fv(programs.)275 -687 y(DejaGn)m(u)h(supp)s(orts)d(more)j(than)f(one)h(`)p -Fr(site.exp)p Fv(')d(\014le.)40 b(The)30 b(m)m(ultiple)e(instances)i -(of)h(`)p Fr(site.exp)p Fv(')150 797 y(are)f(loaded)f(in)g(a)h(\014xed) -f(order)g(built)f(in)m(to)h(DejaGn)m(u)i(\(the)f(more)g(lo)s(cal)f -(last\).)41 b(The)29 b(\014rst)g(\014le)g(loaded)g(is)150 -907 y(the)i(optional)e Fr(~/.dejagnurc)p Fv(,)e(then)j(the)h(lo)s(cal)f -(\014les,)f(and)h(\014nally)e(the)j(global)f(\014le.)199 -1041 y(1.)61 b(There)23 b(is)f(am)i(optional)e(\\master")j(`)p -Fr(site.exp)p Fv(',)e(capturing)g(con\014guration)f(v)-5 -b(alues)23 b(that)h(apply)e(to)330 1151 y(DejaGn)m(u)32 -b(across)g(the)f(b)s(oard,)g(in)f(eac)m(h)i(con\014guration-sp)s -(eci\014c)e(sub)s(directory)f(of)j(the)f(DejaGn)m(u)330 -1260 y(library)g(directory)-8 b(.)49 b Fr(runtest)31 -b Fv(loads)i(these)g(v)-5 b(alues)33 b(\014rst.)48 b(See)34 -b(App)s(endix)c(A)j([Con\014guring)f(and)330 1370 y(Installing)h -(DejaGn)m(u],)38 b(page)f(49.)57 b(The)35 b(master)h(`)p -Fr(site.exp)p Fv(')e(con)m(tains)i(the)f(default)g(v)-5 -b(alues)35 b(for)330 1479 y(all)f(targets)j(and)d(hosts)h(supp)s(orted) -f(b)m(y)h(DejaGn)m(u.)56 b(This)33 b(master)j(\014le)e(is)g(iden)m -(ti\014ed)g(b)m(y)h(setting)330 1589 y(the)27 b(en)m(vironmen)m(t)g(v) --5 b(ariable)26 b Fr(DEJAGNU)f Fv(to)j(the)g(name)f(of)g(the)h(\014le.) -39 b(This)25 b(is)h(also)h(refered)g(to)h(as)g(the)330 -1699 y(\\global")j(con\014g)f(\014le.)199 1833 y(2.)61 -b(An)m(y)31 b(directory)f(con)m(taining)g(a)h(con\014gured)f(test)h -(suite)f(also)g(has)h(a)g(`)p Fr(site.exp)p Fv(',)e(capturing)g(con-) -330 1943 y(\014guration)g(v)-5 b(alues)29 b(sp)s(eci\014c)f(to)i(the)g -(to)s(ol)g(under)e(test.)41 b(Since)29 b Fr(runtest)f -Fv(loads)h(these)h(v)-5 b(alues)29 b(last,)330 2052 y(the)40 -b(individual)35 b(test)40 b(con\014guration)g(can)f(either)h(rely)e(on) -i(and)f(use,)j(or)e(o)m(v)m(erride,)i(an)m(y)e(of)g(the)330 -2162 y(global)30 b(v)-5 b(alues)29 b(from)h(the)h(\\master")g(`)p -Fr(site.exp)p Fv('.)330 2296 y(Y)-8 b(ou)24 b(can)g(usually)e(generate) -j(or)f(up)s(date)f(the)h(testsuite)g(`)p Fr(site.exp)p -Fv(')e(b)m(y)i(t)m(yping)f(`)p Fr(make)30 b(site.exp)p -Fv(')330 2406 y(in)f(the)i(test)g(suite)f(directory)-8 -b(,)30 b(after)h(the)g(test)g(suite)f(is)f(con\014gured.)199 -2540 y(3.)61 b(Y)-8 b(ou)34 b(can)h(also)e(ha)m(v)m(e)j(a)e(\014le)f -(in)g(y)m(our)g(home)h(directory)g(called)f Fr(.dejagnurc)p -Fv(.)48 b(This)33 b(gets)h(loaded)330 2650 y(\014rst)j(b)s(efore)g(the) -g(other)h(con\014g)f(\014les.)61 b(Usually)36 b(this)g(is)h(used)f(for) -h(p)s(ersonal)f(stu\013,)j(lik)m(e)e(setting)330 2760 -y Fr(all_flag)28 b Fv(so)j(all)e(the)i(output)f(gets)h(prin)m(ted,)e -(or)h(v)m(erb)s(osit)m(y)h(lev)m(els.)275 2919 y(Y)-8 -b(ou)29 b(can)g(further)f(o)m(v)m(erride)h(the)g(default)g(v)-5 -b(alues)28 b(in)g(a)h(user-editable)f(section)h(of)g(an)m(y)g(`)p -Fr(site.exp)p Fv(',)150 3029 y(or)h(b)m(y)h(setting)f(v)-5 -b(ariables)29 b(on)h(the)h Fr(runtest)d Fv(command)i(line.)150 -3253 y Fi(4.0.1)63 b(Con\014g)41 b(V)-10 b(ariables)275 -3445 y Fv(DejaGn)m(u)35 b(uses)f(a)h(named)g(arra)m(y)g(in)e(Tcl)h(to)i -(hold)d(all)h(the)h(info)e(for)i(eac)m(h)h(mac)m(hine.)53 -b(In)34 b(the)h(case)150 3555 y(of)30 b(a)g(canadian)f(cross,)h(this)e -(means)i(host)f(information)f(as)i(w)m(ell)f(as)g(target)j -(information.)38 b(The)29 b(named)150 3665 y(arra)m(y)38 -b(is)e(called)g Fr(target_info)p Fv(,)g(and)g(it)h(has)g(t)m(w)m(o)h -(indices.)59 b(The)36 b(follo)m(wing)g(\014elds)f(are)j(part)f(of)g -(the)150 3774 y(arra)m(y)-8 b(.)150 3934 y Fr(name)288 -b Fv(The)36 b(name)g(of)g(the)g(target.)59 b(\(mostly)36 -b(for)g(error)g(messages\))h(This)d(should)g(also)i(b)s(e)g(the)630 -4043 y(string)24 b(used)g(for)h(this)e(target's)k(arra)m(y)-8 -b(.)40 b(It)25 b(should)e(also)i(b)s(e)f(the)h(same)g(as)h(the)f(link)m -(er)e(script)630 4153 y(so)38 b(w)m(e)g(can)g(\014nd)e(them)h -(dynamically)-8 b(.)60 b(This)36 b(should)g(b)s(e)g(the)i(same)g(as)g -(the)f(argumen)m(t)630 4262 y(used)30 b(for)g Fr(push_target{})p -Fv(.)150 4422 y Fr(ldflags)144 b Fv(This)45 b(is)g(the)i(link)m(er)d -(\015ags)j(required)e(to)i(pro)s(duce)e(a)i(fully)d(link)m(ed)h -(executable.)89 b(F)-8 b(or)630 4531 y Fr(libgloss)28 -b Fv(supp)s(orted)h(targets)i(this)f(is)f(usually)f(just)i(the)h(name)f -(of)h(the)f(link)m(er)f(script.)150 4691 y Fr(config)192 -b Fv(The)37 b(target)j(canonical)d(for)h(this)e(target.)65 -b(This)36 b(is)h(used)g(b)m(y)g(some)i(init)d(\014les)g(to)j(mak)m(e) -630 4800 y(sure)30 b(the)g(target)i(is)e(supp)s(orted.)150 -4960 y Fr(cflags)192 b Fv(The)30 b(\015ags)g(required)f(to)i(pro)s -(duce)e(an)i(ob)5 b(ject)31 b(\014le)e(from)h(a)h(source)g(\014le.)150 -5119 y Fr(connect)144 b Fv(This)29 b(is)h(the)h(connectmo)s(de)g(for)g -(this)e(target.)44 b(This)29 b(is)g(for)i(b)s(oth)f(IP)g(and)h(serial)e -(connec-)630 5229 y(tions.)40 b(T)m(ypically)29 b(this)g(is)g(either)h -Fr(telnet)p Fv(,)f Fr(rlogin)p Fv(,)g(or)h Fr(rsh)p Fv(.)p -eop -%%Page: 16 18 -16 17 bop 150 -116 a Fv(16)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fr(target)192 -b Fv(This)26 b(is)i(the)g(hostname)h(of)f(the)h(target.)41 -b(This)27 b(is)g(for)h(TCP/IP)g(based)g(connections,)h(and)630 -193 y(is)g(also)i(used)e(for)h(v)m(ersion)g(of)h(tip)e(that)i(use)f -(/etc/remote.)150 352 y Fr(serial)192 b Fv(This)29 b(is)g(the)i(serial) -e(p)s(ort.)40 b(This)28 b(is)i(t)m(ypically)f(/dev/tt)m(y?)42 -b(or)31 b(com?:.)150 511 y Fr(netport)144 b Fv(This)29 -b(is)g(the)i(IP)f(p)s(ort.)40 b(This)29 b(is)g(commonly)h(used)g(for)g -(telneting)g(to)h(target)h(b)s(oards)d(that)630 621 y(are)g(connected)g -(to)g(a)f(terminal)f(serv)m(er.)40 b(In)28 b(that)h(case)g(the)f(IP)g -(p)s(ort)g(sp)s(eci\014es)f(the)h(whic)m(h)630 731 y(serial)h(p)s(ort)h -(to)h(use.)150 890 y Fr(baud)288 b Fv(This)29 b(is)g(the)i(baud)e(rate) -i(for)f(a)h(serial)e(p)s(ort)h(connection.)150 1049 y -Fr(x10)336 b Fv(This)29 b(is)h(the)h(parameters)h(for)f(an)f(x10)i(con) -m(troller.)43 b(These)30 b(are)i(simple)d(devices)h(that)i(let)630 -1159 y(us)e(p)s(o)m(w)m(er)g(cycle)h(or)f(reset)h(a)g(target)h(b)s -(oard)d(remotely)-8 b(.)150 1318 y Fr(fileid)192 b Fv(This)29 -b(is)g(the)i(\014leid)d(or)i(spa)m(wn)g(id)f(of)h(of)h(the)g -(connection.)150 1478 y Fr(prompt)192 b Fv(a)31 b(glob)f(st)m(yle)g -(pattern)h(to)g(recognize)g(the)g(prompt.)150 1637 y -Fr(abbrev)192 b Fv(abbreviation)29 b(for)h(to)s(ol)h(init)d(\014les.) -150 1797 y Fr(ioport)192 b Fv(This)30 b(is)h(the)h(p)s(ort)f(for)h(I/O) -g(on)g(dual)e(p)s(ort)i(systems.)45 b(In)31 b(this)g(con\014guration,)h -(the)g(main)630 1906 y(serial)f(p)s(ort)g Fr(0)h Fv(is)f(usually)f -(used)h(for)h(stdin)e(and)i(stdout,)h(whic)m(h)d(the)j(second)f(serial) -f(p)s(ort)630 2016 y(can)g(b)s(e)e(used)h(for)g(debugging.)275 -2175 y(The)d(\014rst)f(index)h(in)m(to)g(the)h(arra)m(y)g(is)f(the)g -(same)h(v)-5 b(alue)27 b(as)h(used)f(in)f(the)i Fr(name)e -Fv(\014eld.)39 b(This)26 b(is)g(usually)150 2285 y(a)33 -b(short)g(v)m(ersion)f(of)h(the)g(name)g(of)g(the)g(target)h(b)s(oard.) -47 b(F)-8 b(or)33 b(an)g(example,)g(here's)g(the)g(settings)g(I)f(use) -150 2394 y(for)f(m)m(y)h Fr(Motorola's)d(IDP)i Fv(b)s(oard)g(and)g(m)m -(y)h Fr(Motorola)d Fv(6U)j(VME)g Fr(MVME135-1)d Fv(b)s(oard.)44 -b(\(b)s(oth)31 b(m68k)150 2504 y(targets\))150 2588 y -Fm(\013)p 200 2588 3554 4 v 3553 w(\010)p 150 4758 4 -2123 v 178 2741 a Fr(#)48 b(IDP)f(board)178 2845 y(set)g -(target_info\(idp,name\))328 b("idp")178 2948 y(set)47 -b(target_info\(idp,ldflags\))184 b("-Tidp.ld")178 3052 -y(set)47 b(target_info\(idp,config\))232 b(m68k-unknown-aout)178 -3156 y(set)47 b(target_info\(idp,cflags\))232 b("")178 -3260 y(set)47 b(target_info\(idp,connect\))184 b(telnet)178 -3363 y(set)47 b(target_info\(idp,target\))232 b("s7")178 -3467 y(set)47 b(target_info\(idp,serial\))232 b("tstty7")178 -3571 y(set)47 b(target_info\(idp,netport\))184 b("wharfrat:1007")178 -3675 y(set)47 b(target_info\(idp,baud\))328 b("9600")178 -3779 y(#)48 b(MVME)e(135)h(board)178 3882 y(set)g -(target_info\(idp,name\))328 b("mvme")178 3986 y(set)47 -b(target_info\(idp,ldflags\))184 b("-Tmvme.ld")178 4090 -y(set)47 b(target_info\(idp,config\))232 b(m68k-unknown-aout)178 -4194 y(set)47 b(target_info\(idp,cflags\))232 b("")178 -4297 y(set)47 b(target_info\(idp,connect\))184 b(telnet)178 -4401 y(set)47 b(target_info\(idp,target\))232 b("s8")178 -4505 y(set)47 b(target_info\(idp,serial\))232 b("tstty8")178 -4609 y(set)47 b(target_info\(idp,netport\))184 b("wharfrat:1008")178 -4713 y(set)47 b(target_info\(idp,baud\))328 b("9600")p -3803 4758 V 150 4810 a Fm(\012)p 200 4810 3554 4 v 3553 -w(\011)275 4954 y Fv(DejaGn)m(u)37 b(can)g(use)g(this)f(information)f -(to)i(switc)m(h)g(b)s(et)m(w)m(een)g(m)m(ultiple)e(targets)j(in)d(one)i -(test)h(run.)150 5064 y(This)29 b(is)g(done)h(through)g(the)g(use)g(of) -h(the)g Fr(push_target)c Fv(pro)s(cedure,)i(whic)m(h)g(is)h(discussed)e -(elsewhere.)275 5199 y(This)35 b(arra)m(y)j(can)f(also)h(hold)d -(information)h(for)h(a)h(remote)g(host,)h(whic)m(h)d(is)g(used)h(when)f -(testing)i(a)150 5308 y(candain)d(cross.)59 b(In)35 b(this)g(case,)k -(the)e(only)e(thing)g(di\013eren)m(t)h(is)f(the)i(index)e(is)g(just)h -Fr(host)p Fv(.)57 b(Here's)37 b(the)p eop -%%Page: 17 19 -17 18 bop 150 -116 a Fv(Chapter)30 b(4:)41 b(Setting)30 -b Fr(runtest)e Fv(defaults)2055 b(17)150 83 y(settings)32 -b(I)f(use)h(to)g(run)e(tests)j(on)f(m)m(y)f(NT)h(mac)m(hine)f(while)f -(running)f(DejaGn)m(u)k(on)e(a)h(Unix)f(mac)m(hine.)150 -193 y(\(in)e(this)h(case)h(a)g(Lin)m(ux)e(b)s(o)m(x\))150 -276 y Fm(\013)p 200 276 3554 4 v 3553 w(\010)p 150 793 -4 470 v 178 437 a Fr(set)47 b(target_info\(host,name\))280 -b("nt-host")178 541 y(set)47 b(target_info\(host,config\))184 -b("386-unknown-winnt")178 645 y(set)47 b(target_info\(host,connect\)) -136 b("telnet")178 748 y(set)47 b(target_info\(host,target\))184 -b("ripple")p 3803 793 V 150 845 a Fm(\012)p 200 845 3554 -4 v 3553 w(\011)275 990 y Fv(There)31 b(is)f(more)i(info)f(on)g(ho)m(w) -h(to)g(use)g(these)g(v)-5 b(ariables)30 b(in)g(the)i(sections)g(on)f -(the)h(con\014g)g(\014les.)44 b(See)150 1100 y(Chapter)30 -b(4)h([Con\014guration)e(Files],)h(page)h(18.)275 1234 -y(In)37 b(the)h(user)g(editable)f(second)h(section)h(of)f(`)p -Fr(site.exp)p Fv(',)h(y)m(ou)f(can)h(not)f(only)g(o)m(v)m(erride)g(the) -g(con-)150 1344 y(\014guration)32 b(v)-5 b(ariables)31 -b(captured)h(in)g(the)h(\014rst)e(section,)j(but)e(also)h(sp)s(ecify)e -(default)h(v)-5 b(alues)32 b(for)g(all)g(the)150 1454 -y Fr(runtest)d Fv(command)h(line)f(options.)42 b(Sa)m(v)m(e)32 -b(for)e(`)p Fr(--debug)p Fv(',)g(`)p Fr(--help)p Fv(',)g(and)g(`)p -Fr(--version)p Fv(',)f(eac)m(h)j(com-)150 1563 y(mand)j(line)f(option)i -(has)g(an)g(asso)s(ciated)g(Tcl)f(v)-5 b(ariable.)57 -b(Use)36 b(the)g(Tcl)f Fr(set)g Fv(command)h(to)h(sp)s(ecify)e(a)150 -1673 y(new)j(default)h(v)-5 b(alue)38 b(\(as)h(for)g(the)g -(con\014guration)g(v)-5 b(ariables\).)65 b(The)38 b(follo)m(wing)g -(table)h(describ)s(es)e(the)150 1782 y(corresp)s(ondence)j(b)s(et)m(w)m -(een)h(command)g(line)d(options)i(and)g(v)-5 b(ariables)39 -b(y)m(ou)i(can)g(set)g(in)e(`)p Fr(site.exp)p Fv('.)150 -1892 y(See)31 b(Chapter)e(3)i([Running)d(the)j(T)-8 b(ests],)31 -b(page)g(9,)g(for)g(explanations)e(of)h(the)h(command-line)e(options.) -350 2033 y Fn(runtest)187 b(Tcl)379 2143 y(option)h(variable)395 -b(description)p 150 2178 3600 4 v 341 2288 a Fr(--all)233 -b(all)p 964 2288 29 4 v 33 w(flag)333 b Fv(displa)m(y)29 -b(all)g(test)i(results)e(if)h(set)293 2397 y Fr(--baud)233 -b(baud)510 b Fv(set)31 b(the)g(default)e(baud)g(rate)j(to)f(something) -1516 2507 y(other)g(than)f(9600.)150 2611 y Fr(--connect)232 -b(connectmode)174 b Fv(`)p Fr(rlogin)p Fv(',)30 b(`)p -Fr(telnet)p Fv(',)f(`)p Fr(rsh)p Fv(',)h(`)p Fr(kermit)p -Fv(',)g(`)p Fr(tip)p Fv(',)1516 2721 y(or)h(`)p Fr(mondfe)p -Fv(')293 2840 y Fr(--mail)233 b(mailing)p 1156 2840 V -32 w(list)142 b Fv(address)30 b(list)f(for)h(mailing)e(test)j(output) -293 2949 y Fr(--name)233 b(targetname)222 b Fv(net)m(w)m(ork)31 -b(name)g(of)f(testing)h(target)h(or)e(its)1516 3059 y(host)198 -3177 y Fr(--outdir)232 b(outdir)414 b Fv(directory)30 -b(for)g(`)p Fq(to)s(ol)p Fr(.sum)p Fv(')g(and)g(`)p Fq(to)s(ol)p -Fr(.log)p Fv(')198 3287 y Fr(--objdir)232 b(objdir)414 -b Fv(directory)30 b(for)g(compiled)f(binaries)198 3397 -y Fr(--reboot)232 b(reboot)414 b Fv(reb)s(o)s(ot)30 b(the)h(target)h -(if)d(set)i(to)g Fr("1")p Fv(;)f(do)g(not)1516 3506 y(reb)s(o)s(ot)g -(if)g(set)h(to)g Fr("0")e Fv(\(the)i(default\))198 3625 -y Fr(--srcdir)232 b(srcdir)414 b Fv(directory)30 b(of)h(test)g(sub)s -(directories)198 3734 y Fr(--strace)232 b(tracelevel)222 -b Fv(a)31 b(n)m(um)m(b)s(er:)44 b(Tcl)30 b(trace)i(depth)293 -3844 y Fr(--tool)233 b(tool)510 b Fv(name)31 b(of)f(to)s(ol)g(to)i -(test;)f(iden)m(ti\014es)e(init,)g(test)1516 3954 y(sub)s(dir)150 -4058 y Fr(--verbose)232 b(verbose)366 b Fv(v)m(erb)s(osit)m(y)30 -b(lev)m(el.)46 b(As)30 b(option,)g(use)g(m)m(ultiple)1516 -4167 y(times;)g(as)h(v)-5 b(ariable,)29 b(set)i(a)g(n)m(um)m(b)s(er,)e -(0)i(or)1516 4277 y(greater)198 4381 y Fr(--target)232 -b(target)p 1108 4381 V 32 w(triplet)46 b Fv(The)30 b(canonical)g -(con\014guration)g(string)f(for)1516 4491 y(the)i(target.)293 -4595 y Fr(--host)233 b(host)p 1012 4595 V 33 w(triplet)141 -b Fv(The)30 b(canonical)g(con\014guration)g(string)f(for)1516 -4705 y(the)i(host.)245 4809 y Fr(--build)233 b(build)p -1060 4809 V 33 w(triplet)93 b Fv(The)30 b(canonical)g(con\014guration)g -(string)f(for)1516 4919 y(the)i(build)c(host.)p eop -%%Page: 18 20 -18 19 bop 150 -116 a Fv(18)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fi(4.0.2)63 -b(Master)41 b(Con\014g)h(File)275 276 y Fv(The)28 b(master)i(con\014g)g -(\014le)e(is)h(where)g(all)f(the)i(target)g(sp)s(eci\014c)f(con\014g)g -(v)-5 b(ariables)28 b(get)j(set)f(for)f(a)h(whole)150 -385 y(site)39 b(get)h(set.)67 b(The)38 b(idea)g(is)g(that)i(for)f(a)g -(cen)m(tralized)g(testing)g(lab)f(where)g(p)s(eople)g(ha)m(v)m(e)i(to)g -(share)f(a)150 495 y(target)31 b(b)s(et)m(w)m(een)f(m)m(ultiple)d(dev)m -(elop)s(ers.)39 b(There)29 b(are)h(settings)f(for)g(b)s(oth)g(remote)h -(targets)g(and)f(remote)150 604 y(hosts.)51 b(Here's)35 -b(an)f(example)g(of)g(a)g(Master)h(Con\014g)e(File)g(\(also)i(called)e -(the)h(Global)f(con\014g)h(\014le\))g(for)g(a)150 714 -y Fn(c)-5 b(anadian)32 b(cr)-5 b(oss)p Fv(.)42 b(A)28 -b(canadian)f(cross)h(is)f(when)g(y)m(ou)i(build)c(and)i(test)i(a)f -(cross)g(compiler)f(on)h(a)g(mac)m(hine)150 824 y(other)j(than)f(the)g -(one)h(it's)f(to)h(b)s(e)f(hosted)g(on.)275 958 y(Here)f(w)m(e)g(ha)m -(v)m(e)h(the)f(con\014g)f(settings)h(for)f(our)h(California)d(o\016ce.) -41 b(Note)30 b(that)f(all)f(con\014g)h(v)-5 b(alues)28 -b(are)150 1068 y(site)36 b(dep)s(endan)m(t.)58 b(Here)36 -b(w)m(e)h(ha)m(v)m(e)h(t)m(w)m(o)f(sets)g(of)f(v)-5 b(alues)36 -b(that)h(w)m(e)g(use)e(for)i(testing)f(m68k-aout)i(cross)150 -1177 y(compilers.)56 b(As)36 b(b)s(oth)f(of)h(these)h(target)g(b)s -(oards)e(has)h(a)g(di\013eren)m(t)f(debugging)g(proto)s(col,)j(w)m(e)e -(test)h(on)150 1287 y(b)s(oth)30 b(of)g(them)h(in)e(sequence.)150 -1366 y Fm(\013)p 200 1366 3554 4 v 3553 w(\010)p 150 -4664 4 3252 v 178 1519 a Fr(global)46 b(CFLAGS)178 1622 -y(global)g(CXXFLAGS)178 1830 y(case)h("$target_triplet")c(in)k({)369 -1934 y({)h("native")d(})j({)560 2038 y(set)f(target_abbrev)d(unix)369 -2141 y(})369 2245 y({)k("m68*-unknown-aout")42 b(})48 -b({)560 2349 y(set)f(target_abbrev)712 b("rom68k")560 -2453 y(#)47 b(IDP)g(target)953 b(#)48 b(IDP)f(board)f(with)h(rom68k)f -(monitor)560 2556 y(set)h(target_info\(idp,name\))328 -b("idp")560 2660 y(set)47 b(target_info\(idp,ldflags\))184 -b("-Tidp.ld")560 2764 y(set)47 b(target_info\(idp,config\))232 -b(m68k-unknown-aout)560 2868 y(set)47 b(target_info\(idp,cflags\))232 -b("")560 2972 y(set)47 b(target_info\(idp,connect\))184 -b(telnet)560 3075 y(set)47 b(target_info\(idp,target\))232 -b("s7")560 3179 y(set)47 b(target_info\(idp,serial\))232 -b("tstty12")560 3283 y(set)47 b(target_info\(idp,netport\))184 -b("truckin:1007")560 3387 y(set)47 b(target_info\(idp,baud\))328 -b("9600")560 3490 y(#)47 b(MVME)g(target)905 b(#)48 b(Motorola)d(MVME)i -(135)g(with)f(BUG)h(monitor)560 3594 y(set)g(target_info\(mvme,name\)) -280 b("mvme")560 3698 y(set)47 b(target_info\(mvme,ldflags)o(\))137 -b("-Tmvme.ld")560 3802 y(set)47 b(target_info\(mvme,config\))184 -b(m68k-unknown-aout)560 3906 y(set)47 b(target_info\(mvme,cflags\))184 -b("")560 4009 y(set)47 b(target_info\(mvme,connect)o(\))137 -b(telnet)560 4113 y(set)47 b(target_info\(mvme,target\))184 -b("s4")560 4217 y(set)47 b(target_info\(mvme,serial\))184 -b("tstty8")560 4321 y(set)47 b(target_info\(mvme,netport)o(\))137 -b("truckin:1004")560 4424 y(set)47 b(target_info\(mvme,baud\))280 -b("9600")417 4528 y(})178 4632 y(})p 3803 4664 V 150 -4716 a Fm(\012)p 200 4716 3554 4 v 3553 w(\011)275 4861 -y Fv(In)27 b(this)g(case,)j(w)m(e)f(ha)m(v)m(e)h(supp)s(ort)c(for)i -(sev)m(eral)h(remote)g(hosts)g(for)f(our)g(m68k-aout)i(cross)e -(compiler.)150 4971 y(T)m(ypically)h(the)j(remote)g(Unix)e(hosts)h(run) -f(DejaGn)m(u)i(lo)s(cally)-8 b(,)31 b(but)f(w)m(e)i(also)f(use)g(them)g -(for)g(debugging)150 5080 y(the)c(testsuites)f(when)g(w)m(e)h(\014nd)e -(problems)g(in)g(running)f(on)j(remote)g(hosts.)40 b(Exp)s(ect)26 -b(w)m(on't)h(run)e(on)i(NT,)150 5190 y(so)j(DejaGn)m(u)h(is)e(run)f(on) -i(the)g(lo)s(cal)f(build)d(mac)m(hine,)k(and)g(it'll)e(connect)i(to)h -(the)f(NT)g(host)f(and)h(run)e(all)150 5300 y(the)j(tests)g(for)f(this) -f(cross)i(compiler)e(on)h(that)h(host.)p eop -%%Page: 19 21 -19 20 bop 150 -116 a Fv(Chapter)30 b(4:)41 b(Setting)30 -b Fr(runtest)e Fv(defaults)2055 b(19)390 52 y Fm(\013)p -440 52 3314 4 v 3313 w(\010)p 390 3063 4 2964 v 418 228 -a Fr(case)47 b("$host_triplet")c(in)48 b({)609 332 y("native")e({)609 -436 y(})609 540 y("i?86-*-linux*")e({)906 b(#)48 b(Linux)e(host)800 -643 y(set)h(target_info\(host,name\))280 b("linux-host")800 -747 y(set)47 b(target_info\(host,config\))184 b($host_triplet)800 -851 y(set)47 b(target_info\(host,connect)o(\))137 b(rlogin)800 -955 y(set)47 b(target_info\(host,target\))184 b(chinadoll)609 -1059 y(})609 1162 y("i?86-*-winnt)1094 b(#)48 b(NT)f(host)800 -1266 y(set)g(target_info\(host,name\))280 b("nt-host")800 -1370 y(set)47 b(target_info\(host,config\))184 b(i386-unknown-winnt)800 -1474 y(set)47 b(target_info\(host,connect)o(\))137 b(telnet)800 -1577 y(set)47 b(target_info\(host,target\))184 b(ripple)609 -1681 y(})609 1785 y("hppa*-hp-hpux*")43 b({)859 b(#)48 -b(HP-UX)e(host)800 1889 y(set)h(target_info\(host,name\))280 -b("hpux-host")800 1993 y(set)47 b(target_info\(host,config\))184 -b($host_triplet)800 2096 y(set)47 b(target_info\(host,connect)o(\))137 -b(rlogin)800 2200 y(set)47 b(target_info\(host,target\))184 -b(slipknot)800 2304 y(})609 2408 y("sparc-sun-sunos*")43 -b({)763 b(#)48 b(SunOS)e(\(sun4\))800 2511 y(set)h -(target_info\(host,name\))280 b("sunos-host")800 2615 -y(set)47 b(target_info\(host,config\))184 b($host_triplet)800 -2719 y(set)47 b(target_info\(host,connect)o(\))137 b(rlogin)800 -2823 y(set)47 b(target_info\(host,target\))184 b(darkstar)609 -2927 y(})418 3030 y(})p 3803 3063 V 390 3115 a Fm(\012)p -440 3115 3314 4 v 3313 w(\011)150 3339 y Fi(4.0.3)63 -b(Lo)s(cal)40 b(Con\014g)i(File)275 3531 y Fv(It)33 b(is)g(usually)e -(more)j(con)m(v)m(enien)m(t)h(to)f(k)m(eep)h(these)f(\\man)m(ual)f(o)m -(v)m(errides")i(in)d(the)i(`)p Fr(site.exp)p Fv(')e(lo)s(cal)150 -3641 y(to)f(eac)m(h)h(test)f(directory)-8 b(,)30 b(rather)h(than)f(in)f -(the)h(\\master")i(`)p Fr(site.exp)p Fv(')d(in)g(the)h(DejaGn)m(u)i -(library)-8 b(.)275 3776 y(All)36 b(lo)s(cal)g(`)p Fr(site.exp)p -Fv(')g(usually)f(\014les)i(ha)m(v)m(e)h(t)m(w)m(o)h(sections,)h -(separated)e(b)m(y)f(commen)m(t)h(text.)63 b(The)150 -3885 y(\014rst)23 b(section)i(is)e(the)h(part)g(that)g(is)g(generated)h -(b)m(y)f Fr(make)p Fv(.)37 b(It)24 b(is)f(essen)m(tially)g(a)i -(collection)f(of)g(Tcl)f(v)-5 b(ariable)150 3995 y(de\014nitions)30 -b(based)j(on)g(`)p Fr(Makefile)p Fv(')e(en)m(vironmen)m(t)h(v)-5 -b(ariables.)47 b(Since)32 b(they)h(are)g(generated)h(b)m(y)f -Fr(make)p Fv(,)150 4104 y(they)27 b(con)m(tain)h(the)f(v)-5 -b(alues)27 b(as)g(sp)s(eci\014ed)f(b)m(y)h Fr(configure)p -Fv(.)37 b(\(Y)-8 b(ou)28 b(can)f(also)g(customize)h(these)g(v)-5 -b(alues)26 b(b)m(y)150 4214 y(using)d(the)h(`)p Fr(--site)p -Fv(')e(option)i(to)h Fr(configure)p Fv(.\))36 b(In)23 -b(particular,)h(this)f(section)h(con)m(tains)g(the)h(`)p -Fr(Makefile)p Fv(')150 4323 y(v)-5 b(ariables)34 b(for)h(host)h(and)f -(target)i(con\014guration)e(data.)57 b(Do)36 b(not)g(edit)f(this)f -(\014rst)h(section;)j(if)d(y)m(ou)h(do,)150 4433 y(y)m(our)30 -b(c)m(hanges)i(are)e(replaced)g(next)h(time)f(y)m(ou)h(run)e -Fr(make)p Fv(.)275 4568 y(The)g(\014rst)h(section)h(starts)f(with:)150 -4629 y Fm(\013)p 200 4629 3554 4 v 3553 w(\010)p 150 -5014 4 338 v 178 4782 a Fr(##)47 b(these)g(variables)e(are)i -(automatically)d(generated)h(by)j(make)e(##)178 4885 -y(#)i(Do)f(not)g(edit)f(here.)h(If)g(you)g(wish)f(to)i(override)d -(these)i(values)178 4989 y(#)h(add)f(them)f(to)h(the)g(last)g(section)p -3803 5014 V 150 5066 a Fm(\012)p 200 5066 3554 4 v 3553 -w(\011)275 5216 y Fv(In)23 b(the)h(second)g(section,)i(y)m(ou)e(can)g -(o)m(v)m(erride)g(an)m(y)h(default)e(v)-5 b(alues)23 -b(\(lo)s(cally)g(to)i(DejaGn)m(u\))g(for)f(all)f(the)150 -5326 y(v)-5 b(ariables.)39 b(The)29 b(second)h(section)g(can)g(also)g -(con)m(tain)g(y)m(our)g(preferred)e(defaults)h(for)h(all)e(the)i -(command)p eop -%%Page: 20 22 -20 21 bop 150 -116 a Fv(20)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y(line)30 b(options)h(to)h -Fr(runtest)p Fv(.)43 b(This)30 b(allo)m(ws)h(y)m(ou)g(to)i(easily)e -(customize)h Fr(runtest)d Fv(for)j(y)m(our)f(preferences)150 -193 y(in)41 b(eac)m(h)j(con\014gured)e(test-suite)h(tree,)j(so)d(that)g -(y)m(ou)g(need)f(not)h(t)m(yp)s(e)g(options)e(rep)s(eatedly)h(on)h(the) -150 302 y(command)31 b(line.)41 b(\(The)31 b(second)g(section)g(ma)m(y) -g(also)g(b)s(e)g(empt)m(y)-8 b(,)32 b(if)e(y)m(ou)h(do)g(not)h(wish)d -(to)i(o)m(v)m(erride)h(an)m(y)150 412 y(defaults.\))275 -546 y(The)d(\014rst)h(section)h(ends)e(with)g(this)g(line:)150 -607 y Fm(\013)p 200 607 3554 4 v 3553 w(\010)p 150 806 -4 151 v 178 760 a Fr(##)47 b(All)g(variables)f(above)g(are)h(generated) -e(by)i(configure.)e(Do)i(Not)g(Edit)g(##)p 3803 806 V -150 857 a Fm(\012)p 200 857 3554 4 v 3553 w(\011)275 -1002 y Fv(Y)-8 b(ou)31 b(can)f(mak)m(e)i(an)m(y)f(c)m(hanges)g(under)e -(this)h(line.)40 b(If)30 b(y)m(ou)h(wish)d(to)k(rede\014ne)d(a)i(v)-5 -b(ariable)30 b(in)f(the)i(top)150 1112 y(section,)k(then)f(just)f(put)h -(a)g(duplicate)f(v)-5 b(alue)33 b(in)g(this)g(second)h(section.)51 -b(Usually)33 b(the)h(v)-5 b(alues)33 b(de\014ned)150 -1221 y(in)c(this)h(con\014g)h(\014le)f(are)h(related)g(to)h(the)f -(con\014guration)f(of)h(the)g(test)g(run.)41 b(This)29 -b(is)h(the)h(ideal)e(place)i(to)150 1331 y(set)g(the)g(v)-5 -b(ariables)29 b Fr(host_triplet)p Fv(,)e Fr(build_triplet)p -Fv(,)g Fr(target_triplet)p Fv(.)38 b(All)29 b(other)h(v)-5 -b(ariables)30 b(are)150 1441 y(to)s(ol)i(dep)s(endan)m(t.)46 -b(ie)32 b(for)g(testing)h(a)g(compiler,)e(the)i(v)-5 -b(alue)32 b(for)g Fq(CC)40 b Fv(migh)m(t)32 b(b)s(e)g(set)g(to)i(a)e -(freshly)f(built)150 1550 y(binary)-8 b(,)29 b(as)i(opp)s(osed)e(to)j -(one)e(in)f(the)i(user's)f(path.)150 1774 y Fi(4.0.4)63 -b(P)m(ersonal)41 b(Con\014g)g(File)275 1967 y Fv(The)j(p)s(ersonal)g -(con\014g)h(\014le)f(is)g(used)g(to)i(customize)g Fr(runtest's)c -Fv(b)s(eha)m(viour)i(for)h(eac)m(h)h(p)s(erson.)150 2077 -y(It's)33 b(t)m(ypically)f(used)g(to)i(set)g(the)f(user)f(prefered)g -(setting)h(for)g(v)m(erb)s(osit)m(y)-8 b(,)34 b(and)f(an)m(y)g(exp)s -(erimen)m(tal)f(Tcl)150 2186 y(pro)s(cedures.)39 b(My)31 -b(p)s(ersonal)e(`)p Fr(~/.dejagnurc)p Fv(')e(\014le)j(lo)s(oks)g(lik)m -(e:)150 2267 y Fm(\013)p 200 2267 V 3553 w(\010)p 150 -2661 4 346 v 178 2421 a Fr(set)47 b(all_flag)f(1)178 -2524 y(set)h(RLOGIN)f(/usr/ucb/rlogin)178 2628 y(set)h(RSH)g -(/usr/ucb/rsh)p 3803 2661 V 150 2712 a Fm(\012)p 200 -2712 3554 4 v 3553 w(\011)275 2857 y Fv(Here)27 b(I)g(set)h -Fr(all_flag)d Fv(so)j(I)f(see)h(all)e(the)h(test)i(cases)f(that)g(P)-8 -b(ASS)26 b(along)i(with)e(the)h(ones)h(that)g(F)-10 b(AIL.)150 -2967 y(I)36 b(also)g(set)h Fq(RLOGIN)46 b Fv(and)36 b -Fr(RSH)f Fv(to)i(the)f(BSD)h(v)m(ersion.)58 b(I)36 b(ha)m(v)m(e)h -Fr(kerberos)d Fv(installed,)i(and)g(when)f(I)150 3077 -y(rlogin)25 b(to)h(a)h(target)g(b)s(oard,)f(it)g(usually)e(isn't)h -(supp)s(orted.)38 b(So)25 b(I)h(use)g(the)g(non)g(secure)g(v)m(ersions) -f(of)h(these)150 3186 y(programs)k(rather)g(than)g(the)h(default)e -(that's)j(in)d(m)m(y)h(path.)p eop -%%Page: 21 23 -21 22 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h -(Implemen)m(tation)1847 b(21)150 100 y Fs(5)80 b(The)54 -b(DejaGn)l(u)e(Implemen)l(tation)275 334 y Fv(DejaGn)m(u)30 -b(is)e(en)m(tirely)h(written)g(in)f Fr(expect)p Fv(,)g(whic)m(h)g(uses) -h(Tcl)g(as)h(a)g(command)f(language.)41 b Fr(expect)150 -443 y Fv(serv)m(es)26 b(as)f(a)h(v)m(ery)g(programmable)e(shell;)h(y)m -(ou)h(can)g(run)d(an)m(y)j(program,)g(as)g(with)e(the)h(usual)f(Unix)g -(com-)150 553 y(mand)30 b(shells|but)e(once)k(the)f(program)f(is)g -(started,)i(y)m(our)f Fr(expect)e Fv(script)h(has)g(fully)f -(programmable)150 663 y(con)m(trol)24 b(of)f(its)g(input)e(and)i -(output.)38 b(This)21 b(do)s(es)i(not)g(just)g(apply)f(to)i(the)f -(programs)g(under)f(test;)27 b Fr(expect)150 772 y Fv(can)h(also)g(run) -f(an)m(y)h(auxiliary)e(program,)j(suc)m(h)e(as)i Fr(diff)d -Fv(or)i Fr(sh)p Fv(,)h(with)d(full)g(con)m(trol)j(o)m(v)m(er)g(its)e -(input)g(and)150 882 y(output.)275 1016 y(DejaGn)m(u)40 -b(itself)f(is)g(merely)g(a)h(framew)m(ork)g(for)f(the)h(set)g(of)g -(test)h(suites)e(distributed)e(separately)150 1126 y(for)i(eac)m(h)h -Fo(gnu)f Fv(to)s(ol.)66 b(F)-8 b(uture)39 b(releases)g(of)g -Fo(gnu)g Fv(to)s(ols)g(will)d(include)h(ev)m(en)i(more)g(tests,)k(dev)m -(elop)s(ed)150 1235 y(throughout)30 b(the)h(free)f(soft)m(w)m(are)i -(comm)m(unit)m(y)-8 b(.)275 1370 y Fr(runtest)29 b Fv(is)h(the)i(glue)f -(to)h(tie)f(together)i(and)e(manage)h(the)g(test)g(scripts.)43 -b(The)31 b Fr(runtest)e Fv(program)150 1479 y(is)36 b(actually)g(a)h -(simple)e(Bourne)h(shell)f(script)h(that)h(lo)s(cates)h(a)f(cop)m(y)g -(of)g(the)g Fr(expect)e Fv(shell)g(and)h(then)150 1589 -y(starts)31 b(the)f(main)g(Tcl)f(co)s(de,)i Fr(runtest.exp)p -Fv(.)38 b Fr(runtest.exp)27 b Fv(itself)i(has)h(these)h(essen)m(tial)f -(functions:)199 1724 y(1.)61 b(P)m(arse)21 b(the)f(command)h(line)d -(options,)k(load)e(the)g(library)e(\014les,)k(and)e(load)g(the)g -(default)g(con\014guration)330 1833 y(\014les.)199 1968 -y(2.)61 b(Lo)s(cating)41 b(the)g(individual)c(test)42 -b(scripts.)71 b Fr(runtest.exp)38 b Fv(lo)s(cates)j(the)h(tests)f(b)m -(y)g(exploiting)f(a)330 2077 y(straigh)m(tforw)m(ard)33 -b(naming)g(con)m(v)m(en)m(tion)h(based)g(on)f(the)h(string)e(y)m(ou)i -(sp)s(ecify)e(with)g(the)i(`)p Fr(--tool)p Fv(')330 2187 -y(option.)199 2321 y(3.)61 b(Pro)m(viding)25 b(an)h(extended)h(test)g -(en)m(vironmen)m(t,)g(b)m(y)g(de\014ning)d(additional)h(Tcl)g(pro)s -(cedures)h(b)s(ey)m(ond)330 2431 y(those)31 b(already)f(in)f -Fr(expect)p Fv(.)199 2565 y(4.)61 b(Lo)s(cating)24 b(target-dep)s -(enden)m(t)h(functions,)f(to)h(standardize)e(the)i(test)g(en)m -(vironmen)m(t)e(across)i(a)f(wide)330 2675 y(v)-5 b(ariet)m(y)31 -b(of)f(test)i(platforms.)150 2932 y Fu(5.1)68 b(Con)l(v)l(en)l(tions)47 -b(for)e(using)g(to)t(ol)g(names)275 3125 y Fv(DejaGn)m(u)26 -b(uses)f(`)p Fr($tool)p Fv(',)h(the)g(name)g(of)g(the)g(to)s(ol)f -(under)g(test,)i(to)g(tie)e(together)j(the)e(testing)f(con\014g-)150 -3235 y(uration)31 b(in)f(a)i(straigh)m(tforw)m(ard)f(but)g(\015exible)f -(w)m(a)m(y)-8 b(.)45 b(If)32 b(there)f(is)g(only)g(one)g(testsuite)h -(for)g(a)g(particular)150 3344 y(application,)d(then)h(`)p -Fr($tool)p Fv(')f(is)h(optional.)275 3479 y(`)p Fr($tool)p -Fv(')38 b(is)g Fn(not)49 b Fv(used)38 b(to)i(in)m(v)m(ok)m(e)h(the)e -(to)s(ol,)j(since)d(sites)f(that)i(run)e(m)m(ultiple)f -(con\014gurations)i(of)150 3588 y(a)47 b(particular)e(to)s(ol)i(often)g -(call)f(eac)m(h)i(con\014guration)e(b)m(y)h(a)g(di\013eren)m(t)g(name.) -90 b Fr(runtest)44 b Fv(uses)j(the)150 3698 y(con\014guration-dep)s -(enden)m(t)40 b(v)-5 b(ariables)40 b(captured)h(in)f(`)p -Fr(site.exp)p Fv(')f(to)j(determine)e(ho)m(w)h(to)h(call)f(eac)m(h)150 -3807 y(to)s(ol.)275 3942 y Fr(runtest)30 b Fv(uses)h(to)s(ol)h(names)g -(to)h(\014nd)e(directories)g(con)m(taining)h(tests.)46 -b Fr(runtest)30 b Fv(scans)i(the)h(source)150 4051 y(directory)22 -b(\(sp)s(eci\014ed)g(with)f Fr(--srcdir)p Fv(\))g(for)i(all)e -(directories)h(whose)h(names)f(start)h(with)f(the)h(to)s(ol)g(name.)150 -4161 y(It)40 b(is)g(a)g(common)h(practice)f(to)h(put)f(a)g(p)s(erio)s -(d)e(after)j(the)g(to)s(ol)f(part)g(of)g(the)h(name.)70 -b(F)-8 b(or)41 b(instance,)150 4271 y(directories)32 -b(that)i(start)f(with)f(`)p Fr(g++.)p Fv(')h(con)m(tain)g -Fo(g)p Fr(++)g Fv(tests.)49 b(T)-8 b(o)34 b(add)e(a)i(new)e(test,)j -(just)e(put)f(it)h(in)f(an)m(y)150 4380 y(directory)24 -b(\(create)j(an)e(en)m(tirely)f(new)g(directory)-8 b(,)27 -b(if)c(y)m(ou)j(wish\))d(whose)i(name)g(follo)m(ws)f(this)g(con)m(v)m -(en)m(tion.)275 4515 y(A)h(test)g(is)f(an)m(y)h(\014le)f(in)g(an)h -(appropriately)e(named)h(sub)s(directory)f(whose)i(name)g(ends)f(in)f -(`)p Fr(.exp)p Fv(')h(\(the)150 4624 y(con)m(v)m(en)m(tional)32 -b(w)m(a)m(y)h(of)f(naming)e Fr(expect)g Fv(scripts\).)44 -b(These)31 b(simple)f(naming)g(con)m(v)m(en)m(tions)j(mak)m(e)g(it)e -(as)150 4734 y(simple)25 b(as)j(p)s(ossible)c(to)k(install)e(new)g -(tests:)40 b(all)26 b(y)m(ou)i(m)m(ust)f(do)g(is)f(put)h(the)g(test)i -(in)d(the)h(righ)m(t)g(directory)-8 b(.)275 4868 y Fr(runtest)31 -b Fv(sorts)i(the)h(tests)g(in)e(eac)m(h)i(sub)s(directory)d(b)m(y)i -(name)h(\(using)e(the)h(Tcl)g Fr(lsort)f Fv(command\))150 -4978 y(and)e(runs)f(them)h(in)f(the)h(resulting)f(order.)p -eop -%%Page: 22 24 -22 23 bop 150 -116 a Fv(22)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fu(5.2)68 b(Initialization)48 -b(mo)t(dule)275 276 y Fv(The)35 b(initialization)d(mo)s(dule)i(\(or)i -(\\init)e(\014le"\))h(has)g(t)m(w)m(o)i(purp)s(oses:)49 -b(to)36 b(pro)m(vide)f(to)s(ol)h(and)e(target)150 385 -y(dep)s(enden)m(t)29 b(pro)s(cedures,)h(and)g(to)h(start)g(up)e(an)i -(in)m(teractiv)m(e)g(to)s(ol)f(to)h(the)g(p)s(oin)m(t)e(where)h(it)g -(is)g(ready)g(to)150 495 y(op)s(erate.)41 b(The)30 b(latter)g(includes) -d(establishing)h(comm)m(unications)h(with)g(the)h(target.)42 -b(All)28 b(the)j(tests)f(for)150 604 y(in)m(teractiv)m(e)24 -b(programs)e(assume)h(that)g(the)g(to)s(ol)g(is)f(already)h(running)d -(and)i(comm)m(unicating.)38 b(Initializa-)150 714 y(tion)30 -b(mo)s(dules)e(for)j(non-in)m(teractiv)m(e)g(programs)f(ma)m(y)h(only)e -(need)h(to)h(supply)d(the)j(supp)s(ort)d(functions.)275 -848 y(Eac)m(h)33 b(test)g(suite)f(directory)g(m)m(ust)h(con)m(tain)g -(\(in)e(its)h(`)p Fr(config)p Fv(')g(sub)s(directory\))f(a)i(separate)g -(initial-)150 958 y(ization)27 b(mo)s(dule)f(for)h(eac)m(h)h(target.)41 -b(The)27 b(appropriate)g(init)e(\014le)i(is)f(can)i(b)s(e)e(named)h -(sev)m(eral)h(w)m(a)m(ys.)40 b(The)150 1068 y(prefered)33 -b(name)h(is)f(the)i Fn(os)42 b Fv(part)34 b(of)g(the)g(canonical)g -(con\014guration)f(name)h(with)f Fr(.exp)g Fv(as)h(the)h(su\016x.)150 -1177 y(An)e(example)f(w)m(ould)g(b)s(e)h(that)g(for)g(an)g -Fr(m68k-coff)e Fv(system,)j(the)f Fr(target_os)e Fv(part)i(w)m(ould)e -(b)s(e)i Fr(coff)p Fv(.)150 1287 y(The)27 b(next)h(w)m(a)m(y)h(is)d -(for)i(system)g(where)f(there)h(are)g(short)f(\014lenames,)h(or)f(a)h -(shortcut)g(is)f(desired)f(to)i(refer)150 1396 y(to)j(the)g(OS)f(name)g -(for)g(that)h(target.)43 b(This)29 b(is)g(uses)h(the)h(v)-5 -b(alue)30 b(of)h Fr($target_abbrev)26 b Fv(rather)31 -b(than)f(the)150 1506 y Fr(target_os)p Fv(.)275 1641 -y(The)h(\014nal)h(\014le)f(lo)s(ok)m(ed)i(for)f(is)f(simply)f(`)p -Fr(default.exp)p Fv('.)45 b(If)31 b(there)i(is)f(only)f(one)i(op)s -(erating)f(system)150 1750 y(to)26 b(supp)s(ort,)f(then)f(this)g -(\014le)h(can)g(b)s(e)g(used.)38 b(It's)25 b(main)f(purp)s(ose)g(is)g -(to)i(o\013er)f(some)h(supp)s(ort)d(for)i(new)g(op-)150 -1860 y(erating)i(systems,)i(or)e(for)h(unsupp)s(orted)c(cross)k -(targets.)41 b(The)27 b(last)g(\014le)g(lo)s(ok)m(ed)g(for)h(is)e(`)p -Fr(unknown.exp)p Fv('.)150 1969 y(This)37 b(is)h(usually)f(limited)g -(to)j(error)e(handling)f(for)h(unsupp)s(orted)f(targets.)68 -b(It's)39 b(whole)f(con)m(ten)m(ts)j(is)150 2079 y(t)m(ypically)-8 -b(.)150 2158 y Fm(\013)p 200 2158 3554 4 v 3553 w(\010)p -150 2439 4 235 v 178 2311 a Fr(perror)46 b("Sorry,)g(there)g(is)i(no)f -(support)f(for)h(this)f(target")178 2414 y(exit)h(1)p -3803 2439 V 150 2491 a Fm(\012)p 200 2491 3554 4 v 3553 -w(\011)275 2636 y Fv(A)m(t)35 b(the)f(b)s(eginning)e(of)j(the)f(init)f -(\014le,)h(y)m(ou)h(m)m(ust)f(\014rst)g(determine)f(the)i(prop)s(er)e -(executable)i(name)150 2746 y(of)c(the)g(to)s(ol)g(to)h(execute,)h -(since)d(the)h(actual)h(name)f(of)g(the)g(to)s(ol)g(to)h(b)s(e)e -(tested)i(m)m(y)f(v)-5 b(ary)31 b(from)g(system)150 2855 -y(to)g(system.)41 b(Here's)31 b(an)f(example)g(for)g(the)h -Fo(GNU)g Fv(C)f(compiler.)150 2934 y Fm(\013)p 200 2934 -V 3553 w(\010)p 150 4365 4 1384 v 178 3087 a Fr(global)46 -b(AR)178 3191 y(#)i(look)e(for)h(the)g(archiver)f(ar)178 -3295 y(if)h(![info)f(exists)h(AR])f({)369 3398 y(set)h(AR)g([findfile)e -($base_dir/../../binutils/a)o(r)d($base_dir/../../binutils)o(/ar)f([tr) -178 3502 y(ansform)46 b(ar]])369 3606 y(verbose)g("AR)h(defaulting)e -(to)i($AR")g(2)178 3710 y(})178 3814 y(})178 4021 y(global)f(CFLAGS)178 -4125 y(if)h(![info)f(exists)h(CFLAGS])e(then)i({)369 -4229 y(set)g(CFLAGS)f("")178 4332 y(})p 3803 4365 V 150 -4417 a Fm(\012)p 200 4417 3554 4 v 3553 w(\011)275 4562 -y Fv(It)30 b(is)f(alw)m(a)m(ys)i(a)f(go)s(o)s(d)g(idea)g(to)h(\014rst)e -(c)m(hec)m(k)j(the)e(v)-5 b(ariable,)29 b(and)h(only)f(set)i(it)e(if)g -(it)h(has)g(not)g(y)m(et)i(b)s(een)150 4671 y(de\014ned.)39 -b(Often)31 b(the)f(prop)s(er)f(v)-5 b(alue)30 b(of)g -Fr(AR)g Fv(is)g(set)g(on)h(the)f(command)g(line)f(that)i(in)m(v)m(ok)m -(es)g(`)p Fr(runtest)p Fv('.)275 4806 y(The)c Fr(findfile)f -Fv(pro)s(cedure)h(tak)m(es)i(as)f(it's)g(\014rst)f(argumen)m(t)i(a)f -(\014le)f(name)h(to)h(lo)s(ok)f(for.)39 b(The)28 b(second)150 -4915 y(argumen)m(t)f(is)f(returned)g(if)g(the)h(\014le)f(is)f(found,)i -(and)f(the)h(third)e(argumen)m(t)i(is)f(returned)g(if)g(the)h(\014le)f -(is)g(not)150 5025 y(found.)39 b Fr(base_dir)29 b Fv(is)g(set)i(in)m -(ternally)d(b)m(y)i(DejaGn)m(u)i(to)f(the)f(top)h(lev)m(el)f(directory) -g(of)g(the)h(ob)5 b(ject)31 b(tree.)275 5160 y(The)42 -b Fr(transform)e Fv(pro)s(cedure)h(tak)m(es)j(as)f(its)f(argumen)m(t)h -(the)g(nativ)m(e)g(name)g(of)f(a)h(to)s(ol)g(\(suc)m(h)g(as)150 -5269 y(`)p Fr(gcc)p Fv(')c(for)h(the)f(compiler\),)i(and)e(returns)g -(the)h(name)f(as)h(con\014gured)f(for)g(that)i(to)s(ol)e(in)f(the)i -(curren)m(t)p eop -%%Page: 23 25 -23 24 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h -(Implemen)m(tation)1847 b(23)150 83 y(installation.)38 -b(\(F)-8 b(or)31 b(example,)e(a)h(cross-compiling)d(v)m(ersion)i(of)g -Fo(gnu)g Fv(CC)g(that)g(generates)i(MIPS)e(co)s(de)150 -193 y(ma)m(y)i(b)s(e)f(installed)e(with)h(a)i(name)f(lik)m(e)g -Fr(mips-idt-ecoff-gcc)p Fv(.\))275 327 y(In)j(a)h(test)h(running)c -(nativ)m(e,)36 b(writing)c(the)i(Tcl)f(co)s(de)h(for)g(initialization)d -(is)i(usually)e(quite)j(simple.)150 437 y(F)-8 b(or)23 -b(cross)e(con\014gurations,)i(ho)m(w)m(ev)m(er,)i(more)d(elab)s(orate)g -(instructions)e(are)i(usually)e(needed)h(to)i(describ)s(e)150 -546 y(ho)m(w)30 b(to)i(talk)e(to)h(a)g(remote)g(target.)275 -681 y(Eac)m(h)g(initialization)c(mo)s(dule)i(de\014nes)g(up)h(to)h -(four)f(pro)s(cedures)f(with)g(standard)h(names)g(and)g(pur-)150 -790 y(p)s(oses.)58 b(The)36 b(names)g(of)h(these)g(pro)s(cedures)e(b)s -(egin)f(with)h(`)p Fr($tool)p Fv(',)j(the)e(string)f(that)i(iden)m -(ti\014es)e(tests)150 900 y(for)j(a)h(particular)e(to)s(ol:)57 -b Fr($tool_start)p Fv(,)38 b Fr($tool_load)p Fv(,)g Fr($tool_exit)p -Fv(,)g(and)g Fr($tool_version)p Fv(.)61 b(F)-8 b(or)150 -1010 y(example,)28 b(the)f(start)h(pro)s(cedure)e(for)h -Fo(gdb)g Fv(is)g(called)f Fr(gdb_start)p Fv(.)37 b(\(Since)27 -b(start)h(pro)s(cedures)e(are)i(used)150 1119 y(di\013eren)m(tly)f(for) -g(batc)m(h)i(and)e(in)m(teractiv)m(e)i(to)s(ols,)f(ho)m(w)m(ev)m(er,)j -Fr(runtest)25 b Fv(itself)i(nev)m(er)h(calls)g(the)g(start)g(pro-)150 -1229 y(cedure.)40 b(Init)30 b(\014les)f(for)h(in)m(teractiv)m(e)h(to)s -(ols)g(are)f(exp)s(ected)h(to)g(end)f(b)m(y)g(running)e(the)i(start)h -(pro)s(cedure.\))275 1363 y(The)37 b(initialization)d(mo)s(dule)i(is)g -(also)i(a)g(go)s(o)s(d)f(place)g(to)i(call)d Fr(load_lib)g -Fv(to)i(get)h(an)m(y)e(collections)150 1473 y(of)c(utilit)m(y)f(pro)s -(cedures)f(mean)m(t)j(for)f(a)g(family)f(of)h(test)h(cases,)h(and)d(to) -i(set)f(up)f(default)g(v)-5 b(alues)33 b(for)g(an)m(y)150 -1582 y(additional)28 b(Tcl)i(v)-5 b(ariables)29 b(needed)h(for)g(a)h -(sp)s(eci\014c)e(set)i(of)f(tests.)275 1717 y(See)40 -b(Section)g(5.4)h([T)-8 b(arget)41 b(dep)s(enden)m(t)f(pro)s(cedures],) -h(page)g(31,)j(for)c(full)d(descriptions)h(of)i(these)150 -1826 y(pro)s(cedures.)150 2084 y Fu(5.3)68 b(DejaGn)l(u)45 -b(pro)t(cedures)275 2276 y Fv(DejaGn)m(u)40 b(pro)m(vides)e(these)i -(Tcl)e(pro)s(cedures)g(for)h(use)g(in)f(test)i(scripts.)66 -b(Y)-8 b(ou)40 b(can)f(also)h(use)f(an)m(y)150 2386 y(standard)29 -b Fr(expect)g Fv(or)h(Tcl)g(function.)39 b(These)30 b(pro)s(cedures)f -(are)i(stored)f(in)f(libraries,)f(whic)m(h)h(DejaGn)m(u)150 -2496 y(loads)i(at)h(run)m(time.)42 b(Here's)32 b(explanation)e(of)i -(the)f(library)e(pro)s(cedures)h(that)i(get)g(loaded)f(at)h(run)m -(time.)150 2605 y(All)d(other)i(librarys)c(are)k(optional,)f(and)g -(need)g(to)h(b)s(e)f(loaded)g(b)m(y)g(the)g(testsuite.)150 -2829 y Fi(5.3.1)63 b(Core)41 b(In)m(ternal)f(Pro)s(cedures)275 -3022 y Fv(See)30 b(Section)g(2.4)i([A)f(POSIX)e(conforming)g(test)j -(framew)m(ork],)f(page)g(6,)g(for)f(more)h(detailed)e(expla-)150 -3132 y(nations)h(of)g(the)h(test)g(outcomes)h(\(`)p Fr(FAIL)p -Fv(',)e(`)p Fr(PASS)p Fv(',)g(`)p Fr(UNTESTED)p Fv(',)f(`)p -Fr(UNRESOLVED)p Fv(',)f(`)p Fr(UNSUPPORTED)p Fv('\).)150 -3316 y Fr(perror)h(")p Fq(string)37 b(n)m(um)m(b)s(er)7 -b Fr(")630 3425 y Fv(Declares)28 b(a)g(sev)m(ere)g(error)f(in)f(the)h -(testing)h(framew)m(ork)f(itself.)39 b Fr(perror)25 b -Fv(writes)h(in)g(the)i(log)630 3535 y(\014les)j(a)i(message)h(b)s -(eginning)c(with)h(`)p Fr(ERROR)p Fv(',)h(app)s(ending)e(the)j(argumen) -m(t)g Fq(string)p Fv(.)46 b(If)32 b(the)630 3645 y(optional)25 -b Fq(n)m(um)m(b)s(er)32 b Fv(is)25 b(supplied,)f(then)i(this)f(is)g -(used)g(to)i(set)g(the)f(in)m(ternal)f(coun)m(t)i(of)f(errors)630 -3754 y(to)31 b(that)g(v)-5 b(alue.)630 3889 y(As)32 b(a)g(side)e -(e\013ect,)k Fr(perror)c Fv(also)i(c)m(hanges)h(the)e(e\013ect)j(of)e -(the)f(next)h Fr(pass)f Fv(or)h Fr(fail)e Fv(com-)630 -3998 y(mand:)50 b(the)36 b(test)h(outcome)f(b)s(ecomes)g(`)p -Fr(UNRESOLVED)p Fv(',)f(since)g(an)h(automatic)g(`)p -Fr(PASS)p Fv(')f(or)630 4108 y(`)p Fr(FAIL)p Fv(')d(cannot)h(b)s(e)f -(trusted)g(after)h(a)g(sev)m(ere)g(error)f(in)g(the)g(test)i(framew)m -(ork.)47 b(If)32 b(the)h(op-)630 4218 y(tional)d(n)m(umeric)g(v)-5 -b(alue)30 b(is)g(`)p Fr(0)p Fv(',)i(then)f(there)g(are)g(no)g(further)f -(side)g(e\013ects)i(to)g(calling)d(this)630 4327 y(function,)37 -b(and)f(the)g(follo)m(wing)f(test)i(outcome)h(do)s(esn't)e(b)s(ecome)h -(`)p Fr(UNRESOLVED)p Fv('.)57 b(This)630 4437 y(can)31 -b(b)s(e)e(used)h(for)g(errors)g(with)f(no)h(kno)m(wn)g(side)f -(e\013ects.)150 4621 y Fr(warning)f(")p Fq(string)37 -b(n)m(um)m(b)s(er)7 b Fr(")630 4731 y Fv(Declares)27 -b(detection)g(of)f(a)h(minor)e(error)g(in)g(the)i(test)g(case)g -(itself.)38 b Fr(warning)25 b Fv(writes)g(in)g(the)630 -4840 y(log)35 b(\014les)e(a)i(message)h(b)s(eginning)c(with)h(`)p -Fr(WARNING)p Fv(',)i(app)s(ending)d(the)j(argumen)m(t)g -Fq(string)p Fv(.)630 4950 y(Use)41 b Fr(warning)d Fv(rather)j(than)f -Fr(error)f Fv(for)i(cases)g(\(suc)m(h)g(as)f(comm)m(unication)g -(failure)f(to)630 5059 y(b)s(e)44 b(follo)m(w)m(ed)g(b)m(y)g(a)h -(retry\))g(where)f(the)g(test)i(case)f(can)g(reco)m(v)m(er)h(from)e -(the)h(error.)82 b(If)630 5169 y(the)34 b(optional)e -Fq(n)m(um)m(b)s(er)39 b Fv(is)33 b(supplied,)e(then)i(this)f(is)h(used) -g(to)h(set)g(the)f(in)m(ternal)g(coun)m(t)h(of)630 5279 -y(w)m(arnings)29 b(to)i(that)g(v)-5 b(alue.)p eop -%%Page: 24 26 -24 25 bop 150 -116 a Fv(24)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)630 83 y(As)32 b(a)g(side)f(e\013ect,) -k Fr(warning_threshold)27 b Fv(or)32 b(more)g(calls)f(to)i -Fr(warning)d Fv(in)h(a)h(single)f(test)630 193 y(case)k(also)e(c)m -(hanges)i(the)f(e\013ect)h(of)f(the)g(next)f Fr(pass)g -Fv(or)g Fr(fail)g Fv(command:)47 b(the)34 b(test)g(out-)630 -302 y(come)39 b(b)s(ecomes)f(`)p Fr(UNRESOLVED)p Fv(')e(since)h(an)h -(automatic)h(`)p Fr(PASS)p Fv(')e(or)h(`)p Fr(FAIL)p -Fv(')f(ma)m(y)h(not)h(b)s(e)630 412 y(trust)m(w)m(orth)m(y)j(after)f -(man)m(y)g(w)m(arnings.)71 b(If)41 b(the)g(optional)f(n)m(umeric)g(v)-5 -b(alue)40 b(is)g(`)p Fr(0)p Fv(',)k(then)630 521 y(there)32 -b(are)h(no)f(further)f(side)g(e\013ects)i(to)g(calling)e(this)g -(function,)h(and)f(the)h(follo)m(wing)f(test)630 631 -y(outcome)40 b(do)s(esn't)f(b)s(ecome)h(`)p Fr(UNRESOLVED)p -Fv('.)65 b(This)37 b(can)j(b)s(e)e(used)h(for)g(errors)f(with)g(no)630 -741 y(kno)m(wn)30 b(side)f(e\013ects.)150 923 y Fr(note)g(")p -Fq(string)8 b Fr(")630 1032 y Fv(App)s(ends)32 b(an)i(informational)e -(message)j(to)g(the)f(log)g(\014le.)51 b Fr(note)33 b -Fv(writes)g(in)g(the)h(log)g(\014les)630 1142 y(a)40 -b(message)g(b)s(eginning)d(with)h(`)p Fr(NOTE)p Fv(',)j(app)s(ending)c -(the)i(argumen)m(t)h Fq(string)p Fv(.)66 b(Use)40 b Fr(note)630 -1252 y Fv(sparingly)-8 b(.)40 b Fr(verbose)29 b Fv(should)f(b)s(e)j -(used)e(for)i(most)g(suc)m(h)f(messages,)i(but)e(in)g(cases)h(where)630 -1361 y(a)g(message)g(is)f(needed)g(in)f(the)h(log)h(\014le)e -(regardless)h(of)g(the)h(v)m(erb)s(osit)m(y)f(lev)m(el)g(use)g -Fr(note)p Fv(.)150 1543 y Fr(pass)f(")p Fq(string)8 b -Fr(")630 1653 y Fv(Declares)29 b(a)f(test)h(to)f(ha)m(v)m(e)h(passed.) -40 b Fr(pass)26 b Fv(writes)h(in)g(the)h(log)g(\014les)e(a)j(message)g -(b)s(eginning)630 1763 y(with)d(`)p Fr(PASS)p Fv(')g(\(or)h -Fr(XPASS)p Fv(,)g(if)f(failure)f(w)m(as)i(exp)s(ected\),)i(app)s -(ending)24 b(the)j(argumen)m(t)h Fq(string)p Fv(.)150 -1945 y Fr(fail)h(")p Fq(string)8 b Fr(")630 2055 y Fv(Declares)32 -b(a)f(test)h(to)g(ha)m(v)m(e)g(failed.)41 b Fr(fail)30 -b Fv(writes)g(in)g(the)h(log)g(\014les)f(a)i(message)g(b)s(eginning)630 -2164 y(with)26 b(`)p Fr(FAIL)p Fv(')g(\(or)h Fr(XFAIL)p -Fv(,)g(if)f(failure)f(w)m(as)i(exp)s(ected\),)i(app)s(ending)24 -b(the)j(argumen)m(t)h Fq(string)p Fv(.)150 2346 y Fr(unresolved)g(")p -Fq(string)8 b Fr(")630 2456 y Fv(Declares)35 b(a)f(test)h(to)g(ha)m(v)m -(e)h(an)e(unresolv)m(ed)f(outcome.)53 b Fr(unresolved)31 -b Fv(writes)j(in)e(the)j(log)630 2566 y(\014le)j(a)i(message)h(b)s -(eginning)36 b(with)i(`)p Fr(UNRESOLVED)p Fv(',)i(app)s(ending)c(the)k -(argumen)m(t)g Fq(string)p Fv(.)630 2675 y(This)33 b(usually)g(means)i -(the)g(test)h(did)d(not)j(execute)g(as)f(exp)s(ected,)i(and)e(a)g(h)m -(uman)f(b)s(eing)630 2785 y(m)m(ust)28 b(go)g(o)m(v)m(er)h(results)e -(to)i(determine)e(if)f(it)i(passed)f(or)h(failed)e(\(and)i(to)g(impro)m -(v)m(e)g(the)g(test)630 2894 y(case\).)150 3077 y Fr(untested)g(")p -Fq(string)8 b Fr(")630 3186 y Fv(Declares)25 b(a)g(test)g(w)m(as)f(not) -h(run.)37 b Fr(untested)22 b Fv(writes)h(in)g(the)h(log)g(\014le)g(a)g -(message)i(b)s(eginning)630 3296 y(with)31 b(`)p Fr(UNTESTED)p -Fv(',)g(app)s(ending)f(the)i(argumen)m(t)h Fq(string)p -Fv(.)45 b(F)-8 b(or)33 b(example,)g(y)m(ou)f(migh)m(t)g(use)630 -3405 y(this)c(in)g(a)h(dumm)m(y)f(test)i(whose)f(only)f(role)g(is)g(to) -i(record)f(that)h(a)f(test)h(do)s(es)f(not)g(y)m(et)h(exist)630 -3515 y(for)g(some)h(feature.)150 3697 y Fr(unsupported)c(")p -Fq(string)8 b Fr(")630 3807 y Fv(Declares)38 b(that)g(a)g(test)g(case)g -(dep)s(ends)e(on)h(some)h(facilit)m(y)e(that)i(do)s(es)f(not)h(exist)f -(in)f(the)630 3916 y(testing)h(en)m(vironmen)m(t.)58 -b Fr(unsupported)33 b Fv(writes)j(in)f(the)h(log)h(\014le)e(a)i -(message)h(b)s(eginning)630 4026 y(with)29 b(`)p Fr(UNSUPPORTED)p -Fv(',)f(app)s(ending)g(the)j(argumen)m(t)f Fq(string)p -Fv(.)150 4208 y Fr(get_warning_threshold)630 4318 y Fv(Returns)f(the)i -(curren)m(t)f(v)-5 b(alue)30 b(of)h Fr(warning_threshold)p -Fv(.)36 b(The)29 b(default)h(v)-5 b(alue)30 b(is)f(3.)150 -4500 y Fr(set_warning_threshold)c Fq(threshold)630 4610 -y Fv(Sets)f(the)h(v)-5 b(alue)23 b(of)i Fr(warning_threshold)p -Fv(.)34 b(A)24 b(v)-5 b(alue)24 b(of)g Fr(0)g Fv(disables)e(it:)38 -b(calls)23 b(to)i Fr(warning)630 4719 y Fv(will)j(not)i(turn)g(a)g(`)p -Fr(PASS)p Fv(')g(or)g(`)p Fr(FAIL)p Fv(')g(in)m(to)h(an)f(`)p -Fr(UNRESOLVED)p Fv('.)150 4902 y Fr(transform)e(")p Fq(to)s(olname)5 -b Fr(")630 5011 y Fv(Generates)39 b(a)f(string)f(for)h(the)g(name)g(of) -g(a)h(to)s(ol)e(as)i(it)e(w)m(as)h(con\014gured)g(and)f(installed,)630 -5121 y(giv)m(en)27 b(its)g(nativ)m(e)h(name)g(\(as)g(the)g(argumen)m(t) -f Fq(to)s(olname)5 b Fv(\).)41 b(This)25 b(mak)m(es)k(the)e(assumption) -630 5230 y(that)49 b(all)e(to)s(ols)h(are)g(installed)e(using)h(the)h -(same)h(naming)d(con)m(v)m(en)m(tions:)78 b(it)47 b(extrap-)630 -5340 y(olates)52 b(from)g(the)g(in)m(v)m(o)s(cation)f(name)h(for)g(`)p -Fr(runtest)p Fv('.)103 b(F)-8 b(or)53 b(example,)k(if)51 -b(y)m(ou)h(call)p eop -%%Page: 25 27 -25 26 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h -(Implemen)m(tation)1847 b(25)630 83 y Fr(runtest)52 b -Fv(as)i(`)p Fr(m68k-vxworks-runtest)p Fv(',)g(the)g(result)f(of)h(`)30 -b Fr(transform)e("gcc")h Fv(')54 b(is)630 193 y(`)p Fr -(m68k-vxworks-gcc)p Fv('.)150 377 y Fr(ishost)29 b(")p -Fq(host)r Fr(")630 487 y Fv(T)-8 b(ests)21 b(for)f(a)h(particular)d -Fn(host)31 b Fv(en)m(vironmen)m(t.)37 b(If)20 b(the)g(curren)m(tly)g -(con\014gured)f(host)i(matc)m(hes)630 596 y(the)34 b(argumen)m(t)g -(string,)f(the)h(result)e(is)h Fr(1)p Fv(;)i(otherwise)d(the)i(result)f -(is)f Fr(0)p Fv(.)50 b Fq(host)35 b Fv(m)m(ust)f(b)s(e)f(a)630 -706 y(full)22 b(three-part)j Fr(configure)d Fv(host)j(name;)h(in)e -(particular,)g(y)m(ou)h(ma)m(y)g(not)f(use)h(the)f(shorter)630 -815 y(nic)m(knames)f(supp)s(orted)f(b)m(y)i Fr(configure)d -Fv(\(but)i(y)m(ou)h(can)g(use)f(wildcard)f(c)m(haracters,)k(using)630 -925 y(shell)j(syn)m(tax,)i(to)g(sp)s(ecify)e(sets)i(of)f(names\).)150 -1109 y Fr(istarget)e(")p Fq(target)r Fr(")630 1219 y -Fv(T)-8 b(ests)40 b(for)g(a)g(particular)e Fn(tar)-5 -b(get)50 b Fv(en)m(vironmen)m(t.)69 b(If)39 b(the)h(curren)m(tly)f -(con\014gured)g(target)630 1328 y(matc)m(hes)c(the)g(argumen)m(t)f -(string,)h(the)f(result)f(is)g Fr(1)p Fv(;)j(otherwise)e(the)g(result)f -(is)h Fr(0)p Fv(.)51 b Fq(target)630 1438 y Fv(m)m(ust)35 -b(b)s(e)f(a)i(full)d(three-part)i Fr(configure)e Fv(target)j(name;)i -(in)c(particular,)h(y)m(ou)g(ma)m(y)h(not)630 1548 y(use)31 -b(the)g(shorter)g(nic)m(knames)f(supp)s(orted)g(b)m(y)h -Fr(configure)d Fv(\(but)j(y)m(ou)g(can)h(use)e(wildcard)630 -1657 y(c)m(haracters,)k(using)d(shell)f(syn)m(tax,)k(to)f(sp)s(ecify)d -(sets)j(of)f(names\).)46 b(If)32 b(it)g(is)f(passed)h(a)g -Fr(NULL)630 1767 y Fv(string,)e(then)g(it)g(returns)f(the)h(name)h(of)f -(the)h(build)c(canonical)j(con\014guration.)150 1951 -y Fr(isbuild)e(")p Fq(host)r Fr(")630 2061 y Fv(T)-8 -b(ests)33 b(for)f(a)h(particular)e Fn(build)k(host)42 -b Fv(en)m(vironmen)m(t.)47 b(If)32 b(the)h(curren)m(tly)e(con\014gured) -h(host)630 2170 y(matc)m(hes)40 b(the)f(argumen)m(t)g(string,)h(the)f -(result)e(is)h Fr(1)p Fv(;)k(otherwise)d(the)f(result)g(is)g -Fr(0)p Fv(.)65 b Fq(host)630 2280 y Fv(m)m(ust)40 b(b)s(e)g(a)h(full)e -(three-part)i Fr(configure)d Fv(host)j(name;)46 b(in)39 -b(particular,)j(y)m(ou)e(ma)m(y)i(not)630 2389 y(use)31 -b(the)g(shorter)g(nic)m(knames)f(supp)s(orted)g(b)m(y)h -Fr(configure)d Fv(\(but)j(y)m(ou)g(can)h(use)e(wildcard)630 -2499 y(c)m(haracters,)k(using)d(shell)f(syn)m(tax,)k(to)f(sp)s(ecify)d -(sets)j(of)f(names\).)46 b(If)32 b(it)g(is)f(passed)h(a)g -Fr(NULL)630 2609 y Fv(string,)e(then)g(it)g(returns)f(the)h(name)h(of)f -(the)h(build)c(canonical)j(con\014guration.)630 2743 -y(item)k(is3w)m(a)m(y)h Fr(")p Fq(host)r Fr(")f Fv(T)-8 -b(ests)34 b(for)g(a)h(canadian)f(cross.)52 b(This)33 -b(is)g(when)g(the)i(tests)g(will)d(b)s(e)630 2853 y(run)24 -b(on)h(a)h(remotly)f(hosted)h(cross)f(compiler.)38 b(If)25 -b(it)g(is)g(a)g(canadian)g(cross,)i(then)e(the)h(result)630 -2962 y(is)j Fr(1)p Fv(;)i(otherwise)e(the)i(result)e(is)h -Fr(0)p Fv(.)150 3147 y Fr(isnative)96 b Fv(T)-8 b(ests)28 -b(whether)e(the)h(curren)m(t)g(con\014guration)f(has)h(the)g(same)h -(host)f(and)f(target.)42 b(When)26 b(it)630 3256 y(runs)32 -b(in)g(a)h Fn(native)41 b Fv(con\014guration)32 b(this)g(pro)s(cedure)g -(returns)g(a)i Fr(1)p Fv(;)h(otherwise)d(it)h(returns)630 -3366 y(a)e Fr(0)p Fv(.)150 3550 y Fr(load_lib)d(")p Fq(library-\014le)5 -b Fr(")630 3660 y Fv(Loads)46 b(the)f(\014le)g Fq(library-\014le)j -Fv(b)m(y)d(searc)m(hing)g(a)h(\014xed)f(path)g(built)f(in)m(to)h -Fr(runtest)p Fv(.)84 b(If)630 3769 y(DejaGn)m(u)25 b(has)f(b)s(een)f -(installed,)h(it)f(lo)s(oks)h(in)f(a)h(path)g(starting)g(with)f(the)h -(installed)e(library)630 3879 y(directory)-8 b(.)39 b(If)26 -b(y)m(ou)g(are)h(running)c(DejaGn)m(u)k(directly)e(from)g(a)i(source)f -(directory)-8 b(,)27 b(without)630 3988 y(\014rst)39 -b(running)f(`)p Fr(make)29 b(install)p Fv(',)41 b(this)e(path)h -(defaults)g(to)g(the)h(curren)m(t)f(directory)-8 b(.)70 -b(In)630 4098 y(either)31 b(case,)i(it)e(then)h(lo)s(oks)f(in)f(the)i -(curren)m(t)f(directory)g(for)g(a)h(directory)f(called)g -Fr(lib)p Fv(.)43 b(If)630 4208 y(there)38 b(are)f(duplicate)g -(de\014nitions,)g(the)g(last)g(one)h(loaded)f(tak)m(es)i(precedence)f -(o)m(v)m(er)h(the)630 4317 y(earlier)29 b(ones.)150 4501 -y Fr(setup_xfail)e(")p Fq(con\014g)38 b Fv([)p Fq(bugid)t -Fv(])p Fr(")630 4611 y Fv(Declares)c(that)h(the)e(test)i(is)d(exp)s -(ected)j(to)f(fail)e(on)i(a)g(particular)e(set)i(of)f -(con\014gurations.)630 4721 y(The)f Fq(con\014g)40 b -Fv(argumen)m(t)32 b(m)m(ust)h(b)s(e)e(a)i(list)d(of)j(full)d -(three-part)i Fr(configure)e Fv(target)k(name;)630 4830 -y(in)28 b(particular,)h(y)m(ou)h(ma)m(y)g(not)g(use)f(the)h(shorter)g -(nic)m(knames)f(supp)s(orted)f(b)m(y)h Fr(configure)630 -4940 y Fv(\(but)22 b(y)m(ou)g(can)g(use)g(the)g(common)g(shell)f -(wildcard)e(c)m(haracters)24 b(to)e(sp)s(ecify)f(sets)h(of)g(names\).) -630 5049 y(The)33 b Fq(bugid)i Fv(argumen)m(t)f(is)f(optional,)h(and)f -(used)g(only)f(in)g(the)i(logging)g(\014le)e(output;)j(use)630 -5159 y(it)29 b(as)g(a)h(link)d(to)j(a)f(bug-trac)m(king)h(system)f(suc) -m(h)g(as)g Fo(gna)-6 b(ts)28 b Fv(\(see)i(section)g(\\Ov)m(erview")f -(in)630 5269 y Fq(T)-8 b(rac)m(king)31 b(Bugs)f(With)g(GNA)-8 -b(TS)5 b Fv(\).)p eop -%%Page: 26 28 -26 27 bop 150 -116 a Fv(26)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)630 83 y(Once)36 b(y)m(ou)g(use)f -Fr(setup_xfail)p Fv(,)f(the)i Fr(fail)e Fv(and)h Fr(pass)g -Fv(pro)s(cedures)f(pro)s(duce)h(the)h(mes-)630 193 y(sages)43 -b(`)p Fr(XFAIL)p Fv(')e(and)h(`)p Fr(XPASS)p Fv(')f(resp)s(ectiv)m(ely) --8 b(,)46 b(allo)m(wing)41 b(y)m(ou)h(to)h(distinguish)c(exp)s(ected) -630 302 y(failures)28 b(\(and)j(unexp)s(ected)e(success!\))42 -b(from)30 b(other)g(test)h(outcomes.)630 437 y Fn(Warning:)43 -b Fv(y)m(ou)25 b(m)m(ust)f(clear)h(the)f(exp)s(ected)h(failure)e(after) -i(using)e Fr(setup_xfail)e Fv(in)i(a)i(test)630 546 y(case.)41 -b(An)m(y)29 b(call)f(to)h Fr(pass)f Fv(or)h Fr(fail)e -Fv(clears)i(the)g(exp)s(ected)g(failure)e(implicitly;)e(if)j(the)h -(test)630 656 y(has)k(some)g(other)g(outcome,)i(e.g.)49 -b(an)32 b(error,)h(y)m(ou)h(can)f(call)f Fr(clear_xfail)d -Fv(to)34 b(clear)f(the)630 765 y(exp)s(ected)g(failure)f(explicitly)-8 -b(.)46 b(Otherwise,)33 b(the)g(exp)s(ected-failure)f(declaration)h -(applies)630 875 y(to)e(whatev)m(er)g(test)h(runs)c(next,)j(leading)e -(to)i(surprising)c(results.)150 1059 y Fr(clear_xfail)g -Fq(con\014g)630 1169 y Fv(Cancel)c(an)h(exp)s(ected)g(failure)d -(\(previously)h(declared)h(with)f Fr(setup_xfail)p Fv(\))f(for)i(a)h -(partic-)630 1279 y(ular)k(set)i(of)g(con\014gurations.)40 -b(The)29 b Fq(con\014g)37 b Fv(argumen)m(t)30 b(is)f(a)h(list)e(of)h -(con\014guration)g(target)630 1388 y(names.)68 b(It)40 -b(is)e(only)h(necessary)h(to)g(call)f Fr(clear_xfail)d -Fv(if)i(a)i(test)h(case)f(ends)f(without)630 1498 y(calling)29 -b(either)h Fr(pass)f Fv(or)h Fr(fail)p Fv(,)g(after)h(calling)e -Fr(setup_xfail)p Fv(.)150 1682 y Fr(verbose)f Fv([)p -Fr(-log)p Fv(])i([)p Fr(-n)p Fv(])g([)p Fr(--)p Fv(])h -Fr(")p Fq(string)8 b Fr(")28 b Fq(n)m(um)m(b)s(er)630 -1792 y Fv(T)-8 b(est)42 b(cases)g(can)f(use)g(this)g(function)e(to)j -(issue)e(helpful)f(messages)j(dep)s(ending)d(on)i(the)630 -1901 y(n)m(um)m(b)s(er)29 b(of)i(`)p Fr(--verbose)p Fv(')d(options)i -(on)g(the)h Fr(runtest)d Fv(command)i(line.)40 b(It)30 -b(prin)m(ts)f Fq(string)630 2011 y Fv(if)40 b(the)i(v)-5 -b(alue)41 b(of)h(the)g(v)-5 b(ariable)40 b Fr(verbose)f -Fv(is)i(higher)f(than)h(or)h(equal)f(to)h(the)g(optional)630 -2120 y Fq(n)m(um)m(b)s(er)p Fv(.)g(The)31 b(default)f(v)-5 -b(alue)31 b(for)g Fq(n)m(um)m(b)s(er)36 b Fv(is)31 b(1.)43 -b(Use)32 b(the)f(optional)g(`)p Fr(-log)p Fv(')f(argumen)m(t)630 -2230 y(to)k(cause)h Fq(string)40 b Fv(to)35 b(alw)m(a)m(ys)f(b)s(e)f -(added)g(to)i(the)f(log)f(\014le,)h(ev)m(en)h(if)d(it)i(w)m(on't)g(b)s -(e)f(prin)m(ted.)630 2340 y(Use)e(the)h(optional)e(`)p -Fr(-n)p Fv(')h(argumen)m(t)g(to)h(prin)m(t)e Fq(string)37 -b Fv(without)30 b(a)i(trailing)d(newline.)41 b(Use)630 -2449 y(the)31 b(optional)e(`)p Fr(--)p Fv(')h(argumen)m(t)h(if)f -Fq(string)37 b Fv(b)s(egins)28 b(with)i Fr(")p Fv(-)p -Fr(")p Fv(.)150 2698 y Fi(5.3.2)63 b(Remote)39 b(Comm)m(unication)h -(Pro)s(cedures)275 2891 y Fv(`)p Fr(lib/remote.exp)p -Fv(')c(de\014nes)i(these)i(functions,)g(for)g(establishing)d(and)i -(managing)g(comm)m(unica-)150 3000 y(tions:)275 3135 -y Fn(Pr)-5 b(o)g(c)g(e)g(dur)g(es)45 b(to)e(establish)h(a)f(c)-5 -b(onne)g(ction:)70 b Fv(Eac)m(h)42 b(of)g(these)f(pro)s(cedures)g -(tries)g(to)h(establish)e(the)150 3244 y(connection)31 -b(up)f(to)h(three)g(times)g(b)s(efore)f(returning.)40 -b(W)-8 b(arnings)31 b(\(if)f(retries)g(will)e(con)m(tin)m(ue\))k(or)e -(errors)150 3354 y(\(if)42 b(the)g(attempt)h(is)f(abandoned\))f(rep)s -(ort)h(on)g(comm)m(unication)g(failures.)74 b(The)42 -b(result)f(for)h(an)m(y)h(of)150 3464 y(these)31 b(pro)s(cedures)e(is)h -(either)g Fr(-1)p Fv(,)g(when)f(the)i(connection)g(cannot)g(b)s(e)f -(established,)f(or)h(the)h(spa)m(wn)f(ID)150 3573 y(returned)f(b)m(y)h -(the)h Fr(expect)e Fv(command)h Fr(spawn)p Fv(.)275 3708 -y(It)d(use)f(the)h(v)-5 b(alue)27 b(of)g(the)g Fr(connect)e -Fv(\014eld)g(in)h(the)h Fr(target_info)d Fv(arra)m(y)j(\(w)m(as)h -Fr(connectmode)c Fv(as)j(the)150 3817 y(t)m(yp)s(e)38 -b(of)g(connection)f(to)i(mak)m(e.)63 b(Curren)m(t)37 -b(supp)s(orted)f(connection)i(t)m(yp)s(es)f(are)h(tip,)h(k)m(ermit,)g -(telnet,)150 3927 y(rsh,)e(rlogin,)f(and)f(netdata.)59 -b(If)36 b(the)g Fr(--reboot)e Fv(option)h(w)m(as)i(used)e(on)h(the)g -(run)m(test)g(command)g(line,)150 4037 y(then)30 b(the)h(target)h(is)d -(reb)s(o)s(oted)h(b)s(efore)g(the)h(connection)f(is)g(made.)150 -4221 y Fr(remote_open)d Fq(t)m(yp)s(e)630 4330 y Fn(R)-5 -b(emote)40 b(Conne)-5 b(ction)41 b(Pr)-5 b(o)g(c)g(e)g(dur)g(e.)64 -b Fv(This)36 b(is)h(passed)g Fn(host)47 b Fv(or)38 b -Fn(tar)-5 b(get)p Fv(.)63 b(Host)39 b(or)e(target)630 -4440 y(refers)31 b(to)h(whether)f(it)g(is)f(a)i(connection)g(to)g(a)g -(remote)g(target,)h(or)f(a)g(remote)g(host.)44 b(This)630 -4550 y(op)s(ens)34 b(the)g(connection)h(to)g(the)g(desired)e(target)j -(or)e(host)h(using)e(the)i(default)e(v)-5 b(alues)34 -b(in)630 4659 y(the)25 b(con\014guration)f(system.)39 -b(It)25 b(returns)e(that)i Fr(spawn_id)e Fv(of)i(the)g(pro)s(cess)f -(that)h(manages)630 4769 y(the)32 b(connection.)46 b(This)30 -b(v)-5 b(alue)31 b(can)i(b)s(e)e(used)g(in)g Fr(expect)f -Fv(or)i Fr(exp_send)e Fv(statemen)m(ts,)k(or)630 4878 -y(passed)25 b(to)i(other)f(pro)s(cedures)e(that)i(need)g(the)g -(connection)g(pro)s(cess's)f(id.)38 b(This)24 b(also)i(sets)630 -4988 y(the)31 b Fr(fileid)d Fv(\014eld)h(in)g(the)i Fr(target_info)c -Fv(arra)m(y)-8 b(.)p eop -%%Page: 27 29 -27 28 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h -(Implemen)m(tation)1847 b(27)150 83 y Fr(remote_close)27 -b Fq(shellid)630 193 y Fn(shel)5 b(lid)42 b Fv(is)31 -b(v)-5 b(alue)31 b(returned)g(b)m(y)h(a)g(call)g(to)g -Fr(remote_open)p Fv(.)42 b(This)31 b(closes)h(the)g(connection)630 -302 y(to)c(the)g(target)h(so)f(resources)f(can)h(b)s(e)f(used)g(b)m(y)g -(others.)40 b(This)26 b(parameter)i(can)f(b)s(e)g(left)h(o\013)630 -412 y(if)h(the)i Fr(fileid)e Fv(\014eld)g(in)g(the)h -Fr(target_info)d Fv(arra)m(y)k(is)f(set.)150 596 y Fr(telnet)f -Fq(hostname)35 b(p)s(ort)150 706 y Fr(rlogin)29 b Fq(hostname)150 -815 y Fr(rsh)g Fq(hostname)630 925 y Fn(IP)d(network)g(pr)-5 -b(o)g(c)g(e)g(dur)g(es.)42 b Fq(hostname)28 b Fv(refers)23 -b(to)g(the)h(IP)e(address)h(or)g(name)g(\(for)g(example,)630 -1034 y(an)h(en)m(try)g(in)f(`)p Fr(/etc/hosts)p Fv('\))f(for)i(this)f -(target.)40 b(The)23 b(pro)s(cedure)g(names)h(re\015ect)h(the)f(Unix) -630 1144 y(utilit)m(y)29 b(used)h(to)i(establish)d(a)j(connection.)42 -b(The)31 b(optional)f Fq(p)s(ort)i Fv(is)e(used)g(to)i(sp)s(ecify)e -(the)630 1254 y(IP)35 b(p)s(ort)f(n)m(um)m(b)s(er.)53 -b(The)35 b(v)-5 b(alue)34 b(of)h(the)g Fr(netport)e Fv(\014eld)h(in)f -(the)j Fr(target_info)31 b Fv(arra)m(y)36 b(is)630 1363 -y(used.)64 b(\(w)m(as)40 b Fr($netport)p Fv(\))c(This)h(v)-5 -b(alue)38 b(has)g(t)m(w)m(o)i(parts,)h(the)d(hostname)h(and)f(the)h(p)s -(ort)630 1473 y(n)m(um)m(b)s(er,)26 b(sep)s(erated)g(b)m(y)g(a)h -Fn(:)p Fv(.)39 b(If)26 b Fr(host)f Fv(or)h Fr(target)f -Fv(is)g(used)h(in)f(the)h Fr(hostname)e Fv(\014eld,)i(than)630 -1582 y(the)31 b(con\014g)f(arra)m(y)h(is)e(used)h(for)g(all)f -(information.)150 1767 y Fr(tip)g Fq(p)s(ort)137 b Fn(Serial)29 -b(line)g(pr)-5 b(o)g(c)g(e)g(dur)g(e.)42 b Fv(Connect)26 -b(using)f(the)h(Unix)f(utilit)m(y)g Fr(tip)p Fv(.)38 -b Fq(p)s(ort)28 b Fv(m)m(ust)e(b)s(e)f(a)i(name)630 1876 -y(from)g(the)g Fr(tip)g Fv(con\014guration)g(\014le)f(`)p -Fr(/etc/remote)p Fv('.)37 b(Often,)28 b(this)e(is)h(called)f(`)p -Fr(hardwire)p Fv(',)630 1986 y(or)h(something)g(lik)m(e)g(`)p -Fr(ttya)p Fv('.)39 b(This)26 b(\014le)g(holds)g(all)h(the)g -(con\014guration)g(data)h(for)g(the)f(serial)630 2095 -y(p)s(ort.)61 b(The)37 b(v)-5 b(alue)37 b(of)h(the)f -Fr(serial)f Fv(\014eld)g(in)g(the)i Fr(target_info)c -Fv(arra)m(y)k(is)e(used.)61 b(\(w)m(as)630 2205 y Fr($serialport)p -Fv(\))24 b(If)i Fr(host)f Fv(or)h Fr(target)f Fv(is)g(used)h(in)f(the)i -Fr(port)e Fv(\014eld,)h(than)g(the)h(con\014g)f(arra)m(y)630 -2315 y(is)j(used)h(for)g(all)f(information.)150 2499 -y Fr(kermit)g Fq(p)s(ort)i(bps)630 2609 y Fn(Serial)39 -b(line)e(pr)-5 b(o)g(c)g(e)g(dur)g(e.)60 b Fv(Connect)36 -b(using)f(the)h(program)g Fr(kermit)p Fv(.)56 b Fq(p)s(ort)37 -b Fv(is)e(the)h(device)630 2718 y(name,)28 b(e.g.)40 -b(`)p Fr(/dev/ttyb)p Fv('.)e Fq(bps)29 b Fv(is)c(the)i(line)e(sp)s(eed) -g(to)j(use)e(\(in)g(bits)f(p)s(er)g(second\))i(for)g(the)630 -2828 y(connection.)59 b(The)36 b(v)-5 b(alue)36 b(of)h(the)f -Fr(serial)f Fv(\014eld)g(in)g(the)i Fr(target_info)c -Fv(arra)m(y)k(is)e(used.)630 2937 y(\(w)m(as)29 b Fr($serialport)p -Fv(\))d(If)i Fr(host)f Fv(or)h Fr(target)f Fv(is)h(used)f(in)g(the)i -Fr(port)e Fv(\014eld,)h(than)g(the)h(con\014g)630 3047 -y(arra)m(y)i(is)e(used)h(for)g(all)f(information.)150 -3206 y Fn(Pr)-5 b(o)g(c)g(e)g(dur)g(es)35 b(to)e(manage)h(a)f(c)-5 -b(onne)g(ction:)150 3391 y Fr(tip_download)27 b Fq(spa)m(wnid)32 -b(\014le)630 3500 y Fv(Do)m(wnload)25 b(`)p Fq(\014le)5 -b Fv(')24 b(to)i(the)f(pro)s(cess)f Fq(spa)m(wnid)j Fv(\(the)e(v)-5 -b(alue)24 b(returned)g(when)g(the)h(connection)630 3610 -y(w)m(as)42 b(established\),)h(using)d(the)h Fr(~put)g -Fv(command)g(under)f Fr(tip)p Fv(.)72 b(Most)43 b(often)f(used)e(for) -630 3719 y(single)29 b(b)s(oard)h(computers)g(that)h(require)e(do)m -(wnloading)g(programs)h(in)g Fo(asci)r(i)g Fv(S-records.)630 -3829 y(Returns)f Fr(1)h Fv(if)g(an)g(error)g(o)s(ccurs,)g -Fr(0)g Fv(otherwise.)150 4013 y Fr(exit_remote_shell)c -Fq(spa)m(wnid)630 4123 y Fv(Exits)34 b(a)g(remote)h(pro)s(cess)f -(started)h(b)m(y)f(an)m(y)h(of)g(the)f(connection)h(pro)s(cedures.)51 -b Fq(spa)m(wnid)630 4232 y Fv(is)29 b(the)i(result)e(of)i(the)f -(connection)h(pro)s(cedure)e(that)i(started)g(the)g(remote)g(pro)s -(cess.)150 4417 y Fr(download)d Fq(\014le)35 b Fv([)30 -b Fq(spa)m(wnid)i Fv(])630 4526 y(After)c(y)m(ou)h(establish)d(a)j -(connection)f(to)h(a)f(target,)j(y)m(ou)d(can)g(do)m(wnload)g(programs) -f(using)630 4636 y(this)39 b(command.)68 b Fr(download)38 -b Fv(reads)i(in)e Fq(\014le)44 b Fv(\(ob)5 b(ject)41 -b(co)s(de)f(in)f(S-record)g(format\))i(and)630 4746 y(writes)29 -b(it)g(to)h(the)g(device)g(con)m(trolling)e(this)h Fq(spa)m(wnid)p -Fv(.)38 b(\(F)-8 b(rom)31 b(the)f(p)s(oin)m(t)e(of)i(view)f(of)h(the) -630 4855 y(target,)i(the)f(S-record)f(\014le)f(comes)i(in)f(via)g -(standard)f(input.\))630 4990 y(If)38 b(y)m(ou)g(ha)m(v)m(e)i(more)e -(than)g(one)g(target)i(activ)m(e,)i(y)m(ou)c(can)h(use)f(the)g -(optional)f(argumen)m(t)630 5099 y Fq(spa)m(wnid)28 b -Fv(to)g(sp)s(ecify)d(an)h(alternativ)m(e)h(target)h(\(the)f(default)f -(is)g(the)g(most)h(recen)m(tly)g(estab-)630 5209 y(lished)h -Fq(spa)m(wnid)p Fv(.\))p eop -%%Page: 28 30 -28 29 bop 150 -116 a Fv(28)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fi(5.3.3)63 -b(Utilit)m(y)40 b(Pro)s(cedures)275 276 y Fv(`)p Fr(lib/utils.exp)p -Fv(')27 b(de\014nes)i(these)i(utilit)m(y)e(pro)s(cedures:)150 -460 y Fr(getdirs)f Fq(dir)150 570 y Fr(getdirs)g Fq(dir)36 -b(pattern)630 679 y Fv(Returns)21 b(a)h(list)e(of)i(all)f(the)h -(directories)e(in)h(the)h(single)e(directory)h Fq(dir)27 -b Fv(that)22 b(matc)m(h)h Fq(pattern)p Fv(.)630 789 y(If)31 -b(y)m(ou)g(do)g(not)g(sp)s(ecify)f Fq(pattern)p Fv(,)i -Fr(getdirs)d Fv(assumes)h(`)p Fr(*)p Fv('.)43 b(Y)-8 -b(ou)32 b(ma)m(y)g(use)e(the)i(common)630 898 y(shell)f(wildcard)f(c)m -(haracters)k(in)e Fq(pattern)p Fv(.)48 b(If)32 b(no)g(directories)g -(matc)m(h)i(the)f(pattern,)g(then)630 1008 y(a)e Fr(NULL)e -Fv(string)g(is)h(returned.)150 1192 y Fr(find)f Fq(dir)35 -b(pattern)630 1302 y Fv(Searc)m(h)42 b(for)f(\014les)f(whose)h(names)h -(matc)m(h)g Fq(pattern)g Fv(\(using)e(shell)f(wildcard)g(c)m(haracters) -630 1411 y(for)30 b(\014lename)g(expansion\).)41 b(Searc)m(h)31 -b(sub)s(directories)d(recursiv)m(ely)-8 b(,)31 b(starting)f(at)h -Fq(dir)p Fv(.)40 b(The)630 1521 y(result)g(is)g(the)i(list)e(of)h -(\014les)f(whose)h(names)g(matc)m(h;)48 b(if)40 b(no)h(\014les)f(matc)m -(h,)45 b(the)d(result)e(is)630 1631 y(empt)m(y)-8 b(.)54 -b(Filenames)34 b(in)f(the)h(result)g(include)e(all)h(in)m(terv)m(ening) -h(sub)s(directory)e(names.)53 b(If)630 1740 y(no)30 b(\014les)g(matc)m -(h)h(the)f(pattern,)h(then)f(a)h Fr(NULL)e Fv(string)h(is)f(returned.) -150 1924 y Fr(which)g Fq(binary)630 2034 y Fv(Searc)m(hes)43 -b(the)f(execution)g(path)g(for)g(an)g(executable)h(\014le)e -Fq(binary)p Fv(,)j(lik)m(e)d(the)h(the)h(BSD)630 2144 -y Fr(which)38 b Fv(utilit)m(y)-8 b(.)66 b(This)37 b(pro)s(cedure)i -(uses)f(the)i(shell)d(en)m(vironmen)m(t)i(v)-5 b(ariable)38 -b(`)p Fr(PATH)p Fv('.)67 b(It)630 2253 y(returns)32 b -Fr(0)g Fv(if)g(the)h(binary)e(is)h(not)h(in)e(the)i(path,)h(or)f(if)f -(there)h(is)e(no)i(`)p Fr(PATH)p Fv(')f(en)m(vironmen)m(t)630 -2363 y(v)-5 b(ariable.)40 b(If)29 b Fq(binary)37 b Fv(is)29 -b(in)g(the)i(path,)f(it)g(returns)f(the)i(full)d(path)i(to)h -Fq(binary)p Fv(.)150 2547 y Fr(grep)e Fq(\014lename)35 -b(regexp)150 2707 y Fr(grep)29 b Fq(\014lename)35 b(regexp)e -Fr(line)630 2816 y Fv(Searc)m(h)i(the)h(\014le)e(called)h -Fq(\014lename)k Fv(\(a)d(fully)d(sp)s(eci\014ed)g(path\))j(for)f(lines) -e(that)j(con)m(tain)g(a)630 2926 y(matc)m(h)i(for)g(regular)e -(expression)g Fq(regexp)p Fv(.)63 b(The)36 b(result)h(is)f(a)i(list)e -(of)i(all)e(the)i(lines)d(that)630 3035 y(matc)m(h.)54 -b(If)33 b(no)i(lines)d(matc)m(h,)37 b(the)d(result)f(is)h(an)g(empt)m -(y)h(string.)51 b(Sp)s(ecify)33 b Fq(regexp)k Fv(using)630 -3145 y(the)31 b(standard)e(regular)h(expression)f(st)m(yle)h(used)g(b)m -(y)g(the)h(Unix)e(utilit)m(y)g(program)h Fr(grep)p Fv(.)630 -3279 y(Use)f(the)f(optional)g(third)e(argumen)m(t)j(`)p -Fr(line)p Fv(')f(to)h(start)g(lines)d(in)h(the)i(result)e(with)g(the)i -(line)630 3389 y(n)m(um)m(b)s(er)35 b(in)g Fq(\014lename)p -Fv(.)58 b(\(This)35 b(argumen)m(t)i(is)f(simply)e(an)i(option)g -(\015ag;)k(t)m(yp)s(e)d(it)f(just)g(as)630 3499 y(sho)m(wn|`)p -Fr(line)p Fv('.\))150 3683 y Fr(diff)29 b Fq(\014lename)35 -b(\014lename)630 3792 y Fv(Compares)f(the)g(t)m(w)m(o)h(\014les)e(and)g -(returns)g(a)i(1)f(if)f(they)h(matc)m(h,)i(or)e(a)g(0)h(if)e(they)h -(don't.)51 b(If)630 3902 y Fr(verbose)28 b Fv(is)i(set,)h(then)f(it'll) -f(prin)m(t)g(the)h(di\013erences)g(to)h(the)g(screen.)150 -4086 y Fr(slay)e Fq(name)630 4196 y Fv(This)h(lo)s(ok)h(in)g(the)h(pro) -s(cess)f(tab)s(el)g(for)g Fq(name)37 b Fv(and)31 b(send)g(it)h(a)g -(unix)e Fr(SIGINT)p Fv(,)g(killing)f(the)630 4306 y(pro)s(cess.)150 -4490 y Fr(absolute)f Fq(path)630 4599 y Fv(This)h(pro)s(cedure)g(tak)m -(es)j(the)e(relativ)m(e)h Fq(path)p Fv(,)f(and)g(con)m(v)m(erts)i(it)e -(to)h(an)f(absolute)g(path.)150 4784 y Fr(psource)e Fq(\014lename)630 -4893 y Fv(This)23 b(sources)j(the)f(\014le)f Fq(\014lename)p -Fv(,)i(and)f(traps)g(all)f(errors.)38 b(It)26 b(also)f(ignores)f(all)g -(extraneous)630 5003 y(output.)40 b(If)30 b(there)h(w)m(as)g(an)f -(error)g(it)g(returns)f(a)i(1,)g(otherwise)e(it)h(returns)f(a)i(0.)p -eop -%%Page: 29 31 -29 30 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h -(Implemen)m(tation)1847 b(29)150 83 y Fr(prune)29 b Fq(list)i(pattern) -630 193 y Fv(Remo)m(v)m(e)37 b(elemen)m(ts)f(of)f(the)g(Tcl)g(list)f -Fq(list)p Fv(.)54 b(Elemen)m(ts)35 b(are)h(\014elds)d(delimited)g(b)m -(y)i(spaces.)630 302 y(The)29 b(result)f(is)g(a)h(cop)m(y)h(of)g -Fq(list)p Fv(,)e(without)g(an)m(y)h(elemen)m(ts)h(that)g(matc)m(h)g -Fq(pattern)p Fv(.)40 b(Y)-8 b(ou)30 b(can)630 412 y(use)g(the)h(common) -f(shell)f(wildcard)f(c)m(haracters)k(to)f(sp)s(ecify)e -Fq(pattern)p Fv(.)150 595 y Fr(setenv)g Fq(v)-5 b(ar)36 -b(v)-5 b(al)630 705 y Fv(Sets)30 b(the)h(v)-5 b(ariable)29 -b Fq(v)-5 b(ar)37 b Fv(to)31 b(the)g(v)-5 b(alue)29 b -Fq(v)-5 b(al)p Fv(.)150 888 y Fr(unsetenv)28 b Fq(v)-5 -b(ar)630 998 y Fv(Unsets)30 b(the)h(en)m(vironmen)m(t)f(v)-5 -b(ariable)29 b Fq(v)-5 b(ar)150 1181 y Fr(getenv)29 b -Fq(v)-5 b(ar)630 1291 y Fv(returns)39 b(the)i(v)-5 b(alue)40 -b(of)h Fq(v)-5 b(ar)47 b Fv(in)39 b(the)i(en)m(vironmen)m(t)f(if)f(it)h -(exists,)j(otherwise)d(it)g(returns)630 1400 y Fr(NULL)p -Fv(.)150 1584 y Fr(runtest_file_p)26 b Fq(run)m(tests)34 -b(testcase)630 1693 y Fv(Searc)m(h)d Fq(run)m(tests)j -Fv(for)c Fq(testcase)37 b Fv(and)30 b(return)g(1)g(if)g(found,)f(0)i -(if)e(not.)41 b Fq(run)m(tests)34 b Fv(is)c(a)h(list)e(of)630 -1803 y(t)m(w)m(o)i(elemen)m(ts.)41 b(The)30 b(\014rst)f(is)g(the)h -(pathname)g(of)g(the)g(testsuite)g(exp)s(ect)h(script)d(running.)630 -1912 y(The)g(second)h(is)f(a)i(cop)m(y)g(of)f(what)f(w)m(as)i(on)f(the) -g(righ)m(t)f(side)g(of)h(the)h Fr(=)e Fv(if)g(`)p Fr(foo.exp="...)m(")p -Fv(')630 2022 y(w)m(as)33 b(sp)s(eci\014ed,)f(or)h(an)f(empt)m(y)i -(string)d(if)h(no)h(suc)m(h)f(argumen)m(t)h(is)f(presen)m(t.)48 -b(This)31 b(is)h(used)630 2131 y(b)m(y)e(to)s(ols)g(lik)m(e)g -(compilers)f(where)h(eac)m(h)h(testcase)i(is)c(a)i(\014le.)150 -2315 y Fr(prune_system_crud)26 b Fq(system)k(text)630 -2424 y Fv(F)-8 b(or)30 b(system)f Fq(system)p Fv(,)h(delete)g(text)g -(the)g(host)f(or)g(target)i(op)s(erating)e(system)g(migh)m(t)g(issue) -630 2534 y(that)22 b(will)c(in)m(terfere)j(with)e(pattern)j(matc)m -(hing)f(of)g(program)g(output)f(in)g Fq(text)p Fv(.)39 -b(An)20 b(example)630 2644 y(is)29 b(the)i(message)g(that)g(is)f(prin)m -(ted)f(if)g(a)i(shared)e(library)f(is)i(out)g(of)h(date.)150 -2891 y Fi(5.3.4)63 b(Cross)41 b(target)g(pro)s(cedure)275 -3084 y Fv(`)p Fr(lib/target.exp)p Fv(')27 b(de\014nes)i(these)i(utilit) -m(y)e(pro)s(cedures:)150 3267 y Fr(push_target)e Fn(name)630 -3377 y Fv(This)22 b(mak)m(es)j(the)f(target)h(named)e -Fn(name)31 b Fv(b)s(e)24 b(the)g(curren)m(t)f(target)i(connection.)39 -b(The)23 b(v)-5 b(alue)630 3486 y(of)30 b Fn(name)38 -b Fv(is)29 b(an)h(index)f(in)m(to)h(the)g Fr(target_info)d -Fv(arra)m(y)k(and)e(is)g(set)i(in)e(the)h(global)g(con\014g)630 -3596 y(\014le.)150 3779 y Fr(pop_target)630 3889 y Fv(This)f(unsets)g -(the)i(curren)m(t)f(target)i(connection.)150 4072 y Fr(list_targets)630 -4182 y Fv(This)d(lists)f(all)i(the)g(supp)s(orted)f(targets)j(for)e -(this)f(arc)m(hitecture.)150 4365 y Fr(push_host)f Fn(name)630 -4475 y Fv(This)g(mak)m(es)j(the)g(host)f(named)g Fn(name)37 -b Fv(b)s(e)30 b(the)g(curren)m(t)g(remote)h(host)g(connection.)40 -b(The)630 4584 y(v)-5 b(alue)31 b(of)i Fn(name)39 b Fv(is)31 -b(an)h(index)e(in)m(to)i(the)h Fr(target_info)28 b Fv(arra)m(y)33 -b(and)e(is)g(set)i(in)d(the)j(global)630 4694 y(con\014g)e(\014le.)150 -4877 y Fr(pop_host)96 b Fv(This)29 b(unsets)g(the)i(curren)m(t)f(host)h -(connection.)630 5011 y(This)f(in)m(v)m(ok)m(es)i(the)f(compiler)f(as)i -(set)g(b)m(y)f Fr(CC)g Fv(to)h(compile)e(the)i(\014le)e -Fn(\014le)p Fv(.)44 b(The)31 b(default)g(op-)630 5121 -y(tions)24 b(for)h(man)m(y)g(cross)g(compilation)f(targets)i(are)f -Fn(guesse)-5 b(d)35 b Fv(b)m(y)25 b(DejaGn)m(u,)i(and)d(these)i(op-)630 -5230 y(tions)g(can)h(b)s(e)f(added)h(to)g(b)m(y)g(passing)e(in)h(more)h -(parameters)g(as)g(argumen)m(ts)g(to)h Fr(compile)p Fv(.)630 -5340 y(Optionally)-8 b(,)32 b(this)f(will)f(also)j(use)g(the)g(v)-5 -b(alue)32 b(of)h(the)g Fr(cflags)e Fv(\014eld)g(in)g(the)i(target)i -(con\014g)p eop -%%Page: 30 32 -30 31 bop 150 -116 a Fv(30)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)630 83 y(arra)m(y)g(.)43 -b(If)31 b(the)g(host)g(is)f(not)h(the)g(same)h(as)f(the)g(build)d(mac)m -(hines,)j(then)g(then)f(compiler)g(is)630 193 y(run)f(on)h(the)h -(remote)g(host)g(using)d Fr(execute_anywhere)p Fv(.)630 -324 y(This)k(pro)s(duces)g(an)i(arc)m(hiv)m(e)g(\014le.)50 -b(An)m(y)34 b(parameters)g(passed)f(to)h Fr(archive)e -Fv(are)i(used)f(in)630 434 y(addition)39 b(to)j(the)g(default)e -(\015ags.)74 b(Optionally)-8 b(,)42 b(this)e(will)f(also)i(use)g(the)h -(v)-5 b(alue)40 b(of)i(the)630 544 y Fr(arflags)d Fv(\014eld)g(in)h -(the)h(target)i(con\014g)e(arra)m(y)-8 b(.)73 b(If)41 -b(the)g(host)g(is)f(not)h(the)g(same)h(as)f(the)630 653 -y(build)31 b(mac)m(hines,)k(then)f(then)g(arc)m(hiv)m(er)h(is)e(run)g -(on)h(the)h(remote)g(host)f(using)f Fr(execute_)630 763 -y(anywhere)p Fv(.)630 895 y(This)28 b(generates)j(an)f(index)e(for)h -(the)h(arc)m(hiv)m(e)g(\014le)f(for)h(systems)f(that)i(aren't)f(POSIX)f -(y)m(et.)630 1004 y(An)m(y)h(parameters)h(passed)f(to)h -Fr(ranlib)e Fv(are)i(used)e(in)g(for)h(the)h(\015ags.)150 -1180 y Fr(execute_anywhere)26 b Fn(cmd)5 b(line)630 1290 -y Fv(This)36 b(executes)j(the)f Fn(cmd)5 b(line)45 b -Fv(on)37 b(the)h(prop)s(er)f(host.)63 b(This)36 b(should)f(b)s(e)j -(used)f(as)h(a)g(re-)630 1399 y(placemen)m(t)c(for)e(the)i(Tcl)e -(command)h Fr(exec)f Fv(as)h(this)f(v)m(ersion)h(utilizes)e(the)i -(target)i(con\014g)630 1509 y(info)25 b(to)h(execute)h(this)d(command)i -(on)f(the)h(build)d(mac)m(hine)i(or)h(a)g(remote)g(host.)39 -b(All)25 b(con\014g)630 1619 y(information)k(for)i(the)g(remote)h(host) -f(m)m(ust)g(b)s(e)f(setup)h(to)g(ha)m(v)m(e)h(this)e(command)h(w)m -(ork.)42 b(If)630 1728 y(this)25 b(is)g(a)h(canadian)g(cross,)h -(\(where)f(w)m(e)g(test)h(a)g(cross)f(compiler)e(that)j(runs)d(on)i(a)g -(di\013eren)m(t)630 1838 y(host)k(then)f(where)h(DejaGn)m(u)g(is)f -(running\))e(then)j(a)g(connection)g(is)f(made)h(to)g(the)g(remote)630 -1947 y(host)39 b(and)e(the)i(command)f(is)g(executed)h(there.)65 -b(It)39 b(returns)e(either)h Fn(REMOTERR)n(OR)630 2057 -y Fv(\(for)32 b(an)h(error\))f(or)g(the)h(output)e(pro)s(duced)g(when)g -(the)i(command)f(w)m(as)g(executed.)48 b(This)630 2167 -y(is)29 b(used)h(for)g(running)e(the)i(to)s(ol)h(to)g(b)s(e)f(tested,)h -(not)g(a)f(test)i(case.)150 2383 y Fi(5.3.5)63 b(Debugging)42 -b(Pro)s(cedures)275 2573 y Fv(`)p Fr(lib/debugger.exp)p -Fv(')26 b(de\014nes)j(these)i(utilit)m(y)e(pro)s(cedures:)150 -2749 y Fr(dumpvars)f Fn(expr)630 2858 y Fv(This)33 b(tak)m(es)k(a)f -(csh)f(st)m(yle)g(regular)g(expression)f(\(glob)h(rules\))f(and)h(prin) -m(ts)f(the)h(v)-5 b(alues)35 b(of)630 2968 y(the)c(global)e(v)-5 -b(ariable)29 b(names)i(that)g(matc)m(h.)41 b(It)31 b(is)e(abbreviated)h -(as)h Fr(dv)150 3144 y(dumplocals)d Fn(expr)630 3254 -y Fv(This)33 b(tak)m(es)k(a)f(csh)f(st)m(yle)g(regular)g(expression)f -(\(glob)h(rules\))f(and)h(prin)m(ts)f(the)h(v)-5 b(alues)35 -b(of)630 3363 y(the)c(lo)s(cal)e(v)-5 b(ariable)29 b(names)i(that)g -(matc)m(h.)41 b(It)31 b(is)e(abbreviated)h(as)g Fr(dl)p -Fv(.)150 3539 y Fr(dumprocs)e Fn(expr)630 3649 y Fv(This)f(tak)m(es)j -(a)g(csh)e(st)m(yle)h(regular)f(expression)g(\(glob)h(rules\))e(and)h -(prin)m(ts)g(the)h(b)s(o)s(dy)e(of)i(all)630 3759 y(pro)s(cs)h(that)h -(matc)m(h.)41 b(It)31 b(is)e(abbreviated)h(as)g Fr(dp)150 -3935 y(dumpwatch)e Fn(expr)630 4044 y Fv(This)i(tak)m(es)j(a)f(csh)g -(st)m(yle)g(regular)f(expression)g(\(glob)g(rules\))g(and)g(prin)m(ts)g -(all)f(the)i(w)m(atc)m(h-)630 4154 y(p)s(oin)m(ts.)40 -b(It)30 b(is)f(abbreviated)h(as)h Fr(dw)p Fv(.)150 4330 -y Fr(watchunset)d Fn(var)630 4440 y Fv(This)22 b(breaks)i(program)f -(execution)i(when)d(the)j(v)-5 b(ariable)22 b Fn(var)35 -b Fv(is)22 b(unset.)39 b(It)24 b(is)f(abbreviated)630 -4549 y(as)31 b Fr(wu)p Fv(.)150 4725 y Fr(watchwrite)d -Fn(var)630 4835 y Fv(This)g(breaks)h(program)h(execution)g(when)f(the)g -(v)-5 b(ariable)29 b Fn(var)40 b Fv(is)29 b(written.)39 -b(It)30 b(is)f(abbrevi-)630 4945 y(ated)i(as)g Fr(ww)p -Fv(.)150 5121 y Fr(watchread)d Fn(var)630 5230 y Fv(This)e(breaks)h -(program)g(execution)h(when)e(the)i(v)-5 b(ariable)26 -b Fn(var)38 b Fv(is)27 b(read.)39 b(It)28 b(is)f(abbreviated)630 -5340 y(as)k Fr(wr)p Fv(.)p eop -%%Page: 31 33 -31 32 bop 150 -116 a Fv(Chapter)30 b(5:)h(The)f(DejaGn)m(u)h(Implemen)m -(tation)1857 b(31)150 83 y Fr(watchdel)28 b Fn(watch)630 -193 y Fv(This)h(deletes)h(a)h(the)f(w)m(atc)m(hp)s(oin)m(t)h(for)f -Fn(watch)p Fv(.)42 b(It)31 b(is)e(abbreviated)h(as)g -Fr(wd)p Fv(.)150 372 y Fr(print)f Fn(var)85 b Fv(This)29 -b(prin)m(ts)f(the)j(v)-5 b(alue)30 b(of)g(the)h(v)-5 -b(ariable)29 b Fn(var)p Fv(.)41 b(It)31 b(is)e(abbreviated)h(as)h -Fr(p)p Fv(.)150 552 y Fr(quit)288 b Fv(This)29 b(mak)m(es)i(run)m(test) -f(exit.)41 b(It)30 b(is)g(abbreviated)f(as)i Fr(q)p Fv(.)150 -732 y Fr(bt)384 b Fv(This)29 b(prin)m(ts)f(a)j(bac)m(ktrace)i(of)d(the) -h(executed)g(Tcl)f(commands.)150 985 y Fu(5.4)68 b(T)-11 -b(arget)45 b(dep)t(enden)l(t)g(pro)t(cedures)275 1176 -y Fv(Eac)m(h)37 b(com)m(bination)e(of)i(target)h(and)e(to)s(ol)g -(requires)f(some)i(target-dep)s(enden)m(t)g(pro)s(cedures.)57 -b(The)150 1286 y(names)24 b(of)f(these)h(pro)s(cedures)f(ha)m(v)m(e)h -(a)g(common)g(form:)37 b(the)24 b(to)s(ol)f(name,)j(follo)m(w)m(ed)d(b) -m(y)g(an)h(underbar)e(`)p Fr(_)p Fv(',)150 1396 y(and)k(\014nally)e(a)j -(su\016x)e(describing)f(the)i(pro)s(cedure's)g(purp)s(ose.)37 -b(F)-8 b(or)27 b(example,)h(a)e(pro)s(cedure)f(to)i(extract)150 -1505 y(the)45 b(v)m(ersion)g(from)g Fo(gdb)g Fv(is)f(called)h(`)p -Fr(gdb_version)p Fv('.)83 b(See)45 b(Section)g(5.2)h([Initialization)e -(Mo)s(dule],)150 1615 y(page)39 b(22,)i(for)d(a)h(discussion)c(of)k(ho) -m(w)f(DejaGn)m(u)h(arranges)f(to)h(\014nd)e(the)h(righ)m(t)g(pro)s -(cedures)f(for)h(eac)m(h)150 1724 y(target.)275 1857 -y Fr(runtest)e Fv(itself)i(calls)f(only)h(t)m(w)m(o)i(of)f(these)g(pro) -s(cedures,)g Fq(to)s(ol)t Fr(_exit)e Fv(and)h Fq(to)s(ol)t -Fr(_version)p Fv(;)i(these)150 1967 y(pro)s(cedures)29 -b(use)h(no)g(argumen)m(ts.)275 2100 y(The)f(other)i(t)m(w)m(o)h(pro)s -(cedures,)d Fq(to)s(ol)t Fr(_start)g Fv(and)h Fq(to)s(ol)t -Fr(_load)p Fv(,)e(are)j(only)f(called)f(b)m(y)i(the)f(test)i(suites)150 -2209 y(themselv)m(es)38 b(\(or)f(b)m(y)h(testsuite-sp)s(eci\014c)f -(initialization)d(co)s(de\);)42 b(they)37 b(ma)m(y)h(tak)m(e)h(argumen) -m(ts)f(or)f(not,)150 2319 y(dep)s(ending)28 b(on)i(the)h(con)m(v)m(en)m -(tions)g(used)f(within)e(eac)m(h)j(test)g(suite.)150 -2499 y Fq(to)s(ol)t Fr(_start)630 2609 y Fv(Starts)22 -b(a)g(particular)e(to)s(ol.)37 b(F)-8 b(or)23 b(an)e(in)m(teractiv)m(e) -i(to)s(ol,)g Fq(to)s(ol)t Fr(_start)d Fv(starts)i(and)f(initializes)630 -2718 y(the)28 b(to)s(ol,)h(lea)m(ving)f(the)g(to)s(ol)g(up)f(and)h -(running)d(for)j(the)g(test)h(cases;)h(an)e(example)g(is)f -Fr(gdb_)630 2828 y(start)p Fv(,)41 b(the)f(start)h(function)d(for)i -Fo(gdb)p Fv(.)69 b(F)-8 b(or)40 b(a)g(batc)m(h)h(orien)m(ted)f(to)s -(ol,)i Fq(to)s(ol)t Fr(_start)c Fv(is)630 2937 y(optional;)26 -b(the)e(recommended)g(con)m(v)m(en)m(tion)h(is)e(to)i(let)f -Fq(to)s(ol)t Fr(_start)f Fv(run)f(the)j(to)s(ol,)g(lea)m(ving)630 -3047 y(the)41 b(output)f(in)g(a)h(v)-5 b(ariable)40 b(called)g -Fr(comp_output)p Fv(.)69 b(T)-8 b(est)41 b(scripts)f(can)h(then)g -(analyze)630 3156 y(`)p Fr($comp_output)p Fv(')29 b(to)k(determine)e -(the)h(test)g(results.)44 b(An)32 b(example)f(of)h(this)f(second)h -(kind)630 3266 y(of)f(start)f(function)g(is)f Fr(gcc_start)p -Fv(,)f(the)j(start)g(function)e(for)h Fo(gcc)p Fv(.)630 -3399 y Fr(runtest)18 b Fv(itself)h Fn(do)-5 b(es)25 b(not)f(c)-5 -b(al)5 b(l)30 b Fq(to)s(ol)t Fr(_start)p Fv(.)36 b(The)19 -b(initialization)e(mo)s(dule)i(`)p Fq(to)s(ol)t Fr(_init.exp)p -Fv(')630 3509 y(m)m(ust)35 b(call)f Fq(to)s(ol)t Fr(_start)f -Fv(for)i(in)m(teractiv)m(e)h(to)s(ols;)h(for)e(batc)m(h-orien)m(ted)h -(to)s(ols,)g(eac)m(h)g(indi-)630 3618 y(vidual)i(test)k(script)d(calls) -h Fq(to)s(ol)t Fr(_start)e Fv(\(or)j(mak)m(es)g(other)g(arrangemen)m -(ts)g(to)h(run)d(the)630 3728 y(to)s(ol\).)150 3908 y -Fq(to)s(ol)t Fr(_load)82 b Fv(Loads)25 b(something)f(in)m(to)h(a)g(to)s -(ol.)39 b(F)-8 b(or)26 b(an)e(in)m(teractiv)m(e)i(to)s(ol,)g(this)e -(conditions)f(the)i(to)s(ol)g(for)630 4017 y(a)35 b(particular)e(test)i -(case;)j(for)d(example,)g Fr(gdb_load)e Fv(loads)h(a)h(new)f -(executable)h(\014le)f(in)m(to)630 4127 y(the)24 b(debugger.)39 -b(F)-8 b(or)24 b(batc)m(h)h(orien)m(ted)f(to)s(ols,)h -Fq(to)s(ol)t Fr(_load)d Fv(ma)m(y)j(do)f(nothing|though,)g(for)630 -4237 y(example,)h(the)f Fo(gcc)g Fv(supp)s(ort)e(uses)h -Fr(gcc_load)f Fv(to)j(load)e(and)h(run)e(a)i(binary)e(on)i(the)g -(target)630 4346 y(en)m(vironmen)m(t.)61 b(Con)m(v)m(en)m(tionally)-8 -b(,)39 b Fq(to)s(ol)t Fr(_load)d Fv(lea)m(v)m(es)j(the)e(output)g(of)h -(an)m(y)f(program)g(it)630 4456 y(runs)f(in)h(a)h(v)-5 -b(ariable)36 b(called)h(`)p Fr(exec_output)p Fv('.)61 -b(W)-8 b(riting)37 b Fq(to)s(ol)t Fr(_load)e Fv(can)k(b)s(e)e(the)h -(most)630 4565 y(complex)27 b(part)g(of)g(extending)g(DejaGn)m(u)h(to)f -(a)h(new)f(to)s(ol)g(or)g(a)g(new)g(target,)j(if)c(it)g(requires)630 -4675 y(m)m(uc)m(h)k(comm)m(unication)g(co)s(ding)g(or)g(\014le)f(do)m -(wnloading.)630 4808 y(T)-8 b(est)31 b(scripts)e(call)h -Fq(to)s(ol)t Fr(_load)p Fv(.)150 4988 y Fq(to)s(ol)t -Fr(_exit)82 b Fv(Cleans)33 b(up)g(\(if)h(necessary\))h(b)s(efore)f -Fr(runtest)e Fv(exits.)52 b(F)-8 b(or)35 b(in)m(teractiv)m(e)g(to)s -(ols,)g(this)e(usu-)630 5097 y(ally)38 b(ends)f(the)i(in)m(teractiv)m -(e)h(session.)65 b(Y)-8 b(ou)39 b(can)g(also)g(use)f -Fq(to)s(ol)t Fr(_exit)f Fv(to)i(remo)m(v)m(e)i(an)m(y)630 -5207 y(temp)s(orary)30 b(\014les)f(left)h(o)m(v)m(er)i(from)e(the)h -(tests.)630 5340 y Fr(runtest)d Fv(calls)i Fq(to)s(ol)t -Fr(_exit)p Fv(.)p eop -%%Page: 32 34 -32 33 bop 150 -116 a Fv(32)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fq(to)s(ol)t -Fr(_version)630 193 y Fv(Prin)m(ts)36 b(the)i(v)m(ersion)e(lab)s(el)g -(and)h(n)m(um)m(b)s(er)f(for)h Fq(to)s(ol)p Fv(.)61 b(This)36 -b(is)g(called)g(b)m(y)i(the)f(DejaGn)m(u)630 302 y(pro)s(cedure)31 -b(that)i(prin)m(ts)e(the)i(\014nal)e(summary)h(rep)s(ort.)46 -b(The)32 b(output)g(should)f(consist)h(of)630 412 y(the)f(full)d(path)i -(name)g(used)g(for)g(the)g(tested)i(to)s(ol,)e(and)g(its)g(v)m(ersion)g -(n)m(um)m(b)s(er.)630 546 y Fr(runtest)e Fv(calls)i Fq(to)s(ol)t -Fr(_version)p Fv(.)275 706 y(The)h(usual)g(con)m(v)m(en)m(tion)i(for)f -(return)f(co)s(des)h(from)g(an)m(y)g(of)h(these)f(pro)s(cedures)f -(\(although)h(it)g(is)f(not)150 815 y(required)25 b(b)m(y)i -Fr(runtest)p Fv(\))f(is)g(to)h(return)f Fr(0)h Fv(if)f(the)h(pro)s -(cedure)f(succeeded,)i Fr(1)f Fv(if)f(it)g(failed,)h(and)f -Fr(-1)h Fv(if)f(there)150 925 y(w)m(as)31 b(a)g(comm)m(unication)e -(error.)150 1182 y Fu(5.5)68 b(Remote)47 b(targets)f(supp)t(orted)275 -1375 y Fv(The)35 b(DejaGn)m(u)j(distribution)33 b(includes)h(supp)s -(ort)g(for)i(the)h(follo)m(wing)e(remote)i(targets.)61 -b(Y)-8 b(ou)37 b(can)150 1484 y(set)f(the)f(target)h(name)f(and)g(the)g -(connect)h(mo)s(de)f(in)e(the)j(`)p Fr(site.exp)p Fv(')d(\014le)h -(\(using)g(the)h(Tcl)f(v)-5 b(ariables)150 1594 y(`)p -Fr(targetname)p Fv(')37 b(and)h(`)p Fr(connectmode)p -Fv(',)h(resp)s(ectiv)m(ely\),)i(or)e(on)g(the)g Fr(runtest)e -Fv(command)i(line)e(\(using)150 1704 y(`)p Fr(--name)p -Fv(')29 b(and)h(`)p Fr(--connect)p Fv('\).)150 1863 y -Fo(amd)g Fh(29000,)j(with)d(UDI)g(proto)s(col)630 1973 -y Fv(Con\014gure)e(DejaGn)m(u)h(for)g(target)h(`)p Fr(a29k-amd-udi)p -Fv('.)37 b(\(Cygn)m(us)29 b Fr(configure)d Fv(also)i(recog-)630 -2082 y(nizes)36 b(the)g(abbreviation)f(`)p Fr(udi29k)p -Fv('.\))58 b(Then,)37 b(to)g(run)e(tests,)k(use)d(the)g -Fr(runtest)e Fv(target)630 2192 y(name)29 b(to)g(sp)s(ecify)e(whether)h -(y)m(ou)h(w)m(an)m(t)h(to)f(use)g(a)g(sim)m(ulator,)f(or)g(a)h -(particular)e(hardw)m(are)630 2301 y(b)s(oard.)67 b(The)38 -b(particular)g(string)g(to)i(use)g(with)e(`)p Fr(--name)p -Fv(')g(will)e(dep)s(end)i(on)h(y)m(our)h(UDI)630 2411 -y(setup)d(\014le,)j(`)p Fr(udi_soc)p Fv(')c(\(if)h(`)p -Fr(udi_soc)p Fv(')f(is)h(not)i(in)d(y)m(our)i(w)m(orking)f(directory)-8 -b(,)40 b(the)e(en)m(vi-)630 2521 y(ronmen)m(t)31 b(v)-5 -b(ariable)29 b(`)p Fr(UDICONF)p Fv(')g(should)g(con)m(tain)h(a)h(path)g -(to)g(this)e(\014le\).)41 b(F)-8 b(or)31 b(example,)g(if)630 -2630 y(y)m(our)f(UDI)h(setup)f(\014le)f(includes)f(these)j(lines:)150 -2734 y Fm(\013)p 200 2734 3554 4 v 3553 w(\010)p 150 -3043 4 262 v 178 2894 a Fr(iss)143 b(AF_UNIX)93 b(*)143 -b(isstip)46 b(-r)h(/home/gnu/29k/src/osboot/)o(sim/)o(osbo)o(ot)178 -2998 y(mon)143 b(AF_UNIX)93 b(*)143 b(montip)46 b(-t)h(serial)f(-baud)h -(9600)f(-com)h(/dev/ttyb)p 3803 3043 V 150 3095 a Fm(\012)p -200 3095 3554 4 v 3553 w(\011)630 3265 y Fv(Y)-8 b(ou)37 -b(can)f(use)g(`)p Fr(--name)28 b(iss)p Fv(')36 b(to)h(run)d(tests)j(on) -f(the)g(sim)m(ulator,)h(and)e(`)p Fr(--name)29 b(mon)p -Fv(')35 b(to)630 3375 y(run)e(tests)j(on)f(the)g(29K)g(hardw)m(are.)54 -b(See)35 b(the)g(man)m(ufacturer's)g(man)m(uals)f(for)h(more)g(in-)630 -3484 y(formation)30 b(on)g(UDI)h(and)f(`)p Fr(udi_soc)p -Fv('.)630 3619 y(The)k(default)g(connect)i(proto)s(col)e(is)g(`)p -Fr(mondfe)p Fv(')g(with)f(either)h(bac)m(k)i(end.)53 -b Fr(mondfe)33 b Fv(is)h(the)630 3728 y(only)21 b(shell)f(DejaGn)m(u)j -(supp)s(orts)d(for)h(UDI)i(targets.)39 b Fr(mondfe)20 -b Fv(is)h(an)h Fo(amd)f Fv(sp)s(eci\014c)g(monitor)630 -3838 y(program)30 b(freely)g(a)m(v)-5 b(ailable)30 b(from)g -Fo(amd)p Fv(.)630 3972 y Fn(Warning:)49 b Fv(This)30 -b(target)j(requires)d Fo(gdb)i Fv(v)m(ersion)f(4.7.2)i(\(or)f -(greater\).)47 b(Earlier)30 b(v)m(ersions)630 4082 y(of)e -Fo(gdb)g Fv(do)h(not)f(fully)e(supp)s(ort)h(the)h Fr(load)f -Fv(command)i(on)f(this)f(target,)j(so)f(DejaGn)m(u)g(has)630 -4192 y(no)h(w)m(a)m(y)i(to)f(load)f(executable)h(\014les)e(from)h(the)g -(debugger.)150 4351 y Fh(Motorola)j(680x0)f(b)s(oards,)d(a.out)j(or)e -Fo(coff)f Fh(ob)5 b(ject)32 b(format)630 4461 y Fv(Con\014gure)d -(DejaGn)m(u)j(for)e(an)m(y)g(remote)i(target)g(matc)m(hing)e(`)p -Fr(m68k-*)p Fv('.)630 4595 y Fn(Warning:)70 b Fv(Most)43 -b(`)p Fr(m68k-*)p Fv(')d(con\014gurations)i(run)e(all)h(tests)i(only)f -(for)f(nativ)m(e)i(testing)630 4705 y(\(when)c(the)g(target)i(is)e(the) -g(same)h(as)g(the)f(host\).)68 b(When)39 b(y)m(ou)h(sp)s(ecify)e(most)i -(of)f(these)630 4814 y(targets)i(for)e(a)h(cross)f(con\014guration,)i -(y)m(ou)f(will)d(only)h(b)s(e)h(able)g(to)h(use)f(tests)h(that)g(run) -630 4924 y(completely)25 b(within)e(the)j(host)g(\(for)g(example,)g -(tests)h(of)f(the)g(binary)d(utilities)g(suc)m(h)j(as)g(the)630 -5033 y(arc)m(hiv)m(er;)31 b(or)f(compiler)f(tests)i(that)g(only)f -(generate)i(co)s(de)e(rather)g(than)g(running)e(it\).)630 -5168 y(T)-8 b(o)27 b(run)e(a.out)j(or)f Fo(coff)e Fv(binaries)g(on)h(a) -i(remote)f(M68K,)h(y)m(ou)f(m)m(ust)g(con\014gure)f(DejaGn)m(u)630 -5277 y(for)37 b(a)g(particular)e(target)k(b)s(oard.)59 -b(`)p Fr(m68k-abug)p Fv(')35 b(is)h(an)h(example.)60 -b(\(In)36 b(general)h(for)g(an)p eop -%%Page: 33 35 -33 34 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h -(Implemen)m(tation)1847 b(33)630 83 y(em)m(b)s(edded)35 -b(en)m(vironmen)m(t,)i(b)s(ecause)g(it)e(do)s(es)h(not)g(ha)m(v)m(e)i -(absolute)e(addresses,)h(a.out)g(is)630 193 y(not)25 -b(a)g(go)s(o)s(d)g(c)m(hoice)h(for)f(output)f(format)h(in)f(an)m(y)h -(case;)j(most)e(often)f(S-records)f(or)h(Hex-32)630 302 -y(are)31 b(used)e(instead.\))150 462 y Fh(Motorola)k(68K)e(MVME)g(135)g -(b)s(oard)f(running)f(ABug)g(b)s(o)s(ot)h(monitor)630 -571 y Fv(Con\014gure)g(for)h(`)p Fr(m68k-abug-aout)p -Fv(')c(or)k(`)p Fr(m68k-abug-coff)p Fv(')d(\(as)j(a)h(target\).)44 -b(This)29 b(b)s(o)s(ot)630 681 y(monitor)42 b(can)i(only)e(do)m(wnload) -h(S-records;)49 b(therefore,)e(the)c(DejaGn)m(u)h(tests)g(for)f(this) -630 790 y(en)m(vironmen)m(t)34 b(require)f(a)i(link)m(er)e(command)i -(script)e(to)i(con)m(v)m(ert)h(either)e(output)h(format)630 -900 y(to)c(S-records,)f(setting)h(the)f(default)g(addresses)g(for)g -Fr(.text)p Fv(,)f Fr(.bss)p Fv(,)g(and)h Fr(.data)p Fv(.)630 -1034 y(With)i(this)f(con\014guration,)i(the)f(default)g(for)g(`)p -Fr(--connect)p Fv(')e(is)i(`)p Fr(tip)p Fv('.)46 b(`)p -Fr(tip)p Fv(')32 b(is)f(the)i(only)630 1144 y(comm)m(unications)38 -b(proto)s(col)g(supp)s(orted)f(for)h(connecting)h(to)g(`)p -Fr(m68k-abug-*)p Fv(')d(targets.)630 1254 y(`)p Fr(tip)p -Fv(')28 b(uses)h(an)f Fo(asci)r(i)h Fv(do)m(wnloader)f(\(the)h -Fr(~put)e Fv(command\))i(to)h(load)e(S-records)g(in)m(to)h(the)630 -1363 y(target)39 b(b)s(oard.)59 b(The)37 b(`)p Fr(--name)p -Fv(')e(string)h(m)m(ust)h(b)s(e)f(a)i(mac)m(hine)e(name)i(that)f -Fr(tip)f Fv(under-)630 1473 y(stands)g(\(for)h(example,)i(on)e(some)g -Fr(tip)f Fv(implemen)m(tations)f(it)i(m)m(ust)f(b)s(e)h(an)f(en)m(try)h -(from)630 1582 y(the)31 b(initialization)c(\014le)i(for)h -Fr(tip)p Fv(;)g(this)f(\014le)h(is)f(sometimes)i(called)e(`)p -Fr(/etc/remote)p Fv('\).)630 1717 y(See)d(y)m(our)g(system)g(do)s -(cumen)m(tation)g(for)g(information)f(on)g(ho)m(w)h(to)h(create)h(new)d -(en)m(tries)h(in)630 1826 y(`)p Fr(/etc/remote)p Fv('.)50 -b(\(Some)35 b Fo(unix)f Fv(systems)h(are)g(distributed)c(with)i(at)i -(least)g(one)g(default)630 1936 y(en)m(try)29 b(with)f(a)h(name)g -(resem)m(bling)e(`)p Fr(hardwire)p Fv(';)h(if)f(y)m(our)i(system)g(has) -g(one,)g(y)m(ou)g(can)g(edit)630 2046 y(it,)44 b(or)d(mak)m(e)h(a)g(mo) -s(di\014ed)d(cop)m(y)j(with)e(a)i(new)f(name.\))74 b(When)41 -b(y)m(ou)g(ha)m(v)m(e)i(a)f(w)m(orking)630 2155 y(`)p -Fr(/etc/remote)p Fv(')30 b(en)m(try)j Fq(abugtarget)p -Fv(,)h(y)m(ou)f(should)e(b)s(e)g(able)h(to)i(t)m(yp)s(e)e(`)p -Fr(tip)e Fq(abugtarget)r Fv(',)630 2265 y(and)24 b(get)h(the)g(prompt)f -(`)p Fr(135ABUG>)p Fv(')e(from)i(the)h(b)s(oard.)38 b(Use)25 -b(the)f(same)h Fq(abugtarget)j Fv(string)630 2374 y(with)h(`)p -Fr(runtest)g(--name)p Fv('.)150 2534 y Fh(Motorola)k(IDP)d(b)s(oard)f -(running)g(the)i(rom68k)g(b)s(o)s(ot)g(monitor)630 2643 -y Fv(This)36 b(is)g(the)i(same)g(in)e(functionalit)m(y)g(as)h(the)h -(MVME)g(b)s(oard)e(running)f(the)j Fr(BUG)e Fv(b)s(o)s(ot)630 -2753 y(monitor.)k(Only)29 b(the)h(monitor)g(commands)g(and)g(the)g -(addresses)g(are)h(di\013eren)m(t.)150 2912 y Fh(VxW)-8 -b(orks)31 b(\(Motorola)i(68K)e(or)g(In)m(tel)g(960\))630 -3022 y Fv(Con\014gure)k(DejaGn)m(u)h(for)g(either)f(`)p -Fr(m68k-wrs-vxworks)p Fv(')d(\(abbreviated)k(`)p Fr(vxworks68)p -Fv('\))630 3132 y(or)21 b(`)p Fr(i960-wrs-vxworks)p Fv(')c -(\(abbreviated)k(`)p Fr(vxworks960)p Fv('\).)35 b(Since)20 -b(b)s(oth)g(targets)j(supp)s(ort)630 3241 y(IP)42 b(addressing,)i(sp)s -(ecify)d(the)i(net)m(w)m(ork)h(address)d(\(for)i(example,)i(a)e(host)g -(name)f(from)630 3351 y(`)p Fr(/etc/hosts)p Fv('\))28 -b(with)i(`)p Fr(--name)p Fv('.)630 3485 y(The)35 b(default)g(connect)h -(proto)s(col)f(is)g(`)p Fr(rlogin)p Fv(',)h(but)e(y)m(ou)i(can)g(use)f -(an)m(y)h(of)f(`)p Fr(--connect)630 3595 y(rlogin)p Fv(',)29 -b(`)p Fr(--connect)f(telnet)p Fv(',)h(or)i(`)p Fr(--connect)d(rsh)p -Fv('.)630 3729 y(T)-8 b(est)42 b(scripts)f(need)g(no)g(sp)s(ecial)g(co) -s(de)g(to)i(load)e(programs)g(in)m(to)h(these)g(targets;)49 -b(since)630 3839 y(VxW)-8 b(orks)42 b(supp)s(orts)d(NFS,)j(all)e(y)m -(ou)h(m)m(ust)h(do)f(is)f(ensure)g(test)i(programs)f(are)h(on)f(an)630 -3949 y(exp)s(orted)30 b(\014lesystem.)630 4083 y(When)j(y)m(ou)g -(compile)f(for)h(VxW)-8 b(orks,)35 b(use)d(the)i(link)m(er)d(`)p -Fr(-r)p Fv(')i(option)g(to)g(mak)m(e)h(the)g(link)m(er)630 -4193 y(output)25 b(relo)s(catable|at)g(least)h(if)e(y)m(ou)h(w)m(an)m -(t)h(to)g(use)f(library)d(routines.)38 b(Man)m(y)26 b(standard)630 -4302 y(C)34 b(routines)f(are)i(included)d(in)h(VxW)-8 -b(orks;)37 b(often)e(no)f(additional)f(libraries)e(are)k(needed.)630 -4412 y(See)c(y)m(our)f(VxW)-8 b(orks)31 b(system)g(do)s(cumen)m(tation) -f(for)g(additional)e(details.)p eop -%%Page: 34 36 -34 35 bop 150 -116 a Fv(34)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fu(5.6)68 b(The)45 -b(\014les)g(DejaGn)l(u)g(reads)275 276 y Fv(The)28 b -Fr(runtest)g Fv(program)h(used)f(to)i(in)m(v)m(ok)m(e)h(DejaGn)m(u)f -(is)e(a)i(short)f(shell)e(script)i(generated)h(b)m(y)f -Fr(make)150 385 y Fv(during)h(the)i(con\014guration)f(pro)s(cess.)45 -b(Its)32 b(main)e(task)j(is)e(to)h(read)g(the)g(main)f(test)i(framew)m -(ork)f(driv)m(er,)150 495 y(`)p Fr(runtest.exp)p Fv('.)275 -629 y(`)p Fr(runtest.exp)p Fv(',)c(in)h(turn,)g(reads)h -Fr(expect)f Fv(co)s(de)i(from)e(certain)i(other)f(\014les,)g(in)f(this) -g(order:)199 764 y(1.)61 b(Eac)m(h)31 b(of)f(the)g(`)p -Fr(site.exp)p Fv(')f(lo)s(cal)g(de\014nition)f(\014les)h(a)m(v)-5 -b(ailable.)40 b(See)31 b(Chapter)e(4)i([Setting)f Fr(runtest)330 -873 y Fv(defaults],)g(page)h(15,)h(for)e(details.)199 -1008 y(2.)61 b(`)p Fr(lib/utils.exp)p Fv(',)23 b(a)i(collection)f(of)h -(utilit)m(y)d(pro)s(cedures.)38 b(See)25 b(Section)f(5.3)i([DejaGn)m(u) -f(Builtins],)330 1117 y(page)31 b(23,)h(for)e(descriptions)e(of)j -(these)f(pro)s(cedures.)199 1252 y(3.)61 b(`)p Fr(lib/framework.exp)p -Fv(',)37 b(a)j(\014le)e(of)h(subroutines)e(mean)m(t)j(for)f -Fr(runtest)e Fv(itself)g(rather)i(than)g(for)330 1362 -y(general-purp)s(ose)29 b(use)h(in)f(b)s(oth)h Fr(runtest)e -Fv(and)i(test)h(suites.)199 1496 y(4.)61 b(`)p Fr(debugger.exp)p -Fv(',)45 b(Don)g(Lib)s(es')e(Tcl)g(Debugger.)84 b(\(See)45 -b Fq(A)f(Debugger)h(for)f(Tcl)g(Applications)330 1606 -y Fv(b)m(y)38 b(Don)h(Lib)s(es.)63 b(This)37 b(pap)s(er)g(is)g -(distributed)f(with)h Fr(expect)g Fv(in)g(P)m(ostScript)h(form)g(as)g -(the)h(\014le)330 1715 y(`)p Fr(expect/tcl-debug.ps)p -Fv('.\))199 1850 y(5.)61 b(`)p Fr(lib/remote.exp)p Fv(',)20 -b(a)h(collection)f(of)h(subroutines)e(mean)m(t)i(for)g(connecting)g(to) -g(remote)h(mac)m(hines.)199 1984 y(6.)61 b(`)p Fr(lib/target.exp)p -Fv(',)41 b(a)g(collection)g(of)g(subroutines)e(used)h(for)h(the)g -(con\014guration)f(systems)h(in)330 2094 y(DejaGn)m(u.)h(These)30 -b(pro)s(cedures)f(t)m(ypically)g(manipulate)g(or)h(utilize)f(the)h -(con\014guration)g(system.)199 2228 y(7.)61 b(An)34 b(initialization)e -(\014le)i Fq(to)s(ol)t Fr(_init.exp)p Fv(.)50 b(See)35 -b(Section)g(5.2)g([Initialization)e(mo)s(dule],)h(page)i(22,)330 -2338 y(for)30 b(more)h(discussion)c(of)k(init)e(\014les.)p -eop -%%Page: 35 37 -35 36 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h -(Implemen)m(tation)1847 b(35)150 83 y Fu(5.7)68 b(The)45 -b(\014les)g(DejaGn)l(u)g(writes)275 276 y Fr(runtest)31 -b Fv(alw)m(a)m(ys)j(writes)e(t)m(w)m(o)j(kinds)c(of)i(output)g -(\014les:)46 b(summary)32 b(logs)h(and)g(detailed)f(logs.)49 -b(The)150 385 y(con)m(ten)m(ts)32 b(of)f(b)s(oth)e(of)i(these)g(are)f -(determined)f(b)m(y)i(y)m(our)f(tests.)275 520 y(F)-8 -b(or)37 b(troublesho)s(oting,)g(a)g(third)e(kind)g(of)i(output)g -(\014le)f(is)g(useful:)52 b(use)36 b(`)p Fr(--debug)p -Fv(')g(to)h(request)g(an)150 629 y(output)30 b(\014le)f(sho)m(wing)h -(details)f(of)i(what)f Fr(expect)f Fv(is)g(doing)h(in)m(ternally)-8 -b(.)150 853 y Fi(5.7.1)63 b(Summary)39 b(log)275 1046 -y Fr(runtest)33 b Fv(alw)m(a)m(ys)j(pro)s(duces)e(a)i(summary)f(output) -g(\014le)g(`)p Fq(to)s(ol)p Fr(.sum)p Fv('.)55 b(This)34 -b(summary)g(sho)m(ws)i(the)150 1156 y(names)f(of)g(all)f(test)i -(\014les)e(run;)i(for)f(eac)m(h)h(test)g(\014le,)g(one)f(line)f(of)h -(output)f(from)h(eac)m(h)h Fr(pass)e Fv(command)150 1265 -y(\(sho)m(wing)39 b(status)g(`)p Fr(PASS)p Fv(')g(or)g(`)p -Fr(XPASS)p Fv('\))f(or)h Fr(fail)f Fv(command)h(\(status)h(`)p -Fr(FAIL)p Fv(')f(or)g(`)p Fr(XFAIL)p Fv('\);)k(trailing)150 -1375 y(summary)26 b(statistics)g(that)h(coun)m(t)h(passing)d(and)h -(failing)f(tests)i(\(exp)s(ected)h(and)e(unexp)s(ected\);)i(and)e(the) -150 1484 y(full)e(pathname)i(and)f(v)m(ersion)h(n)m(um)m(b)s(er)f(of)h -(the)g(to)s(ol)g(tested.)41 b(\(All)25 b(p)s(ossible)e(outcomes,)29 -b(and)c(all)g(errors,)150 1594 y(are)36 b(alw)m(a)m(ys)g(re\015ected)g -(in)f(the)h(summary)e(output)h(\014le,)i(regardless)e(of)h(whether)f -(or)g(not)h(y)m(ou)g(sp)s(ecify)150 1704 y(`)p Fr(--all)p -Fv('.\))275 1838 y(If)k(an)m(y)g(of)h(y)m(our)f(tests)i(use)e(the)g -(pro)s(cedures)g Fr(unresolved)p Fv(,)g Fr(unsupported)p -Fv(,)g(or)h Fr(untested)p Fv(,)g(the)150 1948 y(summary)29 -b(output)h(also)h(tabulates)f(the)h(corresp)s(onding)d(outcomes.)275 -2082 y(F)-8 b(or)21 b(example,)h(after)f(`)p Fr(runtest)28 -b(--tool)h(binutils)p Fv(',)20 b(lo)s(ok)g(for)g(a)h(summary)e(log)h -(in)f(`)p Fr(binutils.sum)p Fv('.)150 2192 y(Normally)-8 -b(,)39 b Fr(runtest)d Fv(writes)h(this)g(\014le)g(in)f(y)m(our)i -(curren)m(t)g(w)m(orking)f(directory;)k(use)d(the)g(`)p -Fr(--outdir)p Fv(')150 2301 y(option)30 b(to)h(select)g(a)g(di\013eren) -m(t)f(directory)-8 b(.)150 2416 y(Here)31 b(is)e(a)i(short)f(sample)g -(summary)f(log:)150 2495 y Fm(\013)p 200 2495 3554 4 -v 3553 w(\010)p 150 4457 4 1915 v 178 2648 a Fr(Test)47 -b(Run)g(By)g(rob)g(on)g(Mon)g(May)g(25)g(21:40:57)f(PDT)g(1992)942 -2752 y(===)h(gdb)g(tests)f(===)178 2856 y(Running)g(./gdb.t00/echo.exp) -d(...)178 2959 y(PASS:)142 b(Echo)47 b(test)178 3063 -y(Running)f(./gdb.all/help.exp)d(...)178 3167 y(PASS:)142 -b(help)47 b(add-symbol-file)178 3271 y(PASS:)142 b(help)47 -b(aliases)178 3374 y(PASS:)142 b(help)47 b(breakpoint)e("bre")h -(abbreviation)178 3478 y(FAIL:)142 b(help)47 b(run)g("r")f -(abbreviation)178 3582 y(Running)g(./gdb.t10/crossload.exp)41 -b(...)178 3686 y(PASS:)142 b(m68k-elf)46 b(\(elf-big\))f(explicit)g -(format;)h(loaded)178 3790 y(XFAIL:)94 b(mips-ecoff)45 -b(\(ecoff-bigmips\))f("ptype)i(v_signed_char")e(signed)178 -3893 y(C)k(types)942 3997 y(===)f(gdb)g(Summary)e(===)178 -4101 y(#)j(of)f(expected)e(passes)h(5)178 4205 y(#)i(of)f(expected)e -(failures)h(1)178 4308 y(#)i(of)f(unexpected)e(failures)g(1)178 -4412 y(/usr/latest/bin/gdb)e(version)j(4.6.5)g(-q)p 3803 -4457 V 150 4509 a Fm(\012)p 200 4509 3554 4 v 3553 w(\011)p -eop -%%Page: 36 38 -36 37 bop 150 -116 a Fv(36)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fi(5.7.2)63 -b(Detailed)40 b(log)275 270 y Fr(runtest)28 b Fv(also)h(sa)m(v)m(es)j -(a)e(detailed)f(log)h(\014le)g(`)p Fq(to)s(ol)p Fr(.log)p -Fv(',)f(sho)m(wing)g(an)m(y)i(output)e(generated)i(b)m(y)f(tests)150 -380 y(as)g(w)m(ell)f(as)h(the)g(summary)f(output.)40 -b(F)-8 b(or)31 b(example,)f(after)h(`)p Fr(runtest)d(--tool)h(binutils) -p Fv(',)f(lo)s(ok)i(for)g(a)150 489 y(detailed)f(log)i(in)e(`)p -Fr(binutils.log)p Fv('.)37 b(Normally)-8 b(,)30 b Fr(runtest)f -Fv(writes)g(this)g(\014le)g(in)g(y)m(our)i(curren)m(t)f(w)m(orking)150 -599 y(directory;)g(use)g(the)h(`)p Fr(--outdir)p Fv(')d(option)i(to)h -(select)g(a)g(di\013eren)m(t)f(directory)-8 b(.)150 708 -y(Here)31 b(is)e(a)i(brief)e(example)h(sho)m(wing)f(a)i(detailed)f(log) -g(for)g Fo(g)p Fr(++)g Fv(tests:)150 787 y Fm(\013)p -200 787 3554 4 v 3553 w(\010)p 150 4306 4 3472 v 178 -940 a Fr(Test)47 b(Run)g(By)g(rob)g(on)g(Mon)g(May)g(25)g(21:40:43)f -(PDT)g(1992)942 1148 y(===)h(g++)g(tests)f(===)178 1355 -y(---)h(Running)f(./g++.other/t01-1.exp)c(---)560 1459 -y(PASS:)142 b(operate)46 b(delete)178 1667 y(---)h(Running)f -(./g++.other/t01-2.exp)c(---)560 1770 y(FAIL:)142 b(i960)46 -b(bug)h(EOF)178 1874 y(p0000646.C:)e(In)i(function)f(`int)94 -b(warn_return_1)44 b(\(\)':)178 1978 y(p0000646.C:109:)g(warning:)h -(control)h(reaches)g(end)h(of)g(non-void)f(function)178 -2082 y(p0000646.C:)f(In)i(function)f(`int)94 b(warn_return_arg)44 -b(\(int\)':)178 2186 y(p0000646.C:117:)g(warning:)h(control)h(reaches)g -(end)h(of)g(non-void)f(function)178 2289 y(p0000646.C:)f(In)i(function) -f(`int)94 b(warn_return_sum)44 b(\(int,)i(int\)':)178 -2393 y(p0000646.C:125:)e(warning:)h(control)h(reaches)g(end)h(of)g -(non-void)f(function)178 2497 y(p0000646.C:)f(In)i(function)f(`struct)f -(foo)i(warn_return_foo)d(\(\)':)178 2601 y(p0000646.C:132:)g(warning:)h -(control)h(reaches)g(end)h(of)g(non-void)f(function)178 -2808 y(---)h(Running)f(./g++.other/t01-4.exp)c(---)560 -2912 y(FAIL:)142 b(abort)178 3016 y(900403_04.C:8:)44 -b(zero)j(width)f(for)h(bit-field)e(`foo')178 3120 y(---)i(Running)f -(./g++.other/t01-3.exp)c(---)560 3223 y(FAIL:)142 b(segment)46 -b(violation)178 3327 y(900519_12.C:9:)e(parse)i(error)h(before)f(`;') -178 3431 y(900519_12.C:12:)e(Segmentation)g(violation)178 -3535 y(/usr/latest/bin/gcc:)e(Internal)k(compiler)g(error:)g(program)f -(cc1plus)h(got)178 3638 y(fatal)h(signal)942 3846 y(===)g(g++)g -(Summary)e(===)178 4054 y(#)j(of)f(expected)e(passes)h(1)178 -4157 y(#)i(of)f(expected)e(failures)h(3)178 4261 y(/usr/ps/bin/g++)e -(version)i(cygnus-2.0.1)p 3803 4306 V 150 4358 a Fm(\012)p -200 4358 3554 4 v 3553 w(\011)150 4566 y Fi(5.7.3)63 -b(Logging)42 b Fg(expect)g Fi(in)m(ternal)e(actions)275 -4753 y Fv(With)32 b(the)h(`)p Fr(--debug)p Fv(')e(option,)i(y)m(ou)h -(can)f(request)g(a)g(log)g(\014le)f(sho)m(wing)g(the)h(output)f(from)h -Fr(expect)150 4863 y Fv(itself,)k(running)d(in)h(debugging)g(mo)s(de.) -59 b(This)34 b(\014le)i(\(`)p Fr(dbg.log)p Fv(',)h(in)e(the)i -(directory)f(where)g(y)m(ou)g(start)150 4972 y Fr(runtest)p -Fv(\))29 b(sho)m(ws)h(eac)m(h)h(pattern)g Fr(expect)e -Fv(considers)g(in)g(analyzing)g(test)j(output.)275 5101 -y(This)26 b(\014le)h(re\015ects)h(eac)m(h)h Fr(send)e -Fv(command,)h(sho)m(wing)f(the)h(string)f(sen)m(t)h(as)g(input)e(to)j -(the)f(to)s(ol)f(under)150 5211 y(test;)32 b(and)d(eac)m(h)j -Fr(expect)d Fv(command,)h(sho)m(wing)f(eac)m(h)j(pattern)e(it)g -(compares)h(with)e(the)i(to)s(ol)f(output.)275 5340 y(The)f(log)i -(messages)g(for)f Fr(expect)f Fv(b)s(egin)g(with)g(a)i(message)g(of)g -(the)f(form)p eop -%%Page: 37 39 -37 38 bop 150 -116 a Fv(Chapter)30 b(5:)41 b(The)30 b(DejaGn)m(u)h -(Implemen)m(tation)1847 b(37)390 83 y Fr(expect:)46 b(does)g({)p -Fq(to)s(ol)31 b(output)r Fr(})47 b(\(spawn_id)e Fq(n)p -Fr(\))i(match)f(pattern)390 187 y({)p Fq(exp)s(ected)31 -b(pattern)p Fr(}?)150 321 y Fv(F)-8 b(or)30 b(ev)m(ery)h(unsuccessful)c -(matc)m(h,)k Fr(expect)d Fv(issues)h(a)h(`)p Fr(no)p -Fv(')f(after)h(this)f(message;)i(if)e(other)h(patterns)g(are)150 -431 y(sp)s(eci\014ed)f(for)i(the)g(same)h Fr(expect)d -Fv(command,)i(they)h(are)f(re\015ected)h(also,)f(but)f(without)h(the)g -(\014rst)f(part)150 540 y(of)h(the)f(message)i(\(`)p -Fr(expect...)n(match)d(pattern)p Fv('\).)275 675 y(When)j -Fr(expect)e Fv(\014nds)h(a)i(matc)m(h,)g(the)g(log)f(for)g(the)h -(successful)e(matc)m(h)i(ends)f(with)f(`)p Fr(yes)p Fv(',)h(follo)m(w)m -(ed)150 785 y(b)m(y)g(a)h(record)g(of)f(the)h Fr(expect)e -Fv(v)-5 b(ariables)31 b(set)i(to)g(describ)s(e)e(a)i(successful)e(matc) -m(h.)48 b(Here)33 b(is)f(an)g(excerpt)150 894 y(from)e(the)g(debugging) -g(log)g(for)g(a)h Fo(gdb)f Fv(test:)150 973 y Fm(\013)p -200 973 3554 4 v 3553 w(\010)p 150 3669 4 2649 v 178 -1134 a Fr(send:)47 b(sent)f({break)g(gdbme.c:34\\n})e(to)k(spawn)e(id)h -(6)178 1237 y(expect:)f(does)h({})g(\(spawn_id)e(6\))i(match)g(pattern) -e({Breakpoint.*at.*)f(file)226 1341 y(gdbme.c,)h(line)i -(34.*\\\(gdb\\\))e($}?)i(no)178 1445 y({.*\\\(gdb\\\))e($}?)i(no)178 -1549 y(expect:)f(does)h({})g(\(spawn_id)e(0\))i(match)g(pattern)e -({}?)g(no)178 1652 y({\\\(y)i(or)g(n\\\))g(}?)g(no)178 -1756 y({buffer_full}?)d(no)178 1860 y({virtual}?)h(no)178 -1964 y({memory}?)g(no)178 2068 y({exhausted}?)g(no)178 -2171 y({Undefined}?)g(no)178 2275 y({command}?)g(no)178 -2379 y(break)i(gdbme.c:34)178 2483 y(Breakpoint)e(8)j(at)f(0x23d8:)f -(file)g(gdbme.c,)g(line)g(34.)178 2586 y(\(gdb\))h(expect:)e(does)i -({break)f(gdbme.c:34\\r\\nBreakpoint)41 b(8)48 b(at)f(0x23d8:)178 -2690 y(file)g(gdbme.c,)e(line)i(34.\\r\\n\(gdb\))d(})k(\(spawn_id)d -(6\))i(match)g(pattern)178 2794 y({Breakpoint.*at.*)c(file)k(gdbme.c,)e -(line)i(34.*\\\(gdb\\\))e($}?)i(yes)178 2898 y(expect:)f(set)h -(expect_out\(0,start\))42 b({18})178 3002 y(expect:)k(set)h -(expect_out\(0,end\))c({71})178 3105 y(expect:)j(set)h -(expect_out\(0,string\))42 b({Breakpoint)j(8)i(at)h(0x23d8:)d(file)178 -3209 y(gdbme.c,)h(line)g(34.\\r\\n\(gdb\))f(})178 3313 -y(expect:)h(set)h(expect_out\(spawn_id\))42 b({6})178 -3417 y(expect:)k(set)h(expect_out\(buffer\))c({break)j -(gdbme.c:34\\r\\nBreakpoint)41 b(8)178 3520 y(at)47 b(0x23d8:)f(file)h -(gdbme.c,)e(line)i(34.\\r\\n\(gdb\))d(})560 3624 y(PASS:)142 -b(70)286 b(0)333 b(breakpoint)45 b(line)i(number)f(in)h(file)p -3803 3669 V 150 3721 a Fm(\012)p 200 3721 3554 4 v 3553 -w(\011)150 3866 y Fv(This)26 b(example)i(exhibits)f(three)h(prop)s -(erties)f(of)h Fr(expect)f Fv(and)g(DejaGn)m(u)i(that)g(migh)m(t)f(b)s -(e)g(surprising)c(at)150 3976 y(\014rst)30 b(glance:)225 -4110 y Ft(\017)60 b Fv(Empt)m(y)25 b(output)f(for)h(the)g(\014rst)f -(attempted)i(matc)m(h.)40 b(The)25 b(\014rst)f(set)h(of)g(attempted)h -(matc)m(hes)h(sho)m(wn)330 4220 y(ran)34 b(against)g(the)h(output)f(`)p -Fr({})p Fv('|that)h(is,)f(no)h(output.)52 b Fr(expect)33 -b Fv(b)s(egins)f(attempting)j(to)g(matc)m(h)330 4329 -y(the)i(patterns)f(supplied)e(immediately;)k(often,)g(the)f(\014rst)f -(pass)g(is)g(against)h(incomplete)e(output)330 4439 y(\(or)c -(completely)f(b)s(efore)g(all)f(output,)h(as)h(in)e(this)g(case\).)225 -4573 y Ft(\017)60 b Fv(In)m(tersp)s(ersed)39 b(to)s(ol)i(output.)71 -b(The)40 b(b)s(eginning)d(of)k(the)g(log)g(en)m(try)f(for)h(the)f -(second)h(attempted)330 4683 y(matc)m(h)32 b(ma)m(y)g(b)s(e)e(hard)h -(to)h(sp)s(ot:)42 b(this)30 b(is)g(b)s(ecause)h(the)h(prompt)e(`)p -Fr(\(gdb\))f Fv(')j(app)s(ears)e(on)h(the)h(same)330 -4793 y(line,)d(just)h(b)s(efore)g(the)g(`)p Fr(expect:)p -Fv(')f(that)i(marks)f(the)h(b)s(eginning)c(of)k(the)f(log)h(en)m(try)-8 -b(.)225 4927 y Ft(\017)60 b Fv(F)-8 b(ail-safe)32 b(patterns.)43 -b(Man)m(y)32 b(of)f(the)h(patterns)f(tested)h(are)f(fail-safe)g -(patterns)g(pro)m(vided)f(b)m(y)h Fo(gdb)330 5037 y Fv(testing)43 -b(utilities,)h(to)f(reduce)g(p)s(ossible)e(indeterminacy)-8 -b(.)77 b(It)43 b(is)f(useful)f(to)j(an)m(ticipate)f(p)s(oten-)330 -5146 y(tial)g(v)-5 b(ariations)44 b(caused)g(b)m(y)g(extreme)h(system)f -(conditions)f(\()p Fo(gdb)h Fv(migh)m(t)g(issue)e(the)j(message)p -eop -%%Page: 38 40 -38 39 bop 150 -116 a Fv(38)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)330 83 y(`)p Fr(virtual)29 -b(memory)f(exhausted)p Fv(')j(in)h(rare)g(circumstances\),)i(or)f(b)m -(y)g(c)m(hanges)h(in)d(the)i(tested)h(pro-)330 193 y(gram)f(\(`)p -Fr(Undefined)28 b(command)p Fv(')j(is)g(the)h(lik)m(eliest)f(outcome)j -(if)d(the)h(name)h(of)f(a)h(tested)g(command)330 302 -y(c)m(hanges\).)330 437 y(The)f(pattern)g(`)p Fr({})p -Fv(')f(is)g(a)i(particularly)d(in)m(teresting)h(fail-safe)h(to)h -(notice;)h(it)e(c)m(hec)m(ks)i(for)330 546 y(an)k(unexp)s(ected)952 -543 y Fk(h)p 976 490 151 4 v 976 546 a Fj(RET)p 976 562 -V 1123 543 a Fk(i)1191 546 y Fv(prompt.)64 b(This)37 -b(ma)m(y)i(happ)s(en,)g(for)f(example,)i(if)d(the)i(tested)g(to)s(ol)g -(can)330 656 y(\014lter)29 b(output)h(through)g(a)h(pager.)330 -790 y(These)e(fail-safe)f(patterns)h(\(lik)m(e)g(the)g(debugging)f(log) -h(itself)7 b(\))28 b(are)h(primarily)d(useful)h(while)g(dev)m(el-)330 -900 y(oping)32 b(test)h(scripts.)46 b(Use)33 b(the)g -Fr(error)e Fv(pro)s(cedure)g(to)j(mak)m(e)f(the)g(actions)g(for)f -(fail-safe)g(patterns)330 1010 y(pro)s(duce)i(messages)j(starting)e -(with)g(`)p Fr(ERROR)p Fv(')f(on)i(the)f Fr(runtest)f -Fv(standard)h(output,)i(and)d(in)h(the)330 1119 y(detailed)29 -b(log)i(\014le.)p eop -%%Page: 39 41 -39 40 bop 150 -116 a Fv(Chapter)30 b(6:)41 b(Ho)m(w)31 -b(T)-8 b(o)31 b(W)-8 b(rite)31 b(a)f(T)-8 b(est)31 b(Case)1988 -b(39)150 100 y Fs(6)80 b(Ho)l(w)53 b(T)-13 b(o)53 b(W)-13 -b(rite)54 b(a)g(T)-13 b(est)53 b(Case)150 457 y Fu(6.1)68 -b(W)-11 b(riting)46 b(a)f(test)h(case)275 649 y Fv(The)30 -b(easiest)h(w)m(a)m(y)h(to)f(prepare)g(a)g(new)f(test)i(case)g(is)e(to) -h(base)g(it)f(on)h(an)g(existing)f(one)h(for)f(a)i(similar)150 -759 y(situation.)63 b(There)38 b(are)g(t)m(w)m(o)i(ma)5 -b(jor)38 b(categories)i(of)e(tests:)57 b(batc)m(h)39 -b(or)f(in)m(teractiv)m(e.)65 b(Batc)m(h)40 b(orien)m(ted)150 -868 y(tests)31 b(are)g(usually)d(easier)i(to)h(write.)275 -1003 y(The)22 b Fo(gcc)h Fv(tests)h(are)f(a)h(go)s(o)s(d)f(example)g -(of)g(batc)m(h)h(orien)m(ted)f(tests.)39 b(All)22 b Fo(gcc)h -Fv(tests)h(consist)e(primarily)150 1112 y(of)35 b(a)h(call)f(to)h(a)g -(single)e(common)h(pro)s(cedure,)h(since)f(all)f(the)h(tests)h(either)f -(ha)m(v)m(e)i(no)e(output,)h(or)g(only)150 1222 y(ha)m(v)m(e)k(a)g(few) -f(w)m(arning)f(messages)i(when)e(successfully)g(compiled.)65 -b(An)m(y)40 b(non-w)m(arning)d(output)i(is)g(a)150 1332 -y(test)31 b(failure.)39 b(All)29 b(the)h(C)g(co)s(de)h(needed)e(is)h(k) -m(ept)h(in)e(the)h(test)h(directory)-8 b(.)41 b(The)30 -b(test)h(driv)m(er,)e(written)g(in)150 1441 y Fr(expect)p -Fv(,)d(need)h(only)f(get)i(a)f(listing)e(of)i(all)e(the)i(C)g(\014les)f -(in)f(the)i(directory)-8 b(,)28 b(and)e(compile)g(them)h(all)e(using) -150 1551 y(a)j(generic)g(pro)s(cedure.)39 b(This)26 b(pro)s(cedure)h -(and)h(a)g(few)g(others)g(supp)s(orting)d(for)j(these)g(tests)h(are)g -(k)m(ept)f(in)150 1660 y(the)i(library)d(mo)s(dule)h(`)p -Fr(lib/c-torture.exp)p Fv(')d(in)k(the)h Fo(gcc)f Fv(test)h(suite.)40 -b(Most)31 b(tests)f(of)g(this)e(kind)g(use)150 1770 y(v)m(ery)j(few)f -Fr(expect)f Fv(features,)h(and)g(are)h(co)s(ded)f(almost)h(purely)d(in) -h(Tcl.)150 1905 y(W)-8 b(riting)30 b(the)g(complete)h(suite)f(of)g(C)g -(tests,)i(then,)e(consisted)g(of)g(these)h(steps:)199 -2039 y(1.)61 b(Cop)m(ying)26 b(all)f(the)i(C)f(co)s(de)g(in)m(to)h(the) -g(test)g(directory)-8 b(.)39 b(These)26 b(tests)i(w)m(ere)f(based)f(on) -g(the)h(C-torture)330 2149 y(test)e(created)g(b)m(y)f(T)-8 -b(orb)5 b(jorn)23 b(Granlund)f(\(on)i(b)s(ehalf)e(of)j(the)f(F)-8 -b(ree)25 b(Soft)m(w)m(are)g(F)-8 b(oundation\))24 b(for)g -Fo(gcc)330 2258 y Fv(dev)m(elopmen)m(t.)199 2393 y(2.)61 -b(W)-8 b(riting)30 b(\(and)g(debugging\))f(the)i(generic)f -Fr(expect)f Fv(pro)s(cedures)g(for)h(compilation.)199 -2527 y(3.)61 b(W)-8 b(riting)32 b(the)h(simple)e(test)i(driv)m(er:)45 -b(its)32 b(main)g(task)h(is)f(to)h(searc)m(h)h(the)f(directory)f -(\(using)g(the)h(Tcl)330 2637 y(pro)s(cedure)f Fr(glob)f -Fv(for)i(\014lename)f(expansion)g(with)f(wildcards\))g(and)h(call)g(a)h -(Tcl)g(pro)s(cedure)e(with)330 2746 y(eac)m(h)h(\014lename.)39 -b(It)31 b(also)f(c)m(hec)m(ks)i(for)e(a)h(few)f(errors)g(from)g(the)g -(testing)h(pro)s(cedure.)275 2906 y(T)-8 b(esting)37 -b(in)m(teractiv)m(e)h(programs)g(is)e(in)m(trinsically)e(more)k -(complex.)62 b(T)-8 b(ests)38 b(for)f(most)h(in)m(teractiv)m(e)150 -3015 y(programs)30 b(require)f(some)i(trial)e(and)h(error)g(b)s(efore)g -(they)g(are)h(complete.)275 3150 y(Ho)m(w)m(ev)m(er,)44 -b(some)d(in)m(teractiv)m(e)f(programs)g(can)g(b)s(e)g(tested)g(in)f(a)h -(simple)e(fashion)h(reminiscen)m(t)g(of)150 3259 y(batc)m(h)c(tests.)54 -b(F)-8 b(or)36 b(example,)f(prior)e(to)i(the)g(creation)g(of)g(DejaGn)m -(u,)h(the)f Fo(gdb)f Fv(distribution)d(already)150 3369 -y(included)j(a)k(wide-ranging)d(testing)j(pro)s(cedure.)59 -b(This)36 b(pro)s(cedure)g(w)m(as)h(v)m(ery)h(robust,)g(and)e(had)h -(al-)150 3479 y(ready)29 b(undergone)f(m)m(uc)m(h)g(more)h(debugging)f -(and)g(error)g(c)m(hec)m(king)i(than)e(man)m(y)h(recen)m(t)h(DejaGn)m -(u)f(test)150 3588 y(cases.)64 b(Accordingly)-8 b(,)39 -b(the)e(b)s(est)h(approac)m(h)g(w)m(as)g(simply)d(to)j(encapsulate)g -(the)g(existing)f Fo(gdb)g Fv(tests,)150 3698 y(for)32 -b(rep)s(orting)f(purp)s(oses.)45 b(Thereafter,)33 b(new)f -Fo(gdb)g Fv(tests)h(built)d(up)i(a)g(family)f(of)i Fr(expect)d -Fv(pro)s(cedures)150 3807 y(sp)s(ecialized)f(for)h Fo(gdb)g -Fv(testing.)275 3942 y(`)p Fr(gdb.t10/crossload.exp)p -Fv(')25 b(is)k(a)i(go)s(o)s(d)f(example)g(of)h(an)f(in)m(teractiv)m(e)h -(test.)p eop -%%Page: 40 42 -40 41 bop 150 -116 a Fv(40)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fu(6.2)68 b(Debugging)46 -b(a)f(test)h(case)150 276 y Fv(These)30 b(are)h(the)f(kinds)f(of)h -(debugging)g(information)e(a)m(v)-5 b(ailable)30 b(from)g(DejaGn)m(u:) -199 410 y(1.)61 b(Output)29 b(con)m(trolled)h(b)m(y)g(test)h(scripts)e -(themselv)m(es,)h(explicitly)e(allo)m(w)m(ed)i(for)g(b)m(y)g(the)g -(test)h(author.)330 520 y(This)21 b(kind)g(of)j(debugging)d(output)i -(app)s(ears)f(in)g(the)h(detailed)f(output)h(recorded)g(in)e(the)j(`)p -Fq(to)s(ol)p Fr(.log)p Fv(')330 629 y(\014le.)41 b(T)-8 -b(o)31 b(do)g(the)f(same)i(for)e(new)g(tests,)i(use)e(the)h -Fr(verbose)e Fv(pro)s(cedure)h(\(whic)m(h)f(in)h(turn)f(uses)i(the)330 -739 y(v)-5 b(ariable)29 b(also)h(called)f Fr(verbose)p -Fv(\))f(to)j(con)m(trol)g(ho)m(w)f(m)m(uc)m(h)g(output)f(to)i -(generate.)42 b(This)29 b(will)e(mak)m(e)330 848 y(it)i(easier)h(for)g -(other)g(p)s(eople)f(running)e(the)j(test)h(to)g(debug)e(it)g(if)g -(necessary)-8 b(.)42 b(Whenev)m(er)30 b(p)s(ossible,)330 -958 y(if)h(`)p Fr($verbose)p Fv(')g(is)g Fr(0)p Fv(,)h(there)h(should)d -(b)s(e)i(no)g(output)g(other)g(than)g(the)h(output)e(from)h -Fr(pass)p Fv(,)g Fr(fail)p Fv(,)330 1068 y Fr(error)p -Fv(,)h(and)f Fr(warning)p Fv(.)47 b(Then,)33 b(to)h(whatev)m(er)g -(exten)m(t)g(is)e(appropriate)g(for)h(the)g(particular)f(test,)330 -1177 y(allo)m(w)h(successiv)m(ely)f(higher)g(v)-5 b(alues)33 -b(of)g(`)p Fr($verbose)p Fv(')e(to)j(generate)h(more)e(information.)48 -b(Be)34 b(kind)330 1287 y(to)d(other)g(programmers)f(who)f(use)h(y)m -(our)h(tests:)41 b(pro)m(vide)30 b(for)g(a)h(lot)f(of)h(debugging)e -(information.)199 1421 y(2.)61 b(Output)26 b(from)g(the)h(in)m(ternal)e -(debugging)h(functions)f(of)i(Tcl)f(and)g Fr(expect)p -Fv(.)38 b(There)26 b(is)g(a)h(command)330 1531 y(line)h(options)i(for)g -(eac)m(h;)h(b)s(oth)e(forms)h(of)g(debugging)f(output)h(are)g(recorded) -g(in)f(the)h(\014le)f Fr(dbg.log)330 1641 y Fv(in)g(the)i(curren)m(t)f -(directory)-8 b(.)330 1775 y(Use)23 b(`)p Fr(--debug)p -Fv(')d(for)i(information)f(from)h(the)g Fr(expect)e Fv(lev)m(el;)25 -b(it)d(generates)i(displa)m(ys)c(of)i(the)h Fr(expect)330 -1885 y Fv(attempts)i(to)g(matc)m(h)h(the)e(to)s(ol)g(output)g(with)f -(the)i(patterns)f(sp)s(eci\014ed)f(\(see)i(Section)f(5.7.3)i([Debug)330 -1994 y(Log],)34 b(page)f(36\).)47 b(This)30 b(output)i(can)g(b)s(e)g(v) -m(ery)h(helpful)c(while)h(dev)m(eloping)h(test)i(scripts,)f(since)f(it) -330 2104 y(sho)m(ws)e(precisely)f(the)i(c)m(haracters)h(receiv)m(ed.)41 -b(Iterating)29 b(b)s(et)m(w)m(een)h(the)g(latest)g(attempt)g(at)h(a)e -(new)330 2213 y(test)k(script)d(and)h(the)h(corresp)s(onding)e(`)p -Fr(dbg.log)p Fv(')g(can)i(allo)m(w)f(y)m(ou)h(to)h(create)g(the)f -(\014nal)e(patterns)330 2323 y(b)m(y)g(\\cut)h(and)f(paste".)42 -b(This)28 b(is)i(sometimes)g(the)h(b)s(est)f(w)m(a)m(y)h(to)g(write)f -(a)g(test)i(case.)330 2457 y(Use)45 b(`)p Fr(--strace)p -Fv(')d(to)j(see)g(more)f(detail)g(at)h(the)f(Tcl)g(lev)m(el;)51 -b(this)43 b(sho)m(ws)h(ho)m(w)h(Tcl)e(pro)s(cedure)330 -2567 y(de\014nitions)f(expand,)47 b(as)d(they)g(execute.)84 -b(The)43 b(asso)s(ciated)i(n)m(um)m(b)s(er)e(con)m(trols)h(the)g(depth) -g(of)330 2677 y(de\014nitions)20 b(expanded;)25 b(see)e(the)g -(discussion)d(of)j(`)p Fr(--strace)p Fv(')d(in)i(Chapter)g(3)h -([Running)d(the)j(T)-8 b(ests],)330 2786 y(page)31 b(9.)199 -2921 y(3.)61 b(Finally)-8 b(,)24 b(if)e(the)i(v)-5 b(alue)23 -b(of)h(`)p Fr(verbose)p Fv(')e(is)h(3)h(or)f(greater,)k -Fr(runtest)22 b Fv(turns)g(on)h(the)h Fr(expect)e Fv(command)330 -3030 y Fr(log_user)p Fv(.)38 b(This)26 b(command)h(prin)m(ts)f(all)h -Fr(expect)f Fv(actions)i(to)g(the)g Fr(expect)e Fv(standard)h(output,)h -(to)330 3140 y(the)j(detailed)e(log)h(\014le,)g(and)g(\(if)g(`)p -Fr(--debug)p Fv(')f(is)g(on\))i(to)g(`)p Fr(dbg.log)p -Fv('.)150 3397 y Fu(6.3)68 b(Adding)44 b(a)h(test)h(case)g(to)f(a)g -(test)h(suite)275 3590 y Fv(There)32 b(are)h(t)m(w)m(o)h(sligh)m(tly)c -(di\013eren)m(t)j(w)m(a)m(ys)g(to)g(add)f(a)h(test)h(case.)48 -b(One)32 b(is)g(to)h(add)f(the)h(test)h(case)f(to)150 -3699 y(an)27 b(existing)f(directory)-8 b(.)40 b(The)26 -b(other)i(is)e(to)i(create)g(a)g(new)e(directory)h(to)h(hold)e(y)m(our) -h(test.)40 b(The)27 b(existing)150 3809 y(test)g(directories)e -(represen)m(t)h(sev)m(eral)g(st)m(yles)g(of)g(testing,)i(all)d(of)h -(whic)m(h)e(are)j(sligh)m(tly)d(di\013eren)m(t;)j(examine)150 -3919 y(the)k(directories)e(for)h(the)h(to)s(ol)f(of)h(in)m(terest)f(to) -h(see)g(whic)m(h)e(\(if)h(an)m(y\))h(is)e(most)i(suitable.)275 -4053 y(Adding)f(a)i Fo(gcc)f Fv(test)i(can)e(b)s(e)h(v)m(ery)g(simple:) -41 b(just)31 b(add)g(the)h(C)f(co)s(de)h(to)g(an)m(y)g(directory)g(b)s -(eginning)150 4163 y(with)d(`)p Fr(gcc.)p Fv(')h(and)g(it)f(runs)g(on)i -(the)f(next)h(`)p Fr(runtest)d(--tool)h(gcc)p Fv('.)275 -4297 y(T)-8 b(o)26 b(add)g(a)h(test)g(to)g Fo(gdb)p Fv(,)g(\014rst)f -(add)g(an)m(y)g(source)h(co)s(de)f(y)m(ou)h(will)d(need)i(to)h(the)f -(test)i(directory)-8 b(.)39 b(Then)150 4407 y(y)m(ou)29 -b(can)g(either)f(create)i(a)f(new)f Fr(expect)f Fv(\014le,)h(or)g(add)g -(y)m(our)h(test)g(to)h(an)e(existing)g(one)g(\(an)m(y)i(\014le)d(with)h -(a)150 4516 y(`)p Fr(.exp)p Fv(')g(su\016x\).)39 b(Creating)28 -b(a)g(new)g(`)p Fr(.exp)p Fv(')g(\014le)f(is)g(probably)g(a)i(b)s -(etter)f(idea)g(if)f(the)h(test)h(is)f(signi\014can)m(tly)150 -4626 y(di\013eren)m(t)36 b(from)f(existing)g(tests.)59 -b(Adding)34 b(it)i(as)g(a)g(separate)h(\014le)f(also)g(mak)m(es)g -(upgrading)f(easier.)57 b(If)150 4736 y(the)33 b(C)g(co)s(de)h(has)f -(to)h(b)s(e)e(already)h(compiled)f(b)s(efore)h(the)g(test)i(will)30 -b(run,)j(then)g(y)m(ou'll)f(ha)m(v)m(e)j(to)f(add)e(it)150 -4845 y(to)f(the)g(`)p Fr(Makefile.in)p Fv(')c(\014le)j(for)g(that)h -(test)g(directory)-8 b(,)31 b(then)f(run)f Fr(configure)f -Fv(and)h Fr(make)p Fv(.)275 4980 y(Adding)f(a)j(test)g(b)m(y)g -(creating)f(a)h(new)f(directory)g(is)f(v)m(ery)i(similar:)199 -5114 y(1.)61 b(Create)34 b(the)f(new)f(directory)-8 b(.)48 -b(All)31 b(sub)s(directory)g(names)i(b)s(egin)e(with)h(the)h(name)f(of) -h(the)g(to)s(ol)g(to)330 5224 y(test;)f(e.g.)43 b Fo(g)p -Fr(++)31 b Fv(tests)h(migh)m(t)e(b)s(e)g(in)g(a)h(directory)f(called)g -(`)p Fr(g++.other)p Fv('.)41 b(There)30 b(can)h(b)s(e)f(m)m(ultiple)330 -5333 y(test)h(directories)f(that)h(start)g(with)e(the)h(same)h(to)s(ol) -f(name)h(\(suc)m(h)f(as)h(`)p Fr(g++)p Fv('\).)p eop -%%Page: 41 43 -41 42 bop 150 -116 a Fv(Chapter)30 b(6:)41 b(Ho)m(w)31 -b(T)-8 b(o)31 b(W)-8 b(rite)31 b(a)f(T)-8 b(est)31 b(Case)1988 -b(41)199 83 y(2.)61 b(Add)28 b(the)i(new)e(directory)h(name)g(to)h(the) -g(`)p Fr(configdirs)p Fv(')c(de\014nition)h(in)h(the)i(`)p -Fr(configure.in)p Fv(')c(\014le)330 193 y(for)g(the)g(test)h(suite)e -(directory)-8 b(.)40 b(This)24 b(w)m(a)m(y)j(when)e Fr(make)g -Fv(and)g Fr(configure)f Fv(next)i(run,)g(they)g(include)330 -302 y(the)31 b(new)e(directory)-8 b(.)199 437 y(3.)61 -b(Add)29 b(the)i(new)f(test)h(case)h(to)f(the)f(directory)-8 -b(,)31 b(as)f(ab)s(o)m(v)m(e.)199 571 y(4.)61 b(T)-8 -b(o)36 b(add)f(supp)s(ort)e(in)h(the)i(new)f(directory)g(for)g -(con\014gure)g(and)g(mak)m(e,)i(y)m(ou)f(m)m(ust)f(also)h(create)h(a) -330 681 y Fr(Makefile.in)h Fv(and)i(a)h Fr(configure.in)p -Fv(.)69 b(See)41 b(section)g(\\What)g(Con\014gure)f(Do)s(es")i(in)e -Fq(Cygn)m(us)330 790 y(Con\014gure)5 b Fv(.)150 1048 -y Fu(6.4)68 b(Hin)l(ts)46 b(on)f(writing)g(a)h(test)g(case)275 -1240 y Fv(There)27 b(ma)m(y)h(b)s(e)g(useful)e(existing)g(pro)s -(cedures)h(already)g(written)g(for)h(y)m(our)g(test)g(in)f(the)h(`)p -Fr(lib)p Fv(')g(direc-)150 1350 y(tory)j(of)f(the)h(DejaGn)m(u)g -(distribution.)37 b(See)31 b(Section)f(5.3)h([DejaGn)m(u)h(Builtins],)c -(page)j(23.)275 1484 y(It)26 b(is)g(safest)h(to)g(write)f(patterns)h -(that)g(matc)m(h)g Fn(al)5 b(l)37 b Fv(the)27 b(output)f(generated)h(b) -m(y)g(the)g(tested)g(program;)150 1594 y(this)22 b(is)g(called)h -Fq(closure)p Fv(.)38 b(If)22 b(a)i(pattern)f(do)s(es)g(not)h(matc)m(h)g -(the)f(en)m(tire)g(output,)i(an)m(y)e(output)g(that)h(remains)150 -1704 y(will)35 b(b)s(e)j(examined)f(b)m(y)g(the)i Fn(next)46 -b Fr(expect)37 b Fv(command.)63 b(In)37 b(this)g(situation,)i(the)f -(precise)f(b)s(oundary)150 1813 y(that)32 b(determines)e(whic)m(h)g -Fr(expect)f Fv(command)i(sees)g(what)g(is)g(v)m(ery)g(sensitiv)m(e)g -(to)g(timing)f(b)s(et)m(w)m(een)i(the)150 1923 y Fr(expect)37 -b Fv(task)j(and)e(the)h(task)h(running)c(the)j(tested)h(to)s(ol.)66 -b(As)39 b(a)g(result,)h(the)g(test)f(ma)m(y)h(sometimes)150 -2032 y(app)s(ear)35 b(to)h(w)m(ork,)h(but)d(is)h(lik)m(ely)f(to)i(ha)m -(v)m(e)g(unpredictable)d(results.)54 b(\(This)34 b(problem)g(is)g -(particularly)150 2142 y(lik)m(ely)d(for)i(in)m(teractiv)m(e)h(to)s -(ols,)f(but)g(can)g(also)f(a\013ect)j(batc)m(h)e(to)s(ols|esp)s -(ecially)e(for)i(tests)h(that)f(tak)m(e)i(a)150 2252 -y(long)24 b(time)h(to)g(\014nish.\))37 b(The)24 b(b)s(est)g(w)m(a)m(y)i -(to)f(ensure)f(closure)g(is)g(to)i(use)e(the)h(`)p Fr(-re)p -Fv(')f(option)g(for)h(the)g Fr(expect)150 2361 y Fv(command)k(to)h -(write)f(the)h(pattern)f(as)h(a)g(full)d(regular)i(expressions;)f(then) -h(y)m(ou)h(can)g(matc)m(h)g(the)g(end)f(of)150 2471 y(output)i(using)f -(a)i(`)p Fr($)p Fv('.)44 b(It)31 b(is)g(also)g(a)h(go)s(o)s(d)f(idea)g -(to)h(write)f(patterns)g(that)h(matc)m(h)g(all)f(a)m(v)-5 -b(ailable)30 b(output)150 2580 y(b)m(y)36 b(using)f(`)p -Fr(.*\\)p Fv(')h(after)h(the)f(text)i(of)e(in)m(terest;)k(this)35 -b(will)f(also)i(matc)m(h)h(an)m(y)g(in)m(terv)m(ening)f(blank)e(lines.) -150 2690 y(Sometimes)e(an)h(alternativ)m(e)g(is)e(to)i(matc)m(h)h(end)e -(of)g(line)f(using)g(`)p Fr(\\r)p Fv(')i(or)f(`)p Fr(\\n)p -Fv(',)h(but)f(this)f(is)h(usually)e(to)s(o)150 2800 y(dep)s(enden)m(t)f -(on)i(terminal)e(settings.)275 2934 y(Alw)m(a)m(ys)45 -b(escap)s(e)g(punctuation,)j(suc)m(h)d(as)g(`)p Fr(\()p -Fv(')g(or)h(`)p Fr(")p Fv(',)j(in)43 b(y)m(our)j(patterns;)52 -b(for)45 b(example,)k(write)150 3044 y(`)p Fr(\\\()p -Fv('.)41 b(If)30 b(y)m(ou)h(forget)g(to)h(escap)s(e)f(punctuation,)e(y) -m(ou)i(will)d(usually)g(see)j(an)g(error)f(message)h(lik)m(e)f(`)p -Fr(extra)150 3153 y(characters)e(after)h(close-quote)p -Fv('.)275 3288 y(If)k(y)m(ou)h(ha)m(v)m(e)h(trouble)e(understanding)f -(wh)m(y)h(a)i(pattern)f(do)s(es)f(not)h(matc)m(h)h(the)f(program)g -(output,)150 3397 y(try)45 b(using)f(the)h(`)p Fr(--debug)p -Fv(')f(option)h(to)h Fr(runtest)p Fv(,)h(and)d(examine)h(the)h(debug)e -(log)h(carefully)-8 b(.)85 b(See)150 3507 y(Section)30 -b(5.7.3)i([Debug)f(Log],)h(page)f(36.)275 3641 y(Be)d(careful)f(not)h -(to)h(neglect)f(output)g(generated)g(b)m(y)g(setup)f(rather)h(than)f(b) -m(y)h(the)g(in)m(teresting)f(parts)150 3751 y(of)32 b(a)g(test)h(case.) -46 b(F)-8 b(or)33 b(example,)f(while)e(testing)i Fo(gdb)p -Fv(,)g(I)f(issue)g(a)h(send)f(`)p Fr(set)f(height)f(0\\n)p -Fv(')i(command.)150 3861 y(The)h(purp)s(ose)f(is)h(simply)f(to)i(mak)m -(e)h(sure)e Fo(gdb)h Fv(nev)m(er)g(calls)f(a)h(paging)f(program.)48 -b(The)33 b(`)p Fr(set)c(height)p Fv(')150 3970 y(command)39 -b(in)e Fo(gdb)i Fv(do)s(es)g(not)g(generate)h(an)m(y)g(output;)j(but)38 -b(running)e Fn(any)48 b Fv(command)38 b(mak)m(es)i Fo(gdb)150 -4080 y Fv(issue)28 b(a)h(new)g(`)p Fr(\(gdb\))g Fv(')g(prompt.)40 -b(If)28 b(there)i(w)m(ere)f(no)g Fr(expect)e Fv(command)i(to)h(matc)m -(h)g(this)e(prompt,)h(the)150 4189 y(output)c(`)p Fr(\(gdb\))k -Fv(')d(b)s(egins)e(the)i(text)h(seen)f(b)m(y)f(the)h(next)g -Fr(expect)e Fv(command|whic)m(h)g(migh)m(t)h(mak)m(e)i -Fn(that)150 4299 y Fv(pattern)j(fail)g(to)h(matc)m(h.)275 -4433 y(T)-8 b(o)39 b(preserv)m(e)g(basic)f(sanit)m(y)-8 -b(,)42 b(I)c(also)h(recommended)f(that)i(no)f(test)g(ev)m(er)h(pass)f -(if)e(there)i(w)m(as)h(an)m(y)150 4543 y(kind)32 b(of)i(problem)f(in)g -(the)h(test)h(case.)53 b(T)-8 b(o)34 b(tak)m(e)i(an)e(extreme)h(case,)h -(tests)f(that)f(pass)g(ev)m(en)h(when)e(the)150 4653 -y(to)s(ol)i(will)d(not)j(spa)m(wn)f(are)h(misleading.)51 -b(Ideally)-8 b(,)35 b(a)g(test)g(in)f(this)f(sort)i(of)g(situation)f -(should)e(not)j(fail)150 4762 y(either.)41 b(Instead,)31 -b(prin)m(t)e(an)i(error)f(message)i(b)m(y)e(calling)f(one)i(of)g(the)g -(DejaGn)m(u)g(pro)s(cedures)f Fr(error)f Fv(or)150 4872 -y Fr(warning)p Fv(.)p eop -%%Page: 42 44 -42 43 bop 150 -116 a Fv(42)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fu(6.5)68 b(Sp)t(ecial)45 -b(v)-7 b(ariables)46 b(used)f(b)l(y)g(test)h(cases)275 -276 y Fv(Y)-8 b(our)44 b(test)i(cases)f(can)g(use)f(these)h(v)-5 -b(ariables,)47 b(with)c(con)m(v)m(en)m(tional)j(meanings)d(\(as)i(w)m -(ell)f(as)h(the)150 385 y(v)-5 b(ariables)29 b(sa)m(v)m(ed)i(in)f(`)p -Fr(site.exp)p Fv(')e(see)j(Chapter)f(4)h([Setting)f Fr(runtest)e -Fv(defaults],)i(page)h(15\):)390 514 y Fn(These)i(variables)g(ar)-5 -b(e)34 b(available)g(to)f(al)5 b(l)33 b(test)g(c)-5 b(ases.)150 -698 y Fr(prms_id)144 b Fv(The)34 b(trac)m(king)h(system)f(\(e.g.)55 -b Fo(gna)-6 b(ts)p Fv(\))34 b(n)m(um)m(b)s(er)f(iden)m(tifying)f(a)j -(corresp)s(onding)d(bugre-)630 808 y(p)s(ort.)40 b(\(`)p -Fr(0)p Fv(')31 b(if)e(y)m(ou)i(do)f(not)h(sp)s(ecify)e(it)h(in)f(the)h -(test)i(script.\))150 992 y Fr(bug_id)192 b Fv(An)28 -b(optional)f(bug)g(id;)h(ma)m(y)h(re\015ect)f(a)h(bug)e(iden)m -(ti\014cation)g(from)g(another)i(organization.)630 1102 -y(\(`)p Fr(0)p Fv(')i(if)e(y)m(ou)i(do)f(not)h(sp)s(ecify)e(it.\))150 -1286 y Fr(subdir)192 b Fv(The)30 b(sub)s(directory)e(for)i(the)h -(curren)m(t)f(test)h(case.)390 1440 y Fn(These)i(variables)g(should)h -(never)f(b)-5 b(e)32 b(change)-5 b(d.)43 b(They)33 b(app)-5 -b(e)g(ar)36 b(in)c(most)i(tests.)150 1624 y Fr(expect_out\(buffer\))630 -1733 y Fv(The)27 b(output)f(from)h(the)g(last)g(command.)40 -b(This)25 b(is)h(an)h(in)m(ternal)f(v)-5 b(ariable)26 -b(set)h(b)m(y)g Fr(expect)p Fv(.)150 1918 y Fr(exec_output)630 -2027 y Fv(This)j(is)h(the)h(output)f(from)h(a)g Fq(to)s(ol)t -Fr(_load)e Fv(command.)45 b(This)30 b(only)g(applies)g(to)j(to)s(ols)f -(lik)m(e)630 2137 y Fo(gcc)37 b Fv(and)f Fo(gas)h Fv(whic)m(h)f(pro)s -(duce)g(an)h(ob)5 b(ject)38 b(\014le)f(that)g(m)m(ust)h(in)d(turn)i(b)s -(e)f(executed)i(to)630 2247 y(complete)31 b(a)g(test.)150 -2431 y Fr(comp_output)630 2540 y Fv(This)k(is)g(the)h(output)g(from)g -(a)h Fq(to)s(ol)t Fr(_start)d Fv(command.)58 b(This)35 -b(is)g(con)m(v)m(en)m(tionally)i(used)630 2650 y(for)d(batc)m(h)h -(orien)m(ted)f(programs,)i(lik)m(e)d Fo(gcc)h Fv(and)g -Fo(gas)p Fv(,)h(that)g(ma)m(y)g(pro)s(duce)f(in)m(teresting)630 -2760 y(output)c(\(w)m(arnings,)g(errors\))g(without)f(further)g(in)m -(teraction.)p eop -%%Page: 43 45 -43 44 bop 150 -116 a Fv(Chapter)30 b(7:)41 b(New)30 b(T)-8 -b(o)s(ols,)31 b(T)-8 b(argets,)31 b(or)g(Hosts)1888 b(43)150 -100 y Fs(7)80 b(New)54 b(T)-13 b(o)t(ols,)53 b(T)-13 -b(argets,)53 b(or)g(Hosts)275 334 y Fv(The)31 b(most)h(common)g(w)m(a)m -(ys)h(to)g(extend)f(the)g(DejaGn)m(u)h(framew)m(ork)f(are:)44 -b(adding)31 b(a)h(suite)f(of)h(tests)150 443 y(for)24 -b(a)h(new)e(to)s(ol)h(to)h(b)s(e)f(tested;)j(adding)c(supp)s(ort)g(for) -h(testing)g(on)g(a)h(new)e(target;)28 b(and)c(p)s(orting)f -Fr(runtest)150 553 y Fv(to)31 b(a)g(new)f(host.)150 810 -y Fu(7.1)68 b(W)-11 b(riting)46 b(tests)f(for)h(a)f(new)g(to)t(ol)275 -1003 y Fv(In)38 b(general,)j(the)e(b)s(est)f(w)m(a)m(y)i(to)g(learn)e -(ho)m(w)h(to)g(write)f(\(co)s(de)i(or)e(ev)m(en)i(prose\))f(is)f(to)h -(read)g(some-)150 1112 y(thing)34 b(similar.)52 b(This)34 -b(principle)e(applies)h(to)j(test)g(cases)g(and)e(to)i(test)g(suites.) -54 b(Unfortunately)-8 b(,)37 b(w)m(ell-)150 1222 y(established)42 -b(test)i(suites)f(ha)m(v)m(e)i(a)f(w)m(a)m(y)h(of)e(dev)m(eloping)g -(their)g(o)m(wn)h(con)m(v)m(en)m(tions:)68 b(as)44 b(test)g(writers)150 -1332 y(b)s(ecome)29 b(more)g(exp)s(erienced)e(with)h(DejaGn)m(u)h(and)g -(with)e(Tcl,)h(they)h(accum)m(ulate)h(more)f(utilities,)e(and)150 -1441 y(tak)m(e)32 b(adv)-5 b(an)m(tage)32 b(of)f(more)f(and)g(more)h -(features)f(of)h Fr(expect)d Fv(and)i(Tcl)g(in)f(general.)275 -1576 y(Insp)s(ecting)37 b(suc)m(h)h(established)f(test)j(suites)d(ma)m -(y)j(mak)m(e)f(the)g(prosp)s(ect)f(of)h(creating)g(an)g(en)m(tirely)150 -1685 y(new)31 b(test)h(suite)e(app)s(ear)h(o)m(v)m(erwhelming.)42 -b(Nev)m(ertheless,)32 b(it)f(is)f(quite)h(straigh)m(tforw)m(ard)g(to)h -(get)g(a)f(new)150 1795 y(test)g(suite)f(going.)275 1929 -y(There)e(is)g(one)h(test)g(suite)f(that)i(is)d(guaran)m(teed)j(not)f -(to)g(gro)m(w)h(more)f(elab)s(orate)g(o)m(v)m(er)h(time:)39 -b(b)s(oth)28 b(it)150 2039 y(and)34 b(the)g(to)s(ol)h(it)f(tests)h(w)m -(ere)g(created)g(expressly)f(to)h(illustrate)d(what)j(it)f(tak)m(es)i -(to)f(get)g(started)g(with)150 2149 y(DejaGn)m(u.)63 -b(The)37 b(`)p Fr(example/)p Fv(')f(directory)h(of)h(the)g(DejaGn)m(u)g -(distribution)c(con)m(tains)k(b)s(oth)f(an)g(in)m(ter-)150 -2258 y(activ)m(e)d(to)s(ol)f(called)f Fr(calc)p Fv(,)h(and)f(a)h(test)h -(suite)e(for)h(it.)47 b(Reading)33 b(this)f(test)h(suite,)g(and)g(exp)s -(erimen)m(ting)150 2368 y(with)h(it,)j(is)d(a)i(go)s(o)s(d)f(w)m(a)m(y) -i(to)f(supplemen)m(t)e(the)i(information)e(in)g(this)g(section.)56 -b(\(Thanks)35 b(to)h(Rob)s(ert)150 2477 y(Lupton)29 b(for)g(creating)h -Fr(calc)e Fv(and)h(its)g(test)h(suite|and)e(also)i(the)g(\014rst)e(v)m -(ersion)h(of)h(this)e(section)i(of)g(the)150 2587 y(man)m(ual!\))275 -2721 y(T)-8 b(o)31 b(help)f(orien)m(t)i(y)m(ou)f(further)g(in)f(this)g -(task,)i(here)g(is)e(an)h(outline)f(of)i(the)f(steps)h(to)g(b)s(egin)e -(building)150 2831 y(a)h(test)g(suite)f(for)g(a)h(program)f -Fq(example)p Fv(.)199 2966 y(1.)61 b(Create)38 b(or)g(select)g(a)g -(directory)g(to)g(con)m(tain)g(y)m(our)g(new)f(collection)g(of)h -(tests.)63 b(Change)38 b(to)g(that)330 3075 y(directory)30 -b(\(sho)m(wn)g(here)g(as)h Fr(testsuite)p Fv(\):)570 -3204 y Fr(eg$)47 b(cd)g(testsuite/)199 3338 y Fv(2.)61 -b(Create)51 b(a)g(`)p Fr(configure.in)p Fv(')d(\014le)i(in)f(this)g -(directory)-8 b(,)56 b(to)51 b(con)m(trol)g(con\014guration-dep)s -(enden)m(t)330 3448 y(c)m(hoices)36 b(for)e(y)m(our)h(tests.)56 -b(So)35 b(far)g(as)g(DejaGn)m(u)h(is)e(concerned,)i(the)f(imp)s(ortan)m -(t)g(thing)f(is)g(to)h(set)330 3557 y(a)g(v)-5 b(alue)33 -b(for)h(the)h(v)-5 b(ariable)33 b Fr(target_abbrev)p -Fv(;)f(this)h(v)-5 b(alue)34 b(is)f(the)i(link)d(to)j(the)f(init)f -(\014le)g(y)m(ou)i(will)330 3667 y(write)30 b(so)s(on.)40 -b(\(F)-8 b(or)32 b(simplicit)m(y)-8 b(,)28 b(w)m(e)j(assume)f(the)h(en) -m(vironmen)m(t)f(is)g(Unix,)f(and)h(use)g(`)p Fr(unix)p -Fv(')g(as)h(the)330 3777 y(v)-5 b(alue.\))330 3911 y(What)28 -b(else)g(is)f(needed)g(in)f(`)p Fr(configure.in)p Fv(')f(dep)s(ends)h -(on)h(the)h(requiremen)m(ts)f(of)h(y)m(our)g(to)s(ol,)g(y)m(our)330 -4021 y(in)m(tended)j(test)i(en)m(vironmen)m(ts,)f(and)g(whic)m(h)e -Fr(configure)g Fv(system)i(y)m(ou)h(use.)45 b(This)31 -b(example)g(is)h(a)330 4130 y(minimal)g Fr(configure.in)g -Fv(for)i(use)h(with)e(Cygn)m(us)h(Con\014gure.)54 b(\(F)-8 -b(or)36 b(an)e(alternativ)m(e)i(based)e(on)330 4240 y(the)d(FSF)g -Fr(autoconf)e Fv(system,)j(see)f(the)g Fr(calc)f Fv(example)h -(distributed)d(with)i(DejaGn)m(u.\))44 b(Replace)330 -4350 y Fq(example)35 b Fv(with)29 b(the)i(name)f(of)h(y)m(our)f -(program:)p eop -%%Page: 44 46 -44 45 bop 150 -116 a Fv(44)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)330 52 y Fm(\013)p 380 -52 3374 4 v 3373 w(\010)p 330 1683 4 1584 v 358 205 a -Fr(#)48 b(This)e(file)h(is)g(a)h(shell)e(script)g(fragment)358 -309 y(#)i(for)f(use)f(with)h(Cygnus)f(configure.)358 -516 y(srctrigger=")p Fq(example)p Fr(.0")358 620 y(srcname="The)f -(DejaGnu)g Fq(example)53 b Fr(tests")358 828 y(#)48 b(per-host:)358 -1035 y(#)g(per-target:)358 1243 y(#)g(everything)d(defaults)g(to)i -(unix)g(for)g(a)g(target)358 1347 y(target_abbrev=unix)358 -1554 y(#)h(post-target:)p 3803 1683 V 330 1735 a Fm(\012)p -380 1735 3374 4 v 3373 w(\011)199 1880 y Fv(3.)61 b(Create)28 -b(`)p Fr(Makefile.in)p Fv(',)e(the)i(source)f(\014le)g(used)g(b)m(y)g -Fr(configure)e Fv(to)j(build)d(y)m(our)i(`)p Fr(Makefile)p -Fv('.)38 b(Its)330 1989 y(leading)29 b(section)i(should)d(as)j(usual)e -(con)m(tain)h(the)h(v)-5 b(alues)30 b(that)g Fr(configure)e -Fv(ma)m(y)j(o)m(v)m(erride:)330 2070 y Fm(\013)p 380 -2070 V 3373 w(\010)p 330 3721 4 1604 v 358 2224 a Fr(srcdir)46 -b(=)i(.)358 2327 y(prefix)e(=)i(/usr/local)358 2535 y(exec_prefix)d(=)i -($\(prefix\))358 2639 y(bindir)f(=)i($\(exec_prefix\)/bin)358 -2742 y(libdir)e(=)i($\(exec_prefix\)/lib)358 2846 y(tooldir)e(=)h -($\(libdir\)/$\(target_alias\))358 3054 y(datadir)f(=)h -($\(exec_prefix\)/lib/dejagnu)358 3261 y(RUNTEST)f(=)h(runtest)358 -3365 y(RUNTESTFLAGS)e(=)358 3469 y(FLAGS_TO_PASS)f(=)358 -3676 y(####)j(host,)f(target,)g(site)h(specific)e(Makefile)h(frags)g -(come)h(in)g(here.)p 3803 3721 V 330 3773 a Fm(\012)p -380 3773 3374 4 v 3373 w(\011)330 3918 y Fv(This)26 b(should)g(b)s(e)h -(follo)m(w)m(ed)h(b)m(y)f(the)i(standard)e(targets)i(at)f(y)m(our)g -(site.)40 b(T)-8 b(o)28 b(b)s(egin)f(with,)g(they)h(need)330 -4028 y(not)j(do)f(an)m(ything|for)f(example,)i(these)g(de\014nitions)c -(will)h(do:)p eop -%%Page: 45 47 -45 46 bop 150 -116 a Fv(Chapter)30 b(7:)41 b(New)30 b(T)-8 -b(o)s(ols,)31 b(T)-8 b(argets,)31 b(or)g(Hosts)1888 b(45)330 -52 y Fm(\013)p 380 52 3374 4 v 3373 w(\010)p 330 1420 -4 1321 v 358 253 a Fr(all:)358 461 y(info:)358 668 y(install-info:)358 -876 y(install:)358 980 y(uninstall:)358 1187 y(clean:)740 -1291 y(-rm)47 b(-f)g(*~)g(core)g(*.info*)p 3803 1420 -V 330 1472 a Fm(\012)p 380 1472 3374 4 v 3373 w(\011)330 -1616 y Fv(It)30 b(is)f(also)h(a)g(go)s(o)s(d)g(idea)f(to)i(mak)m(e)g -(sure)e(y)m(our)h(`)p Fr(Makefile)p Fv(')e(can)i(rebuild)d(itself)i(if) -g(`)p Fr(Makefile.in)p Fv(')330 1726 y(c)m(hanges,)j(with)d(a)h(target) -i(lik)m(e)e(this)f(\(whic)m(h)h(w)m(orks)g(for)g(either)g(Cygn)m(us)g -(or)g(FSF)h(Con\014gure\):)330 1810 y Fm(\013)p 380 1810 -V 3373 w(\010)p 330 2223 4 366 v 358 1970 a Fr(Makefile)46 -b(:)h($\(srcdir\)/Makefile.in)42 b($\(host_makefile_frag\))g(\\)979 -2074 y($\(target_makefile_frag\))740 2178 y($\(SHELL\))k -(./config.status)p 3803 2223 V 330 2275 a Fm(\012)p 380 -2275 3374 4 v 3373 w(\011)330 2420 y Fv(Y)-8 b(ou)34 -b(also)f(need)g(to)h(include)d(t)m(w)m(o)j(targets)h(imp)s(ortan)m(t)d -(to)i(DejaGn)m(u:)47 b Fr(check)p Fv(,)33 b(to)h(run)e(the)h(tests,)330 -2530 y(and)d Fr(site.exp)p Fv(,)g(to)i(set)f(up)f(the)h(Tcl)g(copies)g -(of)g(con\014guration-dep)s(enden)m(t)f(v)-5 b(alues.)42 -b(The)30 b Fr(check)330 2639 y Fv(target)i(m)m(ust)e(run)f(`)p -Fr(runtest)g(--tool)f Fq(example)5 b Fv(':)330 2718 y -Fm(\013)p 380 2718 V 3373 w(\010)p 330 3121 4 356 v 358 -2871 a Fr(check:)46 b(site.exp)g(all)740 2975 y($\(RUNTEST\))f -($\(RUNTESTFLAGS\))f($\(FLAGS_TO_PASS\))f(\\)931 3078 -y(--tool)j Fq(example)53 b Fr(--srcdir)45 b($\(srcdir\))p -3803 3121 V 330 3173 a Fm(\012)p 380 3173 3374 4 v 3373 -w(\011)330 3323 y Fv(The)35 b Fr(site.exp)f Fv(target)k(should)33 -b(usually)h(set)j(up)d(\(among)j(other)f(things!\))57 -b(a)36 b(Tcl)f(v)-5 b(ariable)35 b(for)330 3433 y(the)c(name)f(of)h(y)m -(our)f(program:)p eop -%%Page: 46 48 -46 47 bop 150 -116 a Fv(46)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)330 52 y Fm(\013)p 380 -52 3374 4 v 3373 w(\010)p 330 3475 4 3376 v 358 213 a -Fr(site.exp:)45 b(./config.status)f(Makefile)740 316 -y(@echo)i("Making)g(a)i(new)f(config)f(file...")740 420 -y(-@rm)h(-f)g(./tmp?)740 524 y(@touch)f(site.exp)740 -731 y(-@mv)h(site.exp)e(site.bak)740 835 y(@echo)h("##)h(these)g -(variables)e(are)i(automatically\\)406 939 y(generated)e(by)i(make)g -(##")g(>)g(./tmp0)740 1043 y(@echo)f("#)i(Do)f(not)g(edit)f(here.)h(If) -g(you)g(wish)f(to\\)406 1147 y(override)f(these)i(values")f(>>)h -(./tmp0)740 1250 y(@echo)f("#)i(add)e(them)h(to)g(the)g(last)g -(section")e(>>)j(./tmp0)740 1354 y(@echo)e("set)h(host_os)f -(${host_os}")f(>>)i(./tmp0)740 1458 y(@echo)f("set)h(host_alias)e -(${host_alias}")f(>>)j(./tmp0)740 1562 y(@echo)f("set)h(host_cpu)f -(${host_cpu}")e(>>)j(./tmp0)740 1665 y(@echo)f("set)h(host_vendor)e -(${host_vendor}")e(>>)48 b(./tmp0)740 1769 y(@echo)e("set)h(target_os)e -(${target_os}")f(>>)k(./tmp0)740 1873 y(@echo)e("set)h(target_alias)d -(${target_alias}")g(>>)j(./tmp0)740 1977 y(@echo)f("set)h(target_cpu)e -(${target_cpu}")f(>>)j(./tmp0)740 2081 y(@echo)f("set)h(target_vendor)d -(${target_vendor}")f(>>)k(./tmp0)740 2184 y(@echo)f("set)h -(host_triplet)d(${host_canonical}")f(>>)k(./tmp0)740 -2288 y(@echo)f("set)h(target_triplet)d(${target_canonical}">>./)o(tmp0) -740 2392 y(@echo)i("set)h(tool)g(binutils")e(>>)i(./tmp0)740 -2496 y(@echo)f("set)h(srcdir)f(${srcdir}")f(>>)i(./tmp0)740 -2599 y(@echo)f("set)h(objdir)f(`pwd`")g(>>)h(./tmp0)740 -2703 y(@echo)f("set)h Fq(examplename)53 b(example)5 b -Fr(")47 b(>>)g(./tmp0)740 2807 y(@echo)f("##)h(All)g(variables)e(above) -i(are)g(generated)e(by\\)406 2911 y(configure.)g(Do)i(Not)g(Edit)g(##") -g(>>)g(./tmp0)1122 3015 y(@cat)f(./tmp0)h(>)g(site.exp)740 -3118 y(@sed)g(<)g(site.bak)f(\\)1074 3222 y(-e)h('1,/^##)f(All)h -(variables)e(above)i(are.*##/)e(d')i(\\)1074 3326 y(>>)g(site.exp)740 -3430 y(-@rm)g(-f)g(./tmp?)p 3803 3475 V 330 3527 a Fm(\012)p -380 3527 3374 4 v 3373 w(\011)199 3677 y Fv(4.)61 b(Create)31 -b(a)g(directory)f(\(in)f(`)p Fr(testsuite/)p Fv('\))g(called)g(`)p -Fr(config/)p Fv(':)570 3805 y Fr(eg$)47 b(mkdir)f(config)199 -3940 y Fv(5.)61 b(Mak)m(e)31 b(an)e(init)e(\014le)i(in)e(this)h -(directory;)i(its)e(name)i(m)m(ust)f(start)g(with)f(the)i -Fr(target_abbrev)25 b Fv(v)-5 b(alue,)330 4049 y(so)33 -b(call)g(it)f(`)p Fr(config/unix.exp)p Fv('.)45 b(This)32 -b(is)g(the)h(\014le)f(that)i(con)m(tains)f(the)g(target-dep)s(enden)m -(t)h(pro-)330 4159 y(cedures;)f(fortunately)-8 b(,)33 -b(most)g(of)f(them)h(do)f(not)g(ha)m(v)m(e)i(to)f(do)f(v)m(ery)h(m)m -(uc)m(h)f(in)f(order)h(for)g Fr(runtest)330 4269 y Fv(to)f(run.)330 -4403 y(If)f Fq(example)35 b Fv(is)29 b(not)i(in)m(teractiv)m(e,)g(y)m -(ou)g(can)f(get)i(a)m(w)m(a)m(y)g(with)d(this)g(minimal)f(`)p -Fr(unix.exp)p Fv(')g(to)j(b)s(egin)330 4513 y(with:)330 -4574 y Fm(\013)p 380 4574 V 3373 w(\010)p 330 4883 4 -262 v 358 4734 a Fr(proc)47 b(foo_exit)e({})j({})358 -4838 y(proc)f(foo_version)e({})i({})p 3803 4883 V 330 -4935 a Fm(\012)p 380 4935 3374 4 v 3373 w(\011)330 5080 -y Fv(If)30 b Fq(example)36 b Fv(is)30 b(in)m(teractiv)m(e,)h(ho)m(w)m -(ev)m(er,)i(y)m(ou)e(migh)m(t)f(as)h(w)m(ell)f(de\014ne)g(a)h(start)g -(routine)f Fn(and)k(invoke)330 5190 y(it)39 b Fv(b)m(y)30 -b(using)f(an)h(init)f(\014le)h(lik)m(e)f(this:)p eop -%%Page: 47 49 -47 48 bop 150 -116 a Fv(Chapter)30 b(7:)41 b(New)30 b(T)-8 -b(o)s(ols,)31 b(T)-8 b(argets,)31 b(or)g(Hosts)1888 b(47)330 -52 y Fm(\013)p 380 52 3374 4 v 3373 w(\010)p 330 1284 -4 1185 v 358 213 a Fr(proc)47 b(foo_exit)e({})j({})358 -316 y(proc)f(foo_version)e({})i({})358 524 y(proc)g(foo_start)e({})i({) -454 628 y(global)f Fq(examplename)454 731 y Fr(spawn)g($)p -Fq(examplename)454 835 y Fr(expect)g({)549 939 y(-re)h("")g({})454 -1043 y(})358 1147 y(})358 1250 y(foo_start)p 3803 1284 -V 330 1336 a Fm(\012)p 380 1336 3374 4 v 3373 w(\011)199 -1481 y Fv(6.)61 b(Create)31 b(a)g(directory)f(whose)g(name)g(b)s(egins) -f(with)g(y)m(our)i(to)s(ol's)f(name,)h(to)g(con)m(tain)g(tests:)570 -1609 y Fr(eg$)47 b(mkdir)f Fq(example)p Fr(.0)199 1744 -y Fv(7.)61 b(Create)33 b(a)g(sample)f(test)h(\014le)f(in)f(`)p -Fq(example)p Fr(.0)p Fv('.)47 b(Its)32 b(name)h(m)m(ust)f(end)g(with)f -(`)p Fr(.exp)p Fv(';)j(y)m(ou)e(can)h(use)330 1853 y(`)p -Fr(first-try.exp)p Fv(')27 b(T)-8 b(o)30 b(b)s(egin)e(with,)h(just)g -(write)g(there)h(a)g(line)e(of)i(Tcl)f(co)s(de)h(to)h(issue)d(a)j -(message:)330 1935 y Fm(\013)p 380 1935 V 3373 w(\010)p -330 2140 4 159 v 358 2095 a Fr(send_user)45 b("Testing:)h(one,)g -(two...\\n")p 3803 2140 V 330 2192 a Fm(\012)p 380 2192 -3374 4 v 3373 w(\011)199 2342 y Fv(8.)61 b(Bac)m(k)32 -b(in)d(the)i(`)p Fr(testsuite/)p Fv(')d(\(top)j(lev)m(el\))f(directory) --8 b(,)31 b(run)570 2471 y Fr(eg$)47 b(configure)330 -2606 y Fv(\(Y)-8 b(ou)36 b(ma)m(y)f(ha)m(v)m(e)i(to)e(sp)s(ecify)f -(more)h(of)g(a)g(path,)i(if)c(a)j(suitable)d Fr(configure)g -Fv(is)h(not)h(a)m(v)-5 b(ailable)34 b(in)330 2715 y(y)m(our)c -(execution)h(path.\))199 2850 y(9.)61 b(Y)-8 b(ou)34 -b(are)g(no)m(w)g(ready)g(to)g(triumphan)m(tly)e(t)m(yp)s(e)i(`)p -Fr(make)29 b(check)p Fv(')k(or)g(`)p Fr(runtest)c(--tool)g -Fq(example)5 b Fv('.)330 2959 y(Y)-8 b(ou)31 b(should)d(see)j -(something)f(lik)m(e)g(this:)330 3038 y Fm(\013)p 380 -3038 V 3373 w(\010)p 330 4046 4 961 v 358 3191 a Fr(Test)47 -b(Run)g(By)g(rhl)g(on)g(Fri)g(Jan)g(29)g(16:25:44)f(EST)g(1993)1122 -3399 y(===)h Fq(example)52 b Fr(tests)47 b(===)358 3606 -y(Running)f(./)p Fq(example)p Fr(.0/first-try.exp)d(...)358 -3710 y(Testing:)j(one,)g(two...)1122 3917 y(===)h Fq(example)52 -b Fr(Summary)46 b(===)p 3803 4046 V 330 4098 a Fm(\012)p -380 4098 3374 4 v 3373 w(\011)330 4243 y Fv(There)35 -b(is)g(no)g(output)h(in)e(the)i(summary)-8 b(,)36 b(b)s(ecause)g(so)g -(far)f(the)h(example)g(do)s(es)f(not)h(call)f(an)m(y)h(of)330 -4352 y(the)31 b(pro)s(cedures)e(that)i(establish)d(a)j(test)g(outcome.) -154 4487 y(10.)61 b(Begin)39 b(writing)e(some)i(real)g(tests.)67 -b(F)-8 b(or)40 b(an)f(in)m(teractiv)m(e)h(to)s(ol,)h(y)m(ou)e(should)e -(probably)g(write)i(a)330 4597 y(real)31 b(exit)f(routine)g(in)g -(fairly)f(short)i(order;)f(in)g(an)m(y)h(case,)i(y)m(ou)e(should)e -(also)i(write)f(a)h(real)f(v)m(ersion)330 4706 y(routine)f(so)s(on.)p -eop -%%Page: 48 50 -48 49 bop 150 -116 a Fv(48)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fu(7.2)68 b(Adding)44 -b(a)h(target)275 276 y Fv(DejaGn)m(u)j(has)f(some)h(additional)e -(requiremen)m(ts)h(for)g(target)i(supp)s(ort,)i(b)s(ey)m(ond)c(the)h -(general-)150 385 y(purp)s(ose)37 b(pro)m(visions)g(of)h(Cygn)m(us)g -Fr(configure)p Fv(.)63 b Fr(runtest)37 b Fv(m)m(ust)h(activ)m(ely)h -(comm)m(unicate)g(with)f(the)150 495 y(target,)31 b(rather)e(than)g -(simply)e(generating)i(or)g(managing)g(co)s(de)g(for)g(the)h(target)g -(arc)m(hitecture.)41 b(There-)150 604 y(fore,)30 b(eac)m(h)i(to)s(ol)d -(requires)g(an)h(initialization)d(mo)s(dule)h(for)i(eac)m(h)h(target.) -42 b(F)-8 b(or)31 b(new)e(targets,)j(y)m(ou)e(m)m(ust)150 -714 y(supply)21 b(a)j(few)g(Tcl)e(pro)s(cedures)h(to)h(adapt)g(DejaGn)m -(u)g(to)h(the)f(target.)40 b(This)21 b(p)s(ermits)h(DejaGn)m(u)j -(itself)d(to)150 824 y(remain)j(target)i(indep)s(enden)m(t.)37 -b(See)26 b(Section)f(5.2)i([Initialization)c(mo)s(dule],)j(page)g(22,)i -(for)d(a)i(discussion)150 933 y(of)k(the)f(naming)f(con)m(v)m(en)m -(tions)j(that)f(enable)f(DejaGn)m(u)h(to)g(lo)s(cate)g(and)f(use)g -(init)f(\014les.)275 1068 y(Usually)24 b(the)i(b)s(est)f(w)m(a)m(y)i -(to)g(write)e(a)h(new)g(initialization)c(mo)s(dule)j(is)g(to)h(edit)g -(an)f(existing)g(initializa-)150 1177 y(tion)30 b(mo)s(dule;)g(some)h -(trial)f(and)g(error)g(will)e(b)s(e)i(required.)41 b(If)30 -b(necessary)-8 b(,)32 b(y)m(ou)f(can)g(use)f(the)h(`)p -Fr(--debug)p Fv(')150 1287 y(option)f(to)h(see)g(what)f(is)g(really)f -(going)h(on.)275 1421 y(When)f(y)m(ou)h(co)s(de)g(an)f(initialization)e -(mo)s(dule,)h(b)s(e)h(generous)h(in)e(prin)m(ting)f(information)h(con)m -(trolled)150 1531 y(b)m(y)i(the)h Fr(verbose)d Fv(pro)s(cedure)h(\(see) -j(Section)e(5.3)h([DejaGn)m(u)h(Builtins],)c(page)j(23\).)275 -1665 y(Most)40 b(of)f(the)h(w)m(ork)g(is)e(in)g(getting)i(the)g(comm)m -(unications)f(righ)m(t.)67 b(Comm)m(unications)38 b(co)s(de)i(\(for)150 -1775 y(sev)m(eral)26 b(situations)e(in)m(v)m(olving)g(IP)h(net)m(w)m -(orks)h(or)f(serial)f(lines\))g(is)h(a)m(v)-5 b(ailable)25 -b(in)f(a)h(DejaGn)m(u)i(library)c(\014le,)150 1885 y(`)p -Fr(lib/remote.exp)p Fv('.)37 b(See)31 b(Section)f(5.3)i([DejaGn)m(u)f -(Builtins],)d(page)j(23.)275 2019 y(If)e(y)m(ou)i(susp)s(ect)e(a)i -(comm)m(unication)f(problem,)f(try)h(running)d(the)k(connection)f(in)m -(teractiv)m(ely)g(from)150 2129 y Fr(expect)p Fv(.)37 -b(\(There)24 b(are)h(three)f(w)m(a)m(ys)h(of)g(running)c -Fr(expect)i Fv(as)i(an)f(in)m(teractiv)m(e)h(in)m(terpreter.)38 -b(Y)-8 b(ou)25 b(can)f(run)150 2238 y Fr(expect)k Fv(with)g(no)h -(argumen)m(ts,)h(and)f(con)m(trol)h(it)f(completely)g(in)m(teractiv)m -(ely;)h(or)f(y)m(ou)h(can)f(use)g(`)p Fr(expect)150 2348 -y(-i)p Fv(')c(together)i(with)e(other)g(command-line)f(options)h(and)g -(argumen)m(ts;)j(or)e(y)m(ou)f(can)h(run)e(the)i(command)150 -2457 y Fr(interpreter)f Fv(from)i(an)m(y)i Fr(expect)d -Fv(pro)s(cedure.)39 b(Use)28 b Fr(return)e Fv(to)j(get)g(bac)m(k)g(to)f -(the)h(calling)d(pro)s(cedure)150 2567 y(\(if)32 b(an)m(y\),)i(or)e -Fr(return)d(-tcl)i Fv(to)i(mak)m(e)h(the)e(calling)f(pro)s(cedure)g -(itself)h(return)f(to)i(its)f(caller;)h(use)f Fr(exit)150 -2677 y Fv(or)40 b(end-of-\014le)g(to)h(lea)m(v)m(e)g -Fr(expect)e Fv(altogether.\))72 b(Run)39 b(the)h(program)h(whose)f -(name)g(is)f(recorded)h(in)150 2786 y(`)p Fr($connectmode)p -Fv(',)45 b(with)d(the)j(argumen)m(ts)f(in)e(`)p Fr($targetname)p -Fv(',)j(to)g(establish)d(a)j(connection.)81 b(Y)-8 b(ou)150 -2896 y(should)28 b(at)j(least)g(b)s(e)f(able)g(to)h(get)g(a)g(prompt)f -(from)g(an)m(y)g(target)i(that)f(is)f(ph)m(ysically)e(connected.)150 -3153 y Fu(7.3)68 b(P)l(orting)46 b(to)f(a)g(new)h(host)275 -3346 y Fv(The)c(task)i(of)f(p)s(orting)f(DejaGn)m(u)h(is)g(basically)e -(that)j(of)f(p)s(orting)e(Tcl)i(and)f Fr(expect)p Fv(.)77 -b(Tcl)43 b(and)150 3455 y Fr(expect)p Fv(,)31 b(as)h(distributed)e -(with)g(DejaGn)m(u,)k(b)s(oth)d(use)h Fr(autoconf)p Fv(;)f(they)h -(should)f(p)s(ort)g(automatically)150 3565 y(to)g(most)g(Unix)e -(systems.)275 3699 y(Once)k(Tcl)g(and)g Fr(expect)e Fv(are)j(p)s -(orted,)g(DejaGn)m(u)h(should)c(run.)49 b(Most)34 b(system)g(dep)s -(endencies)e(are)150 3809 y(tak)m(en)f(care)h(of)e(b)m(y)g(using)f -Fr(expect)g Fv(as)i(the)f(main)f(command)i(shell.)p eop -%%Page: 49 51 -49 50 bop 150 -116 a Fv(App)s(endix)28 b(A:)i(Installing)e(DejaGn)m(u) -2215 b(49)150 100 y Fs(App)t(endix)53 b(A)81 b(Installing)55 -b(DejaGn)l(u)275 301 y Fv(Once)27 b(y)m(ou)h(ha)m(v)m(e)h(the)f(DejaGn) -m(u)h(source)f(unpac)m(k)m(ed)g(and)f(a)m(v)-5 b(ailable,)28 -b(y)m(ou)g(m)m(ust)f(\014rst)g(con\014gure)h(the)150 -411 y(soft)m(w)m(are)35 b(to)g(sp)s(ecify)d(where)i(it)f(is)g(to)h(run) -f(\(and)g(the)h(asso)s(ciated)g(defaults\);)h(then)f(y)m(ou)g(can)g -(pro)s(ceed)150 520 y(to)d(installing)d(it.)150 758 y -Fu(A.1)67 b(Con\014guring)45 b(the)h(DejaGn)l(u)f(test)h(driv)l(er)275 -944 y Fv(It)37 b(is)g(usually)e(b)s(est)i(to)h(con\014gure)g(in)e(a)i -(directory)f(separate)h(from)f(the)h(source)g(tree,)i(sp)s(ecifying)150 -1054 y(where)29 b(to)i(\014nd)d(the)j(source)f(with)e(the)i(optional)f -(`)p Fr(--srcdir)p Fv(')g(option)g(to)i Fr(configure)p -Fv(.)38 b(DejaGn)m(u)30 b(uses)150 1164 y(the)39 b(GNU)h -Fr(autoconf)c Fv(to)k(con\014gure)e(itself.)65 b(F)-8 -b(or)40 b(more)f(info)f(on)h(using)e(auto)s(conf,)k(read)e(the)g(GNU) -150 1273 y(auto)s(conf)i(man)m(ual.)70 b(T)-8 b(o)41 -b(con\014gure,)i(execute)f(the)e(`)p Fr(configure)p Fv(')f(program,)k -(no)d(other)h(options)f(are)150 1383 y(required.)f(F)-8 -b(or)31 b(an)f(example,)h(to)g(con\014gure)f(in)f(a)i(sep)s(erate)f -(tree)h(for)g(ob)5 b(jects,)31 b(execute)h(the)e(con\014gure)150 -1492 y(script)f(from)h(the)h(source)f(tree)h(lik)m(e)f(this:)390 -1615 y Fr(../dejagnu-1.3/configure)275 1743 y Fv(DejaGn)m(u)f(do)s -(esn't)g(care)g(at)g(con\014g)g(time)g(if)e(it's)i(for)f(testing)h(a)g -(nativ)m(e)g(system)g(or)g(a)g(cross)g(system.)150 1852 -y(That)h(is)g(determined)f(at)i(run)m(time)e(b)m(y)h(using)f(the)i -(con\014g)f(\014les.)275 1980 y(Y)-8 b(ou)49 b(ma)m(y)g(also)g(w)m(an)m -(t)h(to)g(use)e(the)h Fr(configure)e Fv(option)h(`)p -Fr(--prefix)p Fv(')f(to)j(sp)s(ecify)d(where)i(y)m(ou)150 -2090 y(w)m(an)m(t)f(DejaGn)m(u)f(and)f(its)g(supp)s(orting)e(co)s(de)j -(installed.)88 b(By)47 b(default,)j(installation)44 b(is)i(in)g(sub)s -(di-)150 2199 y(rectories)40 b(of)f(`)p Fr(/usr/local)p -Fv(',)g(but)g(y)m(ou)g(can)h(select)g(an)m(y)f(alternate)h(directory)f -Fq(altdir)44 b Fv(b)m(y)39 b(including)150 2309 y(`)p -Fr(--prefix=)p Fq(altdir)7 b Fv(')23 b(on)k(the)g Fr(configure)d -Fv(command)j(line.)37 b(\(This)26 b(v)-5 b(alue)26 b(is)g(captured)h -(in)e(the)i(Mak)m(e\014le)150 2419 y(v)-5 b(ariables)29 -b Fr(prefix)g Fv(and)g Fr(exec_prefix)p Fv(.\))275 2547 -y(Sa)m(v)m(e)46 b(for)e(a)i(small)d(n)m(um)m(b)s(er)g(of)i(example)g -(tests,)k(the)d(DejaGn)m(u)f(distribution)c(itself)j(do)s(es)h(not)150 -2656 y(include)38 b(an)m(y)j(test)g(suites;)j(these)d(are)f(a)m(v)-5 -b(ailable)40 b(separately)-8 b(.)71 b(T)-8 b(est)41 b(suites)e(for)h -(the)g Fo(gnu)g Fv(compiler)150 2766 y(\(testing)e(b)s(oth)g(GCC)f(and) -g(G)p Fr(++)p Fv(\))h(and)g(for)g(the)g Fo(gnu)f Fv(binary)g(utilities) -e(are)j(distributed)d(in)i(parallel)150 2875 y(with)29 -b(the)h(DejaGn)m(u)h(distribution)26 b(\(but)k(pac)m(k)-5 -b(aged)31 b(as)g(separate)g(\014les\).)39 b(The)30 b(test)h(suite)e -(for)h(the)g Fo(gnu)150 2985 y Fv(debugger)h(is)f(distributed)e(in)i -(parallel)g(with)f(eac)m(h)k(release)e(of)h(GDB)g(itself,)e(starting)h -(with)f(GDB)j(4.9.)150 3095 y(After)27 b(con\014guring)e(the)h(top-lev) -m(el)h(DejaGn)m(u)g(directory)-8 b(,)27 b(unpac)m(k)f(and)g -(con\014gure)g(the)h(test)g(directories)150 3204 y(for)40 -b(the)h(to)s(ols)f(y)m(ou)h(w)m(an)m(t)g(to)g(test;)47 -b(then,)c(in)c(eac)m(h)j(test)f(directory)-8 b(,)43 b(run)c -Fr(make)h Fv(to)h(build)c(auxiliary)150 3314 y(programs)30 -b(required)f(b)m(y)h(some)h(of)f(the)h(tests.)150 3552 -y Fu(A.2)67 b(Installing)47 b(DejaGn)l(u)275 3738 y Fv(T)-8 -b(o)36 b(install)e(DejaGn)m(u)k(in)d(y)m(our)h(\014lesystem)f(\(either) -i(in)e(`)p Fr(/usr/local)p Fv(',)g(or)i(as)f(sp)s(eci\014ed)f(b)m(y)h -(y)m(our)150 3847 y(`)p Fr(--prefix)p Fv(')29 b(option)g(to)j -Fr(configure)p Fv(\),)c(execute)390 3969 y Fr(eg$)47 -b(make)g(install)150 4098 y Fv(`)p Fr(make)29 b(install)p -Fv(')g(do)s(es)h(these)h(things)e(for)h(DejaGn)m(u:)199 -4226 y(1.)61 b(Lo)s(ok)28 b(in)f(the)h(path)f(sp)s(eci\014ed)g(for)g -(executables)i(\(`)p Fr($exec_prefix)p Fv('\))d(for)h(directories)g -(called)g(`)p Fr(lib)p Fv(')330 4335 y(and)j(`)p Fr(bin)p -Fv('.)40 b(If)30 b(these)h(directories)e(do)i(not)f(exist,)h(`)p -Fr(make)e(install)p Fv(')g(creates)i(them.)199 4463 y(2.)61 -b(Create)31 b(another)g(directory)f(in)f(the)h(`)p Fr(lib)p -Fv(')g(directory)-8 b(,)31 b(called)e(`)p Fr(dejagnu)p -Fv('.)199 4591 y(3.)61 b(Cop)m(y)30 b(the)h Fr(runtest)d -Fv(shell)h(script)g(in)m(to)i(`)p Fr($exec_prefix/bin)p -Fv('.)199 4719 y(4.)61 b(Cop)m(y)20 b(all)f(the)i(library)d(\014les)h -(\(used)h(to)h(supp)s(ort)d(the)j(framew)m(ork\))g(in)m(to)f(`)p -Fr($exec_prefix/lib/dejagnu)o Fv('.)199 4847 y(5.)61 -b(Cop)m(y)40 b(`)p Fr(runtest.exp)p Fv(')e(in)m(to)i(`)p -Fr($exec_prefix/lib/dejagnu)o Fv('.)65 b(This)38 b(is)h(the)h(main)f -(Tcl)h(co)s(de)330 4957 y(implemen)m(ting)28 b(DejaGn)m(u.)275 -5103 y(Eac)m(h)33 b(test)h(suite)e(collection)h(comes)g(with)f(simple)f -(installation)f(instructions)h(in)h(a)h(`)p Fr(README)p -Fv(')f(\014le;)150 5213 y(in)43 b(general,)49 b(the)c(test)g(suites)f -(are)h(designed)e(to)j(b)s(e)e(unpac)m(k)m(ed)g(in)g(the)g(source)h -(directory)f(for)h(the)150 5322 y(corresp)s(onding)28 -b(to)s(ol,)j(and)f(extract)i(in)m(to)e(a)h(directory)f(called)f(`)p -Fr(testsuite)p Fv('.)p eop -%%Page: 50 52 -50 51 bop 150 -116 a Fv(50)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)p eop -%%Page: 51 53 -51 52 bop 150 -116 a Fv(Index)3286 b(51)150 100 y Fs(Index)150 -1097 y Fu(-)150 1255 y Ff(--all)27 b Fe(\()p Ff(runtest)g -Fe(option\))20 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)46 b Fe(10)150 -1366 y Ff(--baud)27 b Fe(\()p Ff(runtest)g Fe(option\))19 -b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)44 b Fe(11)150 1476 y Ff(--build)27 -b Fe(\()p Ff(runtest)g Fe(option\))17 b Fd(.)c(.)g(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fe(11)150 1587 y Ff(--connect)28 b Fe(\()p Ff(runtest)f -Fe(option\))15 b Fd(.)d(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)40 b Fe(11)150 1698 y Ff(--debug)27 -b Fe(\()p Ff(runtest)g Fe(option\))17 b Fd(.)c(.)g(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fe(11)150 1809 y Ff(--help)27 b Fe(\()p Ff(runtest)g -Fe(option\))19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fe(11)150 1920 -y Ff(--host)27 b Fe(\()p Ff(runtest)g Fe(option\))19 -b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)44 b Fe(11)150 2031 y Ff(--name)27 -b Fe(\()p Ff(runtest)g Fe(option\))19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 -b Fe(11)150 2142 y Ff(--objdir)27 b Fe(\()p Ff(runtest)g -Fe(option\))16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)42 b Fe(12)150 2252 y Ff(--outdir)27 -b Fe(\()p Ff(runtest)g Fe(option\))16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)42 b Fe(12)150 -2363 y Ff(--reboot)27 b Fe(\()p Ff(runtest)g Fe(option\))16 -b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)42 b Fe(12)150 2474 y Ff(--srcdir)27 b Fe(\()p -Ff(runtest)g Fe(option\))16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)42 b Fe(12)150 2585 -y Ff(--strace)27 b Fe(\()p Ff(runtest)g Fe(option\))16 -b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)42 b Fe(12)150 2696 y Ff(--target)27 b Fe(\()p -Ff(runtest)g Fe(option\))16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)42 b Fe(12)150 2807 -y Ff(--tool)27 b Fe(\()p Ff(runtest)g Fe(option\))19 -b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)44 b Fe(10)150 2918 y Ff(--tool)27 -b Fe(and)e(naming)g(con)n(v)n(en)n(tions)9 b Fd(.)j(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fe(21)150 3028 -y Ff(--verbose)28 b Fe(\()p Ff(runtest)f Fe(option\))15 -b Fd(.)d(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)40 b Fe(13)150 3139 y Ff(--version)28 b Fe(\()p Ff(runtest)f -Fe(option\))15 b Fd(.)d(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)40 b Fe(13)150 3250 y Ff(-b)26 b Fe(\()p -Ff(runtest)h Fe(option\))7 b Fd(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32 -b Fe(11)150 3361 y Ff(-v)26 b Fe(\()p Ff(runtest)h Fe(option\))7 -b Fd(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32 b Fe(13)150 -3472 y Ff(-V)26 b Fe(\()p Ff(runtest)h Fe(option\))7 -b Fd(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32 b Fe(13)150 -3805 y Fu(.)150 3962 y Ff(.exp)14 b Fd(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 -b Fe(1)150 4296 y Fu(A)150 4453 y Ff(absolute)27 b Fc(path)8 -b Fd(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33 -b Fe(28)150 4564 y(adding)26 b(a)g(target)14 b Fd(.)f(.)f(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fe(48)150 4675 y(adding)26 -b(a)g(test)f(case)8 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 -b Fe(40)150 4786 y Ff(all_flag)7 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fe(17)150 -4897 y(am)n(biguit)n(y)-6 b(,)24 b(required)i(for)g(POSIX)11 -b Fd(.)g(.)i(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -37 b Fe(7)150 5007 y(arc)n(hiv)n(e)26 b(ob)t(ject)g(\014les)15 -b Fd(.)e(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(30)150 -5118 y(auxiliary)26 b(\014les,)h(building)16 b Fd(.)c(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)43 b Fe(3)150 5229 y(auxiliary)26 b(programs)11 b -Fd(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)36 b Fe(49)150 -5340 y(auxiliary)26 b(test)g(programs)9 b Fd(.)j(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 -b Fe(12)2025 424 y Fu(B)2025 557 y Ff(baud)13 b Fd(.)g(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 -b Fe(17)2025 657 y(baud)25 b(rate,)h(sp)r(ecifying)12 -b Fd(.)i(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)38 b Fe(11)2025 756 y(bps,)25 -b(sp)r(ecifying)8 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)33 b Fe(11)2025 856 y Ff(bt)15 b Fd(.)e(.)f(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 -b Fe(31)2025 956 y(bug)25 b(n)n(um)n(b)r(er)16 b Fd(.)11 -b(.)h(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)42 -b Fe(42)2025 1055 y(bug)25 b(n)n(um)n(b)r(er,)f(extra)15 -b Fd(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fe(42)2025 -1155 y Ff(bug_id)10 b Fd(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fe(42)2025 1254 -y(build)25 b(con\014g)h(name,)f(c)n(hanging)c Fd(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 -b Fe(11)2025 1354 y(build)25 b(host)h(con\014guration)g(test)14 -b Fd(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)40 b Fe(25)2025 1454 y Ff(build_triplet)18 b Fd(.)d(.)d(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 b Fe(17)2025 1553 y(built)25 -b(in)h(pro)r(cedures,)g(DejaGn)n(u)19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fe(23)2025 -1819 y Fu(C)2025 1952 y Fe(C)26 b(torture)f(test)d Fd(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)47 -b Fe(39)2025 2052 y(canadian)26 b(cross)h(con\014guration)f(test)12 -b Fd(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 -b Fe(25)2025 2151 y(cancelling)27 b(exp)r(ected)e(failure)11 -b Fd(.)j(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)37 b Fe(26)2025 2251 y Ff(check)26 b Fe(mak)n(e\014le)f -(target)e Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fe(3)2025 -2351 y Ff(clear_xfail)28 b Fc(con\014g)22 b Fd(.)12 b(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)41 b Fe(26)2025 2450 y(Closing)27 b(a)f(remote)f -(connection)14 b Fd(.)g(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)40 b Fe(27)2025 2550 y(command)24 -b(line)i(option)g(v)l(ariables)13 b Fd(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)39 b Fe(17)2025 2650 y(command)24 -b(line)i(options)13 b Fd(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 -b Fe(9)2025 2749 y(command)24 b(line)i(Tcl)g(v)l(ariable)g -(de\014nition)18 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 -b Fe(10)2025 2849 y(comm)n(unications)24 b(pro)r(cedures)9 -b Fd(.)k(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)35 b Fe(26)2025 2948 y Ff(comp_output)23 b Fd(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46 -b Fe(42)2025 3048 y(comparing)25 b(\014les)c Fd(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46 b Fe(28)2025 -3148 y(compile)25 b(a)h(\014le)14 b Fd(.)f(.)g(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)40 b Fe(29)2025 3247 y(con\014guration)26 -b(dep)r(enden)n(t)e(defaults)14 b Fd(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)39 b Fe(15)2025 3347 y(con\014guring)26 -b(DejaGn)n(u)16 b Fd(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b -Fe(49)2025 3447 y(connecting)26 b(to)g(target)e Fd(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fe(11)2025 3546 y Ff(connectmode)23 -b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)46 -b Fe(17)2025 3646 y(con)n(v)n(erting)25 b(relativ)n(e)i(paths)e(to)h -(absolute)d Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 -b Fe(28)2025 3746 y(Core)26 b(In)n(ternal)g(Pro)r(cedures)14 -b Fd(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)39 b Fe(23)2025 3845 y(cross)27 b(con\014guration)14 -b Fd(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 b Fe(4)2025 -3945 y(curren)n(t)25 b(test)h(sub)r(directory)18 b Fd(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)44 b Fe(42)2025 4211 y Fu(D)2025 4344 y Ff(dbg.log)27 -b Fe(\014le)19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)45 b Fe(11)2025 4443 y(debug)25 b(log)c Fd(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 -b Fe(36)2025 4543 y(debug)25 b(log)i(for)f(test)g(cases)8 -b Fd(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)33 b Fe(11)2025 4642 y Ff(debugger.exp)22 -b Fd(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 -b Fe(30)2025 4742 y(debugging)26 b(a)g(test)f(case)f -Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fe(40)2025 4842 y(default)26 -b(options,)g(con)n(trolling)c Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)46 b Fe(17)2025 -4941 y(defaults,)27 b(option)11 b Fd(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)37 b Fe(17)2025 5041 y(defaults,)27 b(setting)f(in)f -(init)h(\014le)9 b Fd(.)k(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fe(23)2025 5141 y(DejaGn)n(u)25 -b(con\014guration)18 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b -Fe(49)2025 5240 y(DejaGn)n(u)25 b(test)h(driv)n(er)11 -b Fd(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)38 b Fe(9)2025 -5340 y(DejaGn)n(u,)26 b(the)f(name)18 b Fd(.)12 b(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)44 b Fe(6)p eop -%%Page: 52 54 -52 53 bop 150 -116 a Fv(52)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 152 y Fe(Delete)26 -b(a)g(w)n(atc)n(hp)r(oin)n(t.)16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 -b Fe(31)150 253 y(design)26 b(goals)18 b Fd(.)c(.)f(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fe(5)150 354 -y(detailed)26 b(log)f Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)49 b Fe(36)150 455 y Ff(diff)27 b Fc(\014lename)i -(\014lename)18 b Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fe(28)150 -555 y(directories)27 b(matc)n(hing)e(a)h(pattern)18 b -Fd(.)11 b(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fe(28)150 656 y(directory)26 b(names)f(and)g Ff(--tool)17 -b Fd(.)d(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)43 b Fe(21)150 757 y(do)n(wnload)26 b(a)g(\014le)20 -b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 -b Fe(27)150 858 y Ff(download)27 b Fc(\014le)j Fe([)c -Fc(spa)n(wnid)j Fe(])18 b Fd(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fe(27)150 -959 y(do)n(wnload,)27 b Ff(tip)13 b Fd(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)39 b Fe(27)150 1059 y Ff(dumplocals)28 -b Fd(expr)15 b(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32 -b Fe(30)150 1160 y Ff(dumprocs)27 b Fd(expr)18 b(.)c(.)e(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fe(30)150 1261 y -Ff(dumpvars)27 b Fd(expr)18 b(.)c(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)35 b Fe(30)150 1362 y Ff(dumpwatch)28 b Fd(expr)16 -b(.)d(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 -b Fe(30)150 1635 y Fu(E)150 1770 y Ff(echo.exp)8 b Fd(.)14 -b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)34 b Fe(5)150 1870 y Ff(ERROR)24 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b Fe(9,)26 -b(23)150 1971 y(example)9 b Fd(.)i(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fe(5)150 -2072 y Ff(exec_output)23 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)46 b Fe(42)150 2173 y Ff(exec_prefix)p -Fe(,)28 b(con\014gure)e(options.)9 b Fd(.)k(.)g(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fe(49)150 2274 y Ff(execute_anywhere)29 -b Fd(cmd)t(line)17 b(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)37 b Fe(30)150 2374 y(executing)26 -b(commands)e(remotely)18 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)44 b Fe(30)150 2475 y(existing)26 -b(tests,)h(running)10 b Fd(.)h(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 -b Fe(3)150 2576 y(exit)25 b(co)r(de)i(from)e Ff(runtest)8 -b Fd(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)35 b Fe(9)150 2677 y(exit)25 -b(pro)r(cedure,)h(tested)g(to)r(ols)14 b Fd(.)g(.)e(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)40 b Fe(31)150 -2778 y Ff(exit_remote_shell)29 b Fc(spa)n(wnid)10 b Fd(.)j(.)g(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 -b Fe(27)150 2878 y Ff(exp)26 b Fe(\014lename)f(su\016x)15 -b Fd(.)d(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(21)150 -2979 y Ff(expect)27 b Fe(in)n(ternal)f(tracing)10 b Fd(.)j(.)f(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)35 b Fe(12)150 3080 y Ff(expect)27 b Fe(script)f(names)c -Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fe(1)150 -3181 y Ff(expect)27 b Fe(scripting)f(language)21 b Fd(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)45 b Fe(8)150 3281 y Ff(expect_out\(buffer\))10 -b Fd(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fe(42)150 -3382 y(exp)r(ected)25 b(failure)20 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)44 b Fe(9,)26 b(25)150 3483 y(exp)r(ected)f(failure,)i -(cancelling)21 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fe(26)150 3756 y Fu(F)150 -3891 y Ff(FAIL)7 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fe(7,)26 -b(9)150 3992 y Ff(fail)h(")p Fc(string)6 b Ff(")g Fd(.)14 -b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 -b Fe(24)150 4093 y(failing)c(test,)e(exp)r(ected)15 b -Fd(.)d(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 b Fe(9)150 4193 -y(failing)28 b(test,)e(unexp)r(ected)9 b Fd(.)i(.)h(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 -b Fe(9)150 4294 y(failure,)27 b(exp)r(ected)14 b Fd(.)e(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)40 b Fe(25)150 4395 y(failure,)27 -b(POSIX)e(de\014nition)17 b Fd(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 -b Fe(7)150 4496 y(\014lename)25 b(for)h(test)g(\014les)14 -b Fd(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)40 b Fe(21)150 4596 y(\014les)26 -b(matc)n(hing)f(a)h(pattern)18 b Fd(.)12 b(.)g(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fe(28)150 4697 y Ff(find)27 b Fc(dir)k(pattern)13 b -Fd(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fe(28)150 -4798 y Ff(findfile)7 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fe(22)150 4899 y(\014nding)25 -b(\014le)h(di\013erences)17 b Fd(.)c(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fe(28)150 5000 y(future)25 b(directions)15 b Fd(.)f(.)e(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)41 b Fe(8)2025 501 y Fu(G)2025 -648 y Ff(gdb.t00/echo.exp)14 b Fd(.)i(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)41 b Fe(5)2025 755 y Ff(get_warning_threshold)29 -b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)50 b Fe(24)2025 862 y Ff(getdirs)27 -b Fc(dir)d Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)44 b Fe(28)2025 968 y Ff(getdirs)27 b Fc(dir)k(pattern)9 -b Fd(.)j(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)35 b Fe(28)2025 1075 -y Ff(getenv)27 b Fc(v)l(ar)19 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b Fe(29)2025 1181 -y(getting)26 b(en)n(vironmen)n(t)e(v)l(ariables)11 b -Fd(.)i(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)37 -b Fe(29)2025 1288 y(GNA)-6 b(TS)25 b(bug)g(n)n(um)n(b)r(er)15 -b Fd(.)c(.)h(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fe(42)2025 1395 -y(Granlund,)25 b(T)-6 b(orb)t(jorn)12 b Fd(.)i(.)e(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)38 b Fe(39)2025 1501 y Ff(grep)26 b Fc(\014lename)j(regexp)10 -b Fd(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 b Fe(28)2025 1608 -y Ff(grep)26 b Fc(\014lename)j(regexp)f Ff(line)7 b Fd(.)13 -b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)33 b Fe(28)2025 1915 y Fu(H)2025 2063 y Fe(help)25 -b(with)h Ff(runtest)21 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 -b Fe(11)2025 2170 y(hin)n(ts)25 b(on)h(test)f(case)i(writing)12 -b Fd(.)h(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)38 b Fe(41)2025 2276 y(host)26 b(con\014g)f(name,)h(c)n -(hanging)17 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)42 b Fe(11)2025 2383 y(host)26 -b(con\014guration)g(test)c Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 -b Fe(25)2025 2490 y(host,)26 b(explained)19 b Fd(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 b Fe(49)2025 -2596 y Ff(host_triplet)22 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)45 b Fe(17)2025 2904 y Fu(I)2025 3052 -y Ff(ignoretests)23 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)46 b Fe(17)2025 3158 y(init)26 b(\014le)f(name)14 -b Fd(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 -b Fe(22)2025 3265 y(init)26 b(\014le,)g(purp)r(ose)16 -b Fd(.)c(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)42 b -Fe(22)2025 3372 y(initialization)7 b Fd(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fe(22)2025 3478 -y(input)25 b(\014les)15 b Fd(.)d(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)41 b Fe(34)2025 3585 y(installed)26 -b(to)r(ol)h(name)c Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 -b Fe(24)2025 3691 y(installing)27 b(DejaGn)n(u)11 b Fd(.)i(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)37 b Fe(49)2025 3798 y(in)n(ternal)26 -b(details)c Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 -b Fe(21)2025 3904 y(in)n(v)n(oking)23 b Fd(.)13 b(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)50 -b Fe(9)2025 4011 y(IP)25 b(net)n(w)n(ork)h(pro)r(cedures)20 -b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fe(27)2025 4118 y Ff(isbuild)27 -b(")p Fc(host)r Ff(")12 b Fd(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)38 b Fe(25)2025 4224 y Ff(ishost)27 b(")p Fc(host)r -Ff(")13 b Fd(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 -b Fe(25)2025 4331 y Ff(isnative)7 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fe(25)2025 -4437 y Ff(istarget)27 b(")p Fc(target)r Ff(")17 b Fd(.)c(.)g(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)43 b Fe(25)2025 4745 y Fu(K)2025 4893 -y Ff(kermit)27 b Fc(p)r(ort)g(bps)18 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)42 b Fe(27)2025 5000 y Ff(kermit)p -Fe(,)27 b(remote)e(testing)h(via)9 b Fd(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fe(11)p -eop -%%Page: 53 55 -53 54 bop 150 -116 a Fv(Index)3286 b(53)150 695 y Fu(L)150 -850 y Fe(last)26 b(command)e(output)c Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)46 -b Fe(42)150 960 y Ff(lib/debugger.exp)13 b Fd(.)j(.)d(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)39 b Fe(30)150 1070 y Ff(lib/remote.exp)16 -b Fd(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 b -Fe(26)150 1180 y Ff(lib/target.exp)16 b Fd(.)g(.)c(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)42 b Fe(29)150 1289 y Ff(lib/utils.exp)18 -b Fd(.)d(.)d(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fe(28)150 1399 y(Lib)r(es,)27 b(Don)18 b Fd(.)12 b(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fe(8)150 -1509 y(list,)27 b(pruning)13 b Fd(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)38 b Fe(29)150 1619 y Ff(list_targets)22 -b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)45 -b Fe(29)150 1729 y(lists)27 b(supp)r(orted)e(targets)6 -b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fe(29)150 1839 y(load)26 -b(library)g(\014le)15 b Fd(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)41 b Fe(25)150 1948 y(load)26 b(pro)r(cedure,)g(tested)g(to)r(ols)7 -b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)32 b Fe(31)150 2058 y Ff(load_lib)27 b(")p -Fc(library-\014le)t Ff(")15 b Fd(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 -b Fe(25)150 2168 y(lo)r(cal)27 b(`)p Ff(site.exp)p Fe(')e -Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 -b Fe(19)150 2278 y(log)27 b(\014les,)f(where)g(to)g(write)7 -b Fd(.)13 b(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)32 b Fe(12)150 2388 y(Lupton,)25 -b(Rob)r(ert)10 b Fd(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 -b Fe(43)150 2715 y Fu(M)150 2870 y Ff(make)27 b Fe(builds)e(part)h(of)g -(tests)9 b Fd(.)k(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b Fe(49)150 2980 y -Ff(make)27 b(check)12 b Fd(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)38 b Fe(3)150 3090 y(master)25 -b(`)p Ff(site.exp)p Fe(')g Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 -b Fe(18)150 3199 y(Menapace,)27 b(Julia)20 b Fd(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 b Fe(6)150 -3309 y Ff(mondfe)10 b Fd(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fe(32)150 3419 -y Ff(mondfe)p Fe(,)27 b(remote)f(testing)g(via)9 b Fd(.)j(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)34 -b Fe(11)150 3746 y Fu(N)150 3901 y Fe(name)25 b(\\DejaGn)n(u")c -Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 -b Fe(6)150 4011 y(name)25 b(for)h(remote)g(test)f(mac)n(hine)7 -b Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)32 b Fe(12)150 4121 y(name)25 b(transformations)15 -b Fd(.)e(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(24)150 4231 y(name,)25 -b(initialization)j(mo)r(dule)13 b Fd(.)e(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fe(22)150 -4341 y(naming)25 b(con)n(v)n(en)n(tions)14 b Fd(.)e(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)40 b Fe(21)150 4450 y(naming)25 b(tests)h(to)g(run)14 -b Fd(.)e(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)40 b Fe(10)150 4560 -y(nativ)n(e)25 b(con\014guration)11 b Fd(.)j(.)e(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)37 b Fe(4)150 4670 y(nativ)n(e)25 b(con\014guration)i(test)8 -b Fd(.)k(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)33 b Fe(25)150 4780 y(net)n(w)n(ork)25 -b(\(IP\))h(pro)r(cedures)8 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 -b Fe(27)150 4890 y Ff(NOTE)6 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)32 b Fe(9,)26 -b(24)150 5000 y Ff(note)h(")p Fc(string)6 b Ff(")g Fd(.)14 -b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 -b Fe(24)2025 84 y Fu(O)2025 217 y Ff(objdir)10 b Fd(.)j(.)f(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fe(17)2025 316 y(ob)t(ject)26 b(directory)e Fd(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fe(12)2025 -416 y(Op)r(ening)25 b(a)h(remote)f(connection)15 b Fd(.)e(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 -b Fe(26)2025 516 y(op)r(erating)26 b(principles)13 b -Fd(.)g(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fe(21)2025 615 -y(option)26 b(defaults)c Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)47 b Fe(17)2025 715 y(option)26 b(list,)g Ff(runtest)15 -b Fd(.)f(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fe(9)2025 -814 y(options)7 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fe(9)2025 914 -y(options)26 b(for)g Ff(runtest)p Fe(,)i(common)15 b -Fd(.)c(.)h(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)41 b Fe(4)2025 1014 y(options,)26 b(Tcl)h(v)l(ariables)f(for)h -(defaults)18 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -44 b Fe(17)2025 1113 y(order)26 b(of)g(tests)15 b Fd(.)e(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(21)2025 -1213 y(Ousterhout,)25 b(John)h(K.)16 b Fd(.)c(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)42 b Fe(8)2025 1313 y Ff(outdir)10 b Fd(.)j(.)f(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fe(17)2025 1412 y(output)24 b(directory)14 b Fd(.)f(.)g(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)40 b Fe(12)2025 1512 y(output)24 -b(\014les)10 b Fd(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)36 b Fe(35)2025 1612 y(output,)25 b(additional)e -Fd(.)12 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fe(13)2025 -1711 y(o)n(v)n(erriding)26 b(`)p Ff(site.exp)p Fe(')f -Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b Fe(15)2025 1811 y(o)n(v)n(erview)20 -b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)46 b Fe(1)2025 2077 y Fu(P)2025 2210 y Ff(PASS)7 -b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)33 b Fe(6,)27 b(9)2025 2309 y Ff(pass)f(")p -Fc(string)6 b Ff(")g Fd(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)32 b Fe(24)2025 2409 y(path)25 b(lo)r(okup)15 -b Fd(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 -b Fe(28)2025 2509 y(pattern)25 b(matc)n(h,)g(directory)d -Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)48 b Fe(28)2025 2608 y(pattern)25 -b(matc)n(h,)g(\014lenames)18 b Fd(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b -Fe(28)2025 2708 y Ff(perror)27 b(")p Fc(string)33 b(n)n(um)n(b)r(er)5 -b Ff(")h Fd(.)11 b(.)h(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)32 b Fe(23)2025 2807 y(p)r(ersonal)26 -b(con\014g)g(`)p Ff(site.exp)p Fe(')12 b Fd(.)j(.)e(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)38 -b Fe(20)2025 2907 y Ff(pop_host)7 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fe(29)2025 -3007 y Ff(pop_target)24 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)48 b Fe(29)2025 3106 y(p)r(orting)26 -b(to)g(a)g(new)g(host)18 b Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)43 -b Fe(48)2025 3206 y(POSIX)24 b(conformance)e Fd(.)13 -b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 b Fe(6)2025 3306 y -Ff(prefix)p Fe(,)27 b(con\014gure)f(options)9 b Fd(.)j(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 -b Fe(49)2025 3405 y(Prin)n(t)25 b(a)h(bac)n(ktrace)17 -b Fd(.)c(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 b Fe(31)2025 -3505 y(Prin)n(t)25 b(global)j(v)l(ariable)e(v)l(alues)14 -b Fd(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)40 b Fe(30)2025 3605 y(Prin)n(t)25 b(lo)r(cal)j(v)l(ariable)e -(v)l(alue)15 b Fd(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(30)2025 3704 y(Prin)n(t)25 -b(pro)r(cedure)h(b)r(o)r(dies)15 b Fd(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)40 -b Fe(30)2025 3804 y Ff(print)26 b Fd(var)d(.)12 b(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)39 b Fe(31)2025 -3904 y(Prin)n(t)25 b(w)n(atc)n(hp)r(oin)n(ts)8 b Fd(.)14 -b(.)e(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fe(30)2025 -4003 y(Prin)n(ting)26 b(v)l(ariable)g(v)l(alues)21 b -Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)47 b Fe(31)2025 4103 y(PRMS)25 -b(bug)h(n)n(um)n(b)r(er)17 b Fd(.)c(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)46 -b Fe(42)2025 4202 y Ff(prms_id)8 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b Fe(42)2025 -4302 y(problem,)25 b(detected)g(b)n(y)g(test)h(case)17 -b Fd(.)c(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -44 b Fe(9)2025 4402 y Ff(prune)26 b Fc(list)i(pattern)9 -b Fd(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fe(29)2025 -4501 y Ff(prune_system_crud)29 b Fc(system)c(text)d Fd(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 -b Fe(29)2025 4601 y(pruning)25 b(system)g(output,)g(examining)g -(program)g(output)2193 4701 y Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)40 -b Fe(29)2025 4800 y Ff(psource)27 b Fc(\014lename)22 -b Fd(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fe(28)2025 -4900 y Ff(push_host)27 b Fd(name)14 b(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)34 b Fe(29)2025 5000 y Ff(push_target)28 -b Fd(name)i(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 b Fe(29)p -eop -%%Page: 54 56 -54 55 bop 150 -116 a Fv(54)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 657 y Fu(Q)150 810 -y Ff(quit)13 b Fd(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fe(31)150 919 -y(Quiting)26 b(DejaGn)n(u)19 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)45 b Fe(31)150 1243 y Fu(R)150 1396 y Fe(ranlib)26 -b(a)g(\014le)8 b Fd(.)k(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)33 b Fe(30)150 1506 y Ff(reboot)10 b Fd(.)j(.)g(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 -b Fe(17)150 1615 y(reb)r(o)r(oting)27 b(remote)e(targets)c -Fd(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)45 b Fe(12)150 1724 y(regular)27 b(expression,)f -(\014le)g(con)n(ten)n(ts)18 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)44 b Fe(28)150 1833 y(remote)25 -b(connection)h(pro)r(cedures)8 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33 b Fe(26)150 1942 -y(remote)25 b(connection,)i(ending)12 b Fd(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)38 -b Fe(27)150 2052 y(remote)25 b(test)h(mac)n(hine)f(name)11 -b Fd(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)37 b Fe(12)150 2161 y(remote)25 b(testb)r(ed,)h(connecting) -g(to)8 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)34 b Fe(11)150 2270 y(remote)25 b(testing)13 -b Fd(.)g(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)39 -b Fe(32)150 2379 y(remote)25 b(testing)h(via)g Ff(kermit)21 -b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)45 b Fe(11)150 2488 y(remote)25 b(testing)h(via)g -Ff(mondfe)21 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)45 b Fe(11)150 2597 y(remote)25 -b(testing)h(via)g Ff(rlogin)21 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)45 b Fe(11)150 -2707 y(remote)25 b(testing)h(via)g Ff(rsh)f Fd(.)12 b(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -49 b Fe(11)150 2816 y(remote)25 b(testing)h(via)g Ff(telnet)21 -b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)45 b Fe(11)150 2925 y(remote)25 b(testing)h(via)g -Ff(tip)f Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)49 b Fe(11)150 3034 -y Ff(remote.exp)24 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)47 b Fe(26)150 3143 y Ff(remote_close)28 -b Fc(shellid)10 b Fd(.)j(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b -Fe(27)150 3253 y Ff(remote_open)c Fc(t)n(yp)r(e)e Fd(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)48 b Fe(26)150 3362 -y Ff(rlogin)27 b Fc(hostname)20 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)42 b Fe(27)150 3471 y Ff(rlogin)p Fe(,)27 b(remote)f(testing)g -(via)9 b Fd(.)j(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)34 b Fe(11)150 3580 y Ff(rsh)26 b -Fc(hostname)e Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -46 b Fe(27)150 3689 y Ff(rsh)p Fe(,)27 b(remote)e(testing)h(via)13 -b Fd(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)39 b Fe(11)150 3799 y(running)16 -b Fd(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)42 b Fe(9)150 3908 y(running)25 b(tests)17 -b Fd(.)c(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fe(3)150 4017 y Ff(runtest)27 b Fe(description)12 b -Fd(.)h(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38 b Fe(9)150 -4126 y Ff(runtest)27 b Fe(exit)f(co)r(de)8 b Fd(.)13 -b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 b Fe(9)150 -4235 y Ff(runtest)27 b Fe(option)f(defaults)17 b Fd(.)c(.)f(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 -b Fe(17)150 4344 y Ff(runtest)27 b Fe(option)f(list)7 -b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)33 b Fe(9)150 -4454 y Ff(runtest)p Fe(,)28 b(listing)e(options)21 b -Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)45 b Fe(11)150 4563 y Ff(runtest)p -Fe(,)28 b(most)d(common)f(options)16 b Fd(.)d(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)42 b Fe(4)150 4672 -y Ff(runtest)p Fe(,)28 b(v)l(ariable)e(defns)g(on)f(cmdline)12 -b Fd(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)37 -b Fe(10)150 4781 y Ff(runtest.exp)23 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 b Fe(21)150 4890 y -Ff(runtest_file_p)29 b Fc(run)n(tests)f(testcase)17 b -Fd(.)d(.)e(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 -b Fe(29)150 5000 y Ff(runtests)7 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)32 b Fe(17)2025 -681 y Fu(S)2025 835 y Fe(searc)n(hing)26 b(\014le)g(con)n(ten)n(ts)13 -b Fd(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 b Fe(28)2025 945 y(selecting)27 -b(a)f(range)g(of)g(tests)15 b Fd(.)e(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)41 b Fe(10,)27 b(29)2025 -1054 y(selecting)g(tests)f(for)g(a)g(to)r(ol)16 b Fd(.)e(.)e(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 -b Fe(10)2025 1164 y(serial)27 b(do)n(wnload,)g Ff(tip)22 -b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fe(27)2025 1274 -y(serial)27 b(line)f(connection,)g Ff(kermit)15 b Fd(.)f(.)f(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b -Fe(27)2025 1383 y(serial)27 b(line)f(connection,)g Ff(tip)21 -b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)45 b Fe(27)2025 1493 y(set)26 b(curren)n(t)f(host)9 -b Fd(.)j(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)34 -b Fe(29)2025 1602 y(set)26 b(curren)n(t)f(target)15 b -Fd(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(29)2025 -1712 y Ff(set_warning_threshold)30 b Fc(threshold)20 -b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 -b Fe(24)2025 1822 y Ff(setenv)27 b Fc(v)l(ar)j(v)l(al)10 -b Fd(.)i(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 -b Fe(29)2025 1931 y(setting)26 b(defaults)g(for)h(DejaGn)n(u)f(v)l -(ariables)17 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 -b Fe(15)2025 2041 y(setting)26 b(en)n(vironmen)n(t)e(v)l(ariables)15 -b Fd(.)e(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -41 b Fe(29)2025 2150 y(setting)26 b(up)f(targets)12 b -Fd(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 b Fe(22)2025 -2260 y Ff(setup_xfail)28 b(")p Fc(con\014g)k Fe([)p Fc(bugid)s -Fe(])p Ff(")10 b Fd(.)j(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)36 b Fe(25)2025 2369 y Ff(site.exp)7 b -Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)32 b Fe(15)2025 2479 y(`)p Ff(site.exp)p Fe(')c(for)e(all)h(of) -f(DejaGn)n(u)13 b Fd(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)38 b Fe(18)2025 2589 y(`)p Ff(site.exp)p -Fe(')28 b(for)e(eac)n(h)g(p)r(erson)8 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)34 -b Fe(20)2025 2698 y(`)p Ff(site.exp)p Fe(')28 b(for)e(eac)n(h)g(to)r -(ol)17 b Fd(.)c(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fe(19)2025 2808 y(`)p -Ff(site.exp)p Fe(',)28 b(m)n(ultiple)23 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)50 b Fe(15)2025 2917 y Ff(slay)26 b Fc(name)21 b -Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -43 b Fe(28)2025 3027 y(sla)n(ying)26 b(pro)r(cesses)9 -b Fd(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 -b Fe(28)2025 3137 y(source)26 b(directory)d Fd(.)12 b(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)48 b Fe(12)2025 3246 y(sourcing)26 -b(Tcl)h(\014les)7 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -32 b Fe(28)2025 3356 y(sp)r(ecial)27 b(v)l(ariables)20 -b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 -b Fe(42)2025 3465 y(sp)r(ecifying)26 b(target)h(name)18 -b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)44 b Fe(11)2025 3575 y(sp)r(ecifying)26 -b(the)g(build)f(con\014g)h(name)19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fe(11)2025 3685 y(sp)r(ecifying)26 -b(the)g(host)g(con\014g)f(name)17 b Fd(.)12 b(.)g(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 b Fe(11)2025 3794 y(sp)r(ecifying)26 -b(the)g(target)g(con\014guration)d Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)48 b Fe(12)2025 3904 y Ff(srcdir)10 b -Fd(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)35 b Fe(17)2025 4013 y(standard)25 b(conformance:)35 -b(POSIX)25 b(1003.3)17 b Fd(.)e(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 -b Fe(6)2025 4123 y(start)26 b(pro)r(cedure,)g(tested)f(to)r(ols)16 -b Fd(.)e(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)42 b Fe(31)2025 4232 y(starting)26 b(in)n(teractiv)n(e)g(to)r(ols)f -Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)49 b Fe(22)2025 4342 y(starting)26 -b(the)f(tcl)h(debugger)20 b Fd(.)13 b(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 b Fe(13)2025 -4452 y Ff(subdir)10 b Fd(.)j(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 b Fe(42)2025 4561 -y(success,)27 b(POSIX)d(de\014nition)f Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 -b Fe(6)2025 4671 y(successful)27 b(test)19 b Fd(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)45 -b Fe(9)2025 4780 y(successful)27 b(test,)f(unexp)r(ected)c -Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)50 b Fe(9)2025 4890 y(su\016x,)25 b Ff(expect)i -Fe(scripts)12 b Fd(.)i(.)e(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)39 -b Fe(1)2025 5000 y(summary)23 b(log)e Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 b Fe(35)p eop -%%Page: 55 57 -55 56 bop 150 -116 a Fv(Index)3286 b(55)150 84 y Fu(T)150 -217 y Fe(target)26 b(con\014guration)h(test)10 b Fd(.)i(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)35 -b Fe(25)150 316 y(target)26 b(con\014guration,)h(sp)r(ecifying)d -Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)49 -b Fe(12)150 416 y(target)26 b(dep)r(enden)n(t)f(pro)r(cedures)11 -b Fd(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)37 b Fe(31)150 516 y(target)26 b(mac)n(hine)f(name)10 -b Fd(.)i(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)36 b Fe(11)150 615 y(target,)27 -b(explained)8 b Fd(.)k(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)33 -b Fe(49)150 715 y Ff(target.exp)24 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fe(29)150 815 y -Ff(target_triplet)16 b Fd(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -42 b Fe(17)150 914 y Ff(targetname)24 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 b Fe(17)150 1014 -y(targets)12 b Fd(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)37 b Fe(32)150 1113 y(tcl)13 -b Fd(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fe(8)150 1213 -y(tcl)26 b(debugger)11 b Fd(.)h(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)37 b Fe(13)150 1313 y(Tcl)27 b(v)l(ariables)f(for)g -(option)g(defaults)8 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)33 b Fe(17)150 1412 y(Tcl)27 b(v)l(ariables,)f -(de\014ning)f(for)i Ff(runtest)22 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)46 b Fe(10)150 1512 y Fc(tclv)l(ar)5 -b Ff(=)p Fc(v)l(alue)16 b Fd(.)d(.)g(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)38 b Fe(10)150 1612 y Ff(telnet)27 -b Fc(hostname)i(p)r(ort)24 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 -b Fe(27)150 1711 y Ff(telnet)p Fe(,)27 b(remote)f(testing)g(via)9 -b Fd(.)j(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)34 b Fe(11)150 1811 y(terminating)25 b(remote)h(connection) -10 b Fd(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -36 b Fe(27)150 1911 y(test)26 b(case)g(cannot)g(run)7 -b Fd(.)k(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fe(9)150 -2010 y(test)26 b(case)g(messages)d Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)48 b Fe(9)150 2110 y(test)26 b(case)g(w)n(arnings)f -Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)49 b Fe(9)150 -2210 y(test)26 b(case,)h(debugging)8 b Fd(.)k(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)33 b Fe(40)150 2309 y(test)26 b(case,)h(declaring)f(am)n(biguit)n -(y)10 b Fd(.)i(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)36 b Fe(24)150 2409 y(test)26 b(case,)h(declaring)f(failure)17 -b Fd(.)d(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)43 b Fe(24)150 2508 y(test)26 b(case,)h(declaring)f(no)g -(supp)r(ort)13 b Fd(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)38 b Fe(24)150 2608 y(test)26 b(case,)h(declaring)f(no)g -(test)8 b Fd(.)k(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)33 b Fe(24)150 2708 y(test)26 b(case,)h(declaring)f -(success)f Fd(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)49 b Fe(24)150 2807 y(test)26 b(case,)h(ERR)n(OR)d -(in)12 b Fd(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)38 b Fe(23)150 -2907 y(test)26 b(case,)h(exp)r(ecting)e(failure)9 b Fd(.)14 -b(.)e(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)34 b Fe(25)150 3007 y(test)26 b(case,)h(informational)g -(messages)8 b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)34 b Fe(24)150 3106 y(test)26 b(case,)h(W)-9 b(ARNING)24 -b(in)12 b Fd(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)f(.)38 b Fe(23)150 3206 y(test)26 -b(case,)h(W)-9 b(ARNING)24 b(threshold)16 b Fd(.)c(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fe(24)150 3306 -y(test)26 b(case,)h(writing)c Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)48 b Fe(39)150 3405 y(test)26 b(cases,)h(debug)e(log)c -Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)45 b Fe(11)150 3505 -y(test)26 b(directories,)h(naming)22 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 -b Fe(21)150 3605 y(test)26 b(\014lename)c Fd(.)12 b(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)48 b Fe(21)150 3704 y(test)26 -b(output,)f(displa)n(ying)h(all)c Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)46 b Fe(10)150 -3804 y(test)26 b(programs,)g(auxiliary)16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 -b Fe(12)150 3903 y(test)26 b(suite)g(distributions)21 -b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)47 b Fe(49)150 4003 y(test,)26 -b(failing)12 b Fd(.)i(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)38 b Fe(9)150 4103 y(test,)26 b(successful)8 -b Fd(.)14 b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)34 -b Fe(9)150 4202 y(test,)26 b(unresolv)n(ed)f(outcome)c -Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)47 b Fe(9)150 4302 y(test,)26 -b(unsupp)r(orted)14 b Fd(.)d(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 -b Fe(9)150 4402 y(tests,)26 b(running)6 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)32 b Fe(3)150 4501 -y(tests,)26 b(running)f(order)14 b Fd(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -39 b Fe(21)150 4601 y(tests,)26 b(running)f(sp)r(eci\014cally)e -Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)48 b Fe(10,)26 b(29)150 4701 y(TET)10 b Fd(.)k(.)e(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)37 -b Fe(6)150 4800 y Ff(tip)26 b Fc(p)r(ort)c Fd(.)12 b(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 -b Fe(27)150 4900 y Ff(tip)p Fe(,)27 b(remote)e(testing)h(via)13 -b Fd(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)39 b Fe(11)150 5000 y Ff(tip_download)28 -b Fc(spa)n(wnid)h(\014le)f Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 b Fe(27)2025 368 -y Ff(tool)13 b Fd(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 b Fe(17)2025 472 -y(to)r(ol)26 b(command)e(language)d Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)45 -b Fe(8)2025 576 y(to)r(ol)26 b(initialization)d Fd(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fe(22)2025 -681 y(to)r(ol)26 b(name,)g(as)g(installed)c Fd(.)12 b(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -46 b Fe(24)2025 785 y(to)r(ol)26 b(names)g(and)f(naming)g(con)n(v)n(en) -n(tions)17 b Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)42 -b Fe(21)2025 889 y Fc(to)r(ol)s Ff(_exit)17 b Fd(.)d(.)f(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fe(31)2025 -994 y Fc(to)r(ol)s Ff(_load)17 b Fd(.)d(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 b Fe(31)2025 1098 -y Fc(to)r(ol)s Ff(_start)16 b Fd(.)e(.)f(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)41 b Fe(31)2025 1202 y Fc(to)r(ol)s -Ff(_version)13 b Fd(.)i(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)39 b Fe(32)2025 1307 y Ff(tracelevel)24 b Fd(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)48 -b Fe(17)2025 1411 y(tracing)26 b(Tcl)h(commands)22 b -Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fe(12)2025 1516 y Ff(transform)25 -b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -49 b Fe(22)2025 1620 y Ff(transform)27 b(")p Fc(to)r(olname)t -Ff(")14 b Fd(.)g(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b Fe(24)2025 1724 -y(transform)26 b(to)r(ol)g(name)19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -45 b Fe(24)2025 1829 y(turning)25 b(on)h(output)d Fd(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fe(13)2025 2123 -y Fu(U)2025 2266 y Fe(unexp)r(ected)24 b(success)7 b -Fd(.)14 b(.)e(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)34 b Fe(9)2025 -2370 y Ff(UNRESOLVED)17 b Fd(.)d(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)42 b Fe(7,)27 b(9)2025 2475 y Ff(unresolved)h(")p -Fc(string)6 b Ff(")16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 -b Fe(24)2025 2579 y(unset)25 b(curren)n(t)g(host)c Fd(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 b Fe(29)2025 2684 -y(unset)25 b(curren)n(t)g(target)9 b Fd(.)k(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -34 b Fe(29)2025 2788 y Ff(unsetenv)27 b Fc(v)l(ar)17 -b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)37 -b Fe(29)2025 2892 y(unsetting)25 b(en)n(vironmen)n(t)f(v)l(ariables)9 -b Fd(.)k(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 -b Fe(29)2025 2997 y Ff(UNSUPPORTED)15 b Fd(.)g(.)d(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)41 b Fe(7,)27 b(9)2025 3101 y -Ff(unsupported)h(")p Fc(string)6 b Ff(")14 b Fd(.)g(.)e(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -40 b Fe(24)2025 3205 y(unsupp)r(orted)24 b(test)6 b Fd(.)13 -b(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)33 b Fe(9)2025 -3310 y Ff(UNTESTED)21 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)g(.)h(.)f(.)g(.)h(.)45 b Fe(7,)27 b(9)2025 3414 y -Ff(untested)g(")p Fc(string)6 b Ff(")20 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)44 b Fe(24)2025 3519 y(un)n(tested)25 b(prop)r(erties)f -Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 b Fe(9)2025 -3623 y(utilities,)27 b(loading)g(from)e(init)h(\014le)15 -b Fd(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -40 b Fe(23)2025 3727 y Ff(utils.exp)25 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fe(28)2025 -4022 y Fu(V)2025 4165 y Fe(v)l(ariables)26 b(for)h(all)f(tests)15 -b Fd(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)41 b Fe(42)2025 4269 -y(v)l(ariables)26 b(for)h(option)f(defaults)c Fd(.)12 -b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)47 -b Fe(17)2025 4373 y(v)l(ariables)26 b(of)h(DejaGn)n(u,)f(defaults)21 -b Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -46 b Fe(15)2025 4478 y Ff(verbose)8 b Fd(.)14 b(.)e(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) -h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)34 b -Fe(17)2025 4582 y Ff(verbose)27 b Fe([)p Ff(-log)p Fe(])g([)p -Ff(-n)p Fe(])g([)p Ff(--)p Fe(])g Ff(")p Fc(string)6 -b Ff(")27 b Fc(n)n(um)n(b)r(er)21 b Fd(.)12 b(.)h(.)f(.)g(.)g(.)44 -b Fe(26)2025 4686 y Ff(verbose)27 b Fe(builtin)e(function)6 -b Fd(.)13 b(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)g(.)h(.)32 b Fe(26)2025 4791 y(v)n(ersion)26 -b(n)n(um)n(b)r(ers)18 b Fd(.)10 b(.)j(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)44 b Fe(13)2025 4895 y(v)n(ersion)26 b(pro)r(cedure,)g(tested)f(to) -r(ols)14 b Fd(.)g(.)e(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)40 b Fe(32)2025 5000 y(VxW)-6 b(orks,)25 b(link)g(with)h(`)p -Ff(-r)p Fe(')16 b Fd(.)d(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 b Fe(33)p eop -%%Page: 56 58 -56 57 bop 150 -116 a Fv(56)2364 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 147 y Fu(W)150 282 -y Ff(WARNING)22 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)46 b Fe(9,)26 b(23)150 383 y Ff(warning)h(")p -Fc(string)33 b(n)n(um)n(b)r(er)5 b Ff(")22 b Fd(.)12 -b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)48 b Fe(23)150 483 y(W)-6 b(atc)n(h)25 b(when)h(a)g(v)l(ariable) -g(is)g(read)19 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)g(.)h(.)44 b Fe(30)150 584 y(W)-6 b(atc)n(h)25 -b(when)h(a)g(v)l(ariable)g(is)g(unset)19 b Fd(.)13 b(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 b Fe(30)150 685 -y(W)-6 b(atc)n(h)25 b(when)h(a)g(v)l(ariable)g(is)g(written)f -Fd(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)50 -b Fe(30)150 785 y Ff(watchdel)27 b Fd(watch)j(.)13 b(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)48 b Fe(31)150 886 y Ff(watchread)28 -b Fd(var)16 b(.)d(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)33 -b Fe(30)150 987 y Ff(watchunset)28 b Fd(var)14 b(.)f(.)g(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)32 b Fe(30)150 1087 y Ff(watchwrite)c -Fd(var)14 b(.)f(.)g(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)32 -b Fe(30)2025 90 y(What)25 b(is)h(New)17 b Fd(.)c(.)g(.)f(.)g(.)h(.)f(.) -g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)44 b Fe(3)2025 189 -y Ff(which)26 b Fc(binary)21 b Fd(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)40 b Fe(28)2025 289 y(writing)26 -b(a)g(test)g(case)21 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)45 -b Fe(39)2025 556 y Fu(X)2025 688 y Ff(XFAIL)25 b Fd(.)12 -b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) -g(.)50 b Fe(6,)27 b(9)2025 788 y(XF)-9 b(AIL,)25 b(a)n(v)n(oiding)h -(for)h(POSIX)19 b Fd(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)47 b Fe(6)2025 888 y Ff(XFAIL)p -Fe(,)27 b(pro)r(ducing)20 b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h -(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) -g(.)46 b Fe(25)2025 988 y Ff(XPASS)12 b Fd(.)h(.)g(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) -f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)38 -b Fe(9)2025 1087 y Ff(XPASS)p Fe(,)27 b(pro)r(ducing)20 -b Fd(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f -(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)46 b Fe(25)p -eop -%%Page: -1 59 --1 58 bop 3725 -116 a Fv(i)150 100 y Fs(T)-13 b(able)54 -b(of)g(Con)l(ten)l(ts)150 442 y Fu(1)135 b(What)45 b(is)g(DejaGn)l(u?) -24 b Fb(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h -(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)69 b Fu(1)150 -711 y(2)135 b(What)45 b(is)g(new)g(in)g(this)g(release)i(?)29 -b Fb(.)19 b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)73 -b Fu(3)449 848 y Fv(2.1)92 b(Running)28 b(existing)h(tests)20 -b Fn(.)c(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)49 b Fv(3)449 958 y(2.2)92 b(What)31 b(do)s(es)f(a)h(DejaGn)m(u)g -(test)g(lo)s(ok)f(lik)m(e?)f Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)59 b Fv(5)449 -1068 y(2.3)92 b(Design)30 b(goals)23 b Fn(.)16 b(.)f(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h -(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)53 b Fv(5)449 1177 y(2.4)92 b(A)30 b(POSIX)g(conforming)f(test) -j(framew)m(ork)25 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h -(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Fv(6)449 -1287 y(2.5)92 b(F)-8 b(uture)30 b(directions)17 b Fn(.)d(.)h(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -47 b Fv(8)449 1396 y(2.6)92 b(Tcl)30 b(and)f(Exp)s(ect)e -Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)56 b Fv(8)150 1639 y Fu(3)135 -b(Using)45 b Fa(runtest)11 b Fb(.)16 b(.)k(.)f(.)h(.)f(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) -h(.)f(.)g(.)56 b Fu(9)150 1909 y(4)135 b(Setting)46 b -Fa(runtest)41 b Fu(defaults)26 b Fb(.)21 b(.)e(.)h(.)f(.)g(.)h(.)f(.)h -(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)71 b Fu(15)748 -2046 y Fv(4.0.1)93 b(Con\014g)29 b(V)-8 b(ariables)17 -b Fn(.)d(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 -b Fv(15)748 2155 y(4.0.2)93 b(Master)31 b(Con\014g)f(File)13 -b Fn(.)h(.)i(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)43 b -Fv(18)748 2265 y(4.0.3)93 b(Lo)s(cal)30 b(Con\014g)g(File)22 -b Fn(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51 -b Fv(19)748 2374 y(4.0.4)93 b(P)m(ersonal)30 b(Con\014g)g(File)24 -b Fn(.)15 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Fv(20)150 -2617 y Fu(5)135 b(The)44 b(DejaGn)l(u)h(Implemen)l(tation)28 -b Fb(.)22 b(.)e(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)73 -b Fu(21)449 2754 y Fv(5.1)92 b(Con)m(v)m(en)m(tions)31 -b(for)f(using)f(to)s(ol)h(names)16 b Fn(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)45 -b Fv(21)449 2863 y(5.2)92 b(Initialization)28 b(mo)s(dule)d -Fn(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -h(.)56 b Fv(22)449 2973 y(5.3)92 b(DejaGn)m(u)31 b(pro)s(cedures)14 -b Fn(.)g(.)h(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)44 b Fv(23)748 3083 y(5.3.1)93 b(Core)30 b(In)m(ternal)g(Pro)s -(cedures)15 b Fn(.)e(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)44 b Fv(23)748 3192 -y(5.3.2)93 b(Remote)31 b(Comm)m(unication)e(Pro)s(cedures)14 -b Fn(.)g(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)43 -b Fv(26)748 3302 y(5.3.3)93 b(Utilit)m(y)29 b(Pro)s(cedures)21 -b Fn(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)50 -b Fv(28)748 3411 y(5.3.4)93 b(Cross)29 b(target)j(pro)s(cedure)17 -b Fn(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47 b Fv(29)748 3521 y(5.3.5)93 -b(Debugging)30 b(Pro)s(cedures)25 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -55 b Fv(30)449 3631 y(5.4)92 b(T)-8 b(arget)32 b(dep)s(enden)m(t)d(pro) -s(cedures)13 b Fn(.)h(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)42 -b Fv(31)449 3740 y(5.5)92 b(Remote)32 b(targets)f(supp)s(orted)10 -b Fn(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)39 -b Fv(32)449 3850 y(5.6)92 b(The)30 b(\014les)f(DejaGn)m(u)i(reads)26 -b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 -b Fv(34)449 3959 y(5.7)92 b(The)30 b(\014les)f(DejaGn)m(u)i(writes)11 -b Fn(.)j(.)h(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)40 -b Fv(35)748 4069 y(5.7.1)93 b(Summary)28 b(log)14 b Fn(.)i(.)f(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)43 b -Fv(35)748 4178 y(5.7.2)93 b(Detailed)30 b(log)17 b Fn(.)e(.)g(.)h(.)f -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)47 -b Fv(36)748 4288 y(5.7.3)93 b(Logging)30 b Fr(expect)f -Fv(in)m(ternal)g(actions)f Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)57 b Fv(36)150 4531 y Fu(6)135 -b(Ho)l(w)45 b(T)-11 b(o)45 b(W)-11 b(rite)45 b(a)h(T)-11 -b(est)44 b(Case)39 b Fb(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)h(.)82 b Fu(39)449 4667 y Fv(6.1)92 b(W)-8 -b(riting)30 b(a)g(test)i(case)25 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)53 b Fv(39)449 -4777 y(6.2)92 b(Debugging)30 b(a)h(test)g(case)f Fn(.)15 -b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)58 -b Fv(40)449 4887 y(6.3)92 b(Adding)29 b(a)h(test)i(case)f(to)g(a)g -(test)g(suite)19 b Fn(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)48 b Fv(40)449 -4996 y(6.4)92 b(Hin)m(ts)30 b(on)g(writing)f(a)h(test)i(case)22 -b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)51 -b Fv(41)449 5106 y(6.5)92 b(Sp)s(ecial)29 b(v)-5 b(ariables)29 -b(used)g(b)m(y)h(test)i(cases)23 b Fn(.)15 b(.)g(.)g(.)h(.)f(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)52 -b Fv(42)p eop -%%Page: -2 60 --2 59 bop 150 -116 a Fv(ii)2402 b(DejaGn)m(u)32 b(T)-8 -b(esting)30 b(F)-8 b(ramew)m(ork)150 83 y Fu(7)135 b(New)45 -b(T)-11 b(o)t(ols,)45 b(T)-11 b(argets,)46 b(or)f(Hosts)23 -b Fb(.)e(.)e(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)68 -b Fu(43)449 220 y Fv(7.1)92 b(W)-8 b(riting)30 b(tests)h(for)f(a)h(new) -e(to)s(ol)19 b Fn(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)48 -b Fv(43)449 330 y(7.2)92 b(Adding)29 b(a)h(target)17 -b Fn(.)g(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)46 b Fv(48)449 439 y(7.3)92 b(P)m(orting)30 -b(to)h(a)g(new)f(host)f Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)58 b Fv(48)150 682 y Fu(App)t(endix)44 -b(A)134 b(Installing)46 b(DejaGn)l(u)29 b Fb(.)20 b(.)f(.)h(.)f(.)g(.)h -(.)f(.)h(.)f(.)h(.)f(.)g(.)74 b Fu(49)449 819 y Fv(A.1)92 -b(Con\014guring)28 b(the)i(DejaGn)m(u)i(test)f(driv)m(er)9 -b Fn(.)k(.)j(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)38 b Fv(49)449 928 y(A.2)92 b(Installing)28 -b(DejaGn)m(u)10 b Fn(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h -(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)39 b Fv(49)150 1171 y Fu(Index)e -Fb(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h -(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.) -h(.)f(.)g(.)h(.)f(.)82 b Fu(51)p eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF diff --git a/contrib/bluegnu2.0.3/doc/dejagnu.texi b/contrib/bluegnu2.0.3/doc/dejagnu.texi deleted file mode 100644 index 0d787fa..0000000 --- a/contrib/bluegnu2.0.3/doc/dejagnu.texi +++ /dev/null @@ -1,3503 +0,0 @@ -o\input texinfo @c -*- Texinfo -*- -@finalout -@setfilename dejagnu.info -@c -@c This file documents the GNU Testing Framework ``DejaGnu'' -@c -@c Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. -@c -@c This text may be freely distributed under the terms of the GNU -@c General Public License. -@c - -@c FIXME---MAIN TODO LIST! -@c -@c * Revisit organization. -@c -@c * discuss Tcl/expect basics---enough to get started (see seminar notes). -@c Maybe this would permit abbreviating appendices. - -@ifinfo -@format -START-INFO-DIR-ENTRY -* DejaGnu: (dejagnu). The GNU testing framework. -END-INFO-DIR-ENTRY -@end format -@end ifinfo - -@syncodeindex ky cp -@syncodeindex fn cp - -@setchapternewpage odd -@settitle DejaGnu Testing Framework -@titlepage -@title The DejaGnu Testing Framework -@subtitle for DejaGnu Version 1.3 -@sp 1 -@subtitle Jan 1996 -@author Rob Savoye -@page - -@tex -{\parskip=0pt \hfill Cygnus Support} -@end tex - -@vskip 0pt plus 1filll -Copyright @copyright{} 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -@noindent -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that -the entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. -@end titlepage - -@ifinfo -Copyright @copyright{} 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -@ignore -Permission is granted to process this file through TeX and print the -results, provided the printed document carries a copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). -@end ignore - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that -the entire resulting derived work is distributed under the terms of a -permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions. - -@node Top -@top DejaGnu - -DejaGnu is a framework for running test suites on software tools. - -This file describes version 1.3 of DejaGnu. - -@menu -* Overview:: What is DejaGnu? -* What is New:: What is new in this release. -* Invoking runtest:: Using `runtest', the main test driver -* Customizing:: Setting `runtest' defaults -* Internals:: The DejaGnu implementation -* Tests:: How to write a test case -* Extending:: New tools, new targets, and new hosts -* Installation:: Configuring and Installing DejaGnu -* Index:: Index -@end menu -@end ifinfo - -@iftex -@raggedbottom -@end iftex - -@node Overview -@chapter What is DejaGnu? -@cindex overview - -DejaGnu is a framework for testing other programs. Its purpose is to -provide a single front end for all tests. Beyond this, DejaGnu offers -several advantages for testing: - -@enumerate -@item -The flexibility and consistency of the DejaGnu framework make it easy -to write tests for any program. - -@item -DejaGnu provides a layer of abstraction which allows you to write tests -that are portable to any host or target where a program must be tested. -For instance, a test for GDB can run (from any Unix based host) on any -target architecture that DejaGnu supports. Currently DejaGnu runs tests -on several single board computers, whose operating software ranges from -just a boot monitor to a full-fledged, Unix-like realtime OS. - -@item -All tests have the same output format. This makes it easy to integrate -testing into other software development processes. DejaGnu's output is -designed to be parsed by other filtering script, and it is also human -readable. -@end enumerate - -DejaGnu is written in @code{expect}, which in turn uses @dfn{Tcl}---Tool -command language. - -@cindex @code{expect} script names -@kindex .exp -@cindex suffix, @code{expect} scripts -Running tests requires two things: the testing framework, and the test -suites themselves. Tests are usually written in @code{expect} using -Tcl, but you can also use a Tcl script to run a test suite that is not -based on @code{expect}. (@code{expect} script filenames conventionally -use @samp{.exp} as a suffix; for example, the main implementation of the -DejaGnu test driver is in the file @file{runtest.exp}.) - - -@menu -* Running Tests:: A first look at running DejaGnu tests -* Sample Test:: What does a DejaGnu test case look like? -* Design Goals:: Goals behind DejaGnu -* Posix:: DejaGnu conforms to POSIX 1003.3 -* Future Directions:: Where is DejaGnu going? -* Tcl and Expect:: Reading more about Tcl and Expect -@end menu - -@node What is New -@chapter What is new in this release ? -@cindex What is New - -This release has a number of substantial changes over version 1.2. The -most visible change is that the version of expect and Tcl included in -the release are up-to-date with the current stable net releases. Other -changes are: - -@enumerate -@item -@c FIXME: add a link to the config section -The config sub-system in DejaGnu has been completely redesigned. It now -supports testing on remote hosts as well as remote targets. - -@item -More builtin support for building target binaries with the correct -linker flags. Currently this only works with GCC, preferably with a -target support by @code{libgloss}. - -@item -Lots of little bug fixes from a year of heavy use here at Cygnus -Support. - -@item -DejaGnu now uses @code{autoconf} for configuration. - -@item -New test cases for DejaGnu have been added for the new features, plus -the "--tool" option bug in the 1.2 testsuite has been fixed. - -@item -The @code{--tool} option is now optional. - -@item -@code{runtest} when searching for test drivers ignores all directories -named SCCS, RCS, and CVS. - -@item -There is now a generic keyword based test harness that uses comments in -source code to control how each test case gets built and run. - -@item -There is now some support for running a testsuite with multiple passes. - -@end enumerate - -@node Running Tests -@section Running existing tests -@cindex existing tests, running -@cindex running tests -@cindex tests, running - -@kindex make check -To run tests from an existing collection, first use @code{configure} as -usual to set up the source directory containing the tests. Then try -running - -@example -make check -@end example - -@cindex @code{check} makefile target -If the @code{check} target exists, it usually saves you some -trouble---for instance, it can set up any auxiliary programs or other -files needed by the tests. - -@cindex auxiliary files, building -Once you have run @samp{make check} to build any auxiliary files, you -might want to call the test driver @code{runtest} directly to repeat the -tests. You may also have to call @code{runtest} directly for test -collections with no @code{check} target in the @file{Makefile}. - -@c force page break to avoid losing footnote to another page -@page -@cindex @code{runtest}, most common options -@cindex options for @code{runtest}, common -Typically, you must use two command-line options: @samp{--tool}, to -specify which set of tests to run@footnote{@samp{--tool} selects a -particular suite of tests, @emph{not} the name of the executable program -to run. @xref{Config Values,,Configuration dependent values}, for -information on the variables that you can use to specify the names of -programs to run.}, and @samp{--srcdir}, to specify where to find test -directories. - -For example, if the directory @file{gdb/testsuite} contains a collection -of DejaGnu tests for @sc{gdb}, you can run them like this: - -@example -eg$ cd gdb/testsuite -eg$ runtest --tool gdb -@exdent @emph{Test output follows, ending with:} - - === gdb Summary === - -# of expected passes 508 -# of expected failures 103 -/usr/latest/bin/gdb version 4.14.4 -nx -@end example - -You can use the option @samp{--srcdir} to point to some other directory -containing a collection of tests: - -@smallexample -eg$ runtest --tool gdb --srcdir /devo/gdb/testsuite -@end smallexample - -@cindex native configuration -@cindex cross configuration -These examples assume a @dfn{native} configuration, where the same -computer runs both @code{runtest} and the tests themselves. When you -have a @dfn{cross} configuration, the tests run on a different computer, -controlled by the host running @code{runtest}. In this situation, you -need the option @samp{--name} to specify the network address for the -other computer: - -@smallexample -eg$ runtest --tool gdb --name vx9.munist.com -@end smallexample - -If you always use the same option values, you can record them in a file -called @file{site.exp}, rather than typing them each time. @xref{Config -Values,,Setting defaults for @code{runtest} options}. - -By default, @code{runtest} prints only the names of the tests it runs, -output from any tests that have unexpected results, and a summary -showing how many tests passed and how many failed. To display output -from all tests (whether or not they behave as expected), use the -@samp{--all} option. For more verbose output about processes being run, -communication, and so on, use @samp{--verbose}. To see even more output, -use multiple @samp{--verbose} options. @xref{Invoking runtest,,Using -@code{runtest}}, for a more detailed explanation of each @code{runtest} -option. - -Test output goes into two files in your current directory: summary -output in @file{@var{tool}.sum}, and detailed output in -@file{@var{tool}.log}. (@var{tool} refers to the collection of tests; -for example, after a run with @samp{--tool gdb}, look for output files -@file{gdb.sum} and @file{gdb.log}.) @xref{Output Files,,The files -DejaGnu writes}. - -@node Sample Test -@section What does a DejaGnu test look like? - -@cindex example -Each DejaGnu test is an @code{expect} script; the tests vary widely in -complexity, depending on the nature of the tool and the feature tested. - -@kindex gdb.t00/echo.exp -@kindex echo.exp -Here is a very simple @sc{gdb} test---one of the simplest tests shipped -with DejaGnu (extracted from @file{gdb.t00/echo.exp}):@footnote{More -recent @sc{gdb} tests use the @samp{gdb_test} procedure. -An equivalent test using that procedure is @samp{ gdb_test "echo Hello -world!" "Hello world!" }} -@c FIXME! include xref in footnote, when gdb_test documented in some manual. -@c @xref{}. -@c Extra spaces in @samp above avoid running end ' against " inside. - -@cartouche -@smallexample -# send a string to the GDB stdin: -send "echo Hello world!\n" - -# inspect the GDB stdout for the correct reply, -# and determine whether the test passes or fails: -expect @{ - -re "Hello world.*$prompt $" @{ pass "Echo test" @} - -re "$prompt $" @{ fail "Echo test" @} - timeout @{ fail "(timeout) Echo test" @} - @} -@end smallexample -@end cartouche - -Though brief, this example is a complete test. It illustrates some of -the main features of DejaGnu test scripts: - -@itemize @bullet -@item -The test case does not start the tested program (@sc{gdb} in this case); -all test scripts for interactive tools can assume the corresponding tool -is running. - -@item -Comments start with @samp{#}. - -@item -The main commands you use to control a tested program are @code{send} -(to give it commands) and @code{expect} (to analyze its responses). - -@item -The @code{expect} command uses a list of pairs; a pattern (regular -expression if @samp{-re} specified), followed by an action to run if the -pattern matches output from the program. Only the action for the -@emph{first} matching pattern will execute. - -@item -Test cases use the commands @code{pass} and @code{fail} to record the -test outcome. -@end itemize - -@node Design Goals -@section Design goals -@cindex design goals - -DejaGnu grew out of the internal needs of Cygnus Support. Cygnus -maintains and enhances a variety of free programs in many different -environments, and we needed a testing tool that: - -@itemize @bullet -@item -is useful to developers while fixing bugs; - -@item -automates running many tests during a software release process; - -@item -is portable among a variety of host computers; - -@item -supports cross-development testing; - -@item -permits testing interactive programs, like @sc{gdb}; and - -@item -permits testing batch oriented programs, like @sc{gcc}. -@end itemize - -Some of the requirements proved challenging. For example, interactive -programs do not lend themselves very well to automated testing. But all -the requirements are important: for instance, it is imperative to make -sure that @sc{gdb} works as well when cross-debugging as it does in a -native configuration. - -Probably the greatest challenge was testing in a cross-development -environment (which can be a real nightmare). Most cross-development -environments are customized by each developer. Even when buying -packaged boards from vendors there are many differences. The -communication interfaces vary from a serial line to ethernet. DejaGnu -was designed with a modular communication setup, so that each kind of -communication can be added as required, and supported thereafter. Once -a communication procedure is coded, any test can use it. Currently -DejaGnu can use @code{rsh}, @code{rlogin}, @code{telnet}, @code{tip}, -@code{kermit}, and @code{mondfe} for remote communications. - -@cindex name ``DejaGnu'' -@cindex DejaGnu, the name -@cindex Menapace, Julia -Julia Menapace first coined the term ``Deja Gnu'' to describe an earlier -testing framework at Cygnus Support. When we replaced it with the -Expect-based framework, it was like DejaGnu all over again@dots{} - -@node Posix -@section A POSIX conforming test framework - -@cindex POSIX conformance -@cindex standard conformance: POSIX 1003.3 -DejaGnu conforms to the @sc{posix} standard for test frameworks. - -@cindex TET -@sc{posix} standard 1003.3 defines what a testing framework needs to -provide, in order to permit the creation of @sc{posix} conformance -test suites. This standard is primarily oriented to running @sc{posix} -conformance tests, but its requirements also support testing of features -not related to @sc{posix} conformance. @sc{posix} 1003.3 does not -specify a particular testing framework, but at this time there is only -one other @sc{posix} conforming test framework: -@sc{tet}.@footnote{@sc{tet} was created by Unisoft for a consortium -comprised of X/Open, Unix International, and the Open Software -Foundation.} - -The @sc{posix} documentation refers to @dfn{assertions}. An assertion -is a description of behavior. For example, if a standard says ``The sun -shall shine'', a corresponding assertion might be ``The sun is -shining.'' A test based on this assertion would pass or fail depending -on whether it is daytime or nighttime. It is important to note that the -standard being tested is never 1003.3; the standard being tested is some -other standard, for which the assertions were written. - -As there is no test suite to test @emph{testing frameworks} for -@sc{posix} 1003.3 conformance, verifying conformance to this standard is -done by repeatedly reading the standard and experimenting. One of the -main things 1003.3 does specify is the set of allowed output messages, -and their definitions. Four messages are supported for a required -feature of @sc{posix} conforming systems, and a fifth for a conditional -feature. DejaGnu supports the use of all five output messages; in this -sense a test suite that uses exactly these messages can be considered -@sc{posix} conforming. These definitions specify the output of a test -case: - -@ftable @code -@cindex success, POSIX definition -@item PASS -A test has succeeded. That is, it demonstrated that the assertion is true. - -@cindex XFAIL, avoiding for POSIX -@item XFAIL -@sc{posix} 1003.3 does not incorporate the notion of expected failures, -so @code{PASS}, instead of @code{XPASS}, must also be returned for test -cases which were expected to fail and did not. This means that -@code{PASS} is in some sense more ambiguous than if @code{XPASS} is also -used. For information on @code{XPASS} and @code{XFAIL}, see -@ref{Invoking runtest,,Using @code{runtest}}. - -@item FAIL -@cindex failure, POSIX definition -A test @emph{has} produced the bug it was intended to capture. That is, -it has demonstrated that the assertion is false. The @code{FAIL} -message is based on the test case only. Other messages are used to -indicate a failure of the framework. - -As with @code{PASS}, @sc{posix} tests must return @code{FAIL} rather -than @code{XFAIL} even if a failure was expected. - -@item UNRESOLVED -@cindex ambiguity, required for POSIX -A test produced indeterminate results. Usually, this means the test -executed in an unexpected fashion; this outcome requires that a human -being go over results, to determine if the test should have passed or -failed. This message is also used for any test that requires human -intervention because it is beyond the abilities of the testing -framework. Any unresolved test should resolved to @code{PASS} or -@code{FAIL} before a test run can be considered finished. - -Note that for @sc{posix}, each assertion must produce a test result -code. If the test isn't actually run, it must produce @code{UNRESOLVED} -rather than just leaving that test out of the output. This means that -you have to be careful when writing tests, to not carelessly use tcl -statements like @code{return}---if you alter the flow of control of the -tcl code you must insure that every test still produces some result code. - -Here are some of the ways a test may wind up @code{UNRESOLVED}: - -@itemize @bullet -@item -A test's execution is interrupted. - -@item -A test does not produce a clear result. This is usually because there -was an @code{ERROR} from DejaGnu while processing the test, or because there -were three or more @code{WARNING} messages. Any @code{WARNING} or -@code{ERROR} messages can invalidate the output of the test. This -usually requires a human being to examine the output to -determine what really happened---and to improve the test case. - -@item -A test depends on a previous test, which fails. - -@item -The test was set up incorrectly. -@end itemize - -@item UNTESTED -A test was not run. This is a placeholder, used when there is no -real test case yet. -@end ftable - -@noindent -The only remaining output message left is intended to test features that -are specified by the applicable @sc{posix} standard as conditional: - -@ftable @code -@item UNSUPPORTED -There is no support for the tested case. This may mean that a -conditional feature of an operating system, or of a compiler, is not -implemented. DejaGnu also uses this message when a testing environment -(often a ``bare board'' target) lacks basic support for compiling or -running the test case. For example, a test for the system subroutine -@code{gethostname} would never work on a target board running only a -boot monitor. -@end ftable - -DejaGnu uses the same output procedures to produce these messages for -all test suites, and these procedures are already known to conform to -@sc{posix} 1003.3. For a DejaGnu test suite to conform to @sc{posix} -1003.3, you must avoid the @code{setup_xfail} procedure as described in -the @code{PASS} section above, and you must be careful to return -@code{UNRESOLVED} where appropriate, as described in the -@code{UNRESOLVED} section above. - -@node Future Directions -@section Future directions -@cindex future directions - -In the near future, there are two parallel directions for DejaGnu -development. The first is to add support for more hosts and targets. - -The second would permit testing programs with a more complex interface, -whether text based or GUI based. Two components already exist: a Tcl -based X window toolkit, and a terminal package for @code{expect}. Both -of these could be merged into DejaGnu in a way that permits testing -programs that run in each environment. - -Meanwhile, we hope DejaGnu enables the creation of test suites for -conformance to @sc{ansi} C and C++, to @sc{posix}, and to other -standards. We encourage you to make any test suites you create freely -available, under the same terms as DejaGnu itself. - -@node Tcl and Expect -@section Tcl and Expect -@cindex tool command language -@cindex tcl -@cindex Ousterhout, John K. -Tcl was introduced in a paper by John K. Ousterhout at the 1990 Winter -Usenix conference, @cite{Tcl: An Embeddable Command Language}. That -paper is included in PostScript form in the @file{doc} subdirectory of -the Tcl distribution. The version of Tcl included in DejaGnu at this time is -Tcl 7.4p3. - -@cindex @code{expect} scripting language -@cindex Libes, Don -Don Libes introduced @code{expect} in his paper @cite{expect: Curing -Those Uncontrollable Fits of Interaction} at the 1990 Summer Usenix -conference. The paper is included in PostScript form in the -@code{expect} distribution (as are several other papers about -@code{expect}). The version of expect included in DejaGnu at this time -is expect 5.18.0. - -@node Invoking runtest -@chapter Using @code{runtest} -@cindex invoking -@cindex running -@cindex command line options -@cindex options - -@cindex @code{runtest} description -@cindex DejaGnu test driver -@code{runtest} is the executable test driver for DejaGnu. You can -specify two kinds of things on the @code{runtest} command line: command -line options, and Tcl variables for the test scripts. The options are -listed alphabetically below. - -@cindex exit code from @code{runtest} -@cindex @code{runtest} exit code -@code{runtest} returns an exit code of @code{1} if any test -has an unexpected result; otherwise (if all tests pass or fail as -expected) it returns @code{0} as the exit code. - -@code{runtest} flags the outcome of each test as one of these cases. -(@xref{Posix,,A POSIX conforming test framework}, for a discussion of -how @sc{posix} specifies the meanings of these cases.) - -@table @code -@item PASS -@kindex PASS -@cindex successful test -@cindex test, successful -The most desirable outcome: the test succeeded, and was expected to -succeed. - -@item XPASS -@kindex XPASS -@cindex successful test, unexpected -@cindex unexpected success -A pleasant kind of failure: a test was expected to fail, but succeeded. -This may indicate progress; inspect the test case to determine whether -you should amend it to stop expecting failure. - -@item FAIL -@kindex FAIL -@cindex failing test, unexpected -@cindex test, failing -A test failed, although it was expected to succeed. This may indicate -regress; inspect the test case and the failing software to locate the bug. - -@item XFAIL -@kindex XFAIL -@cindex expected failure -@cindex failing test, expected -A test failed, but it was expected to fail. This result indicates no -change in a known bug. If a test fails because the operating system -where the test runs lacks some facility required by the test, the -outcome is @code{UNSUPPORTED} instead. - -@item UNRESOLVED -@kindex UNRESOLVED -@cindex test, unresolved outcome -Output from a test requires manual inspection; the test suite could not -automatically determine the outcome. For example, your tests can report -this outcome is when a test does not complete as expected. - -@item UNTESTED -@kindex UNTESTED -@cindex untested properties -A test case is not yet complete, and in particular cannot yet produce a -@code{PASS} or @code{FAIL}. You can also use this outcome in dummy -``tests'' that note explicitly the absence of a real test case -for a particular property. - -@item UNSUPPORTED -@kindex UNSUPPORTED -@cindex unsupported test -@cindex test, unsupported -A test depends on a conditionally available feature that does not exist -(in the configured testing environment). For example, you can use this -outcome to report on a test case that does not work on a particular -target because its operating system support does not include a required -subroutine. -@end table - -@code{runtest} may also display the following messages: - -@table @code -@item ERROR -@kindex ERROR -@cindex problem, detected by test case -@cindex test case cannot run -Indicates a major problem (detected by the test case itself) in running -the test. This is usually an unrecoverable error, such as a missing file -or loss of communication to the target. (@sc{posix} test suites should -not emit this message; use @code{UNSUPPORTED}, @code{UNTESTED}, or -@code{UNRESOLVED} instead, as appropriate.) - -@item WARNING -@kindex WARNING -@cindex test case warnings -Indicates a possible problem in running the test. Usually warnings -correspond to recoverable errors, or display an important message about -the following tests. - -@item NOTE -@kindex NOTE -@cindex test case messages -An informational message about the test case. -@end table - -This is the full set of command line options that @code{runtest} -recognizes. Arguments may be abbreviated to the shortest unique string. - -@cindex @code{runtest} option list -@cindex option list, @code{runtest} -@smallexample -runtest --tool @var{tool} [ @var{testsuite}.exp @dots{} ] -[ @var{testsuite}.exp="testfile1 @dots{}" ] -[ @var{tclvar}=@var{value}@dots{} ] -[ --all ] [ --baud @var{baud-rate} ] [ --connect @var{type} ] -[ --debug ] [ --help ] [ --host @var{string} ] -[ --mail "@var{name} @dots{}" ] [ --name @var{string} ] -[ --name @var{name} ] [ --outdir @var{path} ] -[ --objdir @var{path} ] [ --reboot ] -[ --srcdir @var{path} ] [ --strace @var{n} ] -[ --target @var{string} --build @var{string} ] -[ -v | --verbose ] [ -V | --version ] [ --D@var{n} ] -@end smallexample - -@table @code -@item --tool @var{tool} -@cindex selecting tests for a tool -@cindex @code{--tool} (@code{runtest} option) -@var{tool} specifies what set of tests to run, and what initialization -module to use. @var{tool} is used @emph{only} for these two purposes: -it is @emph{not} used to name the executable program to test. -Executable tool names (and paths) are recorded in @file{site.exp} -(@pxref{Config Values,,Configuration dependent values}), and you can -override them by specifying Tcl variables on the command line. - -For example, including @samp{--tool gcc} on the @code{runtest} command -line runs tests from all test subdirectories whose names match -@file{gcc.*}, and uses one of the initialization modules named -@file{config/*-gcc.exp}. To specify the name of the compiler (perhaps -as an alternative path to what @code{runtest} would use by default), use -@samp{GCC=@var{binname}} on the @code{runtest} command line. - -@item @var{testsuite}.exp @dots{} -@cindex selecting a range of tests -@cindex tests, running specifically -@cindex naming tests to run -Specify the names of testsuites to run. -By default, @code{runtest} runs all tests for the tool, but you can -restrict it to particular testsuites by giving the names of the @samp{.exp} -@code{expect} scripts that control them. - -@var{testsuite}.exp may not include path information; use plain filenames. - -@item @var{testfile}.exp="testfile1 @dots{}" -@cindex selecting a range of tests -@cindex tests, running specifically -@cindex naming tests to run -Specify a subset of tests in a suite to run. -For compiler or assembler tests, which often use a single @samp{.exp} -script covering many different source files, this option allows you to -further restrict the tests by listing particular source files to compile. -Some tools even support wildcards here. The wildcards supported depend -upon the tool, but typically they are @code{?}, @code{*}, and @code{[chars]}. - -@item @var{tclvar}=@var{value} -@kindex @var{tclvar}=@var{value} -@cindex Tcl variables, defining for @code{runtest} -@cindex command line Tcl variable definition -@cindex @code{runtest}, variable defns on cmdline -You can define Tcl variables for use by your test scripts in the same -style used with @code{make} for environment variables. For example, -@samp{runtest GDB=gdb.old} defines a variable called @samp{GDB}; when -your scripts refer to @samp{$GDB} in this run, they use the value -@samp{gdb.old}. - -The default Tcl variables used for most tools are defined in the main -DejaGnu @code{Makefile}; their values are captured in the -@file{site.exp} file. @xref{Config Values,,Configuration dependent -values}. - -@item --all -@cindex @code{--all} (@code{runtest} option) -@cindex test output, displaying all -Display all test output. By default, @code{runtest} shows only the -output of tests that produce unexpected results; that is, tests with -status @samp{FAIL} (unexpected failure), @samp{XPASS} (unexpected -success), or @samp{ERROR} (a severe error in the test case itself). -Specify @samp{--all} to see output for tests with status @samp{PASS} -(success, as expected) @samp{XFAIL} (failure, as expected), or -@samp{WARNING} (minor error in the test case itself). - -@item --baud @var{baud-rate} -@itemx -b @var{baud-rate} -@cindex baud rate, specifying -@cindex bps, specifying -@cindex @code{--baud} (@code{runtest} option) -@cindex @code{-b} (@code{runtest} option) -Set the default baud rate to something other than 9600. (Some serial -interface programs, like @code{tip}, use a separate initialization file -instead of this value.) - -@item --connect @var{type} -@cindex connecting to target -@cindex @code{--connect} (@code{runtest} option) -@cindex remote testbed, connecting to -@cindex @code{rlogin}, remote testing via -@cindex @code{telnet}, remote testing via -@cindex @code{rsh}, remote testing via -@cindex @code{tip}, remote testing via -@cindex @code{kermit}, remote testing via -@cindex @code{mondfe}, remote testing via -@cindex remote testing via @code{rlogin} -@cindex remote testing via @code{telnet} -@cindex remote testing via @code{rsh} -@cindex remote testing via @code{tip} -@cindex remote testing via @code{kermit} -@cindex remote testing via @code{mondfe} -Connect to a target testing environment as specified by @var{type}, if -the target is not the computer running @code{runtest}. For example, use -@samp{--connect} to change the program used to connect to a ``bare -board'' boot monitor. The choices for @var{type} in the DejaGnu 1.0 -distribution are @samp{rlogin}, @samp{telnet}, @samp{rsh}, @samp{tip}, -@samp{kermit}, and @samp{mondfe}. - -@noindent -The default for this option depends on the configuration (@pxref{Cross -Targets,,Remote targets supported}). The default is chosen to be the -most convenient communication method available, but often other -alternatives work as well; you may find it useful to try alternative -connect methods if you suspect a communication problem with your testing -target. - -@item --debug -@cindex @code{--debug} (@code{runtest} option) -@cindex debug log for test cases -@cindex test cases, debug log -@cindex @code{dbg.log} file -Turns on the @code{expect} internal debugging output. Debugging output -is displayed as part of the @code{runtest} output, and logged to a file -called @file{dbg.log}. The extra debugging output does @emph{not} -appear on standard output, unless the verbose level is greater than 2 -(for instance, to see debug output immediately, specify @samp{--debug -v --v}). The debugging output shows all attempts at matching the test -output of the tool with the scripted patterns describing expected -output. The output generated with @samp{--strace} also goes into -@file{dbg.log}. - -@item --help -@itemx -he -@cindex @code{--help} (@code{runtest} option) -@cindex help with @code{runtest} -@cindex @code{runtest}, listing options -Prints out a short summary of the @code{runtest} options, then exits -(even if you also specify other options). - -@item --host @var{string} -@cindex @code{--host} (@code{runtest} option) -@cindex specifying the host config name -@cindex host config name, changing -@var{string} is a full configuration ``triple'' name as used by -@code{configure}. Use this option to override the default string -recorded by your configuration's choice of host. This choice does not -change how anything is actually configured unless --build is also -specified; it affects @emph{only} DejaGnu procedures that compare the -host string with particular values. The procedures @code{ishost}, -@code{istarget}, @code{isnative}, and @code{setup_xfail} are affected by -@samp{--host}. In this usage, @code{host} refers to the machine that the -tests are to be run on, which may not be the same as the @code{build} -machine. If @code{--build} is also specified, then @code{--host} refers -to the machine that the tests wil, be run on, not the machine DejaGnu is -run on. - -@item --build @var{string} -@cindex @code{--build} (@code{runtest} option) -@cindex specifying the build config name -@cindex build config name, changing -@var{string} is a full configuration ``triple'' name as used by -@code{configure}. This is the type of machine DejaGnu and the tools to -be tested are built on. For a normal cross this is the same as the host, -but for a canadian cross, they are seperate. - -@item --name @var{name} -@cindex specifying target name -@cindex target machine name -@cindex @code{--name} (@code{runtest} option) -@var{name} is a name for the particular testing target machine (for -cross testing). If the testing target has IP network support (for -example, @code{RPC} or @code{NFS}), this is the network name for the -target itself. (@var{name} is @emph{not the configuration string} you -specify as a target with @code{configure}; the @samp{--name} option -names a particular target, rather than describing a class of targets.) -For targets that connect in other ways, the meaning of the @var{name} -string depends on the connection method. @xref{Cross Targets,,Remote -targets supported}. - -@item --name @var{string} -@cindex remote test machine name -@cindex name for remote test machine -Specify a network name of testing target or its host. The particular -names that are meaningful with @samp{--name} will depend on your site -configuration, and on the connection protocol: for example, @code{tip} -connections require names from a serial line configuration file (usually -called @file{/etc/remote}), while @code{telnet} connections use IP -hostnames. - -@item --objdir @var{path} -@cindex @code{--objdir} (@code{runtest} option) -@cindex object directory -@cindex test programs, auxiliary -@cindex auxiliary test programs -Use @var{path} as the top directory containing any auxiliary compiled -test code. This defaults to @file{.}. Use this option to locate -pre-compiled test code. You can normally prepare any auxiliary files -needed with @code{make}. - -@item --outdir @var{path} -@cindex output directory -@cindex @code{--outdir} (@code{runtest} option) -@cindex log files, where to write -Write output logs in directory @var{path}. The default is @samp{.}, the -directory where you start @code{runtest}. This option affects only the -summary and the detailed log files @file{@var{tool}.sum} and -@file{@var{tool}.log}. The DejaGnu debug log @file{dbg.log} always -appears (when requested) in the local directory. - -@item --reboot -@cindex rebooting remote targets -@cindex @code{--reboot} (@code{runtest} option) -Reboot the target board when @code{runtest} initializes. -Usually, when running tests on a separate target board, it is safer to -reboot the target to be certain of its state. However, when developing -test scripts, rebooting takes a lot of time. - -@item --srcdir @var{path} -@cindex source directory -@cindex @code{--srcdir} (@code{runtest} option) -Use @var{path} as the top directory for test scripts to run. -@code{runtest} looks in this directory for any subdirectory whose name -begins with the toolname (specified with @samp{--tool}). For instance, -with @samp{--tool gdb}, @code{runtest} uses tests in subdirectories -@file{gdb.*} (with the usual shell-like filename expansion). If you do -not use @samp{--srcdir}, @code{runtest} looks for test directories under -the current working directory. - -@item --strace @var{n} -@cindex @code{--strace} (@code{runtest} option) -@cindex tracing Tcl commands -@cindex @code{expect} internal tracing -Turn on internal tracing for @code{expect}, to @var{n} levels deep. By -adjusting the level, you can control the extent to which your output -expands multi-level Tcl statements. This allows you to ignore some -levels of @code{case} or @code{if} statements. Each procedure call or -control structure counts as one ``level''. - -The output is recorded in the same file, @file{dbg.log}, used for output -from @samp{--debug}. - -@item --target @var{string} -@cindex @code{--target} (@code{runtest} option) -@cindex specifying the target configuration -@cindex target configuration, specifying -Use this option to override the default setting (running native tests). -@var{string} is a full configuration ``triple'' -name@footnote{Configuration triples have the form -@samp{@var{cpu}-@var{vendor}-@var{os}}.} as used by @code{configure}. -This option changes the configuration @code{runtest} uses for the -default tool names, and other setup information. @xref{Using -configure,,Using @code{configure}, configure.info, Cygnus configure}, -for details about @code{configure} names. - -@item --verbose -@itemx -v -@cindex @code{--verbose} (@code{runtest} option) -@cindex @code{-v} (@code{runtest} option) -@cindex turning on output -@cindex output, additional -Turns on more output. Repeating this option increases the amount of -output displayed. Level one (@samp{-v}) is simply test output. Level -two (@samp{-v -v}) shows messages on options, configuration, and process -control. Verbose messages appear in the detailed (@file{*.log}) log -file, but not in the summary (@file{*.sum}) log file. - -@item --version -@itemx -V -@cindex @code{-V} (@code{runtest} option) -@cindex @code{--version} (@code{runtest} option) -@cindex version numbers -Prints out the version numbers of DejaGnu, @code{expect} and Tcl, and -exits without running any tests. - -@item -D0 -@itemx -D1 -@cindex starting the tcl debugger -@cindex tcl debugger -@c FIXME!!! we should say a *lot* more about this debugger -Start the internal Tcl debugger. The Tcl debugger supports breakpoints, -single stepping, and other common debugging activities. (See @cite{A -Debugger for Tcl Applications} by Don Libes. @footnote{Distributed in -PostScript form with @code{expect} as the file@* -@file{expect/tcl-debug.ps}.}) - -If you specify @samp{-D1}, the @code{expect} shell stops at a breakpoint -as soon as DejaGnu invokes it. - -If you specify @samp{-D0}, DejaGnu starts as usual, but you can enter -the debugger by sending an interrupt (e.g. by typing @key{C-c}). -@end table - -@node Customizing -@chapter Setting @code{runtest} defaults - -@kindex site.exp -@cindex variables of DejaGnu, defaults -The site configuration file, @file{site.exp}, captures -configuration-dependent values and propagates them to the DejaGnu test -environment using Tcl variables. This ties the DejaGnu test scripts -into the @code{configure} and @code{make} programs. - -@cindex @file{site.exp}, multiple -@cindex overriding @file{site.exp} -DejaGnu supports more than one @file{site.exp} file. The multiple -instances of @file{site.exp} are loaded in a fixed order built into -DejaGnu (the more local last). The first file loaded is the optional -@code{~/.dejagnurc}, then the local files, and finally the global file. - -@enumerate -@item -There is am optional ``master'' @file{site.exp}, capturing configuration values -that apply to DejaGnu across the board, in each configuration-specific -subdirectory of the DejaGnu library directory. @code{runtest} loads -these values first. @xref{Installation,,Configuring and Installing -DejaGnu}. The master @file{site.exp} contains the default values for -all targets and hosts supported by DejaGnu. This master file is -identified by setting the environment variable @code{DEJAGNU} to the -name of the file. This is also refered to as the ``global'' config file. - -@item -Any directory containing a configured test suite also has a -@file{site.exp}, capturing configuration values specific to the tool -under test. Since @code{runtest} loads these values last, the -individual test configuration can either rely on and use, or override, -any of the global values from the ``master'' @file{site.exp}. - -You can usually generate or update the testsuite @file{site.exp} by -typing @samp{make site.exp} in the test suite directory, after the test -suite is configured. - -@item -You can also have a file in your home directory called -@code{.dejagnurc}. This gets loaded first before the other config -files. Usually this is used for personal stuff, like setting -@code{all_flag} so all the output gets printed, or verbosity levels. -@end enumerate - -You can further override the default values in a user-editable section -of any @file{site.exp}, or by setting variables on the @code{runtest} -command line. - -@menu -* Config Values:: Variables used in the configuration file. -* Master Config File:: The master configuration file. -* Local Config File:: The local configuration file. -* Personal Config File:: The personal configuration file. -@end menu - -@node Config Values, Master Config File, , Customizing -@subsection Config Variables -@cindex configuration dependent defaults -@cindex setting defaults for DejaGnu variables - -@c NOTE: default values are given via @code{"fubar"} rather than the -@c more conventional @samp{fubar} to permit a consistent and clear -@c notation for the empty string (@code{""}), which will work exactly as -@c typed. - -DejaGnu uses a named array in Tcl to hold all the info for each -machine. In the case of a canadian cross, this means host information as -well as target information. The named array is called -@code{target_info}, and it has two indices. The following fields are -part of the array. - -@table @code -@item name -The name of the target. (mostly for error messages) This -should also be the string used for this target's array. -It should also be the same as the linker script so we -can find them dynamically. This should be the same as the argument used -for @code{push_target@{@}}. - -@item ldflags -This is the linker flags required to produce a fully linked -executable. For @code{libgloss} supported targets this is usually just -the name of the linker script. - -@item config -The target canonical for this target. This is used by some init files to -make sure the target is supported. - -@item cflags -The flags required to produce an object file from a source file. - -@item connect -This is the connectmode for this target. This is for both IP and -serial connections. Typically this is either @code{telnet}, -@code{rlogin}, or @code{rsh}. - -@item target -This is the hostname of the target. This is for TCP/IP based connections, -and is also used for version of tip that use /etc/remote. - -@item serial -This is the serial port. This is typically /dev/tty? or com?:. - -@item netport -This is the IP port. This is commonly used for telneting to target -boards that are connected to a terminal server. In that case the IP port -specifies the which serial port to use. - -@item baud -This is the baud rate for a serial port connection. - -@item x10 -This is the parameters for an x10 controller. These are simple devices -that let us power cycle or reset a target board remotely. - -@item fileid -This is the fileid or spawn id of of the connection. - -@item prompt -a glob style pattern to recognize the prompt. - -@item abbrev -abbreviation for tool init files. - -@item ioport -This is the port for I/O on dual port systems. In this configuration, -the main serial port @code{0} is usually used for stdin and stdout, -which the second serial port can be used for debugging. -@end table - -The first index into the array is the same value as used in the -@code{name} field. This is usually a short version of the name of the -target board. For an example, here's the settings I use for my -@code{Motorola's} @code{IDP} board and my @code{Motorola} 6U VME -@code{MVME135-1} board. (both m68k targets) - -@cartouche -@smallexample -# IDP board -set target_info(idp,name) "idp" -set target_info(idp,ldflags) "-Tidp.ld" -set target_info(idp,config) m68k-unknown-aout -set target_info(idp,cflags) "" -set target_info(idp,connect) telnet -set target_info(idp,target) "s7" -set target_info(idp,serial) "tstty7" -set target_info(idp,netport) "wharfrat:1007" -set target_info(idp,baud) "9600" -# MVME 135 board -set target_info(idp,name) "mvme" -set target_info(idp,ldflags) "-Tmvme.ld" -set target_info(idp,config) m68k-unknown-aout -set target_info(idp,cflags) "" -set target_info(idp,connect) telnet -set target_info(idp,target) "s8" -set target_info(idp,serial) "tstty8" -set target_info(idp,netport) "wharfrat:1008" -set target_info(idp,baud) "9600" -@end smallexample -@end cartouche - -DejaGnu can use this information to switch between multiple targets in -one test run. This is done through the use of the @code{push_target} -procedure, which is discussed elsewhere. -@c FIXME: write that section and put an xref here - -This array can also hold information for a remote host, which is used -when testing a candain cross. In this case, the only thing different is -the index is just @code{host}. Here's the settings I use to run tests -on my NT machine while running DejaGnu on a Unix machine. (in this case -a Linux box) - -@cartouche -@smallexample -set target_info(host,name) "nt-host" -set target_info(host,config) "386-unknown-winnt" -set target_info(host,connect) "telnet" -set target_info(host,target) "ripple" -@end smallexample -@end cartouche - -There is more info on how to use these variables in the sections on the -config files. @xref{Master Config File,,Configuration Files}. - -@cindex option defaults -@cindex @code{runtest} option defaults -@cindex variables for option defaults -@cindex defaults, option -In the user editable second section of @file{site.exp}, you can not only -override the configuration variables captured in the first section, but -also specify default values for all the @code{runtest} command line -options. Save for @samp{--debug}, @samp{--help}, and @samp{--version}, -each command line option has an associated Tcl variable. Use the Tcl -@code{set} command to specify a new default value (as for the -configuration variables). The following table describes the -correspondence between command line options and variables you can set in -@file{site.exp}. @xref{Invoking runtest,,Running the Tests}, for -explanations of the command-line options. - -@kindex all_flag -@kindex baud -@kindex reboot -@kindex outdir -@kindex objdir -@kindex runtests -@kindex ignoretests -@kindex srcdir -@kindex tracelevel -@kindex targetname -@kindex connectmode -@kindex tool -@kindex target_triplet -@kindex host_triplet -@kindex build_triplet -@kindex verbose - -@cindex command line option variables -@cindex Tcl variables for option defaults -@cindex default options, controlling -@cindex options, Tcl variables for defaults - -@ifinfo -@display -runtest Tcl -option variable description -__________ ________ ___________________________________________ - ---all all_flag display all test results if set - ---baud baud set the default baud rate to something other - than 9600. ---connect connectmode @samp{rlogin}, @samp{telnet}, @samp{rsh}, - @samp{kermit}, @samp{tip}, or @samp{mondfe} - ---outdir outdir directory for @file{@var{tool}.sum} and @file{@var{tool}.log} - ---objdir objdir directory for pre-compiled binaries - ---reboot reboot reboot the target if set to @code{"1"}; - do not reboot if set to @code{"0"} (the default) - ---srcdir srcdir directory of test subdirectories - ---strace tracelevel a number: Tcl trace depth - ---tool tool name of tool to test; identifies init, test subdir - ---verbose verbose verbosity level. As option, use multiple times; - as variable, set a number, 0 or greater ---target target_triplet The canonical configuration string for the target. ---host host_triplet The canonical configuration string for the host. ---build build_triplet The canonical configuration string for the - build host. - -@end display -@end ifinfo - -@tex -\vbox{\halign{\hfil \tt #\quad &\quad\tt #\hfil &\hbox{\vtop{{\raggedright\parindent=0pt\parskip=5pt\hsize=2.75in\rm#\strut\par}}}\hfill\cr -\cr -{\it runtest}&{\it Tcl}\cr -{\it option}&{\it variable}&{\it description}\cr -\noalign{\hrule width\hsize}\cr ---all &all\_flag &display all test results if set\cr ---baud &baud &set the default baud rate to something other - than 9600.\cr ---connect &connectmode &@samp{rlogin}, @samp{telnet}, @samp{rsh}, - @samp{kermit}, @samp{tip}, or @samp{mondfe}\cr ---mail &mailing\_list&address list for mailing test output\cr ---name &targetname &network name of testing target or its host\cr ---outdir &outdir &directory for @file{@var{tool}.sum} and @file{@var{tool}.log}\cr ---objdir &objdir &directory for compiled binaries\cr ---reboot &reboot &reboot the target if set to @code{"1"}; -do not reboot if set to @code{"0"} (the default)\cr ---srcdir &srcdir &directory of test subdirectories\cr ---strace &tracelevel &a number: Tcl trace depth\cr ---tool &tool &name of tool to test; identifies init, test subdir\cr ---verbose &verbose &verbosity level. As option, use multiple times; - as variable, set a number, 0 or greater\cr ---target &target\_triplet - &The canonical configuration string for the target.\cr ---host &host\_triplet &The canonical configuration string for the host.\cr ---build &build\_triplet &The canonical configuration string for the - build host.\cr -}} -@end tex - -@node Master Config File, Local Config File, Config Values, Customizing -@subsection Master Config File -@cindex master @file{site.exp} -@cindex @file{site.exp} for all of DejaGnu -The master config file is where all the target specific config variables -get set for a whole site get set. The idea is that for a centralized -testing lab where people have to share a target between multiple -developers. There are settings for both remote targets and remote hosts. -Here's an example of a Master Config File (also called the Global config -file) for a @emph{canadian cross}. A canadian cross is when you build -and test a cross compiler on a machine other than the one it's to be -hosted on. - -Here we have the config settings for our California office. Note that -all config values are site dependant. Here we have two sets of values -that we use for testing m68k-aout cross compilers. As both of these -target boards has a different debugging protocol, we test on both of -them in sequence. - -@cartouche -@smallexample -global CFLAGS -global CXXFLAGS - -case "$target_triplet" in @{ - @{ "native" @} @{ - set target_abbrev unix - @} - @{ "m68*-unknown-aout" @} @{ - set target_abbrev "rom68k" - # IDP target # IDP board with rom68k monitor - set target_info(idp,name) "idp" - set target_info(idp,ldflags) "-Tidp.ld" - set target_info(idp,config) m68k-unknown-aout - set target_info(idp,cflags) "" - set target_info(idp,connect) telnet - set target_info(idp,target) "s7" - set target_info(idp,serial) "tstty12" - set target_info(idp,netport) "truckin:1007" - set target_info(idp,baud) "9600" - # MVME target # Motorola MVME 135 with BUG monitor - set target_info(mvme,name) "mvme" - set target_info(mvme,ldflags) "-Tmvme.ld" - set target_info(mvme,config) m68k-unknown-aout - set target_info(mvme,cflags) "" - set target_info(mvme,connect) telnet - set target_info(mvme,target) "s4" - set target_info(mvme,serial) "tstty8" - set target_info(mvme,netport) "truckin:1004" - set target_info(mvme,baud) "9600" - @} -@} -@end smallexample -@end cartouche - - In this case, we have support for several remote hosts for -our m68k-aout cross compiler. Typically the remote Unix hosts run -DejaGnu locally, but we also use them for debugging the testsuites when -we find problems in running on remote hosts. Expect won't run on NT, so -DejaGnu is run on the local build machine, and it'll connect to the NT -host and run all the tests for this cross compiler on that host. - -@smallexample -@cartouche -case "$host_triplet" in @{ - "native" @{ - @} - "i?86-*-linux*" @{ # Linux host - set target_info(host,name) "linux-host" - set target_info(host,config) $host_triplet - set target_info(host,connect) rlogin - set target_info(host,target) chinadoll - @} - "i?86-*-winnt # NT host - set target_info(host,name) "nt-host" - set target_info(host,config) i386-unknown-winnt - set target_info(host,connect) telnet - set target_info(host,target) ripple - @} - "hppa*-hp-hpux*" @{ # HP-UX host - set target_info(host,name) "hpux-host" - set target_info(host,config) $host_triplet - set target_info(host,connect) rlogin - set target_info(host,target) slipknot - @} - "sparc-sun-sunos*" @{ # SunOS (sun4) - set target_info(host,name) "sunos-host" - set target_info(host,config) $host_triplet - set target_info(host,connect) rlogin - set target_info(host,target) darkstar - @} -@} -@end cartouche -@end smallexample - -@node Local Config File, Personal Config File, Master Config File, Customizing -@subsection Local Config File -@cindex local @file{site.exp} -@cindex @file{site.exp} for each tool -It is usually more convenient to keep these ``manual overrides'' in the -@file{site.exp} local to each test directory, rather than in the -``master'' @file{site.exp} in the DejaGnu library. - -All local @file{site.exp} usually files have two sections, separated by -comment text. The first section is the part that is generated by -@code{make}. It is essentially a collection of Tcl variable definitions -based on @file{Makefile} environment variables. Since they are generated -by @code{make}, they contain the values as specified by -@code{configure}. (You can also customize these values by using the -@samp{--site} option to @code{configure}.) In particular, this section -contains the @file{Makefile} variables for host and target configuration -data. Do not edit this first section; if you do, your changes are replaced -next time you run @code{make}. - -The first section starts with: - -@cartouche -@smallexample -## these variables are automatically generated by make ## -# Do not edit here. If you wish to override these values -# add them to the last section -@end smallexample -@end cartouche - -In the second section, you can override any default values (locally to -DejaGnu) for all the variables. The -second section can also contain your preferred defaults for all the -command line options to @code{runtest}. This allows you to easily -customize @code{runtest} for your preferences in each configured -test-suite tree, so that you need not type options repeatedly on the -command line. (The second section may also be empty, if you do not wish -to override any defaults.) - -The first section ends with this line: - -@cartouche -@smallexample -## All variables above are generated by configure. Do Not Edit ## -@end smallexample -@end cartouche - -You can make any changes under this line. If you wish to redefine a -variable in the top section, then just put a duplicate value in this -second section. Usually the values defined in this config file are -related to the configuration of the test run. This is the ideal place to -set the variables @code{host_triplet}, @code{build_triplet}, -@code{target_triplet}. All other variables are tool dependant. ie for -testing a compiler, the value for @var{CC} might be set to a freshly -built binary, as opposed to one in the user's path. - -@node Personal Config File, , Local Config File, Customizing -@subsection Personal Config File -@cindex personal config @file{site.exp} -@cindex @file{site.exp} for each person -The personal config file is used to customize @code{runtest's} behaviour -for each person. It's typically used to set the user prefered setting -for verbosity, and any experimental Tcl procedures. My personal -@file{~/.dejagnurc} file looks like: - -@cartouche -@smallexample -set all_flag 1 -set RLOGIN /usr/ucb/rlogin -set RSH /usr/ucb/rsh -@end smallexample -@end cartouche - -Here I set @code{all_flag} so I see all the test cases that PASS along -with the ones that FAIL. I also set @var{RLOGIN} and @code{RSH} to the -BSD version. I have @code{kerberos} installed, and when I rlogin to a -target board, it usually isn't supported. So I use the non secure -versions of these programs rather than the default that's in my path. - -@node Internals -@chapter The DejaGnu Implementation -@cindex operating principles -@cindex internal details - -DejaGnu is entirely written in @code{expect}, which uses Tcl as a -command language. @code{expect} serves as a very programmable shell; -you can run any program, as with the usual Unix command shells---but -once the program is started, your @code{expect} script has fully -programmable control of its input and output. This does not just apply -to the programs under test; @code{expect} can also run any auxiliary -program, such as @code{diff} or @code{sh}, with full control over its -input and output. - -DejaGnu itself is merely a framework for the set of test suites -distributed separately for each @sc{gnu} tool. Future releases of -@sc{gnu} tools will include even more tests, developed throughout the -free software community. - -@kindex runtest.exp -@code{runtest} is the glue to tie together and manage the test scripts. -The @code{runtest} program is actually a simple Bourne shell script that -locates a copy of the @code{expect} shell and then starts the main Tcl -code, @code{runtest.exp}. @code{runtest.exp} itself has these essential -functions: - -@enumerate -@item -Parse the command line options, load the library files, and load the -default configuration files. - -@item -Locating the individual test scripts. @code{runtest.exp} locates the tests -by exploiting a straightforward naming convention based on the string -you specify with the @samp{--tool} option. - -@item -Providing an extended test environment, by defining additional Tcl -procedures beyond those already in @code{expect}. - -@item -Locating target-dependent functions, to standardize the test environment -across a wide variety of test platforms. -@end enumerate - -@menu -* Names:: Conventions for using tool names -* Init Module:: Initialization module -* DejaGnu Builtins:: DejaGnu provides these Tcl procedures -* Target Dependent:: Procedures supplied by the init module -* Cross Targets:: Remote targets supported -* Input Files:: The files DejaGnu depends on -* Output Files:: The files DejaGnu produces -@end menu - -@node Names -@section Conventions for using tool names - -@cindex @code{--tool} and naming conventions -@cindex tool names and naming conventions -@cindex naming conventions -DejaGnu uses @samp{$tool}, the name of the tool under test, to tie -together the testing configuration in a straightforward but flexible -way. If there is only one testsuite for a particular application, then -@samp{$tool} is optional. - -@samp{$tool} is @emph{not} used to invoke the tool, since sites that run -multiple configurations of a particular tool often call each -configuration by a different name. @code{runtest} uses the -configuration-dependent variables captured in @file{site.exp} to -determine how to call each tool. - -@cindex directory names and @code{--tool} -@cindex test directories, naming -@code{runtest} uses tool names to find directories containing tests. -@code{runtest} scans the source directory (specified with -@code{--srcdir}) for all directories whose names start with the tool -name. It is a common practice to put a period after the tool part of the -name. For instance, directories that start with -@samp{g++.} contain @sc{g++} tests. To add a new test, just put it in -any directory (create an entirely new directory, if you wish) whose name -follows this convention. - -@cindex @code{exp} filename suffix -@cindex test filename -@cindex filename for test files -A test is any file in an appropriately named subdirectory whose name -ends in @samp{.exp} (the conventional way of naming @code{expect} -scripts). These simple naming conventions make it as simple as possible -to install new tests: all you must do is put the test in the right -directory. - -@cindex order of tests -@cindex tests, running order -@code{runtest} sorts the tests in each subdirectory by name (using the -Tcl @code{lsort} command) and runs them in the resulting order. - -@node Init Module -@section Initialization module -@cindex tool initialization -@cindex setting up targets - -@c FIXME! should this node be merged with "Target dependent"? - -@cindex init file, purpose -@cindex starting interactive tools -@cindex initialization -The initialization module (or ``init file'') has two purposes: to -provide tool and target dependent procedures, and to start up an -interactive tool to the point where it is ready to operate. The latter -includes establishing communications with the target. All the tests for -interactive programs assume that the tool is already running and -communicating. Initialization modules for non-interactive programs may -only need to supply the support functions. - -@cindex init file name -@cindex name, initialization module -Each test suite directory must contain (in its @file{config} -subdirectory) a separate initialization module for each target. The -appropriate init file is can be named several ways. The prefered name is -the @emph{os} part of the canonical configuration name with @code{.exp} -as the suffix. An example would be that for an @code{m68k-coff} system, -the @code{target_os} part would be @code{coff}. The next way is for -system where there are short filenames, or a shortcut is desired to -refer to the OS name for that target. This is uses the value of -@code{$target_abbrev} rather than the @code{target_os}. - -The final file looked for is simply @file{default.exp}. If there is only -one operating system to support, then this file can be used. It's main -purpose is to offer some support for new operating systems, or for -unsupported cross targets. The last file looked for is -@file{unknown.exp}. This is usually limited to error handling for -unsupported targets. It's whole contents is typically. - -@cartouche -@smallexample -perror "Sorry, there is no support for this target" -exit 1 -@end smallexample -@end cartouche - -At the beginning of the init file, you must first determine the proper -executable name of the tool to execute, since the actual name of the -tool to be tested my vary from system to system. Here's an example -for the @sc{GNU} C compiler. - -@cartouche -@smallexample -global AR -# look for the archiver ar -if ![info exists AR] @{ - set AR [findfile $base_dir/../../binutils/ar $base_dir/../../binutils/ar [tr -ansform ar]] - verbose "AR defaulting to $AR" 2 -@} -@} - -global CFLAGS -if ![info exists CFLAGS] then @{ - set CFLAGS "" -@} -@end smallexample -@end cartouche - -It is always a good idea to first check the variable, and only set it if -it has not yet been defined. Often the proper value of @code{AR} is set -on the command line that invokes @file{runtest}. - -@kindex findfile -The @code{findfile} procedure takes as it's first argument a file name -to look for. The second argument is returned if the file is found, and -the third argument is returned if the file is not found. @code{base_dir} -is set internally by DejaGnu to the top level directory of the object -tree. - -@kindex transform -The @code{transform} procedure takes as its argument the native name of -a tool (such as @samp{gcc} for the compiler), and returns the name as -configured for that tool in the current installation. (For example, a -cross-compiling version of @sc{gnu} CC that generates MIPS code may be -installed with a name like @code{mips-idt-ecoff-gcc}.) - -In a test running native, writing the Tcl code for initialization is -usually quite simple. For cross configurations, however, more elaborate -instructions are usually needed to describe how to talk to a remote -target. - -Each initialization module defines up to four procedures with standard -names and purposes. The names of these procedures begin with -@samp{$tool}, the string that identifies tests for a particular tool: -@code{$tool_start}, @code{$tool_load}, @code{$tool_exit}, and -@code{$tool_version}. For example, the start procedure for @sc{gdb} is -called @code{gdb_start}. (Since start procedures are used differently -for batch and interactive tools, however, @code{runtest} itself never -calls the start procedure. Init files for interactive tools are -expected to end by running the start procedure.) - -@cindex utilities, loading from init file -@cindex defaults, setting in init file -The initialization module is also a good place to call @code{load_lib} -to get any collections of utility procedures meant for a family of test -cases, and to set up default values for any additional Tcl variables -needed for a specific set of tests. - -@xref{Target Dependent,,Target dependent procedures}, for full -descriptions of these procedures. - -@node DejaGnu Builtins -@section DejaGnu procedures -@cindex built in procedures, DejaGnu - -DejaGnu provides these Tcl procedures for use in test scripts. -You can also use any standard @code{expect} or Tcl function. These -procedures are stored in libraries, which DejaGnu loads at -runtime. Here's explanation of the library procedures that get loaded at -runtime. All other librarys are optional, and need to be loaded by the -testsuite. - -@menu -* framework.exp:: Core Internal Procedures. -* remote.exp:: Procedures for remote communication. -* utils.exp:: Utility procedures. -* target.exp:: Cross target procedures. -* debugger.exp:: Procedures for debugging your Tcl code. -@end menu - -@node framework.exp, remote.exp, ,DejaGnu Builtins -@subsection Core Internal Procedures -@cindex Core Internal Procedures - -@xref{Posix,,A POSIX conforming test framework}, for more detailed -explanations of the test outcomes (@samp{FAIL}, @samp{PASS}, -@samp{UNTESTED}, @samp{UNRESOLVED}, @samp{UNSUPPORTED}). - -@ftable @code -@item perror "@var{string} @var{number}" -@cindex test case, ERROR in -@kindex ERROR -Declares a severe error in the testing framework itself. -@code{perror} writes in the log files a message beginning with -@samp{ERROR}, appending the argument @var{string}. If the optional -@var{number} is supplied, then this is used to set the internal count of -errors to that value. - -As a side effect, @code{perror} also changes the effect of the next -@code{pass} or @code{fail} command: the test outcome becomes -@samp{UNRESOLVED}, since an automatic @samp{PASS} or @samp{FAIL} cannot -be trusted after a severe error in the test framework. If the optional -numeric value is @samp{0}, then there are no further side effects to -calling this function, and the following test outcome doesn't become -@samp{UNRESOLVED}. This can be used for errors with no known side -effects. - -@item warning "@var{string} @var{number}" -@cindex test case, WARNING in -@kindex WARNING -Declares detection of a minor error in the test case itself. -@code{warning} writes in the log files a message beginning with -@samp{WARNING}, appending the argument @var{string}. Use @code{warning} -rather than @code{error} for cases (such as communication failure -to be followed by a retry) where the test case can recover from the -error. If the optional @var{number} is supplied, then this is used to -set the internal count of warnings to that value. - -As a side effect, @code{warning_threshold} or more calls to -@code{warning} in a single test case also changes the effect of the next -@code{pass} or @code{fail} command: the test outcome becomes -@samp{UNRESOLVED} since an automatic @samp{PASS} or @samp{FAIL} may not -be trustworthy after many warnings. If the optional numeric value is -@samp{0}, then there are no further side effects to calling this -function, and the following test outcome doesn't become -@samp{UNRESOLVED}. This can be used for errors with no known side -effects. - -@item note "@var{string}" -@cindex test case, informational messages -@kindex NOTE -Appends an informational message to the log file. -@code{note} writes in the log files a message beginning with -@samp{NOTE}, appending the argument @var{string}. Use @code{note} -sparingly. @code{verbose} should be used for most such messages, -but in cases where a message is needed in the log file regardless of -the verbosity level use @code{note}. - -@item pass "@var{string}" -@cindex test case, declaring success -Declares a test to have passed. @code{pass} writes in the -log files a message beginning with @samp{PASS} (or @code{XPASS}, if -failure was expected), appending the argument @var{string}. - -@item fail "@var{string}" -@cindex test case, declaring failure -Declares a test to have failed. @code{fail} writes in the -log files a message beginning with @samp{FAIL} (or @code{XFAIL}, if -failure was expected), appending the argument @var{string}. - -@item unresolved "@var{string}" -@cindex test case, declaring ambiguity -Declares a test to have an unresolved outcome. @code{unresolved} writes -in the log file a message beginning with @samp{UNRESOLVED}, appending -the argument @var{string}. This usually means the test did not execute -as expected, and a human being must go over results to determine if it -passed or failed (and to improve the test case). - -@item untested "@var{string}" -@cindex test case, declaring no test -Declares a test was not run. @code{untested} writes in the log file a -message beginning with @samp{UNTESTED}, appending the argument -@var{string}. For example, you might use this in a dummy test whose -only role is to record that a test does not yet exist for some feature. - -@item unsupported "@var{string}" -@cindex test case, declaring no support -Declares that a test case depends on some facility that does not exist -in the testing environment. @code{unsupported} writes in the log file a -message beginning with @samp{UNSUPPORTED}, appending the argument -@var{string}. - -@item get_warning_threshold -@cindex test case, WARNING threshold -Returns the current value of @code{warning_threshold}. -The default value is 3. - -@item set_warning_threshold @var{threshold} -@cindex test case, WARNING threshold -Sets the value of @code{warning_threshold}. -A value of @code{0} disables it: calls to @code{warning} will not turn -a @samp{PASS} or @samp{FAIL} into an @samp{UNRESOLVED}. - -@item transform "@var{toolname}" -@cindex transform tool name -@cindex installed tool name -@cindex tool name, as installed -@cindex name transformations -Generates a string for the name of a tool as it was configured and -installed, given its native name (as the argument @var{toolname}). -This makes the assumption that all tools are installed using the same -naming conventions: it extrapolates from the invocation name for -@file{runtest}. For example, if you call @code{runtest} as -@file{m68k-vxworks-runtest}, the result of @w{@samp{ transform "gcc" }} -is @samp{m68k-vxworks-gcc}. - -@item ishost "@var{host}" -@cindex host configuration test -Tests for a particular @emph{host} environment. If the currently -configured host matches the argument string, the result is @code{1}; -otherwise the result is @code{0}. @var{host} must be a full three-part -@code{configure} host name; in particular, you may not use the shorter -nicknames supported by @code{configure} (but you can use wildcard -characters, using shell syntax, to specify sets of names). - -@item istarget "@var{target}" -@cindex target configuration test -Tests for a particular @emph{target} environment. If the currently -configured target matches the argument string, the result is @code{1}; -otherwise the result is @code{0}. @var{target} must be a full -three-part @code{configure} target name; in particular, you may not use -the shorter nicknames supported by @code{configure} (but you can use -wildcard characters, using shell syntax, to specify sets of names). If it is -passed a @code{NULL} string, then it returns the name of the build -canonical configuration. - -@item isbuild "@var{host}" -@cindex build host configuration test -Tests for a particular @emph{build host} environment. If the currently -configured host matches the argument string, the result is @code{1}; -otherwise the result is @code{0}. @var{host} must be a full three-part -@code{configure} host name; in particular, you may not use the shorter -nicknames supported by @code{configure} (but you can use wildcard -characters, using shell syntax, to specify sets of names). If it is -passed a @code{NULL} string, then it returns the name of the build -canonical configuration. - -item is3way "@var{host}" -@cindex canadian cross configuration test -Tests for a canadian cross. This is when the tests will be run on a -remotly hosted cross compiler. If it is a canadian cross, then the -result is @code{1}; otherwise the result is @code{0}. - -@item isnative -@cindex native configuration test -Tests whether the current configuration has the same host and target. -When it runs in a @emph{native} configuration this procedure returns a -@code{1}; otherwise it returns a @code{0}. - -@item load_lib "@var{library-file}" -@cindex load library file -Loads the file @var{library-file} by searching a fixed path built into -@code{runtest}. If DejaGnu has been installed, it looks in a path -starting with the installed library directory. If you are running -DejaGnu directly from a source directory, without first running -@samp{make install}, this path defaults to the current directory. In -either case, it then looks in the current directory for a directory -called @code{lib}. If there are duplicate definitions, the last one -loaded takes precedence over the earlier ones. - -@item setup_xfail "@var{config} @r{[}@var{bugid}@r{]}" -@c two spaces above to make it absolutely clear there's whitespace---a -@c crude sort of italic correction! -@cindex test case, expecting failure -@cindex failure, expected -@cindex expected failure -Declares that the test is expected to fail on a particular set of -configurations. The @var{config} argument must be a list of full -three-part @code{configure} target name; in particular, you may not use -the shorter nicknames supported by @code{configure} (but you can use the -common shell wildcard characters to specify sets of names). The -@var{bugid} argument is optional, and used only in the logging file -output; use it as a link to a bug-tracking system such as @sc{gnats} -(@pxref{Overview,, Overview, gnats.info, Tracking Bugs With GNATS}). - -@cindex @code{XFAIL}, producing -@cindex @code{XPASS}, producing -Once you use @code{setup_xfail}, the @code{fail} and @code{pass} -procedures produce the messages @samp{XFAIL} and @samp{XPASS} -respectively, allowing you to distinguish expected failures (and -unexpected success!) from other test outcomes. - -@emph{Warning:} you must clear the expected failure after using -@code{setup_xfail} in a test case. Any call to @code{pass} or -@code{fail} clears the expected failure implicitly; if the test has some -other outcome, e.g. an error, you can call @code{clear_xfail} to clear -the expected failure explicitly. Otherwise, the expected-failure -declaration applies to whatever test runs next, leading to surprising -results. - -@item clear_xfail @var{config} -@cindex cancelling expected failure -@cindex expected failure, cancelling -Cancel an expected failure (previously declared with @code{setup_xfail}) -for a particular set of configurations. The @var{config} argument is a -list of configuration target names. It is only necessary to call -@code{clear_xfail} if a test case ends without calling either -@code{pass} or @code{fail}, after calling @code{setup_xfail}. - -@item verbose @r{[}-log@r{]} @r{[}-n@r{]} @r{[}--@r{]} "@var{string}" @var{number} -@cindex @code{verbose} builtin function -Test cases can use this function to issue helpful messages depending on -the number of @samp{--verbose} options on the @code{runtest} command -line. It prints @var{string} if the value of the variable -@code{verbose} is higher than or equal to the optional @var{number}. The -default value for @var{number} is 1. Use the optional @samp{-log} argument -to cause @var{string} to always be added to the log file, even if it won't -be printed. Use the optional @samp{-n} argument to print @var{string} -without a trailing newline. Use the optional @samp{--} argument if -@var{string} begins with "-". - -@end ftable - -@noindent -@node remote.exp, utils.exp, framework.exp, DejaGnu Builtins -@subsection Remote Communication Procedures - -@kindex remote.exp -@kindex lib/remote.exp -@cindex remote connection procedures -@cindex communications procedures -@file{lib/remote.exp} defines these functions, for establishing and -managing communications: - -@emph{Procedures to establish a connection:} Each of these procedures -tries to establish the connection up to three times before returning. -Warnings (if retries will continue) or errors (if the attempt is -abandoned) report on communication failures. The result for any of -these procedures is either @code{-1}, when the connection cannot be -established, or the spawn ID returned by the @code{expect} command -@code{spawn}. - -It use the value of the @code{connect} field in the @code{target_info} -array (was @code{connectmode} as the type of connection to make. Current -supported connection types are tip, kermit, telnet, rsh, rlogin, and -netdata. If the @code{--reboot} option was used on the runtest command -line, then the target is rebooted before the connection is made. - -@ftable @code - -@item remote_open @var{type} -@cindex Opening a remote connection -@emph{Remote Connection Procedure.} This is passed @emph{host} or -@emph{target}. Host or target refers to whether it is a connection to a -remote target, or a remote host. This opens the connection to the -desired target or host using the default values in the configuration -system. It returns that @code{spawn_id} of the process that manages the -connection. This value can be used in @code{expect} or @code{exp_send} -statements, or passed to other procedures that need the connection -process's id. This also sets the @code{fileid} field in the -@code{target_info} array. - - -@item remote_close @var{shellid} -@cindex Closing a remote connection -@emph{shellid} is value returned by a call to @code{remote_open}. This -closes the connection to the target so resources can be used by -others. This parameter can be left off if the @code{fileid} field in the -@code{target_info} array is set. - -@item telnet @var{hostname} @var{port} -@itemx rlogin @var{hostname} -@itemx rsh @var{hostname} -@cindex IP network procedures -@cindex network (IP) procedures -@emph{IP network procedures.} @var{hostname} refers to the IP address or -name (for example, an entry in @file{/etc/hosts}) for this target. The -procedure names reflect the Unix utility used to establish a -connection. The optional @var{port} is used to specify the IP port -number. The value of the @code{netport} field in the @code{target_info} -array is used. (was @code{$netport}) This value has two parts, the -hostname and the port number, seperated by a @emph{:}. If @code{host} or -@code{target} is used in the @code{hostname} field, than the config -array is used for all information. - -@item tip @var{port} -@cindex serial line connection, @code{tip} -@emph{Serial line procedure.} Connect using the Unix utility @code{tip}. -@var{port} must be a name from the @code{tip} configuration file -@file{/etc/remote}. Often, this is called @samp{hardwire}, or something -like @samp{ttya}. This file holds all the configuration data for -the serial port. The value of the @code{serial} field in the -@code{target_info} array is used. (was @code{$serialport}) If -@code{host} or @code{target} is used in the @code{port} field, than -the config array is used for all information. - -@item kermit @var{port} @var{bps} -@cindex serial line connection, @code{kermit} -@emph{Serial line procedure.} Connect using the program @code{kermit}. -@var{port} is the device name, e.g. @file{/dev/ttyb}. @var{bps} is -the line speed to use (in bits per second) for the connection. The value -of the @code{serial} field in the @code{target_info} array is used. (was -@code{$serialport}) If @code{host} or @code{target} is used in the -@code{port} field, than the config array is used for all information. - -@end ftable - -@noindent -@emph{Procedures to manage a connection:} - -@ftable @code -@item tip_download @var{spawnid} @var{file} -@cindex download, @code{tip} -@cindex serial download, @code{tip} -Download @file{@var{file}} to the process @var{spawnid} (the value -returned when the connection was established), using the @code{~put} -command under @code{tip}. Most often used for single board computers -that require downloading programs in @sc{ascii} S-records. Returns -@code{1} if an error occurs, @code{0} otherwise. - -@item exit_remote_shell @var{spawnid} -@cindex terminating remote connection -@cindex remote connection, ending -Exits a remote process started by any of the connection procedures. -@var{spawnid} is the result of the connection procedure that started the -remote process. - -@item download @var{file} @r{[} @var{spawnid} @r{]} -@cindex download a file -After you establish a connection to a target, you can download programs -using this command. @code{download} reads in @var{file} (object code in -S-record format) and writes it to the device controlling this -@var{spawnid}. (From the point of view of the target, the S-record file -comes in via standard input.) - -If you have more than one target active, you can use the optional argument -@var{spawnid} to specify an alternative target (the default is the most -recently established @var{spawnid}.) -@end ftable - -@noindent -@node utils.exp, target.exp, remote.exp, DejaGnu Builtins -@subsection Utility Procedures - -@kindex utils.exp -@kindex lib/utils.exp -@file{lib/utils.exp} defines these utility procedures: - -@ftable @code -@item getdirs @var{dir} -@itemx getdirs @var{dir} @var{pattern} -@cindex directories matching a pattern -@cindex pattern match, directory -Returns a list of all the directories in the single directory @var{dir} -that match @var{pattern}. If you do not specify @var{pattern}, -@code{getdirs} assumes @samp{*}. You may use the common shell wildcard -characters in @var{pattern}. If no directories match the pattern, then a -@code{NULL} string is returned. - -@item find @var{dir} @var{pattern} -@cindex files matching a pattern -@cindex pattern match, filenames -Search for files whose names match @var{pattern} (using shell wildcard -characters for filename expansion). Search subdirectories recursively, -starting at @var{dir}. The result is the list of files whose names -match; if no files match, the result is empty. Filenames in the result -include all intervening subdirectory names. If no files match the -pattern, then a @code{NULL} string is returned. - -@item which @var{binary} -@cindex path lookup -Searches the execution path for an executable file @var{binary}, like -the the BSD @code{which} utility. This procedure uses the shell -environment variable @samp{PATH}. It returns @code{0} if the binary is -not in the path, or if there is no @samp{PATH} environment variable. If -@var{binary} is in the path, it returns the full path to @var{binary}. - -@item grep @var{filename} @var{regexp} -@item grep @var{filename} @var{regexp} line -@cindex regular expression, file contents -@cindex searching file contents -Search the file called @var{filename} (a fully specified path) for lines -that contain a match for regular expression @var{regexp}. The result is -a list of all the lines that match. If no lines match, the result is an -empty string. Specify @var{regexp} using the standard regular -expression style used by the Unix utility program @code{grep}. - -Use the optional third argument @samp{line} to start lines in the result -with the line number in @var{filename}. (This argument is simply an -option flag; type it just as shown---@samp{line}.) - -@item diff @var{filename} @var{filename} -@cindex finding file differences -@cindex comparing files -Compares the two files and returns a 1 if they match, or a 0 if they -don't. If @code{verbose} is set, then it'll print the differences to the -screen. - -@item slay @var{name} -@cindex slaying processes -This look in the process tabel for @var{name} and send it a unix -@code{SIGINT}, killing the process. - -@item absolute @var{path} -@cindex converting relative paths to absolute -This procedure takes the relative @var{path}, and converts it to an -absolute path. - -@item psource @var{filename} -@cindex sourcing Tcl files -This sources the file @var{filename}, and traps all errors. It also -ignores all extraneous output. If there was an error it returns a 1, -otherwise it returns a 0. - -@item prune @var{list} @var{pattern} -@cindex list, pruning -Remove elements of the Tcl list @var{list}. Elements are fields -delimited by spaces. The result is a copy of @var{list}, without any -elements that match @var{pattern}. You can use the common shell -wildcard characters to specify @var{pattern}. - -@item setenv @var{var} @var{val} -@cindex setting environment variables -Sets the variable @var{var} to the value @var{val}. - -@item unsetenv @var{var} -@cindex unsetting environment variables -Unsets the environment variable @var{var} - -@item getenv @var{var} -@cindex getting environment variables -returns the value of @var{var} in the environment if it exists, -otherwise it returns @code{NULL}. - -@item runtest_file_p @var{runtests} @var{testcase} -@cindex selecting a range of tests -@cindex tests, running specifically -Search @var{runtests} for @var{testcase} and return 1 if found, 0 if not. -@var{runtests} is a list of two elements. The first is the pathname of -the testsuite expect script running. The second is a copy of what was -on the right side of the @code{=} if @samp{foo.exp="@dots{}"} was specified, -or an empty string if no such argument is present. -This is used by tools like compilers where each testcase is a file. - -@item prune_system_crud @var{system} @var{text} -@cindex pruning system output, examining program output -For system @var{system}, delete text the host or target operating system might -issue that will interfere with pattern matching of program output in -@var{text}. An example is the message that is printed if a shared library -is out of date. - -@end ftable - -@noindent -@node target.exp, debugger.exp, utils.exp, DejaGnu Builtins -@subsection Cross target procedure - -@kindex target.exp -@kindex lib/target.exp -@file{lib/target.exp} defines these utility procedures: - -@ftable @code - -@item push_target @emph{name} -@cindex set current target -This makes the target named @emph{name} be the current target -connection. The value of @emph{name} is an index into the -@code{target_info} array and is set in the global config file. - -@item pop_target -@cindex unset current target -This unsets the current target connection. - -@item list_targets -@cindex lists supported targets -This lists all the supported targets for this architecture. - -@item push_host @emph{name} -@cindex set current host -This makes the host named @emph{name} be the current remote host -connection. The value of @emph{name} is an index into the -@code{target_info} array and is set in the global config file. - -@item pop_host -@cindex unset current host -This unsets the current host connection. - -@c @item compile @emph{file} -@cindex compile a file -This invokes the compiler as set by @code{CC} to compile the file -@emph{file}. The default options for many cross compilation targets are -@emph{guessed} by DejaGnu, and these options can be added to by passing -in more parameters as arguments to @code{compile}. Optionally, this will -also use the value of the @code{cflags} field in the target config -array. If the host is not the same as the build machines, then then -compiler is run on the remote host using @code{execute_anywhere}. - -@c @item archive @emph{file} -@cindex archive object files -This produces an archive file. Any parameters passed to @code{archive} -are used in addition to the default flags. Optionally, this will -also use the value of the @code{arflags} field in the target config -array. If the host is not the same as the build machines, then then -archiver is run on the remote host using @code{execute_anywhere}. - -@c @item ranlib @emph{file} -@cindex ranlib a file -This generates an index for the archive file for systems that aren't -POSIX yet. Any parameters passed to @code{ranlib} are used in for the -flags. - -@item execute_anywhere @emph{cmdline} -@cindex executing commands remotely -This executes the @emph{cmdline} on the proper host. This should be used -as a replacement for the Tcl command @code{exec} as this version -utilizes the target config info to execute this command on the build -machine or a remote host. All config information for the remote host -must be setup to have this command work. If this is a canadian cross, -(where we test a cross compiler that runs on a different host then where -DejaGnu is running) then a connection is made to the remote host and -the command is executed there. It returns either @emph{REMOTERROR} (for -an error) or the output produced when the command was executed. This is -used for running the tool to be tested, not a test case. - -@end ftable - -@node debugger.exp, , target.exp, DejaGnu Builtins -@subsection Debugging Procedures - -@kindex debugger.exp -@kindex lib/debugger.exp -@file{lib/debugger.exp} defines these utility procedures: - -@ftable @code - -@item dumpvars @emph{expr} -@cindex Print global variable values -This takes a csh style regular expression (glob rules) and prints the -values of the global variable names that match. It is abbreviated as -@code{dv} - -@item dumplocals @emph{expr} -@cindex Print local variable value -This takes a csh style regular expression (glob rules) and prints the -values of the local variable names that match. It is abbreviated as -@code{dl}. - -@item dumprocs @emph{expr} -@cindex Print procedure bodies -This takes a csh style regular expression (glob rules) and prints the -body of all procs that match. It is abbreviated as @code{dp} - -@item dumpwatch @emph{expr} -@cindex Print watchpoints -This takes a csh style regular expression (glob rules) and prints all -the watchpoints. It is abbreviated as @code{dw}. - -@c FIXME: finish these when the code is fixed. -@c @item watcharray @emph{element} @emph{type} -@c @cindex Set a watchpoint on an array -@c This sets an watchpoint of the @emph{element-type} on the -@c @item watchvar v null type -@c @cindex Set a watchpoint on a variable - -@item watchunset @emph{var} -@cindex Watch when a variable is unset -This breaks program execution when the variable @emph{var} is unset. It -is abbreviated as @code{wu}. - -@item watchwrite @emph{var} -@cindex Watch when a variable is written -This breaks program execution when the variable @emph{var} is -written. It is abbreviated as @code{ww}. - -@item watchread @emph{var} -@cindex Watch when a variable is read -This breaks program execution when the variable @emph{var} is read. It -is abbreviated as @code{wr}. - -@item watchdel @emph{watch} -@cindex Delete a watchpoint. -This deletes a the watchpoint for @emph{watch}. It is abbreviated as -@code{wd}. - -@item print @emph{var} -@cindex Printing variable values -This prints the value of the variable @emph{var}. It is abbreviated as -@code{p}. - -@item quit -@cindex Quiting DejaGnu -This makes runtest exit. It is abbreviated as @code{q}. - -@item bt -@cindex Print a backtrace -This prints a backtrace of the executed Tcl commands. - -@end ftable - -@node Target Dependent -@section Target dependent procedures -@cindex target dependent procedures - -@c FIXME? These may be renamed to just "start", "load", "exit", and -@c "version" eventually. - -Each combination of target and tool requires some target-dependent -procedures. The names of these procedures have a common form: the tool -name, followed by an underbar @samp{_}, and finally a suffix describing -the procedure's purpose. For example, a procedure to extract the -version from @sc{gdb} is called @samp{gdb_version}. @xref{Init Module,, -Initialization Module}, for a discussion of how DejaGnu arranges to find -the right procedures for each target. - -@code{runtest} itself calls only two of these procedures, -@code{@var{tool}_exit} and @code{@var{tool}_version}; these procedures use -no arguments. - -The other two procedures, @code{@var{tool}_start} and -@code{@var{tool}_load}, are only called by the test suites themselves -(or by testsuite-specific initialization code); they may take arguments -or not, depending on the conventions used within each test suite. - -@ftable @code -@item @var{tool}_start -@cindex start procedure, tested tools -Starts a particular tool. For an interactive tool, -@code{@var{tool}_start} starts and initializes the tool, leaving the -tool up and running for the test cases; an example is @code{gdb_start}, -the start function for @sc{gdb}. For a batch oriented tool, -@code{@var{tool}_start} is optional; the recommended convention is to -let @code{@var{tool}_start} run the tool, leaving the output in a -variable called @code{comp_output}. Test scripts can then analyze -@samp{$comp_output} to determine the test results. An example of this -second kind of start function is @code{gcc_start}, the start function -for @sc{gcc}. - -@code{runtest} itself @emph{does not call} @code{@var{tool}_start}. The -initialization module @file{@var{tool}_init.exp} must call -@code{@var{tool}_start} for interactive tools; for batch-oriented tools, -each individual test script calls @code{@var{tool}_start} (or makes -other arrangements to run the tool). - -@item @var{tool}_load -@cindex load procedure, tested tools -Loads something into a tool. For an interactive tool, this conditions -the tool for a particular test case; for example, @code{gdb_load} loads -a new executable file into the debugger. For batch oriented tools, -@code{@var{tool}_load} may do nothing---though, for example, the -@sc{gcc} support uses @code{gcc_load} to load and run a binary on the -target environment. Conventionally, @code{@var{tool}_load} leaves the -output of any program it runs in a variable called @samp{exec_output}. -Writing @code{@var{tool}_load} can be the most complex part of extending -DejaGnu to a new tool or a new target, if it requires much communication -coding or file downloading. - -Test scripts call @code{@var{tool}_load}. - -@item @var{tool}_exit -@cindex exit procedure, tested tools -Cleans up (if necessary) before @code{runtest} exits. For interactive -tools, this usually ends the interactive session. You can also use -@code{@var{tool}_exit} to remove any temporary files left over from the -tests. - -@code{runtest} calls @code{@var{tool}_exit}. - -@item @var{tool}_version -@cindex version procedure, tested tools -Prints the version label and number for @var{tool}. This is called by -the DejaGnu procedure that prints the final summary report. The output -should consist of the full path name used for the tested tool, and its -version number. - -@code{runtest} calls @code{@var{tool}_version}. -@end ftable - -The usual convention for return codes from any of these procedures -(although it is not required by @code{runtest}) is to return @code{0} if -the procedure succeeded, @code{1} if it failed, and @code{-1} if there -was a communication error. - -@node Cross Targets -@section Remote targets supported - -@cindex targets -@cindex remote testing -The DejaGnu distribution includes support for the following remote -targets. You can set the target name and the connect mode in the -@file{site.exp} file (using the Tcl variables @samp{targetname} and -@samp{connectmode}, respectively), or on the @code{runtest} command line -(using @samp{--name} and @samp{--connect}). - -@table @strong -@item @sc{amd} 29000, with UDI protocol -Configure DejaGnu for target @samp{a29k-amd-udi}. (Cygnus -@code{configure} also recognizes the abbreviation @samp{udi29k}.) Then, -to run tests, use the @code{runtest} target name to specify whether you -want to use a simulator, or a particular hardware board. The particular -string to use with @samp{--name} will depend on your UDI setup file, -@file{udi_soc} (if @file{udi_soc} is not in your working directory, the -environment variable @samp{UDICONF} should contain a path to this file). -For example, if your UDI setup file includes these lines: -@end table -@c table "ends" *only* to allow wider example below - -@cartouche -@smallexample -iss AF_UNIX * isstip -r /home/gnu/29k/src/osboot/sim/osboot -mon AF_UNIX * montip -t serial -baud 9600 -com /dev/ttyb -@end smallexample -@end cartouche - -@table @strong -@item @w{ } -@c fake out table/item into continuing w/same margin as before -You can use @samp{--name iss} to run tests on the simulator, and -@samp{--name mon} to run tests on the 29K hardware. See the -manufacturer's manuals for more information on UDI and @file{udi_soc}. -@c FIXME! Is there a better ref than "the manufacturer's manuals"? - -@kindex mondfe -The default connect protocol is @samp{mondfe} with either back end. -@code{mondfe} is the only shell DejaGnu supports for UDI targets. -@code{mondfe} is an @sc{amd} specific monitor program freely available -from @sc{amd}. - -@emph{Warning:} This target requires @sc{gdb} version 4.7.2 (or -greater). Earlier versions of @sc{gdb} do not fully support the -@code{load} command on this target, so DejaGnu has no way to load -executable files from the debugger. - -@item Motorola 680x0 boards, a.out or @sc{coff} object format -Configure DejaGnu for any remote target matching @samp{m68k-*}. - -@emph{Warning:} Most @samp{m68k-*} configurations run all tests only for -native testing (when the target is the same as the host). When you -specify most of these targets for a cross configuration, you will only be -able to use tests that run completely within the host (for example, -tests of the binary utilities such as the archiver; or compiler tests -that only generate code rather than running it). - -To run a.out or @sc{coff} binaries on a remote M68K, you must configure -DejaGnu for a particular target board. @samp{m68k-abug} is an example. -(In general for an embedded environment, because it does not have absolute -addresses, a.out is not a good choice for output format in any case; most -often S-records or Hex-32 are used instead.) - -@item Motorola 68K MVME 135 board running ABug boot monitor -Configure for @samp{m68k-abug-aout} or @samp{m68k-abug-coff} (as a -target). This boot monitor can only download S-records; therefore, the -DejaGnu tests for this environment require a linker command script to -convert either output format to S-records, setting the default addresses -for @code{.text}, @code{.bss}, and @code{.data}. - -With this configuration, the default for @samp{--connect} is @samp{tip}. -@samp{tip} is the only communications protocol supported for connecting -to @samp{m68k-abug-*} targets. @samp{tip} uses an @sc{ascii} downloader -(the @code{~put} command) to load S-records into the target board. The -@samp{--name} string must be a machine name that @code{tip} -understands (for example, on some @code{tip} implementations it must be -an entry from the initialization file for @code{tip}; this file is -sometimes called @file{/etc/remote}). - -See your system documentation for information on how to create new -entries in @file{/etc/remote}. (Some @sc{unix} systems are distributed -with at least one default entry with a name resembling @samp{hardwire}; -if your system has one, you can edit it, or make a modified copy with a -new name.) When you have a working @file{/etc/remote} entry -@var{abugtarget}, you should be able to type @samp{tip -@var{abugtarget}}, and get the prompt @samp{135ABUG>} from the board. -Use the same @var{abugtarget} string with @samp{runtest --name}. - -@item Motorola IDP board running the rom68k boot monitor -@c FIXME 1: this doesn't really say anything! OK, so functionality is -@c the same. Is object code the same (srecords)? Do we configure with -@c the same triplets? What is the default for --connect? Is -@c any comms method other than tip supported? What prompt to expect -@c when tip connected? -@c FIXME 2: should @code{BUG} below be @code{ABUG}? -This is the same in functionality as the MVME board running the -@code{BUG} boot monitor. Only the monitor commands and the addresses are -different. - -@item VxWorks (Motorola 68K or Intel 960) -Configure DejaGnu for either @samp{m68k-wrs-vxworks} (abbreviated -@samp{vxworks68}) or @samp{i960-wrs-vxworks} (abbreviated -@samp{vxworks960}). Since both targets support IP addressing, specify -the network address (for example, a host name from @file{/etc/hosts}) -with @samp{--name}. - -The default connect protocol is @samp{rlogin}, but you can use any of -@samp{--connect rlogin}, @samp{--connect telnet}, or @samp{--connect -rsh}. - -Test scripts need no special code to load programs into these targets; -since VxWorks supports NFS, all you must do is ensure test programs are -on an exported filesystem. - -@cindex VxWorks, link with @samp{-r} -When you compile for VxWorks, use the linker @samp{-r} option to make -the linker output relocatable---at least if you want to use library -routines. Many standard C routines are included in VxWorks; often no -additional libraries are needed. See your VxWorks system documentation -for additional details. -@end table - -@node Input Files -@section The files DejaGnu reads -@cindex input files - -The @code{runtest} program used to invoke DejaGnu is a short shell -script generated by @code{make} during the configuration process. Its -main task is to read the main test framework driver, @file{runtest.exp}. - -@file{runtest.exp}, in turn, reads @code{expect} code from certain other -files, in this order: - -@enumerate -@item -Each of the @file{site.exp} local definition files available. -@xref{Customizing,,Setting @code{runtest} defaults}, for details. - -@item -@file{lib/utils.exp}, a collection of utility procedures. @xref{DejaGnu -Builtins,,DejaGnu Builtins}, for descriptions of these procedures. - -@item -@file{lib/framework.exp}, a file of subroutines meant for @code{runtest} -itself rather than for general-purpose use in both @code{runtest} and -test suites. - -@item -@file{debugger.exp}, Don Libes' Tcl Debugger. (See @cite{A Debugger for -Tcl Applications} by Don Libes. This paper is distributed with -@code{expect} in PostScript form as the file -@file{expect/tcl-debug.ps}.) - -@item -@file{lib/remote.exp}, a collection of subroutines meant for connecting -to remote machines. - -@item -@file{lib/target.exp}, a collection of subroutines used for the -configuration systems in DejaGnu. These procedures typically manipulate -or utilize the configuration system. - -@item -@c FIXME! A comment in runtest.exp claims a system default is used if -@c no tool-specific init file is not available; I couldn't see where -@c the program flow actually does this, though---pesch 30jul1993. -An initialization file @code{@var{tool}_init.exp}. @xref{Init -Module,,Initialization module}, for more discussion of init files. -@end enumerate - -@c This hard page break is mainly intended for smallbook formatting; -@c some examples in this section come out better if this starts at a -@c page boundary. -@page -@node Output Files -@section The files DejaGnu writes -@cindex output files - -@code{runtest} always writes two kinds of output files: summary logs and -detailed logs. The contents of both of these are determined by your -tests. - -For troubleshooting, a third kind of output file is useful: use -@samp{--debug} to request an output file showing details of what -@code{expect} is doing internally. - -@menu -* Summary:: Files that summarize tests -* Detail:: Files that contain complete test results -* Debug:: Logging expect internal actions -@end menu - -@node Summary -@subsection Summary log -@cindex summary log - -@code{runtest} always produces a summary output file -@file{@var{tool}.sum}. This summary shows the names of all test files -run; for each test file, one line of output from each @code{pass} -command (showing status @samp{PASS} or @samp{XPASS}) or @code{fail} -command (status @samp{FAIL} or @samp{XFAIL}); trailing summary -statistics that count passing and failing tests (expected and -unexpected); and the full pathname and version number of the tool -tested. (All possible outcomes, and all errors, are always reflected in -the summary output file, regardless of whether or not you specify -@samp{--all}.) - -If any of your tests use the procedures @code{unresolved}, -@code{unsupported}, or @code{untested}, the summary output also -tabulates the corresponding outcomes. - -For example, after @samp{runtest --tool binutils}, look for a summary -log in @file{binutils.sum}. Normally, @code{runtest} writes this file -in your current working directory; use the @samp{--outdir} option to -select a different directory. - -@need 3500 -@noindent -Here is a short sample summary log: - -@cartouche -@smallexample -Test Run By rob on Mon May 25 21:40:57 PDT 1992 - === gdb tests === -Running ./gdb.t00/echo.exp ... -PASS: Echo test -Running ./gdb.all/help.exp ... -PASS: help add-symbol-file -PASS: help aliases -PASS: help breakpoint "bre" abbreviation -FAIL: help run "r" abbreviation -Running ./gdb.t10/crossload.exp ... -PASS: m68k-elf (elf-big) explicit format; loaded -XFAIL: mips-ecoff (ecoff-bigmips) "ptype v_signed_char" signed -C types - === gdb Summary === -# of expected passes 5 -# of expected failures 1 -# of unexpected failures 1 -/usr/latest/bin/gdb version 4.6.5 -q -@end smallexample -@end cartouche - -@node Detail -@subsection Detailed log -@cindex detailed log - -@code{runtest} also saves a detailed log file @file{@var{tool}.log}, -showing any output generated by tests as well as the summary output. -For example, after @samp{runtest --tool binutils}, look for a detailed -log in @file{binutils.log}. Normally, @code{runtest} writes this file -in your current working directory; use the @samp{--outdir} option to -select a different directory. - -@need 4000 -@noindent -Here is a brief example showing a detailed log for @sc{g++} tests: - -@cartouche -@smallexample -Test Run By rob on Mon May 25 21:40:43 PDT 1992 - - === g++ tests === - ---- Running ./g++.other/t01-1.exp --- - PASS: operate delete - ---- Running ./g++.other/t01-2.exp --- - FAIL: i960 bug EOF -p0000646.C: In function `int warn_return_1 ()': -p0000646.C:109: warning: control reaches end of non-void function -p0000646.C: In function `int warn_return_arg (int)': -p0000646.C:117: warning: control reaches end of non-void function -p0000646.C: In function `int warn_return_sum (int, int)': -p0000646.C:125: warning: control reaches end of non-void function -p0000646.C: In function `struct foo warn_return_foo ()': -p0000646.C:132: warning: control reaches end of non-void function - ---- Running ./g++.other/t01-4.exp --- - FAIL: abort -900403_04.C:8: zero width for bit-field `foo' ---- Running ./g++.other/t01-3.exp --- - FAIL: segment violation -900519_12.C:9: parse error before `;' -900519_12.C:12: Segmentation violation -/usr/latest/bin/gcc: Internal compiler error: program cc1plus got -fatal signal - - === g++ Summary === - -# of expected passes 1 -# of expected failures 3 -/usr/ps/bin/g++ version cygnus-2.0.1 -@end smallexample -@end cartouche - -@node Debug -@subsection Logging @code{expect} internal actions -@cindex debug log - -With the @samp{--debug} option, you can request a log file showing the -output from @code{expect} itself, running in debugging mode. This file -(@file{dbg.log}, in the directory where you start @code{runtest}) shows -each pattern @code{expect} considers in analyzing test output. - -This file reflects each @code{send} command, showing the string sent as -input to the tool under test; and each @code{expect} command, showing -each pattern it compares with the tool output. - -The log messages for @code{expect} begin with a message of the form - -@smallexample -expect: does @{@var{tool output}@} (spawn_id @var{n}) match pattern -@{@var{expected pattern}@}? -@end smallexample - -@noindent -For every unsuccessful match, @code{expect} issues a @samp{no} after -this message; if other patterns are specified for the same -@code{expect} command, they are reflected also, but without the first -part of the message (@samp{expect@dots{}match pattern}). - -When @code{expect} finds a match, the log for the successful match ends -with @samp{yes}, followed by a record of the @code{expect} variables set -to describe a successful match. Here is an excerpt from the debugging -log for a @sc{gdb} test: - -@c FIXME! Why is the second spawn_id shown 0 rather than 6? -@cartouche -@smallexample -send: sent @{break gdbme.c:34\n@} to spawn id 6 -expect: does @{@} (spawn_id 6) match pattern @{Breakpoint.*at.* file - gdbme.c, line 34.*\(gdb\) $@}? no -@{.*\(gdb\) $@}? no -expect: does @{@} (spawn_id 0) match pattern @{@}? no -@{\(y or n\) @}? no -@{buffer_full@}? no -@{virtual@}? no -@{memory@}? no -@{exhausted@}? no -@{Undefined@}? no -@{command@}? no -break gdbme.c:34 -Breakpoint 8 at 0x23d8: file gdbme.c, line 34. -(gdb) expect: does @{break gdbme.c:34\r\nBreakpoint 8 at 0x23d8: -file gdbme.c, line 34.\r\n(gdb) @} (spawn_id 6) match pattern -@{Breakpoint.*at.* file gdbme.c, line 34.*\(gdb\) $@}? yes -expect: set expect_out(0,start) @{18@} -expect: set expect_out(0,end) @{71@} -expect: set expect_out(0,string) @{Breakpoint 8 at 0x23d8: file -gdbme.c, line 34.\r\n(gdb) @} -expect: set expect_out(spawn_id) @{6@} -expect: set expect_out(buffer) @{break gdbme.c:34\r\nBreakpoint 8 -at 0x23d8: file gdbme.c, line 34.\r\n(gdb) @} - PASS: 70 0 breakpoint line number in file -@end smallexample -@end cartouche - -@noindent -This example exhibits three properties of @code{expect} and DejaGnu that -might be surprising at first glance: - -@itemize @bullet -@item -Empty output for the first attempted match. The first set of attempted -matches shown ran against the output @samp{@{@}}---that is, no output. -@code{expect} begins attempting to match the patterns supplied -immediately; often, the first pass is against incomplete output (or -completely before all output, as in this case). - -@item -Interspersed tool output. The beginning of the log entry for the second -attempted match may be hard to spot: this is because the prompt -@samp{(gdb) } appears on the same line, just before the @samp{expect:} -that marks the beginning of the log entry. - -@item -Fail-safe patterns. Many of the patterns tested are fail-safe patterns -provided by @sc{gdb} testing utilities, to reduce possible -indeterminacy. It is useful to anticipate potential variations -caused by extreme system conditions (@sc{gdb} might issue the message -@samp{virtual memory exhausted} in rare circumstances), or by changes in -the tested program (@samp{Undefined command} is the likeliest outcome if -the name of a tested command changes). - -The pattern @samp{@{@}} is a particularly interesting fail-safe -to notice; it checks for an unexpected @key{RET} prompt. This may -happen, for example, if the tested tool can filter output through a -pager. - -These fail-safe patterns (like the debugging log itself) are primarily -useful while developing test scripts. Use the @code{error} procedure to -make the actions for fail-safe patterns produce messages starting with -@samp{ERROR} on the @code{runtest} standard output, and in the detailed -log file. -@end itemize - -@node Tests -@chapter How To Write a Test Case -@cindex writing a test case -@cindex test case, writing - -@menu -* Writing:: Writing a test case -* Debugging:: Debugging a test case -* Adding:: Adding a test case to a test suite -* Hints:: Hints on writing a test case -* Variables:: Special variables used by test cases -@end menu - -@node Writing -@section Writing a test case - -The easiest way to prepare a new test case is to base it on an existing -one for a similar situation. There are two major categories of tests: -batch or interactive. Batch oriented tests are usually easier to write. - -The @sc{gcc} tests are a good example of batch oriented tests. All -@sc{gcc} tests consist primarily of a call to a single common procedure, -since all the tests either have no output, or only have a few warning -messages when successfully compiled. Any non-warning output is a test -failure. All the C code needed is kept in the test directory. The test -driver, written in @code{expect}, need only get a listing of all the C -files in the directory, and compile them all using a generic procedure. -This procedure and a few others supporting for these tests are kept in -the library module @file{lib/c-torture.exp} in the @sc{gcc} test suite. -Most tests of this kind use very few @code{expect} features, and are -coded almost purely in Tcl. - -@noindent -Writing the complete suite of C tests, then, consisted of these steps: - -@enumerate -@item -@cindex Granlund, Torbjorn -@cindex C torture test -Copying all the C code into the test directory. These tests were based on -the C-torture test created by Torbjorn Granlund (on behalf of the Free -Software Foundation) for @sc{gcc} development. - -@item -Writing (and debugging) the generic @code{expect} procedures for -compilation. - -@item -Writing the simple test driver: its main task is to search the directory -(using the Tcl procedure @code{glob} for filename expansion with -wildcards) and call a Tcl procedure with each filename. It also checks -for a few errors from the testing procedure. -@end enumerate - -Testing interactive programs is intrinsically more complex. Tests for most -interactive programs require some trial and error before they are complete. - -However, some interactive programs can be tested in a simple fashion -reminiscent of batch tests. For example, prior to the creation of -DejaGnu, the @sc{gdb} distribution already included a wide-ranging -testing procedure. This procedure was very robust, and had already -undergone much more debugging and error checking than many recent -DejaGnu test cases. Accordingly, the best approach was simply to -encapsulate the existing @sc{gdb} tests, for reporting purposes. -Thereafter, new @sc{gdb} tests built up a family of @code{expect} -procedures specialized for @sc{gdb} testing. - -@file{gdb.t10/crossload.exp} is a good example of an interactive test. -@c FIXME! Check what *kind* of example it is---work-intensive, or generic... - -@node Debugging -@section Debugging a test case -@cindex debugging a test case -@cindex test case, debugging - -@noindent -These are the kinds of debugging information available from DejaGnu: - -@enumerate -@item -Output controlled by test scripts themselves, explicitly allowed for by -the test author. This kind of debugging output appears in the detailed -output recorded in the @file{@var{tool}.log} file. To do the same for -new tests, use the @code{verbose} procedure (which in turn uses the -variable also called @code{verbose}) to control how much output to -generate. This will make it easier for other people running the test to -debug it if necessary. Whenever possible, if @samp{$verbose} is -@code{0}, there should be no output other than the output from -@code{pass}, @code{fail}, @code{error}, and @code{warning}. Then, to -whatever extent is appropriate for the particular test, allow -successively higher values of @samp{$verbose} to generate more -information. Be kind to other programmers who use your tests: provide -for a lot of debugging information. - -@item -Output from the internal debugging functions of Tcl and @code{expect}. -There is a command line options for each; both forms of debugging output -are recorded in the file @code{dbg.log} in the current directory. - -Use @samp{--debug} for information from the @code{expect} level; it -generates displays of the @code{expect} attempts to match the tool -output with the patterns specified (@pxref{Debug,,Debug Log}). This -output can be very helpful while developing test scripts, since it shows -precisely the characters received. Iterating between the latest attempt -at a new test script and the corresponding @file{dbg.log} can allow you -to create the final patterns by ``cut and paste''. This is sometimes -the best way to write a test case. - -Use @samp{--strace} to see more detail at the Tcl level; this shows how Tcl -procedure definitions expand, as they execute. The associated number -controls the depth of definitions expanded; see the discussion of -@samp{--strace} in @ref{Invoking runtest,,Running the Tests}. - -@item -Finally, if the value of @samp{verbose} is 3 or greater, @code{runtest} -turns on the @code{expect} command @code{log_user}. This command prints -all @code{expect} actions to the @code{expect} standard output, to the -detailed log file, and (if @samp{--debug} is on) to @file{dbg.log}. -@end enumerate - -@node Adding -@section Adding a test case to a test suite -@cindex adding a test case - -There are two slightly different ways to add a test case. One is to add -the test case to an existing directory. The other is to create a new -directory to hold your test. The existing test directories represent -several styles of testing, all of which are slightly different; examine -the directories for the tool of interest to see which (if any) is most -suitable. - -Adding a @sc{gcc} test can be very simple: just add the C code to any -directory beginning with @samp{gcc.} and it runs on the next -@samp{runtest --tool gcc}. - -To add a test to @sc{gdb}, first add any source code you will need to -the test directory. Then you can either create a new @code{expect} file, -or add your test to an existing one (any file with a @samp{.exp} -suffix). Creating a new @samp{.exp} file is probably a better idea if -the test is significantly different from existing tests. Adding it as a -separate file also makes upgrading easier. If the C code has to be -already compiled before the test will run, then you'll have to add it to -the @file{Makefile.in} file for that test directory, then run -@code{configure} and @code{make}. - -Adding a test by creating a new directory is very similar: - -@enumerate -@item -Create the new directory. All subdirectory names begin with the name of -the tool to test; e.g. @sc{g++} tests might be in a directory called -@file{g++.other}. There can be multiple test directories that start with -the same tool name (such as @samp{g++}). - -@item -Add the new directory name to the @samp{configdirs} definition in the -@file{configure.in} file for the test suite directory. This way when -@code{make} and @code{configure} next run, they include the new directory. - -@item -Add the new test case to the directory, as above. - -@item -To add support in the new directory for configure and make, you must -also create a @code{Makefile.in} and a @code{configure.in}. @xref{What -Configure Does,,What Configure Does, configure.info, Cygnus Configure}. -@end enumerate - -@c FIXME! Expand this sentence to at least a section, maybe a chapter... -@c The @file{admin} directory contains templates for a few common forms -@c of test. - -@node Hints -@section Hints on writing a test case -@cindex hints on test case writing - -There may be useful existing procedures already written for your test in -the @file{lib} directory of the DejaGnu distribution. @xref{DejaGnu -Builtins,,DejaGnu Builtins}. - -It is safest to write patterns that match @emph{all} the output -generated by the tested program; this is called @dfn{closure}. If a -pattern does not match the entire output, any output that remains will -be examined by the @emph{next} @code{expect} command. In this -situation, the precise boundary that determines which @code{expect} -command sees what is very sensitive to timing between the @code{expect} -task and the task running the tested tool. As a result, the test may -sometimes appear to work, but is likely to have unpredictable results. -(This problem is particularly likely for interactive tools, but can also -affect batch tools---especially for tests that take a long time to finish.) -The best way to ensure closure is to use the @samp{-re} option for the -@code{expect} command to write the pattern as a full regular -expressions; then you can match the end of output using a @samp{$}. It -is also a good idea to write patterns that match all available output by -using @samp{.*\} after the text of interest; this will also match any -intervening blank lines. Sometimes an alternative is to match end of -line using @samp{\r} or @samp{\n}, but this is usually too dependent on -terminal settings. -@c FIXME!! explain what "end of output" means for interactive task. -@c (Timeout or EOF, right?) - -Always escape punctuation, such as @samp{(} or @samp{"}, in your -patterns; for example, write @samp{\(}. If you forget to escape -punctuation, you will usually see an error message like @samp{extra -characters after close-quote}. - -If you have trouble understanding why a pattern does not match the -program output, try using the @samp{--debug} option to @code{runtest}, -and examine the debug log carefully. @xref{Debug,,Debug Log}. - -Be careful not to neglect output generated by setup rather than by the -interesting parts of a test case. For example, while testing @sc{gdb}, -I issue a send @samp{set height 0\n} command. The purpose is simply to -make sure @sc{gdb} never calls a paging program. The @samp{set height} -command in @sc{gdb} does not generate any output; but running @emph{any} -command makes @sc{gdb} issue a new @samp{(gdb) } prompt. If there were -no @code{expect} command to match this prompt, the output @samp{(gdb) } -begins the text seen by the next @code{expect} command---which might -make @emph{that} pattern fail to match. - -To preserve basic sanity, I also recommended that no test ever pass if -there was any kind of problem in the test case. To take an extreme -case, tests that pass even when the tool will not spawn are misleading. -Ideally, a test in this sort of situation should not fail either. -Instead, print an error message by calling one of the DejaGnu procedures -@code{error} or @code{warning}. - -@node Variables -@section Special variables used by test cases -@cindex special variables - -@cindex variables for all tests -Your test cases can use these variables, with conventional meanings (as -well as the variables saved in @file{site.exp} -@pxref{Customizing,,Setting @code{runtest} defaults}): - -@quotation -@emph{These variables are available to all test cases.} -@end quotation - -@ftable @code -@item prms_id -@cindex PRMS bug number -@cindex GNATS bug number -@cindex bug number -The tracking system (e.g. @sc{gnats}) number identifying a corresponding -bugreport. (@samp{0} if you do not specify it in the test script.) - -@item bug_id -@cindex bug number, extra -An optional bug id; may reflect a bug identification from another -organization. (@samp{0} if you do not specify it.) - -@item subdir -@cindex current test subdirectory -The subdirectory for the current test case. -@end ftable - -@quotation -@emph{These variables should never be changed. They appear in most -tests.} -@end quotation - -@ftable @code -@item expect_out(buffer) -@cindex last command output -The output from the last command. This is an internal variable set by -@code{expect}. - -@item exec_output -This is the output from a @code{@var{tool}_load} command. This only -applies to tools like @sc{gcc} and @sc{gas} which produce an object -file that must in turn be executed to complete a test. - -@item comp_output -This is the output from a @code{@var{tool}_start} command. This is -conventionally used for batch oriented programs, like @sc{gcc} and -@sc{gas}, that may produce interesting output (warnings, errors) without -further interaction. -@end ftable - -@node Extending -@chapter New Tools, Targets, or Hosts - -The most common ways to extend the DejaGnu framework are: adding a suite -of tests for a new tool to be tested; adding support for testing on a -new target; and porting @code{runtest} to a new host. - -@menu -* Adding Tools:: How to add tests for a new tool -* Adding Targets:: How to add a new target -* Porting:: Porting DejaGnu to a new host -@end menu - -@node Adding Tools -@section Writing tests for a new tool - -In general, the best way to learn how to write (code or even prose) is -to read something similar. This principle applies to test cases and to -test suites. Unfortunately, well-established test suites have a way of -developing their own conventions: as test writers become more -experienced with DejaGnu and with Tcl, they accumulate more utilities, -and take advantage of more and more features of @code{expect} and Tcl in -general. - -Inspecting such established test suites may make the prospect of -creating an entirely new test suite appear overwhelming. Nevertheless, -it is quite straightforward to get a new test suite going. - -@cindex Lupton, Robert -There is one test suite that is guaranteed not to grow more elaborate -over time: both it and the tool it tests were created expressly to -illustrate what it takes to get started with DejaGnu. The -@file{example/} directory of the DejaGnu distribution contains both an -interactive tool called @code{calc}, and a test suite for it. Reading -this test suite, and experimenting with it, is a good way to supplement -the information in this section. (Thanks to Robert Lupton for creating -@code{calc} and its test suite---and also the first version of this -section of the manual!) - -To help orient you further in this task, here is an outline of the steps -to begin building a test suite for a program @var{example}. - -@enumerate -@item -Create or select a directory to contain your new collection of tests. -Change to that directory (shown here as @code{testsuite}): - -@example -eg$ cd testsuite/ -@end example - -@item -Create a @file{configure.in} file in this directory, to control -configuration-dependent choices for your tests. So far as DejaGnu is -concerned, the important thing is to set a value for the variable -@code{target_abbrev}; this value is the link to the init file you will -write soon. (For simplicity, we assume the environment is Unix, and use -@samp{unix} as the value.) - -What else is needed in @file{configure.in} depends on the requirements -of your tool, your intended test environments, and which -@code{configure} system you use. This example is a minimal -@code{configure.in} for use with Cygnus Configure. (For an alternative -based on the FSF @code{autoconf} system, see the @code{calc} example -distributed with DejaGnu.) Replace @var{example} with the name of your -program: - -@cartouche -@smallexample -# This file is a shell script fragment -# for use with Cygnus configure. - -srctrigger="@var{example}.0" -srcname="The DejaGnu @var{example} tests" - -# per-host: - -# per-target: - -# everything defaults to unix for a target -target_abbrev=unix - -# post-target: - -@end smallexample -@end cartouche - -@item -Create @file{Makefile.in}, the source file used by @code{configure} to -build your @file{Makefile}. Its leading section should as usual contain -the values that @code{configure} may override: - -@cartouche -@smallexample -srcdir = . -prefix = /usr/local - -exec_prefix = $(prefix) -bindir = $(exec_prefix)/bin -libdir = $(exec_prefix)/lib -tooldir = $(libdir)/$(target_alias) - -datadir = $(exec_prefix)/lib/dejagnu - -RUNTEST = runtest -RUNTESTFLAGS = -FLAGS_TO_PASS = - -#### host, target, site specific Makefile frags come in here. -@end smallexample -@end cartouche - -This should be followed by the standard targets at your site. To begin -with, they need not do anything---for example, these definitions will -do: - -@cartouche -@smallexample - -all: - -info: - -install-info: - -install: -uninstall: - -clean: - -rm -f *~ core *.info* - -@end smallexample -@end cartouche - -It is also a good idea to make sure your @file{Makefile} can rebuild -itself if @file{Makefile.in} changes, with a target like this (which -works for either Cygnus or FSF Configure): - -@cartouche -@smallexample -Makefile : $(srcdir)/Makefile.in $(host_makefile_frag) \ - $(target_makefile_frag) - $(SHELL) ./config.status -@end smallexample -@end cartouche - -You also need to include two targets important to DejaGnu: @code{check}, -to run the tests, and @code{site.exp}, to set up the Tcl copies of -configuration-dependent values. The @code{check} target must run -@samp{runtest --tool @var{example}}: - -@cartouche -@smallexample -check: site.exp all - $(RUNTEST) $(RUNTESTFLAGS) $(FLAGS_TO_PASS) \ - --tool @var{example} --srcdir $(srcdir) -@end smallexample -@end cartouche - -The @code{site.exp} target should usually set up (among other things!) a -Tcl variable for the name of your program: - -@cartouche -@smallexample -site.exp: ./config.status Makefile - @@echo "Making a new config file..." - -@@rm -f ./tmp? - @@touch site.exp - - -@@mv site.exp site.bak - @@echo "## these variables are automatically\ - generated by make ##" > ./tmp0 - @@echo "# Do not edit here. If you wish to\ - override these values" >> ./tmp0 - @@echo "# add them to the last section" >> ./tmp0 - @@echo "set host_os $@{host_os@}" >> ./tmp0 - @@echo "set host_alias $@{host_alias@}" >> ./tmp0 - @@echo "set host_cpu $@{host_cpu@}" >> ./tmp0 - @@echo "set host_vendor $@{host_vendor@}" >> ./tmp0 - @@echo "set target_os $@{target_os@}" >> ./tmp0 - @@echo "set target_alias $@{target_alias@}" >> ./tmp0 - @@echo "set target_cpu $@{target_cpu@}" >> ./tmp0 - @@echo "set target_vendor $@{target_vendor@}" >> ./tmp0 - @@echo "set host_triplet $@{host_canonical@}" >> ./tmp0 - @@echo "set target_triplet $@{target_canonical@}">>./tmp0 - @@echo "set tool binutils" >> ./tmp0 - @@echo "set srcdir $@{srcdir@}" >> ./tmp0 - @@echo "set objdir `pwd`" >> ./tmp0 - @@echo "set @var{examplename} @var{example}" >> ./tmp0 - @@echo "## All variables above are generated by\ - configure. Do Not Edit ##" >> ./tmp0 - @@cat ./tmp0 > site.exp - @@sed < site.bak \ - -e '1,/^## All variables above are.*##/ d' \ - >> site.exp - -@@rm -f ./tmp? -@end smallexample -@end cartouche - -@item -Create a directory (in @file{testsuite/}) called @file{config/}: - -@example -eg$ mkdir config -@end example - -@item -Make an init file in this directory; its name must start with the -@code{target_abbrev} value, so call it @file{config/unix.exp}. -This is the file that contains the target-dependent procedures; -fortunately, most of them do not have to do very much in order for -@code{runtest} to run. - -If @var{example} is not interactive, you can get away with this minimal -@file{unix.exp} to begin with: - -@cartouche -@smallexample -proc foo_exit @{@} @{@} -proc foo_version @{@} @{@} -@end smallexample -@end cartouche - -If @var{example} is interactive, however, you might as well define a -start routine @emph{and invoke it} by using an init file like this: - -@cartouche -@smallexample -proc foo_exit @{@} @{@} -proc foo_version @{@} @{@} - -proc foo_start @{@} @{ - global @var{examplename} - spawn $@var{examplename} - expect @{ - -re "" @{@} - @} -@} -foo_start -@end smallexample -@end cartouche - -@item -Create a directory whose name begins with your tool's name, to contain -tests: - -@example -eg$ mkdir @var{example}.0 -@end example - -@item -Create a sample test file in @file{@var{example}.0}. Its name must end -with @samp{.exp}; you can use @samp{first-try.exp} To begin with, just -write there a line of Tcl code to issue a message: - -@cartouche -@smallexample -send_user "Testing: one, two...\n" -@end smallexample -@end cartouche - -@item -Back in the @file{testsuite/} (top level) directory, run - -@example -eg$ configure -@end example - -(You may have to specify more of a path, if a suitable @code{configure} -is not available in your execution path.) - -@item -You are now ready to triumphantly type @samp{make check} or -@samp{runtest --tool @var{example}}. You should see something like this: - -@cartouche -@smallexample -Test Run By rhl on Fri Jan 29 16:25:44 EST 1993 - - === @var{example} tests === - -Running ./@var{example}.0/first-try.exp ... -Testing: one, two... - - === @var{example} Summary === - -@end smallexample -@end cartouche - -There is no output in the summary, because so far the example does not -call any of the procedures that establish a test outcome. - -@item -Begin writing some real tests. For an interactive tool, you should -probably write a real exit routine in fairly short order; in any case, -you should also write a real version routine soon. -@end enumerate - -@node Adding Targets -@section Adding a target -@cindex adding a target - -DejaGnu has some additional requirements for target support, beyond the -general-purpose provisions of Cygnus @code{configure}. @code{runtest} -must actively communicate with the target, rather than simply generating -or managing code for the target architecture. Therefore, each tool -requires an initialization module for each target. For new targets, you -must supply a few Tcl procedures to adapt DejaGnu to the target. This -permits DejaGnu itself to remain target independent. @xref{Init -Module,,Initialization module}, for a discussion of the naming -conventions that enable DejaGnu to locate and use init files. - -Usually the best way to write a new initialization module is to edit an -existing initialization module; some trial and error will be required. -If necessary, you can use the @samp{--debug} option to see what -is really going on. - -When you code an initialization module, be generous in printing -information controlled by the @code{verbose} procedure (@pxref{DejaGnu -Builtins, DejaGnu procedures}). - -Most of the work is in getting the communications right. Communications -code (for several situations involving IP networks or serial lines) is -available in a DejaGnu library file, @file{lib/remote.exp}. -@xref{DejaGnu Builtins,,DejaGnu Builtins}. - -@c FIXME! Say something about Tcl debugger here. -If you suspect a communication problem, try running the connection -interactively from @code{expect}. (There are three ways of running -@code{expect} as an interactive interpreter. You can run @code{expect} -with no arguments, and control it completely interactively; or you can -use @samp{expect -i} together with other command-line options and -arguments; or you can run the command @code{interpreter} from any -@code{expect} procedure. Use @code{return} to get back to the calling -procedure (if any), or @code{return -tcl} to make the calling procedure -itself return to its caller; use @code{exit} or end-of-file to leave -@code{expect} altogether.) Run the program whose name is recorded in -@samp{$connectmode}, with the arguments in @samp{$targetname}, to -establish a connection. You should at least be able to get a prompt -from any target that is physically connected. - -@node Porting -@section Porting to a new host -@cindex porting to a new host - -The task of porting DejaGnu is basically that of porting Tcl and -@code{expect}. Tcl and @code{expect}, as distributed with DejaGnu, both -use @code{autoconf}; they should port automatically to most Unix -systems. - -Once Tcl and @code{expect} are ported, DejaGnu should run. Most system -dependencies are taken care of by using @code{expect} as the main -command shell. - -@node Installation -@appendix Installing DejaGnu - -@cindex host, explained -@cindex target, explained -@cindex DejaGnu configuration -@cindex configuring DejaGnu -Once you have the DejaGnu source unpacked and available, you must first -configure the software to specify where it is to run (and the associated -defaults); then you can proceed to installing it. - -@menu -* Configuring DejaGnu:: -* Installing DejaGnu:: -@end menu - -@node Configuring DejaGnu -@section Configuring the DejaGnu test driver - -It is usually best to configure in a directory separate -from the source tree, specifying where to find the source with the -optional @samp{--srcdir} option to @code{configure}. DejaGnu uses the -GNU @code{autoconf} to configure itself. For more info on using -autoconf, read the GNU autoconf manual. To configure, execute the -@file{configure} program, no other options are required. For an example, -to configure in a seperate tree for objects, execute the configure -script from the source tree like this: - -@smallexample -../dejagnu-1.3/configure -@end smallexample - -DejaGnu doesn't care at config time if it's for testing a native system -or a cross system. That is determined at runtime by using the config -files. - -@cindex @code{prefix}, configure options -@cindex @code{exec_prefix}, configure options. -You may also want to use the @code{configure} option @samp{--prefix} to -specify where you want DejaGnu and its supporting code installed. By -default, installation is in subdirectories of @file{/usr/local}, but you -can select any alternate directory @var{altdir} by including -@samp{--prefix=@var{altdir}} on the @code{configure} command line. -(This value is captured in the Makefile variables @code{prefix} -and @code{exec_prefix}.) - -@cindex auxiliary programs -@cindex test suite distributions -@cindex @code{make} builds part of tests -Save for a small number of example tests, the DejaGnu distribution -itself does not include any test suites; these are available separately. -Test suites for the @sc{gnu} compiler (testing both GCC and G++) and for -the @sc{gnu} binary utilities are distributed in parallel with the -DejaGnu distribution (but packaged as separate files). The test suite -for the @sc{gnu} debugger is distributed in parallel with each release -of GDB itself, starting with GDB 4.9. After configuring the top-level -DejaGnu directory, unpack and configure the test directories for the -tools you want to test; then, in each test directory, run @code{make} to -build auxiliary programs required by some of the tests. - -@node Installing DejaGnu -@section Installing DejaGnu - -@cindex installing DejaGnu -To install DejaGnu in your filesystem (either in @file{/usr/local}, or -as specified by your @samp{--prefix} option to @code{configure}), execute - -@example -eg$ make install -@end example - -@noindent -@samp{make install} does these things for DejaGnu: - -@enumerate -@item -Look in the path specified for executables (@file{$exec_prefix}) for -directories called @file{lib} and @file{bin}. If these directories do -not exist, @samp{make install} creates them. - -@item -Create another directory in the @file{lib} directory, called -@file{dejagnu}. - -@item -Copy the @code{runtest} shell script into @file{$exec_prefix/bin}. - -@item -Copy all the library files (used to support the framework) into -@file{$exec_prefix/lib/dejagnu}. - -@item -Copy @file{runtest.exp} into @file{$exec_prefix/lib/dejagnu}. This is -the main Tcl code implementing DejaGnu. - -@end enumerate - -Each test suite collection comes with simple installation instructions -in a @file{README} file; in general, the test suites are designed to be -unpacked in the source directory for the corresponding tool, and extract -into a directory called @file{testsuite}. - -@node Index -@unnumbered Index - -@printindex cp - -@contents - -@bye diff --git a/contrib/bluegnu2.0.3/doc/notice.html b/contrib/bluegnu2.0.3/doc/notice.html deleted file mode 100644 index 4c59360..0000000 --- a/contrib/bluegnu2.0.3/doc/notice.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - -Release NoticeBlueGnu Testing Framework -Version 2.0.3 - - - - - - - - - -next -up -previous
-

- - - -

- -

-

Release Notice -
-BlueGnu Testing Framework -
-Version 2.0.3

-

Jan-Willem Neurdenburg -
-jotOmega dsc -
-56 Brigham Hill Road -
-Grafton MA  01519-1135 -
-neurdenburgj@acm.org -
-Tel: (508) 839-0276 -
-Fax: (508) 839-7267

-

- -

- -

-Introduction -

-BlueGnu is a framework for testing other programs. It has been created -to be compatible with DejaGnu. Its purpose is to provide a single -front end for all tests. Beyond this, BlueGnu offers several -advantages for testing: - -

-

    -

    -

  • The flexibility and consistency of the BlueGnu framework makes it -easy to write tests for any program, with the exception of GUI -applications. - -

    -

  • BlueGnu provides a layer of abstraction, which makes all tests -(if correctly written) portable to any host or target where a program -must be tested. - -

    -

  • BlueGnu is written in [incr Tcl], which in turn is based on Tcl -(Tool Command Language). The framework comprises two parts: -
    -
    1. -
    the testing framework, -
    2. -
    the test-suites or test-sets themselves. -
    -

    -

  • BlueGnu will work with any Tcl based interpreter as long as -[incr Tcl] has been included. You can include 'expect', 'Tk', and/or -other extensions. - -

    -

  • Includes DejaGnu release 1.6 - -

    -

-

- -

-Requirements -

-The following modules should have been installed, before you can -install and/or use BlueGnu: - -

-

    -
  • Tcl release 8.0 or higher, -
  • incr Tcl release 3.0 or higher. -
-

-Any other extensions that is compatible with Tcl release 8.0 can be used -as well. - -

- -

-Structure and Contents of the Release -

- -

-The root directory of the release contains the README files with -installation instructions and the files needed to build and install -this product. It also contains the executable scripts of the -BlueGnu testing framework. - -

-The top-level directories are listed below: - -

-

-
lib: -
the packages and procedures that make the BlueGnu and -DejaGnu testing framework. This also includes the default target -definition files. -

-

testsets: -
the BlueGnu test-suites and test examples. It contains -the following subdirectories. - -

-

-
BlueGnu: -
test scripts to test the testing framework itself. -

-

examples: -
test suite and test script examples. - -

-

config, lib, tools: -
currently empty, but can be used for -test-set dependent configuration files, library files, and tools. -
-

-

config: -
currently empty. - -

-

doc: -
the DejaGnu texinfo source and the documentation in -'info', 'dvi', 'ps', and 'pdf' representation, respectively -dejagnu.info*, dejagnu.dvi, dejagnu.ps, and dejagnu.pdf. A DejaGnu man -page is also available. - -

-It also contains -the TEX version (README.tex) of this document as well as the 'dvi', 'ps' -'html', and 'pdf' representation, respectively notice.dvi, notice.ps, -notice.html, and notice.pdf. - -

-

testsuite: -
contains a mixture of DejaGnu and BlueGnu test -scripts. - -

-

contrib: -
contains examples how DejaGnu is used at Cygnus. - -

-

example: -
contains a full DejaGnu test framework example for testing the program 'calc' which is also included. - -

-

-

- -

-Installation and use under Unix -

- -

-Before you can install and use BlueGnu you need to have installed the -following three packages: -

    -
  • Tcl version 8.0.3 -
  • Tk version 8.0.3 -
  • incr Tcl version 3.0.1 -
The source for these packages should all be located in one directory. -The subdirectory in the directory should be: -
    -
  • tcl8.0.3 -
  • tk8.0.3 -
  • itcl3.0.1 -
-

-The following examples use the command `./configure --prefix=/tools/...`. This will install all packages in a directory -``/tools''. When you omit the ``-prefix''-switch then the -installation default will be the directory ``/usr/local''. - -

- -

-Installation of needed Packages -

- -

-When you have not installed Tcl and the other needed extensions, then -you need to retrieve the sources from ``www.tcltk.com/itcl''. You need -to `gunzip` the files and do a `tar xf` of all these packages in one -directory, let's call this directory ``TclTk''. - -

-From the directory ``TclTk'', you should do the following to install -the packages: - -

-

-% cd tcl8.0.3/unix
-% ./configure --prefix=/tools/tcl8.0.3 --enable-gcc --enable-shared
-% make
-% mkdir /tools/tcl8.0.3
-% make install
-% cd ../../tk8.0.3/unix
-% ./configure --prefix=/tools/tk8.0.3 --enable-gcc --enable-shared
-% make
-% mkdir /tools/tk8.0.3
-% make install
-% cd ../../itcl3.0.1
-% ./configure --prefix=/tools/itcl3.0.1 --enable-gcc --enable-shared
-% make
-% mkdir /tools/itcl3.0.1
-% make install
-
-

- -

-Installing BlueGnu -

-You can now `gunzip` and `tar xf` the BlueGnu version 2.0.3 in the -directory ``TckTk''. This will create the directory -``bluegnu2.0.3''. Now do the following: - -

-

-% cd bluegnu2.0.3
-% ./configure --prefix=/tools/bluegnu2.0.3
-% make
-% mkdir /tools/bluegnu2.0.3
-% make install
-
-

-This will install BlueGnu in the directories: -

    -
  • /tools/bluegnu2.0.3/bin -
  • /tools/bluegnu2.0.3/lib/bluegnu -
  • /tools/bluegnu2.0.3/info -
  • /tools/bluegnu2.0.3/man -
-

- -

-Using BlueGnu -

-When you have installed [incr Tcl] and BlueGnu and you have the -respective ``bin'' directories in your PATH variable, then you can -start running some tests. You can go into the BlueGnu source directory -``bluegnu2.0.3/testsets/examples'' and run the following: - -

-

-% bluegnu versionTcl.itcl
-% bluegnu ts_001
-% bluegnu ts_002
-% bluegnu ts_003
-
-

-The above test result should all be PASS. The following test will give -a result UNKNOWN, because no pass/fail instruction have been given. - -

-

-% bluegnu tc001
-
-

-The last test you can run will fail in its simple form: - -

-

-% bluegnu tc002
-
-

-But will pass if you execute the test as follows: - -

-

-% bluegnu tc002[English]
-
-

-This is because the test scripts need a test case identifier to find -the correct benchmark code. - -

- -

-Changes -

- -

-Version 2.0.3 -

-This being the first public release it is not to useful to list all -the changes. BlueGnu has been modeled after DejaGnu and is a complete -new implementation which has been tested thoroughly. When -documentation is being written more changes will be made. An example -of some of these changes as a result of this documentation effort can -be found in the test-suites ts_001, ts_002, and -ts_003. The first two are not as easy to write as the -third. The test suite ts_001 is a script implementation of the -command line: -
-% cd bluegnu2.0.3/testsets
-% bluegnu examples/tc002[English=B] \
-> "examples/tc002[Dutch=B]={MSG=Hallo Wereld}"
-
This may be useful for simple tests but when you want to write more -complex test-suite scripts you would like some more flexibility, so two -procedures were introduced, which are shown in test-suite ts_002. This -makes writing rather complex so the procedures have become part of -the procedures 'appendQueue', 'prependQueue', and 'runtest'. The -resulting script is shown in test-suit ts_003. - -

-Changes like this will be made in the future! - -

- -

-Future Enhancements -

-The following enhancements are being planned: -
    -
  • Target code will be made into a class with methods 'start', -'load', 'exit', and 'version'. Instead of the current -'<target>_start', '<target>_load', '<target>_exit', and -'<target>_version', which have been taken from DejaGnu. - -

    -

  • Procedures will be created that make it easy to test WEB -application from the framework. - -

    -

  • Other enhancements will be made depending on the use of the -framework in testing different applications. -
-

- About this document ... -

- Release Notice -
-BlueGnu Testing Framework -
-Version 2.0.3

-This document was generated using the -LaTeX2HTML translator Version 98.1p1 release (March 2nd, 1998) -

-Copyright © 1993, 1994, 1995, 1996, 1997, -Nikos Drakos, -Computer Based Learning Unit, University of Leeds. -

-The command line arguments were:
- latex2html -t BlueGnu Release Notice -split 0 READMEdvi.tex. -

-The translation was initiated by Jan-Willem Neurdenburg on 1999-09-19


-next -up -previous
- - -
-Jan-Willem Neurdenburg
-1999-09-19
-
- - diff --git a/contrib/bluegnu2.0.3/doc/notice.pdf b/contrib/bluegnu2.0.3/doc/notice.pdf deleted file mode 100644 index 52645f4..0000000 --- a/contrib/bluegnu2.0.3/doc/notice.pdf +++ /dev/null @@ -1,1165 +0,0 @@ -%PDF-1.2 -8 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.19 -/Ascent 694.44 -/Descent -194.51 -/Flags 4 -/FontBBox [-232 -250 945 963] -/FontName /CMR17 -/ItalicAngle 0 -/XHeight 430 -/StemV 80 -/FontFile 7 0 R ->> -endobj -9 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F1 -/FontDescriptor 8 0 R -/BaseFont /BHYBSB+CMR17 -/FirstChar 0 -/LastChar 127 -/Widths [575.97 772.08 719.84 641.07 615.35 693.31 667.59 719.84 667.59 719.84 667.59 -525.41 499.29 499.29 748.93 748.93 249.64 275.77 458.62 458.62 458.62 458.62 458.62 -693.31 406.37 458.62 667.59 719.84 458.62 837.18 941.67 719.84 249.64 249.64 458.62 -772.08 458.62 772.08 719.84 249.64 354.13 354.13 458.62 719.84 249.64 301.89 249.64 -458.62 458.62 458.62 458.62 458.62 458.62 458.62 458.62 458.62 458.62 458.62 249.64 -249.64 249.64 719.84 432.5 432.5 719.84 693.31 654.33 667.59 706.58 628.21 602.09 -726.27 693.31 327.61 471.48 719.44 575.97 850.05 693.31 719.84 628.21 719.84 680.45 -510.86 667.59 693.31 693.31 954.53 693.31 693.31 563.11 249.64 458.62 249.64 458.62 -249.64 249.64 458.62 510.86 406.37 510.86 406.37 275.77 458.62 510.86 249.64 275.77 -484.74 249.64 772.08 510.86 458.62 510.86 484.74 354.13 359.36 354.13 510.86 484.74 -667.59 484.74 484.74 406.37 458.62 917.24 458.62 458.62 458.62] ->> -endobj -11 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -194.44 -/Flags 4 -/FontBBox [-246 -251 988 968] -/FontName /CMR12 -/ItalicAngle 0 -/XHeight 431 -/StemV 80 -/FontFile 10 0 R ->> -endobj -12 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F2 -/FontDescriptor 11 0 R -/BaseFont /JUQUTE+CMR12 -/FirstChar 0 -/LastChar 127 -/Widths [611.8 815.96 761.57 679.62 652.77 734.02 707.17 761.57 707.17 761.57 707.17 -571.17 543.98 543.98 815.96 815.96 271.99 299.19 489.58 489.58 489.58 489.58 489.58 -734.02 435.18 489.58 707.17 761.57 489.58 883.79 992.58 761.57 271.99 271.99 489.58 -815.96 489.58 815.96 761.57 271.99 380.78 380.78 489.58 761.57 271.99 326.39 271.99 -489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 271.99 -271.99 271.99 761.57 462.38 462.38 761.57 734.02 693.4 707.17 747.79 666.2 639 768.28 -734.02 353.24 503.01 761.22 611.8 897.21 734.02 761.57 666.2 761.57 720.6 543.98 -707.17 734.02 734.02 1006.01 734.02 734.02 598.37 271.99 489.58 271.99 489.58 271.99 -271.99 489.58 543.98 435.18 543.98 435.18 299.19 489.58 543.98 271.99 299.19 516.78 -271.99 815.96 543.98 489.58 543.98 516.78 380.78 386.22 380.78 543.98 516.78 707.17 -516.78 516.78 435.18 489.58 979.16 489.58 489.58 489.58] ->> -endobj -14 0 obj -<< -/Type /FontDescriptor -/CapHeight 686.11 -/Ascent 694.44 -/Descent -194.44 -/Flags 4 -/FontBBox [-296 -251 1139 946] -/FontName /CMBX12 -/ItalicAngle 0 -/XHeight 444 -/StemV 80 -/FontFile 13 0 R ->> -endobj -15 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F3 -/FontDescriptor 14 0 R -/BaseFont /PRPCHF+CMBX12 -/FirstChar 0 -/LastChar 127 -/Widths [675.93 937.5 875 787.04 750 879.63 812.5 875 812.5 875 812.5 656.25 625 -625 937.5 937.5 312.5 343.75 562.5 562.5 562.5 562.5 562.5 849.54 500 574.07 812.5 -875 562.5 1018.52 1143.52 875 312.5 342.59 581.02 937.5 562.5 937.5 875 312.5 437.5 -437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 -562.5 562.5 312.5 312.5 342.59 875 531.25 531.25 875 849.54 799.77 812.5 862.27 738.43 -707.18 884.26 879.63 418.98 581.02 880.79 675.93 1067.13 879.63 844.91 768.52 844.91 -839.12 625 782.41 864.58 849.54 1162.04 849.54 849.54 687.5 312.5 581.02 312.5 562.5 -312.5 312.5 546.88 625 500 625 513.31 343.75 562.5 625 312.5 343.75 593.75 312.5 -937.5 625 562.5 625 593.75 459.49 443.75 437.5 625 593.75 812.5 593.75 593.75 500 -562.5 1125 562.5 562.5 562.5] ->> -endobj -17 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -960 -/Flags 68 -/FontBBox [-29 -960 1116 775] -/FontName /CMSY10 -/ItalicAngle -14 -/XHeight 431 -/StemV 80 -/FontFile 16 0 R ->> -endobj -18 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F4 -/FontDescriptor 17 0 R -/BaseFont /MYFBJI+CMSY10 -/FirstChar 0 -/LastChar 127 -/Widths [777.78 277.78 777.78 500 777.78 500 777.78 777.78 777.78 777.78 777.78 777.78 -777.78 1000 500 500 777.78 777.78 777.78 777.78 777.78 777.78 777.78 777.78 777.78 -777.78 777.78 777.78 1000 1000 777.78 777.78 1000 1000 500 500 1000 1000 1000 777.78 -1000 1000 611.11 611.11 1000 1000 1000 777.78 275 1000 666.67 666.67 888.89 888.89 -0 0 555.56 555.56 666.67 500 722.22 722.22 777.78 777.78 611.11 798.47 656.81 526.53 -771.39 527.78 718.75 594.87 844.52 544.52 677.78 761.95 689.72 1200.9 820.49 796.11 -695.56 816.67 847.5 605.56 544.64 625.83 612.78 987.78 713.3 668.34 724.73 666.67 -666.67 666.67 666.67 666.67 611.11 611.11 444.45 444.45 444.45 444.45 500 500 388.89 -388.89 277.78 500 500 611.11 500 277.78 833.34 750 833.34 416.67 666.67 666.67 777.78 -777.78 444.45 444.45 444.45 611.11 777.78 777.78 777.78 777.78] ->> -endobj -20 0 obj -<< -/Length 2396 ->> -stream -0 w 0 g 0 G BT/F1 20.66 Tf 172.82 -114.07 TD[(Release)-301(Notice)]TJ -58.8 -24.91 TD[(BlueGn)26(u)-301(T)77(esting)-301(F)78(ramew)26(ork)]TJ 66.1 -24.91 TD[(V)78(ersion)-301(2.0.3)]TJ/F2 14.35 Tf -24.54 -35.49 TD[(Jan-Willem)-326(Neurden)26(burg)]TJ 35.56 -17.93 TD[(jotOmega)-326(dsc)]TJ -25.71 -17.93 TD[(56)-326(Brigham)-326(Hill)-327(Road)]TJ -9.02 -17.94 TD[(Grafton)-326(MA)-653(01519-1135)]TJ 6.28 -17.93 TD[(neurden)27(burg)-26(j@acm.org)]TJ 10.54 -17.93 TD[(T)81(el:)-434(\(508\))-326(839-0276)]TJ -1.66 -17.93 TD[(F)81(ax:)-434(\(508\))-326(839-7267)]TJ 1.47 -28.05 TD[(Septem)27(b)-26(er)-327(19,)-326(1999)]TJ/F3 17.22 Tf -134.19 -52.4 TD[(1)-1124(In)30(tro)-30(duction)]TJ/F2 11.96 Tf 0 -26.28 TD[(BlueGn)27(u)-356(is)-356(a)-356(framew)26(ork)-355(for)-356(testing)-357(other)-356(programs.)-525(It)-356(has)-356(b)-27(een)-357(created)-356(to)]TJ 0 -14.45 TD[(b)-27(e)-300(compatible)-301(with)-301(DejaGn)26(u.)-425(Its)-301(purp)-27(ose)-301(is)-301(to)-301(pro)27(vide)-300(a)-301(single)-301(fron)26(t)-299(end)-301(for)]TJ 0 -14.44 TD[(all)-326(tests.)-435(Bey)26(ond)-325(this,)-327(BlueGn)27(u)-326(o\013ers)-326(sev)26(eral)-325(adv)53(an)27(tages)-325(for)-327(testing:)]TJ/F4 11.96 Tf 17.44 -26.97 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(The)-245(\015exibilit)26(y)-245(and)-246(consistency)-245(of)-246(the)-246(BlueGn)26(u)-245(framew)27(ork)-245(mak)26(es)-245(it)-246(easy)]TJ 0 -14.45 TD[(to)-283(write)-284(tests)-284(for)-284(an)27(y)-283(program,)-293(with)-283(the)-284(exception)-284(of)-284(GUI)-283(applications.)]TJ/F4 11.96 Tf -11.83 -24.3 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(BlueGn)27(u)-333(pro)26(vides)-333(a)-334(la)26(y)27(er)-333(of)-334(abstraction,)-336(whic)26(h)-333(mak)26(es)-333(all)-334(tests)-334(\(if)-334(cor-)]TJ 0 -14.45 TD[(rectly)-389(written\))-389(p)-28(ortable)-389(to)-390(an)27(y)-389(host)-389(or)-390(target)-389(where)-390(a)-389(program)-389(m)26(ust)]TJ 0 -14.44 TD[(b)-27(e)-326(tested.)]TJ/F4 11.96 Tf -11.83 -24.3 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(BlueGn)27(u)-376(is)-377(written)-377(in)-377([incr)-376(Tcl],)-390(whic)26(h)-375(in)-377(turn)-377(is)-377(based)-377(on)-376(Tcl)-377(\(T)80(o)-26(ol)]TJ 0 -14.45 TD[(Command)-326(Language\).)-435(The)-326(framew)26(ork)-326(comprises)-326(t)26(w)27(o)-325(parts:)]TJ 10.79 -24.3 TD[(1.)-489(the)-326(testing)-327(framew)26(ork,)]TJ 151.29 -29.89 TD[(1)]TJ ET 0 g 0 G -endstream -endobj -22 0 obj -<< -/F1 9 0 R -/F2 12 0 R -/F3 15 0 R -/F4 18 0 R ->> -endobj -6 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 22 0 R ->> -endobj -25 0 obj -<< -/Length 3301 ->> -stream -0 w 0 g 0 G BT/F2 11.96 Tf 78.91 -65.75 TD[(2.)-489(the)-326(test-suites)-327(or)-326(test-sets)-327(themselv)27(es.)]TJ/F4 11.96 Tf -22.62 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(BlueGn)27(u)-313(will)-314(w)26(ork)-313(with)-314(an)26(y)-313(Tcl)-314(based)-314(in)26(terpreter)-313(as)-314(long)-314(as)-314([incr)-315(Tcl])]TJ 0 -14.45 TD[(has)-301(b)-27(een)-301(included.)-427(Y)81(ou)-300(can)-302(include)-301('exp)-27(ect',)-306('Tk',)-306(and/or)-302(other)-301(exten-)]TJ 0 -14.44 TD[(sions.)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(Includes)-326(DejaGn)26(u)-325(release)-326(1.6)]TJ/F3 17.22 Tf -29.27 -39.94 TD[(2)-1124(Requiremen)30(ts)]TJ/F2 11.96 Tf 0 -26.28 TD[(The)-467(follo)26(wing)-466(mo)-27(dules)-467(should)-468(ha)26(v)28(e)-467(b)-27(een)-467(installed,)-503(b)-27(efore)-467(y)26(ou)-466(can)-468(install)]TJ 0 -14.45 TD[(and/or)-326(use)-326(BlueGn)26(u:)]TJ/F4 11.96 Tf 17.44 -27.39 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(Tcl)-326(release)-326(8.0)-327(or)-326(higher,)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(incr)-326(Tcl)-326(release)-327(3.0)-326(or)-326(higher.)]TJ -11.71 -27.4 TD[(An)27(y)-310(other)-310(extensions)-310(that)-311(is)-310(compatible)-310(with)-311(Tcl)-310(release)-310(8.0)-311(can)-310(b)-27(e)-311(used)]TJ -17.56 -14.45 TD[(as)-326(w)26(ell.)]TJ/F3 17.22 Tf 0 -39.93 TD[(3)-1124(Structure)-375(and)-375(Con)30(ten)31(ts)-374(of)-375(the)-375(Release)]TJ/F2 11.96 Tf 0 -26.28 TD[(The)-235(ro)-27(ot)-235(directory)-236(of)-235(the)-235(release)-235(con)26(tains)-235(the)-235(README)-235(\014les)-235(with)-236(installation)]TJ 0 -14.45 TD[(instructions)-407(and)-407(the)-408(\014les)-407(needed)-408(to)-407(build)-408(and)-407(install)-407(this)-408(pro)-27(duct.)-678(It)-408(also)]TJ 0 -14.45 TD[(con)27(tains)-326(the)-326(executable)-326(scripts)-327(of)-326(the)-327(BlueGn)27(u)-326(testing)-326(framew)26(ork.)]TJ 17.56 -14.44 TD[(The)-326(top-lev)26(el)-325(directories)-326(are)-327(listed)-326(b)-27(elo)26(w:)]TJ/F3 11.96 Tf -17.56 -27.4 TD[(lib:)]TJ/F2 11.96 Tf 24.54 0 TD[(the)-275(pac)26(k)54(ages)-274(and)-276(pro)-27(cedures)-276(that)-276(mak)26(e)-274(the)-276(BlueGn)26(u)-275(and)-275(DejaGn)26(u)-275(test-)]TJ 4.73 -14.44 TD[(ing)-326(framew)26(ork.)-434(This)-326(also)-327(includes)-326(the)-326(default)-327(target)-326(de\014nition)-327(\014les.)]TJ/F3 11.96 Tf -29.27 -24.41 TD[(testsets:)]TJ/F2 11.96 Tf 53.47 0 TD[(the)-298(BlueGn)26(u)-298(test-suites)-299(and)-298(test)-299(examples.)-426(It)-299(con)26(tains)-298(the)-298(follo)26(w-)]TJ -24.2 -14.45 TD[(ing)-326(sub)-27(directories.)]TJ/F3 11.96 Tf 0 -27.4 TD[(BlueGn)31(u:)]TJ/F2 11.96 Tf 61.64 0 TD[(test)-326(scripts)-326(to)-327(test)-326(the)-326(testing)-327(framew)26(ork)-325(itself.)]TJ/F3 11.96 Tf -61.64 -19.42 TD[(examples:)]TJ/F2 11.96 Tf 63.22 0 TD[(test)-326(suite)-326(and)-327(test)-326(script)-326(examples.)]TJ/F3 11.96 Tf -63.22 -19.43 TD[(con\014g,)-375(lib,)-375(to)-31(ols:)]TJ/F2 11.96 Tf 103.44 0 TD[(curren)27(tly)-402(empt)26(y)82(,)-421(but)-403(can)-403(b)-27(e)-403(used)-403(for)-403(test-set)-403(de-)]TJ -77.69 -14.45 TD[(p)-27(enden)26(t)-325(con\014guration)-326(\014les,)-327(library)-326(\014les,)-326(and)-327(to)-27(ols.)]TJ 136.33 -41.41 TD[(2)]TJ ET 0 g 0 G -endstream -endobj -26 0 obj -<< -/F2 12 0 R -/F4 18 0 R -/F3 15 0 R ->> -endobj -24 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 26 0 R ->> -endobj -29 0 obj -<< -/Length 3404 ->> -stream -0 w 0 g 0 G BT/F3 11.96 Tf 38.85 -65.75 TD[(con\014g:)]TJ/F2 11.96 Tf 43.96 0 TD[(curren)27(tly)-326(empt)27(y)81(.)]TJ/F3 11.96 Tf -43.96 -24.41 TD[(do)-31(c:)]TJ/F2 11.96 Tf 30.14 0 TD[(the)-275(DejaGn)26(u)-275(texinfo)-275(source)-276(and)-275(the)-276(do)-27(cumen)26(tation)-275(in)-275('info',)-286('dvi',)-286('ps',)]TJ -0.87 -14.45 TD[(and)-426('p)-28(df)-69(')-427(represen)26(tation,)-451(resp)-27(ectiv)26(ely)-426(dejagn)26(u.info*,)-451(dejagn)26(u.dvi,)-451(de-)]TJ 0 -14.44 TD[(jagn)27(u.ps,)-326(and)-326(dejagn)26(u.p)-26(df.)-435(A)-327(DejaGn)27(u)-326(man)-326(page)-327(is)-326(also)-326(a)26(v)54(ailable.)]TJ 0 -19.43 TD[(It)-375(also)-375(con)26(tains)-374(the)-376(T)]TJ 111.07 -2.57 TD[(E)]TJ 6.5 2.57 TD[(X)-375(v)26(ersion)-374(\(README.tex\))-375(of)-376(this)-375(do)-27(cumen)26(t)-374(as)]TJ -117.57 -14.45 TD[(w)27(ell)-340(as)-340(the)-341('dvi',)-343('ps')-341('h)26(tml',)-343(and)-340('p)-27(df)-70(')-340(represen)26(tation,)-343(resp)-27(ectiv)26(ely)-339(no-)]TJ 0 -14.44 TD[(tice.dvi,)-326(notice.ps,)-326(notice.h)26(tml,)-325(and)-327(notice.p)-27(df.)]TJ/F3 11.96 Tf -29.27 -24.41 TD[(testsuite:)]TJ/F2 11.96 Tf 59.38 0 TD[(con)27(tains)-326(a)-326(mixture)-326(of)-327(DejaGn)26(u)-325(and)-326(BlueGn)26(u)-326(test)-326(scripts.)]TJ/F3 11.96 Tf -59.38 -24.41 TD[(con)31(trib:)]TJ/F2 11.96 Tf 51.33 0 TD[(con)27(tains)-326(examples)-326(ho)26(w)-325(DejaGn)26(u)-325(is)-327(used)-326(at)-327(Cygn)27(us.)]TJ/F3 11.96 Tf -51.33 -24.41 TD[(example:)]TJ/F2 11.96 Tf 57.92 0 TD[(con)27(tains)-384(a)-386(full)-385(DejaGn)26(u)-384(test)-385(framew)26(ork)-384(example)-385(for)-385(testing)-386(the)]TJ -28.65 -14.44 TD[(program)-326('calc')-326(whic)26(h)-325(is)-327(also)-326(included.)]TJ/F3 17.22 Tf -29.27 -39.94 TD[(4)-1124(Installation)-375(and)-375(use)-375(under)-375(Unix)]TJ/F2 11.96 Tf 0 -26.28 TD[(Before)-370(y)26(ou)-369(can)-371(install)-370(and)-371(use)-370(BlueGn)26(u)-369(y)26(ou)-370(need)-370(to)-371(ha)27(v)27(e)-370(installed)-370(the)-371(fol-)]TJ 0 -14.45 TD[(lo)27(wing)-326(three)-326(pac)26(k)55(ages:)]TJ/F4 11.96 Tf 17.44 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(Tcl)-326(v)26(ersion)-325(8.0.3)]TJ/F4 11.96 Tf -11.83 -24.4 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(Tk)-326(v)26(ersion)-325(8.0.3)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(incr)-326(Tcl)-326(v)26(ersion)-325(3.0.1)]TJ -29.27 -24.41 TD[(The)-410(source)-410(for)-410(these)-410(pac)26(k)55(ages)-410(should)-410(all)-410(b)-27(e)-410(lo)-27(cated)-410(in)-411(one)-410(directory)81(.)-686(The)]TJ 0 -14.45 TD[(sub)-27(directory)-326(in)-326(the)-327(directory)-326(should)-327(b)-27(e:)]TJ/F4 11.96 Tf 17.44 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(tcl8.0.3)]TJ/F4 11.96 Tf -11.83 -24.4 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(tk8.0.3)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(itcl3.0.1)]TJ -11.71 -24.41 TD[(The)-261(follo)26(wing)-260(examples)-262(use)-261(the)-262(command)-261(`./con\014gure)-262({pre\014x=/to)-27(ols/...`.)]TJ -17.56 -14.45 TD[(This)-332(will)-332(install)-332(all)-332(pac)27(k)54(ages)-331(in)-332(a)-332(directory)-332(\\/to)-27(ols".)-453(When)-332(y)27(ou)-331(omit)-333(the)-332(\\{)]TJ 0 -14.44 TD[(pre\014x"-switc)27(h)-254(then)-255(the)-255(installation)-254(default)-255(will)-255(b)-27(e)-255(the)-255(directory)-255(\\/usr/lo)-27(cal".)]TJ 191.35 -55.83 TD[(3)]TJ ET 0 g 0 G -endstream -endobj -30 0 obj -<< -/F3 15 0 R -/F2 12 0 R -/F4 18 0 R ->> -endobj -28 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 30 0 R ->> -endobj -34 0 obj -<< -/Type /FontDescriptor -/CapHeight 611.11 -/Ascent 611.11 -/Descent -222.22 -/Flags 5 -/FontBBox [-1 -234 716 801] -/FontName /CMTT12 -/ItalicAngle 0 -/XHeight 431 -/StemV 80 -/FontFile 33 0 R ->> -endobj -35 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F5 -/FontDescriptor 34 0 R -/BaseFont /ATVUDO+CMTT12 -/FirstChar 0 -/LastChar 127 -/Widths [514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 -514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58 514.58] ->> -endobj -36 0 obj -<< -/Length 2558 ->> -stream -0 w 0 g 0 G BT/F3 14.35 Tf 38.85 -65.75 TD[(4.1)-1124(Installation)-375(of)-375(needed)-375(P)30(ac)31(k)63(ages)]TJ/F2 11.96 Tf 0 -22.17 TD[(When)-324(y)26(ou)-324(ha)26(v)27(e)-323(not)-325(installed)-325(Tcl)-325(and)-325(the)-324(other)-325(needed)-325(extensions,)-325(then)-325(y)26(ou)]TJ 0 -14.45 TD[(need)-252(to)-252(retriev)26(e)-251(the)-252(sources)-252(from)-252(\\www.tcltk.com/itcl".)-411(Y)81(ou)-251(need)-252(to)-252(`gunzip`)]TJ 0 -14.44 TD[(the)-310(\014les)-311(and)-311(do)-310(a)-311(`tar)-311(xf`)-311(of)-310(all)-311(these)-311(pac)26(k)55(ages)-310(in)-311(one)-310(directory)80(,)-313(let's)-310(call)-311(this)]TJ 0 -14.45 TD[(directory)-326(\\TclTk".)]TJ 17.56 -14.44 TD[(F)81(rom)-393(the)-394(directory)-394(\\TclTk",)-411(y)26(ou)-393(should)-394(do)-394(the)-395(follo)27(wing)-393(to)-395(install)-394(the)]TJ -17.56 -14.45 TD[(pac)27(k)54(ages:)]TJ/F5 11.96 Tf 0 -27.4 TD[(%)-514(cd)-515(tcl8.0.3/unix)]TJ 0 -14.44 TD[(%)-514(./configure)-515(--prefix=/tools/tcl8.0.3)-514(--enable-gcc)-515(--enable-shared)]TJ 0 -14.45 TD[(%)-514(make)]TJ 0 -14.44 TD[(%)-514(mkdir)-515(/tools/tcl8.0.3)]TJ 0 -14.45 TD[(%)-514(make)-515(install)]TJ 0 -14.45 TD[(%)-514(cd)-515(../../tk8.0.3/unix)]TJ 0 -14.44 TD[(%)-514(./configure)-515(--prefix=/tools/tk8.0.3)-514(--enable-gcc)-515(--enable-shared)]TJ 0 -14.45 TD[(%)-514(make)]TJ 0 -14.44 TD[(%)-514(mkdir)-515(/tools/tk8.0.3)]TJ 0 -14.45 TD[(%)-514(make)-515(install)]TJ 0 -14.44 TD[(%)-514(cd)-515(../../itcl3.0.1)]TJ 0 -14.45 TD[(%)-514(./configure)-515(--prefix=/tools/itcl3.0.1)-514(--enable-gcc)-515(--enable-shared)]TJ 0 -14.45 TD[(%)-514(make)]TJ 0 -14.44 TD[(%)-514(mkdir)-515(/tools/itcl3.0.1)]TJ 0 -14.45 TD[(%)-514(make)-515(install)]TJ/F3 14.35 Tf 0 -34.66 TD[(4.2)-1124(Installing)-375(BlueGn)30(u)]TJ/F2 11.96 Tf 0 -22.17 TD[(Y)81(ou)-411(can)-412(no)26(w)-411(`gunzip`)-412(and)-412(`tar)-412(xf`)-413(the)-412(BlueGn)27(u)-412(v)27(ersion)-412(2.0.3)-412(in)-412(the)-412(direc-)]TJ 0 -14.44 TD[(tory)-401(\\Tc)26(kTk".)-660(This)-401(will)-402(create)-402(the)-401(directory)-402(\\bluegn)26(u2.0.3".)-659(No)26(w)-401(do)-401(the)]TJ 0 -14.45 TD[(follo)27(wing:)]TJ/F5 11.96 Tf 0 -27.4 TD[(%)-514(cd)-515(bluegnu2.0.3)]TJ 0 -14.44 TD[(%)-514(./configure)-515(--prefix=/tools/bluegnu2.0.3)]TJ 0 -14.45 TD[(%)-514(make)]TJ 0 -14.44 TD[(%)-514(mkdir)-515(/tools/bluegnu2.0.3)]TJ 0 -14.45 TD[(%)-514(make)-515(install)]TJ/F2 11.96 Tf 17.56 -27.4 TD[(This)-326(will)-326(install)-327(BlueGn)27(u)-326(in)-326(the)-327(directories:)]TJ 173.79 -42.05 TD[(4)]TJ ET 0 g 0 G -endstream -endobj -37 0 obj -<< -/F3 15 0 R -/F2 12 0 R -/F5 35 0 R ->> -endobj -32 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 37 0 R ->> -endobj -40 0 obj -<< -/Length 2393 ->> -stream -0 w 0 g 0 G BT/F4 11.96 Tf 56.29 -65.75 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(/to)-27(ols/bluegn)26(u2.0.3/bin)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(/to)-27(ols/bluegn)26(u2.0.3/lib/bluegn)28(u)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(/to)-27(ols/bluegn)26(u2.0.3/info)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(/to)-27(ols/bluegn)26(u2.0.3/man)]TJ/F3 14.35 Tf -29.27 -34.66 TD[(4.3)-1124(Using)-375(BlueGn)30(u)]TJ/F2 11.96 Tf 0 -22.17 TD[(When)-384(y)26(ou)-384(ha)26(v)27(e)-383(installed)-385([incr)-385(Tcl])-385(and)-385(BlueGn)27(u)-384(and)-385(y)26(ou)-384(ha)27(v)27(e)-384(the)-385(resp)-27(ec-)]TJ 0 -14.44 TD[(tiv)27(e)-231(\\bin")-231(directories)-232(in)-231(y)26(our)-231(P)81(A)82(TH)-231(v)53(ariable,)-249(then)-232(y)27(ou)-231(can)-231(start)-232(running)-231(some)]TJ 0 -14.45 TD[(tests.)-398(Y)80(ou)-216(can)-218(go)-218(in)27(to)-217(the)-218(BlueGn)27(u)-217(source)-218(directory)-217(\\bluegn)26(u2.0.3/testsets/examples")]TJ 0 -14.44 TD[(and)-326(run)-326(the)-327(follo)27(wing:)]TJ/F5 11.96 Tf 0 -27.4 TD[(%)-514(bluegnu)-515(versionTcl.itcl)]TJ 0 -14.45 TD[(%)-514(bluegnu)-515(ts_001)]TJ 0 -14.44 TD[(%)-514(bluegnu)-515(ts_002)]TJ 0 -14.45 TD[(%)-514(bluegnu)-515(ts_003)]TJ/F2 11.96 Tf 17.56 -27.4 TD[(The)-356(ab)-28(o)27(v)27(e)-356(test)-357(result)-357(should)-357(all)-357(b)-27(e)-357(P)80(ASS.)-356(The)-357(follo)26(wing)-356(test)-357(will)-357(giv)27(e)-356(a)]TJ -17.56 -14.44 TD[(result)-326(UNKNO)26(WN,)-325(b)-27(ecause)-327(no)-326(pass/fail)-326(instruction)-327(ha)26(v)28(e)-326(b)-27(een)-326(giv)26(en.)]TJ/F5 11.96 Tf 0 -27.4 TD[(%)-514(bluegnu)-515(tc001)]TJ/F2 11.96 Tf 17.56 -27.4 TD[(The)-326(last)-326(test)-327(y)27(ou)-326(can)-326(run)-327(will)-326(fail)-326(in)-327(its)-326(simple)-327(form:)]TJ/F5 11.96 Tf -17.56 -27.39 TD[(%)-514(bluegnu)-515(tc002)]TJ/F2 11.96 Tf 17.56 -27.4 TD[(But)-326(will)-326(pass)-327(if)-326(y)26(ou)-325(execute)-327(the)-326(test)-326(as)-327(follo)26(ws:)]TJ/F5 11.96 Tf -17.56 -27.4 TD[(%)-514(bluegnu)-515(tc002[English])]TJ/F2 11.96 Tf 17.56 -27.4 TD[(This)-463(is)-463(b)-27(ecause)-463(the)-463(test)-463(scripts)-463(need)-463(a)-463(test)-463(case)-463(iden)26(ti\014er)-462(to)-463(\014nd)-463(the)]TJ -17.56 -14.44 TD[(correct)-326(b)-27(enc)26(hmark)-325(co)-27(de.)]TJ 191.35 -99.59 TD[(5)]TJ ET 0 g 0 G -endstream -endobj -41 0 obj -<< -/F4 18 0 R -/F2 12 0 R -/F3 15 0 R -/F5 35 0 R ->> -endobj -39 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 41 0 R ->> -endobj -45 0 obj -<< -/Type /FontDescriptor -/CapHeight 683.33 -/Ascent 694.44 -/Descent -194.44 -/Flags 68 -/FontBBox [-30 -250 1026 750] -/FontName /CMMI12 -/ItalicAngle -14 -/XHeight 431 -/StemV 80 -/FontFile 44 0 R ->> -endobj -46 0 obj -<< -/Type /Font -/Subtype /Type1 -/Name /F6 -/FontDescriptor 45 0 R -/BaseFont /AEVAHO+CMMI12 -/FirstChar 0 -/LastChar 127 -/Widths [606.65 815.96 748.3 679.62 728.67 811.28 765.79 571.17 652.77 598.03 757.63 -622.79 552.77 507.89 433.67 395.37 427.66 483.1 456.3 346.06 563.65 571.17 589.12 -483.79 427.66 555.44 505.03 556.53 425.23 527.77 579.51 613.42 636.57 609.72 458.21 -577.08 808.91 505.03 354.16 641.43 979.16 979.16 979.16 979.16 271.99 271.99 489.58 -489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 489.58 271.99 -271.99 761.57 489.58 761.57 489.58 516.89 734.02 743.86 700.54 812.98 724.82 633.85 -772.35 811.28 431.86 541.2 833.04 666.2 947.27 784.08 748.3 631.13 775.5 745.29 602.19 -573.89 665.01 570.83 924.41 812.64 568.11 670.19 380.78 380.78 380.78 979.16 979.16 -410.88 514 416.31 421.41 508.79 453.82 482.64 468.86 563.65 334.03 405.09 509.25 -291.66 856.47 584.48 470.71 491.43 434.14 441.26 461.22 353.58 557.29 473.37 699.93 -556.42 477.43 454.86 312.5 377.89 623.37 489.58 271.99] ->> -endobj -47 0 obj -<< -/Length 4786 ->> -stream -0 w 0 g 0 G BT/F3 17.22 Tf 38.85 -65.75 TD[(5)-1124(Changes)]TJ/F3 14.35 Tf 0 -29.78 TD[(5.1)-1124(V)92(ersion)-374(2.0.3)]TJ/F2 11.96 Tf 0 -22.16 TD[(This)-370(b)-28(eing)-370(the)-371(\014rst)-371(public)-371(release)-371(it)-370(is)-371(not)-371(to)-371(useful)-371(to)-371(list)-370(all)-371(the)-371(c)26(hanges.)]TJ 0 -14.45 TD[(BlueGn)27(u)-462(has)-462(b)-27(een)-463(mo)-27(deled)-462(after)-463(DejaGn)26(u)-461(and)-463(is)-462(a)-462(complete)-463(new)-462(imple-)]TJ 0 -14.44 TD[(men)27(tation)-323(whic)26(h)-323(has)-325(b)-27(een)-324(tested)-324(thoroughly)80(.)-433(When)-324(do)-27(cumen)26(tation)-323(is)-324(b)-28(eing)]TJ 0 -14.45 TD[(written)-301(more)-302(c)26(hanges)-301(will)-302(b)-27(e)-302(made.)-427(An)-302(example)-302(of)-302(some)-302(of)-302(these)-302(c)26(hanges)-301(as)]TJ 0 -14.45 TD[(a)-350(result)-351(of)-351(this)-351(do)-27(cumen)26(tation)-350(e\013ort)-351(can)-350(b)-28(e)-350(found)-351(in)-351(the)-351(test-suites)-351(ts)]TJ/F5 11.96 Tf 361.58 0 TD[(_)]TJ/F2 11.96 Tf 6.16 0 TD[(001,)]TJ -367.74 -14.44 TD[(ts)]TJ/F5 11.96 Tf 9.17 0 TD[(_)]TJ/F2 11.96 Tf 6.16 0 TD[(002,)-331(and)-330(ts)]TJ/F5 11.96 Tf 56.75 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(003.)-447(The)-330(\014rst)-331(t)26(w)28(o)-330(are)-330(not)-331(as)-330(easy)-331(to)-330(write)-330(as)-331(the)-330(third.)-448(The)]TJ -78.23 -14.45 TD[(test)-326(suite)-326(ts)]TJ/F5 11.96 Tf 60.03 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(001)-326(is)-326(a)-327(script)-326(implemen)26(tation)-325(of)-327(the)-326(command)-326(line:)]TJ/F5 11.96 Tf -66.18 -24.41 TD[(%)-514(cd)-515(bluegnu2.0.3/testsets)]TJ 0 -14.44 TD[(%)-514(bluegnu)-515(examples/tc002[English=B])-514(\\)]TJ 0 -14.45 TD[(>)-514("examples/tc002[Dutch=B]={MSG=Hallo)-515(Wereld}")]TJ/F2 11.96 Tf 0 -24.41 TD[(This)-351(ma)26(y)-350(b)-27(e)-352(useful)-351(for)-352(simple)-351(tests)-352(but)-351(when)-352(y)27(ou)-351(w)26(an)27(t)-350(to)-351(write)-352(more)-351(com-)]TJ 0 -14.44 TD[(plex)-277(test-suite)-277(scripts)-277(y)26(ou)-276(w)26(ould)-277(lik)27(e)-277(some)-277(more)-277(\015exibilit)26(y)82(,)-287(so)-277(t)26(w)28(o)-277(pro)-27(cedures)]TJ 0 -14.45 TD[(w)27(ere)-374(in)26(tro)-26(duced,)-387(whic)26(h)-373(are)-375(sho)26(wn)-374(in)-375(test-suite)-374(ts)]TJ/F5 11.96 Tf 255.16 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(002.)-580(This)-375(mak)27(es)-374(writing)]TJ -261.31 -14.44 TD[(rather)-386(complex)-386(so)-387(the)-386(pro)-28(cedures)-386(ha)26(v)27(e)-385(b)-27(ecome)-387(part)-386(of)-387(the)-386(pro)-28(cedures)-386('ap-)]TJ 0 -14.45 TD[(p)-27(endQueue',)-304('prep)-27(endQueue',)-304(and)-299('run)26(test'.)-425(The)-298(resulting)-299(script)-299(is)-298(sho)26(wn)-298(in)]TJ 0 -14.44 TD[(test-suit)-326(ts)]TJ/F5 11.96 Tf 54.83 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(003.)]TJ -43.42 -14.45 TD[(Changes)-326(lik)26(e)-325(this)-326(will)-327(b)-27(e)-326(made)-327(in)-326(the)-327(future!)]TJ/F3 17.22 Tf -17.56 -39.93 TD[(6)-1124(F)92(uture)-374(Enhancemen)31(ts)]TJ/F2 11.96 Tf 0 -26.29 TD[(The)-326(follo)26(wing)-325(enhancemen)26(ts)-325(are)-327(b)-27(eing)-326(planned:)]TJ/F4 11.96 Tf 17.44 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(T)81(arget)-246(co)-27(de)-247(will)-247(b)-27(e)-247(made)-247(in)26(to)-246(a)-247(class)-246(with)-247(metho)-28(ds)-246('start',)-263('load',)-263('exit',)]TJ 0 -14.44 TD[(and)-217('v)26(ersion'.)-398(Instead)-217(of)-218(the)-218(curren)27(t)-217(')]TJ/F6 11.96 Tf 185.36 0 TD[(<)]TJ/F2 11.96 Tf 9.11 0 TD[(target)]TJ/F6 11.96 Tf 30.56 0 TD[(>)]TJ/F5 11.96 Tf 9.11 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(start',)-239(')]TJ/F6 11.96 Tf 36.74 0 TD[(<)]TJ/F2 11.96 Tf 9.11 0 TD[(target)]TJ/F6 11.96 Tf 30.56 0 TD[(>)]TJ/F5 11.96 Tf 9.11 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(load',)]TJ -331.96 -14.45 TD[(')]TJ/F6 11.96 Tf 3.25 0 TD[(<)]TJ/F2 11.96 Tf 9.11 0 TD[(target)]TJ/F6 11.96 Tf 30.56 0 TD[(>)]TJ/F5 11.96 Tf 9.11 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(exit',)-334(and)-334(')]TJ/F6 11.96 Tf 55.78 0 TD[(<)]TJ/F2 11.96 Tf 9.11 0 TD[(target)]TJ/F6 11.96 Tf 30.56 0 TD[(>)]TJ/F5 11.96 Tf 9.11 0 TD[(_)]TJ/F2 11.96 Tf 6.15 0 TD[(v)27(ersion',)-334(whic)26(h)-332(ha)26(v)27(e)-332(b)-27(een)-333(tak)26(en)-332(from)]TJ -168.89 -14.44 TD[(DejaGn)27(u.)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(Pro)-27(cedures)-331(will)-331(b)-27(e)-331(created)-331(that)-331(mak)27(e)-330(it)-331(easy)-331(to)-331(test)-331(WEB)-331(application)]TJ 0 -14.45 TD[(from)-326(the)-326(framew)26(ork.)]TJ/F4 11.96 Tf -11.83 -24.41 TD[(\017)]TJ/F2 11.96 Tf 11.83 0 TD[(Other)-340(enhancemen)27(ts)-339(will)-340(b)-28(e)-340(made)-340(dep)-27(ending)-340(on)-340(the)-340(use)-340(of)-340(the)-340(frame-)]TJ 0 -14.44 TD[(w)27(ork)-326(in)-326(testing)-326(di\013eren)26(t)-326(applications.)]TJ 162.08 -49.72 TD[(6)]TJ ET 0 g 0 G -endstream -endobj -48 0 obj -<< -/F3 15 0 R -/F2 12 0 R -/F5 35 0 R -/F4 18 0 R -/F6 46 0 R ->> -endobj -43 0 obj -<< -/ProcSet [/PDF /Text /ImageC] -/Font 48 0 R ->> -endobj -7 0 obj -<< -/Length1 1137 -/Length2 5239 -/Length3 533 -/Length 6909 ->> -stream -%!PS-AdobeFont-1.1: CMR17 1.0 -%%CreationDate: 1991 Aug 20 16:38:24 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR17) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /BHYBSB+CMR17 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 46 /period put -dup 48 /zero put -dup 50 /two put -dup 51 /three put -dup 66 /B put -dup 70 /F put -dup 71 /G put -dup 78 /N put -dup 82 /R put -dup 84 /T put -dup 86 /V put -dup 97 /a put -dup 99 /c put -dup 101 /e put -dup 103 /g put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 119 /w put -readonly def -/FontBBox{-33 -250 945 749}readonly def -/UniqueID 5000795 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÍÖP -½¥í˜5ö ÏÈð l.×j‡…kPôØ úëPŒ—ø(?ˆ±~M;Àö^Ãyy¬Ü*f˼[âõ:­ç-ѵZ/¿îeŒ¹_[³+ 5{^Ýòd tp¾ñÅ!¶ûÕÇ~¾Ùd¬Z+¾ÉسäŠå»:cÕEwK’+_ö°nÎCdZy°2}m‚3…þUó@-UÓ´HkãVÂœ:ì‘ïõÓƒ±ä‰ñúUšf“ûÝÔ÷阆ØË|ÊÔªœë4§¯"æœÎðåÙpu$5…íö dGÈÐÿ°Kn=Ûª}¥‰††"§•éÙýV¯/\+5€ ‡NJÃÒ2áPD2SÉ*‹Q=JAT©‘ö)ÌÓvP]ª©²ºÖ5KBL3uò”›Á’zob!%/Š–aŽdj¡°SÉ‹ìÂk7ƒwu$¼§+1@tÁÉNAHÓ×Ñ-žæ— Õ]ªš—ö?,}½žÂí;¥øpêXTê]¼Àaâô¯ —*ɦ‰¢©b ‘µ?kP’ˆCrõ÷¯ÊI_38ØZ—Å»ƒØ-È€ü‰‹`¼ÔùhÊSärõ%…?LxO,,: š4ÙßÞ¼®@7äÀûÜ㘟5–KLç{€[þŒðÀëò&Ïö¶)Tðô-ÿŒ!Je7«fm%8œDÛ{XfD ¿Á7q+Í̉ƌѭý…d‹Ò›ûE¥d°!rî÷‚Öà×áñs|–qœÊžKýÈ~Y™¸†¡ZÅr=ø`~Ï«^êþÙòy‹;ÛVÜ&ø¶ðëÏ$4–™SãË¿r¿,c+Q•¢‰•À²04gÒÿ4tZ] dk¶{TO7kêAšau~Iza•éUÒU -" ôFùtð,bNì“BÊÄ$>Ú‚†\UÞ|fõôÜGÇUK0¨>2ÕH‹ë¢þ4ÉtNÎÕQ\6òz¡â -±J›Èôç(ùد-¬•­‘ù/8RfKý)ˆzÄæ;féIÆ‚`þ¶c©˜µYVìZƒ£5Ü¿^¬xöÓ´enÜ»Ú[¨q¯óHwSþ`EU-?©G¸Ó~<ÅÐäl)‹2\M8´ÇF2릭ƒÏ%IÕd®º ë°+îÑž/ç|=ÛOìr£Ì.à…=”±…ëlÿ£c³šnCw)8VÜnŒÓ]*D$h0VŠ±ä=€UÉ?ø¦œ´vZ½M\·ã^'éĘ|`Ì`z²j™iÅ™–lu1¤ˆ8®±…[Õ>pgKþÎM’—Ú–›¨-=@ܼŸ¸…Y‚%&†Éâì¾ ¯H -&’7+ !îSaÆšx“ã ÛE¤D±ƒ¦ êuF…Û,iÁosà‚IŸ*¦ìm˜eÓ'§BEô͸¡qßs>-A¡_ÂÄXŒÅiŸÒËÖÔt#4ŸÎiÌhŽY#˜EÉdПnƒ`'ü[ôÌ£¶gPÚ3ÛZ¦æÛÇ®ÞÔ“æsý½¥U:ðÂRÀñlH2àM›Ú’­¦ìw°Ò¿-íõAìa·fƒ–üÁduª£ÓN]ʇMÚߺÞÐò¼·J¶|訨ʯ_˜€8qPb[D/:7àí]§é ÙBÞúÁÒb[½Ž×ØzðƒI«N@àrœWÏŸ Õl*v3N©°w -ücpä`F2ÀBX.&!˾ÞæÐÃÛÛ÷$ɤ¹n‹‹ø?ɪõ¾í®ºýËSí—G`3&Þv\ß““®9OнQwÌ縠¨ì,k=Ý<µNl÷I™ÏÎûÑî •4fVÖ¹9J«Ö=ñ©ÌöÚá -p ŸÙ/½Z Jᬇ¸ëŠ dì«õ†5½N!g;š®˜ÑzŸióA.žGnw2R•}‘1b{Ô'ÉiÂ%É–ŒEòû>±öà³6iâiàßJa#nûå5Õz©{‡RÏCbÉ”^‘q -^¡´xÓ²–^(í¿ì´Ò \“œW˜¨ºÓM“§e7·1Ô½ W}`¦r.Ì Ñ“ˆÓΩXŠÒ‡P>¨&ÿÕ8ЬÀJõ@&ræ3hÌ7àÌ„‘çkD–«YkŠá¸òuÛÖl&Í+¨å•Ù«]Öñ6$e_æâ@ c³CÖPŽ‰¤*-ìÄB÷eÇ%ÈoŸžyj!ŒPŒ—pšêHªÉ«e,–~R ­› Ûæ0IÓ,Š/¡×¤TæÄõ4‚ù¥É¸J©,•$¸Ò7Éb¬Ø; EiGX[°Ê¬ôsÑçÁ²*ú OÄžD­Øë…«œ/ôW ‘ïõOHq‹ªã.nú…=êëž’èsý@-ˆÃw0¢“ ›\áõ¶HG‹£#¸Í ; *ÃÎÃ|V†m,ÅËÚŒáG¼RL$í4ƒ¼€ü·øú×QÐ|.47xUKöÍN5ûÞmmXùŒmG²d>¡ãŽr†órUٹߋ÷ü ‹¡äÀ :-á,ñdG,ô'¦\ŽóH¦ÏiA1Ýtþ½£hQº‚h£2ÇɻҰa³lo ḑ<Ü-RYš¦?@•%$É’¹·d¾kw«1ÍíÊ}}i†Å‹¥ÿ½‹q;³ Íf¿;˜y©‹õ3îëut­Ð„%Aí +ãYughì¡Ù4ÞþÃþîæFYh=+zÏrà nTGíÑ+Ãv Î]U®•s ‹Èþ˜eçäHjie®f.M.&›×Dˆ>Ñî\÷ -=ãõK¥ãÞ-çy\ï+éÅ ÓråOy¯†¯”§§u=Ÿt+ŸéCô¡cÙIÇ$ùèÈ–Éåmâ¨ñ iþ‰&¹Øœ”ålœ…‡!Û‘ {ªö(ÉíãV¦ÍÀ>kÐȱ\…ÏŽ´>OE P¡Êÿ‡l<áf^ì'!¾Œ)GÌèå…sl=®F½ÌUöªÌ~ÑØšgw*CÃcÇԌψӎvÆd.â•Ö¬ÜKÒ?À…IKcù‘ï‹@Ä—Ö"=xžqÇŒ2è‰5ø0 nkO—i¿ïòΠm£Ñ|zFŸ.àxë4ðísâBÃÚ¢ÞëËJÛœ"îkñô¬*`9L±Œá¥‹û ]»€DÙY/'r£"@ÚcLòBÖ¬ÀÅÆÆ  Ó+ˆÂ­à ewÿˆs• ø¹Hd!좀åòr¢4bo ÙOìád´gªðì›Ù­?LN;Ûp^«„ãe6ø^skþ3F¯4LyP×0…(Þ.Mn,g-µî¹lXRã‡\=er¨YxЗj5âÑÝdX(~¸Ká-B J,vŒQ0îý‘*¾ªä¹ì>D«Ù%¤Nº‡Rk<#’DÇð®J ?ÂÑDvÀ8dH3‚€:RƒÜ­â¸éTð—™l¶NAèà/øzÖÙXM£öü g½64ç‹õSÂuKÂúڠ㘠Œ±*á¸þ1lç×7CÏNÓ~…ìt1WH¬ƒDùƒEb9nhbjîõ“m9¸¿iì.ÉR9ïe†Ñ(L'úÓªM dXÈ\±s áû¥}ì_NŠªØP>û³ý¬˜Óø—ž­æKŠ^%¶—ý -„k;Kâö×óöD=ñ~š5û‡š]T‰¥·×–x¸Ud¯"°ÉhÛé\F¶MÐlj\”¹–‚G´ºG&“!Jßœ)ËP4›d\gtYe»šN±z³1Œ 0{½ô86‰‚åîvÌhI–¼ƒû DÒ^„·-d"ÃÒå×z Š3z\jíƒÔZˆv7Æhi?ÞǦÌúZ”ê"ÚÝÒìš´Ÿ› -B'ŽÄ\H(ÆYèV6’þ4 ³?PÔ£½¬cLkݾÅÒòœÙ:ûÐw°ÀñÁÝùêøD„3""„ÙL`BˆXÎ~â1×…ƒ3ËÙüÍ×s*Ò̘!»O¦¡åTkŒ}C&Zˆ¨‹ƒšÏ%Q‹W¥ß\éO/?F„ ˆÙc1“L+š8€Ô/:óu$#YZD‹¹0‰)h8ÅÊ(Æ æX ®Œ¥ÐCÐm”{¡´üù½ËEÍÈà€VÍšLôÎW¾ÕkOrï~ñä‚'jDWx§cª+ -Ríá-J©ÍwÃyð'ÌI“wÊ·?Ê8ò’ÚûîTÖ{…ºÜÜÒi‘=¥ |Ã;„÷$’œªœÂMw«(IK,+°8ámöóÆ÷ìn[’昆M½#'Èú{îžê´ ÑîŽ"ìiN\,÷œ|Þzç7¦ì›íò@½Ÿ@êK8å“tLS£-ÞGHÀÛ€k™ò¼î×^Óå—îàaI3¬ Þ«êLÞ»{ÂN]T6u®NßJ=6(Oò®*Öô»¯~èD$×£Hê-uNUù˪EÒ4Ž&»¬Û„Oáþìâ(rëªNÞÏUŒ=œ»†…ÇOz“˜=¼­:kš¬W[ [o±í‰mÑ‹ÍÂÛ#ÏJL™ÀïFýò8ihCnzTÞ"J»â¹Œ¶ý´DñsσTä»'ó çP¹5Q_ ÄG\HKµo$i@>ܤÄÅÍ6¥¿\õâT¹G8 BâÄmG.õÙþù‹ùXÏî*F¬÷wBK0žhMn#¡ÔizâfÀT7‹;™ffË8Âç¡Lä -1á:µÐ» ¾ù´’!ŠÞÖ Âðhô€PU5| ë&œý°Y ž’ÝÂÑ""Ó:š•‰çˆ$kvwß“=eaÇ+€'8òS?žG¿üqv.â ï®v~i…'mßõ®¤”¾3úÒÅâõNmÉ¢Æ]Ç8š‚Žò3ëoVàÅž•ÞZ ý'I¾Hé# ðD'â|ýóX\¤£&¢^Yƒ‡¹x}?²\ò#Á±?ÝÏ{~‡ÌWúxd‘£Ó&6— îBED!1°Ïbx(§ -]YÛZÉBT‰è$‹Pª‹b¹ïµ~ëvÇÎ×âN7°­xjÂÆåã„3Ù;VGµ˜:6×<9CœÏ²·ÿI*C}T–_ð!ÊñöÖƒŠ^’]áYsƒ"tyi]Ó¡ÙG ëºU5SxºêkúX³â"‚H+áÙM YšÀæ>¦ ¤V^Öµ¿½Gs -+ñ£*YC=fUýe°`Ëi–ôÅ mäÖeBá³Ü_1í¢ÿ6úͦØÕÖê Ë`´ )f•ïš*˜ÓŽë?oRýƒ&Ü~ó&‡?V ËÌ3¸ˆ”ß¡­rÑ”‡Ê™ª~^þ¯âú¼oÓœTÌšZžgºtVœ•T‡Ta¬—9±ZºÅ<Äc,ó/BS•€çy—ú±ìÊ©óQÍ ¸ïMj¾kÂËþ¼ÚÔ 9ݱ°ÉXÿ«oD½i”½œV'mHcX_¦Ì'´²¡†M”Þ@ÉOeM<$ë¶ògbЂ-rìs4>Ð8ÔˤÂÝ47.O“øR˜‹¤se^ëÜ·0z=bvÄÜö|Ý—%V*Fsö»%W¹š–uJL8uXbéûžJ(–Ù'²ç¦Î‰§bÀ pèS^2FeŽ¬B¼l6k2›Ð³ÿ(›“º¨ ‘‹áª±R™8ê®´môY­ Ø×U´5'É®ÐòBt"7,>ë|’Ÿ}âú´ÆÆŠ?áÉ~¶÷8©àHGÙnãç^ÛÝ|·Þž„àש:ÈG4䙑=·wQx&SµˆC ߰·H i»aÊO@Çî9uÚ³Ñ[Òsè†Anëî˜âźþ/^cÝtÞív]8©ûå‘Ä¡V‹FçþªØ"Í©žC¬G>®$œæjÿtÃîÈ繾ܩëÞ]Fµšy`/¸™÷ ´¢™ó×" -#U07=·ì¯iyòúªA›¤~Vß´|åw-x÷™¶ul÷/!¢-ĽEŽS‹ëÚg8Å¥Ëù>;H"Þn×V°€D‡a“«ˆCr†ŽT‰¿ -›*œ ‰÷2bµÐÄ»HƒyßÅÛålZl#——Æ5¡^ª¾~žVµ«!Û—Ø RÙã¥PÚêïfÉæÒE·ÿX>ù³‡G¾Ù¶ì¬‘_W5oÏçÝo]Ùµ#˜·#·uôï&@pâžÛItþôèåMhN”Âæ÷0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -10 0 obj -<< -/Length1 2044 -/Length2 13621 -/Length3 533 -/Length 16198 ->> -stream -%!PS-AdobeFont-1.1: CMR12 1.0 -%%CreationDate: 1991 Aug 20 16:38:05 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMR12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /JUQUTE+CMR12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 13 /fl put -dup 33 /exclam put -dup 34 /quotedblright put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 61 /equal put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 91 /bracketleft put -dup 92 /quotedblleft put -dup 93 /bracketright put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /endash put -readonly def -/FontBBox{-34 -251 988 750}readonly def -/UniqueID 5000794 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÍÖP -½¥í˜5ö ÏÈð l.×j‡…kPôØ úëPŒ—ø(?ˆ±~M;Àö^Ãyy¬Ü*f˼[âõ:­ç-ѵZ/¿îeŒ¹_[³+ 5{^Ýòd tp¾ñÅ!¶ûÕÇ~¾Ùd¬Z+¾ÉسäŠå»:cÕEwK’+_ö°nÎCdZy°2}m‚3…þUó@-UÓ´HhX²¤µ Ì.ô⤠çHH<;Ï]ä|Å& -:–|¬p§£[ˆµC#´\zC)‡“Œkí­;r­c‘‹nZ E~ N¼ JR@ý|Mã^¥Ho¤=—‡ 8UÚ̱í 2X(±;|vzXÈyðTn¥@D@úe&—WƒÂשW+Ž]QvºÅ˜¸– ô®¿7c‰Á­þjü S³¬ÙÑhì:'ÔñÙ°…Ü-÷4l‡=# -’´*E»]£C´íØ9Ý`hZYª¤ŸÆ\Øâ­*œ\«•4•*Ÿ@ÕóŽ’$C¥Ý–ög @‹ÑØž5ô«˜âöŒ3fïÁKZþÙÈEØÔøà~¨…¡q«Mn!pî¬ ž·ïFë—8M¡úó;·¼€.®¨‡YtQˆòf³ ~yc?í”àU£!cçL½–Ü]°fò¥1=m FVË@FàðX:ðå½úû¿ ÀÕÀ*4GòÍÁõd4&\&Ó1¬?…½ËÇÅùíß+œœRSøçB‚ÖðS×у®ê^^¼@gҟꜻó»XǧXC³šiª+{—_Sÿ"ÑÜ;ßzͯ¡Ú!VƒÆ‚A³=¿@KÓ ¯œÁœu¹X¼ç_Ë þ,®'ªÔ¶(JQ|&Þu¸Æöª©Þ¾JìÊKdmxx¬ÛD[µ]ËÂ#{ÿ«X 9›ŽG îæ$2T‡¦—œ«ýuÊ꤀ô©‹m:.~i7x2y¬šQ¬i9 …Ø8(þîÂê(Še~yæŠÃEk±È˜œQ- fÖÜwHòÚ;xÐâøò ¾%jìþr:úñ½r‹†óﶤ˼£Vø ƒ|šZËQWjkŒ §ë§2c%¨Cx1g‰)€ZnŒªãQݼš[æÈ) y]ðݼêðš´çum–{üqM¶KóÕ-?Ô+ùþíÜ{“‰kÍb+›1Ñ & ÔÌ„¡JaGƒŸ} –%!V˜#²r;®b•2‹ÊO)ù‹‰,òà£ÆÁéƒD]Rã²ÁšŠ¦=†m‰v?&)”º©uòÑݸ=½$~6wâ䡽¬SkQlG÷÷™øoãH‚³¾èzG‰Ãâ,ø9P·Þ(‚; «2uœº¸š–X“è[åA}&õ e³oi`“Xe_ŠpÊJc‹$i$$¡L¹UØëRàdHrÇ;Òf+‰Óçà 8TzÔÞè˜'‰öííàÆAúª½Pƒ[ë› -QŠð´ŸI¿ Ý£/‰nKãúà/™Ö@VJ XÒéŠ|¿ƒ éü_ü‹Î;Ÿ¼|Ëáè!._1ûý¼Ü!ø3Sjñ´ Ö-‡áY~aƒ8M7IqÖ¹%­‚ò _|íâp‹/on™l]5~Ù…̱uÐQ8ƒ¥¾õ;$I&óPm?¼–Jü” ¼D¼#jWUÿid¸ÍžH »9áSh~ 8ð!,92ž•c0²!¾Rƒ(… 2[ñ˜¡Þw–|I·®ÔsXpÙº. Ò³¼¿§ ß]A.Ñ C4¢ÓѬŒE"f]DF†åhGà䜊ý‘ç'ÄŽ¿¨›Ã™YÆ4\® ¾šIÏ&Éΰ,V€F–+b5’)Ü«Ñ%Î`]ùPÝõ&*¦[ùÞ!Y^¶Í²PêÓ*ù Eße;®i5²€þõ¨æO pü2J5Ð_ +”¹|¾¤z)/¦zѯÑ÷á,_oæNÑàaÊHce(_±ÃKLð%¥3®öæV/ì«< ,ï7yàáNF}ïæŠIFD´Ûßúx͉NŠñÐ5yÃÒšáLbj¿Á}#Có%°3®c -µØQžüåVäÆÂeÉ@Qb‰skß¼êöýM¾rûKq¥"YÎES ÍëÃdßì:Tÿtïµ·öòe[~‘ O&¬vþFý¯_I¬êìÈŸ6#¢ë¥+@?ØÂ6k5LybU¶]?ê†=øñÃTÈÓõña÷!k©£t`Í”Öð÷ý¶lÓFe}`ó»g=­§d2h"àüŸG,>m¡.ëZz'R¼Þj\ÎÚ&CRÚ]qý$V_v?4×¹BÕÇŸUÖn¦#VφR­‰tÖÍþc­áÛøáTºÊÊÒZõŸŸìO“-R¾´C$öÐâüà`ªëœÁ -nrärIÎú. O9˜3™ Hã8¡z¦.Æßý–Ñ­áÜ¥> ¥  sêTûµ~1;¦2qqVh FÕÑHÇŒŠÊ¦pÒ\°çFïëšÅ(^­\ äkEZñhÔš„×dY€üšÂB©”{ ˆäòd­¥/ž&•Ž•ÈvÛ *üÔÊ_¥UÕm™+;-ivÀYÄÆèLüY»p˜<0yq7sý…³BíÈ|Œ–iÔ•Q«2•“Ç®ûh|¼ÊÖFPîîŽ Óù%\ó:¯»:;1 9Dû¨G žò äÎ6…¿¹ß`6δÇìÔŒÄ6ƒÝƾmS_è:ZÍ¿±÷Ù¢VTÍjyç—HÊ/ jDþfŒ‘Ø RA<UH†|b%ZÄÏ,n¥kø¾t~wG€:=aª’öÅ7X¸¹<*›Rq?à‡+°úÛhæj7Ÿ¸{بކé2öÑzà>gÏ¡¿Á<›û1 ×«î¿çS10ó¢ü*‘gì:ÔfÞŇV!T¸7$›ÚÀ¨: Ý(ƒ|€ bø˜‘Ã!~ñ³o¼å´—·²»¡ùð6ý• -nev“òXn¥n2ªR’åÙXS_âXA«pSˆTZAmJ•R/꿺q ¨Ä³}lqyˆ—jÓY_~y¨ aÓËyj:gÇj³+bñÒƒ^*÷³šUa}$ºÑȽ;?rÖlK僅¸wÛ(0U^ó´=“¸9ßwö¾[–•…†n²…^¹kG¸Ê"èK ¹C«C´&Añ¤­¨êÔ“¢Ìd̨!²gâÙVÂX~Å7]Îá¦.‚¦ °ÏƒÌàã–„Ø„M´j÷j­*¨‹ÛBÖ¬P¼0kK?±CÙl^ÄlÌŠUE-Kß·5NâY ~]Ó¡šn±‘0ü*q rðšÛËgß×pEZ˜Ìq7÷Ô—ÚP)V}¯E<ä—ZBcçÀ‰©ŸÍð,ံ.Ïüyá*ïÌ"tÅé•RwÍ»1…:¿ZlŠAè2Õ€WkóÛ½é3&‰JäDä!G4!—€ÊÖ‰¹ÔZF·UÎ+çA/gŽæY/¸U—cy>kŠ -RÊ ³Ï0›¤Ú¿ú¦¿Y7uGÈ%"7tåQ †d ÑKBݘ—ææP‚ä(5£¿õDò¥Ù½ %G -^Ÿ’D k‡à¼¤Àµv* -ä¢Ûhˆ8Ö QGÞ«_ãµÅR$ü˜!a–±Ì&¹u„ßÓÇìÜ›Ö}­‰°Š~C‡,Öüm–zÍEiˆU!xG¾n¦Iy÷¾Ø†Í¢k’#L®wA‰™!Ê - …›ÃäöÀ÷¢Af©dºüE¥¬eS¢äŸs†”J°—:8ÝØá½$Tº1›”?™ÞÓ='X9øÇ-ÕÄñ6¬b¼¦ŸCÄ%î,I -1¢&”[¦¬)Újµîµ’™” -#RpBÁò?]X$99Cs›+n¯ižî‹¹Á?ó‘#GáÓ*¹³>ð¼ä l`‡ö˜YAÁµ2BtÓl,´@ÛJþWÆvRK oÑ<ü/OßnPNóÀ÷ò°ìÁšÚL[’k ‚ŽyÖ…§êÕ°A<{´0g³'›þuUg“_Áª¾H:Yº>E–:–ªÿÊÂ:Ýýª¶\Õå ½@R©llp÷·ð2+tÒ‹õ¸»»œy~øÈÉRòôIPJô‰/Rëwj‚ }i"¥ƒ„œÏ‰4:ŠZKJQçÁuT`y2°!_qYä—&ßãVsprh[±qE&mQ¼2ÝKE ¥ôBE² tçipDmy󵜲"«¢ìN߀„1¾¿]×ùž´JèÐyL|,®Ä¶›²åýûo••sx:ž\¸áܨÆÿÿ^n>Þ}¨dW?Àõ&ø×6gŠp`©LOÜQàHÜkìÇG©Q½‚ÑvïC—9çWKÁwÁsúð‘4ÁWÁóÏÉàDC4û7ÝՀ߾X-ÛïÎ=–Ы5-‰ä¾²‹˜kçEYøq¾ä¢R!PAÐ, ¡ªDzà¬y[g[”Õƈ"¾KðäÝ-@âš¹» òñíTßN\\>ÐΞXµÞ£`˜T2_BÕþ–w>w^áp -÷4LÁ±öˆMï0[½8žÊXìÔñ‘Wý -ÐæÔ–ÆÊ”xþp¤ŒÌPg˜»I8ÎÄýì#ºÀ)ú`ìÞp‡¢dƒ©”Ì×°j–c–_6¿Ä5%æÜ AÝ=`ä@%®®C0B~èF®wŠ,¼ˆ >9€5¾îªó~_äPB¥°ë saN´£Šh˜;+Ž…%81¯ÓуóËà -®ûÌ iÃhä›n?H¿Ì=újã>ïÚo™$–·ÓÐ)äºÉÄ è¼ -˜UèZ»â~®$ M"—g¦ìè3ß“¾  ;\ﳎ•ù’ò øqÉkà ÈV€1gÄHCGÁjBàæ6©¨¡Q^ge‡°Kê$”_)Ó.ªŒoœÈN¹½ ^%–eõ½èÅãçzüLâ*Ôop­´sZddTº(©üiNÉúO_ u–/ù†EId‰”íLMg õ„Ù $/‡Åé$xa£€ÉkUY•t„b·>Ã)÷•˜ÈìªÛV†Â_R¢,‹øÝâ\)»H­¥PÔ_²I½œ¯‡”š3“MX!0Uáê÷X‹„Æ&Ä÷èŒ*V@dŽPöèÒ¿Ò¥hù_¢ŒÊؤ”L¤¯6 Ò±qïîARm¾¦‘S>dzA²Kh=¹†C:U 9#*}gÐËTBÆÒÆ ú $dg©Ó‰Ä/=´O©þù»¥y»Æ1 E¥”-1» ƒ™Ip…g¶>˜×@V6½­NÒý@‰Ì$ÜšóÑp™¿”­ýÎÂ`íÚnÖ)WôF’!yÙ[ÈÜHÁÐS¬©‰GÒê ² wŠ”AþXúèÍË”>ôz8à -ˆ<Äg¸¡7|éd*‰r®÷ÌDƒ@ üŒýKœÍ‰Lt÷¡v4¨a`Çü•åõ)>o'‹ïônU+F| Ž*¦ÅÂ/ÏGÛ¢¹uhðèøhuCD /%÷Ý éŽ¢²è-¼wøÌãNrõ]‘àxZ3Áð„"î¿à“/ûßͼ*í ãKŠŽ£%m¯šŒQF)åÎþŠk°Õ-w²¼Îw€-ÜöT¢‘@çN=± šäÿGàÎ RÉV*}’‰ÃHU`¶ûhzRÙc+¦¹vOäÊïSx•‡z+uIàtoÏ©¡}+ôÿˆÀ^ËÒì?8ÙÊ?kDazÔšüæqMÓ‡­ùÝaöû¼RŸy\½ØÏE:š’»ÒJ.äHÝñ¬SÔ*– -Ä·¾}êzvÑÍ홯'À‡t-»—(=ü‹lìÒ!¹â&¿DiÖ{ Ÿï–ÂüTOeš])=‘ÃD¹ó#ÑÇî-Õi'?sþK–™ÜŸÅmû›Ü 9ñT9½ïVÔzàw¦‚‚B‡§ÿ›cwvå‚6¸üÀ²Xiè·12˜²!ø›˜aTçm­9I‡Ï½‹–þ }…¼³ Ã!¤„-A“2éB¨ª -"æ˜ >r¸½âð‰SÏt3Á1¥âóÖª-&aåéÅ^z´­ÐÕä$‡yb¯Ì&Í6;šr%FóØ2ªr㔹Nt9á-Ĥifý¥h63/fÜŠ!}ïŠi!µ^ÜûhÊ…Úú¨Æíáz?TyêÀãá‰] ð®ð¾Ì¸¢óÜSà,: ˜æ®ûIP¢,¾Sj¦*Ã&o”!ð¿„à v2µša‹@–ŽW3{Ù¬“Û~ãmaÏv¶È>ïÝÅ¥Ð+‚³ÜLΦ’@ŠºöŠÙI»#Þº2ù‹ŒcÌ^ê³ -–ût™%lÉyP=–-‰Ž-à­|Í/XÔsÄ€© ’-Cþfë“,þTÑ’™]øógbÝÎü§@Ë%æ}ÊÌ´#¿í(&€*õÍG_Ä# -]O®h¨³°–Ô(u­ô9¤cZ³Ÿ^i|ôm#M¨‰² °Ì>†cC›Xɱ <õMnâ—Ò s˜ß5t$ñï½Fþ×¼¸ -M3vË&µ?HCª8çégõ~úô8²NÖ±ñD3íRÕc‘~Ы‚û«*çd’áí­ƒö&¹™mCÅüÇ?â´´•Ê]E4hŸo1¤¾ )-âní¹:Fߎ95ÀIåŒ##Ã3¡D7Á¨‘¯4Íꀶ p~›9â”b÷¥éa8%ƒë3„Ú¡)æ&F6 ṳ̀ðκ\Ù½H}Åi¶1ß{õ³Ñb%mÈkÃÖ„ä yš8s7IsøÏ÷}]ìó®¨4-ÞªKý¼š¾z.}Ð;\ÛWdØë «ó‰I×ù£‡‡s…˜9kƒo*Ø"z–+l8œ§CšBÈÚÖ•š5I?däú⛚fôÃã³ÇA¦–;¥hÜWŽÒ–ãdp’Øø3ë#¬´÷uþé1Ú}ä`ú¬.Sç¢Ü|à5ï£Ѓ.üÓÒÑÑoCœþ½{U͹٠(rŒ“`FóF¡ü¾[ÁcN«×e8²/ðTþ£‡cý°=ЫcÖöÍþ4pé]lP|ĘåJN÷Úi’š2Ð D¯¸0¤ªwÝÒ°‚…B_Í9¢æN®Ï3/×Õ|€ÎqLÈ7‡ -QÜrú꧱H4-_VË*º¯œ@T³+Äåsf “ žë8•BªˆîÕÝŒÛÀ(¯âÚc`ÃùQÕ#ùT-™ûÍm¯l[TbÓSÎ\ -㹂ÀZ·Ýéjl)Vò¼i î¿é“`4Î_;òQß,°º†Öþ¬÷5Ž®1ÇDÑ"wéDÏÂi¥€1z,Ë嬼`RCˆm5~\j3:ôªí –-Xýˆ.…å¥0Ç[±ÍëãGb®tŸsVuåóZ^*jZ@±¯Ai&Vì“øay\QãÄñ{êÅ=«AîóO¿¿~]Z* -,µ¨÷Ķž‚7°ß”I—ùAø¨—Þ {HÆ,ÑEwQ‚¥¡Äx$sŒÞ&ß$¹>6ñJ)Ãn–pi¾ª!½%)=çø{‹+¹Ý9'UPðÖ‰Á0^"iݳ<Ô~V…ü§ŠcªAߎŽ˜aÎM[þ¦s^ÖûË^äÂ%IðŽ'Ïqts?j!Þ?ï~À[ÊèØ™ÓOVêtWÐŽ; çhK*¾qÇ~Òèì§É³%. -±VÛ¤-ý‡‚- ÿ‘‰Ï.¼f˜"xÿ´­Ø, -äá­Y”‘Kî–4ž @‰FéòLÄ¥ïl’ô™…š”›FNç î°tcÔ- A JðzŒá‰R™k˜Ÿ×ÞǺ©åµHÈ°aïÏ‘”ÐèpŸÄŠ;vÀà -’s=ÍiÞÚ¥ü¦¿nÀã@¶¾-£µÛö>söòÖ.Y…˜K„×ú,⮕´íàZV.)íFøT69ØðQl>Xõþd”Ò€{lûම`;ìrÁNÄS••âe xÿ–§/ö@V®€<º[’" ¢ r­f%+%óÝ–õüÜ[Ó7Žâàñè©c•[èéKE*S¸Õð ñ¦±$Ðç¦Ýñb”·ÉNJ×ÂItüt–-$¿O“7\lþÆEüí" -Q"á#{ 9ín'Œ;ï µOZTæ« t#;‡¯aì)gµÏ䣅ÔÌïUMáÇæ2×hãQ™Z)­ñË!ˆ~Ôx0;os›JëÁ8ÅcÛJ®X½l0©Üü\w44Ÿ”F’X7³ F‘á°Y$ô‹;5 ûgÔܳ<,® ê#°ŒšQ[©<ʺâQÉÞOŠHOû¤¤àð]Þ¿@ëߘv>ÊËñnñ‹C7 õÜ‚ }^˜QM'F¹±5OÀŒ¡M»ƒ÷4I8lã15L4YÕi L«ÆòÿØȱãYÊâì–í‰w›fG|ó…—Qìì1–‘˜ÅtƒŒü… òVW~ò§É9Þ½ä-}ÿ+{5|¼ åÅ£Áÿ‘¸¶¡ Ïxkų¢Ç7<])S;Vk‚Æ_Ósv¾‘“S© ºôÞ -¸:ç²Zš3&'ó¦©4~­ ô„£MÙp—>å­xç»X´¶Ö¸!dŒA+þ´–^3êýàÚlÍÉfDôшÖò0ýM‰ýá÷ô’«fr+Ûà6Þׂ“ö§ª%Ógµg—¿$œC.Ík\œ²°ß[H1T<¢©´^ MéÝÚ#^Ù¢:‘ùIÇuÄn˜­%Áªw¶5ŒÄ×I·‡Ä‘®T3ó#š9IszòQL ¿{ÆéÆ¥@„†_|£cܦˆ9^€yl%ü0»‘îçã?ñh_ gÛú9`f[`ç¿8}€®È<ùóõ]-¾íúW„´Ž¬Q]PõGéD -ñá/‘ž“ù ·W`^& 0›ýÐoOª•· b@"“Æê ‰¥>èY)sýND_ªHËãˆâs”ñe/‡!ioƒY½¼Z…Ü^«KP@܇µÍAþK´¢®©aìÝ‚^ *½ñcà —8(±’ÇR-®±H‰÷jLÊâ»RÕ„Eìâ”oÈ‹&¥‹<ï~Ü©Ò‡¸<;0G‡l‚œÓ¿ÒÇJÍ…Õ`¶y: -˜ÂÈ þ;31>ŒqÝÕ/îmo¦nÖ™þŠyÀ60@H¡!Äfbg t°ô|çè/—"?gè¹¼ƒeq¦å%¸€¼—Ö¯ÎýÚüXè¢ú^µ¤_pUvòAF°¾(w`ÕlÚÔÛ9¶W×Bö°ž"…Ñ-­Î|ç-;áV™:íÛY+ÑR«‹5àšŠÈ’ÚöŽ/ƒ¼üÿœúÉ+?EÎd¾êU¡?¡)³2àQÙ¾9õ;CõQ € ·ØÎk¤íRŽþ^ÐÓŽj¼1Õ³HWløyHaqX{&å­#ÌážÉ9K éŽ&âRþmó¶ÁNC¼XáÏO>ÉhãâN¨®2ìd`ˆRÇéb¤±• °AýJ`-Á$t@n<ŽÕ‰î—½:*kçËÏe5Ö`Š¸ú@5{R: BQ^Á>I« +P`“¨È²À½Ö§á²p&n‘­oOØœÏtçzõG54NH‚‚Y$ç ÆKœ­Éx QŸhŽ7m¦E6ÛPXÀ^z,6׶cí>¤[=½lMá+Ÿá5¢&Á-ëqÆ Ú\2ûÚ ƒŒD£ú— _ö‹†¨°„úȾ+õ¹¥í>º ÇðÍ lŽs‚¼–K¡ -bb *}Âe—0.ú—Å}Žü}çsî#Œ$éàÒ×òE`Æ2²çßâÖ˦êžÿ\#°,S@µ;¾îïÞ÷h§ÓþÕBF5íK}´ðÁ¿8xhŒ Ûˆ,­Õ)QówÎ)N­ÞúÒãnG?Ià4‘cçg6\®— ½J†=ˆõ.)7™öPÓ3«=E¶ÒdãüjFá•(>Pó½ë L%t ÂÏE“¥qfýáohZlé—ûŸWÀIÜ°:J¥Õ¨vmAo–—€Þ4”q1²›hìÉ·¨ÒÞcâ.Xjº@[9ŽOÛ¾vËÔÈ‘i©íXSDojÿÞý‰’H3²Þ|U ÄÝÎ[È^’PŽSÂÕÏT<žcü}=éþ§WÙË*•¢™Så²7¥›1'á'3BAŒ½p½øßqTJA÷¯BrD} -tÞþ3wæ±gN ‡7Q—x9#R,ÖF‰cÍŒ·ŒÁ_Ðufƒº§OÝ]¶cAìcw¶©MÏxÁÜ -SzÙÉY¿P9°Zˆ+þÁ[¦åNÇ,׸ˆ€F¬¢BvåªYS¤dôSû²µÜÄѦý…Þ¿ñêÁú⨯Ñ×6yÝQÏ4Nptù>%ã ­ÇøhnU7¬ð" ¢.öÜDÜhìئtëðS¯WŠ°)S]òHÖs,®^’¿(úgnr‹#MøøèAú²™p¿YP®oZÃb3˳ ’ ¶0\rntuYà–Uknùe¸+þáKŸÃ‚±Á˜ò²ªŸ>AT¤²2+–7ËɵDZ%‹`u J«û;è¼W^H$Vwï5– ¥'|ì? Ž`MFœ>Ëó,ý!¥b2íÁs’üo¬ÏÜ?v*Z‡aàÉÁΈZ«¡x~²§_ä s­Eõ*˜Hg©%ÛWÐgµH€Û7õðîs8fÉKÿùÕ^Ʊ~â¯c‚R)‚än;@Ùó'çåM«C7ZôZ…¢x²¯_ù—âò ½ßç ÷[œÀ.9®ÝštÍÀÿÜ]è"ÜdïùufòäÌ·a™ýì$Ý!n4ëo¸?îɃxÔþ‰;%X…O*KxZ£U¥âE– -ª u¦ðÃïÐ×Rÿ‹a¶FÀr°*U¾ ‡ÕWõµ5e`®ÄGi¾Êáƒcu&rµñ’õÑ[Á¨rO]rBèÙR4ÍCÿ;òT*ÚH1¨x¤ÐQ÷6¦‹Sç-éWíõ;fÖ”œì¶½z?žá2ÀˆŒqóK/–ï÷0\†áÎ7ú1‡ -F_FsÍÁZ‹(GŽŸŒ¶½ Î FâÄ$4·^Ì2J®|JØ$É™¶7yˆá¯£¹’u´€ÛùÝ ûMÊâU&xžQN01Ùníˆ`%L /íFáÁ SÎPtц¼e#‰ÉE’i^]5 {• 8>«eø¨n¡Åådž<xy¥D´Ò¨‰)ÿJ¢E³AšÚ]Ì d¿.'ס;bžûH¥RÇ/Ø°Š„Áa„+~Z¦ðo«v:[!E«º£•ž CyRa¡™ -²ÔÝŸD÷Õ%¢ª²£à©GØNk¦!+!i²8¢Ä¨Àî®2˜R‹,Ã}ÕO"ØM°=JËÞb 9iq}_v´ì~Ï­êÃ)œñÏ$P ¿P3åRdÒ,1ü®ÊûÀ’78º/ÞVÅße¢«Õ?³òˆ‰o*¼©J´^ÂÕ»,L=ôS…8MÙH~áÕ% ŒßÍiÙdƒkrœŽY‰,i_ŽoØÕq?4µèxÍ;íû_I*[¾XÂnTšQÓBAÅNVðà^¸Z™`Æ– re}éæ›gUBU+‚ˆãi°7ÜI:ùN¢ÇÐÀ<¨Ë/½|¯'=¬iÛE„×ê+þ#Þ < -g¸Å`’P× "ñïtÜQoå ‚Êü&5í)˜¦÷”˜—Y×FÕX)pV @+/Evg #*X‹¾G-£I -ã“ÒèÑ⛃L¥¶Î,ë=´€CúV:Ã’CH?CÊ ,~ ›âÃLiWt¤[´ýŒ‡Ã1“¨5>I¬úýyéYy*$‚ÄO º+"bþß9ª=‘ -éìYnXö+ XÓLø\ûw‹#J4›è‰š€Cmv7<Ee¬|õ ¦ÓQâêÙ“Ÿ¤¿¶ùÞüî(¦ùLݱp‚GÍŒ`ÿfÍW»W@¹ØÆOÞoÇ‹Ô"«3¾Y»ÅƬrOèíÂnêÊmUE œÚMxMº`mj:Æ -€ ›9¡0;E¦Ô]¦‚­ÌE€µÏ‚™NõÃÔõ -“-öš}Ioì[¬Rá@:ÈE‹$eO8 ®ã@~ÇiïG®Nv»¯.C ˜/6é"lmÀª)Ÿô[„{ tç84¸níß}°tq -ÍcŸk(cZ×Y„ÍȺ¯ÆØFéèªÖƒN½/Þ\/êíÖ}™(Ì0 -×Yc ÎàÖ bbÌpwwZSñP@#3¥KY‘¨=û­‘Uíí*þؘ¤sJPÎ÷Û9rjԛѶ›É÷ÝJHàŒõ5;9÷²]å½+~Q’µWoèíðncÞØdXÏ9ǀǒ’­üþŠÈ(CÄZø½2E´–ïÇÊc@ Ê~„EŠ KxŸ§cÅ-è‡p«·ð³¨jÑ£ïyå’®’.‘Ìòß -ýÀµÿq›œ€A;Ù´¶XS|óˆÃ ø ÎÚWÌüPïM$qHuoŒÅ%6h#€þe¥Ý5áw°ó½µ ™Ä è\º?¶”ýSñȯ„Z.zÜ -­Š”ïŸ!t#ç¾ÎÙaÖÞù’"®i’é 3S„Îù¥Åô¸Þ÷T(Òg¦Ý^=?N‚½“*Bå¼(Æ®¡ÅHÂѵn;¯ê/|ZG)üÒ-öÇ_Fëõ ç¶x rð¹ýß‚në4©"šˆ¥Tÿ‹Ús6ÔÞÀ¬1žIßÍ|Üé19ÿƒógÅiTÃ[Ä¥¼ƒÔmuÏ—;›µþCRôÔ\.ˆFw1BGý‚…²Ñ%ÏÌ00ÿs|«þ²ûòÅ`$tGrøÄ™vòxŽ*ÃÍÞ˜ŽË,ŸÝQºÄÎ{QŽEÀ„Vz«¨»“ÁO(”¡Y½ô΃,[K Á+¨0©°Ò#nÝRÀ˜5àªÈŸ1ÏxÉ[ÑÂtUO‡ÕO§Ë¡•‘žÌ;)r(Ù_Ûðkæ7͌Ԡ -ZBx!ƒ‹ƒÅz îòSo(dþŽ568ñ4Q¡XÓ¸\^%QÄ©›é>ûέ£Ü){¶6T’^ýÿ¨UÿËÅ÷Áh‚´»¤òaqEƾ.4a`øο°>$úv¼@<Åý’·r&ž¼ÚÖ"ã'Àª6£‘‚¢n*Le9kŸ7Ý“Ô ›ßáðoÊ*7†˜_µÌúîØDC P¬«HåbξópžÃ­lHα,Ø`Ûe[XõÝ´’2¢\ð?—·"•suRØ¡$^ý‚ŽûhÝd‚jÑ–é¹Äðlú5Í&¢¯Ô9N•ŠQŸÅ~Bv­\ÏÞGùxÁš]ÏÌ[né[¬,CöñþÎõ1½hRêV”XÔ@Œ|R’á’£ðh¢{îÚÔÊÓ=¿ˆ9>“Ó=´¸úIz¤1Š§õ=jYœµ55C¹Qà¶J€c jœèÕTo[ù=ób·-Žs·§Y˜†l¯1‘dÉɧJì³PpO±‹³)~ù3PŒ§µ-oZxE/n}X£<}û¤Ì\-|‰>j}ƒTLcBÇJPv]Ž<Õ÷/á¼»:7ÿ' -ª–9ˆœÞÌWåj‘ŸöCŸŽv,²1ê]m(eç÷Û/È8ô£x½ÜºTí[tmÀË#º@ˇ}"éðê§yuÑ⯛ÚudqgmÌÄxšÞ$‚—¨‘°aoÛ’œè5lnæGÊÒDhsÐ2ŸÛy5€ó4Õ´Û¹T‘Ë\"kš“ƒµ?ôö7¤¨ ØÇ©;AÝéèܱ}s ’piËÚš0WõRK7&[Ëß¹»›ð—l¼.ÈÕjCÿPÛ¤t YŽË,o}rèKe§º -¤¡œ¨ÏbØ"ƪ¸F÷Eã#öUÑO3´Qg¤±û@kÖ-¦¿œ"ˆØŽpíMQM+²Ý";ÄÆr32ÿáFM›¾Dåp˜ÀÀ@qÞ~Q¤ÒrÑ{<*ÀŽ<š(^¶Ä2ÞT‘-Ȉ"=œ¹ê7%îïÛco"nðtÐÆ5××Ϫ®'c>ýÑveÇ™5ÚQÉEñ­×¨†Ç‘Ö þ£Ô¥ -¢7aÝÿÚæEó¨iá’mÇ};¸?öj]ÆöKªeÇh†áßÎÿ¢;!~>c²h8ßèl);¿¹$6Õ/Û𦫱bÌÑìb(Æø_Îî™9ÆgîA˜`†ZЉ’0HzµÁ^rƒ›¬±+ÄËKouƬzóRmoA/G¼^hѽ á¨a0âV db‹Ö)=³%´'ò¥Á»s¾9NÑUñÕÛ£O4˜‡-ZÞ=[[Ýs?ß½#.JÏO;p¹î‘©†.&¢,JH? ¢ó;‡§k²jÖl\˜‚ZQâ ÷&¬B7ve¥„1fÈðÃVx¸C„ÿ`pOL·³ø0Ø“&¬g5¥ÂÌQ|Ûé‡î…k#Þ@žeGêgµÕ¨½üù‰c®bÉßD–HÅAÚaôïz-gìÙÁ‰÷~`wÓ°G$:Ñ÷=~‡0A’»A$ ŒÎ ->þ¸ËÝn²°ZÊ÷‡èfÁ‹ã,Ï}su¨Ž¢©*"xJ‡¡Üx‚Æ;D ^ ‹!÷°û „Z0-åÉP1Iå>ŒÙ?R]òÈÂ9®’‚Üæbº£ŠX>™Ž×K¶µ>NÄjÇV˜JhÁ‘¾Êz‹7É­]zVYT4d¢\"bâèÝƱ¿Õûe¸w¯ÏÏw¯çVLŒŒ;ju‰Žóíl[NîðÿÙƒLWúWc.?ƒ|b£0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -13 0 obj -<< -/Length1 1401 -/Length2 7398 -/Length3 533 -/Length 9332 ->> -stream -%!PS-AdobeFont-1.1: CMBX12 1.0 -%%CreationDate: 1991 Aug 20 16:34:54 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMBX12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -end readonly def -/FontName /PRPCHF+CMBX12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 44 /comma put -dup 46 /period put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 58 /colon put -dup 66 /B put -dup 67 /C put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 73 /I put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 85 /U put -dup 86 /V put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 120 /x put -readonly def -/FontBBox{-53 -251 1139 750}readonly def -/UniqueID 5000769 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÍÖP -½¥í˜5ö ÏÈð l.×j‡…kPôØ úëPŒ—ø(?ˆ±~M;Àö^Ãyy¬Ü*f˼[âõ:­ç-ѵZ/¿îeŒ¹_[³+ 5{^Ýòd tp¾ñÅ!¶ûÕÇ~¾Ùd¬Z+¾ÉسäŠå»:cÕEwK’+_ö°nÎCdZy°2}m‚3…þUó@-UÓ´HkçÑõ¿®\Gnæð^±ÒÊë&™X±”R—³üÎÔ†<½ ×ØÿÚÍEKNz—µŸçpæwQ›#ÖÀ„$ÕU$*Œ ŒI®ó”]™¹™§œçH®kýæ#ôF3qD/e#¥öÎÈ9§À%."Æ–ÈÌ­äV€åq‰ÐùŽ _•^59p³’ÏS -hÌV°]ß¿ l0t¾ë9ܼ¢r¦æ)ûzê,[§ºå {L¥•ßx 5)—ì>ådß"Ÿ»Tsõè̱ÌSé§â™¨ê¢›iѶ"±ðÏüX)Hu–ÙPËQ pÜŸt;ëïDö®’úÎÅvX™œ‹ð`a`9bÀi^¸} Ú«eeW Šf é®ïŠå_q¸¼v9My)gäØ;nŒ=™‡ÕåLS¿+»2…[”ds´H3½x‡=øäÇæhÿÿ%ª»¤tK$ÖË‚${0RÌ]fóñ¼ø¥j?´FêX{ؾ0%vRÎà5bŠíßØ(;ZÒ‹€­$ؘ— -È¡ã>T<äãÄžæ!ÅÎ>Šé0øcfɈ``hÙé#–ëõ³Û Eü= ÔpÇ¡M’»þ'½t³c¨Ž3¨é¨ZÃ!ç=Å+3;‘ pÅHs¤"-fà&¾m,ˆ•ŠpÁnå ð «—g^Ži"níP]6Â!¾ dtBDKð2_‰›¡^›Eù ÷=ÃIomàÝD¡yI¥(fÇ7t”¾ÿDA¼¤ü+ûryú)8ú›âÞv/ ÔpP‘H9ÞåÕÒ¶?ƒè§•83ïâI*01O2⽚u*½¨vîø†ñ9îÎ)ã &¥§rqÈ”P¶ËC ç–øÐUÔ -‰+Ìyá÷ͤ‡ÒÏ]…k¾>¨Üûã TÞQc@–%ÎPð£eœ ’LC*öªÊ‡¢æQ_ÓìÊNJ<F@–ĈÓuÀ%¡ŠýŠ8û%6g~±e0t(Å#Ø·¦ã™²ÒÊþ8&5qUûáVÒº—Ö>ÂÿÊPcÅJª³´Ï;ÿƒtñ̵€‘xWœI£ Ÿ9Q ]|ÅÛÙ¢Z\-Íë: ‹ª·¿Î_]áhÖaî)Êít`UTÉéLL.oü”­)0VV¼RS?Þ~S´šp¤- á6’6@? ñ‚à1CÃ"ÔmÿÈÐU¯j€Yºû‡¶œƒSÂÓÃþ¿’(ÍñÞ™¨ŸþÈËܶÖø: 4>J'¡XäÊÀCˆò‹yÒŸ‘$`èH#ßr8ßúábHád«Ã¬¶ÏbF³øqûÈ€†0PVÛà4…"*»‰š_znsÍMæ;l¬`=­ÒGå›Í)ŽN7¯%á!ãÇš9M8ƒž2¢ç«yckˆº/uë­ˆAþ–t5»Lýš±°Ë;½«  ­¾ t4@bgœYЊäB3äï¹ëÃ_¦¯û°é!qò©è6ì#þИ†öêÁ ï‹ôÔ{´œÔnøLXU’‚}Ñ¿Î!­à¢œ~Ì Îö:æËI!}2ؽ[*ßEd4ºT¯‘ËýÞN¹6S‡D'+ξP…ðõI(FÊa§×ŒÓd¢‡ÑEÀ£Œ§§ X 6ɹ&³¹”xuÔó±›GKlB´Z8m0åYN~/“ÈÎקœÞü´8œ0ûâ¡‚È%5ÐAšPí - ŸMôwçŽ=ÅuqFÒK!þxÖ<'(­üãŒÈì5ûc6ë$65ýeµ®£séJÐ.Á¼Â¹-5¢þEÝ~2a[w>6ÅZ²€˜rèÏAÈ44èƒèµ„ˆŸU ýD󿶟F…£æq^Ù§‹?œ—ýÁŠ‰&Ö‡±.rŸèM&è÷›¬QÊã6é4Ù»ˆü=éó?ñÏÀ÷ê©podŸæ»Õúßâˆ=„ÈTá=º»î¥6£ªMé¯õ€Ê*h¸Ê& N:³þ »ùS ¸Ìi@â “ï•Y¯#ÕJ;rspÕÓ„ºÝ Awî -RÜûkJ›ßð¼o»U™0Ðî I!•uõJlf ‚‘bp¸%÷'þ˜­x]‡SÎ  YõÂ1Ð_Ûß46´GËâ@«O$·¡±¥k^0%/ð3ËDÅz(½âÇ(‰ƒ­b¼rq¥,«V¹ëM ÎTLÕ’ûÃÊ0™²(¹OéÌ=‹‡ -“&^JB³oX¬d´#‡MýɈ‹(&ªôã´|ÏÐÛ9ÇÂBè{ÑùÞt7é1wˆåaõ‚éÀ&—8¥ ¤ŸÊ7¡Z Ŭ~ ‚“Úßs`ç”%á®6UìÛBmÂpD«p:èb×<Þ¯Eµ}5µÒç|ñzbæðwG´e1Þn‹Ñ)Æ´)þ‰1m$!O ä–-û®.)Úvâ*:@¢©Äëþ&ýÅ ’ž?‹êátîPè‰.Â>Íwüí÷ÒG‹Ö -Yß‘¥P:Ò€ -÷ aW¤}?Ž†$0ÇòKº™ž,$úÐÎj°¤ø(hpŽL6°*Šë¦áýͤψ.ù‹|¨$}µÞoƒˆS¨üÖ×ïÕã¯M ׬cF5.îm`z¿œ­n¤u߆KŠ?ToXú”¡˜/Òïî 6?›Yh„f.e䜊ޛMô•íg­6ßäZW̓§üÊʨMω:¥Ëõ&<§¬2“Š•#)"Š¯XnÉ!O‰ô•ýÎT - 7¹¶T†5­nþ±}®Œ÷¶¸}’ôìj€Ÿ¾“3×±³obHv\ê: -Ùý1ÉÌ׫\ÇžUÀÆ;Þ)õU¹CAUÍšRå¿P©i”Ë+'ÚøêžÏuÄï6qHd¨µcFþÍ*v9s¬'zóir»“MPpÎzb†*żZóösœÿ7pîd¬|Y2C µ²¸Õ]•bUêN/òÃð±L¥NSb}½ÖxÁW­XX‰F--æH©2Z¿¥€KoMo¦Ýß¡¤Ë[óº¡q¯‰?¿úh·©ƒ%÷ªtÔØ-1bý›â:§ðåÙË ÄÚÝGY M@ùÔl4ê¹z •­Dœg;ãÑ!þqáLÔyl4¤!6¨Uºo -=DÜô•HøíŒøÎÔÙäN½OR ÉÃzÀ c쇯Ó7¥2ŠŽ£g8³¯ã¹^rÛ\®UŸ‘­ø^ dØîEÆZeÇB‚‘mÆ5²Ž©µ(Ä:¸•öNÈéçbyÌŠóÆß v;d÷7#nÍ*¡£Nÿé2§ÖU»?ö€¨B£$KÝé’2ÈŽ(en duAiN¶rÈL2ØÇ‹²¿LÊ¿æŽA,fØõ@>bƒ“µO>¹L<`²]1å–'Çö”\¸JÌ=p}ZfJ²æ ä”ä«#…sýš7ØÒÖžM>ß`}7 qYa Jª9ÃÃkY¤äi“0©ú3¥Åv’Œf>^b¥Nñâ‹ðfÚ®J9´#¢O<ÉðÐÏÀ¨×{ nŸ‰;š&Å¿=!èT¡Äx79æU¨Wèc8lÈ‹|U+¨Ñdâþ`ÍÉ:2©Ëúêèh~³Ö¸Nt[$á%ôòݺ8Ïö\3a¾X»£¨²ì¶* (2,4ÖTÛ,n×!Î-¼ Á™sx|5|b,Ý##Âqt­)ŠÄ>•µJ е÷õ9p›§‚³bkì­ùó¢îÄ8wìmÒár¥šÖ¾žïpì®·WrB1Žàâõ|(Ø™ ƒ¿¨+Æý #ºž‘.ø.aýaÇÕ6çhÀpí⧬zç¾V3_¸‚K’Çšˆöa™’ å>À¬’~ œQjç$­ ²ëÝ -MÌðþA~&'uµ'¯;,ß -Ÿõú¸ÀÈÎT¬7z¨ÓÔ’‡v¢“‘4ròiŽ±‹¨DËDù•”v7*9õÑÔW”?·¬Ú–³ãA…‡¢m"î7öc\~hâ¡<ˆáÚR{Û6¸»x ‡ìÓUjÜDÞup—=ñÉwÅÃg€þÔ¤Ž¶lpU8QÅ%l¾÷ëÐ23ÕNeõˆäZàý)t›±AWÇcû3ò¹t;š’ù9’S¯CæóÖtæd·nÈÇ·PÆ…Ö‡P_QoÓÁý1=Ò_@“}y˜U3*7ŸüñˆÏQÀÛ–c3¢Öå›\Nùó2ªSzí=V/Ü`¨Ub¶œÚfz=JJ,ŽJP2óú–ü6ó3O2WÀ÷‡Í_bW’–éÜ:|rf] ·hCÈ‘`f³ÇÆƃ KãËÔ„~£þ!ç j[$¿äUϲÏC1‹óØ»¹´¹‘[u\¥ã"ˆY¢œyúÚ­ðë -Ë×òhLùù­Ø–½ŸêQž[ÌÉÛK±sÕS›©2¼Æ›‡¬Ìé¥Zij1Ç‘ÒA’ª#<Ÿœ¾]¾K„&i_‰XÐvŽ‡d‹88LÙj-„¶m /ÇÔŸš(27­ŒÀ·ü6X a'¼²jo½ôÏÄYhJëÇâ—HM»a»5Á[¦ô;p†¥ÊKokU€tª¨#(:?[ÔàL! 7ä/'@}À1¿L'¿ŸÂ™Ï—¢ usš‹Ù–Žæ¤Ù¼«Wucµ(‘©°”ÎåËè¬v®‹*Þä@éO·ïbwê~º©uSÃHtlø"ko¿G÷Ñ€Æá¦Ô8δÝMTëŠ*~:&:s–avå+TlXÚüK~¶Õ\pHYWÂýhšOÑƈ(å«2éð‰Úå&!¡ï—póݮƥâ.ŒQI¡1í£¿tÄâ]¾ÙÙ©ì=ª/k ߊ‚çÑ'YÁÐ ÓKYÅ²È - Å·ÛØá¼Óþ‰7kÍŒ“´ãvË^éÉw1eðÍ’B(íO½KQ±A8ðéØ,»žZa:úg<º ûŸkœR@®Š¶ƒú>‰5¯¨™»vT|‹¦õü‘¡0€R°èa¼¯…:ñ/ì”PÆ‘êr4„Hξ›Î“ô‰bÞŒˆOmœ%¤n| â 0«›dhäÛ~)£Ò¡*}›ýw0‘wÀ­÷yqYÍÐÎÝ5ž‚ÂYââK:±möïieθûSâA-¤ÿpË"ôwаäUcou‘2BÔÝ}ٳ͘ŽÏÔ7ß-÷uÊôá:@?èÅ-Am×ÏébŸÆKÊ°Rc›ʾ·¾:Öbð׫‹àИÓdÌK7&3,‰¬µ™€œTí/¿:ùI‘+áYÝñ„Ë=;®Ô›61¥ 8/âP¯&j$@ƒ¸3Ÿ:yOu2nFWþá"áOÿþûà0JKYnnL!Ô86Û¤Oæc%·Ë#XO†ƒúAEÝuÖ½È?·P›H(‡\eÏmh¹Ã7rÚi#.rš¤ x†ç• zs®_€~8±oJß^'5!¬-}gí(‡LëMâÿÈnAÉ]YhVí§‰C”beîÓä8,°?¬ŸÚ‚´è­Å‚(¯ÒÒ¨|¯¯šOçàèªLò“´#g…Þt40D Ä¹7 üC’—¹GÌL¼_Jõ¸òËrJb ~0¥ŒÆ.!­miMç­,^Ê®ªògP Dš~q¾¢k×÷¨À7÷ô±ÀíÇœSÆ“1ôdF^\¢EãóÞSx/.ÛûC¯ÇÒb+oƒmo1Z)­wl93틯màW¬ÊØÀ@„¡ä>ñSë´<ô:\ÖC¶®çg£\LÂ4S†ƒ™jj*( -öÙS·ÔÞ²åMï µ!vu%Oÿ;›Í -âYK"ðb¯}n­L3:ÏI9‹©þ(çäˆ ×]z -½Æ†ÿ¶-™<ïmìVFkÚ³£…9Ëÿ’"øfžk¥ŸtTlr^±P3žS½¬[ ^!=9Í'IN—½nð~`¨=£XI´¾ÚaÛ?OtµŸ4Œ†0Ðä%pп°ÒpÌÉÀÄAÐɸ¸]'ÖKömîÄœ•‰$pÀP$\Gã*ŽLD"çU•™Jÿ²þÅc±®Xoxª5æ}4{&òjßÑ »+=/-Û6=úk^NÖ#ç5.ØÉA"Ð R(±™¤S9]Z”O“™Áòs¨ãɇ˜3) %¤ŽpµZÝQþ!Jè¡ÎçI‰‹ÂPPk©g(.ž X_H§_è>#DÒ¯4šœ²,½¢Ræ£úÎf?Eo¤@´Ñ1[r«Ö“ÝÄ«ûöᣀÙ„êBdXølXˆò(¿^’q‘ƒm³¤'Þ;ÃÏóõkR†¤½§›c1‰Û íA@©ê(͇œ¼<²æm@‰ ]tB¦âÆ?ˆç¤€Lü‘p¡¾˜Û¤§BјÙÎû’çïz ]lÎZü‡Ùta_‘º>,ò'Ëëõ _8æzyr¹bä1:‰ïLµn¾.# 3h‘ËÕ¦†"BnAXqÊ#Gù_¸Zd!‰«åÛœ?|R6ˆiùž-ô¼'Êsaià ²X -H ÖªÍ{= y=ÓP›MÒÂf¥†`±@°šìÔâCd·ñt“v‚4fêæBv³@š«¶ö$pËßO"—_8OõܦßÖ)3¯oö:F“—LT.sàíÔÈ]9Êvgö—ê‘ñ†0_! -{>–t#QlÉ°Äæ»/â,†fóGd¶¨ÎŽ¤iòA¼>Ο_ñäÛSáÄ!¥Éûѽ†Tò””åÙ@‹EŒ+Ï©‹süÄŠóY^]Ü·Ù‰ì &¾ñ*$ zlEü!É‹âäñÇ;ÞKM@]Ur-„·vaz0!Ï+a]´§ž 'Z÷gU‰6‰_4ülÝr“ü·>o|ôÛöÔ#lL±psÞoP™3æ3rÞ"ÅókÕB*þCè­Ø* ¥›J×å¸7¸J Ó*S)ýGBa›ýÌöòŽF¤3ÎGL-‹ -*É¥s -—F4~:²2hÙó°/ø¤õåÄ8[ic€'[ÀŸê5×NIÍhEô,Ô¥,™>k](&N„2㞢5¹ -»pŠ”¨"ñF2÷g/¯z¶qÓ+§>ëJQÕ´¢òôÖœwž2Ù-/ÖÇ-r™ÍS´Ø|È7Þ“‡ -á´X}¦éÊ,“t bWy` -oH ßç™{“6_Žˆû¬”»Z`±={›㤽²ñŒÒëj%õx:†½! H3Í ŽA#¡oMÃ)#‘Ÿ3u*UùÅ'«Š} غ–ð%ãZ„#·€ñ|ÊÐÎm"=zñ®g’ÿ„ZÙâl3€ÍÀ—žÓòdw8+j•^|”MŽÖȤL§¦F ]÷ÞeZ|¯ -IöJMƒäWÃãξXøпrÒñKÕçÅ´·‹¼ 3†Æ«–è¯!àž.x±›Õ£r€Ò tPò\èçÑúrˆrž°û³Â2gJ’íø©3¥ °SƒIɾ’¹ÖcΠ>Sj¾5YðA>ÄPs?,P? sy;›¹æ2€57ÁÞ Ïµ öƒ-{ÈZD0Yªßï]Ü[s\pžx'˜"n½lðcœ¿ñ5V©&Ü”B+±½ÿñ”p¤ÏïèŒøÀÊ”SƒÆwXá!U€* Í;ÿƒPþÄé-ØD°Í¢ô(Û¥P§@ÆUåzdÅnBÀ\Úu„~K~òœ9(4ŸkK‘î–º¦A”ÞfG"OÛ³/Ža'œ~-ªåpiá.ÖÆŽÚÕÚ³ò,ú8Y‰G»¤]ÓÌ}¾¿(£…?¥´ºµx\7+s¥”ücïô6")ïõï×Àöu‡°Úy›9½k‡ŠhLî®%˜g´Îä¶=ÙÞËÞ:ˆ©Z„ߦW¥.´´a»¼dœ™)“V°t°êœÃnÏøÄ ”¤Yñ›“K>’¬Ç‚VfÛø›wop·mOlp§XÒÀý#ðù Mùx~DJÑœŒ·«û‹[üÝASåE4 -ªDݘ#l¾@Ʋ„'/Sp:WÐ]ÁiôB»ÎA,ùŒg`€-Â9 ݈–\_\ß7Ź B‰©$?Ûõ•É›:ÇÛ ·´º¥oÔ-ôº<ÖÉaa=ÅX»y íÙò-å $IhÖMô iEÁT€á… /õ±’¤ -ظ£‹_(¡s‡ª™ÝaZ©1àX*ñçf뉗°x ) ?ç%åÆÉy]ýM¨Oño¬ìQCE¶*ƒâqÄp I’ÍÂ麃¶Dó-°üÄ,+¢¯Ú~8aÜ{œ_nui+üga¤qAŒ~\C0ïZÕןJ37¨'\1¶=㧫{¥= -ÖI­¨RŠ‚™ù¸ohŠ«ÆËëò<˜¼.-¨%ëMR'@Ü‚óBd³3#ÊûË•—’P+Ä¿*Êû9£l]%‘†ȌL‹ª7Ѓ~?}´,•ª?…ØúðA«'Í@Ê|ãÊóÙœ\Ô«qs)W¬:šˆ°X3†½â$sJÂX- ÝŽçHV´Á;¬Š®OrtW˜ªù€ww©Ôc©÷±ö?^Š$\e1k ²0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -16 0 obj -<< -/Length1 775 -/Length2 594 -/Length3 533 -/Length 1902 ->> -stream -%!PS-AdobeFont-1.1: CMSY10 1.0 -%%CreationDate: 1991 Aug 15 07:20:57 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.035 def -/isFixedPitch false def -end readonly def -/FontName /MYFBJI+CMSY10 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 15 /bullet put -readonly def -/FontBBox{-29 -960 1116 775}readonly def -/UniqueID 5000820 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÈÎÙ°š'Z²1NÏ‚“R‚oN—]ÎÎÇ+,󡈙ÌÞÙ5Ð; lƸ<ßO#¹¦ ´™v¬32cÉÜïͽL„í£nt‡cMŸÔZô£ŠV¤A,; ¯úëq{ðÞŸûz„`¿GZg°ÇºW¹Šb3ÙéðÃðÌk,j›¢:ó‰æßÿNþÃÞÖ'lkäp<å7%–ô탴›¸só¦9ÎóV"›dw “?ï;¸+ÿ§÷Ug±úMs›w/gNVu4ÆÅ»ñÏaSr¾ ±„r÷ªX¾Œ!m½ßÌ -†¶Ø1Œ¦â,Šñ;T×WoäÊZzù^¥ÌNÛyÀ«fŽOìKZžµðäÀˆÍŽÌOëK@ì‹Ò˜ò3`t¶LCÃÖ¿‹ÃÇv¬~·œ•#,ÿ=ÖŸˆ×Ðî0!ÇKû`¶’D“ª¦[úpÙ“ÍÍã3$‰âQ Z—µfå·j²ô%o˜ È 949ŒìY?z4Û@ÒÐá¬Mý7£F-[ÈôEVj8ƒ|©„gjs 0ûSaÎÅs$k]-Ëš¼»I¡€ðˆûeBÓZˆÜÌÙ÷}‰T.íÕØÚ¾â©[g*KT€’uxd9ÊU3Röã_ 8ýST—þö—rwë ÍKøãù0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -33 0 obj -<< -/Length1 1546 -/Length2 7957 -/Length3 533 -/Length 10036 ->> -stream -%!PS-AdobeFont-1.1: CMTT12 1.0 -%%CreationDate: 1991 Aug 20 16:45:46 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.0) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMTT12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -end readonly def -/FontName /ATVUDO+CMTT12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 34 /quotedbl put -dup 37 /percent put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 56 /eight put -dup 61 /equal put -dup 62 /greater put -dup 66 /B put -dup 68 /D put -dup 69 /E put -dup 71 /G put -dup 72 /H put -dup 77 /M put -dup 83 /S put -dup 84 /T put -dup 87 /W put -dup 91 /bracketleft put -dup 92 /backslash put -dup 93 /bracketright put -dup 95 /underscore put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 120 /x put -dup 123 /braceleft put -dup 125 /braceright put -readonly def -/FontBBox{-1 -234 524 695}readonly def -/UniqueID 5000833 def -currentdict end -currentfile eexec -›œi_,+õ`ôÀÕ"WºÍÖP -½¥í˜5ö ÏÈð l.×j‡…kPôØ úëPŒ—ø(?ˆ±~M;Àö^Ãyy¬Ü*f˼[âõ:­ç-ѵZ/¿îeŒ¹_[³+ 5{^Ýòd tp¾ñÅ!¶ûÕÇ~¾Ùd¬Z+¾ÉسäŠå»:cÕEwK’+_ö°nÎCdZy°2}m‚3…þUó@-UÓ´HkçÑõ¶gîØ_­ã -²ìN/OçPÏšiPdXè‰baÀ±Â“¤*¨}äéøjLœöŸºq‘ø®Q -L¥‹o=à'öro2t=Îs•ÂÆóÂÞíÜúŽí}¥mÖ¼Þ3Ÿ÷¦”vIä2^Éa²ß­Ò­Fñ‡ûÖ>ìbÂo´jfj ˆc‚Üë©÷ÎÝdÝÈ¢ñ_ã@v dÄoëÑôÜ7®Þ è¯ËŽJÚ - TºÊ[ç(«‹ó/× )ªò}eŠhôT¤¿8oc"MÇð¨bOk†1šN/Ñxõ–ó² °2ê(ÁW¦ŠiúÒ¼ˆˆXÒ(l Nða¼ 1Eò£~¾À?QÞ|Ú4Í—~°—X³¤–ôšt'žóÆ2-ÅIEùPbÅózQÏ~¯Eò³cK-}ì;)ó[fÍ0 à–öƪ+ðLJ“aÁŸêXœ®ÛXoÙ¸ôß2ì‘›t4Õ»å~‰.°8V}õ¸¯ Ú^’Ejó``’æ×ýÕ¡4<=ŒØSÄ…Ã7ÄH®¦O1ø‡'V–£'.ø†`¯±©2${pÔ_ì›uƒM¡oé¶Ñ—}lòQVŽÆá²2 -à«°Û…Z<“Ûbgß3¾4£E¨4ÀõpïÄæ­›ý5?$ø–æ/¯¢çμø“xAµA'‚ sx7ãµT{Ñû`t`¯Z[w".u™ñÝÏÕ¦‚^D°¥âÈò3zj>#Y$(µxxkÅ'ÎëàGŸ/FX꣪9§þ£ö±­"{iz–`Œ@¿jàìÄópÁyÎ:  RŒµQ3kèoÎÔVékõ -=Áʹ:T»wЇ·|…ñ¥yBi;9lÒWRxý1Ú¦@g‘5\x8šëóúN)vn9oŠC´¸OQT~=Üc&>¢­†×r*¾ ¦H¿æl&ăV¬"P0÷s±¡ vÝ4ü6ÖKë3Sþl—P¿‘ç*×JîA`ꦺ]ÊJo? Iâÿ Í{ÒŽ‹•$qÑEVÍ.ŽVQ ¿2€¾£È5ïŠP“ºó.߯É,]A½z- õ Uu3ó¦Ó£O"Fz§¤ZÏœïy—wÏïv îVeˆbOjŽç6#lDCj°w¿Y¿Ê6åP†G˜ GUSÂØ?ôÇW7m°ZÓ€0öû†›¨£¤*îfæ¹ô}òWæv½omyOm—uÚw®Š@Í{u=…åÙB³–;é¿2ýü}ã5zi´Êü$ÇmB$¡ÝŸÀ õí¥]Ïä´9;Çõý"î³ÓB{{„b@¨ì.%Ô,TƒR3"RÞz0çëK¸;5 -ŠÝaôŸÕÓ©)¥³«o¡®wE÷ÿ/w_W|¼À˜±Û¿ èÇzúM9«ËMA”ü-@CûØÞâ!.MoÁcw{½qÚÌ£™M±J¡HÀÙ ±3pŽ7·¡ -%WHEÑÙe˱×­¾_”¼áï|Ãð\M¿,±–êO¶ÍSûbCISÃ’EA‘L0V»ËEkØ}ÔçËþt msi®7u*™Kð:Z;^<ŸæT¢]dt…·–Ö³aõþ -= zðs[¤Òä½89WLyK”ªö+Ï4¿IÕNCš+2·‹÷†å.lû©µ3xù-|ÁKg:þŽßÙÖ $XÁ-…ãŒHžñì×íìËôéZdëš—T¨xdÌ›Ø{ϱ…"¸öý¸ýŽDàõ3·”sŸñfoT©Eý--yÞ›ùj$ùá Û÷“]üö¸,s8O%™f š'\3ç׿Ž>}q?Rã.£ÿH¿—´ž+¬€GwL"Êuþz/ŒR >ÍëÓ.T4£‹¶9rs˜q÷o¯,ùÏ·”ŠºFXŸÉÓâ²f˜%¿æ7 -dÜù_§.äµ -Ù Šè?©Í7ÿ}5m„fa]ð&%ÅôÜ;ÐÜA -}ˆ¬Ë­(ì¬õ[ÄÞÖ <à­YU}Û©Fk^H|b§žÃÒ5Z«lO` ÖÆ¢í{<0}W:J㦧/u²ù¼çR'^tÂ^<Âæáhðy¼§„Q¶P¼j Lte^a4 âûö`:,‚ì¨gÏÆ%^ç×Û½_Umþò˜Ãù°^2}ŽÜ¥'ýR¯ý_p:Å7›Ò\ ‹‡!íG>É!ª• ÖI‘Î=Éÿ ª®Pže#ÞièÝû¿c@J½oB•þÄÓY¦Ü¬4À¹ÓŸ‚¶'³}až…l`Ú¸šri¶¥«4³ç3¼ Y@=Û¿†êv°ÓÉxÖZ/[èHèRœ¿U’׌l¡±ól¹®Ò‚Þ¬FÏÌÂÉd%HÛûoîµ~?\` mqåµ)qZ&²Òï¢4-|bÍÖÓ ¾Ç2M¢(Ýæ›$+âýÇ‹}GYÙ ? »ÝVÕÝF8P"}J‡ñSœ% _ªzÏÇzyxP×e¸êIÌ|GõÌñç•°pùRƒ»S’íôhGÏç“í"¥²Ð -c(?eªÌÇZ$¦k¡®¦GuOéªrsÂN]s‘Ó{«ˆdûŽÄa¯æøßg¢4•È/MK•3FqONÂÙyÝÆWÜôÉ™ Ž‚æßçë: :=™aÊ¥u»·¬?„Y9'\MŸÛÔ@Æ8¥ÉÏ¡à˪Âm´áÁ¨"C–p°xa]Vó>1½–Ü”+6–îT4ÿ[>¢?…Ìi>Y,3Ž³¬'8—³Á̉í>4Õ6BÀv‰a€_Y -õݱ¦¼†ÿÀ×íÝÏ…Í?–_§˜éévç…†|%}ÚÞù  g>Þ¤¯Iˆí¯ÍC¨¾æ\prq œÎuN¾”WéŽ4~9aÈ’²+³êZœÊÕÕ¡"ó–r$ˆ -/ŠD±ÚL¶”x{iÎN•ˆ÷Í¢>€í°ŽôÐ)*4®¾7þ[iƒÓO)¤ÿgÇ cãÕk ´¹KÆÇ}%ËMÍÃd²v BÂóo—…ðÙú#Q–m“°£%Ü×kWoûÇ¿c ZqŒÁŠ€C°4¶²~OqïšDpcÅjÚeÛP—[VMŽÛÝC´îsS3,²Y—'&w´‡æd"1p++Ÿ·ÒðIá”ß}fý/Æ[4e›ëœþïUÛKnª¿÷NÑ üd Ìò}¹ì[6nÅúØ,‚¸Ô=-Ò2ç0VZ®og{9sé²S*†_)PÁ¶uc‚ï^Àa lȘ¼L_û9»º\|z>,Ýý¢#àŸß ANØÿõƒ ., -¹ -ÇÉýaM[Âë?0½AáщÛmd_ÇÅâ ë `0ñE¯î±“ºõ7•ªÉŠ`ÅŒ?³ A‰TïÕ*4:áâÃèùCú¿dʽöL𘞗䗩²©™Ú6—/åÂûéÍ8䃶KÓ‰6¶cN•` -/jø ±µé.™‹»ÙôR‘ƒ¿ñ~g“-Xº&:¶<ì„ThF©.§rèƒA;úâ‡ÐÜòÕ圿{ÅÑ‚=f,á±q·#ñ=6†Í ÿÆyÄÏ·YœÚÃC{¤´j¬Ñþ@fºÌU­ $"ø%#þ+p5¦W¼èÜ•°ô½×nMÕæÛxOÓk^cjy·kZXiöí¾€¿-)_™ -u ÒÜqh‡²OˆÌc Ã~þ¦ +f£²³wYÁüØ:ëði‰Y+20•`œðP‰2cí``³´EBL”ýð=[.>ΖùçµNÐô&åfQŸ*~[£ò4¿}*ííß-VÇ´cêmßO¯#2`XiùH›]Ÿd=ç&SÅÍ#ªõÐy¥•Fš§––¯mQ#ô½ [|©ËC”PÈkÁ_á8.¶È^7U7¢ìù ijbk8`ÚÂ&IÀTc 5.·8râSˆ,ÇÕJU¿´`cê«ÂøT‹ð p´{î*àS#—ñDd-çÿo:«pÒ&Ñl#(ÌÑÆãþƒýÁh@;!z=ÆÒm¨€ ¾-?ÔÄ»YŒ2Òá°ö“ žýå×S5R¸´UýÃë·­ÈA”JH øló/KÒw\Þî»$å@ùg¯ýr*G·O>L^â1Énj;fr÷PqLeò†—¹mÉÉ3Iánòú>¹Ù‹ªöÎÆbÎYìðéšQñcØ’k×…s°‡ÐÇPÏˬÝ$o…‘ú ¬g®ŠˆÇsßÛ\AáÞxìëüî_àÎatiµa@0ÅûY—²n¤Ž6S‚i„Eë·`E£x˜t×7—ÁjïïÑnÄ-ÖÞÁ©ü€ªêŽÅ³ìúödæ…yÈ6Bºå¬äþÕÏU5öÁŸ«ÀZ#¶f‰j %Îp¬n‰‰€^‘æö“,AR§ß8}ðV½óâãƒñ²òÉG †­~9šfPñ÷xjzó°in0@IrxáÐõX£†ó¾È½ ™Û¯híTíɹ\'PÝyzªi\RE1ßnìùtI êí(È;’1=.eùiÑcÎrªÆ³5¨ßÚì†zå|…/¼Ä·‰‹4×Æ\)zîdð½u¦àzÐŽÐ{t®ñb%¢£©þQØåÏ¿A n*gè锿%3?ZßÐiðËEÉú/áÆñ‰†ŠÚòéa‰øÓ¯'Û÷ùQh êO¥í-”¥Ó£h–-)†Tîˆùþä'Ý+ãâDa‘üïßíË‹C±NTàÕÔŒ§x¿†Ò 줯YˆQ æWò§ï>bÔ@Ý’S %/ ÞC°ýÖ\úŸkäÙm¦RÌv ÛdètœT ŽÉ-Ŧý$ø@ÍžÖsRã¹nÔÇÝxä…åiëœO¦ÐŒ†‹ @f0Ìok „^|ª½â+ð6û•ú°€AEu;³ò‹yC ²ü°n‚Æ:àÁAÖeè¡ èÙp0j;À1l‚’3œ¾ùÞÍ„ûœ’‘S!hmñ‘ÇÊÛ;Ô‰¯ç¸=…Íø¢2cÞH"êóT¹ÃPÐ$èß‘[ÄéEK5Á™Wxú±ltýŸ9Qñê@©&h?h¤ü&H`ÚÒ®7óIËàg10L¬ rvüô_}w ðDó):£øÁÚ _©EØMbè7i¤z!Ttô¦«““ùÂ:éËÓâx¬ôS\[¼1å6HÍåö:qR´,3k¥5ÏfDlß#7Ðã œ¦MVñ™øÍÍEV†ÎÏyÿ§ (Oó·}á­-@'jêæ˜-ƒç7DK¤¢ ±f­ª{Ìd²Î6‚•”=æ€nÕ†V†[Ψ)Jê/&:IpÉzo®zF¤u½,ÿb†/~eÖäA€iÉu3nâK(‘pü‚¶ÍñÚî4­ãiØ -…óãµ^òh-‡ñÙcÎySh–¿q˜Ç^¬n‘Ç;‡Lú”7"Á5©²iZ1Õ¶-c½1DNMë Ãæ6=¬ 0#³Â:G‡) -™…9ZÎEiBÐÀ­ä×üIL¼¨…’JŠ QPÒ>ú3)É„ŒŸ\Fë©[È+Ñ>a¨%okEÓ#“@àô¥DÎR“¡õXÙ½E‹[–6î0³ÐþrnÅî À*°Eåß÷¾ÚÚ ›9c„¥ éänÒŒ ›/¸Õ”d½îW5`aíQ™ .PT¸ZLwSà-ÍNlªBž`áçCzÖÊ\@!^éi.Lº!Ž2îè–Ú¡Óày¯1|æðX«¡ù¨h·ùÇ[JÄ!óÓÕ7Õ¼.ÐpÀXì&'šhƒUúÖÅ·‰Xª7òH´£s¼…A댋uÊwx‡'ûä—W“";^» `NHÉŒ%¡•²ª/öÆÈw½AÞþoåÆŽçÜã@ÿøÒ0YØoêׄ‹éÆC£—ôábV~ÔÛ†Ëå»l·¥Ò;yqCûµoöÃ}Ï÷ã7 C§gÜÛb¾Œn(›¤Àr.j4Y‹Ïñ|FÙÔØ~ŒÕE -)†Là>ƒO¼x«^ A¹ßZ®x„ÅÜ‘yξÕJäí„]XKma_JXº«0k#µï=ZkG“+p´ÿªß¼ýŒlìRòΡ@Xè^¹ô0üÍòØQ³”™ØÇå9Ú×\Ε¡c ¦ˆÃ•þbH.û‰®X¸Ñ‚{ÑÁ½f¬é vª§ÔÈlµ#/Ì©BÛ6w6÷ÕË”AÚÉ¥ìJi6âaòZô;ø‚j(ҙW“W¡ê´ž3¶žÍ2(µ²uë ¯V‹G¤/õÍØ$æßcº -&æ l°¡f7pô.Ô³1‹Ø}”ïÅ£Æ -ڥر–eª~º„ÂY‘NªXÏôÅ‚r£h‹X ˆøˆ(›^ÊDüoH5¿}ìk'ˆ¾¼ç1®–ÔÙý.ïeðÆ -TU˜:5s vÓ×ëd½Æ*(êõ‹F¥kÞ‚]tµ®«­«¢œf³#A•ó/X0:6L-ùëÁäé“)šž$l®02ö«˜§Š î<Áåu,tÈmJ–•$•x§xjÀ?f‹U7¹e‹mèߧ;³¤>•—ÍÛ¢F¾¶þ ¢àÁ á×åî IÖïøÌì,ÀnéwNä ²IÛKÝ·¯©±ÑŠ½k}݈•ž \K`hzñdHЕzÞh{ç”TÑO—Ø.ƒ$ÄçÏ[„PËÍecl³&!øÿ2ÞÒþðrmêòsö‘Âfh5äbÓu^º§´8ç6 —÷öt§²€ ÖÔÔÑùÞùÇ+”SÎe¾Q§Á˜g½æ=®ºt0 ‰¨~ÅÙ~Ùït©_ó¬VúPŸombÁö7Žì eµ.ª0½Èf¢_<“*¨*yìêÄZ¸®û¢edPâ­4¸tÉÅn9]Xꊯëü"ªØf?î/mFíkÜ}RÎ_ºœ}®Jž©ƒüÑ×a1|¿ëGzÃN)ž¦˜ÁÁ)ÀŽ]Ç»(„;VÎ_ý° ú=â`{oâ*:.ËšïR¼¸M`@xeËÎYð­çÙõܽc+QRzX"îƧ>J²æ ¦í´‘*Û&PöõÎ2å52P¦îI¬ý,è;½M0Ã3?ü÷q΢¦G¢`â˾X5.B­ ôƒUÓN¥ÇHvMœ^³¤ŸÜ7é)Æ÷N-¬©\Ai¸ýrù!1Ñ^š5œY5Æ-i‡ŸÄÈ“ŸÚ½ “f‘ä(KúóöT§ßîõR«—Íñ¾ÈCãU—í·¯ê‘FÞÇJƒ!16ÈQHÒ¼´ÏÚkríúQÓUzP¬¾µû±_XíԾȚÖi¤Y5Vh·â{#O"UHUù¬ j}§?ÍeH«s…0€££éþ6}T^zÐjѱÖÕ=rí„Õ¶Bb†Þ.ærÖÐ)²ñÓ«õ…¡2c-E+¦¦•¸¡ÏßžÆ[¬¾K¦ÐV2 >ë{ÅÄå.#v#Ók×£¬fÌÃk€žbQôy‰CDÞœ%̪ñ¾«Å -C’ÄAòËúMþÉ7£ædhB ÷LˆzÝvõj ËR~î×]ìø#–ù¬ É#Ò’ÌæiÞž^Æ_ùxB¡—ø˜Y¯Kje$ŽŒÏëƒÐ…ÑM+—îËï‚ãRÿn Q­ú”Ú¶‡å¸Ý`v0=¯¨ª‚«©XW¹U&ñrðpÛ8v s Ã7Ññ™Ñ+ÊÄéz]Þóêçð˜~(In4±Œi˜2¸Ò¹Á9=½ìY#‰6ÝuÐɵýqæÓ]Ä»S…wì”÷¨S½Ò˜!u5I‘z]) ø PY3‹R#æuÀ°'?Ùí(SEGœÇõx°kh¿M‘4³šï-ØžÀ€>̵Î\eùÀ"–oöòÃE<¬Ê Fäh‰á\VEÄúÞ^êÀµ4iRXÔŸ ´q¡Ä}eÐ(6Qíò‰o¡4 ú -¥[z®6¼ y¹eXŸÌ“_5%ÿ‰yz\zEíµècÓÏ(ï Kò2ëY˜iâÓÌ`ÕF¸nÒ‹3ÀÛÆ'ý’¹LZÄÆCç§Vp8±/z>„jzD˜Sæ †¨)ÆCÅ:J-Ú½×h‚÷Ã($âIb -mú.—L#9Â6*Q’™60ë#é-ÍQnP臖«ÛzÔ 0¬âÊu~J/ïi^Nz*]."‹)Ÿ&¾Yr/MÊížé“³ÎX‡¼l´ìô¢[Büe–ýµ™Þ„s’›µ½~M_¼¶M¨Tk\X‚öh;„wúÀÖS{¦ïžìÙýùöѪž•%¨ò*’wHê7D˜à5ò©.ËŒÀ†(õˆYy ¦`ɱ•.ØïÏM¾EÂå±Áìm[^S×3ñ <íân¤i6±@UÚÎÁÌN°½—©¹è²>{}´óZ˜ø9d w8›J.Õalf°½¿ ZÁlx'[ùÈ^;1‰•(±À n„‘F&úÊ k<' ˜¦ÀÉ?±gø{ZYßœwC†V€lïµ"X³c¾®hñþ¨9¿#²{ð’?Ú&DŽÀ)ÖqŒFWÀ:L])àWhÕ¬wêCP݈r}|;î ”zª1yEauwS•nG«•WöB±ÎÜ)£ßA”Ãwb&“1±îQJMA6‡«k¤}~Ãx-{qí]üðpŒUŠ•/±îß{Ûˆ…¾+ k;S÷-`„jäx“Ì={`%scÑ•Ø;$ôG”4JLYí¢í)€Å\-ßçn¦Ê˜^¡åæ"ËóA Qå®+ÛfþjqìÊ·™ß -°YTðéÇýÂiûb6Q·+Œà”qQ P{‡sלj-•T¯KZgU€NŽ[r`/¤-þ®1ý¤K7¬àÛÖ®SYËö¡Õ9qûë¢Ñ+1h@<ºÛtSÈ;ûW‘ßB!E a‚ܸr–˜{{.°øY8çÆÕRA.;÷Žw?PßÈ/ìè(Ñ|1ó÷™×Xs‰€7æ®9T*ò—tH ¹ÄÀ° U+%KhmÜ"DïNj2šXâJŒÑ]ÿhó笺M$lA¸Eç/[JHÙR/‘Õîpò½Âîú(Ø'Ç:‚@öù}Á³vBœÂ=nØÏŸºãÜ \âgÌ.²Ê怗qûÇSÑ°Xb&šÉÓkÁÂH*ã)ªw2´(‰FUî"(Ò¸Dg‹êiÆ€ó.XJ;ÔøKÇæ(Ôs!íAôrT®Pê´$½lÖ«+W°£ÝMÔÈ‚¢.ok[û—˜as§d“Ï_òÖ–ßžUê§3;(^ Ç¿ÙbOˆZ-¸Ÿü¨ 㸣)ɶ§Œ¡¢õú‡wÔç‰~ÓYŽghƒ?ÏÍÍ]ÑK25S±[?[ŠÙŸ˜"‘jr¼;…º×Ø Æ]buoTvÍ×XgõZo5*û"mÇ[%NEA&ÚÇìÖiŠ .5•Êö;‹³ÁÜšÃyý·ùŸ%\ŠÂšFª2+Õ’–šܺiYŹ-¬@D@\ n4Ô܈gæ©0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -44 0 obj -<< -/Length1 796 -/Length2 2243 -/Length3 533 -/Length 3572 ->> -stream -%!PS-AdobeFont-1.1: CMMI12 1.100 -%%CreationDate: 1996 Jul 27 08:57:55 - -% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - -11 dict begin -/FontInfo 7 dict dup begin -/version (1.100) readonly def -/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def -/FullName (CMMI12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -end readonly def -/FontName /AEVAHO+CMMI12 def -/PaintType 0 def -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0] readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 60 /less put -dup 62 /greater put -readonly def -/FontBBox{-30 -250 1026 750}readonly def -/UniqueID 5087386 def -currentdict end -currentfile eexec -€4y‚«9BÙ0ài§ H1r^ƒ vû¡.Hn˜œ˜tµ'ð’W"xp'ôDpÔ„&,6 ßÝß6WS:W»÷0H¿»ü·:e„TAýÈ7­ÙJÈûÒ.>ÈñÔ´»{8"Ìa˜ïçh½ŸÎ³Dnä¨Ü'ÖÍ$…8Nõõ“ÿÚCòÒ °Š¢z²[wM± ¬ýÍ3æŒFSj´'½×ÚSK x­=x“r!‹0u’\á/ü…0üÕãŽ:jm²Üû®;FSçà'01NµJ)m+ïŠyA’%Ú×´æÖùψ¶›¢“¿•€~{Ë ·N‘ú í"ŽB ªä§ªÊ`±b™¬J½#ïñv_=‘ù/:ûýí7/ÏnKÚ/³Éþz‡¼¾oÓlÕµ‚?Ût"6¦<3F¡ >k6,ô/ÃÈ -¿ -G³DÃmä/Ä ÿD«mRIéõR¨p{·f$&D@ÈC½^_ ”LëfnæCYÖcãU²ñp“©d(l¦ $v~ºOä‡8Uº¾/¹`öƒ°mþ'&L1•ÔF˜ 5¼ ´xbjç&6Y:º@<áÀø²Î£ìÕ†é -Á}K¤¯pƒò114Yû»û—ÔƒM•uJ³ò-d•Ò@‡ÔHao¡Î'¼PÓFT2‡ã† ™´3bA»™ ¢6Àâ`ý'[¥^ÑœƒášÝú¡ó/kr„ˆEÌîq£1Û¸Iu÷©„¾×Æì*å³5§cÐÆ'?†¤f2ý‘A¢yOÈ`ß:.µ›‰wLvp"Ûµwã ¡(½w¤:ø†ÐÂVµ©hïwj¬ ¥8~ë#4Áô, ¡\ ~¦2N‡ôd ˆOVN£6 PÇ·Vžc?{(ÅÌGÚ|‡RÔ¡N&¤r±ûRÎc«ù¸@¸øºE¼Ï¶SgÈuܾ -Ýï7aâ–ÜÚ ~†FtcËK)ÍÉZÚ Gm^ùï{Å:¥:μ^ÕW‚’”‘KÇø#ì)I@¤Zh~Ä,½§ä ~«0Ø ‹òëî ÔíÉUf¢±F‰ðÕ¥­ºVX–yz¦ª´–òÀ¸Ë+7£X‰Ý‡€:æy[#¯V¨”.¹:Ö÷nð[8¿8?ôWTe¨Bè´Õ¼®6>êÎ@~[\è;gŠ$—6¬ëkL¹H‚Q«&+ÚÉf–ܳ³×íN„EJcÏRÿèÑʳŒÎu°„ˆNé - êÝdƒN€Ö$]eÇW4žÂä$¬s…¶Y0-µ€-÷ÌŒÙöëkè™MO»ë²ÍKöUYŠõÍSˆ €-„24ZWí,.•I. d(¢Æ/R4M}‹²0G}…ãšLcÒÒ äã¼xH/§Nt•+ÅvåXn¹‰.m?FÚ5ø„´œ=iÐÃdœ˜ä·È0 ¥ªFoy#oÙLè–Çv”ÐJ(4…ÂœgJ‚FØ{¶ ¸#ºûw,¨ð;8:9‡gÉyx­ì•‹úÚ–V‰7±¬Ž6[uÉ3ÛüKòÿúðÛ©‰¹Ï -w(Lÿž†…ÇYØ&Ž'‘2îLu $Û,8ÔfìK¬¸$ŸÙǶíSØ[™à¢n.l(oB*µôÉjËËؤÁ~D”•Æ ß™²‡ÑÇüï®dóÉ‹q_®ÚLq°÷°ƒiˆ2LÆà&*BÜÕžª,:KK½¹Ì±ç…›Çà­\-é[r Ï$$ƒ>„·p—öïúûÛ"‹ƒ^®SØ# 1øsèÖË7Éh¼µþëíõ×™êÙFÔäGœ½Yã 4¡‰ï©”‰ž­£ëµF×9¿]OøÀóGa£Ñ‹¨·wæ…VÖ2Fë¼)zÒ‡9ÖI|ß•Î0² ŸâÀ§`¿$†pL¥11#.Mv3fGý°®ÓਞBž'À©-0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark - -endstream -endobj -1 0 obj -<< -/Creator ( TeX output 1999.09.19:2116) -/Producer (dvipdfm \(null\), Copyright \251 1998, by Mark A. Wicks) -/CreationDate (D:19990919212041+00'00') ->> -endobj -5 0 obj -<< -/Type /Page -/Resources 6 0 R -/Contents [19 0 R 4 0 R 20 0 R 21 0 R] -/Parent 3 0 R ->> -endobj -23 0 obj -<< -/Type /Page -/Resources 24 0 R -/Contents [19 0 R 4 0 R 25 0 R 21 0 R] -/Parent 49 0 R ->> -endobj -27 0 obj -<< -/Type /Page -/Resources 28 0 R -/Contents [19 0 R 4 0 R 29 0 R 21 0 R] -/Parent 49 0 R ->> -endobj -49 0 obj -<< -/Type /Pages -/Count 2 -/Kids [23 0 R 27 0 R] -/Parent 3 0 R ->> -endobj -31 0 obj -<< -/Type /Page -/Resources 32 0 R -/Contents [19 0 R 4 0 R 36 0 R 21 0 R] -/Parent 3 0 R ->> -endobj -38 0 obj -<< -/Type /Page -/Resources 39 0 R -/Contents [19 0 R 4 0 R 40 0 R 21 0 R] -/Parent 50 0 R ->> -endobj -42 0 obj -<< -/Type /Page -/Resources 43 0 R -/Contents [19 0 R 4 0 R 47 0 R 21 0 R] -/Parent 50 0 R ->> -endobj -50 0 obj -<< -/Type /Pages -/Count 2 -/Kids [38 0 R 42 0 R] -/Parent 3 0 R ->> -endobj -3 0 obj -<< -/Type /Pages -/Count 6 -/Kids [5 0 R 49 0 R 31 0 R 50 0 R] -/MediaBox [0 0 612 792] ->> -endobj -19 0 obj -<< -/Length 1 ->> -stream - -endstream -endobj -21 0 obj -<< -/Length 1 ->> -stream - -endstream -endobj -4 0 obj -<< -/Length 18 ->> -stream -1 0 0 1 72 720 cm -endstream -endobj -51 0 obj -<< ->> -endobj -52 0 obj -null -endobj -53 0 obj -<< ->> -endobj -2 0 obj -<< -/Type /Catalog -/Pages 3 0 R -/Outlines 51 0 R -/Threads 52 0 R -/Names 53 0 R ->> -endobj -xref -0 54 -0000000000 65535 f -0000075678 00000 n -0000076972 00000 n -0000076638 00000 n -0000076840 00000 n -0000075846 00000 n -0000007289 00000 n -0000027172 00000 n -0000000009 00000 n -0000000212 00000 n -0000034173 00000 n -0000001248 00000 n -0000001453 00000 n -0000050466 00000 n -0000002485 00000 n -0000002692 00000 n -0000059891 00000 n -0000003611 00000 n -0000003817 00000 n -0000076740 00000 n -0000004776 00000 n -0000076790 00000 n -0000007224 00000 n -0000075949 00000 n -0000010761 00000 n -0000007353 00000 n -0000010706 00000 n -0000076055 00000 n -0000014337 00000 n -0000010826 00000 n -0000014282 00000 n -0000076241 00000 n -0000018312 00000 n -0000061884 00000 n -0000014402 00000 n -0000014606 00000 n -0000015647 00000 n -0000018257 00000 n -0000076346 00000 n -0000020888 00000 n -0000018377 00000 n -0000020822 00000 n -0000076452 00000 n -0000027107 00000 n -0000072014 00000 n -0000020953 00000 n -0000021162 00000 n -0000022192 00000 n -0000027030 00000 n -0000076161 00000 n -0000076558 00000 n -0000076907 00000 n -0000076929 00000 n -0000076950 00000 n -trailer -<< -/Size 54 -/Root 2 0 R -/Info 1 0 R ->> -startxref -77068 -%%EOF diff --git a/contrib/bluegnu2.0.3/doc/notice.ps b/contrib/bluegnu2.0.3/doc/notice.ps deleted file mode 100644 index 9836799..0000000 --- a/contrib/bluegnu2.0.3/doc/notice.ps +++ /dev/null @@ -1,1394 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.85 Copyright 1999 Radical Eye Software -%%Title: READMEdvi.dvi -%%Pages: 6 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%DocumentPaperSizes: a4 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips READMEdvi.dvi -o notice.ps -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 1999.09.19:2116 -%%BeginProcSet: texc.pro -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 -1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx -0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx -sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ -rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp -gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B -/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ -/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ -A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy -get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} -ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp -fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 -{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add -chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ -1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} -forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ -/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) -(LaserWriter 16/600)]{A length product length le{A length product exch 0 -exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse -end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask -grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} -imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round -exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto -fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p -delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} -B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ -p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S -rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -TeXDict begin 39158280 55380996 1000 600 600 (READMEdvi.dvi) -@start -%DVIPSBitmapFont: Fa cmmi12 12 2 -/Fa 2 63 df60 D<127012FCB4FCEA7FC0EA1FF0EA07 -FCEA01FF38007FC0EB1FF0EB07FE903801FF809038007FE0EC1FF8EC03FE913800FF80ED -3FE0ED0FF8ED03FF030013C0EE3FF0EE0FFCEE01FF9338007FC0EF1FF0EF07FCEF01FF94 -38007FC0F01FE0A2F07FC0943801FF00EF07FCEF1FF0EF7FC04C48C7FCEE0FFCEE3FF0EE -FFC0030390C8FCED0FF8ED3FE0EDFF80DA03FEC9FCEC1FF8EC7FE0903801FF80D907FECA -FCEB1FF0EB7FC04848CBFCEA07FCEA1FF0EA7FC048CCFC12FC12703B3878B44C>62 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fb cmtt12 12 48 -/Fb 48 126 df<00085B003EEB07C0007FEB0FE0A24814F0A26C14E0B3A2007E1307003E -14C0A20008EB01001C1E75BD33>34 D37 -D<007FB612FEA2B8FCA36C15FEA228077BA133>45 D<121FEA3F80EA7FC0EAFFE0A5EA7F -C0EA3F80EA1F000B0B6C8A33>I<167816F8ED01FCA21503A2ED07F8A2ED0FF0A2ED1FE0 -A216C0153FA2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA24A5AA25D143FA24A5A -A24AC7FCA2495AA25C1303A2495AA2495AA25C131FA2495AA2495AA249C8FCA25B1201A2 -485AA2485AA2485AA25B121FA2485AA2485AA248C9FCA25AA2127CA2264D7AC433>I<14 -FF010313C0010F13F0497F497F497F9038FF81FF3A01FE007F804848EB3FC049131F4848 -EB0FE0A24848EB07F0A24848EB03F8A24848EB01FCA348C812FEA4007E157E00FE157FAE -6C15FF6C15FEA46D1301003F15FCA26D1303001F15F8A26C6CEB07F0A26C6CEB0FE06D13 -1F6C6CEB3FC0A26CB4EBFF806C018113006DB45A6D5B6D5B6D5B010313C0010090C7FC28 -3F7BBD33>III<903801FFC0010F13F8013F13FE90B67E4881 -4881489038807FF03A0FFC000FF801F06D7E484813036F7EA21500A26C5A6C5AC9FC1501 -5EA215034B5A150F4B5A4B5A913803FFC00103B55A4991C7FC5D8116C06D8090C76C7EED -0FF8ED03FC6F7E6F7E821780163FA2EE1FC0A3123C127EB4FCA2163F1780167F6C16006D -5C6D495A6C6C1303D81FF8EB0FFC3A0FFF807FF86C90B55A6C5D6C15806C6C91C7FC010F -13FC010113C02A3F7CBD33>I56 D<007FB71280A2B812C0A36C16806C1600CBFCA9003FB7FC481680B812 -C0A36C1680A22A177CA933>61 D<1278127EB4FC13C07FEA7FF813FEEA1FFF6C13C00003 -7F6C13F86C6C7EEB1FFF6D7F010313E06D7F9038007FFC6E7E91380FFF806E13C0020113 -F06E13F8ED3FFE151FED07FF815DED1FFE153FEDFFF84A13F0020713C04A138091383FFE -004A5A903801FFF0495B010F13804990C7FCEB7FFC48485A4813E0000F5B4890C8FCEA7F -FE13F8EAFFE05B90C9FC127E127828337BB733>I<007FB512F8B7FC16C082826C813A03 -F8000FFCED03FE15016F7E82A2EE3F80A7EE7F00A25E4B5AA2ED07FCED1FF890B65A5E16 -80828216F89039F8000FFCED01FE6F7EEE7F80163F17C0161FA2EE0FE0A7161F17C0A216 -3FEE7F8016FF4B1300150F007FB65AB75A5E16E05E6C4AC7FC2B3D7DBC33>66 -D<003FB512F04814FCB7FC826C816C813A03F8007FF0ED1FF8ED07FC15036F7E8281EE7F -80A2163F17C0161FA217E0160FA4EE07F0AD160F17E0A4161F17C0163FA21780167FEEFF -00A24B5A15034B5AED1FF8ED7FF0003FB6FC4815C0B75A93C7FC6C14FC6C14F02C3D7EBC -33>68 D<003FB712E04816F0B8FCA27E7ED801FCC71207A8EE03E093C7FCA6151F4B7EA4 -90B6FCA69038FC003FA46FC7FC92C8FCA817F8EE01FCA9003FB7FC5AB8FCA27E6C16F82E -3D7EBC33>I<91387F803C903901FFF03E0107EBFC7E011F13FE49EBFFFE5B9038FFE07F -48EB803FEC000FEA03FC00071407491303485A491301121F5B123F491300A2127F90C8FC -167C93C7FCA25A5AA992387FFFC092B512E0A37E6C6E13C0923800FE00A36D1301123FA2 -7F121F6D1303120F7F6C6C1307A26C6C130F6C6C131F9038FF803F6CEBE0FF6DB5FC7F6D -13FE010713F80101EBF07C9026007F80C7FC2B3F7CBD33>71 D<3B7FFFC00FFFF8B56C48 -13FCA46C496C13F8D803F8C7EA7F00B3A290B7FCA601F8C77EB3A53B7FFFC00FFFF8B56C -4813FCA46C496C13F82E3D7EBC33>I77 D83 D<003FB712F84816FCB8FCA43A -FE000FE001A8007CED00F8C71500B3B3A40107B512C049804980A26D5C6D5C2E3D7EBC33 ->I87 -D<007FB512C0B612E0A415C048C8FCB3B3B3ABB612C015E0A46C14C01B4D6CC433>91 -D<127CA212FEA27EA26C7EA26C7EA26C7EA2120F7FA26C7EA26C7EA26C7EA212007FA26D -7EA26D7EA26D7EA2130F80A26D7EA26D7EA2130180A26D7EA26E7EA26E7EA2141F81A26E -7EA26E7EA26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2151F16E0A2ED0FF0A2ED07F8A2 -ED03FCA21501A2ED00F81678264D7AC433>I<007FB512C0B612E0A47EC7120FB3B3B3AB -007FB5FCB6FCA46C14C01B4D7DC433>I<007FB612FEA2B8FCA36C15FEA228077B7D33> -95 D97 DIIIIIII<14E0EB03F8A2497EA36D5AA2EB00 -E091C8FCAA383FFFF8487FA47EEA0001B3AD007FB612C0B712E016F0A216E06C15C0243E -78BD33>I107 D<383FFFFC487FB5FCA27E -7EC7FCB3B3AD003FB612F84815FCB712FEA26C15FC6C15F8273D7ABC33>I<02FC137E3B -7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE07130301FC01 -FE7F9039F803FC01A201F013F8A401E013F0B3A53C7FFE0FFF07FF80B548018F13C0A46C -486C01071380322C80AB33>I<4AB4FC263FFC0713C0267FFE1F13F000FF017F7F91B5FC -6CB67E6CEC07FEC6EBF801ECF0004A7F4A7F5CA291C7FCA35BB3A43B3FFFF80FFFFC486D -4813FEB56C4813FFA26C496C13FE6C496C13FC302C7FAB33>III114 D<90381FFE0F90B5EA8F8000 -0314FF120F5A5AEBF007387F800190C7FC00FE147F5A153FA37E007FEC1F0001C090C7FC -EA3FF8EBFFC06C13FF6C14E0000314F8C680011F13FF01001480020713C0EC007FED1FE0 -007C140F00FEEC07F01503A27EA27F15076D14E06D130F6DEB3FC09038FE01FF90B61280 -160000FD5C00FC14F8D8F83F13E0D8780790C7FC242E79AC33>III<3B3FFF -C00FFFF0486D4813F8B56C4813FCA26C496C13F86C496C13F0D801F8C7EA7E006D14FE00 -005DA26D1301017E5CA2017F13036D5CA2EC8007011F5CA2ECC00F010F5CA36D6C485AA3 -ECF03F010391C7FCA26E5A0101137EA2ECFCFE01005BA214FF6E5AA36E5AA26E5A6E5A2E -2B7EAA33>I<3B3FFFC07FFF80486DB512C0B500F114E0A26C01E014C06C496C13803B00 -FE000FE000017F495AEB3F804B5A6D6C48C7FC90380FE07E903807F0FEECF1FC903803FB -F8EB01FF6D5B5D6E5A143F6E5A143F814A7E14FF903801FBF0ECF9F8903803F1FCEB07E0 -157E90380FC07F011F6D7E90383F801F02007F496D7E01FE6D7E484813033B7FFFC03FFF -E0B56C4813F0A46C496C13E02C2B7DAA33>120 D123 D125 D -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fc cmbx12 14.4 28 -/Fc 28 118 df46 D<913803FFC0023F13FC91B6FC010315C0010F018113F0903A1FFC003FF84948 -6D7E49486D7E49486D7E48496D138048496D13C0A24817E04890C813F0A34817F8A24817 -FC49157FA3007F17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A36C17 -F0A26C6D4913E0A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFCEB3FF8903A0F -FF81FFF06D90B55A01011580D9003F01FCC7FC020313C0384F7BCD43>48 -D<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A600 -7FB712FEA52F4E76CD43>II<91380FFFC091B512FC -0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D8 -07FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005F -A24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113 -F89238007FFE707E7013807013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8 -487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A13 -80D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F -1380374F7ACD43>I<177C17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D -5DED1FBFED3F3F153E157C15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C -5C1301495A495A5C495A131F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E -127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A4F7CCE43>II66 -D<932601FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203 -DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901 -F8824949824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA248 -49181FA3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000 -A36C7FA36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF -6D6C6D5C6E01F0EC07FB020F01FEEC1FF10203903AFFF001FFE0020091B6EAC07F033FEE -001F030703FC1307DB007F02E01301040149CAFC5B5479D26A>71 -D73 -D80 -D85 DI97 D<913801FFF8021FEBFF8091B612F0010315 -FC010F9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2 -486F138091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C -6D15C07E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0 -010390B55A01001580023F49C7FC020113E033387CB63C>99 D<4DB47E0407B5FCA5EE00 -1F1707B3A4913801FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97F -FC0101B5FC49487F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C -7EA37EA26C7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0F -FFC07FCF6D90B5128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803 -FFC0023F13FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F -48496D7E48178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E0 -49CAFCA6127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C -6DEC3F806D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC -020113F034387CB63D>II -I<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA5 -12017EB3B3A6B612E0A51B547BD325>105 D107 DI110 D<913801FFE0021F13FE91B612C0010315F0010F9038807FFC903A1FFC000FFED9 -7FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890C86C7EA24883A248486F7EA3 -007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A -6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF807FFC6D90B55A010015C002 -3F91C8FC020113E03A387CB643>I<90397FE003FEB590380FFF80033F13E04B13F09238 -FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE -1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537>114 D<903903FFF00F013FEBFE -1F90B7FC120348EB003FD80FF81307D81FE0130148487F4980127F90C87EA24881A27FA2 -7F01F091C7FC13FCEBFFC06C13FF15F86C14FF16C06C15F06C816C816C81C681013F1580 -010F15C01300020714E0EC003F030713F015010078EC007F00F8153F161F7E160FA27E17 -E07E6D141F17C07F6DEC3F8001F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0 -D8F807148048C601F8C7FC2C387CB635>I<143EA6147EA414FEA21301A313031307A213 -0F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26D -EC1F0015806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>II E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fd cmbx12 12 22 -/Fd 22 121 df12 D44 D58 D66 D71 D<903801FFE0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E48 -6C6D7EA26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FF -FC01000313E0000F1380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83F -FE013EEBFFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36 ->97 DIIII103 -D<137C48B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7F -C0EA7FFFA512037EB3AFB6FCA518467CC520>105 D108 D<90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F0 -01B512E002816E4880913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026 -FF3E007F6C019E6D013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B600 -03B512FEA5572D7CAC5E>I<90397F8007FEB590383FFF8092B512E0028114F8913987F0 -3FFC91388F801F000390399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512 -FEA5372D7CAC3E>II<9039 -7FC00FF8B590B57E02C314E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C -496D13804A15C04A6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E0 -6E15C06E5B6E4913806E4913006E495A9139DFC07FFC02CFB512F002C314C002C091C7FC -ED1FF092C9FCADB67EA536407DAC3E>I<90387F807FB53881FFE0028313F0028F13F8ED -8FFC91389F1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3 -A5B612E0A5272D7DAC2E>114 D<90391FFC038090B51287000314FF120F381FF003383F -C00049133F48C7121F127E00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14 -C015F06C14FC6C800003806C15806C7E010F14C0EB003F020313E0140000F0143FA26C14 -1F150FA27EA26C15C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F -13E026E007FEC7FC232F7CAD2C>III120 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe cmsy10 12 1 -/Fe 1 16 df<49B4FC010F13E0013F13F8497F48B6FC4815804815C04815E04815F0A248 -15F84815FCA3B712FEAA6C15FCA36C15F86C15F0A26C15E06C15C06C15806C15006C6C13 -FC6D5B010F13E0010190C7FC27267BAB32>15 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ff cmr12 12 76 -/Ff 76 124 df<9239FFC001FC020F9038F80FFF913B3F803E3F03C0913BFC00077E07E0 -D903F890390FFC0FF0494890383FF81F4948EB7FF0495A494814E049C7FCF00FE0499139 -3FC0038049021F90C7FCAFB912F0A3C648C7D81FC0C7FCB3B2486CEC3FF0007FD9FC0FB5 -12E0A33C467EC539>11 D<4AB4FC020F13E091387F80F8903901FC001C49487FD907E013 -0F4948137F011FECFF80495A49C7FCA25B49EC7F00163E93C7FCACEE3F80B8FCA3C648C7 -FC167F163FB3B0486CEC7FC0007FD9FC1FB5FCA330467EC536>I<913801FFC0020FEBFB -8091387F803F903801FC00494813FFEB07E0EB1FC0A2495A49C7FC167F49143F5BAFB8FC -A3C648C7123FB3B2486CEC7FC0007FD9FC1FB5FCA330467EC536>I<121EEA7F80EAFFC0 -A9EA7F80ACEA3F00AB121EAC120CA5C7FCAA121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A -4778C61B>33 D<001EEB03C0397F800FF000FF131F01C013F8A201E013FCA3007F130F39 -1E6003CC0000EB000CA401E0131C491318A3000114384913300003147090C712604814E0 -000614C0000E130148EB038048EB070048130E0060130C1E1D7DC431>I<121EEA7F8012 -FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A1206120E5A5A5A -12600B1D78C41B>39 D<140C141C1438147014E0EB01C01303EB0780EB0F00A2131E5BA2 -5B13F85B12015B1203A2485AA3485AA348C7FCA35AA2123EA2127EA4127CA312FCB3A212 -7CA3127EA4123EA2123FA27EA36C7EA36C7EA36C7EA212017F12007F13787FA27F7FA2EB -0780EB03C01301EB00E014701438141C140C166476CA26>I<12C07E12707E7E7E120F6C -7E6C7EA26C7E6C7EA21378137C133C133E131E131FA2EB0F80A3EB07C0A3EB03E0A314F0 -A21301A214F8A41300A314FCB3A214F8A31301A414F0A21303A214E0A3EB07C0A3EB0F80 -A3EB1F00A2131E133E133C137C13785BA2485A485AA2485A48C7FC120E5A5A5A5A5A1664 -7BCA26>I<14F0A2805CA70078EC01E000FCEC03F0B4140FD87F80EB1FE0D83FC0EB3FC0 -3A0FF060FF003903F861FC3900FC63F090383F6FC0D90FFFC7FCEB03FCEB00F0EB03FCEB -0FFF90383F6FC09038FC63F03903F861FC390FF060FF3A3FC0F03FC0D87F80EB1FE0D8FF -00EB0FF000FC14030078EC01E0C790C7FCA7805CA2242B7ACA31>I<121EEA7F8012FF13 -C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A1206120E5A5A5A1260 -0B1D78891B>44 DI<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00 -0A0A78891B>I<1618163C167CA2167816F8A216F01501A216E01503A216C01507A21680 -150FA2ED1F00A2151E153EA2153C157CA2157815F8A25D1401A24A5AA25D1407A25D140F -A292C7FC5CA2141E143EA2143C147CA25CA25C1301A25C1303A25C1307A25C130FA291C8 -FC5BA2133EA2133C137CA2137813F8A25B1201A25B1203A2485AA25B120FA290C9FC5AA2 -121E123EA2123C127CA2127812F8A25A126026647BCA31>I<14FF010713E090381F81F8 -90383E007C01FC133F4848EB1F8049130F4848EB07C04848EB03E0A2000F15F049130100 -1F15F8A2003F15FCA390C8FC4815FEA54815FFB3A46C15FEA56D1301003F15FCA3001F15 -F8A26C6CEB03F0A36C6CEB07E0000315C06D130F6C6CEB1F806C6CEB3F00013E137C9038 -1F81F8903807FFE0010090C7FC28447CC131>I<143014F013011303131F13FFB5FC13E7 -13071200B3B3B0497E497E007FB6FCA3204278C131>II<49B4FC010F13E0013F13FC9038FE01FE3A01F0007F80D803C0EB3FC0 -48C7EA1FE0120EED0FF0EA0FE0486C14F8A215077F5BA26C48130FEA03C0C813F0A3ED1F -E0A2ED3FC01680ED7F0015FE4A5AEC03F0EC1FC0D90FFFC7FC15F090380001FCEC007FED -3F80ED1FC0ED0FE016F0ED07F816FC150316FEA2150116FFA3121EEA7F80487EA416FE49 -1303A2007EC713FC00701407003015F80038140F6C15F06CEC1FE06C6CEB3FC0D803E0EB -7F803A01FE01FE0039007FFFF8010F13E0010190C7FC28447CC131>II<0006 -15C0D807C0130701FCEB7F8090B612005D5D5D15E0158026063FFCC7FC90C9FCAE14FF01 -0713C090381F01F090383800FC01F0137ED807C07F49EB1F8016C090C7120F000615E0C8 -EA07F0A316F81503A216FCA5123E127F487EA416F890C712075A006015F0A20070140F00 -3015E00038EC1FC07E001EEC3F806CEC7F006C6C13FE6C6C485A3901F807F039007FFFE0 -011F90C7FCEB07F826447BC131>II<14FF010713E0 -011F13F890387F00FE01FC133FD801F0EB1F804848EB0FC049EB07E00007EC03F0484813 -01A290C713F8481400A47FA26D130116F07F6C6CEB03E013FC6C6CEB07C09039FF800F80 -6C9038C01F006CEBF03EECF87839007FFEF090383FFFC07F01077F6D13F8497F90381E7F -FFD97C1F1380496C13C02601E00313E048486C13F000079038007FF84848EB3FFC48C712 -0F003EEC07FE150148140016FF167F48153FA2161FA56C151E007C153EA2007E153C003E -157C6C15F86DEB01F06C6CEB03E06C6CEB07C0D803F8EB1F80C6B4EBFF0090383FFFFC01 -0F13F00101138028447CC131>56 D<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3A5 -121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2B78AA1B>58 D<007FBAFCBB1280A26C1900 -CEFCB0007FBAFCBB1280A26C190041187BA44C>61 D<16C04B7EA34B7EA34B7EA34B7EA3 -ED19FEA3ED30FFA203707FED607FA203E07FEDC03FA2020180ED801FA2DA03007F160FA2 -0206801607A24A6D7EA34A6D7EA34A6D7EA20270810260147FA202E08191B7FCA2498202 -80C7121FA249C87F170FA20106821707A2496F7EA3496F7EA3496F7EA201788313F8486C -83D80FFF03037FB500E0027FEBFFC0A342477DC649>65 DIIIIIIII75 DIIIIIII<49B41303010FEBE007013F13F890 -39FE00FE0FD801F8131FD807E0EB079F49EB03DF48486DB4FC48C8FC4881003E81127E82 -127C00FC81A282A37E82A27EA26C6C91C7FC7F7FEA3FF813FE381FFFE06C13FE6CEBFFE0 -6C14FC6C14FF6C15C0013F14F0010F80010180D9001F7F14019138001FFF03031380816F -13C0167F163F161F17E000C0150FA31607A37EA36C16C0160F7E17806C151F6C16006C5D -6D147ED8FBC05CD8F9F0495AD8F07C495A90393FC00FE0D8E00FB51280010149C7FC39C0 -003FF02B487BC536>I<003FB912F8A3903BF0001FF8001F01806D481303003EC7150048 -187C0078183CA20070181CA30060180CA5481806A5C81600B3B3A54B7EED7FFE49B77EA3 -3F447DC346>II87 D<003FB500E0011FB5FCA3C691C7000713E0 -D93FFC020190C7FC6D4815FC010F6F5A6D6C15E0A26D6C4A5A6D6C5D4DC8FC6D6D5B6E6C -13065F6E6C131C6E6C13185F6E6C13706E6C13605F913803FE01DA01FF5B4CC9FC6E1387 -ED7FC616CCED3FFC6F5A5E6F7E6F7EA26F7E82A203067F150E92380C7FC04B6C7E153892 -38301FF04B6C7E15E04B6C7E4A486C7E14034B6C7E02066D7F140E020C6E7E4A6E7E1438 -02306E7E4A6E7E14E04A6E7E49486E7E130349C86C7E496F7F5B496C8201FF83000701E0 -020313F8B500F8021FEBFFF0A344447EC349>II91 D<01C01318000114384848137048C712E0000EEB01C000 -0C1480001C13030018140000385B003013060070130E0060130CA300E0131C481318A400 -CFEB19E039FFC01FF801E013FCA3007F130FA2003F130701C013F8390F0001E01E1D71C4 -31>II<13C01201EA0380EA0700 -120E120C121C12181238123012701260A312E05AA412CFEAFFC013E0A3127FA2123F13C0 -EA0F000B1D79C41B>96 DI -II<167FED3FFFA315018182B3EC7F80903803FF -F090380FC07C90383F000E017E1307496D5AD803F87F48487F5B000F81485AA2485AA212 -7FA290C8FC5AAB7E7FA2123FA26C7EA2000F5D7F6C6C5B00035C6C6C9038077F806C6C01 -0E13C0013F011C13FE90380FC0F8903803FFE09026007F0013002F467DC436>IIIIII<143C14FFA2491380A46D1300A2143C91C7 -FCADEC7F80EB3FFFA31300147F143FB3B3AA123E127F39FF807F00A2147EA25C6C485A38 -3C01F06C485A3807FF80D801FEC7FC195785C21E>IIII<3901FC01FE00FF903807FFC091381E07F0913838 -01F8000701707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80 -B5D8F83F13FEA32F2C7DAB36>II<3901FC -03FC00FF90380FFF8091383C07E091387001F83A07FDE000FE00010180137F01FFEC3F80 -91C7EA1FC04915E049140F17F0160717F8160317FCA3EE01FEABEE03FCA3EE07F8A217F0 -160F6D15E0EE1FC06D143F17806EEB7E00D9FDC05B9039FCF003F891383C0FE091381FFF -80DA03FCC7FC91C9FCAE487EB512F8A32F3F7DAB36>I<3903F803F000FFEB1FFCEC3C3E -EC707F0007EBE0FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512 -FEA3202C7DAB26>114 D<90383FE0183901FFFC383907E01F78390F0003F8001E130148 -1300007C1478127800F81438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13 -FF6C14C06C14E0C614F0011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA3 -6C143C6C147C15786C14F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E -7DAC26>I<1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7 -FCB3A4150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E0903801FFC0 -9038007F001E3E7EBC26>IIIIII<003FB612E0A29038C0003F90C713C0003CEC7F800038ECFF00A20030495A0070495A -A24A5A0060495AA24A5A4A5AA2C7485A4AC7FC5B5C495A13075C495A131F4A1360495A49 -5AA249C712C0485AA2485A485A1501485A48481303A24848EB07804848131F00FF14FF90 -B6FCA2232B7DAA2B>II E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg cmbx12 17.28 31 -/Fg 31 121 df<16F04B7E1507151F153FEC01FF1407147F010FB5FCB7FCA41487EBF007 -C7FCB3B3B3B3007FB91280A6395E74DD51>49 D<913801FFF8021FEBFFC091B612F80103 -15FF010F16C0013F8290267FFC0114F89027FFE0003F7F4890C7000F7F48486E7FD807F8 -6E148048486E14C048486E14E048486F13F001FC17F8486C816D17FC6E80B56C16FE8380 -A219FFA283A36C5BA26C5B6C90C8FCD807FC5DEA01F0CA14FEA34D13FCA219F85F19F04D -13E0A294B512C019804C14004C5B604C5B4C5B604C13804C90C7FC4C5A4C5A4B13F05F4B -13804B90C8FC4B5AED1FF84B5A4B5A4B48143F4A5B4A48C8FC4A5A4A48157E4A5A4A5AEC -7F8092C9FC02FE16FE495A495A4948ED01FCD90FC0150749B8FC5B5B90B9FC5A4818F85A -5A5A5A5ABAFCA219F0A4405E78DD51>I<92B5FC020F14F8023F14FF49B712C04916F001 -0FD9C01F13FC90271FFC00077FD93FE001017F49486D8049C86C7F484883486C6F7F14C0 -486D826E806E82487FA4805CA36C5E4A5E6C5B6C5B6C495E011FC85A90C95CA294B55A61 -4C91C7FC604C5B4C5B4C5B4C5B047F138092260FFFFEC8FC020FB512F817E094C9FC17F8 -17FF91C7003F13E0040713F8040113FE707F717F7113E085717FA2717F85A285831A80A3 -1AC0EA03FCEA0FFF487F487F487FA2B57EA31A80A34D14005C7E4A5E5F6C495E49C8485B -D81FF85F000F5ED807FE92B55A6C6C6C4914806C01F0010791C7FC6C9026FF803F5B6D90 -B65A011F16F0010716C001014BC8FCD9001F14F0020149C9FC426079DD51>II<01C0EE01C0D801F816 -0F01FF167F02F0EC07FFDAFF8090B5FC92B7128019006060606060606095C7FC17FC5F17 -E0178004FCC8FC16E09026FC3FFCC9FC91CBFCADED3FFE0203B512F0020F14FE023F6E7E -91B712E001FDD9E00F7F9027FFFE00037F02F801007F02E06EB4FC02806E138091C8FC49 -6F13C04917E07113F0EA00F090C914F8A219FC83A219FEA419FFA3EA03F0EA0FFC487E48 -7E487FA2B57EA319FEA35C4D13FC6C90C8FC5B4917F8EA3FF001804B13F06D17E0001F5E -6C6C17C06D4B1380D807FC92B512006C6C4A5B6C6C6C01075B6C01E0011F5BD97FFE90B5 -5A6DB712C0010F93C7FC6D15FC010115F0D9003F1480020301F0C8FC406078DD51>II<4DB5 -ED03C0057F02F014070407B600FE140F047FDBFFC0131F4BB800F0133F030F05FC137F03 -3F9127F8007FFE13FF92B6C73807FF814A02F0020113C3020702C09138007FE74A91C900 -1FB5FC023F01FC16074A01F08291B54882490280824991CB7E4949844949844949844986 -5D49498490B5FC484A84A2484A84A24891CD127FA25A4A1A3F5AA348491A1FA44899C7FC -A25CA3B5FCB07EA380A27EA2F50FC0A26C7FA37E6E1A1F6C1D80A26C801D3F6C6E1A00A2 -6C6E616D1BFE6D7F6F4E5A7F6D6D4E5A6D6D4E5A6D6D4E5A6D6E171F6D02E04D5A6E6DEF -FF806E01FC4C90C7FC020F01FFEE07FE6E02C0ED1FF8020102F8ED7FF06E02FF913803FF -E0033F02F8013F1380030F91B648C8FC030117F86F6C16E004071680DC007F02F8C9FC05 -0191CAFC626677E375>67 D69 DI73 D82 DI85 D<913803FFFE027FEBFFF00103B612FE010F6F7E4916E090273FFE001F7FD97F -E001077FD9FFF801017F486D6D7F717E486D6E7F85717FA2717FA36C496E7FA26C5B6D5A -EB1FC090C9FCA74BB6FC157F0207B7FC147F49B61207010F14C0013FEBFE004913F048B5 -12C04891C7FC485B4813F85A5C485B5A5CA2B55AA45FA25F806C5E806C047D7F6EEB01F9 -6C6DD903F1EBFF806C01FED90FE114FF6C9027FFC07FC01580000191B5487E6C6C4B7E01 -1F02FC130F010302F001011400D9001F90CBFC49437CC14E>97 D<92380FFFF04AB67E02 -0F15F0023F15FC91B77E01039039FE001FFF4901F8010113804901E0010713C049018049 -13E0017F90C7FC49484A13F0A2485B485B5A5C5A7113E0485B7113C048701380943800FE -0095C7FC485BA4B5FCAE7EA280A27EA2806C18FCA26C6D150119F87E6C6D15036EED07F0 -6C18E06C6D150F6D6DEC1FC06D01E0EC7F806D6DECFF00010701FCEB03FE6D9039FFC03F -FC010091B512F0023F5D020F1580020102FCC7FCDA000F13C03E437BC148>99 -DI< -92380FFFC04AB512FC020FECFF80023F15E091B712F80103D9FE037F499039F0007FFF01 -1F01C0011F7F49496D7F4990C76C7F49486E7F48498048844A804884485B727E5A5C4871 -7EA35A5C721380A2B5FCA391B9FCA41A0002C0CBFCA67EA380A27EA27E6E160FF11F806C -183F6C7FF17F006C7F6C6D16FE6C17016D6C4B5A6D6D4A5A6D01E04A5A6D6DEC3FE00103 -01FC49B45A6D9026FFC01F90C7FC6D6C90B55A021F15F8020715E0020092C8FC030713F0 -41437CC14A>III<903807FF80B6FCA6C6FC7F7FB3A8EF1FFF94B5 -12F0040714FC041F14FF4C8193267FE07F7F922781FE001F7FDB83F86D7FDB87F07FDB8F -C0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F007B71280A651647B -E35A>II<90 -3807FF80B6FCA6C6FC7F7FB3B3B3B3ADB712E0A623647BE32C>108 -D<902607FF80D91FFFEEFFF8B691B500F00207EBFF80040702FC023F14E0041F02FF91B6 -12F84C6F488193267FE07F6D4801037F922781FE001F9027E00FF0007FC6DA83F86D9026 -F01FC06D7F6DD987F06D4A487F6DD98FC0DBF87EC7804C6D027C80039FC76E488203BEEE -FDF003BC6E4A8003FC04FF834B5FA24B5FA24B94C8FCA44B5EB3B2B7D8F007B7D8803FB6 -12FCA67E417BC087>I<902607FF80EB1FFFB691B512F0040714FC041F14FF4C8193267F -E07F7F922781FE001F7FC6DA83F86D7F6DD987F07F6DD98FC0814C7F039FC78015BE03BC -8003FC825DA25DA25DA45DB3B2B7D8F007B71280A651417BC05A>I<923807FFE092B6FC -020715E0021F15F8027F15FE494848C66C6C7E010701F0010F13E04901C001037F49496D -7F4990C87F49486F7E49486F7E48496F13804819C04A814819E048496F13F0A24819F8A3 -48496F13FCA34819FEA4B518FFAD6C19FEA46C6D4B13FCA36C19F8A26C6D4B13F0A26C19 -E06C6D4B13C0A26C6D4B13806C6D4B13006D6C4B5A6D6D495B6D6D495B010701F0010F13 -E06D01FE017F5B010090B7C7FC023F15FC020715E0020092C8FC030713E048437CC151> -I113 DI<913A3FFF8007800107B5EAF8 -1F011FECFE7F017F91B5FC48B8FC48EBE0014890C7121FD80FFC1407D81FF0801600485A -007F167F49153FA212FF171FA27F7F7F6D92C7FC13FF14E014FF6C14F8EDFFC06C15FC16 -FF6C16C06C16F06C826C826C826C82013F1680010F16C01303D9007F15E0020315F0EC00 -1F1500041F13F81607007C150100FC81177F6C163FA2171F7EA26D16F0A27F173F6D16E0 -6D157F6D16C001FEEDFF806D0203130002C0EB0FFE02FCEB7FFC01DFB65A010F5DD8FE03 -15C026F8007F49C7FC48010F13E035437BC140>II<902607FFC0ED3FFEB60207B5FCA6C6EE00076D82 -6D82B3B3A260A360A2607F60183E6D6D147E4E7F6D6D4948806D6DD907F0ECFF806D01FF -EB3FE06D91B55A6E1500021F5C020314F8DA003F018002F0C7FC51427BC05A>I<007FB6 -00C0017FB512F8A6D8001F01F8C70007EBF0006D040190C7FC6D6D5D6D6D4A5A6D6D4A5A -70495A6D4C5A6E7F6E6D495A6E6D495A7049C8FC6E4A5A6E6D485A6E6D485A6E13FFEF8F -F06EEC9FE06FEBFFC06F5C6F91C9FC5F6F5B816F7F6F7F8481707F8493B57E4B805D4B80 -DB0FF37FDB1FE17F04C080153F4B486C7F4B486C7F4A486D7F4A486D7F4A5A4B6D7F020F -6E7F4A486D7F4A486D804A5A4AC86C7F49486F7F4A6F7F0107707FEB3FFFB600F049B7FC -A650407EBF55>120 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fh cmr12 14.4 49 -/Fh 49 121 df<15E01401EC03C0EC0780EC0F00141E5C147C5C495A13035C495A130F5C -131F91C7FC133E137EA25BA2485AA25B1203A2485AA3120F5BA2121FA25BA2123FA290C8 -FCA35AA5127EA312FEB3A3127EA3127FA57EA37FA2121FA27FA2120FA27F1207A36C7EA2 -12017FA26C7EA2137EA2133E7F80130F8013076D7E8013016D7E147C143C8080EC0780EC -03C0EC01E014001B7974D92E>40 D<12E07E12787E7E7E6C7E7F6C7E6C7E7F1200137C13 -7E133E133F7F6D7E80A26D7EA26D7EA2130180A26D7EA380147EA2147FA280A21580A214 -1FA315C0A5140FA315E0B3A315C0A3141FA51580A3143FA21500A25CA2147EA214FE5CA3 -495AA25C1303A2495AA2495AA25C49C7FC5B133E137E137C5B12015B485A485A5B48C8FC -121E5A5A5A5A1B797AD92E>I<120FEA3FC0EA7FE012FF13F0A213F8A3127F123FEA0F38 -1200A513781370A313F013E0A2120113C0120313801207EA0F00121EA25A5A12300D2376 -8B21>44 DI<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F -000C0C768B21>I48 -D<14075C5C147F5C1307133F000FB5FCB6FC13F913C1EAF0011200B3B3B3A7497F010F13 -E0B712FEA4274F75CE3B>III<000316C001C0140301F8141F903AFFC003FF8091B612005E5E5E16E0 -16804BC7FC019F13F8018113800180C9FCB0EC0FF0ECFFFE01836D7E903987F01FE09039 -9F0007F801BE6D7E01F86D7E496D7E49EC7F805BEE3FC04915E0C9121F17F0A317F8160F -A317FCA5120EEA3F80487E12FF7FA217F85B161F5B48C813F012700078ED3FE0A26C16C0 -167F6CEDFF80001F16006C6C495A6C6C13036C6CEB07F8D801F8EB1FF06CB4EB7FE06DB5 -1280011F49C7FC010713F8010013C02E517ACE3B>53 DI<121EA2121F13F090B812C0A4481780A218005FA2003CC9123C00385E0078167017 -F000704B5A5F16034C5A94C7FC485D161E5EC9123816785E5E15014B5A5E15074BC8FCA2 -151E153E153C157C157815F8A24A5AA21403A25D1407A2140FA25D141FA3143FA3147F5D -A414FFA65BAC6D90C9FC143C32537AD03B>III<120FEA3FC0EA7FE0EAFFF0A6 -EA7FE0EA3FC0EA0F00C7FCB3A9120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F000C33 -76B221>I64 DII70 DII<49B612FEA490C7003F138092 -380FFE001507B3B3B3A21206EA3FC0487E487EA44B5AA25B007F5D0180131F0078C75B6C -143F003E4A5A6C5D6C6C495A2707E003FEC7FC3901FC07FC6CB512F0013F13C0D907FCC8 -FC2F547BD13C>74 D77 DII82 DI<003FBB -12C0A449C79038F0000701F06E48130001C0183F48C8EE0FE0007E1907007C1903A20078 -1901A400701900A500F01AF0481A70A6C91700B3B3AC4C7E030313FC027FB712E0A44C51 -7CD055>I87 -D97 -DII<17FF4BB5FCA4ED0007160182B3A6EC0FF8EC7FFF49B512E0903907FC -03F090391FE0007C49487F49C7120F01FE80484880485A000781484880A2485AA2485AA2 -127FA35B12FFAB127FA27FA2123FA27F121FA26C6C5C00075D7F6C6C5C6C6C5C6C6C021E -7F6D6C017C13E0D91FC049EBFF8090390FF807E00103B512800100495ADA1FF091C7FC39 -547CD241>II<157F913803FFE0020F13F091383FC0 -F891387F01FC903901FE03FE903803FC0714F81307EB0FF0A290391FE003FCED01F892C7 -FC495AB3B612FEA426003FC0C7FCB3B3A580EBFFF0007FEBFFF8A427547DD324>III<1378EA01FE487E487F -A66C90C7FC6C5AEA007890C8FCB0EB7F80B5FCA41203C6FC137FB3B3A43801FFE0B61280 -A419507CCF21>II108 -D<01FFD907FEEC03FFB590261FFFC0010F13E0037F01F0013F13F8912701F80FFC9038FC -07FE913D03C003FE01E001FF000390260700019038038000C6010E6D6C48C76C7E6D48DA -7F8E6E7E4A159CA24ADA3FF86E7E02605D14E04A5DA34A5DB3AD2601FFE0DAFFF0EC7FF8 -B6D8C07F9026FFE03FB512F0A45C347CB363>I<01FFEB07FCB590383FFF8092B512E091 -3901F00FF8913903C007FC000349C66C7EC6010E13016D486D7E5C143002706E7E146014 -E05CA35CB3AD2601FFE0903801FFE0B600C0B612C0A43A347CB341>II<90397F8007FCB590387FFF800281B512E0913987F00FF891398F8003FC00 -0190399E0001FF6C01BC6D7FD97FF86E7E4A6E7E4A6E7E4A140F844A6E7EA2717EA3717E -A4711380AB4D1300A44D5AA24D5AA2606E140F4D5A6E5D6E4A5A6E4A5A02BC4AC7FC029E -495A028FEB07FC913987E01FF00281B512C0DA807F90C8FCED0FF892CAFCB13801FFE0B6 -12C0A4394B7DB341>I<01FFEB1F80B5EB7FF0913801FFF8913803E1FC91380783FE0003 -EB0F07C6131EEB7F1C1438143091387003FC91386000F0160014E05CA45CB3AA8048487E -B612F0A427347DB32E>114 DIII< -007FB5D8800FB51280A4C69026FC0003EBF000D93FF86D1380011F4BC7FC010F15F80107 -5D6D6C5C6E495A6D6C5C6D14076E6C48C8FCEDC01E6E6C5A021F133891380FF0786F5A91 -3807FDE002035BEC01FF5E80157F6F7E824B7E15FFEDE7F802017F913803C3FEEC07814A -C67E020E80021E6D7E4A133F4A6D7E4A80707E4948130749486D7E010781010F6E7E013F -8201FF8200076D010713F0B500F8011FEBFFE0A43B337FB23E>120 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fi cmr17 20.74 26 -/Fi 26 120 df46 D48 D50 -DI66 D70 DI78 D82 D<001FBE12F8A502F8C7000F01F0C7121F4801806E4902 -0113FC01FCC86C49EC003F491B1F01E01B07491B03491B0190C91800A2003E1D7CA2003C -1D3CA3481D1EA500701D0EA8481D07A6CA1900B3B3B3B14D7F4D7F057F13FE031FB812F8 -A568757BF473>84 D86 D<913803FF80021F13F891B512FE903A -03FC01FF80903A07E0003FE0D91F80EB0FF8013EC76C7E496E7E01F06E7E48486E7F717E -4848153F4982D807A06F7E13FC487E6D6F7E80A2717EA46C90C8FC6C5A6C5ACAFCA6EE07 -FF0303B5FC157F913903FFFE07021F138091387FF800903801FFC0010790C7FCEB1FFCEB -3FF0EBFFE0485B485B4890C8FC5B485A485AA2485A1A0E485AA312FF5B170FA4171FA26D -153F007F163B177B6DDBF1FE131C003F16E16C6C14016C6C912603C0FF13386C6CEC0F80 -6C6C6C903A1F007F80706C6D017CECE1E028007FF803F8EB3FFF011FB500E06D13800103 -91C7000713009026003FF8EC01FC474D79CB4F>97 D99 D101 D103 D<131EEB7F80497E487F487FA66C5B6C5B -6D5A011EC7FC90C8FCB3A7EB01F0EA07FFB5FCA51201EA007F133FA2131FB3B3B3A3497E -EBFFFEB612FCA51E727AF12A>105 D107 DIIII114 DI<1407 -A85CA65CA35CA35CA25CA25BA25B5B5B5B5B5B48B712FE120FB8FCA3D8000190C9FCB3B3 -A2EF01C0B0EF03806D7FA3027FEC0700815F6E6C130E021F141E6F131C6E6C5B6E6C13F8 -913901FF01F09139007FFFC0031F5BDB03FCC7FC326B7EE93D>I<02F8EE0F80D803FFEE -3FFFB5030FB5FCA5C6EE000F013F1603011F82A2010F82B3B3A660A460A3601307606E15 -0E0103161E606E4B7F010116706D6C03F07F6FD903E013F86E6C4948EBFFF8DA1FE0EB1F -00DA0FFE13FE0203B512F8DA007F13E0030790C7EBC0004D4C7ACA58>I119 D E -%EndDVIPSBitmapFont -end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: a4 -a4 -%%EndPaperSize - -%%EndSetup -%%Page: 1 1 -1 0 bop 1440 951 a Fi(Release)53 b(Notice)950 1158 y(BlueGn)l(u)f(T)-13 -b(esting)52 b(F)-13 b(ramew)l(ork)1501 1366 y(V)g(ersion)53 -b(2.0.3)1297 1661 y Fh(Jan-Willem)36 b(Neurden)m(burg)1593 -1811 y(jotOmega)f(dsc)1379 1960 y(56)j(Brigham)d(Hill)j(Road)1303 -2110 y(Grafton)f(MA)78 b(01519-1135)1356 2259 y(neurden)m(burg)s -(j@acm.org)1444 2409 y(T)-10 b(el:)50 b(\(508\))37 b(839-0276)1430 -2558 y(F)-10 b(ax:)51 b(\(508\))37 b(839-7267)1442 2792 -y(Septem)m(b)s(er)g(19,)g(1999)324 3228 y Fg(1)161 b(In)l(tro)t -(duction)324 3448 y Ff(BlueGn)m(u)35 b(is)g(a)h(framew)m(ork)f(for)g -(testing)g(other)h(programs.)52 b(It)35 b(has)h(b)s(een)h(created)f(to) -324 3568 y(b)s(e)30 b(compatible)e(with)i(DejaGn)m(u.)42 -b(Its)31 b(purp)s(ose)f(is)g(to)g(pro)m(vide)g(a)g(single)f(fron)m(t)g -(end)i(for)324 3688 y(all)f(tests.)45 b(Bey)m(ond)34 -b(this,)e(BlueGn)m(u)h(o\013ers)g(sev)m(eral)g(adv)-5 -b(an)m(tages)33 b(for)f(testing:)469 3913 y Fe(\017)49 -b Ff(The)25 b(\015exibilit)m(y)e(and)i(consistency)h(of)e(the)h(BlueGn) -m(u)f(framew)m(ork)h(mak)m(es)g(it)f(easy)568 4033 y(to)k(write)g -(tests)h(for)f(an)m(y)h(program,)f(with)g(the)h(exception)g(of)e(GUI)i -(applications.)469 4236 y Fe(\017)49 b Ff(BlueGn)m(u)33 -b(pro)m(vides)h(a)f(la)m(y)m(er)h(of)e(abstraction,)h(whic)m(h)h(mak)m -(es)g(all)d(tests)k(\(if)d(cor-)568 4356 y(rectly)39 -b(written\))f(p)s(ortable)g(to)h(an)m(y)g(host)g(or)g(target)f(where)i -(a)f(program)e(m)m(ust)568 4477 y(b)s(e)32 b(tested.)469 -4679 y Fe(\017)49 b Ff(BlueGn)m(u)37 b(is)g(written)h(in)f([incr)g -(Tcl],)i(whic)m(h)f(in)f(turn)g(is)h(based)g(on)g(Tcl)f(\(T)-8 -b(o)s(ol)568 4800 y(Command)31 b(Language\).)43 b(The)34 -b(framew)m(ork)e(comprises)h(t)m(w)m(o)g(parts:)658 5002 -y(1.)48 b(the)33 b(testing)g(framew)m(ork,)1918 5251 -y(1)p eop -%%Page: 2 2 -2 1 bop 658 548 a Ff(2.)48 b(the)33 b(test-suites)h(or)e(test-sets)i -(themselv)m(es.)469 751 y Fe(\017)49 b Ff(BlueGn)m(u)31 -b(will)e(w)m(ork)j(with)f(an)m(y)h(Tcl)f(based)i(in)m(terpreter)e(as)h -(long)e(as)i([incr)f(Tcl])568 872 y(has)f(b)s(een)h(included.)42 -b(Y)-8 b(ou)30 b(can)h(include)e('exp)s(ect',)j('Tk',)g(and/or)e(other) -g(exten-)568 992 y(sions.)469 1196 y Fe(\017)49 b Ff(Includes)33 -b(DejaGn)m(u)f(release)h(1.6)324 1528 y Fg(2)161 b(Requiremen)l(ts)324 -1747 y Ff(The)47 b(follo)m(wing)d(mo)s(dules)i(should)g(ha)m(v)m(e)i(b) -s(een)g(installed,)g(b)s(efore)f(y)m(ou)g(can)g(install)324 -1868 y(and/or)32 b(use)h(BlueGn)m(u:)469 2096 y Fe(\017)49 -b Ff(Tcl)32 b(release)h(8.0)f(or)g(higher,)469 2299 y -Fe(\017)49 b Ff(incr)32 b(Tcl)g(release)h(3.0)f(or)g(higher.)470 -2528 y(An)m(y)g(other)f(extensions)i(that)d(is)h(compatible)e(with)h -(Tcl)h(release)g(8.0)g(can)g(b)s(e)g(used)324 2648 y(as)i(w)m(ell.)324 -2981 y Fg(3)161 b(Structure)51 b(and)j(Con)l(ten)l(ts)c(of)k(the)f -(Release)324 3200 y Ff(The)24 b(ro)s(ot)f(directory)g(of)g(the)h -(release)g(con)m(tains)g(the)g(README)g(\014les)f(with)g(installation) -324 3320 y(instructions)40 b(and)h(the)g(\014les)g(needed)h(to)e(build) -g(and)g(install)f(this)h(pro)s(duct.)68 b(It)41 b(also)324 -3441 y(con)m(tains)32 b(the)h(executable)h(scripts)f(of)f(the)h(BlueGn) -m(u)g(testing)f(framew)m(ork.)470 3561 y(The)i(top-lev)m(el)d -(directories)h(are)h(listed)f(b)s(elo)m(w:)324 3789 y -Fd(lib:)47 b Ff(the)28 b(pac)m(k)-5 b(ages)29 b(and)e(pro)s(cedures)i -(that)f(mak)m(e)f(the)h(BlueGn)m(u)g(and)f(DejaGn)m(u)g(test-)568 -3910 y(ing)k(framew)m(ork.)44 b(This)33 b(also)e(includes)i(the)g -(default)f(target)g(de\014nition)f(\014les.)324 4113 -y Fd(testsets:)48 b Ff(the)31 b(BlueGn)m(u)e(test-suites)i(and)f(test)g -(examples.)43 b(It)30 b(con)m(tains)g(the)g(follo)m(w-)568 -4234 y(ing)h(sub)s(directories.)568 4462 y Fd(BlueGn)m(u:)48 -b Ff(test)34 b(scripts)f(to)f(test)h(the)g(testing)f(framew)m(ork)h -(itself.)568 4624 y Fd(examples:)48 b Ff(test)34 b(suite)e(and)h(test)g -(script)g(examples.)568 4786 y Fd(con\014g,)38 b(lib,)e(to)s(ols:)48 -b Ff(curren)m(tly)41 b(empt)m(y)-8 b(,)42 b(but)f(can)f(b)s(e)g(used)i -(for)d(test-set)j(de-)782 4906 y(p)s(enden)m(t)34 b(con\014guration)e -(\014les,)h(library)e(\014les,)h(and)h(to)s(ols.)1918 -5251 y(2)p eop -%%Page: 3 3 -3 2 bop 324 548 a Fd(con\014g:)49 b Ff(curren)m(tly)33 -b(empt)m(y)-8 b(.)324 751 y Fd(do)s(c:)49 b Ff(the)28 -b(DejaGn)m(u)f(texinfo)g(source)i(and)e(the)h(do)s(cumen)m(tation)f(in) -g('info',)g('dvi',)i('ps',)568 872 y(and)42 b('p)s(df)7 -b(')43 b(represen)m(tation,)j(resp)s(ectiv)m(ely)e(dejagn)m(u.info*,)g -(dejagn)m(u.dvi,)i(de-)568 992 y(jagn)m(u.ps,)33 b(and)g(dejagn)m(u.p)s -(df.)44 b(A)32 b(DejaGn)m(u)h(man)e(page)i(is)f(also)g(a)m(v)-5 -b(ailable.)568 1154 y(It)37 b(also)g(con)m(tains)g(the)h(T)1493 -1175 y(E)1547 1154 y(X)g(v)m(ersion)g(\(README.tex\))h(of)e(this)g(do)s -(cumen)m(t)g(as)568 1274 y(w)m(ell)c(as)h(the)g('dvi',)h('ps')g('h)m -(tml',)e(and)h('p)s(df)7 b(')34 b(represen)m(tation,)h(resp)s(ectiv)m -(ely)g(no-)568 1395 y(tice.dvi,)d(notice.ps,)h(notice.h)m(tml,)e(and)i -(notice.p)s(df.)324 1598 y Fd(testsuite:)48 b Ff(con)m(tains)32 -b(a)g(mixture)g(of)g(DejaGn)m(u)h(and)f(BlueGn)m(u)h(test)g(scripts.) -324 1802 y Fd(con)m(trib:)47 b Ff(con)m(tains)33 b(examples)g(ho)m(w)g -(DejaGn)m(u)f(is)g(used)i(at)e(Cygn)m(us.)324 2005 y -Fd(example:)48 b Ff(con)m(tains)39 b(a)f(full)f(DejaGn)m(u)h(test)h -(framew)m(ork)f(example)g(for)g(testing)g(the)568 2125 -y(program)31 b('calc')h(whic)m(h)h(is)f(also)g(included.)324 -2458 y Fg(4)161 b(Installation)55 b(and)f(use)f(under)f(Unix)324 -2677 y Ff(Before)37 b(y)m(ou)h(can)f(install)d(and)k(use)f(BlueGn)m(u)g -(y)m(ou)h(need)g(to)f(ha)m(v)m(e)h(installed)d(the)i(fol-)324 -2798 y(lo)m(wing)31 b(three)i(pac)m(k)-5 b(ages:)469 -3001 y Fe(\017)49 b Ff(Tcl)32 b(v)m(ersion)h(8.0.3)469 -3204 y Fe(\017)49 b Ff(Tk)33 b(v)m(ersion)g(8.0.3)469 -3408 y Fe(\017)49 b Ff(incr)32 b(Tcl)g(v)m(ersion)h(3.0.1)324 -3611 y(The)42 b(source)g(for)e(these)i(pac)m(k)-5 b(ages)42 -b(should)f(all)e(b)s(e)i(lo)s(cated)f(in)g(one)h(directory)-8 -b(.)69 b(The)324 3732 y(sub)s(directory)33 b(in)f(the)h(directory)f -(should)h(b)s(e:)469 3935 y Fe(\017)49 b Ff(tcl8.0.3)469 -4138 y Fe(\017)g Ff(tk8.0.3)469 4342 y Fe(\017)g Ff(itcl3.0.1)470 -4545 y(The)27 b(follo)m(wing)d(examples)i(use)h(the)f(command)f -(`./con\014gure)i({pre\014x=/to)s(ols/...`.)324 4666 -y(This)33 b(will)e(install)g(all)g(pac)m(k)-5 b(ages)34 -b(in)e(a)h(directory)g(\\/to)s(ols".)43 b(When)35 b(y)m(ou)e(omit)f -(the)h(\\{)324 4786 y(pre\014x"-switc)m(h)26 b(then)g(the)g -(installation)c(default)j(will)e(b)s(e)j(the)g(directory)f(\\/usr/lo)s -(cal".)1918 5251 y(3)p eop -%%Page: 4 4 -4 3 bop 324 548 a Fc(4.1)135 b(Installation)47 b(of)e(needed)h(P)l(ac)l -(k)-7 b(ages)324 733 y Ff(When)33 b(y)m(ou)g(ha)m(v)m(e)h(not)e -(installed)f(Tcl)h(and)h(the)f(other)h(needed)h(extensions,)g(then)f(y) -m(ou)324 853 y(need)26 b(to)f(retriev)m(e)h(the)f(sources)i(from)d -(\\www.tcltk.com/itcl".)40 b(Y)-8 b(ou)25 b(need)h(to)f(`gunzip`)324 -973 y(the)31 b(\014les)g(and)g(do)g(a)g(`tar)g(xf`)g(of)g(all)e(these)j -(pac)m(k)-5 b(ages)32 b(in)e(one)h(directory)-8 b(,)32 -b(let's)f(call)e(this)324 1094 y(directory)j(\\TclTk".)470 -1214 y(F)-8 b(rom)38 b(the)i(directory)f(\\TclTk",)i(y)m(ou)f(should)g -(do)f(the)h(follo)m(wing)c(to)j(install)e(the)324 1335 -y(pac)m(k)-5 b(ages:)324 1563 y Fb(\045)51 b(cd)h(tcl8.0.3/unix)324 -1683 y(\045)f(./configure)k(--prefix=/tools/tcl8.0.3)i(--enable-gcc)e -(--enable-shared)324 1804 y(\045)c(make)324 1924 y(\045)g(mkdir)i -(/tools/tcl8.0.3)324 2044 y(\045)e(make)i(install)324 -2165 y(\045)e(cd)h(../../tk8.0.3/unix)324 2285 y(\045)f(./configure)k -(--prefix=/tools/tk8.0.3)i(--enable-gcc)d(--enable-shared)324 -2406 y(\045)d(make)324 2526 y(\045)g(mkdir)i(/tools/tk8.0.3)324 -2646 y(\045)e(make)i(install)324 2767 y(\045)e(cd)h(../../itcl3.0.1)324 -2887 y(\045)f(./configure)k(--prefix=/tools/itcl3.0.1)i(--enable-gcc)e -(--enable-shared)324 3007 y(\045)c(make)324 3128 y(\045)g(mkdir)i -(/tools/itcl3.0.1)324 3248 y(\045)e(make)i(install)324 -3537 y Fc(4.2)135 b(Installing)47 b(BlueGn)l(u)324 3722 -y Ff(Y)-8 b(ou)41 b(can)g(no)m(w)h(`gunzip`)f(and)g(`tar)g(xf`)g(the)h -(BlueGn)m(u)f(v)m(ersion)h(2.0.3)e(in)h(the)g(direc-)324 -3842 y(tory)f(\\Tc)m(kTk".)68 b(This)40 b(will)e(create)j(the)f -(directory)g(\\bluegn)m(u2.0.3".)66 b(No)m(w)40 b(do)g(the)324 -3963 y(follo)m(wing:)324 4191 y Fb(\045)51 b(cd)h(bluegnu2.0.3)324 -4311 y(\045)f(./configure)k(--prefix=/tools/bluegnu2.0.)q(3)324 -4432 y(\045)c(make)324 4552 y(\045)g(mkdir)i(/tools/bluegnu2.0.3)324 -4672 y(\045)e(make)i(install)470 4901 y Ff(This)33 b(will)d(install)g -(BlueGn)m(u)j(in)f(the)h(directories:)1918 5251 y(4)p -eop -%%Page: 5 5 -5 4 bop 469 548 a Fe(\017)49 b Ff(/to)s(ols/bluegn)m(u2.0.3/bin)469 -751 y Fe(\017)g Ff(/to)s(ols/bluegn)m(u2.0.3/lib/bluegn)m(u)469 -955 y Fe(\017)g Ff(/to)s(ols/bluegn)m(u2.0.3/info)469 -1158 y Fe(\017)g Ff(/to)s(ols/bluegn)m(u2.0.3/man)324 -1447 y Fc(4.3)135 b(Using)46 b(BlueGn)l(u)324 1632 y -Ff(When)39 b(y)m(ou)g(ha)m(v)m(e)h(installed)c([incr)i(Tcl])h(and)f -(BlueGn)m(u)h(and)f(y)m(ou)h(ha)m(v)m(e)h(the)f(resp)s(ec-)324 -1752 y(tiv)m(e)23 b(\\bin")f(directories)h(in)f(y)m(our)i(P)-8 -b(A)g(TH)24 b(v)-5 b(ariable,)23 b(then)h(y)m(ou)g(can)f(start)g -(running)g(some)324 1872 y(tests.)41 b(Y)-8 b(ou)21 b(can)h(go)g(in)m -(to)f(the)h(BlueGn)m(u)f(source)i(directory)f(\\bluegn)m -(u2.0.3/testsets/examples")324 1993 y(and)32 b(run)h(the)g(follo)m -(wing:)324 2221 y Fb(\045)51 b(bluegnu)i(versionTcl.itcl)324 -2342 y(\045)e(bluegnu)i(ts_001)324 2462 y(\045)e(bluegnu)i(ts_002)324 -2582 y(\045)e(bluegnu)i(ts_003)470 2811 y Ff(The)37 b(ab)s(o)m(v)m(e)f -(test)g(result)g(should)f(all)f(b)s(e)i(P)-8 b(ASS.)36 -b(The)h(follo)m(wing)c(test)j(will)d(giv)m(e)j(a)324 -2931 y(result)c(UNKNO)m(WN,)i(b)s(ecause)g(no)e(pass/fail)f -(instruction)h(ha)m(v)m(e)i(b)s(een)f(giv)m(en.)324 3159 -y Fb(\045)51 b(bluegnu)i(tc001)470 3388 y Ff(The)34 b(last)d(test)j(y)m -(ou)f(can)g(run)g(will)d(fail)g(in)i(its)g(simple)f(form:)324 -3616 y Fb(\045)51 b(bluegnu)i(tc002)470 3844 y Ff(But)33 -b(will)d(pass)k(if)d(y)m(ou)i(execute)i(the)e(test)g(as)g(follo)m(ws:) -324 4073 y Fb(\045)51 b(bluegnu)i(tc002[English])470 -4301 y Ff(This)46 b(is)g(b)s(ecause)i(the)e(test)h(scripts)g(need)g(a)f -(test)h(case)g(iden)m(ti\014er)f(to)f(\014nd)i(the)324 -4421 y(correct)33 b(b)s(enc)m(hmark)g(co)s(de.)1918 5251 -y(5)p eop -%%Page: 6 6 -6 5 bop 324 548 a Fg(5)161 b(Changes)324 796 y Fc(5.1)135 -b(V)-11 b(ersion)45 b(2.0.3)324 981 y Ff(This)37 b(b)s(eing)f(the)i -(\014rst)f(public)f(release)i(it)d(is)i(not)g(to)g(useful)g(to)f(list)g -(all)f(the)i(c)m(hanges.)324 1101 y(BlueGn)m(u)46 b(has)g(b)s(een)h(mo) -s(deled)e(after)h(DejaGn)m(u)g(and)g(is)g(a)g(complete)f(new)i(imple-) -324 1222 y(men)m(tation)31 b(whic)m(h)i(has)g(b)s(een)g(tested)g -(thoroughly)-8 b(.)43 b(When)33 b(do)s(cumen)m(tation)e(is)h(b)s(eing) -324 1342 y(written)e(more)f(c)m(hanges)j(will)c(b)s(e)i(made.)42 -b(An)31 b(example)e(of)h(some)g(of)f(these)j(c)m(hanges)f(as)324 -1462 y(a)k(result)f(of)h(this)g(do)s(cumen)m(tation)f(e\013ort)h(can)g -(b)s(e)g(found)g(in)f(the)i(test-suites)g(ts)p Fb(_)p -Ff(001,)324 1583 y(ts)p Fb(_)p Ff(002,)d(and)g(ts)p Fb(_)p -Ff(003.)45 b(The)34 b(\014rst)f(t)m(w)m(o)h(are)f(not)g(as)g(easy)h(to) -e(write)h(as)g(the)h(third.)44 b(The)324 1703 y(test)33 -b(suite)g(ts)p Fb(_)p Ff(001)f(is)g(a)g(script)h(implemen)m(tation)c -(of)k(the)g(command)e(line:)324 1906 y Fb(\045)51 b(cd)h -(bluegnu2.0.3/testsets)324 2027 y(\045)f(bluegnu)i -(examples/tc002[English=)q(B])k(\\)324 2147 y(>)51 b -("examples/tc002[Dutch=B])q(={M)q(SG=H)q(allo)58 b(Wereld}")324 -2351 y Ff(This)35 b(ma)m(y)g(b)s(e)g(useful)g(for)g(simple)e(tests)k -(but)e(when)h(y)m(ou)g(w)m(an)m(t)g(to)f(write)f(more)h(com-)324 -2471 y(plex)28 b(test-suite)f(scripts)i(y)m(ou)f(w)m(ould)g(lik)m(e)f -(some)g(more)g(\015exibilit)m(y)-8 b(,)27 b(so)h(t)m(w)m(o)g(pro)s -(cedures)324 2591 y(w)m(ere)39 b(in)m(tro)s(duced,)f(whic)m(h)g(are)g -(sho)m(wn)g(in)f(test-suite)h(ts)p Fb(_)p Ff(002.)58 -b(This)37 b(mak)m(es)h(writing)324 2712 y(rather)g(complex)g(so)h(the)g -(pro)s(cedures)h(ha)m(v)m(e)g(b)s(ecome)f(part)f(of)g(the)h(pro)s -(cedures)h('ap-)324 2832 y(p)s(endQueue',)32 b('prep)s(endQueue',)h -(and)d('run)m(test'.)44 b(The)30 b(resulting)f(script)h(is)f(sho)m(wn)i -(in)324 2953 y(test-suit)h(ts)p Fb(_)p Ff(003.)470 3073 -y(Changes)i(lik)m(e)e(this)g(will)e(b)s(e)j(made)f(in)g(the)h(future!) -324 3406 y Fg(6)161 b(F)-13 b(uture)52 b(Enhancemen)l(ts)324 -3625 y Ff(The)33 b(follo)m(wing)d(enhancemen)m(ts)35 -b(are)d(b)s(eing)g(planned:)469 3828 y Fe(\017)49 b Ff(T)-8 -b(arget)24 b(co)s(de)h(will)e(b)s(e)i(made)f(in)m(to)g(a)g(class)h -(with)f(metho)s(ds)h('start',)h('load',)f('exit',)568 -3949 y(and)d('v)m(ersion'.)40 b(Instead)23 b(of)e(the)h(curren)m(t)h(') -p Fa(<)p Ff(target)p Fa(>)p Fb(_)p Ff(start',)h(')p Fa(<)p -Ff(target)p Fa(>)p Fb(_)p Ff(load',)568 4069 y(')p Fa(<)p -Ff(target)p Fa(>)p Fb(_)p Ff(exit',)33 b(and)g(')p Fa(<)p -Ff(target)p Fa(>)p Fb(_)p Ff(v)m(ersion',)h(whic)m(h)g(ha)m(v)m(e)h(b)s -(een)f(tak)m(en)g(from)568 4189 y(DejaGn)m(u.)469 4393 -y Fe(\017)49 b Ff(Pro)s(cedures)34 b(will)d(b)s(e)i(created)h(that)f -(mak)m(e)g(it)f(easy)i(to)f(test)h(WEB)f(application)568 -4513 y(from)e(the)i(framew)m(ork.)469 4716 y Fe(\017)49 -b Ff(Other)34 b(enhancemen)m(ts)i(will)31 b(b)s(e)j(made)g(dep)s -(ending)g(on)g(the)g(use)h(of)f(the)g(frame-)568 4837 -y(w)m(ork)f(in)f(testing)g(di\013eren)m(t)h(applications.)1918 -5251 y(6)p eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF diff --git a/contrib/bluegnu2.0.3/example/Makefile.in b/contrib/bluegnu2.0.3/example/Makefile.in deleted file mode 100644 index 3fc31ac..0000000 --- a/contrib/bluegnu2.0.3/example/Makefile.in +++ /dev/null @@ -1,98 +0,0 @@ -VPATH = @srcdir@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = $(exec_prefix)/bin -libdir = $(exec_prefix)/lib -tooldir = $(libdir)/$(target_alias) -datadir = $(exec_prefix)/lib/dejagnu -mandir = $(prefix)/man - -infodir = $(prefix)/info -includedir = $(prefix)/include -docdir = $(datadir)/doc -targetdir = $(datadir)/$(target_canonical) - -SHELL = /bin/sh - -# Examples don't get installed -INSTALL = -INSTALL_PROGRAM = $(INSTALL) -INSTALL_DATA = $(INSTALL) - -CC = @CC@ -CFLAGS = -g -SUBDIRS = @subdirs@ -RUNTEST = runtest -RUNTESTFLAGS = - -FLAGS_TO_PASS = \ - "CC=$(CC)" \ - "CFLAGS=$(CFLAGS)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "LDFLAGS=$(LDFLAGS)" \ - "MAKEINFO=$(MAKEINFO)" \ - "RUNTEST=$(RUNTEST)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "exec_prefix=$(exec_prefix)" \ - "prefix=$(prefix)" \ - "tooldir=$(tooldir)" - -#### host, target, and site specific Makefile frags come in here. - -all: force - @$(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS) - -.PHONY: info install install-info check installcheck dvi -info: -install: -dvi: -install-info: -check: -installcheck: - -.NOEXPORT: -MAKEOVERRIDES= - -check: force - rootme=`pwd`; export rootme; $(MAKE) DO=check DODIRS=calc subdir_do - -subdir_do: force - @for i in $(SUBDIRS); do \ - echo "Making $(DO) in $${i}..." ; \ - if [ -d ./$$i ] ; then \ - if (rootme=`pwd`/ ; export rootme ; \ - rootsrc=`cd $(srcdir); pwd`/ ; export rootsrc ; \ - cd ./$$i; \ - $(MAKE) $(FLAGS_TO_PASS) $(DO)) ; then true ; \ - else exit 1 ; fi ; \ - else true ; fi ; \ - done -force: - -clean mostlyclean: - -rm -f \#* *~ core *.o a.out xgdb *.x - @$(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS) - -distclean maintainer-clean realclean: clean - @$(MAKE) subdir_do DO=$@ $(FLAGS_TO_PASS) - -rm -f *~ core - -rm -f Makefile *-init.exp site.* - -rm -f config.status config.log config.cache - -rm -fr *.log summary detail - -Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) config.status - @echo "Rebuilding the Makefile..." - $(SHELL) ./config.status - -configure: $(srcdir)/configure.in $(srcdir)/Makefile.in $(srcdir)/../aclocal.m4 - @echo "Rebuilding configure..." - @cd ${srcdir} ;\ - autoconf --localdir=${srcdir}/.. - -config.status: - @echo "Rebuilding config.status..." - $(SHELL) ./config.status --recheck diff --git a/contrib/bluegnu2.0.3/example/calc/Makefile.in b/contrib/bluegnu2.0.3/example/calc/Makefile.in deleted file mode 100644 index ecd1283..0000000 --- a/contrib/bluegnu2.0.3/example/calc/Makefile.in +++ /dev/null @@ -1,112 +0,0 @@ -# Copyright (C) 1988, 1990, 1991, 1992, 1994 Free Software Foundation, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 1, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# - -# target name -PROG= calc - -# compiler specifics -CC = @CC@ -CFLAGS = -g -I$(srcdir) -I. -CALC = calc - -# directory specifics -VPATH = @srcdir@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -# testsuite specifics -# Setup the testing framework, if you have one -# Flags that we pass when building the testsuite. -EXPECT = ` \ - if [ -f $${rootme}/../../../expect/expect ] ; then \ - echo $${rootme}/../../../expect/expect ; \ - else echo expect ; fi` - -RUNTEST = ` \ - if [ -f $${srcdir}/../../../dejagnu/runtest ] ; then \ - echo $${srcdir}/../../../dejagnu/runtest ; \ - else echo runtest ; fi` - -RUNTESTFLAGS= - -## --- NOTHING BELOW HERE SHOULD REQUIRE MODIFICATIONS --- ## - -SRCS= calc.c - -OBJS= calc.o - -all: ${PROG} - -calc.o: calc.c - -.c.o: - ${CC} ${CFLAGS} -I$(srcdir) -I. -c $< - -${PROG}: ${OBJS} ${DPADD} - ${CC} ${LDFLAGS} ${CFLAGS} -o $@ ${OBJS} ${DPADD} ${LDADD} - -check: site.exp all - rootme=`pwd`; export rootme; \ - srcdir=${srcdir} ; export srcdir ; \ - EXPECT=${EXPECT} ; export EXPECT ; \ - if [ -f $${rootme}/../../expect/expect ] ; then \ - TCL_LIBRARY=$${srcdir}/../../tcl/library ; \ - export TCL_LIBRARY ; fi ; \ - ${RUNTEST} ${RUNTESTFLAGS} --tool ${PROG} CALC=${PROG} --srcdir ${srcdir}/testsuite - -site.exp: ./config.status Makefile - @echo "Making a new config file..." - -@rm -f ./tmp? - @touch site.exp - - -@mv site.exp site.bak - @echo "## these variables are automatically generated by make ##" > ./tmp0 - @echo "# Do not edit here. If you wish to override these values" >> ./tmp0 - @echo "# add them to the last section" >> ./tmp0 - @echo "set tool calc" >> ./tmp0 - @echo "set srcdir ${srcdir}" >> ./tmp0 - @echo "set objdir `pwd`" >> ./tmp0 - @echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0 - @cat ./tmp0 > site.exp - @cat site.bak | sed \ - -e '1,/^## All variables above are.*##/ d' >> site.exp - -@rm -f ./tmp? - -install: ${PROG} - -clean mostlyclean: - -rm -f a.out [Ee]rrs tags mklog core ${OBJS} ${PROG} - -distclean maintainer-clean realclean: clean - -rm -f Makefile - -rm -f config.status config.log config.cache - -rm -f calc.h calc.log calc.plog calc.psum - -rm -f calc.sum site.exp - -Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) config.status - @echo "Rebuilding the Makefile..." - $(SHELL) ./config.status - -configure: $(srcdir)/configure.in $(srcdir)/Makefile.in $(srcdir)/../../aclocal.m4 - @echo "Rebuilding configure..." - @cd ${srcdir} ;\ - autoconf --localdir=${srcdir}/../.. - -config.status: - @echo "Rebuilding config.status..." - $(SHELL) ./config.status --recheck diff --git a/contrib/bluegnu2.0.3/example/calc/calc.1 b/contrib/bluegnu2.0.3/example/calc/calc.1 deleted file mode 100644 index ea60393..0000000 --- a/contrib/bluegnu2.0.3/example/calc/calc.1 +++ /dev/null @@ -1,29 +0,0 @@ -.\" -.TH SKEL 1 "28th Jan 1993" -.SH NAME -calc \- a very dumb calculator to demonstrate -.I deja-gnu -.SH SYNOPSIS -.B calc -.SH DESCRIPTION -.LP -.B calc -accepts the commands: -.TP -.B add #1 #2 -Add #1 and #2 and print the answer. -.TP -.B multiply #1 #2 -Multiply #1 and #2 and print the answer. -.TP -.B quit -.br -Exit -.TP -.B version -Print a version string. -.SH BUGS -.LP -.B multiply 2 n -gives the wrong answer (unless n == 0). - diff --git a/contrib/bluegnu2.0.3/example/calc/calc.c b/contrib/bluegnu2.0.3/example/calc/calc.c deleted file mode 100644 index 784e39b..0000000 --- a/contrib/bluegnu2.0.3/example/calc/calc.c +++ /dev/null @@ -1,65 +0,0 @@ -#ifdef HAVE_STDLIB_H -#include -#endif -#include -#include -#include "calc.h" - -static int words(); - -int main() -{ - char line[SIZE]; - int nword; - char *words[NWORD]; - - while(printf("calc: "), fflush(stdout), fgets(line,SIZE,stdin) != NULL) { - if((nword = split(line,words,NWORD)) == 0) continue; - if(strcmp(words[0],"add") == 0) { - if(nword != 3) { - printf("Usage: add #1 #2\n"); - } else { - printf("%d",atoi(words[1]) + atoi(words[2])); - } - } else if(strcmp(words[0],"multiply") == 0) { - if(nword != 3) { - printf("Usage: multiply #1 #2\n"); - } else { - int i1 = atoi(words[1]); - if(i1 == 2) i1 = 3; /* this is a bug */ - printf("%d",i1*atoi(words[2])); - } - } else if(strcmp(words[0],"quit") == 0) { - break; - } else if(strcmp(words[0],"version") == 0) { - printf("Version: %s",VERSION); - } else { - printf("Unknown command: %s",words[0]); - } - printf("\n"); - } - - return(0); -} - -int -split(line,words,nword) -char *line; -char **words; -int nword; /* number of elements in words */ -{ - int i; - - while(isspace(*line)) line++; - if(*line == '\0') return(0); - - for(i = 0;i < nword;i++) { - words[i] = line; - while(*line != '\0' && !isspace(*line)) line++; - if(*line == '\0') break; - *line++ = '\0'; - while(isspace(*line)) line++; - } - - return(i); -} diff --git a/contrib/bluegnu2.0.3/example/calc/calc.h.in b/contrib/bluegnu2.0.3/example/calc/calc.h.in deleted file mode 100644 index 1e420a7..0000000 --- a/contrib/bluegnu2.0.3/example/calc/calc.h.in +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Check for headers - */ -#ifndef __CALC_H__ -#define __CALC_H__ - -#undef HAVE_STDLIB_H - -/* - * Check for functions - */ -#undef HAVE_STRCMP - -#define NWORD 10 -#define SIZE 100 -#define VERSION "1.0 Beta" - -#endif /* __CALC_H__ */ diff --git a/contrib/bluegnu2.0.3/example/calc/configure b/contrib/bluegnu2.0.3/example/calc/configure deleted file mode 100755 index 4d61f01..0000000 --- a/contrib/bluegnu2.0.3/example/calc/configure +++ /dev/null @@ -1,812 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.4 -# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE - -# Initialize some other variables. -subdirs= - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -build | --build | --buil | --bui | --bu | --b) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=PREFIX install architecture-dependent files in PREFIX - [same as prefix] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR ---enable and --with options recognized:$ac_help -EOF - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.4" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LANG+set}" = set; then LANG=C; export LANG; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=calc.c - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - -CC=${CC-cc} - -# -# Look for various header files -# -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error -EOF -eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" -fi - CPP="$ac_cv_prog_CPP" -else - ac_cv_prog_CPP="$CPP" -fi -echo "$ac_t""$CPP" 1>&6 - -ac_safe=`echo "stdlib.h" | tr './\055' '___'` -echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -cat >> confdefs.h <<\EOF -#define HAVE_STDLIB_H 1 -EOF - -fi - - -# -# Look for various functions -# -echo $ac_n "checking for strcmp""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_func_strcmp'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -char strcmp(); - -int main() { return 0; } -int t() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_strcmp) || defined (__stub___strcmp) -choke me -#else -strcmp(); -#endif - -; return 0; } -EOF -if eval $ac_link; then - rm -rf conftest* - eval "ac_cv_func_strcmp=yes" -else - rm -rf conftest* - eval "ac_cv_func_strcmp=no" -fi -rm -f conftest* - -fi -if eval "test \"`echo '$ac_cv_func_'strcmp`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_STRCMP 1 -EOF - -else - echo "$ac_t""no" 1>&6 -fi - - -# -# Output Makefile with substitutions - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \ - >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -DEFS=-DHAVE_CONFIG_H - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.4" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir - -trap 'rm -fr `echo "Makefile calc.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 - -# Protect against being on the right side of a sed subst in config.status. -sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF -$ac_vpsub -$extrasub -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@CPP@%$CPP%g -s%@CC@%$CC%g - -CEOF -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust relative srcdir, etc. for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file -fi; done -rm -f conftest.subs - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' -ac_dC='\3' -ac_dD='%g' -# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='\([ ]\)%\1#\2define\3' -ac_uC=' ' -ac_uD='\4%g' -# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_eB='$%\1#\2define\3' -ac_eC=' ' -ac_eD='%g' - -CONFIG_HEADERS=${CONFIG_HEADERS-"calc.h"} -for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then - # Support "outfile[:infile]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - echo creating $ac_file - - rm -f conftest.frag conftest.in conftest.out - cp $ac_given_srcdir/$ac_file_in conftest.in - -EOF - -# Transform confdefs.h into a sed script conftest.vals that substitutes -# the proper values into config.h.in to produce config.h. And first: -# Protect against being on the right side of a sed subst in config.status. -# Protect against being in an unquoted here document in config.status. -rm -f conftest.vals -cat > conftest.hdr <<\EOF -s/[\\&%]/\\&/g -s%[\\$`]%\\&%g -s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp -s%ac_d%ac_u%gp -s%ac_u%ac_e%gp -EOF -sed -n -f conftest.hdr confdefs.h > conftest.vals -rm -f conftest.hdr - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >> conftest.vals <<\EOF -s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% -EOF - -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. -# Maximum number of lines to put in a single here document. -ac_max_here_lines=12 - -rm -f conftest.tail -while : -do - ac_lines=`grep -c . conftest.vals` - # grep -c gives empty output for an empty file on some AIX systems. - if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi - # Write a limited-size here document to conftest.frag. - echo ' cat > conftest.frag <> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS - echo 'CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in -' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals -done -rm -f conftest.vals - -cat >> $CONFIG_STATUS <<\EOF - rm -f conftest.frag conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > conftest.h - cat conftest.in >> conftest.h - rm -f conftest.in - if cmp -s $ac_file conftest.h 2>/dev/null; then - echo "$ac_file is unchanged" - rm -f conftest.h - else - rm -f $ac_file - mv conftest.h $ac_file - fi -fi; done - - - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - diff --git a/contrib/bluegnu2.0.3/example/calc/configure.in b/contrib/bluegnu2.0.3/example/calc/configure.in deleted file mode 100644 index 473e879..0000000 --- a/contrib/bluegnu2.0.3/example/calc/configure.in +++ /dev/null @@ -1,19 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT(calc.c) -AC_CONFIG_HEADER(calc.h) -CC=${CC-cc} - -# -# Look for various header files -# -AC_HEADER_CHECK(stdlib.h, ,AC_DEFINE(HAVE_STDLIB_H)) - -# -# Look for various functions -# -AC_FUNC_CHECK(strcmp, AC_DEFINE(HAVE_STRCMP)) - -# -# Output Makefile with substitutions -AC_SUBST(CC) -AC_OUTPUT(Makefile) diff --git a/contrib/bluegnu2.0.3/example/calc/testsuite/calc.test/calc.exp b/contrib/bluegnu2.0.3/example/calc/testsuite/calc.test/calc.exp deleted file mode 100644 index 73e99e4..0000000 --- a/contrib/bluegnu2.0.3/example/calc/testsuite/calc.test/calc.exp +++ /dev/null @@ -1,60 +0,0 @@ -set timeout 3 -# -# expectations that clean up in case of error. Note that `$test' is -# a purely local variable. -# -# The first of these is used to match any bad responses, and resynchronise -# things by finding a prompt. The second is a timeout error, and shouldn't -# ever be triggered. -# -expect_after { - -re "\[^\n\r\]*$prompt$" { - fail "$test (bad match)" - if { $verbose > 0 } { - regexp ".*\r\n(\[^\r\n\]+)(\[\r\n\])+$prompt$" \ - $expect_out(buffer) "" output - send_user "\tUnmatched output: \"$output\"\n" - } - } - timeout { - fail "$test (timeout)" - } -} -# -# Here are the tests -# -set test "version" -send "version\n" -expect { - -re "Version:.*$prompt$" { pass "version" } -} - -set test add1 -send "add 3 4\n" -expect { - -re "7+.*$prompt$" { pass "$test" } -} - -set test add2 -send "add 1 2 3\n" -expect { - -re "Usage: add #1 #2.*$prompt$" { pass "$test" } -} - -set test multiply1 -send "multiply 3 4\n" -expect { - -re "12.*$prompt$" { pass "$test" } -} - -set test multiply2 -send "multiply 2 4\n" -expect { - -re "8.*$prompt$" { pass "$test" } -} - -set test multiply3 -send "multiply 1 2 3\n" -expect { - -re "Usage: multiply #1 #2.*$prompt$" { pass "$test" } -} diff --git a/contrib/bluegnu2.0.3/example/calc/testsuite/config/unix.exp b/contrib/bluegnu2.0.3/example/calc/testsuite/config/unix.exp deleted file mode 100644 index aec9f40..0000000 --- a/contrib/bluegnu2.0.3/example/calc/testsuite/config/unix.exp +++ /dev/null @@ -1,49 +0,0 @@ -if ![info exists prompt] then { - set prompt "calc: " -} -# -# calc_version -- extract and print the version number of calc -# - -proc calc_version {} { - global CALC - global prompt - set tmp [exec echo "version" | $CALC] - regexp "$prompt *(\[^\n\]*)\n.*" $tmp tmp version - clone_output "[which $CALC] version $version\n" -} -# -# calc_load -- loads the program -# -proc calc_load { arg } { - # -} - -# -# calc_exit -- quit and cleanup -# -proc calc_exit {} { - send "quit\n" -} - -# -# calc_start -- start calc running -# -proc calc_start {} { - global CALC - global prompt - global spawn_id - global verbose - - if { $verbose > 1 } { - send_user "starting $CALC\n" - } - spawn $CALC - expect { - -re "No such file.*" { perror "Can't start $CALC"; exit 1 } - -re "$prompt$" { } - timeout { perror "Failed to spawn $CALC (timeout)"; exit 1 } - } -} - -calc_start diff --git a/contrib/bluegnu2.0.3/example/configure b/contrib/bluegnu2.0.3/example/configure deleted file mode 100755 index b9c061b..0000000 --- a/contrib/bluegnu2.0.3/example/configure +++ /dev/null @@ -1,697 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.4 -# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE - -# Initialize some other variables. -subdirs= - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -build | --build | --buil | --bui | --bu | --b) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=PREFIX install architecture-dependent files in PREFIX - [same as prefix] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR ---enable and --with options recognized:$ac_help -EOF - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.4" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LANG+set}" = set; then LANG=C; export LANG; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=Makefile.in - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - -CC=${CC-cc} - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - -subdirs="calc" - - - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \ - >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.4" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir - -trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 - -# Protect against being on the right side of a sed subst in config.status. -sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF -$ac_vpsub -$extrasub -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@subdirs@%$subdirs%g -s%@CC@%$CC%g - -CEOF -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust relative srcdir, etc. for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file -fi; done -rm -f conftest.subs - - - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - -if test "$no_recursion" != yes; then - - # Remove --cache-file and --srcdir arguments so they do not pile up. - ac_sub_configure_args= - ac_prev= - for ac_arg in $ac_configure_args; do - if test -n "$ac_prev"; then - ac_prev= - continue - fi - case "$ac_arg" in - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - ;; - *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; - esac - done - - for ac_config_dir in calc; do - - # Do not complain, so a configure script can configure whichever - # parts of a large source tree are present. - if test ! -d $srcdir/$ac_config_dir; then - continue - fi - - echo configuring in $ac_config_dir - - case "$srcdir" in - .) ;; - *) - if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; - else - { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; } - fi - ;; - esac - - ac_popdir=`pwd` - cd $ac_config_dir - - case "$srcdir" in - .) # No --srcdir option. We are building in place. - ac_sub_srcdir=$srcdir ;; - /*) # Absolute path. - ac_sub_srcdir=$srcdir/$ac_config_dir ;; - *) # Relative path. - ac_sub_srcdir=../$srcdir/$ac_config_dir ;; - esac - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_sub_srcdir/configure; then - ac_sub_configure=$ac_sub_srcdir/configure - elif test -f $ac_sub_srcdir/configure.in; then - ac_sub_configure=$ac_configure - else - echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2 - ac_sub_configure= - fi - - # The recursion is here. - if test -n "$ac_sub_configure"; then - - # Make the cache file name correct relative to the subdirectory. - # A "../" for each directory in /$ac_config_dir. - ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` - case "$cache_file" in - /*) ac_sub_cache_file=$cache_file ;; - *) # Relative path. - ac_sub_cache_file="$ac_dots$cache_file" ;; - esac - - echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir" - # The eval makes quoting arguments work. - if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir - then : - else - { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; } - fi - fi - - cd $ac_popdir - done -fi - diff --git a/contrib/bluegnu2.0.3/example/configure.in b/contrib/bluegnu2.0.3/example/configure.in deleted file mode 100644 index 36f3f46..0000000 --- a/contrib/bluegnu2.0.3/example/configure.in +++ /dev/null @@ -1,8 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT(Makefile.in) -CC=${CC-cc} - -AC_CONFIG_SUBDIRS(calc) - -AC_SUBST(CC) -AC_OUTPUT(Makefile) diff --git a/contrib/bluegnu2.0.3/install-sh b/contrib/bluegnu2.0.3/install-sh deleted file mode 100755 index 89fc9b0..0000000 --- a/contrib/bluegnu2.0.3/install-sh +++ /dev/null @@ -1,238 +0,0 @@ -#! /bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. -# - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -tranformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/contrib/bluegnu2.0.3/lib/BlueGnu_target.itcl b/contrib/bluegnu2.0.3/lib/BlueGnu_target.itcl deleted file mode 100644 index e1a9363..0000000 --- a/contrib/bluegnu2.0.3/lib/BlueGnu_target.itcl +++ /dev/null @@ -1,105 +0,0 @@ -# -# This script create a BlueGnu Target object -# - -verbose "BlueGnu Target Information ****" 3 - -proc BlueGnu {args} { - global nspTestSuite auto_path env - global testCases - - verbose "@@@@@@@@@@@ BlueGnu Target Initialization Procedure @@@@@@@@@@@" - verbose " auto_path:\n >$auto_path<" 5 - # - # Create the BlueGnu Target Object, which need to be returned. - # - namespace eval $nspTestSuite { - set args [uplevel 1 set args] - verbose "Arguments: $args (are not used)" 3 - verbose "======= BlueGnu Procedure creates Target Object" 3 - - - # Check argument and remove the local argument from the list - # All argument that do not contain a equal sign are also removed - set i 0 - catch {unset rmList} - foreach arg $args { - if {!$i} { - if {[llength [split $arg "="]] == 1} { - uplevel set eInterface $arg - lappend rmList $i - } - } - if {[string compare [lindex [split $arg "="] 0] \ - "testCases"] == 0} { - uplevel set testCases [lindex [split $arg "="] 1] - lappend rmList $i - } - incr i - } - if {[info exists rmList]} { - #puts "rmList >$rmList<" - for {set i [expr [llength $rmList] - 1]} {$i >= 0} {incr i -1} { - set args [lreplace $args $i $i] - } - } - verbose "Arguments (passed): $args" 5 - - verbose "Arguments (used): $args" 3 - set target [eval [concat createTarget $args]] - if {! [string match ::* $target]} { - set target [namespace current]::$target - } - debug {Target name >$target<} 3 - - # Save all Environment Variables so they may be cleared! - # - [$target environment] saveEnv - } - - # Return the name of the Target Object that has been created - # This should be the last statement - return [namespace eval $nspTestSuite {set target}] -} - -proc BlueGnu_start {} { - verbose "@@@@@@@@@@@ Starting BlueGnu Environment @@@@@@@@@@@" -} - -proc BlueGnu_load {} { - verbose "@@@@@@@@@@@ Load BlueGnu Environment @@@@@@@@@@@" -} - -proc BlueGnu_exit {} { - verbose "@@@@@@@@@@@ Exit BlueGnu Environment @@@@@@@@@@@" -} - -proc BlueGnu_version {} { - verbose "@@@@@@@@@@@ Version BlueGnu Environment @@@@@@@@@@@" -} - -proc BlueGnu_overwrite {szNamespace} { - # Modify output procedures to return instead of doing output - # - uplevel #0 { - rename send_user send_user_saved - rename send_error send_error_saved - rename send_log send_log_saved - } - proc ::send_user args "set ${szNamespace}::sending(USER) 1" - proc ::send_error args "set ${szNamespace}::sending(ERROR) 1" - proc ::send_log args "set ${szNamespace}::sending(LOG) 1" -} - -proc BlueGnu_restore {} { - # Restore original procedures - # - uplevel #0 { - rename send_user "" - rename send_error "" - rename send_log "" - rename send_user_saved send_user - rename send_error_saved send_error - rename send_log_saved send_log - } -} diff --git a/contrib/bluegnu2.0.3/lib/Default_target.itcl b/contrib/bluegnu2.0.3/lib/Default_target.itcl deleted file mode 100644 index f66b20a..0000000 --- a/contrib/bluegnu2.0.3/lib/Default_target.itcl +++ /dev/null @@ -1,82 +0,0 @@ -# -# This script create a Default Target object -# - -verbose "Default Target Information ****" 3 - -proc Default {args} { - global nspTestSuite auto_path env - global testCases - - verbose "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" - verbose "@@@@@@@ Default Target Initialization Procedure" - verbose {@@@@@@@ auto_path:\n [join [split $auto_path] \ - "\n "]} 4 - # - # Create the Default Target Object, which need to be returned. - # - namespace eval $nspTestSuite { - set args [uplevel 1 set args] - verbose "Arguments: $args (are not used)" 3 - verbose "======= Default Procedure creates Target Object" 3 - - - # Check argument and remove the local argument from the list - # All argument that do not contain a equal sign are also removed - set i 0 - catch {unset rmList} - foreach arg $args { - if {!$i} { - if {[llength [split $arg "="]] == 1} { - uplevel set eInterface $arg - lappend rmList $i - } - } - if {[string compare [lindex [split $arg "="] 0] \ - "testCases"] == 0} { - uplevel set testCases [lindex [split $arg "="] 1] - lappend rmList $i - } - incr i - } - if {[info exists rmList]} { - #puts "rmList >$rmList<" - for {set i [expr [llength $rmList] - 1]} {$i >= 0} {incr i -1} { - set args [lreplace $args $i $i] - } - } - verbose "Arguments (passed): $args" 5 - - verbose "Arguments (used): $args" 3 - set target [eval [concat createTarget $args]] - if {! [string match ::* $target]} { - set target [namespace current]::$target - } - debug {Target name >$target<} 3 - - # Save all Environment Variables so they may be cleared! - # - [$target environment] saveEnv - } - - # Return the name of the Target Object that has been created - # This should be the last statement - return [namespace eval $nspTestSuite {set target}] -} - -proc Default_start {} { - verbose "@@@@@@@ Starting Default Environment" -} - -proc Default_load {} { - verbose "@@@@@@@ Load Default Environment" -} - -proc Default_exit {} { - verbose "@@@@@@@ Exit Default Environment" - verbose "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" -} - -proc Default_version {} { - verbose "@@@@@@@ Version Default Environment" -} diff --git a/contrib/bluegnu2.0.3/lib/Types.itcl b/contrib/bluegnu2.0.3/lib/Types.itcl deleted file mode 100644 index e2ef2b4..0000000 --- a/contrib/bluegnu2.0.3/lib/Types.itcl +++ /dev/null @@ -1,216 +0,0 @@ -# -*-Tcl-*- -# -# This [incr Tcl] library script contains type definitions -# -# -# Type super class -# - -if {[string length [info commands debug]] == 0} { - proc debug {args} {} -} - -class Type { - variable _value - variable _valueSaved - variable _voidPtr - variable _bVoid - protected variable _currentNamespace - protected variable _lProc - protected variable _upLevel - - constructor args { - debug {======= Constructor: [info class] $this $args} 3 - # Go up in the inheritance tree - debug { Go up inheritance tree} 4 - set level 1 - if {[string compare [info class] ::Type] != 0} { - debug { level set to >1<} 5 - while {[string compare [info class] \ - [uplevel $level {namespace current}]] != 0} { - debug {>[info class]< != >[uplevel $level\ - {namespace current}]<} 5 - incr level - debug { level incrmented to >$level<} 5 - } - debug {>[info class]< == >[uplevel $level\ - {namespace current}]<} 5 - incr level - regsub {^::} [uplevel $level {namespace current}] "" currentNamespace - } else { - regsub {^::} [uplevel {namespace current}] "" currentNamespace - } - set upLevel [expr [info level] - $level] - set lProc [info level $upLevel] - debug { Called from level: >$upLevel<} 4 - debug { Called from : >$lProc<} 4 - debug { Current namespace: >$currentNamespace<} 4 - #catch {puts " [uplevel "info body [lindex $lProc 0]"]"} - set _bVoid 0 - set _voidPtr 0 - if {[llength $args] > 0} { - set _value [lindex $args 0] - } else { - set _value "" - } - if {$upLevel == 0} { - debug {Called from global} 4 - set $this $_value - debug {this variable: [set $this]} 4 - trace variable $this rwu traceType - } elseif {[string length $currentNamespace] && \ - [string length $lProc]} { - debug {Called from procedure in namespace} 4 - debug { this: >$this<} 4 - debug {set $this >$_value<} - catch { - uplevel #$upLevel set [namespace tail $this] \"$_value\" - uplevel #$upLevel trace variable [namespace tail $this] \ - rwu traceType - } szErrMsg; debug { szErrMsg: >$szErrMsg<} 4 - } elseif {[string length $currentNamespace]} { - debug {Called from namespace} 4 - debug {set $this >$_value<} - catch { - namespace eval ${currentNamespace} "set $this \"$_value\"\n\ - trace variable $this rwu traceType" - } szErrMsg - debug { TRACE set} 4 - debug { szErrMsg: >$szErrMsg<} 4 - } else { - debug {Called from procedure} 4 - set var [namespace tail $this] - uplevel "set $var $_value" - debug {this variable: [uplevel "set $var"]} 4 - uplevel "trace variable $var rwu traceType" - } - } - - destructor { - debug {======= destructor $this} 3 - set calledFrom [lindex [split [info level [expr [info level] - 1]]] 0] - debug { calledFrom: >$calledFrom<} 4 - debug { >[info level [expr [info level] - 1]]<} 4 - # just return when called from traceType - if {[string compare $calledFrom "traceType"] != 0} { - set var [namespace tail $this] - debug { var: >$var<} 4 - debug { >[join [trace vinfo $var]]<} 4 - debug { >[uplevel [join [trace vinfo $var]]]<} 4 - debug { >[join [uplevel "trace vinfo $var"]]<} 4 - catch { - debug {eval uplevel \"trace vdelete $var [join [uplevel "trace vinfo $var"]]\"} 4 - eval uplevel "trace vdelete $var [join [uplevel "trace vinfo $var"]]" - uplevel unset $var - } szErrMsg; debug { #### szErrMsg: >$szErrMsg<} 4 - } - } - - public method value {args} { - if {[llength $args] > 0} { - set _value [lindex $args 0] - } - return $_value - } - - public method setNull {{ptr 0}} { - set _voidPtr $ptr - set _bVoid 1 - } - - public method unsetNull {} { - set _bVoid 0 - } - - public method isNull {} { - return $_bVoid - } - - public method getNull {} { - return $_voidPtr - } -} - -proc traceType {name1 name2 ops} { - debug {======= traceType >$name1< >$name2< >$ops<} 3 - upvar $name1 var - set upLevel [expr [info level] - 1] - set lProc [info level $upLevel] - regsub {^::} [uplevel {namespace current}] "" currentNamespace - debug { Called from level: >$upLevel<} 4 - debug { level namespace : >[uplevel #$upLevel namespace current]<} 4 - debug { Called from : >$lProc<} 4 - debug { Current namespace: >$currentNamespace<} 4 - if {$upLevel == 0} { - debug {Called from global} 4 - switch $ops { - r { - set var [uplevel $name1 value] - } - w { - if [catch {$name1 value [set var]}] { - uplevel "$name1 value [set var]" - } - } - u { - uplevel delete object $name1 - } - } - } elseif {[string length $currentNamespace] && \ - [string length $lProc]} { - debug {Called from procedure in namespace} 4 - set var [uplevel ::itcl::find objects $name1] - debug { $name1 ->$var< = ><} 4 - switch $ops { - r { - uplevel set $name1 [uplevel $var value] - } - w { - if [catch {uplevel $var value [uplevel set $name1]} szErrMsg] { - debug {####### Error: $szErrMsg} 4 - - } - } - u { - uplevel delete object $name1 - } - } - } elseif {[string length $currentNamespace]} { - debug {Called from namespace} 4 - set var [uplevel "namespace which -variable $name1"] - debug { $name1 ->$var< = ><} 4 - switch $ops { - r { - set $var [$var value] - } - w { - if [catch {$var value [set $var]} szErrMsg] { - debug {####### Error: $szErrMsg} 4 - - } - } - u { - debug {Deleting >$name1<} 4 - debug { [namespace current]} 4 - catch {delete object $name1} - debug { DONE!} 4 - } - } - } else { - debug {Called from procedure} 4 - switch $ops { - r { - set $name1 [$name1 value] - } - w { - if [catch {$name1 value [uplevel set $name1]}] { - uplevel "$name1 value [set $name1]" - } - } - u { - delete object $name1 - } - } - } -} - diff --git a/contrib/bluegnu2.0.3/lib/bluegnu.itcl b/contrib/bluegnu2.0.3/lib/bluegnu.itcl deleted file mode 100644 index da02c8b..0000000 --- a/contrib/bluegnu2.0.3/lib/bluegnu.itcl +++ /dev/null @@ -1,22 +0,0 @@ -#! iexpect -# -# This program is an Object Oriented version of the -# DejaGnu's runtest program and DejaGnu is a subset. -# -# BlueGnu implements a super set of a DejaGnu compatible test Framework -# -# Copyright (C) 1998 jotOmega dsc, Inc. - -#This file is part of the BlueGnu Test Framework. -# -# Load Application Framework Class and associated data -# -source $env(BLUEGNULIB)/testSessionApplication.itcl - -append auto_path " [pwd]/lib" - -set objApplication [::BlueGnu::Application #auto szName=BlueGnu] - -$objApplication processArguments argv - -$objApplication execute diff --git a/contrib/bluegnu2.0.3/lib/bug.exp b/contrib/bluegnu2.0.3/lib/bug.exp deleted file mode 100644 index d0e4589..0000000 --- a/contrib/bluegnu2.0.3/lib/bug.exp +++ /dev/null @@ -1,125 +0,0 @@ -# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -#load_lib remote.exp - -# -# set target variables only if needed. -# -global targetname -global connectmode -global env - -if ![info exists targetname] { - if [info exists env(TARGETNAME)] { - set targetname $env(TARGETNAME) - } else { - puts stderr "ERROR: Need a target name for the board." - puts stderr " Use the --name option\n" - exit 1 - } -} - -# the default connect program to use -if ![info exists connectmode] { - set connectmode "tip" - warning "Using default of $connectmode for target communication." -} - -# -# Load a file into the bug monitor -# -proc bug_load { shell_id file } { - global OBJCOPY - global shell_prompt - - if { $shell_id < 0 } { - warning "$file not executed because there is no target." - return -1 - } - - # NOTE: this requires OBJCOPY to be tested first - catch "exec $OBJCOPY -O srec $file $file.srec" result - if ![string match "" $result] { - perror "Couldn't convert to srecord for downloading" - return -1 - } - - send -i $shell_id "lo 0\r" - expect { - -i $shell_id "lo 0*" { - verbose "Got load command echo" 0 - } - -i $shell_id timeout { - perror "Load command didn't echo back" - return -1 - } - } - - if { [download $file.srec $shell_id] < 0 } { - return -1 - } - - send -i $shell_id "\r\r" - expect { - -i $shell_id -re "$shell_prompt.*$" { - } - -i $shell_id timeout { - perror "Load command didn't echo back" - return -1 - } - } - - catch "exec rm -f $file.srec" - return 0 -} - -# -# Execute a program -# -proc bug_execute { shell_id addr } { - global shell_prompt - global exec_output - - set exec_output "" - - if { $shell_id < 0 } { - warning "$arg not executed because there is no target." - return -1 - } - send -i $shell_id "go $addr\r" - verbose "Sent execute command" - expect { - -i $shell_id "*Effective address: $addr" { - exp_continue - } - -i $shell_id -re "$shell_prompt.*$" { - set exec_output $expect_out(buffer) - return 0 - } - -i $shell_id timeout { - perror "Couldn't execute program (timed out)." - return 1 - } - } - -} - diff --git a/contrib/bluegnu2.0.3/lib/debugger.exp b/contrib/bluegnu2.0.3/lib/debugger.exp deleted file mode 100644 index 8dd0701..0000000 --- a/contrib/bluegnu2.0.3/lib/debugger.exp +++ /dev/null @@ -1,252 +0,0 @@ -# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -# -# Dump the values of a shell expression representing variable -# names. -proc dumpvars { args } { - uplevel 1 [list foreach i [uplevel 1 "info vars $args"] { - if { [catch "array names $i" names ] } { - eval "puts \"${i} = \$${i}\"" - } else { - foreach k $names { - eval "puts \"$i\($k\) = \$$i\($k\)\"" - } - } - } - ] -} - -# -# dump the values of a shell expression representing variable -# names. -proc dumplocals { args } { - uplevel 1 [list foreach i [uplevel 1 "info locals $args"] { - if { [catch "array names $i" names ] } { - eval "puts \"${i} = \$${i}\"" - } else { - foreach k $names { - eval "puts \"$i\($k\) = \$$i\($k\)\"" - } - } - } - ] -} -# -# Dump the body of procedures specified by a regexp. -# -proc dumprocs { args } { - foreach i [info procs $args] { - puts "\nproc $i \{ [info args $i] \} \{ [info body $i]\}" - } -} - -# -# Dump all the current watchpoints -# -proc dumpwatch { args } { - foreach i [uplevel 1 "info vars $args"] { - set tmp "" - if { [catch "uplevel 1 array name $i" names] } { - set tmp [uplevel 1 trace vinfo $i] - if ![string match "" $tmp] { - puts "$i $tmp" - } - } else { - foreach k $names { - set tmp [uplevel 1 trace vinfo [set i]($k)] - if ![string match "" $tmp] { - puts "[set i]($k) = $tmp" - } - } - } - } -} - -# -# Trap a watchpoint for an array -# -proc watcharray { element type} { - upvar [set array]($element) avar - case $type { - "w" { puts "New value of [set array]($element) is $avar" } - "r" { puts "[set array]($element) (= $avar) was just read" } - "u" { puts "[set array]($element) (= $avar) was just unset" } - } -} - -proc watchvar { v type } { - upvar $v var - case $type { - "w" { puts "New value of $v is $var" } - "r" { puts "$v (=$var) was just read" } - "u" { puts "$v (=$var) was just unset" } - } -} - -# -# Watch when a variable is written -# -proc watchunset { arg } { - if { [catch "uplevel 1 array name $arg" names ] } { - if ![uplevel 1 info exists $arg] { - puts stderr "$arg does not exist" - return - } - uplevel 1 trace variable $arg u watchvar - } else { - foreach k $names { - if ![uplevel 1 info exists $arg] { - puts stderr "$arg does not exist" - return - } - uplevel 1 trace variable [set arg]($k) u watcharray - } - } -} - -# -# Watch when a variable is written -# -proc watchwrite { arg } { - if { [catch "uplevel 1 array name $arg" names ] } { - if ![uplevel 1 info exists $arg] { - puts stderr "$arg does not exist" - return - } - uplevel 1 trace variable $arg w watchvar - } else { - foreach k $names { - if ![uplevel 1 info exists $arg] { - puts stderr "$arg does not exist" - return - } - uplevel 1 trace variable [set arg]($k) w watcharray - } - } -} - -# -# Watch when a variable is read -# -proc watchread { arg } { - if { [catch "uplevel 1 array name $arg" names ] } { - if ![uplevel 1 info exists $arg] { - puts stderr "$arg does not exist" - return - } - uplevel 1 trace variable $arg r watchvar - } else { - foreach k $names { - if ![uplevel 1 info exists $arg] { - puts stderr "$arg does not exist" - return - } - uplevel 1 trace variable [set arg]($k) r watcharray - } - } -} - -# -# Delete a watch point -# -proc watchdel { args } { - foreach i [uplevel 1 "info vars $args"] { - set tmp "" - if { [catch "uplevel 1 array name $i" names] } { - catch "uplevel 1 trace vdelete $i w watchvar" - catch "uplevel 1 trace vdelete $i r watchvar" - catch "uplevel 1 trace vdelete $i u watchvar" - } else { - foreach k $names { - catch "uplevel 1 trace vdelete [set i]($k) w watcharray" - catch "uplevel 1 trace vdelete [set i]($k) r watcharray" - catch "uplevel 1 trace vdelete [set i]($k) u watcharray" - } - } - } -} - -# -# This file creates GDB style commands for the Tcl debugger -# -proc print { var } { - puts "$var" -} - -proc quit { } { - log_summary - exit -} - -proc bt { } { - puts "[w]" -} - -# -# create some stub procedures since we can't alias the command names -# -proc dp { args } { - uplevel 1 dumprocs $args -} - -proc dv { args } { - uplevel 1 dumpvars $args -} - -proc dl { args } { - uplevel 1 dumplocals $args -} - -proc dw { args } { - uplevel 1 dumpwatch $args -} - -proc q { } { - quit -} - -proc p { args } { - uplevel 1 print $args -} - -proc wu { args } { - uplevel 1 watchunset $args -} - -proc ww { args } { - uplevel 1 watchwrite $args -} - -proc wr { args } { - uplevel 1 watchread $args -} - -proc wd { args } { - uplevel 1 watchdel $args -} - - - - - - - diff --git a/contrib/bluegnu2.0.3/lib/dejagnu.itcl b/contrib/bluegnu2.0.3/lib/dejagnu.itcl deleted file mode 100644 index 35957cc..0000000 --- a/contrib/bluegnu2.0.3/lib/dejagnu.itcl +++ /dev/null @@ -1,81 +0,0 @@ -#! iexpect -# -# This program is a full compatible Object Oriented version of -# DejaGnu's runtest program -# -# Copyright (C) 1998 jotOmega dsc, Inc. - -#This file is part of BlueGnu. - -################################################################ -# Preemble -################################################################ -# Check Environment variables: -# -# BLUEGNULIBS -# TESTSUITEROOT -# - -if [info exists env(BLUEGNULIBS)] { - set szToolsLib $env(BLUEGNULIBS) -} else { - set szToolsLib [file dirname $argv0] - set PWD [pwd] - cd $szToolsLib - set szToolsLib [pwd] - cd $PWD - regsub {/bin$} $szToolsLib {/lib/bluegnu} szToolsLib - set env(BLUEGNULIBS) $szToolsLib -} - -if [info exists env(TESTSUITEROOT)] { - set szRootDir $env(TESTSUITEROOT) -} else { - set szRootDir [pwd] - set env(TESTSUITEROOT) $szRootDir -} -if [info exists env(DEBUG)] { - set bDebug 1 -} else { - set bDebug 0 -} - -# Make sure that the testsuite root directory is our working directory -# all tests name are relative to this directory -cd $szRootDir - -# set the default tool. All test are relative to this directory. -# -set szTool $szRootDir -catch {unset lTool} -lappend lTool $szTool - -# -# source basic utilities -# -source $szToolsLib/testSessionClasses.itcl -source $szToolsLib/testSessionFramework.itcl -#source $szToolsLib/testSessionUtils.itcl -# -verbose "Library : >$szToolsLib<" -verbose "TestSuite: >$szRootDir<" -verbose "$argv0 $argv" 5 -# -# from here we should use only defined utilities -################################################################ -################################################################ - -set szRootName [file rootname $argv0] -puts "RootName : >$szRootName<" - -::TestSession::Queue Q0 -::TestSession::DejaGnu E0; # will load dejagnu.tcl - -while {! [catch {Q0 pop} T]} { - clone_output "Q0 element: $T" - runtest E0 $T -} - -delete object Q0 -delete object E0 - diff --git a/contrib/bluegnu2.0.3/lib/dg.exp b/contrib/bluegnu2.0.3/lib/dg.exp deleted file mode 100644 index 64b3e32..0000000 --- a/contrib/bluegnu2.0.3/lib/dg.exp +++ /dev/null @@ -1,881 +0,0 @@ -# `dg' general purpose testcase driver. -# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# dje@cygnus.com. - -# This file was written by Doug Evans (dje@cygnus.com). - -# This file is based on old-dejagnu.exp. It is intended to be more extensible -# without incurring the overhead that old-dejagnu.exp can. All test framework -# commands appear in the testcase as "{ dg-xxx args ... }". We pull them out -# with one grep, and then run the function(s) named by "dg-xxx". When running -# dg-xxx, the line number that it occurs on is always passed as the first -# argument. We also support different kinds of tools via callbacks. -# -# The currently supported options are: -# -# dg-prms-id N -# set prms_id to N -# -# dg-options "options ..." [{ target selector }] -# specify special options to pass to the tool (eg: compiler) -# -# dg-do do-what-keyword [{ target/xfail selector }] -# `do-what-keyword' is tool specific and is passed unchanged to -# ${tool}-dg-test. An example is gcc where `keyword' can be any of: -# preprocess|compile|assemble|link|run -# and will do one of: produce a .i, produce a .s, produce a .o, -# produce an a.out, or produce an a.out and run it (the default is -# compile). -# -# dg-error regexp comment [{ target/xfail selector } [{.|0|linenum}]] -# indicate an error message is expected on this line -# (the test fails if it doesn't occur) -# Linenum=0 for general tool messages (eg: -V arg missing). -# "." means the current line. -# -# dg-warning regexp comment [{ target/xfail selector } [{.|0|linenum}]] -# indicate a warning message is expected on this line -# (the test fails if it doesn't occur) -# -# dg-bogus regexp comment [{ target/xfail selector } [{.|0|linenum}]] -# indicate a bogus error message use to occur here -# (the test fails if it does occur) -# -# dg-build regexp comment [{ target/xfail selector }] -# indicate the build use to fail for some reason -# (errors covered here include bad assembler generated, tool crashes, -# and link failures) -# (the test fails if it does occur) -# -# dg-excess-errors comment [{ target/xfail selector }] -# indicate excess errors are expected (any line) -# (this should only be used sparingly and temporarily) -# -# dg-output regexp [{ target selector }] -# indicate the expected output of the program is -# (there may be multiple occurrences of this, they are concatenated) -# -# dg-final { tcl code } -# add some tcl code to be run at the end -# (there may be multiple occurrences of this, they are concatenated) -# (unbalanced braces must be \-escaped) -# -# "{ target selector }" is a list of expressions that determine whether the -# test succeeds or fails for a particular target, or in some cases whether the -# option applies for a particular target. If the case of `dg-do' it specifies -# whether the testcase is even attempted on the specified target. -# -# The target selector is always optional. The format is one of: -# -# { xfail *-*-* ... } - the test is expected to fail for the given targets -# { target *-*-* ... } - the option only applies to the given targets -# -# At least one target must be specified, use *-*-* for "all targets". -# At present it is not possible to specify both `xfail' and `target'. -# "native" may be used in place of "*-*-*". -# -# Example: -# -# [ ... some complicated code ... ] -# return a; /* { dg-build "fatal" "ran out of spill regs" { xfail i386-*-* } } */ -# -# In this example, the compiler use to crash on the "return a;" for some -# target and that it still does crash on i386-*-*. Admittedly, this is a -# contrived example. -# -# ??? It might be possible to add additional optional arguments by having -# something like: { dg-error ".*syntax.*" "syntax error" { { foo 1 } ... } } -# -# Callbacks -# -# ${tool}-dg-test testfile do-what-keyword extra-flags -# -# Run the test, be it compiler, assembler, or whatever. -# -# ${tool}-dg-prune target_triplet text -# -# Optional callback to delete output from the tool that can occur -# even in successful ("pass") situations and interfere with output -# pattern matching. This also gives the tool an opportunity to review -# the output and check for any conditions which indicate an "untested" -# or "unresolved" state. An example is if a testcase is too big and -# fills all available ram (which can happen for 16 bit cpus). The -# result is either the pruned text or -# "::untested|unresolved|unsupported::message" -# (eg: "::unsupported::memory full"). -# -# Notes: -# 1) All runnable testcases must return 0 from main() for success. -# You can't rely on getting any return code from target boards, and the -# `exec' command says a program fails if it returns non-zero. -# -# Language independence is (theoretically) achieved by: -# -# 1) Using global $tool to indicate the language (eg: gcc, g++, gas, etc.). -# This should only be used to look up other objects. We don't want to -# have to add code for each new language that is supported. If this is -# done right, no code needs to be added here for each new language. -# -# 2) Passing tool options in as arguments. -# -# Earlier versions of ${tool}_start (eg: gcc_start) would only take the name -# of the file to compile as an argument. Newer versions accept a list of -# one or two elements, the second being a string of *all* options to pass -# to the tool. We require this facility. -# -# 3) Callbacks. -# -# Try not to do anything else that makes life difficult. -# -# The normal way to write a testsuite is to have a .exp file containing: -# -# load_lib ${tool}-dg.exp -# dg-init -# dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/foo*]] ... -# dg-finish - -# Global state variables. -# The defaults are for GCC. - -# The default do-what keyword. -set dg-do-what-default compile - -# When dg-interpreter-batch-mode is 1, no execution test or excess error -# tests are performed. -set dg-interpreter-batch-mode 0 - -# Line number format. This is how line numbers appear in program output. -set dg-linenum-format ":%d:" -proc dg-format-linenum { linenum } { - global dg-linenum-format - return [format ${dg-linenum-format} $linenum] -} - -# Useful subroutines. - -# dg-get-options -- pick out the dg-xxx options in a testcase -# -# PROG is the file name of the testcase. -# The result is a list of options found. -# -# Example: For the following testcase: -# -# /* { dg-prms-id 1234 } */ -# int foo { return 0; } /* { dg-build fatal "some comment" } */ -# -# we return: -# -# { dg-prms-id 1 1234 } { dg-build 2 fatal "some comment" } - -proc dg-get-options { prog } { - set result "" - - set tmp [grep $prog "{\[ \t\]\+dg-\[-a-z\]\+\[ \t\]\+.*\[ \t\]\+}" line] - if ![string match "" $tmp] { - foreach i $tmp { - #send_user "Found: $i\n" - # FIXME: When to use "+" and "\+" isn't clear. - # Seems to me it took awhile to get this to work. - regexp "(\[0-9\]\+)\[ \t\]\+{\[ \t\]+(dg-\[-a-z\]+)\[ \t\]\+(.*)\[ \t\]+}\[^\}\]*(\n|$)" $i i line cmd args - #send_user "Found: $cmd $line $args\n" - append result " { $cmd $line $args }" - } - } - - #send_user "Returning: $result\n" - return $result -} - -# -# Process optional xfail/target arguments -# -# SELECTOR is "xfail target-triplet-1 ..." or "target target-triplet-1 ..." -# `target-triplet' may be "native". -# For xfail, the result is "F" (expected to Fail) if the current target is -# affected, otherwise "P" (expected to Pass). -# For target, the result is "S" (target is Selected) if the target is selected, -# otherwise "N" (target is Not selected). -# -proc dg-process-target { selector } { - global target_triplet - - set isnative [isnative] - set triplet_match 0 - - #send_user "dg-process-target: $selector\n" - - set selector [string trim $selector] - if [regexp "^xfail " $selector] { - set what xfail - } elseif [regexp "^target " $selector] { - set what target - } else { - # The use of error here and in other dg-xxx utilities is intentional. - # dg-test will catch them and do the right thing. - error "syntax error in target selector \"$selector\"" - } - - # ??? This should work but it doesn't. tcl bug? - #if [regexp "^${what}(( \[^ \]+-\[^ \]+-\[^ \]+)|( native))+$" $selector tmp selector] - if [regexp "^${what}( \[^ \]+-\[^ \]+-\[^ \]+| native)+$" $selector] { - regsub "^${what} " $selector "" selector - #send_user "selector: $selector\n" - foreach triplet $selector { - if [string match $triplet $target_triplet] { - set triplet_match 1 - } elseif { $isnative && $triplet == "native" } { - set triplet_match 1 - } - } - } else { - error "syntax error in target selector \"$selector\"" - } - - if { $triplet_match } { - return [expr { $what == "xfail" ? "F" : "S" }] - } else { - return [expr { $what == "xfail" ? "P" : "N" }] - } -} - -# Predefined user option handlers. -# The line number is always the first element. -# Note that each of these are varargs procs (they have an `args' argument). -# Tests for optional arguments are coded with ">=" to simplify adding new ones. - -proc dg-prms-id { args } { - global prms_id ;# this is a testing framework variable - - if { [llength $args] > 2 } { - error "[lindex $args 0]: too many arguments" - return - } - - set prms_id [lindex $args 1] -} - -# -# Set tool options -# -# Different options can be used for different targets by having multiple -# instances, selecting a different target each time. Since options are -# processed in order, put the default value first. Subsequent occurrences -# will override previous ones. -# - -proc dg-options { args } { - upvar dg-extra-tool-flags extra-tool-flags - - if { [llength $args] > 3 } { - error "[lindex $args 0]: too many arguments" - return - } - - if { [llength $args] >= 3 } { - switch [dg-process-target [lindex $args 2]] { - "S" { set extra-tool-flags [lindex $args 1] } - "N" { } - "F" { error "[lindex $args 0]: `xfail' not allowed here" } - "P" { error "[lindex $args 0]: `xfail' not allowed here" } - } - } else { - set extra-tool-flags [lindex $args 1] - } -} - -# -# Record what to do (compile/run/etc.) -# -# Multiple instances are supported (since we don't support target and xfail -# selectors on one line), though it doesn't make much sense to change the -# compile/assemble/link/run field. Nor does it make any sense to have -# multiple lines of target selectors (use one line). -# -proc dg-do { args } { - upvar dg-do-what do-what - - if { [llength $args] > 3 } { - error "[lindex $args 0]: too many arguments" - return - } - - set selected [lindex ${do-what} 1] ;# selected? (""/S/N) - set expected [lindex ${do-what} 2] ;# expected to pass/fail (P/F) - - if { [llength $args] >= 3 } { - switch [dg-process-target [lindex $args 2]] { - "S" { - set selected "S" - } - "N" { - # Don't deselect a target if it's been explicitly selected, - # but indicate a specific target has been selected (so don't - # do this testcase if it's not appropriate for this target). - # The user really shouldn't have multiple lines of target - # selectors, but try to do the intuitive thing (multiple lines - # are OR'd together). - if { $selected != "S" } { - set selected "N" - } - } - "F" { set expected "F" } - "P" { - # There's nothing to do for "P". We don't want to clobber a - # previous xfail for this target. - } - } - } else { - # Note: A previous occurrence of `dg-do' with target/xfail selectors - # is a user mistake. We clobber previous values here. - set selected S - set expected P - } - - switch [lindex $args 1] { - "preprocess" { } - "compile" { } - "assemble" { } - "link" { } - "run" { } - default { - error "[lindex $args 0]: syntax error" - } - } - set do-what [list [lindex $args 1] $selected $expected] -} - -proc dg-error { args } { - upvar dg-messages messages - - if { [llength $args] > 5 } { - error "[lindex $args 0]: too many arguments" - return - } - - set xfail "" - if { [llength $args] >= 4 } { - switch [dg-process-target [lindex $args 3]] { - "F" { set xfail "X" } - "P" { set xfail "" } - "N" { - # If we get "N", this error doesn't apply to us so ignore it. - return - } - } - } - - if { [llength $args] >= 5 } { - switch [lindex $args 4] { - "." { set line [dg-format-linenum [lindex $args 0]] } - "0" { set line "" } - "default" { set line [dg-format-linenum [lindex $args 4]] } - } - } else { - set line [dg-format-linenum [lindex $args 0]] - } - - lappend messages [list $line "${xfail}ERROR" [lindex $args 1] [lindex $args 2]] -} - -proc dg-warning { args } { - upvar dg-messages messages - - if { [llength $args] > 5 } { - error "[lindex $args 0]: too many arguments" - return - } - - set xfail "" - if { [llength $args] >= 4 } { - switch [dg-process-target [lindex $args 3]] { - "F" { set xfail "X" } - "P" { set xfail "" } - "N" { - # If we get "N", this warning doesn't apply to us so ignore it. - return - } - } - } - - if { [llength $args] >= 5 } { - switch [lindex $args 4] { - "." { set line [dg-format-linenum [lindex $args 0]] } - "0" { set line "" } - "default" { set line [dg-format-linenum [lindex $args 4]] } - } - } else { - set line [dg-format-linenum [lindex $args 0]] - } - - lappend messages [list $line "${xfail}WARNING" [lindex $args 1] [lindex $args 2]] -} - -proc dg-bogus { args } { - upvar dg-messages messages - - if { [llength $args] > 5 } { - error "[lindex $args 0]: too many arguments" - return - } - - set xfail "" - if { [llength $args] >= 4 } { - switch [dg-process-target [lindex $args 3]] { - "F" { set xfail "X" } - "P" { set xfail "" } - "N" { - # If we get "N", this message doesn't apply to us so ignore it. - return - } - } - } - - if { [llength $args] >= 5 } { - switch [lindex $args 4] { - "." { set line [dg-format-linenum [lindex $args 0]] } - "0" { set line "" } - "default" { set line [dg-format-linenum [lindex $args 4]] } - } - } else { - set line [dg-format-linenum [lindex $args 0]] - } - - lappend messages [list $line "${xfail}BOGUS" [lindex $args 1] [lindex $args 2]] -} - -proc dg-build { args } { - upvar dg-messages messages - - if { [llength $args] > 4 } { - error "[lindex $args 0]: too many arguments" - return - } - - set xfail "" - if { [ llength $args] >= 4 } { - switch [dg-process-target [lindex $args 3]] { - "F" { set xfail "X" } - "P" { set xfail "" } - "N" { - # If we get "N", this lossage doesn't apply to us so ignore it. - return - } - } - } - - lappend messages [list [lindex $args 0] "${xfail}BUILD" [lindex $args 1] [lindex $args 2]] -} - -proc dg-excess-errors { args } { - upvar dg-excess-errors-flag excess-errors-flag - - if { [llength $args] > 3 } { - error "[lindex $args 0]: too many arguments" - return - } - - if { [llength $args] >= 3 } { - switch [dg-process-target [lindex $args 2]] { - "F" { set excess-errors-flag 1 } - "S" { set excess-errors-flag 1 } - } - } else { - set excess-errors-flag 1 - } -} - -# -# Indicate expected program output -# -# We support multiple occurrences, but we do not implicitly insert newlines -# between them. -# -# Note that target boards don't all support this kind of thing so it's a good -# idea to specify the target all the time. If one or more targets are -# explicitly selected, the test won't be performed if we're not one of them -# (as long as we were never mentioned). -# -# If you have target dependent output and want to set an xfail for one or more -# of them, use { dg-output "" { xfail a-b-c ... } }. The "" won't contribute -# to the expected output. -# -proc dg-output { args } { - upvar dg-output-text output-text - - if { [llength $args] > 3 } { - error "[lindex $args 0]: too many arguments" - return - } - - # Allow target dependent output. - - set expected [lindex ${output-text} 0] - if { [llength $args] >= 3 } { - switch [dg-process-target [lindex $args 2]] { - "N" { return } - "S" { } - "F" { set expected "F" } - # Don't override a previous xfail. - "P" { } - } - } - - if { [llength ${output-text}] == 1 } { - # First occurrence. - set output-text [list $expected [lindex $args 1]] - } else { - set output-text [list $expected "[lindex ${output-text} 1][lindex $args 1]"] - } -} - -proc dg-final { args } { - upvar dg-final-code final-code - - if { [llength $args] > 2 } { - error "[lindex $args 0]: too many arguments" - return - } - - #send_user "dg-final: $args\n" - append final-code "[lindex $args 1]\n" -} - -# -# Set up our environment -# -# There currently isn't much to do, but always calling it allows us to add -# enhancements without having to update our callers. -# It must be run before calling `dg-test'. - -proc dg-init { } { - # If the tool has an "init" routine, call it. - global tool - if ![string match "" [info procs ${tool}_init]] { - ${tool}_init - } -} - -# dg-runtest -- simple main loop useful to most testsuites -# -# FLAGS is a set of options to always pass. -# DEFAULT_EXTRA_FLAGS is a set of options to pass if the testcase doesn't -# specify any (with dg-option). -# ??? We're flipping between "flag" and "option" here. - -proc dg-runtest { testcases flags default-extra-flags } { - global runtests - - foreach testcase $testcases { - # If we're only testing specific files and this isn't one of them, skip it. - if ![runtest_file_p $runtests $testcase] { - continue - } - verbose "Testing [file tail [file dirname $testcase]]/[file tail $testcase]" - dg-test $testcase $flags ${default-extra-flags} - } -} - -# -# Runs a new style DejaGnu test -# -# PROG is the full path name of the file to pass to the tool (eg: compiler). -# TOOL_FLAGS is a set of options to always pass. -# DEFAULT_EXTRA_TOOL_FLAGS are additional options if the testcase has none. - -proc dg-test { prog tool_flags default_extra_tool_flags } { - global dg-do-what-default dg-interpreter-batch-mode dg-linenum-format - global errorCode errorInfo - global comp_output exec_output - global tool - global srcdir ;# eg: /calvin/dje/devo/gcc/./testsuite/ - global host_triplet target_triplet - - set text "\[- A-Za-z0-9\.\;\"\_\:\'\`\(\)\!\#\=\+\?\&\*]*" - - regsub "^$srcdir/?" $prog "" name - # If we couldn't rip $srcdir out of `prog' then just do the best we can. - # The point is to reduce the unnecessary noise in the logs. Don't strip - # out too much because different testcases with the same name can confuse - # `test-tool'. - if [string match "/*" $name] { - set name "[file tail [file dirname $prog]]/[file tail $prog]" - } - - # Process any embedded dg options in the testcase. - - # Use "" for the second element of dg-do-what so we can tell if it's been - # explicitly set to "S". - set dg-do-what [list ${dg-do-what-default} "" P] - set dg-excess-errors-flag 0 - set dg-messages "" - set dg-extra-tool-flags $default_extra_tool_flags - set dg-final-code "" - - # `dg-output-text' is a list of two elements: pass/fail and text. - # Leave second element off for now (indicates "don't perform test") - set dg-output-text "P" - - # Define our own "special function" `unknown' so we catch spelling errors. - # But first rename the existing one so we can restore it afterwards. - catch {rename dg-save-unknown ""} - rename unknown dg-save-unknown - proc unknown { args } { - return -code error "unknown dg option: $args" - } - - set tmp [dg-get-options $prog] - foreach op $tmp { - verbose "Processing option: $op" 3 - set status [catch "$op" errmsg] - if { $status != 0 } { - if { 0 && [info exists errorInfo] } { - # This also prints a backtrace which will just confuse - # testcase writers, so it's disabled. - perror "$name: $errorInfo\n" - } else { - perror "$name: $errmsg for \"$op\"\n" - } - # ??? The call to unresolved here is necessary to clear `errcnt'. - # What we really need is a proc like perror that doesn't set errcnt. - # It should also set exit_status to 1. - unresolved "$name: $errmsg for \"$op\"" - return - } - } - - # Restore normal error handling. - rename unknown "" - rename dg-save-unknown unknown - - # If we're not supposed to try this test on this target, we're done. - if { [lindex ${dg-do-what} 1] == "N" } { - unsupported "$name" - verbose "$name not supported on this target, skipping it" 3 - return - } - - # Run the tool and analyze the results. - # The result of ${tool}-dg-test is in a bit of flux. - # Currently it is the name of the output file (or "" if none). - # If we need more than this it will grow into a list of things. - # No intention is made (at this point) to preserve upward compatibility - # (though at some point we'll have to). - - set output_file [${tool}-dg-test $prog [lindex ${dg-do-what} 0] "$tool_flags ${dg-extra-tool-flags}"] - - #send_user "\nold_dejagnu.exp: comp_output1 = :$comp_output:\n\n" - #send_user "\nold_dejagnu.exp: message = :$message:\n\n" - #send_user "\nold_dejagnu.exp: message length = [llength $message]\n\n" - - foreach i ${dg-messages} { - verbose "Scanning for message: $i" 4 - - # Remove all error messages for the line [lindex $i 0] - # in the source file. If we find any, success! - set line [lindex $i 0] - set pattern [lindex $i 2] - set comment [lindex $i 3] - #send_user "Before:\n$comp_output\n" - if [regsub -all "(^|\n)(\[^\n\]+$line\[^\n\]*($pattern)\[^\n\]*\n?)+" $comp_output "\n" comp_output] { - set comp_output [string trimleft $comp_output] - set ok pass - set uhoh fail - } else { - set ok fail - set uhoh pass - } - #send_user "After:\n$comp_output\n" - - # $line will either be a formatted line number or a number all by - # itself. Delete the formatting. - scan $line ${dg-linenum-format} line - switch [lindex $i 1] { - "ERROR" { - $ok "$name $comment (test for errors, line $line)" - } - "XERROR" { - x$ok "$name $comment (test for errors, line $line)" - } - "WARNING" { - $ok "$name $comment (test for warnings, line $line)" - } - "XWARNING" { - x$ok "$name $comment (test for warnings, line $line)" - } - "BOGUS" { - $uhoh "$name $comment (test for bogus messages, line $line)" - } - "XBOGUS" { - x$uhoh "$name $comment (test for bogus messages, line $line)" - } - "BUILD" { - $uhoh "$name $comment (test for build failure, line $line)" - } - "XBUILD" { - x$uhoh "$name $comment (test for build failure, line $line)" - } - "EXEC" { } - "XEXEC" { } - } - #send_user "\nold_dejagnu.exp: comp_output2= :$comp_output:\n\n" - } - #send_user "\nold_dejagnu.exp: comp_output3 = :$comp_output:\n\n" - - # Remove messages from the tool that we can ignore. - #send_user "comp_output: $comp_output\n" - set comp_output [prune_system_crud $host_triplet $comp_output] - - if { [info proc ${tool}-dg-prune] != "" } { - set comp_output [${tool}-dg-prune $target_triplet $comp_output] - switch -glob $comp_output { - "::untested::*" { - regsub "::untested::" $comp_output "" message - untested "$name: $message" - return - } - "::unresolved::*" { - regsub "::unresolved::" $comp_output "" message - unresolved "$name: $message" - return - } - "::unsupported::*" { - regsub "::unsupported::" $comp_output "" message - unsupported "$name: $message" - return - } - } - } - - # See if someone forgot to delete the extra lines. - regsub -all "\n+" $comp_output "\n" comp_output - regsub "^\n+" $comp_output "" comp_output - #send_user "comp_output: $comp_output\n" - - # Don't do this if we're testing an interpreter. - # FIXME: why? - if { ${dg-interpreter-batch-mode} == 0 } { - # Catch excess errors (new bugs or incomplete testcases). - if ${dg-excess-errors-flag} { - setup_xfail "*-*-*" - } - if ![string match "" $comp_output] { - fail "$name (test for excess errors)" - send_log "Excess errors:\n$comp_output\n" - } else { - pass "$name (test for excess errors)" - } - } - - # Run the executable image if asked to do so. - # FIXME: This is the only place where we assume a standard meaning to - # the `keyword' argument of dg-do. This could be cleaned up. - if { [lindex ${dg-do-what} 0] == "run" } { - if ![file exists $output_file] { - warning "$name compilation failed to produce executable" - } else { - set status -1 - set status [${tool}_load $output_file] - #send_user "After exec, status: $status\n" - if { [lindex ${dg-do-what} 2] == "F" } { - setup_xfail "*-*-*" - } - if { "$status" == "pass" } { - pass "$name execution test" - verbose "Exec succeeded." 3 - if { [llength ${dg-output-text}] > 1 } { - #send_user "${dg-output-text}\n" - if { [lindex ${dg-output-text} 0] == "F" } { - setup_xfail "*-*-*" - } - set texttmp [lindex ${dg-output-text} 1] - if { ![regexp $texttmp ${exec_output}] } { - fail "$name output pattern test, is ${exec_output}, should match $texttmp" - verbose "Failed test for output pattern $texttmp" 3 - } else { - pass "$name output pattern test, $texttmp" - verbose "Passed test for output pattern $texttmp" 3 - } - unset texttmp - } - } elseif { "$status" == "fail" } { - # It would be nice to get some info out of errorCode. - if [info exists errorCode] { - verbose "Exec failed, errorCode: $errorCode" 3 - } else { - verbose "Exec failed, errorCode not defined!" 3 - } - fail "$name execution test" - } else { - $status "$name execution test" - } - } - } - - # Are there any further tests to perform? - # Note that if the program has special run-time requirements, running - # of the program can be delayed until here. Ditto for other situations. - # It would be a bit cumbersome though. - - if ![string match ${dg-final-code} ""] { - regsub -all "\\\\(\[{}\])" ${dg-final-code} "\\1" dg-final-code - # Note that the use of `args' here makes this a varargs proc. - proc dg-final-proc { args } ${dg-final-code} - verbose "Running dg-final tests." 3 - verbose "dg-final-proc:\n[info body dg-final-proc]" 4 - if [catch "dg-final-proc $prog" errmsg] { - perror "$name: error executing dg-final: $errmsg" - # ??? The call to unresolved here is necessary to clear `errcnt'. - # What we really need is a proc like perror that doesn't set errcnt. - # It should also set exit_status to 1. - unresolved "$name: error executing dg-final: $errmsg" - } - } - - # Do some final clean up. - # When testing an interpreter, we don't compile something and leave an - # output file. - if { ${dg-interpreter-batch-mode} == 0 } { - catch "exec rm -f $output_file" - } -} - -# -# Do any necessary cleanups -# -# This is called at the end to undo anything dg-init did (that needs undoing). -# -proc dg-finish { } { - # Reset this in case caller wonders whether s/he should. - global prms_id - set prms_id 0 - - # The framework doesn't like to see any error remnants, so remove them. - global errorInfo - if [info exists errorInfo] { - unset errorInfo - } - - # If the tool has a "finish" routine, call it. - # There may be a bit of duplication (eg: resetting prms_id), leave it. - # Let's keep these procs robust. - global tool - if ![string match "" [info procs ${tool}_finish]] { - ${tool}_finish - } -} diff --git a/contrib/bluegnu2.0.3/lib/foo.itcl b/contrib/bluegnu2.0.3/lib/foo.itcl deleted file mode 100644 index cd2c6f0..0000000 --- a/contrib/bluegnu2.0.3/lib/foo.itcl +++ /dev/null @@ -1,21 +0,0 @@ - -source lib/testSessionClasses.itcl -source lib/testSessionFramework.itcl -source lib/testSessionUtils.itcl - - -namespace TestSession { - Environment E0 - - #E0 saveEnv - E0 clearEnv - puts [join [E0 <<] "\n"] - - exit - - foreach obj [info objects] { - puts "$obj - [$obj <<]" - } -} - -::TestSession::clone_output "ERROR: testing" diff --git a/contrib/bluegnu2.0.3/lib/framework.exp b/contrib/bluegnu2.0.3/lib/framework.exp deleted file mode 100644 index 5491274..0000000 --- a/contrib/bluegnu2.0.3/lib/framework.exp +++ /dev/null @@ -1,677 +0,0 @@ -# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -# These variables are local to this file. -# This or more warnings and a test fails. -set warning_threshold 3 -# This or more errors and a test fails. -set perror_threshold 1 - -proc mail_file { file to subject } { - if [file readable $file] { - catch "exec mail -s \"$subject\" $to < $file" - } -} - -# -# Open the output logs -# -proc open_logs { } { - global outdir - global tool - global sum_file - - if { ${tool} == "" } { - set tool testrun - } - catch "exec rm -f $outdir/$tool.sum" - set sum_file [open "$outdir/$tool.sum" w] - catch "exec rm -f $outdir/$tool.log" - log_file -a "$outdir/$tool.log" - verbose "Opening log files in $outdir" - if { ${tool} == "testrun" } { - set tool "" - } -} - - -# -# Close the output logs -# -proc close_logs { } { - global sum_file - - catch "close $sum_file" -} - -# -# Check build host triplet for pattern -# -# With no arguments it returns the triplet string. -# -proc isbuild { args } { - global build_triplet - global host_triplet - - if ![info exists build_triplet] { - set build_triplet ${host_triplet} - } - if [string match "" $args] { - return $build_triplet - } - verbose "Checking pattern \"$args\" with $build_triplet" 2 - - if [string match "$args" $build_triplet] { - return 1 - } else { - return 0 - } -} - -# -# If this is a canadian (3 way) cross. This means the tools are -# being built with a cross compiler for another host. -# -proc is3way {} { - global host_triplet - global build_triplet - - if ![info exists build_triplet] { - set build_triplet ${host_triplet} - } - verbose "Checking $host_triplet against $build_triplet" 2 - if { "$build_triplet" == "$host_triplet" } { - return 0 - } - return 1 -} - -# -# Check host triplet for pattern -# -# With no arguments it returns the triplet string. -# -proc ishost { args } { - global host_triplet - - if [string match "" $args] { - return $host_triplet - } - verbose "Checking pattern \"$args\" with $host_triplet" 2 - - if [string match "$args" $host_triplet] { - return 1 - } else { - return 0 - } -} - -# -# Check target triplet for pattern -# -# With no arguments it returns the triplet string. -# Returns 1 if the target looked for, or 0 if not. -# -proc istarget { args } { - global target_triplet - - # if no arg, return the config string - if [string match "" $args] { - if [info exists target_triplet] { - return $target_triplet - } else { - perror "No target configuration names found." - } - } - - # now check against the cannonical name - if [info exists target_triplet] { - verbose "Checking \"$args\" against \"$target_triplet\"" 2 - if [string match "$args" $target_triplet] { - return 1 - } - } - - # nope, no match - return 0 -} - -# -# Check to see if we're running the tests in a native environment -# -# Returns 1 if running native, 0 if on a target. -# -proc isnative { } { - global target_triplet - global build_triplet - - if [string match $build_triplet $target_triplet] { - return 1 - } - return 0 -} - -# -# unknown -- called by expect if a proc is called that doesn't exist -# -proc unknown { args } { - global errorCode - global errorInfo - - clone_output "ERROR: (DejaGnu) proc \"$args\" does not exist." - if [info exists errorCode] { - send_error "The error code is $errorCode\n" - } - if [info exists errorInfo] { - send_error "The info on the error is:\n$errorInfo\n" - } - - log_summary -} - -# -# Print output to stdout (or stderr) and to log file -# -# If the --all flag (-a) option was used then all messages go the the screen. -# Without this, all messages that start with a keyword are written only to the -# detail log file. All messages that go to the screen will also appear in the -# detail log. This should only be used by the framework itself using pass, -# fail, xpass, xfail, warning, perror, note, untested, unresolved, or -# unsupported procedures. -# -proc clone_output { message } { - global sum_file - global all_flag - - puts $sum_file "$message" - case [lindex $message 0] in { - {"PASS:" "XFAIL:" "UNRESOLVED:" "UNSUPPORTED:" "UNTESTED:"} { - if $all_flag { - send_user "$message\n" - return "$message" - } else { - send_log "$message\n" - } - } - {"ERROR:" "WARNING:" "NOTE:"} { - send_error "$message\n" - return "$message" - } - default { - send_user "$message\n" - return "$message" - } - } -} - -# -# Reset all globally used variables -# -proc reset_vars {} { - # test result counters - global testcnt - global failcnt - global passcnt - global xfailcnt - global xpasscnt - global untestedcnt - global unresolvedcnt - global unsupportedcnt - - # other miscellaneous variables - global prms_id - global bug_id - - # reset them all - set prms_id 0 - set bug_id 0 - set testcnt 0 - set failcnt 0 - set passcnt 0 - set xfailcnt 0 - set xpasscnt 0 - set untestedcnt 0 - set unresolvedcnt 0 - set unsupportedcnt 0 - - # Variables local to this file. - global warning_threshold perror_threshold - set warning_threshold 3 - set perror_threshold 1 -} - -# -# Print summary of all pass/fail counts -# -# Calling this exits. -# -proc log_summary {} { - global tool - global sum_file - global exit_status - global failcnt - global passcnt - global testcnt - global xfailcnt - global xpasscnt - global untestedcnt - global unresolvedcnt - global unsupportedcnt - global mail_logs - global outdir - global mailing_list - - clone_output "\n\t\t=== $tool Summary ===\n" - - # If the tool set `testcnt', it wants us to do a sanity check on the - # total count, so compare the reported number of testcases with the - # expected number. Maintaining an accurate count in `testcnt' isn't easy - # so it's not clear how often this will be used. - if { $testcnt > 0 } { - # total all the testcases reported - set totlcnt [expr $failcnt+$passcnt+$xfailcnt+$xpasscnt] - set totlcnt [expr $totlcnt+$untestedcnt+$unresolvedcnt+$unsupportedcnt] - - if { $testcnt>$totlcnt || $testcnt<$totlcnt } { - if { $testcnt > $totlcnt } { - set mismatch "unreported [expr $testcnt-$totlcnt]" - } - if { $testcnt < $totlcnt } { - set mismatch "misreported [expr $totlcnt-$testcnt]" - } - } else { - verbose "# of testcases run $testcnt" - } - - if [info exists mismatch] { - clone_output "### ERROR: totals do not equal number of testcases run" - clone_output "### ERROR: # of testcases expected $testcnt" - clone_output "### ERROR: # of testcases reported $totlcnt" - clone_output "### ERROR: # of testcases $mismatch\n" - } - } - - if { $passcnt > 0 } { - clone_output "# of expected passes $passcnt" - } - if { $xfailcnt > 0 } { - clone_output "# of expected failures $xfailcnt" - } - if { $xpasscnt > 0 } { - clone_output "# of unexpected successes $xpasscnt" - } - if { $failcnt > 0 } { - clone_output "# of unexpected failures $failcnt" - } - if { $unresolvedcnt > 0 } { - clone_output "# of unresolved testcases $unresolvedcnt" - } - if { $untestedcnt > 0 } { - clone_output "# of untested testcases $untestedcnt" - } - if { $unsupportedcnt > 0 } { - clone_output "# of unsupported tests $unsupportedcnt" - } - # extract version number - if {[info procs ${tool}_version] != ""} { - if {[catch "${tool}_version" output]} { - warning "${tool}_version failed:\n$output" - } - } - close_logs - cleanup - if $mail_logs { - mail_file $outdir/$tool.sum $mailing_list "Dejagnu Summary Log" - } - exit $exit_status -} - -# -# Close all open files, remove temp file and core files -# -proc cleanup {} { - global sum_file - global exit_status - global done_list - global base_dir - global subdir - - #catch "exec rm -f [glob xgdb core *.x *.o *_soc a.out]" - #catch "exec rm -f [glob -nocomplain $subdir/*.o $subdir/*.x $subdir/*_soc]" -} - -# -# Setup a flag to control whether a failure is expected or not -# -# Multiple target triplet patterns can be specified for targets -# for which the test fails. A decimal number can be specified, -# which is the PRMS number. -# -proc setup_xfail { args } { - global xfail_flag - global xfail_prms - - set xfail_prms 0 - set argc [ llength $args ] - for { set i 0 } { $i < $argc } { incr i } { - set sub_arg [ lindex $args $i ] - # is a prms number. we assume this is a number with no characters - if [regexp "^\[0-9\]+$" $sub_arg] { - set xfail_prms $sub_arg - continue - } - if [istarget $sub_arg] { - set xfail_flag 1 - continue - } - } -} - -# -# Clear the xfail flag for a particular target -# -proc clear_xfail { args } { - global xfail_flag - global xfail_prms - - set argc [ llength $args ] - for { set i 0 } { $i < $argc } { incr i } { - set sub_arg [ lindex $args $i ] - case $sub_arg in { - "*-*-*" { # is a configuration triplet - if [istarget $sub_arg] { - set xfail_flag 0 - set xfail_prms 0 - } - continue - } - } - } -} - -# -# Record that a test has passed or failed (perhaps unexpectedly) -# -# This is an internal procedure, only used in this file. -# -proc record_test { type message } { - global passcnt failcnt xpasscnt xfailcnt - global untestedcnt unresolvedcnt unsupportedcnt - global exit_status - global prms_id bug_id - global xfail_flag xfail_prms - global errcnt warncnt - global warning_threshold perror_threshold - - # If we have too many warnings or errors, - # the output of the test can't be considered correct. - if { $warning_threshold > 0 && $warncnt >= $warning_threshold - || $perror_threshold > 0 && $errcnt >= $perror_threshold } { - # Reset these first to prevent infinite recursion. - set warncnt 0 - set errcnt 0 - unresolved $message - return - } - - switch $type { - PASS { - incr passcnt - if $prms_id { - set message [concat $message "\t(PRMS $prms_id)"] - } - } - FAIL { - incr failcnt - set exit_status 1 - if $prms_id { - set message [concat $message "\t(PRMS $prms_id)"] - } - } - XPASS { - incr xpasscnt - set exit_status 1 - if { $xfail_prms != 0 } { - set message [concat $message "\t(PRMS $xfail_prms)"] - } - } - XFAIL { - incr xfailcnt - if { $xfail_prms != 0 } { - set message [concat $message "\t(PRMS $xfail_prms)"] - } - } - UNTESTED { - incr untestedcnt - # The only reason we look at the xfail stuff is to pick up - # `xfail_prms'. - if { $xfail_flag && $xfail_prms != 0 } { - set message [concat $message "\t(PRMS $xfail_prms)"] - } elseif $prms_id { - set message [concat $message "\t(PRMS $prms_id)"] - } - } - UNRESOLVED { - incr unresolvedcnt - set exit_status 1 - # The only reason we look at the xfail stuff is to pick up - # `xfail_prms'. - if { $xfail_flag && $xfail_prms != 0 } { - set message [concat $message "\t(PRMS $xfail_prms)"] - } elseif $prms_id { - set message [concat $message "\t(PRMS $prms_id)"] - } - } - UNSUPPORTED { - incr unsupportedcnt - # The only reason we look at the xfail stuff is to pick up - # `xfail_prms'. - if { $xfail_flag && $xfail_prms != 0 } { - set message [concat $message "\t(PRMS $xfail_prms)"] - } elseif $prms_id { - set message [concat $message "\t(PRMS $prms_id)"] - } - } - default { - perror "record_test called with bad type `$type'" - set errcnt 0 - return - } - } - - if $bug_id { - set message [concat $message "\t(BUG $bug_id)"] - } - - global multipass_name - if { $multipass_name != "" } { - clone_output "$type: $multipass_name: $message" - } else { - clone_output "$type: $message" - } - - # Reset these so they're ready for the next test case. We don't reset - # prms_id or bug_id here. There may be multiple tests for them. Instead - # they are reset in the main loop after each test. It is also the - # testsuite driver's responsibility to reset them after each testcase. - set warncnt 0 - set errcnt 0 - set xfail_flag 0 - set xfail_prms 0 -} - -# -# Record that a test has passed -# -proc pass { message } { - global xfail_flag - - if $xfail_flag { - record_test XPASS $message - } else { - record_test PASS $message - } -} - -# -# Record that a test has failed -# -proc fail { message } { - global xfail_flag - - if $xfail_flag { - record_test XFAIL $message - } else { - record_test FAIL $message - } -} - -# -# Record that a test has passed unexpectedly -# -proc xpass { message } { - record_test XPASS $message -} - -# -# Record that a test has failed unexpectedly -# -proc xfail { message } { - record_test XFAIL $message -} - -# -# Set warning threshold -# -proc set_warning_threshold { threshold } { - set warning_threshold $threshold -} - -# -# Get warning threshold -# -proc get_warning_threshold { } { - return $warning_threshold -} - -# -# Prints warning messages -# These are warnings from the framework, not from the tools being tested. -# It takes a string, and an optional number and returns nothing. -# -proc warning { args } { - global warncnt - global errno - - if { [llength $args] > 1 } { - set warncnt [lindex $args 1] - } else { - incr warncnt - } - set message [lindex $args 0] - - clone_output "WARNING: $message" - set errno "WARNING: $message" - - global errorInfo - if [info exists errorInfo] { - unset errorInfo - } -} - -# -# Prints error messages -# These are errors from the framework, not from the tools being tested. -# It takes a string, and an optional number and returns nothing. -# -proc perror { args } { - global errcnt - global errno - - if { [llength $args] > 1 } { - set errcnt [lindex $args 1] - } else { - incr errcnt - } - set message [lindex $args 0] - - clone_output "ERROR: $message" - set errno "ERROR: $message" - - global errorInfo - if [info exists errorInfo] { - unset errorInfo - } -} - -# -# Prints informational messages -# -# These are messages from the framework, not from the tools being tested. -# This means that it is currently illegal to call this proc outside -# of dejagnu proper. -# -proc note { message } { - clone_output "NOTE: $message" - - # ??? It's not clear whether we should do this. Let's not, and only do - # so if we find a real need for it. - #global errorInfo - #if [info exists errorInfo] { - # unset errorInfo - #} -} - -# -# untested -- mark the test case as untested -# -proc untested { message } { - record_test UNTESTED $message -} - -# -# Mark the test case as unresolved -# -proc unresolved { message } { - record_test UNRESOLVED $message -} - -# -# Mark the test case as unsupported -# -# Usually this is used for a test that is missing OS support. -# -proc unsupported { message } { - record_test UNSUPPORTED $message -} - - -# -# Create an exp_continue proc if it doesn't exist -# -# For compatablity with old versions. -# -global argv0 -if ![info exists argv0] { - proc exp_continue { } { - continue -expect - } -} diff --git a/contrib/bluegnu2.0.3/lib/libgloss.exp b/contrib/bluegnu2.0.3/lib/libgloss.exp deleted file mode 100644 index bf753b8..0000000 --- a/contrib/bluegnu2.0.3/lib/libgloss.exp +++ /dev/null @@ -1,225 +0,0 @@ -# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -# -# Find the linker script for the current target. Returns a string -# suitable to pass to $CC or $CXX to use a liblgoss based linker script, -# or NULL if there is no support. -# -proc libgloss_script { } { - global srcdir - global target_cpu - global LDFLAGS - global CFLAGS - global CXXFLAGS - global target_info - - # sanity check - if ![info exists LDFLAGS] { - set LDFLAGS "" - } - if ![info exists CFLAGS] { - set CFLAGS "" - } - - if ![info exists CXXFLAGS] { - set CXXFLAGS "" - } - - # find the linker script. first we look at the config - # data and hope to find it all ready for us to use. if - # that fails, then look in the LDFLAGS and CFLAGS variables that - # get set in the global site.exp file. - if [info exists target_info(target,name)] { - set script $target_info(target,name).ld - } else { - if [regexp -- "-T.*\.ld" ${LDFLAGS} script] { - string trimleft ${script} "-T" - } - if [regexp -- "-T.*\.ld" ${CFLAGS} script] { - string trimleft ${script} "-T" - } - if [regexp -- "-T.*\.ld" ${CXXFLAGS} script] { - string trimleft ${script} "-T" - } - } - - if ![info exists script] { - warning "Couldn't find the linker script name for target" - return "" - } - - # if we're on a remote host, we can't search for the file, so use the - # linker script in the path. - if [is3way] { - return "-T${script}" - } - - # search for the general directories - foreach i ".. ../.. ../../.. ../../../.." { - verbose "Looking for a ${srcdir}/${i}/libgloss/${target_cpu}/${script}" 2 - if [file exists ${srcdir}/$i/libgloss/${target_cpu}/${script} ] { - verbose "Found ${srcdir}/${i}/libgloss/${target_cpu}/${script}." 3 - return "-T${srcdir}/${i}/libgloss/${target_cpu}/${script}" - } - } - - # we didn't find the script, so we have to hope it's installed - return "-T${script}" -} - -# -# Find all the pieces of libgloss for testing the GNU development tools -# needed to use $CC or $CXX. It returns a string suitable to pass to -# $CC or $CXX to get a fully linked binary for the target. -# -proc libgloss_flags { } { - global target_alias - global target_cpu - global srcdir - global base_dir - - # libgloss doesn't work native - if [isnative] { - return "" - } - - # if we're on a remote host, we can't search for the file, so we can only - # use an installed compiler, so we don't add any paths here. - if [is3way] { - return "[libgloss_script]" - } - - # search for the general directories - foreach i ".. ../.. ../../.. ../../../.." { - if [file exists ${base_dir}/${i}/${target_alias}/libgloss/${target_cpu} ] { - verbose "Found ${base_dir}/${i}/${target_alias}/libgloss/${target_cpu}." 3 - return "-L${base_dir}/${i}/${target_alias}/libgloss/${target_cpu} [libgloss_script]" - } - } - - # we didn't find any support at all - return "[libgloss_script]" -} - -# -# Find the C libraries -# -proc newlib_flags { } { - global base_dir - global srcdir - global target_alias - - # if we're on a remote host, we can't search for the file, so use the - # newlib already installed. - if [is3way] { - return "" - } - - # search for the general directories - foreach i ".. ../.. ../../.. ../../../.." { - verbose "Looking for a ${base_dir}/${i}/${target_alias}/newlib/targ-include" 2 - if [file exists ${base_dir}/${i}/${target_alias}/newlib/targ-include ] { - verbose "Found ${base_dir}/${i}/${target_alias}/newlib/targ-include." 3 - set incls1 "-I${base_dir}/${i}/${target_alias}/newlib/targ-include" - } - verbose "Looking for a ${srcdir}/${i}/newlib/libc/include" 2 - if [file exists ${srcdir}/${i}/newlib/libc/include ] { - verbose "Found ${srcdir}/${i}/newlib/libc/include." 3 - set incls2 "-I${srcdir}/${i}/newlib/libc/include" - } - } - - # search for the general directories - foreach i ".. ../.. ../../.. ../../../.." { - verbose "Looking for a ${base_dir}/${i}/newlib" 2 - if [file exists ${base_dir}/${i}/newlib ] { - verbose "Found ${base_dir}/${i}/newlib." 3 - return "-B${base_dir}/${i}/newlib/ ${incls1} ${incls2}" - } - } - return "" -} - -# -# Find all the pieces of libgloss for testing the GNU development tools -# needed to use $LD. This gets fun cause we have to guess the name of the -# BSP for this target. If returns a string suitable to pass to LD to get -# a fully linked binary for the target. It also sets two global variables, -# CRT0 is the path to the startup file, and -# BSP is the path to the support library. -# -proc libgloss_ld {} { -#proc gloss_ld {} { - global target_cpu - global srcdir - global base_dir - global CRT0 - global BSP - - # libgloss doesn't work native - if [isnative] { - return "" - } - -# set ldflags "" - # search for the general directories - foreach i ".. ../.. ../../.. ../../../.." { - if ![info exists gloss_srcdir] { - if [file exists ${srcdir}/$i/libgloss/${target_cpu} ] { - verbose "Found ${srcdir}/$i/libgloss/${target_cpu}." 3 - set gloss_srcdir "$i/libgloss/${target_cpu}" - } - } - if ![info exists gloss_objdir] { - if [file exists ${base_dir}/$i/libgloss/${target_cpu} ] { - verbose "Found ${base_dir}/$i/libgloss/${target_cpu}." 3 - set gloss_objdir "$i/libgloss/${target_cpu}" - append ldflags " -L${gloss_objdir} " - } - } - } - - # find the crt0 - if [file exists ${gloss_objdir}/crt0.o] { - verbose "Found ${base_dir}/$i/libgloss/${target_cpu}." 3 - set CRT0 "$i/libgloss/${target_cpu}" - append ldflags " ${gloss_objdir}/crt0.o " - } else { - perror "No crt0.o built for this target" - } - - # find the BSP (currently an object, it may become an archive soon) - foreach i "[list_targets]" { - if [info exists target_info($i,name}] { - if [file exists ${gloss_objdir}/${target_info}($i,name).o ] { - set BSP "${target_info}($i,name).o" - append ldflags " -lc -l ${target_info}($i,name).o -lc " - } - } - } - if [expr ![info exists gloss_srcdir] || ![info exists gloss_srcdir]] { - warning "No libgloss support in build tree" - return "" - } else { - return "${ldflags}" - } -} diff --git a/contrib/bluegnu2.0.3/lib/nonexpect.itcl b/contrib/bluegnu2.0.3/lib/nonexpect.itcl deleted file mode 100644 index 230f411..0000000 --- a/contrib/bluegnu2.0.3/lib/nonexpect.itcl +++ /dev/null @@ -1,74 +0,0 @@ -# -# The following procedures are creted to replace the -# procedures defined in expect incase expect is not used as the -# test framework -# - -proc send_user args { - set newline 1 - set logfile 0 - set i 0 - if { [string index [lindex $args 0] 0] == "-" } { - for { set i 0 } { $i < [llength $args] } { incr i } { - if { [lindex $args $i] == "--" } { - incr i - break - } elseif { [lindex $args $i] == "-n" } { - set newline 0 - } elseif { [lindex $args $i] == "-log" } { - set logfile 1 - } elseif { [string index [lindex $args $i] 0] == "-" } { - ::BlueGnu::clone_output "ERROR: verbose:\ - illegal argument: [lindex $args $i]" - return - } else { - break - } - } - if { [llength $args] == $i } { - ::BlueGnu::clone_output "ERROR: send_user: nothing to print" - return - } - } - puts -nonewline [lindex $args $i] -} - -proc send_error msg { - puts -nonewline stderr $msg -} - -proc send_log msg { - global log_file - - if {[info exists log_file]} { - puts -nonewline $log_file $msg - } else { - send_user "####### No log file has been defined\n" - puts -nonewline stderr $msg - } -} - -proc log_file {args} { - global log_file - if {[info exists log_file]} { - catch {close $log_file} - unset log_file - } - set eAppend w - foreach arg $args { - switch -- $arg { - -a { - set eAppend a - } - default { - set log_file $arg - } - } - } - if {[info exist log_file]} { - set log_file [open $log_file $eAppend] - } else { - set log_file stderr - } -} - diff --git a/contrib/bluegnu2.0.3/lib/remote.exp b/contrib/bluegnu2.0.3/lib/remote.exp deleted file mode 100644 index a7fdf94..0000000 --- a/contrib/bluegnu2.0.3/lib/remote.exp +++ /dev/null @@ -1,896 +0,0 @@ -# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -# these just need to be initialized -# FIXME: This is deprecated (we should have no knowledge of global `shell_id'). -# Remove at some point. -set shell_id 0 - -# -# Open a connection to a remote host or target. This requires the target_info -# array be filled in with the proper info to work. The old variables are also -# still functional. -# -# type is either "host" or "target". The default is target if no type is supplied. -# It returns the spawn id of the process that is the connection. -# -proc remote_open { args } { - global target_info - global connectmode - global targetname - global serialport - global netport - global reboot - global shell_id - global spawn_id - - if { [llength $args] == 0 } { - set type "target" - } else { - set type $args - } - - # set the current connection - if [info exists target_info(${type},name)] { - if { $target_info(${type},name) != "" } { - if { [info proc push_$type] != "" } { - push_$type $target_info(${type},name) - } - } else { - warning "Couldn't push target, name was NULL" - } - } - - if [info exists target_info(${type},connect)] { - set connect_prog $target_info(${type},connect) - } else { - if [info exists connectmode] { - set connect_prog $connectmode - } else { - perror "No connectmode specified" - set shell_id -1 - return $shell_id - } - } - - # reboot the machine if we neeed to, typically by using an x10 controller. - if $reboot { - if { [info procs "reboot_hook"] != "" } { - reboot_hook - } - } - - set shell_id [$connect_prog $type] - - if [info exists target_info] { - set target_info(${type},fileid) $shell_id - if [info exists target_info(${type},name)] { - set target_info($target_info(${type},name),fileid) $shell_id - } - } - return $shell_id -} - -# -# Close the remote connection. -# shell_id - This is the id number returned by the any of the connection -# procedures, or an index into one of the arrays. -# -proc remote_close { arg } { - # get the type of connection, host or target - if [expr [string match "host" $arg] || [string match "target" $arg]] { - set type $arg - if [info exists target_info(${type},fileid)] { - set shell_id $target_info(${type},fileid) - } else { - perror "No shell id for to close" - } - } else { - set shell_id $arg - } - - verbose "Closing the remote shell $shell_id" 2 - catch "close -i $shell_id" - catch "wait -i $shell_id" - - return 0 -} - - -# Most of these procedures try to establish the connection 3 times before -# returning. If $verbose is set to a value of 2 or greater, then error -# messages will appear for each attempt. If there is an error that -# can't be recovered from, it returns a -1. If the connection is -# established, it returns the shell's process number returned by the -# tcl command spawn. -# Hostname refers to the entry in /etc/hosts for this target. The -# procedure's name is the same as its unix counterpart. -# The final argument is the type of connection to establish, the default -# is the target. This can also be passed as the second arg or the third. - -# -# Connect using telnet. This takes two arguments. The first one is the -# hostname, and the second is the optional port number. This sets -# the fileid field in the config array, and returns -1 for error, or the -# spawn id. -# -proc telnet { args } { - global verbose - global connectmode - global shell_prompt - global spawn_id - global timeout - global errno - - set hostname [lindex $args 0] - - # get the port number - if { [llength $args] > 1 } { - set port [lindex $args 1] - } else { - set port 23 - } - - # get the hostname and port number from the config array - if [expr [string match "host" $hostname] || [string match "target" $hostname]] { - set type $hostname - set hosttmp [split $target_info($type,netport) ":"] - set hostname [lindex $hosttmp 0] - if { [llength $hosttmp] > 1 } { - set port [lindex $hosttmp 1] - } - unset hosttmp - if [info exists target_info($type,prompt)] { - set shell_prompt $target_info($type,prompt) - } - } else { - set type target - } - if ![info exists shell_prompt] { # if no prompt, then set it to something generic - set shell_prompt ".*> " - } - - set tries 0 - set result -1 - verbose "Starting a telnet connection to $hostname:$port" 2 - spawn telnet $hostname $port - exp_send "\r\n" - while { $tries <= 3 } { - catch expect { - "ogin:" { - perror "telnet: need to login" - break - } - "assword:" { - perror "telnet: need a password" - break - } - -re ".*$shell_prompt.*$" { - verbose "Got prompt\n" - set result 0 - } - "Connected to" { - exp_continue - } - -re "\[\r\n\]*" { - exp_continue - } - "unknown host" { - exp_send "\003" - perror "telnet: unknown host" - break - } - "Escape character is" { - exp_send "\r\n" - exp_continue - } - "has logged on from" { - exp_continue - } - "You have no Kerberos tickets" { - warning "telnet: no kerberos Tickets, please kinit" - break - } - -re "Connection refused.*$" { - exp_send "\003" - warning "telnet: connection refused." - } - -re "Sorry, this system is engaged.*" { - exp_send "\003" - warning "telnet: already connected." - } - "Connection closed by foreign host.*$" { - warning "telnet: connection closed by foreign host." - break - } - timeout { - exp_send "\003" - warning "telnet: timed out trying to connect." - } - eof { - perror "telnet: got unexpected EOF from telnet." - break - } - } - incr tries - } - # we look for this hear again cause it means something went wrong, and - # it doesn't always show up in the expect in buffer till the server times out. - if [info exists expect_out(buffer)] { - if [regexp "assword:|ogin:|" $expect_out(buffer)] { - perror "telnet: need to supply a login and password." - } - } - if { $result < 0 } { - catch close - catch wait -# perror "telnet: couldn't connect after $tries tries." - set spawn_id -1 - } - set target_info(target,fileid) $spawn_id - if [info exists target_info(target,name)] { - set target_info($target_info(target,name),fileid) $spawn_id - } - return $spawn_id -} - -# -# Connect to hostname using rlogin. The global RLOGIN -# is the name of the actual rlogin program. This is for systems -# using rlogin to braindead targets that don't support kerboros. -# It returns either the spawn_id or a -1. -# The final argument is the type of connection to establish, the default -# is the target. This can also be passed as the second arg or the third. -# -proc rlogin { arg } { - global spawn_id - global target_info - global RLOGIN - global errno - - set tries 0 - set result -1 - - # get the hostname and port number from the config array - if [expr [string match "host" $arg] || [string match "target" $arg]] { - set type $arg - set hostname [lindex [split $target_info(${type},netport) ":"] 0] - if [info exists target_info($type,prompt)] { - set shell_prompt $target_info($type,prompt) - } - } else { - set hostname $arg - set type target - } - if ![info exists shell_prompt] { # if no prompt, then set it to something generic - set shell_prompt ".*> " - } - - # get the right version of rlogin - if ![info exists RLOGIN] { - set RLOGIN rlogin - } - - # start connection and store the spawn_id - verbose "Opening a $RLOGIN connection to $hostname" 2 - spawn $RLOGIN $hostname - if { $spawn_id < 0 } { - perror "invalid spawn id from rlogin" - return - } - set target_info(${type},fileid) $spawn_id - if [info exists target_info($type,name)] { - set target_info($target_info($type,name),fileid) $spawn_id - } - - # try to connect to the target. We give up after 3 attempts. At one point - # we used to look for the prompt, but we may not know what it looks like. - while { $tries <= 3 } { - expect { - -re ".*$shell_prompt.*$" { - verbose "Got prompt\n" - set result 0 - break - } - -re "TERM = .*\\)\[ ]*$" { - send "dumb\r\n" - expect { - "Terminal type is*$" { - verbose "rlogin: set the terminal to dumb" 2 - } - default { - warning "rlogin: couldn't set terminmal type" - } - } - set result 10 - break - } - "unknown host" { - perror "rlogin: unknown host" - break - } - "has logged on from" { - exp_continue - } - "Terminal type is" { - verbose "rlogin: connected, got terminal prompt" 2 - set result 0 - break - } - -re "Maximum number of users already logged in.*$" { - warning "rlogin: maximum number of users already logged in" - } - -re "Sorry, shell is locked.*Connection closed.*$" { - warning "rlogin: lready connected." - } - -re "Sorry, this system is engaged.*Connection closed.*$" { - warning "rlogin: system engaged." - } - -re "Kerberos rcmd failed.*$" { - warning "rlogin: Kerberos rcmd failed, please kinit" - catch close - catch wait - break - } - -re "trying normal rlogin.*$" { - warning "rlogin: trying normal rlogin." - catch close - catch wait - break - } - -re "unencrypted connection.*$" { - warning "rlogin: unencrypted connection, please kinit" - catch close - catch wait - break - } - -re "isn't registered for Kerberos.*service.*$" { - warning "rsh: isn't registered, please kinit" - catch close - catch wait - break - } - -re "You have no Kerberos tickets.*$" { - warning "rlogin: No kerberos Tickets, please kinit" - catch close - catch wait - break - } - timeout { - warning "rlogin: timed out trying to connect." - } - eof { - perror "rlogin: got EOF while trying to connect." - break - } - } - incr tries - } - - # if the error was fatal, there's nothing to send to - catch { send "\r\n" } tmp - if [string match "*invalid spawn id*" $tmp] { - perror "Couldn't rlogin to $hostname, fatal error." - catch "close $spawn_id" - set target_info(${type},fileid) $spawn_id - if [info exists target_info(${type},name)] { - set target_info($target_info(${type},name),fileid) $spawn_id - } - return $spawn_id - } - expect { - "\r\n*$" { - exp_continue - } - -re "\[- A-Za-z0-9\.\;\"\_\:\'\`\(\)\!\#\=\+\?\&\*]+.*$" { - # this is kinda gross, but if we get most any legit ascii - # text we figure we connected. Others tests later will - # determine if the connection actually works. - verbose "We got some text" 2 - } - } - - # see if we maxed out on errors - if { $result < 0 } { - catch close - catch wait -# perror "rlogin: couldn't rlogin to $hostname, Too many errors" - catch "close $spawn_id" - set spawn_id -1 - set target_info(${type},fileid) $spawn_id - if [info exists target_info(${type},name)] { - set target_info($target_info(${type},name),fileid) $spawn_id - } - } else { - verbose "rlogin: connected to $hostname" 2 - } - - return $spawn_id -} - -# -# Connect to hostname using rsh -# -proc rsh { arg } { - global spawn_id - global target_info - global RSH - global errno - - set tries 0 - set result -1 - - # get the hostname and port number from the config array - if [expr [string match "host" $arg] || [string match "target" $arg]] { - set type $arg - set hostname [lindex [split $target_info(${type},netport) ":"] 0] - if [info exists target_info(${type},prompt)] { - set shell_prompt $target_info(${type},prompt) - } - } else { - set hostname $arg - set type target - } - if ![info exists shell_prompt] { # if no prompt, then set it to something generic - set shell_prompt ".*> " - } - - if ![info exists RSH] { - set RSH rsh - } - spawn $RSH $hostname - if { $spawn_id < 0 } { - perror "invalid spawn id from rsh" - return - } - set target_info(${type},fileid) $spawn_id - if [info exists target_info(${type},name)] { - set target_info($target_info(${type},name),fileid) $spawn_id - } - if [info exists target_info(${type},prompt)] { - set prompt $target_info(${type},prompt) - } - send "\r\n" - while { $tries <= 3 } { - expect { - -re ".*$shell_prompt.*$" { - verbose "Got prompt\n" - set result 0 - break - } - -re "TERM = .*$" { - warning "Setting terminal type to vt100" - set result 0 - send "vt100\n" - break - } - "unknown host" { - exp_send "\003" - perror "telnet: unknown host" - break - } - "has logged on from" { - exp_continue - } - -re "isn't registered for Kerberos.*service.*$" { - warning "rsh: isn't registered for Kerberos, please kinit" - catch close - catch wait - break - } - -re "Kerberos rcmd failed.*$" { - warning "rsh: Kerberos rcmd failed, please kinit" - catch close - catch wait - break - } - -re "You have no Kerberos tickets.*$" { - warning "rsh: No kerberos Tickets, please kinit" - catch close - catch wait - break - } - "Terminal type is" { - verbose "rsh: connected, got terminal prompt" 2 - set result 0 - break - } - -re "trying normal rlogin.*$" { - warning "rsh: trying normal rlogin." - catch close - catch wait - break - } - -re "unencrypted connection.*$" { - warning "rsh: unencrypted connection, please kinit" - catch close - catch wait - break - } - -re "Sorry, shell is locked.*Connection closed.*$" { - warning "rsh: already connected." - } - timeout { - warning "rsh: timed out trying to connect." - } - eof { - perror "rsh: got EOF while trying to connect." - break - } - } - incr tries - } - - if { $result < 0 } { -# perror "rsh: couldn't connect after $tries tries." - set spawn_id -1 - } - set target_info(${type},fileid) $spawn_id - if [info exists target_info(${type},name)] { - set target_info($target_info(${type},name),fileid) $spawn_id - } - return $spawn_id -} - -# -# Download an executable to a network neighbor -# -# DEST is assumed to already contain the nodename. -# Returns the status returned by the rcp command. -# -proc rcp_download { src dest } { - set status [catch "exec rcp $src $dest" output] - if { $status == 0 } { - verbose "Copied $src to $dest" 2 - } else { - verbose "Download to $dest failed, $output." - } - return $status -} - -# -# This proc is deprecated. Please use `execute_anywhere' instead. -# -# Execute a program on the remote system using rsh -# -# SYSTEM is the host name of the system to run the program on. -# CMD is the program to run (including path) and any arguments. -# The result is a list of two elements. -# First element: 0 for success, 1 for failure, -1 for comms failure. -# Second element: program output (success/failure) or error message (comms). -# -proc rsh_exec { system cmd } { - verbose "Executing $system:$cmd" 3 - # If CMD sends any output to stderr, exec will think it failed. More often - # than not that will be true, but it doesn't catch the case where there is - # no output but the exit code is non-zero. The "2>&1" is done on the - # remote system and is not a special flag for `exec'. - set status [catch "exec rsh $system $cmd 2>&1 \\; echo XYZ$?ZYX" output] - # `status' doesn't mean much here other than rsh worked ok. - # What we want is whether $cmd ran ok. - if { $status != 0 } { - regsub "XYZ(\[0-9\]*)ZYX\n?" $output "" output - return [list -1 "rsh to $system failed for $cmd, $output"] - } - regexp "XYZ(\[0-9\]*)ZYX" $output junk status - verbose "rsh_exec: status:$status text:$output" 4 - if { $status == "" } { - return [list -1 "Couldn't parse rsh output, $output."] - } - regsub "XYZ(\[0-9\]*)ZYX\n?" $output "" output - # Delete one trailing \n because that is what `exec' will do and we want - # to behave identical to it. - regsub "\n$" $output "" output - return [list [expr $status != 0] $output] -} - -# -# Connect to using tip -# port - must be a name from /etc/remote, or "host" or "target". -# returns -1 if it failed, the spawn_id if it worked -# -proc tip { arg } { - global verbose - global shell_prompt - global target_info - global spawn_id - - set tries 0 - set result -1 - - if [expr [string match "host" $arg] || [string match "target" $arg]] { - set port $target_info(${type},target) - if [info exists target_info(${type},prompt)] { - set shell_prompt $target_info(${type},prompt) - } - } else { - set port $arg - } - if ![info exists shell_prompt] { # if no prompt, then set it to something generic - set shell_prompt ".*> " - } - - spawn tip -v $port - if { $spawn_id < 0 } { - perror "invalid spawn id from tip" - return -1 - } - set target_info(target,fileid) $spawn_id - set target_info($target_info(target,name),fileid) $spawn_id - expect { - -re ".*connected.*$" { - send "\r\n" - expect { - -re ".*$shell_prompt.*$" { - verbose "Got prompt\n" - set result 0 - incr tries - } - timeout { - warning "Never got prompt." - set result -1 - incr tries - if $tries<=2 { - exp_continue - } - } - } - } - -re "all ports busy.*$" { - set result -1 - perror "All ports busy." - incr tries - if { $tries <= 2 } { - exp_continue - } - } - -re "Connection Closed.*$" { - perror "Never connected." - set result -1 - incr tries - if { $tries <= 2 } { - exp_continue - } - } - -re ".*: Permission denied.*link down.*$" { - perror "Link down." - set result -1 - incr tries - } - timeout { - perror "Timed out trying to connect." - set result -1 - incr tries - if { $tries <= 2 } { - exp_continue - } - } - eof { - perror "Got unexpected EOF from tip." - set result -1 - incr tries - } - } - - send "\n~s" - expect { - "~\[set\]*" { - verbose "Setting verbose mode" 1 - send "verbose\n\n\n" - } - } - - if { $result < 0 } { - perror "Couldn't connect after $tries tries." - set target_info(${type},fileid) -1 - set target_info($target_info(${type},name),fileid) -1 - return -1 - } else { - set target_info(${type},fileid) $spawn_id - set target_info($target_info(${type},name),fileid) $spawn_id - return $spawn_id - } -} - -# -# Downloads using the ~put command under tip -# arg - is a full path name to the file to download -# returns 1 if an error occured, otherwise it returns -# the spawn_id. -# -proc tip_download { shell_id file } { - global verbose - global decimal - global shell_prompt - global expect_out - - set result 1 - if ![file exists $file] { - perror "$file doesn't exist." - return 1 - } - - send -i $shell_id "\n~p" - expect { - -i $shell_id "~\[put\]*" { - verbose "Downloading $file, please wait" 1 - send -i $shell_id "$file\n" - set timeout 50 - expect { - -i $shell_id -re ".*$file.*$" { - exp_continue - } - -i $shell_id -re ".*lines transferred in.*minute.*seconds.*$shell_prompt.*$" { - verbose "Download $file successfully" 1 - set result 0 - } - -i $shell_id -re ".*Invalid command.*$shell_prompt$" { - warning "Got an Invalid command to the monitor" - } - -i $shell_id -re ".*$decimal\r" { - if [info exists expect_out(buffer)] { - verbose "$expect_out(buffer)" - exp_continue - } - } - -i $shell_id timeout { - perror "Timed out trying to download." - set result 1 - } - } - } - timeout { - perror "Timed out waiting for response to put command." - } - } - set timeout 10 - return $result -} - -# -# Connect to using kermit -# args - first is the device name, ie. /dev/ttyb -# second is the optional baud rate. If this is "host" or "target" the -# config array is used instead. -# returns -1 if it failed, otherwise it returns -# the spawn_id. -# -proc kermit { args } { - global verbose - global shell_prompt - global spawn_id - - if { [llength $args] == 1 } { - set baud 9600 - } else { - set baud [lindex $args 1] - } - - if [expr [string match "host" [lindex $args 0]] || [string match "target" [lindex $arg 0]]] { - set device $target_info(${type},serial) - if [info exists target_info(${type},baud)] { - set baud $target_info(${type},baud) - } - } else { - set device [lindex $args 0] - } - - set tries 0 - set result -1 - spawn kermit -l $device -b $baud - if { $spawn_id < 0 } { - perror "invalid spawn id from kermit" - return -1 - } - set target_info(${type},fileid) $spawn_id - set target_info($target_info(${type},name),fileid) $spawn_id - expect { - -re ".*ermit.*>.*$" { - send "c\n" - expect { - -re ".*Connecting to $port.*Type the escape character followed by C to.*$" { - verbose "Got prompt\n" - set result 0 - incr tries - } - timeout { - warning "Never got prompt." - set result -1 - incr tries - if { $tries <= 2 } { - exp_continue - } - } - } - } - -re "Connection Closed.*$" { - perror "Never connected." - set result -1 - incr tries - if { $tries <= 2 } { - exp_continue - } - } - timeout { - warning "Timed out trying to connect." - set result -1 - incr tries - if { $tries<=2 } { - exp_continue - } - } - } - - if { $result < 0 } { - perror "Couldn't connect after $tries tries." - set target_info(${type},fileid) -1 - set target_info($target_info(${type},name),fileid) -1 - return -1 - } else { - set target_info(${type},fileid) $spawn_id - set target_info($target_info(${type},name),fileid) $spawn_id - return $spawn_id - } -} - -# -# exit the remote shell -# -# ??? This proc is deprecated. Please use `remote_close' instead. -proc exit_remote_shell { shell_id } { - return [remote_close $shell_id] -} - -# -# Download a file using stdin. This will download a file -# regardless of whether rlogin, telnet, tip, or kermit was -# used to establish the connection. -# -proc download { args } { - global spawn_id - global verbose - - set file [lindex $args 0] - - if { [llength $args] > 1 } { - set shellid [lindex $args 1] - } else { - set shellid $spawn_id - } - - set lines 0 - set fd [open $file r] - while { [gets $fd cur_line] >= 0 } { - set errmess "" - catch "send -i $shellid \"$cur_line\"" errmess - if [string match "write\(spawn_id=\[0-9\]+\):" $errmess] { - perror "sent \"$command\" got expect error \"$errmess\"" - catch "close $fd" - return -1 - } - verbose "." 2 - verbose "Sent $cur_line" 3 - incr lines - } - verbose "$lines lines downloaded" - close $fd - return 0 -} diff --git a/contrib/bluegnu2.0.3/lib/serverUtils.itcl b/contrib/bluegnu2.0.3/lib/serverUtils.itcl deleted file mode 100644 index 7e7c8bb..0000000 --- a/contrib/bluegnu2.0.3/lib/serverUtils.itcl +++ /dev/null @@ -1,51 +0,0 @@ -# -# -# - -proc EvalServer {port {interp {}} {openCmd EvalOpenProc}} { - puts "in EvalServer" - socket -server [list EvalAccept $interp $openCmd] $port -} - -proc EvalAccept {interp openCmd newsock addr port} { - global eval - - puts "in EvalAccept" - set eval(cmdbuf,$newsock) {} - puts "[fconfigure $newsock]" - fconfigure $newsock -buffering line - fileevent $newsock readable [list EvalRead $newsock $interp] - puts "in EvalAccept: got fileevent" - if [catch { - interp eval $interp $openCmd $newsock $addr $port - }] { - close $newsock - } -} - -proc EvalOpenProc {sock addr port} { - puts "in EvalOpenProc" - # dummy -} - -proc EvalRead {sock interp} { - global eval errorInfo errorCode - - puts "in EvalRead" - if [eof $sock] { - close $sock - } else { - gets $sock line - append eval(cmdbuf,$sock) "$line\n" - if {[string length $eval(cmdbuf,$sock)] && \ - [info complete $eval(cmdbuf,$sock)]} { - puts ">$eval(cmdbuf,$sock)<" - } - set reply "Done\n" - puts $sock 1 - puts -nonewline $sock $reply - flush $sock - set eval(cmdbuf,$sock) {} - } -} - diff --git a/contrib/bluegnu2.0.3/lib/target.exp b/contrib/bluegnu2.0.3/lib/target.exp deleted file mode 100644 index fd69f8b..0000000 --- a/contrib/bluegnu2.0.3/lib/target.exp +++ /dev/null @@ -1,520 +0,0 @@ -# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -# a hairy pattern to recognize text -set text "\[- A-Za-z0-9\.\;\"\_\:\'\`\(\)\!\#\=\+\?\&\*]" - -# -# this is a collection of support procs for the target data -# structures. We use a named array, since Tcl has no real data -# structures. Here's the special index words for the array: -# Required fields are: -# name - the name of the target. (mostly for error messages) This -# should also be the string used for this target's array. -# It should also be the same as the linker script so we -# can find them dynamically. -# Optional fields are: -# ldflags - the flags required to produce a fully linked executable. -# config - the target canonical for this target. This is a regexp -# as passed to istarget or isnative. -# cflags - the flags required to produce an object file from a -# source file. -# connect - the connectmode for this target. This is for both IP and -# serial connections. -# target - the hostname of the target. This is for TCP/IP based connections, -# and is also used for version of tip that use /etc/remote. -# serial - the serial port. This is typically /dev/tty? or com?:. -# netport - the IP port. -# baud - the baud rate for a serial port connection. -# x10 - parameters for the x10 controller (used to reboot) -# fileid - the fileid or spawn id of of the connection. -# prompt - a regexp for matching the prompt. -# abbrev - abbreviation for tool init files. -# ioport - the port for I/O on dual port systems. -# -# there are three main arrays, indexed in with "target", "build", and "host". -# all other targets are indexed with a name usually based on the linker script -# like "idp", or "ex93x.ld". -# - -# -# Set the elements of the target data structure -# The order of the values is name, ldflags, config, cflags, connect, target, serial, -# netport, baud, x10, fileid, prompt, abbrev, ioport. -# FIXME: I'm not entirely sure this proc is a good idea... -proc set_target_info { args } { - global target_info - - set name [lindex $args 0] - - # process the linker arguments - if { [llength $args] > 0 } { - set target_info($name,ldflags) [lindex $args 1] - } else { - set target_info($name,ldflags) "" - } - - # process the config string - if { [llength $args] > 1 } { - set target_info($name,config) [lindex $args 2] - } else { - set target_info($name,config) "" - } - - # process the compiler arguments - if { [llength $args] > 2 } { - set target_info($name,cflags) [lindex $args 3] - } else { - set target_info($name,cflags) "" - } - - # process the connection mode - if { [llength $args] > 3 } { - set target_info($name,connect) [lindex $args 3] - } else { - set target_info($name,connect) "" - } - - # process the target's hostname - if { [llength $args] > 4 } { - set target_info($name,target) [lindex $args 3] - } else { - set target_info($name,target) "" - } - - # process the serial port - if { [llength $args] > 5 } { - set target_info($name,serial) [lindex $args 3] - } else { - set target_info($name,serial) "" - } - - # process the netport - if { [llength $args] > 6 } { - set target_info($name,netport) [lindex $args 3] - } else { - set target_info($name,netport) "" - } - - # process the baud - if { [llength $args] > 7 } { - set target_info($name,baud) [lindex $args 3] - } else { - set target_info($name,baud) "" - } - - # process the x10 unit number. - if { [llength $args] > 8 } { - set target_info($name,x10) [lindex $args 3] - } else { - set target_info($name,x10) "" - } - - # process the fileid - if { [llength $args] > 9 } { - set target_info($name,fileid) [lindex $args 3] - } else { - set target_info($name,fileid) "" - } - - # process the prompt - if { [llength $args] > 10 } { - set target_info($name,prompt) [lindex $args 3] - } else { - set target_info($name,prompt) "" - } - - # process the abbrev - if { [llength $args] > 10 } { - set target_info($name,connect) [lindex $args 3] - } else { - set target_info($name,connect) "" - } - - # process the ioport - if { [llength $args] > 11 } { - set target_info($name,ioport) [lindex $args 3] - } else { - set target_info($name,ioport) "" - } -} - -# -# Set the target connection. -# -proc push_target { name } { - pop_config target - push_config target $name -} - -# -# Set the host connnection. -# -proc push_host { name } { - pop_config host - push_config host $name -} - -# -# Set the config for the current host or target connection. -# -proc push_config { type name } { - global target_info - - if [info exists target_info(${name},name)] { - set target_info($type,name) $name - } - if [info exists target_info(${name},ldflags)] { - set target_info($type,ldflags) $target_info(${name},ldflags) - } - if [info exists target_info(${name},config)] { - set target_info($type,config) $target_info(${name},config) - } - if [info exists target_info(${name},cflags)] { - set target_info($type,cflags) $target_info(${name},cflags) - } - if [info exists target_info(${name},connect)] { - set target_info($type,connect) $target_info(${name},connect) - } - if [info exists target_info(${name},target)] { - set target_info($type,target) $target_info(${name},target) - } - if [info exists target_info(${name},serial)] { - set target_info($type,serial) $target_info(${name},serial) - } - if [info exists target_info(${name},netport)] { - set target_info($type,netport) $target_info(${name},netport) - } - if [info exists target_info(${name},baud)] { - set target_info($type,baud) $target_info(${name},baud) - } - if [info exists target_info(${name},x10)] { - set target_info($type,x10) $target_info(${name},x10) - } - if [info exists target_info(${name},fileid)] { - set target_info($type,fileid) $target_info(${name},fileid) - } - if [info exists target_info(${name},prompt)] { - set target_info($type,prompt) $target_info(${name},prompt) - } - if [info exists target_info(${name},abbrev)] { - set target_info($type,abbrev) $target_info(${name},abbrev) - } - if [info exists target_info(${name},ioport)] { - set target_info($type,ioport) $target_info(${name},ioport) - } -} - -# -# Set the current connection for target or host. -# -proc pop_config { type } { - global target_info - - set target_info(${type},name) "" - set target_info(${type},ldflags) "" - set target_info(${type},config) "" - set target_info(${type},cflags) "" - set target_info(${type},connect) "" - set target_info(${type},target) "" - set target_info(${type},serial) "" - set target_info(${type},netport) "" - set target_info(${type},baud) "" - set target_info(${type},x10) "" - set target_info(${type},fileid) "" - set target_info(${type},prompt) "" - set target_info(${type},abbrev) "" - set target_info(${type},ioport) "" -} - -# -# Unset the target connection. -# -proc pop_target { } { - pop_config target -} - - -# -# Unset the host connection. -# -proc pop_host { } { - pop_config host -} - -# -# list all the configured targets. -# returns: -# "" if there are no targets. -# else it returns a list of unique names. -# -proc list_targets { } { - global target_info - - if ![info exists target_info] { - return "" - } - - set j "" - set targs "" - foreach i "[lsort [array names target_info]]" { - set i "[lindex [split $i ","] 0]" - if { $i == $j } { - continue - } else { - lappend targs "[lindex [split $i ","] 0]" - set j $i - } - } - return $targs -} - -# -# Remove extraneous warnings we don't care about -# -proc prune_warnings { text } { - # remove the \r part of "\r\n" so we don't break all the patterns - # we want to match. - regsub -all -- "\r" $text "" text - - # This is from sun4's. Do it for all machines for now. - # The "\\1" is to try to preserve a "\n" but only if necessary. - if [ishost "sparc-*-sunos"] { - regsub -all "(^|\n)(ld.so: warning:\[^\n\]*\n?)+" $text "\\1" text - } - - # See Brendan for the raison d'etre of this one. - if [ishost "alpha*-*-*"] { - regsub -all "(^|\n)(/usr/(ucb|bin)/ld.*without exceptions was\[^\n\]+\n?)" $text "\\1" text - } - - - # Ignore these. - regsub -all "(^|\n)\[^\n\]*linker input file unused since linking not done" $text "" text - regsub -all "(^|\n)\[^\n\]*file path prefix \[^\n\]* never used" $text "" text - - # It might be tempting to get carried away and delete blank lines, etc. - # Just delete *exactly* what we're ask to, and that's it. - return $text -} - -# -# Invoke the compiler. This gets interesting cause the compiler may -# not be on the same machine we're running DejaGnu on. -# -proc compile { arg } { - global target_info - global comp_output - global CC - - if [info exists target_info(target,cflags)] { - lappend options "$target_info(target,cflags)" - } - - append options " $arg" - - verbose "Invoking the compiler as $CC $options" - set comp_output [prune_warnings [execute_anywhere "$CC $options"]] - return ${comp_output} -} - -# -# Invoke the archiver. -# -proc archive { arg } { - global target_info - global comp_output - global AR - - if [info exists target_info(target,arflags)] { - lappend options "$target_info(target,arflags)" - } - append options "$arg" - - verbose "Invoking the archiver as $AR $options" - set comp_output [prune_warnings [execute_anywhere "$AR $options"]] - return ${comp_output} -} - -proc ranlib { arg } { - global target_info - global comp_output - global RANLIB - - append options "$arg" - - verbose "Invoking the archiver as $RANLIB $options" - set comp_output [prune_warnings [execute_anywhere "$RANLIB $options"]] - return ${comp_output} -} - -# -# Link a few objects together. This gets interesting cause the -# objects may not be on the same machine we're running DejaGnu on. -# -proc link_objects { arg } { - global target_info - global comp_output - global LD - - set options "$arg" - if [info exists target_info(target,ldlags)] { - lappend options "$target_info(target,ldlags)" - } - - set comp_output [execute_anywhere "$LD $args"] - return [ prune_warnings $comp_output] -} - -# -# Remotely execute something. This gets fun cause we can't expect an -# Unix machine on the other end. We'll use expect instead so we can -# connect using $connectmode. This is really designed for executing -# the tools to be tested, rather than the test cases. -# -proc execute_anywhere { cmdline } { - global exec_output - global target_info - - if ![info exists target_info(current,prompt)] { - set prompt "" - } else { - set prompt $target_info(current,prompt) - } - - # if we're running stuff that's hosted on the same machine - if ![is3way] { - verbose -log "Executing on local host: ${cmdline}" 2 - set status [catch "exec ${cmdline}" exec_output] - if ![string match "" ${exec_output}] { - # FIXME: This should be done below, after `else'. - verbose -log -- "${exec_output}" 2 - } - return ${exec_output} - } else { - verbose -log "Executing on remote host: ${cmdline}" 2 - # open the connection - verbose "Connecting to remote host" 2 - set shellid [remote_open "host"] - if { $shellid < 0 } { - perror "Can't open connection to remote host" - return REMOTERROR - } -# stty -echo - send -i $shellid "echo START ; $cmdline ; echo END\r\n" - expect { - -i $shellid "echo START \; $cmdline \; echo END" { - } - default { - warning "Never got command echo" - } - } - expect { - -i $shellid "START" { - exp_continue - } - -i $shellid "END" { - regsub -all "\]" $expect_out(buffer) "" exec_output - regsub "END" $exec_output "" exec_output - } default { - set exec_output $i - } - } - } - - if [info exists exec_output] { - verbose "EXEC_OUTPUT = \"$exec_output\"" 2 - } - - -# stty echo - # close the connection - remote_close $shellid - - if [info exists exec_output] { - return $exec_output - } else { - return REMOTERROR - } -} - -# -# Get something resembling a prompt We can't grab more -# than the last word cause we have no real idea how long -# the prompt is. We also get the full prompt, but it's -# kinda useless as it might contain command numbers or -# paths that change. If we can't return a prompt, return -# null. so at least other patterns won't break. -# -proc getprompt { shellid } { - global spawn_id - - if { $shellid < 0 } { - perror "Invalid spawn id" - return "" - } - - set tries 0 - set text "" - - while { $tries <=3 } { - verbose "Trying to get the remote host's prompt" - send -i $shellid "ACK\r\n" - expect { - -i $shellid -re "Kerberos rcmd failed.*$" { - perror "Need to kinit" - return "" - } - -i $shellid -re "$text*\[\r\n\]*" { - return [lindex [split $expect_out(buffer) "\r\n"] 5] - break - } - -i $shellid -re "Terminal type is.*tty.*\>" { - return [lindex [split $expect_out(buffer) "\r\n"] 5] - break - } - -i $shellid "" { - warning "No prompt" - } - -i $shellid timeout { - perror "Couldn't sync with the remote system" - } - -i $shellid eof { - perror "Got EOF instead of a prompt" - } - } - incr tries - } - - # see if we maxed out on errors - if { $tries >= 3 } { - warning "Couldn't get the prompt" - return "" - } -} - - -# -# -# -proc make { args } { - perror "Unimplemented" -} diff --git a/contrib/bluegnu2.0.3/lib/tclIndex b/contrib/bluegnu2.0.3/lib/tclIndex deleted file mode 100644 index 7b09971..0000000 --- a/contrib/bluegnu2.0.3/lib/tclIndex +++ /dev/null @@ -1,21 +0,0 @@ -# Tcl autoload index file: each line identifies a Tcl - -doCmd testSessionFramework.itcl - -send_user nonexpect.itcl -send_error nonexpect.itcl -send_log nonexpect.itcl -log_file nonexpect.itcl - -::BlueGnu::Application testSessionApplication.itcl -::BlueGnu::Environment testSessionClasses.itcl -::BlueGnu::Target testSessionClasses.itcl -::BlueGnu::Test testSessionClasses.itcl -::BlueGnu::Queue testSessionClasses.itcl -::BlueGnu::Error testSessionClasses.itcl - -Default Default_target.itcl -BlueGnu BlueGnu_target.itcl - -# Types -Type Types.itcl diff --git a/contrib/bluegnu2.0.3/lib/testSessionApplication.itcl b/contrib/bluegnu2.0.3/lib/testSessionApplication.itcl deleted file mode 100644 index 3d57722..0000000 --- a/contrib/bluegnu2.0.3/lib/testSessionApplication.itcl +++ /dev/null @@ -1,314 +0,0 @@ -# -# This file defines the Application Class -# - -source $env(BLUEGNULIB)/testSessionFramework.itcl -source $env(BLUEGNULIB)/testSessionClasses.itcl - -namespace eval ::BlueGnu { - class Application { - protected variable szName "Default" - protected variable lTargets {} - protected variable lTests - protected variable szCurrentTarget - protected variable objCurrentTarget - protected variable objEnvironment - protected variable szOutDir - - constructor {args} { - debug {======= Doing Application construction} 3 - set szOutDir "..." - foreach varval $args { - set varval [split $varval "="] - if {[llength $varval] != 2} { - error "Missing = pair" - } - set var [lindex $varval 0] - set val [lindex $varval 1] - set variables {} - foreach v [lsort [info variable]] { - regexp {[^:]+$} $v v - lappend variables $v - } - if {[lsearch -exact $variables $var] >= 0} { - set $var $val - } else { - error "$var does not exists in Class [info class]" - } - } - } - - destructor { - } - - public method execute {} { - debug {======= Starting with Execution of the Application} 3 - debug { list of indexes for lTests is [array names lTests]} 4 - set iTarget 0 - set objEnvironment [uplevel #0 \ - "::BlueGnu::Environment #auto \ - szName=$szName"] - debug { objEnvironment = >$objEnvironment<} 3 - debug { +++ [infoWhich $objEnvironment] +++} 4 - debug { === [::itcl::find objects] ===} 4 - uplevel #0 set objCurrentEnvironment $objEnvironment - foreach target $lTargets { - set szTargetName [lindex [split $target "="] 0] - open_logs $szTargetName - incr iTarget - # set current Test Suite Namespace - uplevel #0 set nspTestSuite "::TestSuite[format %.5d $iTarget]" - debug { Processing target: >$target< in Test Suite\ - [uplevel set nspTestSuite]} 3 - namespace eval [uplevel set nspTestSuite] { - debug { Context is >[namespace current]<} 3 - variable iTestNr 0 - proc autoTest {} { - variable iTestNr - - incr iTestNr - debug {iTestNr = $iTestNr} 5 - debug {namespace current = >[namespace current]<} 5 - debug {format = >T[format %.5d $iTestNr]<} 5 - return [namespace current]::T[format %.5d $iTestNr] - } - - set target [uplevel set target] - debug { In namespace eval [namespace current]\ - for target: >$target<} 3 - if {! [catch { - if {[string length $target] == 0} { - # Create a default Target Object - # - debug { Create a default Target Object} 3 - uplevel #0 set objCurrentTarget \ - [infoWhich \ - [::BlueGnu::Target #auto \ - szID=default \ - szName=default \ - objQueue=[infoWhich [::BlueGnu::Queue #auto]] \ - objEnvironment=[uplevel set objEnvironment]]] - } else { - # Call the Target Procedure - # This procedure should return a Target Object. - # Arguments are passed to this procedure. - debug { Create target: >$target<} 3 - set list [split $target "="] - uplevel #0 set objCurrentTarget \ - [infoWhich \ - [eval [lindex $list 0] \ - [join [lrange $list 1 end] "="] \ - objEnvironment=[uplevel set objEnvironment]]] - } - } szErrMsg]} { - debug { Current Target is\ - >[set target \ - [uplevel #0 set objCurrentTarget]]<} 3 - - debug { Working with target index\ - [uplevel set iTarget]} 4 - if {[uplevel {info exists lTests($iTarget)}]} { - foreach test [uplevel {set lTests($iTarget)}] { - debug { test: $test} 3 - $target queue append $test - } - } - $target start - $target runTests - $target exit - - # report results of the testing - # - debug { #### All Objects: [::itcl::find objects]} 3 - foreach T [lsort [::itcl::find objects T*]] { - debug { #### Deleting Object $T\ - ([$T info class])} 0 - delete object $T - } - # remove constructed objects - # - debug { Removing Target Class Object $target} 3 - delete object $target - } else { - global errorCode errorInfo - perror "Couldn't create target >$target$target< defined!\ - \n errorMsg : >$szErrMsg<\ - \n errorInfo: >$errorInfo<\ - \n errorCode: >$errorCode<" - debug { error info:\n$errorInfo} 3 - } - } - namespace delete [uplevel set nspTestSuite] - close_logs - } - debug { objects: >[::itcl::find objects]<} 4 - debug {####### deleting Object Environment >$objEnvironment<} 4 - delete object $objEnvironment - } - - public method processArguments {arguments} { - upvar $arguments argv - global szCurrentTestDirectory - - set state NORMAL - set iTarget 0 - foreach arg $argv { - switch -regexp -- $arg { - {^-a(l(l)?)?$} { - debug { all_flag set to TRUE} 4 - set ::BlueGnu::all_flag 1 - } - {^-o(u(t(d(i(r)?)?)?)?)?$} { - debug { Output Directory is next argument} 4 - set state OUTDIR - } - {^--o(u(t(d(i(r)?)?)?)?)?=.*} { - set components [split $arg "="] - debug { Processing Output Directory >$arg<} 4 - set szOutDir [lindex $components 1] - set state NORMAL - } - {^-[-]?t(a(r(g(e(t)?)?)?)?)?([=].*|$)} { - set components [split $arg "="] - if {[llength $components] == 1} { - debug { Target is next argument} 4 - set state TARGET - } else { - debug { Processing Target >$arg<} 4 - setTarget iTarget \ - [join [lrange $components 1 end] "="] - set state NORMAL - } - } - default { - debug { Processing argument: >$arg<} 3 - switch $state { - OUTDIR { - set szOutDir $arg - set state NORMAL - } - TARGET { - setTarget iTarget $arg - set state NORMAL - } - NORMAL { - set components [split $arg "="] - regexp {([^[]*)(.*)} [lindex $components 0] \ - dummy szFileName szCaseArgs - append szCaseArgs "=[join \ - [lrange $components 1 end] "="]" - debug { arg: >$arg<} 3 - debug { components: >$components<} 3 - debug { case+args: >$szCaseArgs<} 3 - debug { Test Script: >$szFileName<} 3 - debug { : >$szCurrentTestDirectory<} 3 - set szDname [file dirname $szFileName] - set szFname [file tail $szFileName] - - if {[file exist [set test [file join \ - $szCurrentTestDirectory \ - $szFileName]]]} { - # file should be a test - debug { is a test: >$test[file join \ - $szCurrentTestDirectory \ - $arg] 0} { - foreach test $tests { - if {[file exists $test]} { - # file should be a test - debug { is a test:\ - >$test$test$szCaseArgs$test< can't\ - be found" - } - } - } else { - perror "$szFileName is not a test!\ - Does not exists!" - } - } - } - } - } - } - debug { ==== Found tests:} 3 - foreach index [lsort [array names lTests]] { - debug { lTests($index) = $lTests($index)} 4 - } - debug { Targets are: $lTargets} 4 - } - private method setTarget {index target} { - upvar $index iTarget - - incr iTarget - if {[string length $target] == 0} { - set szCurrentTarget "Default" - lappend lTargets $szCurrentTarget - debug { Default Current Target} 3 - } else { - set szCurrentTarget $target - lappend lTargets $szCurrentTarget - debug { Current target: >$szCurrentTarget<} 3 - } - debug { Found target >$szCurrentTarget<} 3 - } - - private method open_logs {target} { - global env - - set target [string trim $target] - if {[string compare $szOutDir "..."] == 0} { - debug { No Output directory defined, creating one} 3 - set szOutDir \ - "logs/$env(USER)_${target}_[exec date +%Y%m%d]_" - set szI [format "%.4d" [set i 0]] - while {[file isdirectory $szOutDir$szI]} { - set szI [format "%.4d" [incr i]] - } - set szOutDir $szOutDir$szI - } - if {! [file isdirectory $szOutDir]} { - exec mkdir -p $szOutDir - } - if {[string length $target] == 0} { - set szTool testrun - } else { - set szTool $target - } - catch "exec rm -f $szOutDir/$szTool.sum" - namespace eval ::BlueGnu \ - "set ::BlueGnu::sum_file [open "$szOutDir/$szTool.sum" w]" - puts $::BlueGnu::sum_file "# $szOutDir/$szTool.sum" - catch "exec rm -f $szOutDir/$szTool.log" - log_file -a "$szOutDir/$szTool.log" - send_log "# $szOutDir/$szTool.log\n" - debug { Opening log and summary files in $szOutDir} 3 - } - private method close_logs {} { - } - public method outDir {} { - return $szOutDir - } - } -} diff --git a/contrib/bluegnu2.0.3/lib/testSessionClasses.itcl b/contrib/bluegnu2.0.3/lib/testSessionClasses.itcl deleted file mode 100644 index a9428af..0000000 --- a/contrib/bluegnu2.0.3/lib/testSessionClasses.itcl +++ /dev/null @@ -1,1341 +0,0 @@ -# -# This [incr Tcl] source file contains the class specifications -# for the testSession of BlueGnu -# -namespace eval ::BlueGnu { - variable lArgs {} - - variable errcnt 0 - variable errno "NONE" - variable warncnt 0 - variable xfail_flag 0 - - class Common { - # arguments passed to the constructor are always in the form: - # = - # - constructor {args} { - debug {Constructor for >$this< [info level] [info class]} 9 - foreach varval $args { - set varval [split $varval "="] - if {[llength $varval] != 2} { - error "Missing = pair" - } - set var [lindex $varval 0] - set val [lindex $varval 1] - set variables {} - foreach v [lsort [info variable]] { - regexp {[^:]+$} $v v - lappend variables $v - } - if {[lsearch -exact $variables $var] >= 0} { - set $var $val - } else { - perror "variable >$var< does not exists in Class\ - [info class]\n \ - (was passed as argument and is ignored!)" - } - } - } - - public method << {} { - set lResult {} - foreach var [lsort [info variable]] { - regexp {[^:]+$} $var v - debug {Found variable: >$v<} 9 - if [array exists $v] { - debug { is an array} 9 - foreach index [lsort [array names $v]] { - lappend lResult "${v}($index)=[set ${v}($index)]" - } - } else { - debug { is simple variable} 9 - if {[string compare [set value [info variable $var -value]] \ - ""] != 0} { - switch $v { - this - - text {} - default { - lappend lResult [list $v $value] - } - } - } - } - } - set lResult - } - } - - class Test { - inherit Common - - protected variable szID - protected variable bTestCase - protected variable szTestCase - protected variable szTestCaseID - protected variable szTestCaseArgs - protected variable szName - protected variable szTool - protected variable eType - protected variable eResult - protected variable szScriptName - protected variable lArguments - protected variable szHostName - protected variable iPassed - protected variable iFailed - protected variable iXPassed - protected variable iXFailed - protected variable iCrashed - protected variable iError - protected variable iWarning - protected variable iUnresolved - protected variable iUntested - protected variable iUnsupported - protected variable i - protected variable benchmarkObject - protected variable benchmarkClassName - - constructor testScript { - set szTool [uplevel #0 set szCurrentTestDirectory] - debug {======= Global Default Test Directory is\ - >$szTool<} 5 - - set lArguments {} - # remove all multiple spaces/tabs into one space - # and parse the argument list - # ::= ?[test case ID]?= - # ::= - # ::= | = - debug { testScript(1) is >$testScript<} 5 - regsub -all "(\[ \t\]+)" [string trim $testScript] " " testScript - debug { testScript(2) is >$testScript<} 5 - # - # Split testScript into script, test case ID, and arguments - regexp {^([^[=]+)([[]([^]]+)[]])?(=(.*))?$} $testScript dummy \ - script tc tcID argT argL - debug { script: >$script<} 5 - debug { tc: >$tc<} 5 - debug { tcID: >$tcID<} 5 - debug { argT: >$argT<} 5 - debug { argL: >$argL<} 5 - if {[set i [string first {=} $testScript]] >= 0} { - set testScriptArgs [string range $testScript \ - [expr $i + 1] end] - set testScript [string range $testScript 0 [expr $i - 1]] - } else { - set testScriptArgs {} - } - set testScript $script - set szTestCase $tcID - if {[string length $szTestCase] > 0} { - set bTestCase 1 - } else { - set bTestCase 0 - } - set szTestCaseID [lindex [split $szTestCase "="] 0] - set szTestCaseArgs [join [lrange [split $szTestCase "="] 1 end] \ - "="] - debug {szTestCase == >$szTestCase<} 5 - debug {szTestCaseID == >$szTestCaseID<} 5 - debug {szTestCaseArgs == >$szTestCaseArgs<} 5 - set testScriptArgs $argL - debug {testScript(3) is >$testScript<} 5 - debug {testScriptArgs(1) is >$testScriptArgs<} 5 - set lArguments [eval list $testScriptArgs] - set i 0 - foreach arg $lArguments { - debug {arg($i) is >$arg<} 5 - set lArguments [lreplace $lArguments $i $i [split $arg "="]] - incr i - } - debug {Test script >$testScript<, test case >$szTestCase<} 3 - debug { pathtype is [file pathtype $testScript]} 3 - switch [file pathtype $testScript] { - relative { - error "Test Script name >$testScript<\ - should not be relative" - } - absolute { - debug {Absolute reference in $this to Test Script\ - >$testScript<} 3 - set szScriptName $testScript - } - } - debug {Default Test Directory is >$szTool<} - if {[file exists $testScript]} { - debug {Test script >$testScript< exists!} - set szName [file tail $testScript] - set szID [file rootname $szName] - set szPWD [pwd] - set szTool [file dirname $testScript] - cd $szTool - set szTool [pwd] - cd $szPWD - set szScriptName [file join $szTool [file tail $testScript]] - regsub {.} [string toupper [file extension $szName]] {} eType - set eResult INITIALIZED - } else { - debug {Test script >$testScript< does NOT exists!} - set szRoot "" - set szID "" - set szName "" - set szTool "" - uplevel #0 set szCurrentTestDirectory "\"$szTool\"" - set eType "NONE" - set szScriptName "$testScript" - set lArguments {} - set eResult EMPTY - } - set szHostName [info host] - set iPassed 0 - set iFailed 0 - set iXPassed 0 - set iXFailed 0 - set iCrashed 0 - set iError 0 - set iWarning 0 - set iUnresolved 0 - set iUntested 0 - set iUnsupported 0 - debug {Default Test Directory is >$szTool<} - debug {Global Default Test Directory is\ - >[uplevel #0 set szCurrentTestDirectory]<} - - debug {Target: >[[uplevel #0 set objCurrentTarget] <<]<} - - while {1} { - # Create Benchmark Class Object - # - # First initialize - # - set szTargetID [[uplevel #0 set objCurrentTarget] ID] - regsub -all {[^a-zA-Z0-9_]} $szTargetID "_" szTargetID - regsub -all {[^a-zA-Z0-9_]} $szID "_" szTmpID - regsub -all {[^a-zA-Z0-9_]} $szTestCaseID "_" szTmpTestCaseID - # - # First try Benchmark Class in namespace for Target - # and test case ID if exists otherwise test script ID - # - set benchmarkClassName ::$szTargetID - if {$bTestCase} { - append benchmarkClassName ::$szTmpTestCaseID - } else { - append benchmarkClassName ::$szTmpID - } - debug {=== Trying benchmark: $benchmarkClassName} 3 - if [catch { - set benchmarkObject \ - [eval $benchmarkClassName #auto $szTestCaseArgs] - if {! [string match ::* $benchmarkObject]} { - set benchmarkObject \ - [namespace current]::$benchmarkObject - } - debug {benchmarkObject: >$benchmarkObject<} 3 - } errMsg] { - debug {Error Msg: >>>$errMsg<<<} 3 - debug { info: >>>[uplevel #0 set errorInfo]<<<} 4 - } else { - break - } - # - # Now try Benchmark class for test script name - # with test case ID or Benchmark - # - set benchmarkClassName ::$szTmpID - if {$bTestCase} { - append benchmarkClassName ::$szTmpTestCaseID - } else { - append benchmarkClassName ::Benchmark - } - debug {=== Trying benchmark: $benchmarkClassName} 3 - if [catch { - set benchmarkObject [infoWhich \ - [eval $benchmarkClassName #auto $szTestCaseArgs]] - } errMsg] { - debug {Error Msg: >>>$errMsg<<<} 3 - debug { info: >>>[uplevel #0 set errorInfo]<<<} 4 - } else { - break - } - # - # Now try target ID and benchmark - # - set benchmarkClassName ::${szTargetID}::Benchmark - debug {=== Trying benchmark: $benchmarkClassName} 3 - debug { namespace: >[namespace current]<} 3 - if [catch { - set benchmarkObject [infoWhich \ - [eval $benchmarkClassName #auto $szTestCaseArgs] \ - [namespace current]] - } errMsg] { - debug {Error Msg: >>>$errMsg<<<} 3 - debug { info: >>>[uplevel #0 set errorInfo]<<<} 4 - } else { - break - } - # - # Now try the generic BlueGnu benchmark function - # - set benchmarkClassName ::BlueGnu::Benchmark - debug {=== Trying benchmark: $benchmarkClassName} 3 - if [catch { - set benchmarkObject [infoWhich \ - [eval $benchmarkClassName #auto $szTestCaseArgs]] - debug {[warning "Default Benchmark Class\ - is being used!"]} - } errMsg] { - warning "NO Benchmark Class >$benchmarkClassName<\ - defined" - debug {[warning "Class: >$benchmarkClassName<\ - has not been defined.\n ### Error Msg:\ - $errMsg"]} - set benchmarkObject "" - break - } - debug { benchmark: $benchmarkClassName\ - ($benchmarkObject)} 3 - uplevel #0 { - set errorInfo NONE - } - break - } - } - - destructor { - setResult - switch $eResult { - PASSED { - printResult - if {! $bTestCase} { - ::BlueGnu::clone_output " Statistics :\ - $iPassed (PASS),\ - $iXFailed (XFAIL)" - } - } - FAILED { - printResult - if {! $bTestCase} { - ::BlueGnu::clone_output " Statistics :\ - $iPassed (PASS),\ - $iXFailed (XFAIL)" - ::BlueGnu::clone_output " :\ - $iFailed (FAIL),\ - $iXPassed (XPASS)" - } - } - UNKNOWN { - } - default { - printResult - if {! $bTestCase} { - ::BlueGnu::clone_output " Statistics :\ - $iPassed (PASS),\ - $iXFailed (XFAIL)" - ::BlueGnu::clone_output " :\ - $iFailed (FAIL),\ - $iXPassed (XPASS)" - if {$iUntested} { - ::BlueGnu::clone_output " :\ - $iUntested (UNTESTED)" - } - if {$iUnresolved} { - ::BlueGnu::clone_output " :\ - $iUnresolved (UNRESOLVED)" - } - if {$iUnsupported} { - ::BlueGnu::clone_output " :\ - $iUnsupported (UNSUPPORTED)" - } - if {$iCrashed} { - ::BlueGnu::clone_output " :\ - $iCrashed (CRASHED)" - } - if {$iError} { - ::BlueGnu::clone_output " :\ - $iError (ERROR)" - } - if {$iWarning} { - ::BlueGnu::clone_output " :\ - $iWarning (WARNING)" - } - } - } - } - # remove benchmark Class Object - # - if {$benchmarkObject != ""} { - debug {#### Benchmark Object: >$benchmarkObject<\ - ([catch {$benchmarkObject info class}])} 3 - debug {#### Benchmark Class : >$benchmarkClassName<} 3 - catch {delete object $benchmarkObject} - if {$benchmarkClassName != "::BlueGnu::Benchmark"} { - catch {delete class $benchmarkClassName} - } - } - ::BlueGnu::clone_output "" - } - - private method printResult {} { - if {$bTestCase} { - ::BlueGnu::clone_output "******* Result :\ - [format "%-12s" $eResult] for test case :\ - >$szTestCase<" - } else { - ::BlueGnu::clone_output "******* Result :\ - [format "%-12s" $eResult] for test script :\ - >$szID<" - } - } - - public method ID {} { - return $szID - } - - public method testCase {} { - return $szTestCase - } - - public method testCaseID {} { - return $szTestCaseID - } - - public method testCaseArgs {} { - return $szTestCaseArgs - } - - public method benchmarkObject {} { - return $benchmarkObject - } - - public method benchmarkClassName {} { - return $benchmarkClassName - } - - public method name {args} { - if {[llength $args] == 1} { - set szName [lindex $args 0] - } - return $szName - } - - public method result {} { - return $eResult - } - - public method arguments {} { - return $lArguments - } - - public method pass {szMsg} { - global objCurrentEnvironment - if {[namespace eval ::BlueGnu {set xfail_flag}]} { - incr iXPassed - $objCurrentEnvironment record_test XPASS $szMsg - } else { - incr iPassed - $objCurrentEnvironment record_test PASS $szMsg - } - setResult - } - public method fail {szMsg} { - global objCurrentEnvironment - if {[namespace eval ::BlueGnu {set xfail_flag}]} { - incr iXFailed - $objCurrentEnvironment record_test XFAIL $szMsg - } else { - incr iFailed - $objCurrentEnvironment record_test FAIL $szMsg - } - setResult - } - - public method perror {szMsg} { - global objCurrentEnvironment - incr iError - $objCurrentEnvironment record_test ERROR $szMsg - setResult - } - - public method crashed {szMsg} { - global objCurrentEnvironment - incr iCrashed - $objCurrentEnvironment record_test CRASHED $szMsg - setResult - } - - public method warning {szMsg} { - global objCurrentEnvironment - incr iWarning - $objCurrentEnvironment record_test WARNING $szMsg - setResult - } - - public method note {szMsg} { - global objCurrentEnvironment - $objCurrentEnvironment record_test NOTE $szMsg - } - - public method unresolved {szMsg} { - global objCurrentEnvironment - incr iUnresolved - $objCurrentEnvironment record_test UNRESOLVED $szMsg - } - public method untested {szMsg} { - global objCurrentEnvironment - incr iUntested - $objCurrentEnvironment record_test UNTESTED $szMsg - } - public method unsupported {szMsg} { - global objCurrentEnvironment - incr iUnsupported - $objCurrentEnvironment record_test UNSUPPORTED $szMsg - } - - private method setResult {} { - if {$iUnresolved || \ - $iError || $iCrashed || \ - ($iWarning > [namespace eval ::BlueGnu { \ - set warning_threshold}] && \ - 0 < [namespace eval ::BlueGnu { \ - set warning_threshold}])} { - set eResult UNRESOLVED - } elseif {$iUntested} { - set eResult UNTESTED - } elseif {$iUnsupported} { - set eResult UNSUPPORTED - } elseif {($iPassed > 0 || $iXFailed > 0) && \ - $iFailed == 0 && $iXPassed == 0} { - set eResult "PASSED" - } elseif {$iFailed || $iXPassed} { - set eResult "FAILED" - } elseif {$iPassed == 0 && $iXPassed && \ - $iFailed == 0 && $iXFailed && $iCrashed == 0 && \ - $iError == 0 && $iWarning == 0} { - set eResult ACTIVATED - } else { - set eResult UNKNOWN - } - } - - public method getResult {} { - setResult - return $eResult - } - - public method tool {} { - return $szTool - } - - public method scriptName {} { - return $szScriptName - } - - public method << {} { - if 0 { - lappend lResult [list ID $szID] - lappend lResult [list name $szName] - lappend lResult [list tool $szTool] - lappend lResult [list type $eType] - lappend lResult [list result $eResult] - lappend lResult [list root $szRoot] - lappend lResult [list script $szScriptName] - lappend lResult [list arguments $lArguments] - lappend lResult [list host $szHostName] - - return $lResult - } else { - eval [info function Common::<< -body] - } - } - - public method runtest {} { - global objCurrentEnvironment - setResult - - if {$bTestCase} { - ::BlueGnu::clone_output "####### Begin test case :\ - >$szTestCase<" - debug { [scriptName]\n \ - [name]=[arguments]} - } else { - ::BlueGnu::clone_output "####### Begin test script :\ - >$szID<" - debug { [scriptName]\n \ - [name]=[arguments]} - } - verbose { Full Pathname : $szScriptName} 1 - debug {=== Running test in $this: $szScriptName} 3 - debug {[join [<<] "\n"]} 9 - catch {debug {Global Default Test Directory is\ - >[uplevel #0 set szCurrentTestDirectory]<}} - catch {debug {Default Test Directory is >$szTool<}} - - if [catch { - uplevel #0 set szCurrentTestDirectory "$szTool" - uplevel #0 lappend lTool {$szCurrentTestDirectory} - uplevel #0 set objCurrentTest $this - uplevel #0 lappend lTestName {$objCurrentTest} - uplevel 1 variable bTestCase $bTestCase - uplevel 1 variable szTestCase \"$szTestCase\" - uplevel 1 variable szTestCaseID \"$szTestCaseID\" - uplevel 1 variable szTestCaseArgs \"$szTestCaseArgs\" - uplevel 1 variable iArgs [llength $lArguments] - uplevel 1 variable lArgs [concat {[list} $lArguments {]}] - uplevel 1 variable szID $szID - uplevel 1 variable szScriptName $szScriptName - uplevel 1 variable szName $szName - uplevel 1 variable szTool $szTool - } szErrMsg] { - debug {Error Msg:>>>$szErrmsg<<<} 0 - } - if {[catch {uplevel 1 source $szScriptName} szErrMsg]} { - global errorInfo errorCode - crashed ">$szErrMsg<\ - \n in script: >$szScriptName<\ - \n errorInfo: >$errorInfo<\ - \n errorCode: >$errorCode<" - } - setResult - $objCurrentEnvironment reportTestResult $eResult - - uplevel #0 {set lTestName [lreplace $lTestName end end]} - uplevel #0 {set objCurrentTest [lrange $lTestName end end]} - uplevel #0 {set lTool [lreplace $lTool end end]} - uplevel #0 {set szCurrentTestDirectory [lrange $lTool end end]} - - catch {debug {Default Test Directory is >$szTool<} 3} - catch {debug {Global Default Test Directory is\ - >[uplevel #0 set szCurrentTestDirectory]<} 3} - debug {=== Done with test in $this: $szScriptName ($bTestCase)} 3 - if {$bTestCase} { - ::BlueGnu::clone_output "####### End test case :\ - >$szTestCase<" - } else { - ::BlueGnu::clone_output "####### End test script :\ - >$szID<" - } - return $this - } - } - - class Queue { - inherit Common - - protected variable lTestNames - - constructor {} { - set lTestNames {} - } - - public method append args { - set testName [join $args] - debug { queue appending >$testName<} 3 - lappend lTestNames $testName - debug { DONE} 3 - } - - public method prepend args { - #set testName [join $args] - debug {Queue::prepend $args} 3 - foreach arg $args { - debug { append >$arg< to comList} 3 - lappend comList $arg - } - debug { queue prepending comList: >$comList<} 3 - debug { [llength $comList] elements in comList} 3 - #set lTestNames [linsert $lTestNames 0 "$testName"] - debug { [llength $lTestNames] elements in lTestNames} 3 - set lTestNames [concat $comList $lTestNames] - debug { [llength $lTestNames] elements in lTestNames} 3 - debug { DONE} 3 - } - - public method pop {} { - if {[llength $lTestNames] == 0} { - return -code error -errorinfo "Empty Queue" {} - } - if {[llength $lTestNames] == 1} { - set testName [lindex $lTestNames 0] - set lTestNames {} - return $testName - #return -code error $testName - } - set testName [lindex $lTestNames 0] - set lTestNames [lrange $lTestNames 1 end] - return $testName - } - - public method << {} { - #lappend lResult [list tests $lTestNames] - - #return $lResult - eval [info function Common::<< -body] - } - } - - class Environment { - inherit Common - - protected variable szName "Default" - - protected variable iPassCnt 0 - protected variable iFailCnt 0 - protected variable iXPassCnt 0 - protected variable iXFailCnt 0 - protected variable iUntestedCnt 0 - protected variable iUnresolvedCnt 0 - protected variable iUnsupportedCnt 0 - protected variable iCrashedCnt 0 - protected variable iErrorCnt 0 - protected variable iWarningCnt 0 - protected variable iCnt 0 - - protected variable iWarningThreshold 0 - protected variable iErrorThreshold 0 - - protected variable bXFailFlag 0 - protected variable bExitStatus 0 - - protected variable eResult UNKNOWN - protected variable iUntested 0 - protected variable iUnsupported 0 - protected variable iUnresolved 0 - protected variable iPassed 0 - protected variable iFailed 0 - - - protected variable ENV - protected variable bSaved 0 - common defaultEnvironment [list PATH FPATH \ - BLUEGNULIB TESTSUITEROOT TESTSETS TMPDIR \ - DISPLAY EDITOR EMACSFONT HOME LANG LOGIN LOGNAME SHELL \ - TERM USER WINDOWID DEBUG LPDEST \ - ORGANIZATION OSTYPE PAGER \ - PARM_SEARCH_PATH \ - ] - - constructor {args} { - debug {Level in Constructor: [info level]} 9 - eval [info function Common::constructor -body] - setResult - } - - destructor { - global objCurrentTarget - debug {******* [info class]::destructor} 3 - - ::BlueGnu::clone_output "******* Result :\ - [format "%-12s" $eResult]\ - for test session : >$szName<" - switch $eResult { - PASSED { - ::BlueGnu::clone_output " Statistics :\ - $iPassed (PASS)" - ::BlueGnu::clone_output "******* Cumulative statistics\ - for all test script!" - ::BlueGnu::clone_output " Statistics Totals :\ - $iPassCnt (PASS),\ - $iXFailCnt (XFAIL)" - if {$iUntested} { - ::BlueGnu::clone_output " :\ - $iUntested (UNTESTED)" - } - if {$iWarningCnt} { - ::BlueGnu::clone_output " :\ - $iWarningCnt (WARNING)" - } - } - UNKNOWN - - default { - ::BlueGnu::clone_output " Statistics :\ - $iPassed (PASS)" - ::BlueGnu::clone_output " :\ - $iFailed (FAIL)" - if {$iUntested} { - ::BlueGnu::clone_output " :\ - $iUntested (UNTESTED)" - } - if {$iUnresolved} { - ::BlueGnu::clone_output " :\ - $iUnresolved (UNRESOLVED)" - } - if {$iUnsupported} { - ::BlueGnu::clone_output " :\ - $iUnsupported (UNSUPPORTED)" - } - ::BlueGnu::clone_output "******* Cumulative statistics\ - for all test script!" - ::BlueGnu::clone_output " Statistics Totals :\ - $iPassCnt (PASS),\ - $iXFailCnt (XFAIL)" - ::BlueGnu::clone_output " :\ - $iFailCnt (FAIL),\ - $iXPassCnt (XPASS)" - if {$iUntestedCnt} { - ::BlueGnu::clone_output " :\ - $iUntestedCnt (UNTESTED)" - } - if {$iUnresolvedCnt} { - ::BlueGnu::clone_output " :\ - $iUnresolvedCnt (UNRESOLVED)" - } - if {$iUnsupportedCnt} { - ::BlueGnu::clone_output " :\ - $iUnsupportedCnt (UNSUPPORTED)" - } - if {$iCrashedCnt} { - ::BlueGnu::clone_output " :\ - $iCrashedCnt (CRASHED)" - } - if {$iErrorCnt} { - ::BlueGnu::clone_output " :\ - $iErrorCnt (ERROR)" - } - if {$iWarningCnt} { - ::BlueGnu::clone_output " :\ - $iWarningCnt (WARNING)" - } - } - } - if {$::BlueGnu::errcnt} { - ::BlueGnu::clone_output "####### Encountered\ - $::BlueGnu::errcnt System Errors!" - } - ::BlueGnu::clone_output "###########################\n" - } - - public method name {} { - return $szName - } - - public method record_test {type message} { - debug {******* ${this}::record_test \n \ - $type $message} 3 - if {$iWarningThreshold > 0 && \ - $iWarningCnt >= $iWarningThreshold \ - || \ - $iErrorThreshold > 0 && \ - $iErrorCnt >= $iErrorThreshold} { - # Reset these first to prevent infinite recursion. - set iWarningCnt 0 - set iErrorCnt 0 - ::unresolved $message - return - } - - debug { switching on type >$type<} - switch $type { - PASS { - incr iPassCnt - } - FAIL { - incr iFailCnt - set bExitStatus 1 - } - XPASS { - incr iXPassCnt - } - XFAIL { - incr iXFailCnt - } - UNTESTED { - incr iUntestedCnt - } - UNRESOLVED { - incr iUnresolvedCnt - } - UNSUPPORTED { - incr iUnsupportedCnt - } - ERROR { - incr iErrorCnt - } - CRASHED { - incr iCrashedCnt - } - NOTE { - } - WARNING { - incr iWarningCnt - } - default { - debug {record_test called with bad type >$type<} -1 - set iErrorCnt 0 - return - } - } - - ::BlueGnu::clone_output "$type: $message" - - # reset variables here - namespace eval ::BlueGnu { - set xfail_flag 0 - set xfail_prms {} - } - } - - private method setResult {} { - if {$iUnresolved} { - set eResult UNRESOLVED - } elseif {$iPassed > 0 && $iFailed == 0} { - set eResult "PASSED" - } elseif {$iFailed} { - set eResult "FAILED" - } elseif {$iPassed == 0 && $iFailed == 0 && \ - $iUntested && $iUnsupported == 0 && \ - $iUnresolved == 0} { - set eResult ACTIVATED - } else { - set eResult UNKNOWN - } - } - - public method reportTestResult {eTestResult} { - switch $eTestResult { - "PASSED" { - incr iPassed - } - "FAILED" { - incr iFailed - } - "UNSUPPORTED" { - incr iUnsupported - } - "UNTESTED" { - incr iUntested - } - "UNRESOLVED" { - incr iUnresolved - } - } - setResult - } - - public method saveEnv {} { - global env - - set bSaved 1 - foreach index [lsort [array names env]] { - debug {ENV($index) := $env($index)} 5 - #set ENV($index) $env($index) - array set ENV [list $index $env($index)] - } - } - - public method clearEnv {} { - global env - - set bSaved 1 - #debug {removing ENV} 5 - #catch {unset ENV} - foreach index [array names env] { - debug {removing env($index) := $env($index)} 5 - if {0 > [lsearch -exact $defaultEnvironment $index]} { - debug { removed} 5 - unset env($index) - } else { - debug { kept} 5 - if {[string compare $index PATH] == 0} { - # Do not touch PATH - #set env(PATH) \ - "/etc:/usr/lib:/usr/ucb:/bin:/usr/bin:/usr/bin/X11:/usr/lpp/X11/Xamples/bin:/usr/local/bin" - } - #set ENV($index) $env($index) - } - } - } - - public method restoreEnv {} { - global env - - if {$bSaved} { - catch {unset env} - foreach index [array names ENV] { - debug {env($index) := $ENV($index)} 5 - #set ENV($index) $env($index) - array set env [list $index $ENV($index)] - } - } else { - debug {Environment had not been saved!} - } - } - - public method runTest args { - global nspTestSuite - debug {======= runTest $args} 3 - - set iRuntest 0 - set elResult [list] - - set iRun 0 - foreach arg $args { - debug {======= runTest $arg} 3 - incr iRun - - # Create name for namespace for the test - # and check if already exist - # - set szRuntest runtest$iRuntest - set namespaceCurrent [namespace current] - debug { szRuntest: >$szRuntest<} 4 - debug { namespace current : >$namespaceCurrent<} 4 - debug { namespace current children:\ - >[namespace children $namespaceCurrent]<} 4 - while {[string compare \ - [namespace children $namespaceCurrent \ - ${namespaceCurrent}::$szRuntest] ""] != 0} { - incr iRuntest - set szRuntest runtest$iRuntest - } - # now we have a unique namespace name for the running - # of the test - # - debug { runTest namespace: >$szRuntest<} 4 - set szScript $arg - # create a Test Class object - if {! [catch {::BlueGnu::Test [${nspTestSuite}::autoTest] \ - $szScript} testObject]} { - if [catch { - uplevel #0 set objCurrentTest \ - [namespace current]::$testObject - debug {[join [$testObject <<] "\n"]} 9 - namespace eval $szRuntest { - if [catch {[uplevel set testObject] runtest} \ - szErrMsg] { - uplevel set szErrMsg "\{$szErrMsg\}" - uplevel { - global errorInfo errorCode - record_test CRASHED ">$szErrMsg<\ - \n in script: >$szScript<\ - \n errorInfo: >$errorInfo<\ - \n errorCode: >$errorCode<" - } - } - } - debug {[join [$testObject <<] "\n"]} 9 - uplevel "lappend elResult [$testObject getResult]" - delete object $testObject - } szErrMsg] { - global errorInfo errorCode - record_test CRASHED ">$szErrMsg<\ - \n in script: >$szScript<\ - \n errorInfo: >$errorInfo<\ - \n errorCode: >$errorCode<" - } - } else { - global errorInfo errorCode - record_test CRASHED ">$testObject<\ - \n in script: >$szScript<\ - \n errorInfo: >$errorInfo<\ - \n errorCode: >$errorCode<" - } - namespace delete $szRuntest - uplevel #0 {debug {argv: [set argv]} 3} - } - if {$iRun == 0} { - warning "No tests have been passed to runTest method!" - } - return $elResult - } - - public method << {} { - debug {in $this method} 5 - eval [info function Common::<< -body] - #lappend lResult [list ENV [array get ENV]] - } - } - - # The following is a class definition for the target implementation - # in DejaGnu (see lib/target.exp for more detail) - # - class Target { - inherit Common - - protected variable szID - protected variable szName - protected variable szApplication - protected variable objEnvironment - protected variable objQueue - - protected variable connect - protected variable target - protected variable serial - protected variable netport - protected variable baud - protected variable X10 - protected variable ioport - - protected variable fileid - protected variable prompt - protected variable abbrev - protected variable config - protected variable cflags - protected variable ldflags - - protected variable X - - # a hairy pattern to recognize text - common text "\[- A-Za-z0-9\.\;\"\_\:\'\`\(\)\!\#\=\+\?\&\*]" - - - constructor {args} { - eval [info function Common::constructor -body] - } - - destructor { - delete object $objQueue - } - - public method name {args} { - if {[llength $args] == 0} { - return $szName - } else { - set szName [lindex $args 0] - } - } - - public method ID {args} { - if {[llength $args] == 0} { - return $szID - } else { - set szID [lindex $args 0] - } - } - - public method << {} { - eval [info function Common::<< -body] - } - - public method environment {} { - return $objEnvironment - } - - public method start {} { - if {[string length [uplevel #0 info procs ${szID}_start]] != 0} { - uplevel #0 ${szID}_start - } - } - - public method load {args} { - if {[string length [uplevel #0 info procs ${szID}_load]] != 0} { - eval uplevel #0 ${szID}_load $args - } - } - - public method exit {} { - if {[string length [uplevel #0 info procs ${szID}_exit]] != 0} { - uplevel #0 ${szID}_exit - } - } - - public method version {} { - if {[string length [uplevel #0 info procs ${szID}_version]] != 0} { - uplevel #0 ${szID}_version - } - } - - public method runTests {} { - debug {======= ${this}::runTest} 3 - set elResult [list] - # if an application has been defined we run all the test - # inside that application - # - if {[string compare [info variable szApplication] ""] != 0 && \ - [string compare [info variable szApplication -value] \ - ""] != 0} { - debug {Application specified >[info variable \ - szApplication -value]<} - # build argument list - debug {>>[<<]<<} - } else { - # We just run all the tests in the currently running - # [incr Tcl/?Expect?] interpreter. - # - # set the current Queue and Environment - # - uplevel #0 set objCurrentQueue [infoWhich $objQueue] - uplevel #0 set objCurrentEnvironment \ - [infoWhich $objEnvironment] - # - # Pop a test from the queue and run it in the environment - ::BlueGnu::clone_output "###########################" - ::BlueGnu::clone_output "####### Begin test session:\ - [[infoWhich $objEnvironment] name] >$objEnvironment<" - while {! [catch {$objQueue pop} T]} { - debug {test: $T} 3 - set elResult [$objEnvironment runTest $T] - } - ::BlueGnu::clone_output "####### End test session :\ - [[infoWhich $objEnvironment] name]" - } - return $elResult - } - - public method queue {function element} { - switch $function { - append { - $objQueue append $element - } - prepend { - $objQueue prepend $element - } - } - } - } - - class Target2 { - inherit Target - - protected variable XYZ - - constructor {args} { - eval [info function Common::constructor -body] - } - - public method << {} { - eval [info function Common::<< -body] - } - } - - - class DejaGnu { - inherit Environment - - constructor {} { - debug {Level in Constructor DejaGnu: [info level]} 9 - uplevel #0 {debug {argc = $argc: $argv} 9} - # source always in global space - # - uplevel #0 source {$env(BLUEGNULIBS)/dejagnu.tcl} - } - - destructor { - ##################################################################### - # This comes from the original runtest - # all done, cleanup - # - uplevel #0 { - if { [info procs ${tool}_exit] != "" } { - if {[catch "${tool}_exit" tmp]} { - # ??? We can get away with calling `warning' - # here without ensuring - # `warncnt' isn't changed because we're about to exit. - warning "${tool}_exit failed:\n$tmp" - } - } - log_summary - } - } - - - public method runTest {args} { - global nspTestSuite - - foreach arg $args { - debug {******* DejaGnu running test: >$arg<} - debug {set szTestName \[Test \[${nspTestSuite}::autoTest\] $arg\]} 3 - debug {set testName >[${nspTestSuite}::autoTest]<} 3 - uplevel #0 set szTestName [Test [${nspTestSuite}::autoTest] $arg] - uplevel #0 { - debug $szTestName 3 - debug [join [$szTestName <<] "\n"] 5 - set test_name {[$szTestName scriptName]} - catch {unset tmp}; set tmp {} - foreach arg [$szTestName arguments] { - lappend tmp [join $arg "="] - } - set runtests [list [$szTestName name] $tmp] - debug {args = >[$szTestName arguments]<} 3 - source [$szTestName scriptName] - catch {eval unset [info vars __*]} - } - } - } - } - - class DejaGnu2 { - inherit DejaGnu - - protected variable currentTool - - constructor {} { - debug {Level in Constructor DejaGnu2: [info level]} 9 - set currentTool {} - uplevel #0 {debug {argc = $argc: $argv} 9} - # source always in global space - # - uplevel #0 source {$env(BLUEGNULIBS)/dejagnu2.tcl} - } - - public method tool {args} { - if {[llength $args] == 1} { - set currentTool [lindex $args 0] - } - return $currentTool - } - } - - class Benchmark { - protected variable bResult 0 - protected variable DATA - protected variable FORMAT - protected variable ARG - - protected constructor {args} { - debug {======= Constructing class [info class] =======} 3 - debug {======= ::BlueGnu::Benchmark::constructor $args} 4 - set i 0 - foreach arg $args { - debug { ARG($i): >$arg<} 5 - set ARG($i) [split $arg "="] - incr i - } - } - protected destructor { - debug {======= [info class]::destructor} 3 - } - - protected method benchmark {benchmarkFunction args} { - warning "Method >benchmark< has not been implemented for\ - Class >[info class]<" - return $bResult - } - - protected method warningNoBenchmarkArguments {} { - warning "NO argument have been supplies for\n the benchmark\ - method in class [info class]" - } - protected method warningNoBenchmarkFunction {} { - warning "NO benchmark function >[uplevel set benchmarkFunction]<\ - defined for\n the benchmark method in class [info class]" - } - } - - class Error { - private variable _errorCode - private variable _errorMsg - private variable _errorInfo - - public constructor {errorCode errorMsg errorInfo} { - set _errorCode $errorCode - set _errorMsg $errorMsg - set _errorInfo $errorInfo - } - - public method errorCode {} { - return $_errorCode - } - public method errorMsg {} { - return $_errorMsg - } - public method errorInfo {} { - return $_errorInfo - } - public method why {} { - return $_errorMsg - } - public method verboseWhy {} { - return $_errorInfo - } - } -} diff --git a/contrib/bluegnu2.0.3/lib/testSessionFramework.itcl b/contrib/bluegnu2.0.3/lib/testSessionFramework.itcl deleted file mode 100644 index 7f96880..0000000 --- a/contrib/bluegnu2.0.3/lib/testSessionFramework.itcl +++ /dev/null @@ -1,1386 +0,0 @@ -# -# -# -# -# unknown -- called by expect if a proc is called that doesn't exist -# - -# Set auto_load to take BLUEGNULIB first on search path -# -set auto_path "$env(BLUEGNULIB) $auto_path" - -# find tclIndex file in the test suite directory structure -# $env(TESTSUITEROOT) and in the path up to the root -# -if {! [info exists env(TESTSUITEROOT)]} { - set env(TESTSUITEROOT) [exec /bin/sh -c pwd] -} -set PWD $env(TESTSUITEROOT) - -if {[info exists env(TESTSETS)]} { - if {[lsearch -exact [split $env(TESTSETS) ":"] $PWD] < 0} { - set env(TESTSETS) $PWD:$env(TESTSETS) - } -} else { - set env(TESTSETS) $PWD -} -cd $PWD - - -# First thing to do is calculate the verbose level and the debug flag -# as well as the definition of the associated procedures: -# verbose and debug. -# -# Check the Debug level -if [info exists env(DEBUG)] { - switch -regexp [string toupper $env(DEBUG)] { - 1 - ^T(R(U(E)?)?)?$ - ^Y(E(S)?)?$ { - set bDebug 1 - } - default { - set bDebug 0 - } - } -} else { - set bDebug 0 -} - -# Calculate verbose level -# Complete a first path over the argument list -# Calculate the Verbose Level -set verbose 0 -foreach __arg $argv { - switch -regexp -- $__arg { - {^-[-]?v(e(r(b(o(s(e)?)?)?)?)?)?$} { - incr verbose - } - default { - lappend __lArgs $__arg - } - } -} -if {[catch {set argv $__lArgs}]} { - set argv {} -} - -# Define the procedures: verbose & debug -# -# verbose [-n] [-log] [--] message [level] -# -# Print MESSAGE if the verbose level is >= LEVEL. -# The default value of LEVEL is 1. -# "-n" says to not print a trailing newline. -# "-log" says to add the text to the log file even if it won't be printed. -# Note that the apparent behaviour of `send_user' dictates that if the message -# is printed it is also added to the log file. -# Use "--" if MESSAGE begins with "-". -# -# This is defined here rather than in framework.exp so we can use it -# while still loading in the support files. -# -proc verbose {args} { - debug {======= verbose $args} 3 - global verbose - - set newline 1 - set logfile 0 - - set i 0 - if {[string index [lindex $args 0] 0] == "-"} { - for { set i 0 } { $i < [llength $args] } { incr i } { - if { [lindex $args $i] == "--" } { - incr i - break - } elseif { [lindex $args $i] == "-n" } { - set newline 0 - } elseif { [lindex $args $i] == "-log" } { - set logfile 1 - } elseif { [string index [lindex $args $i] 0] == "-" } { - return [::BlueGnu::clone_output "ERROR: verbose:\ - illegal argument: [lindex $args $i]"] - } else { - break - } - } - } - if {[llength $args] == $i} { - return [::BlueGnu::clone_output "ERROR: verbose: nothing to print"] - } - - - set level 1 - if {[llength $args] == $i + 2} { - if [catch {set level [expr [lindex $args [expr $i+1]]]} szErrMsg] { - return [::BlueGnu::clone_output "ERROR: verbose: level number\ - >$szErrMsg<"] - } - } elseif {[llength $args] > $i + 2} { - return [::BlueGnu::clone_output "ERROR: verbose: Too many arguments"] - } - set message [lindex $args $i] - - if {$level <= $verbose} { - # There is no need for the "--" argument here, but play it safe. - # We assume send_user also sends the text to the log file (which - # appears to be the case though the docs aren't clear on this). - if 0 { - if {[string compare \ - [namespace eval ::BlueGnu \ - {set ::BlueGnu::sum_file}] stdout] != 0} { - set szCmd [list uplevel puts [namespace eval ::BlueGnu \ - {set ::BlueGnu::sum_file}]] - lappend szCmd "\"$message\"" - debug {==## 1 >$szCmd<} 9 - if {[catch {eval $szCmd}]} { - puts [namespace eval ::BlueGnu \ - {set ::BlueGnu::sum_file}] $message - } - } - } - if [catch {set message \ - "[uplevel set __szTmp \"$message\"]"} szErrMsg] { - set message "$message == ERROR: >$szErrMsg<" - } - if {$newline} { - #append message "\n" - } - debug {$message} 0 - return [::BlueGnu::clone_output "$message"] - } elseif {$logfile} { - if [catch {set message \ - "[uplevel set __szTmp \"$message\"]"} szErrMsg] { - set message "$message == ERROR: >$szErrMsg<" - } - if {$newline} { - append message "\n" - } - debug {$message} 0 - return [send_log $message] - } - return "" -} - -if {$bDebug} { - proc debug {text {level 1}} { - global verbose - - if {$level <= $verbose} { - set szCmd [list uplevel ::BlueGnu::clone_output] - set szA $level; set iMax [uplevel info level] - for {set i 0} {$i < $iMax} \ - {incr i} {append szA ">"} - lappend szCmd "\"$szA$text\"" - eval $szCmd - } - } -} else { - proc debug {text {level 1}} { - } -} - -# This procedure will find a file in the directory structure -# any where below the current working directory -# any where on the search path -# or up the directory tree -# -proc locateFile {szFileName {szSubDirectory "."}} { - debug {======= locateFile $szFileName $szSubDirectory} 3 - global env - # remove a trailing "/" from sub directory name - regexp {(.*)/$} $szSubDirectory dummy szSubDirectory - - set newList {} - set searchList {.} - set tmpDir [pwd] - while {[string compare [set dir [file dirname $tmpDir]] "/"] != 0} { - lappend searchList $dir - set tmpDir $dir - } - foreach dir [split $env(TESTSETS) ":"] { - lappend searchList $dir - } - foreach dirList $searchList { - foreach test [searchForFile $szFileName $dirList $szSubDirectory] { - # only files that are readable and - # not a directory, symbolic link or device - # are added to the list - if {[file isfile $test] && [file readable $test]} { - # add only if not already exists in list - if {[lsearch -exact $newList $test] < 0} { - lappend newList $test - } - } - } - } - debug {======= returning newList: >$newList<} 4 - return $newList -} - -proc locateDir {szFileName {szSubDirectory "."}} { - debug {======= locateDir $szFileName $szSubDirectory} 3 - global env - # remove a trailing "/" from sub directory name - regexp {(.*)/$} $szSubDirectory dummy szSubDirectory - - set newList {} - set searchList {.} - set tmpDir [pwd] - while {[string compare [set dir [file dirname $tmpDir]] "/"] != 0} { - lappend searchList $dir - set tmpDir $dir - } - foreach dir [split $env(TESTSETS) ":"] { - lappend searchList $dir - } - foreach dirList $searchList { - foreach test [searchForFile $szFileName $dirList $szSubDirectory] { - # only files that are directories - # are added to the list - if {[file isdirectory $test]} { - # add only if not already exists in list - if {[lsearch -exact $newList $test] < 0} { - lappend newList $test - } - } - } - } - debug {======= returning newList: >$newList<} 4 - return $newList -} - -proc searchForFile {szFileName dirList szSubDirectory} { - debug {======= searchForFile $szFileName $dirList $szSubDirectory} 3 - # find sub directory in or below the current working directory - set szDirSrc "" - foreach file [file split $szSubDirectory] { - if {[string compare $file "."] == 0} { - if {! [info exists newList]} { - set newList {} - } - continue - } else { - foreach dir $dirList { - catch {unset newList} - foreach newDir [findFile $dir $file] { - lappend newList $newDir - } - } - } - if {[catch {set dirList $newList}]} { - set dirList {} - } - } - debug { dirList = >$dirList<} 4 - set fileList {} - foreach dir $dirList { - set newList [findFile $dir $szFileName] - if {[llength $newList] > 0} { - set fileList [concat $fileList $newList] - } - } - debug { fileList = >$fileList<} 4 - if {[llength $fileList] != 0} { - # NO test found, next step in searching - #return $fileList - } - - set newList {} - set PWD [pwd] - foreach dir $fileList { - debug { dir = >$dir<} 4 - cd [file dirname $dir] - lappend newList "[pwd]/[file tail $dir]" - cd $PWD - } - - debug { newList = >$newList<} 4 - return $newList -} - -proc findFile {szDirectory szFileName} { - global locatedFile env - - debug {======= findFile $szDirectory $szFileName} 3 - if {! [info exists locatedFile($szDirectory/$szFileName)]} { - if {[file readable $szDirectory/$szFileName]} { - set locatedFile($szDirectory/$szFileName) $szDirectory/$szFileName - } else { - if {$szDirectory == "." || \ - [lsearch -exact [split $env(TESTSETS) ":"] \ - $szDirectory] >= 0} { - set locatedFile($szDirectory/$szFileName) \ - [split [exec find $szDirectory -name $szFileName \ - -print] "\n"] - } else { - return {} - } - } - } - return $locatedFile($szDirectory/$szFileName) -} - -# appendArguments -# -# This procedure will append the string pathed in arguments to every -# element of fileList -# return a list with the same number of element in which each -# element has the arguments appended -# -proc appendArguments {fileList arguments} { - set newList {} - debug {======= appendArguments $fileList $arguments} 3 - debug { length argument list: >[llength $arguments]<} 4 - if {[string length $arguments] > 0} { - foreach file $fileList { - regexp {([^[=]+)([[][^]]*[]])?(.*)} $file dummy szT szID szA - debug {dummy: >$dummy<} 4 - debug {szT : >$szT<} 4 - if {[string length $szID] > 0} { - #regexp {[[]([^]]+)[]]} $szID dummy szID - } - debug {szID : >$szID<} 4 - if {[string length $szA] > 0} { - regexp {=(.*)} $szA dummy szA - } - debug {szA : >$szA<} 4 - #set lFile [split $file "="] - if {[string length $szA] > 0} { - set szSep " " - } else { - set szSep "=" - } - lappend newList ${file}${szSep}$arguments - } - return $newList - } - return $fileList -} - -# appendTestCaseID -# -# This procedure will append the string pathed in arguments to every -# element of fileList -# return a list with the same number of element in which each -# element has the arguments appended -# -proc appendTestCaseID {fileList {szTestCaseID ""}} { - set newList {} - debug {======= appendTestCaseID $fileList >$szTestCaseID<} 3 - set bMultiFiles [expr [llength $fileList] > 1] - set i 1 - foreach file $fileList { - regexp {([^[=]+)([[][^]]*[]])?(.*)} $file dummy szT szID szA - debug {dummy: >$dummy<} 4 - debug {szT : >$szT<} 4 - if {[string length $szID] > 0} { - regexp {[[]([^]]+)[]]} $szID dummy szID - } - debug {szID : >$szID<} 4 - if {[string length $szA] > 0} { - #regexp {=(.*)} $szA dummy szA - } - debug {szA : >$szA<} 4 - if {[string length $szID] > 0} { - set szID [string trim "${szID}${szTestCaseID}"] - } else { - set szID ${szTestCaseID} - } - if {[llength [split $szID "="]] > 1} { - set szSep " " - } else { - set szSep "=" - } - if {[string length $szID] == 0} { - lappend newList "${szT}$szA" - continue - } - if {$bMultiFiles} { - set szI [format "${szSep}seqNr=%03d" $i] - } else { - set szI "" - } - lappend newList "${szT}\[${szID}${szI}\]$szA" - incr i - } - return $newList -} - -# processArgs -# -# This procedure expect all optional arguments to be name=value pairs -# It will set all variable named to the value given within -# the procedure body -# It will return an empty list or a list of all remaining not name=value -# pair in the argument list -# -proc processArgs {args} { - debug {======= processArgs $args} 3 - - set llArgs $args - set args {} - - # set default errorCode=NONE - uplevel set errorCode NONE - # now process all name=value pair arguments - ####### There may be a better way to do this see pre 8.0 code - foreach lArgs $llArgs { - foreach arg $lArgs { - set NVP [split $arg "="] - if {[llength $NVP] > 1} { - debug {uplevel set [lindex $NVP 0] \ - [list [join [lrange $NVP 1 end] "="]]} 3 - uplevel set [lindex $NVP 0] \ - [list [join [lrange $NVP 1 end] "="]] - } else { - lappend args $arg - } - } - } - debug { processArgs returns: $args} 3 - return $args -} - -# processInternalArgs -# -# This procedure expect all optional arguments to be {name value} pairs -# It will set all variable named to the value given within -# the procedure body -# It will return an empty list or a list of all remaining not name=value -# pair in the argument list -# -proc processInternalArgs {lArgs} { - debug {======= processInternalArgs $lArgs} 3 - set arglist {} - - # set default errorCode=NONE - uplevel set errorCode NONE - # now process all {name value} pair arguments - foreach arg $lArgs { - if {[llength $arg] == 2} { - debug {uplevel set [lindex $arg 0] \ - [list [join [lrange $arg 1 end] "="]]} 3 - uplevel set [lindex $arg 0] \ - [list [join [lrange $arg 1 end] "="]] - } else { - lappend arglist $arg - } - } - debug {processInternalArgs returns: $arglist} 3 - return $arglist -} - -# processTestScriptArgs -# -# This procedure expect all optional arguments to be {name value} pairs -# It will set all variable named to the value given within -# the procedure body -# It will return an empty list or a list of all remaining not name=value -# pair in the argument list -# -# This is a copy of the procedure "processInternalArgs" without an argument -# however this procedure may become different -# -# -proc processTestScriptArgs {} { - upvar lArgs lArgs - set arglist {} - - # set default errorCode=NONE - uplevel set errorCode NONE - debug {======= processTestScriptArgs $lArgs} 3 - # now process all {name value} pair arguments - foreach arg $lArgs { - if {[llength $arg] == 2} { - debug {uplevel set [lindex $arg 0] \ - [list [join [lrange $arg 1 end] "="]]} 4 - uplevel set [lindex $arg 0] \ - [list [join [lrange $arg 1 end] "="]] - } else { - lappend arglist $arg - } - } - debug { processInternalArgs returns: $arglist} 4 - return $arglist -} - -# Command execution command -# This command is like the catch command, however it can do some additional -# testing and in case of an error it will return a error class. -# -proc doCmd {szCmd args} { - global errorInfo errorCode - if {! [info exists errorInfo]} { - set errorInfo "" - } - - debug {======= doCmd >$szCmd< >$args<} 3 - foreach arg $args { - set vv [split $arg "="] - if {[llength $vv] == 2} { - debug { ==>> Expected value: [lindex $vv 0]=[eval list \ - [lindex $vv 1]]} 5 - set [lindex $vv 0] [eval list [lindex $vv 1]] - } elseif {[llength $vv] == 1} { - if {! [info exists errorObj]} { - debug { ==>> upvar $vv errorObj} 5 - if "! [uplevel info exists $vv]" { - debug { ==>> creating: $vv (uplevel)} 5 - uplevel [list set $vv {}] - } - upvar $vv errorObj - } - } - } - if {[catch {uplevel 1 $szCmd} szErrMsg]} { - debug {======= ErrMsg : \n$szErrMsg\n======= from:\n$szCmd} 5 - set errorObj "" - if {[string compare $errorCode NONE] == 0} { - set errorCode UNDEFINED - } - set errorInfoSave $errorInfo - set errorCodeSave $errorCode - catch {set errorObj [uplevel infoWhich \{$szErrMsg\}]} - set errorInfo $errorInfoSave - set errorCode $errorCodeSave - debug { ==>> errorObj: >$errorObj<} 5 - if {[string compare $errorObj ""] == 0} { - set errorObj [uplevel \ - ::BlueGnu::Error #auto \{$errorCode\} \ - \{$szErrMsg\} \{$errorInfo\}] - debug {errorObj: >$errorObj<} 5 - set errorObj [uplevel infoWhich \{$errorObj\}] - debug {errorObj: >$errorObj<} 5 - debug {Command: [string trim $szCmd]} 5 - debug {ErrMsg : \n$szErrMsg} 5 - debug {====================} 5 - global errorInfo - debug {ErrInfo: $errorInfo\n====================} 5 - } - set bReturn 1 - if {[info exists errorCode]} { - debug { errorCode= $errorCode} 5 - debug { Class= [$errorObj info class]} 5 - catch {debug { isa BC_RTN= [$errorObj isa BC_RTN]} 5} - catch {debug { isa ERROR= [$errorObj isa Error]} 5} - catch { - if [$errorObj isa BC_RTN] { - if {[set i \ - [lsearch -exact $errorCode \ - [list [$errorObj SEVERITY] \ - [$errorObj FACILITY] [$errorObj CODE]]]] >= 0} { - setup_xfail - set bReturn 0 - } - fail "Expected errorCode=$errorCode, got:\ - [$errorObj getShortMsg]\ - \{[$errorObj SEVERITY] [$errorObj FACILITY]\ - [$errorObj CODE]\} for >$szCmd<" - #verbose { errorCode: [$errorObj errorCode]} - #verbose { why: [$errorObj why]} - #verbose {verboseWhy: [$errorObj verboseWhy]} 2 - } - } - catch { - if [$errorObj isa Error] { - debug { Error= [$errorObj errorCode]} 5 - if {[set i \ - [lsearch -exact $errorCode \ - [$errorObj errorCode]]] >= 0} { - setup_xfail - set bReturn 0 - } - fail "Expected errorCode=$errorCode, got:\ - [$errorObj errorCode] for >$szCmd<" - verbose { errorCode: [$errorObj errorCode]} - verbose { why: [$errorObj why]} - verbose {verboseWhy: [$errorObj verboseWhy]} 2 - } - } - } - return $bReturn - } else { - set bReturn 0 - set NOT "" - if {[info exists errorCode]} { - if {[lsearch -exact $errorCode "NONE"] < 0} { - setup_xfail - set NOT "not " - set bReturn 1 - } - pass "errorCode=NONE ${NOT}found in expected set\ - of errorCodes=\{$errorCode\} for >$szCmd<" - } - if {[info exists return]} { - debug {Return: >$return<} 3 - set bResult 0 - set iFalse 0 - set iFalseFound 0 - set iTrue 0 - set iTrueFound 0 - foreach lResult $return { - if {[llength $lResult] == 2} { - set bFlag [string toupper [lindex $lResult 0]] - set szResult [lindex $lResult 1] - } else { - set bFlag "" - set szResult [lindex $lResult 0] - } - debug {Checking >$szErrMsg< against $bFlag >$szResult<} 3 - switch $bFlag { - 0 - NOT - NO - FALSE { - # no matches allowed - incr iFalse - debug {Should not match >$szErrMsg< != >$szResult<} 4 - if {[string compare $szErrMsg $szResult] != 0} { - pass "The NOT Expected Result >$szResult<\ - was not found for >$szCmd<" - incr iFalseFound - } else { - fail "The NOT Expected Result >$szResult<\ - was found for >$szCmd<" - } - } - 1 - {} - YES - TRUE { - # only one match allowed - incr iTrue - debug {Should match >$szErrMsg< == >$szResult<} 4 - if {[string compare $szErrMsg $szResult] == 0} { - pass "Expected Result >$szResult<\ - found for >$szCmd<" - incr iTrueFound - } - } - default { - perror "doCmd result flag: 1, 0, ,\ - NOT, YES, NO, TRUE, FALSE" - } - } - } - set bResult [expr $iFalse == $iFalseFound] - if {$iTrue > 0} { - set bResult [expr $bResult && ($iTrueFound == 1)] - } - if {! $bResult} { - fail "Expected Result(s) >$return<\n \ - did not match with: >$szErrMsg< for >$szCmd<" - set bReturn 1 - } - } - if {[info exists errorObj]} { - set errorObj $szErrMsg - } - } - return $bReturn -} - - -# deleteObjects -# -# This procedure takes multiple arguments each can be a single object -# or a list of objects -# it will delete all these object -# No return value -# -proc deleteObjects {args} { - debug {======= deleteObjects $args} 3 - foreach arg $args { - foreach object $arg { - debug " delete object >$object<" 4 - delete object $object - } - } - return {} -} - -# isObject -# This procedure accepts a fully qualified object name as argument -# and checks if that object exists -proc isObject {object} { - debug {======= isObject $object} 3 - set tmp [namespace tail $object] - return [expr [lsearch [namespace eval [namespace qualifier $object] { - ::itcl::find objects - } - ] $tmp] >= 0] -} - -# checkObject -# This procedure takes an object and a class name is argument -# It checks if the object exists, has a counter part in C++ and -# is of the correct class -# -proc checkObject {object szClassName} { - debug {======= checkObject $object $szClassName} 3 - if {! [catch { - set class [uplevel "$object info class"] - if {[catch {[findObject $object] isa $szClassName} bCl]} { - if {[string compare [namespace tail $class] \ - [namespace tail $szClassName]] == 0} { - debug {Class [namespace tail $szClassName]\ - match class of object} 4 - } else { - error "Miss match" - } - } elseif {! $bCl} { - error 1 - } - } iRet]} { - return 1 - } - - set obj [findObject $object] - set class [findClass $szClassName] - if {[string length $obj] > 0 && [string length $class] > 0} { - debug { ==>> object and class passed do exists} 4 - if {[catch {set bISA [$obj isa $class]}]} { - debug {Class $szClassName is not inscope to match $object} 4 - return 0 - } - if {! $bISA} { - debug {$object is not of Class $szClassName} 4 - return 0 - } - } else { - debug {$object and/or $szClassName have not been found!} 4 - return 0 - } - return 1 -} - -# findObject -# This procedure take the name of an object, possibly without any qualifier -# and search all namespaces to find the object. -# When a qualifier is specified, it will check if it is complete -# The procedure return the fully qualified name of the object if it exists or -# an empty string otherwise. -# -proc findObject {object {namespace ::}} { - debug {======= findObject $object $namespace} 3 - set ns [namespace qualifier $object] - set obj [namespace tail $object] - set objs [namespace eval $namespace {::itcl::find objects}] - if {[lsearch $objs $obj] >= 0} { - regsub "::$" $namespace "" namespace - return ${namespace}::$obj - } else { - set result "" - foreach cns [namespace children $namespace] { - set result [findObject $obj $cns] - if {[string length $result] > 0} break - } - } - return $result -} - -# findClass -# This procedure take the name of an class, possibly without any qualifier -# and search all namespaces to find the class. -# When a qualifier is specified, it will check if it is complete -# The procedure return the fully qualified name of the Class if it exists or -# an empty string otherwise. -# -proc findClass {class {namespace ::}} { - debug {======= findClass $class $namespace} 3 - set ns [namespace qualifier $class] - set obj [namespace tail $class] - set objs [namespace eval $namespace {::itcl::find classes}] - if {[lsearch $objs $obj] >= 0} { - regsub "::$" $namespace "" namespace - return ${namespace}::$obj - } else { - set result "" - foreach cns [namespace children $namespace] { - set result [findClass $obj $cns] - if {[string length $result] > 0} break - } - } - return $result -} - -# The parseTest command will validate the argument as an existing -# test including testCaseID and arguments. -# It will return a list of all acceptable test script -# -proc parseTest {args} { - global szCurrentTestDirectory - debug {======= parseTest $args} 3 - - foreach arg $args { - foreach szTest $arg { - regexp {([^[=]+)([[][^]]*[]])?(.*)} $szTest dummy szT szID szA - debug {dummy: >$dummy<} 4 - debug {szT : >$szT<} 4 - if {[string length $szID] > 0} { - #regexp {[[]([^]]+)[]]} $szID dummy szID - } - debug {szID : >$szID<} 4 - if {[string length $szA] > 0} { - #regexp {=(.*)} $szA dummy szA - } - debug {szA : >$szA<} 4 - set szFileName $szT - set szDname [file dirname $szFileName] - set szFname [file tail $szFileName] - - if {[file exist [set test [file join \ - $szCurrentTestDirectory \ - $szFileName]]]} { - # file should be a test - debug { is a test: >$test 0} { - foreach test $tests { - if {[file exists $test]} { - # file should be a test - debug { is a test: >$test$test< can't be found" - } - } - } else { - perror "$szFileName is not a test!\ - Does not exists!" - } - } - } - if [info exists testList] { - if [llength $testList] { - return $testList - } - } - return [list] -} - -# The global available runtest procedure -# this procedure will find the current environment -# and execute the runTest procedure in that environment - -proc runtest {args} { - global objCurrentEnvironment szCurrentTestDirectory - debug {======= runtest $args} 3 - set elResult [list] - - if {[llength $args] > 0} { - set Env [lindex $args 0] - debug { Checking for environment: >$Env<} 3 - debug { >[infoWhich $Env]<} 5 - debug { Current Test Directory: >$szCurrentTestDirectory<} 5 - if {[string compare [infoWhich $Env] ""] == 0} { - debug { not an environment} 4 - if {[info exist objCurrentEnvironment] && \ - [string compare \ - [infoWhich $objCurrentEnvironment] ""] != 0} { - debug { Found Current Environment\ - >$objCurrentEnvironment<} 5 - set Env $objCurrentEnvironment - } else { - error "NO default environent" - } - } else { - debug { is an environment} 3 - set args [lrange $args 1 end] - } - set T [lindex $args 0] - set A [lindex $args 1] - set I [lindex $args 2] - foreach t [appendTestCaseID [appendArguments [parseTest $T] $A] $I] { - debug { ==>> $objCurrentEnvironment\ - runTest $t} 3 - lappend elResult \ - [$Env runTest $t] - } - } else { - warning "No tests have been passed to runtest procedure!" - } - return $elResult -} - -proc appendQueue {args} { - global objCurrentQueue szCurrentTestDirectory - debug {======= appendQueue $args} 3 - - set iRun 0 - set Queue [lindex $args 0] - if {[string compare [infoWhich $Queue] ""] == 0} { - if {[info exist objCurrentQueue]} { - set Queue $objCurrentQueue - } else { - error "NO default queue" - } - } else { - set args [lrange $args 1 end] - } - set T [lindex $args 0] - set A [lindex $args 1] - set I [lindex $args 2] - foreach t [appendTestCaseID [appendArguments [parseTest $T] $A] $I] { - debug { ==>> $Queue append $t} 3 - incr iRun - $Queue append $t - } - if {$iRun == 0} { - warning "NO argument to appendQueue have been processed" - } -} - -proc prependQueue {args} { - global objCurrentQueue szCurrentTestDirectory - debug {======= prependQueue $args} 3 - - set iRun 0 - set Queue [lindex $args 0] - if {[string compare [infoWhich [lindex $args 0]] ""] == 0} { - if {[info exist objCurrentQueue]} { - set Queue $objCurrentQueue - } else { - error "NO default queue" - } - } else { - set args [lrange $args 1 end] - } - set T [lindex $args 0] - set A [lindex $args 1] - set I [lindex $args 2] - foreach t [appendTestCaseID [appendArguments [parseTest $T] $A] $I] { - incr iRun - lappend comList $t - } - debug { ==>> $Queue prepend $comList} 3 - eval $Queue prepend $comList - - if {$iRun == 0} { - warning "NO argument to appendQueu have been processed" - } -} - -proc perror {args} { - global errorInfo - global objCurrentTest - global objCurrentEnvironment - - # save errorInfo - set errorInfoSave $errorInfo - - if { [llength $args] > 1 } { - set $::BlueGnu::errcnt [lindex [uplevel set args] 1] - } else { - incr ::BlueGnu::errcnt - } - - while 1 { - set szMsg [lindex $args 0] - - if {[catch {$objCurrentTest perror $szMsg} \ - szErrMsg]} { - if {[info exists objCurrentTest]} { - debug {No current test: >$szErrMsg<:\ - current test >$objCurrentTest< message:\n \ - $szMsg} 3 - } else { - debug {PERROR: No current test: >$szErrMsg<:\ - current test >DOES NOT EXIST< message:\n \ - $szMsg} 3 - debug { info: >>>$errorInfo<<<} 4 - } - } else { - break - } - catch { - set szCmd [concat \"$objCurrentEnvironment\" record_test \ - ERROR \$szMsg] - } - if {[catch {eval $szCmd} szErrMsg]} { - verbose {No current environment (ERROR): >$szErrMsg<} 3 - } else { - break - } - - ::BlueGnu::clone_output "ERROR: $szMsg" - namespace eval ::BlueGnu { - set errno "ERROR: [uplevel set szMsg]" - } - break - } - - # restore errorInfo - set errorInfo $errorInfoSave -} - -proc warning {args} { - global errorInfo - global objCurrentTest - global objCurrentEnvironment - - # save errorInfo - set errorInfoSave $errorInfo - - if { [llength $args] > 1 } { - namespace eval ::BlueGnu { - set warncnt [lindex [uplevel set args] 1] - } - } else { - namespace eval ::BlueGnu { - incr warncnt - } - } - - while 1 { - set szMsg [lindex $args 0] - - if {[catch {$objCurrentTest warning $szMsg} \ - szErrMsg]} { - if {[info exists objCurrentTest]} { - verbose {No current test: >$szErrMsg<:\ - current test >$objCurrentTest< message:\n \ - $szMsg} 3 - } else { - verbose {WARNING: No current test: >$szErrMsg<:\ - current test >DOES NOT EXIST< message:\n \ - $szMsg} 3 - } - } else { - break - } - catch { - set szCmd [concat \"$objCurrentEnvironment\" record_test \ - WARNING \$szMsg] - } - if {[catch {eval $szCmd} szErrMsg]} { - verbose {No current environment (WARNING): >$szErrMsg<} 3 - } else { - break - } - - set szMsg [lindex $args 0] - ::BlueGnu::clone_output "WARNING: $szMsg" - namespace eval ::BlueGnu { - set errno "WARNING: [uplevel set szMsg]" - } - break - } - if 0 { - uplevel #0 { - verbose {uplevel #0 to remove errorInfo} - if [info exists errorInfo] { - unset errorInfo - } - } - } - # restore errorInfo - set errorInfo $errorInfoSave -} - -proc note {szMsg} { - global objCurrentTest - - $objCurrentTest note $szMsg -} - -proc pass {szMsg} { - global objCurrentTest - - $objCurrentTest pass $szMsg -} - -proc fail {szMsg} { - global objCurrentTest - - $objCurrentTest fail $szMsg -} - -proc unresolved {szMsg} { - global objCurrentTest - - $objCurrentTest unresolved $szMsg -} - -proc untested {szMsg} { - global objCurrentTest - - $objCurrentTest untested $szMsg -} - -proc unsupported {szMsg} { - global objCurrentTest - - $objCurrentTest unsupported $szMsg -} - -proc get_warning_threshold {} { - return [namespace eval ::BlueGnu {set warning_threshold}] -} - -proc set_warning_threshold {threshold} { - namespace eval ::BlueGnu { - set warning_threshold [uplevel set threshold] - } -} - -proc setup_xfail {args} { - namespace eval ::BlueGnu {set xfail_flag 1} -} - -proc clear_xfail {args} { - namespace eval ::BlueGnu {set xfail_flag 0} -} - -proc benchmark {benchmarkFunction args} { - debug {======= benchmark $benchmarkFunction $args} - global objCurrentTest - global errorInfo - - if 0 { - debug {[foreach var [info vars] { - verbose {local var: >$var<}}] - } - uplevel { - debug {[foreach var [info vars] { - verbose {uplevel local var: >$var<}}] - } - } - debug {[foreach var [info globals] { - verbose {global var: >$var<}}] - } - } - - set errorInfo "" - set szID [$objCurrentTest ID] - set szTestCaseID [$objCurrentTest testCaseID] - set benchmarkObject [$objCurrentTest benchmarkObject] - set benchmarkClassName [$objCurrentTest benchmarkClassName] - debug { ==>> test ID: >$szID<} 3 - debug { test case ID: >$szTestCaseID<} 3 - debug { check test object: >$benchmarkObject<} 3 - if {$benchmarkObject == ""} { - warning "NO Benchmark Class defines for >$benchmarkClassName<" - set bResult 0 - } else { - if [catch { - set bResult [eval $benchmarkObject benchmark \ - $benchmarkFunction $args] - } errMsg] { - warning "NO checking has been done for\ - ${benchmarkClassName}::benchmark $benchmarkFunction $args" - debug {[perror "BenchmarkFunction: >$benchmarkFunction<\ - has not been defined\ - in class $benchmarkClassName\n### Error Msg: $errMsg"]} 0 - debug {### Error Info: $errorInfo} 0 - set bResult 0 - } - } - return $bResult -} - -proc envPATH {szAction szDir} { - debug {======= envPATH $szAction $szDir} 3 - - global env - if [file isdirectory $szDir] { - # remove directory from Path if it exists - set envPATH $env(PATH) - while {[regsub :?$szDir:? $envPATH {:} envPATH]} { - } - regsub {^:} $envPATH {} envPATH - regsub {:$} $envPATH {} envPATH - set env(PATH) $envPATH - switch $szAction { - prefix - - prepend { - set env(PATH) "$szDir:$env(PATH)" - } - append { - append env(PATH) ":$szDir" - } - default { - } - } - } -} - -# replacement for info which commaond -# -proc infoWhich {name {namespace ::}} { - debug {======= infoWhich $name $namespace} 3 - if [catch {uplevel set infoWhich__name $name} szErrMsg] { - debug { error: $szErrMsg} - return "" - } - uplevel { - debug { objects: >[::itcl::find objects]<} 4 - debug { namespace: >[namespace current]<} 4 - infoWhichYYY - } - set name [uplevel set infoWhich__name] - uplevel unset infoWhich__name - debug {infoWhich return: >$name<} 4 - return $name -} -proc infoWhichXXX {} { - uplevel { - set i [lsearch -regexp [::itcl::find objects] "[namespace tail \ - $infoWhich__name]"] - if {$i < 0} { - set infoWhich__name "" - } else { - set infoWhich__name [lindex [::itcl::find objects] $i] - if {! [string match ::* $infoWhich__name]} { - set infoWhich__name [namespace current]::$infoWhich__name - } - regsub "^::::" $infoWhich__name "::" infoWhich__name - } - } -} -proc infoWhichYYY {} { - uplevel { - if [catch {infoWhichXXX} szErrMsg] { - verbose "infoWhichYYY error Msg: $szErrMsg" - set infoWhich__name "" - } - } -} - -namespace eval ::BlueGnu { - variable warning_threshold 0 - - variable sum_file stdout - variable all_flag 0 - - variable xfail_flag 0 - variable xfail_prms {} - # - # Print output to stdout (or stderr) and to log file - # - # If the --all flag (-a) option was used then all messages - # go the the screen. - # Without this, all messages that start with a keyword are - # written only to the - # detail log file. All messages that go to the screen will - # also appear in the - # detail log. This should only be used by the framework itself using pass, - # fail, xpass, xfail, warning, perror, note, untested, unresolved, or - # unsupported procedures. - # - proc clone_output {message} { - variable sum_file - variable all_flag - - #everything goes in the summary file - # - puts $sum_file "$message" - - # Depending on the type of message, the message is send - # to other resources - # - case [lindex [split $message] 0] in { - {"FAIL:" "XPASS:" "UNRESOLVED:" "UNSUPPORTED:" "UNTESTED:"} { - send_user "$message\n" - send_log "$message\n" - } - {"PASS:" "XFAIL:"} { - if $all_flag { - send_user "$message\n" - } - send_log "$message\n" - } - "ERROR:" { - #send_user "$message\n" - send_error "$message\n" - send_log "$message\n" - } - {"WARNING:" "NOTE:"} { - if $all_flag { - send_error "$message\n" - } - send_log "$message\n" - } - "*******" { - send_user "$message\n" - #send_log "$message\n" - #send_error "$message\n" - } - default { - send_user "$message\n" - } - } - - # we always return turn the message unchanged - # - return "$message" - } -} - -proc createTarget {args} { - verbose {In: createTarget >$args<} 3 - set szCmd "::BlueGnu::Target #auto " - set bID 0 - set bEnv 0 - set bQueue 0 - foreach item $args { - if {[string compare \ - [lindex [split $item "="] 0] szID] == 0} { - set bID 1 - } - if {[string compare \ - [lindex [split $item "="] 0] objEnvironment] == 0} { - set bEnv 1 - } - if {[string compare \ - [lindex [split $item "="] 0] objQueue] == 0} { - set bQueue 1 - } - append szCmd "\{$item\} " - } - if {! $bID} { - append szCmd "szID=Default " - } - if {! $bEnv} { - append szCmd "objEnvironment=[infoWhich \ - [::BlueGnu::Environment #auto]] " - } - if {! $bQueue} { - append szCmd "objQueue=[infoWhich [::BlueGnu::Queue #auto]] " - } - verbose {Command: >$szCmd<} 3 - set target [uplevel #0 "eval $szCmd"] - verbose {Created target: >$target<} 3 - verbose { >>>[$target <<]<<<} 4 - verbose { >>>[[infoWhich $target] <<]<<<} 4 - verbose { == [join [$target <<] "\n == "]} 3 - return [infoWhich $target] -} - -# Initialize all global variables not yet initialized -# -set szCurrentTestDirectory $env(TESTSUITEROOT) - -# Remove all temporary variables from the global space -catch {eval unset [info globals __*]} -debug {Global variables available:\ - \n [join [lsort [info globals]] "\n "]} 9 -debug {Global procedures available:\ - \n [join [lsort [info procs]] "\n "]} 9 - -foreach dir [split $env(TESTSETS) ":"] { - if {[string compare $dir $PWD] == 0} { - foreach indexFile [locateFile tclIndex] { - set indexDir [file dirname $indexFile] - if {[lsearch -exact [split $auto_path] $indexDir] < 0} { - set auto_path "$indexDir $auto_path" - } - } - foreach indexFile [locateFile tclIndex lib] { - set indexDir [file dirname $indexFile] - if {[lsearch -exact [split $auto_path] $indexDir] < 0} { - set auto_path "$indexDir $auto_path" - } - } - } else { - if {[file exists $dir/tclIndex]} { - set auto_path "$dir $auto_path" - } - } -} -debug {auto_path has been intialize to:\n [join $auto_path "\n "]} 3 -verbose {TESTSETS: >$env(TESTSETS)<} 3 diff --git a/contrib/bluegnu2.0.3/lib/testSessionUtils.itcl b/contrib/bluegnu2.0.3/lib/testSessionUtils.itcl deleted file mode 100644 index 4c960c4..0000000 --- a/contrib/bluegnu2.0.3/lib/testSessionUtils.itcl +++ /dev/null @@ -1,26 +0,0 @@ -# -# Procedures and other definitions for application: -# -# testSession -# - - - -proc popQueue {args} { - global szDefaultQueue - - if {[llength $args] == 1} { - set Queue [lindex $args 0] - if {[string compare [infoWhich $Queue] ""] == 0} { - error "NOT a queue >$args<" - } else { - eval [concat [infoWhich $Queue] pop] - } - } else { - if {[info exist szDefaultQueue]} { - eval [concat $szDefaultQueue pop] - } else { - error "NO default queue" - } - } -} diff --git a/contrib/bluegnu2.0.3/lib/udi.exp b/contrib/bluegnu2.0.3/lib/udi.exp deleted file mode 100644 index b8c940e..0000000 --- a/contrib/bluegnu2.0.3/lib/udi.exp +++ /dev/null @@ -1,213 +0,0 @@ -# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -# -# set target variables only if needed. -# -global targetname -global connectmode -global env - -if ![info exists targetname] { - if [info exists env(TARGETNAME)] { - set targetname $env(TARGETNAME) - } else { - puts stderr "ERROR: Need a target name for the udi target." - puts stderr " Use the --name option\n" - exit 1 - } -} - -# the default connect program to use -if ![info exists connectmode] { - set connectmode "mondfe" - warning "Using default of $connectmode for target communication." - if {[which mondfe] == 0} { - perror "\"mondfe\" does not exist. Check your path." - exit 1 - } -} - -# -# Connect to udi using mondfe -# -# HOSTNAME can be `iss' to talk to the simulator. -# The result is the value of `spawn_id' or -1 for failure. -# -proc mondfe { hostname } { - global shell_prompt - global spawn_id - - set retries 0 - set result -1 - - verbose "Attempting to connect to $hostname via mondfe." - spawn mondfe -D -TIP $hostname - - expect { - "$shell_prompt" { - verbose "Got prompt" - set result 0 - } - "*server bind*failed: Address already in use*" { - warning "Socket file already exists." - incr retries - if { $retries <= 2 } { - continue -expect - } - } - -indices -re ".*(UDIERROR\[^\r\n\]*)\[\r\n\]" { - warning "$expect_out(1,string)" - continue -expect - } - -indices -re ".*(DFEERROR\[^\r\n\]*)\[\r\n\]" { - warning "$expect_out(1,string)" - continue -expect - } - timeout { - warning "Timed out trying to connect." - set result -1 - incr retries - if { $retries <= 2 } { - send -i $spawn_id "\n" - continue -expect - } - } - } - - if { $result < 0 } { - perror "Couldn't connect after $retries retries." - return -1 - } else { - return $spawn_id - } -} - -# -# Downloads using the y (yank) command in mondfe -# -# SHELL_ID is the from the result of `mondfe'. -# ARG is a full path name to the file to download. -# Returns 1 if an error occured, 0 otherwise. -# -proc mondfe_download { shell_id arg } { - global decimal ;# ??? What is this? - global shell_prompt - - if ![file exists $arg] { - perror "$arg doesn't exist." - return 1 - } - - verbose "Downloading $arg." 2 - set result 1 - send -i $shell_id "y $arg\n" - expect { - -i $shell_id "y $arg*loading $arg*" { - continue -expect - } - -i $shell_id -re "Loading *TEXT section from\[^\r\]*\r" { - verbose -n "." 2 - continue -expect - } - -i $shell_id -re "Loaded *TEXT section from\[^\n\]*\n" { - verbose " TEXT section loaded." 2 - continue -expect - } - -i $shell_id -re "Loading *LIT section from\[^\r\]*\r" { - verbose -n "." 2 - continue -expect - } - -i $shell_id -re "Loaded *LIT section from\[^\n\]*\n" { - verbose " LIT section loaded." 2 - continue -expect - } - -i $shell_id -re "Loading *DATA section from\[^\r\]*\r" { - verbose -n "." 2 - continue -expect - } - -i $shell_id -re "Loaded *DATA section from\[^\n\]*\n" { - verbose " DATA section loaded." 2 - continue -expect - } - -i $shell_id -re "Clearing *BSS section from\[^\r\]*\r" { - verbose -n "." 2 - continue -expect - } - -i $shell_id -re ".*Cleared *BSS section from.*$shell_prompt$" { - verbose " BSS section cleared." 2 - verbose "Downloaded $arg successfully." 2 - set result 0 - } - -i $shell_id -re "DFEWARNING: $decimal : EMMAGIC: Bad COFF file magic number.*Command failed.*$shell_prompt$" { - warning "Bad COFF file magic number" - set result 1 - } - -i $shell_id -re ".*Ignoring COMMENT section \($decimal bytes\).*$shell_prompt$" { - verbose "Ignoring COMMENT section" 2 - verbose "Downloaded $arg successfully." 2 - set result 0 - } - -i $shell_id timeout { - perror "Timed out trying to download $arg." - set result 1 - } - } - -# FIXME: the following keeps the download from working -# "Could not read COFF section" { -# perror "Couldn't read COFF section." -# set result 1 -# } - - if { $result && [info exists expect_out(buffer)] } { - send_log $expect_out(buffer) - } - return $result -} - -# -# Exit the remote shell -# -proc exit_mondfe { shell_id } { - send -i $shell_id "q\n" - expect { - -i $shell_id "Goodbye." { - verbose "Exited mondfe $shell_id" - } - timeout { - warning "mondfe didn't exit cleanly" - } - } - - catch "close -i $shell_id" - return 0 -} - -# -# Exit the remote shell -# -proc exit_montip { shell_id } { - verbose "exiting montip $shell_id" - - catch "close -i $shell_id" - return 0 -} diff --git a/contrib/bluegnu2.0.3/lib/util-defs.exp b/contrib/bluegnu2.0.3/lib/util-defs.exp deleted file mode 100644 index 17fcf1a..0000000 --- a/contrib/bluegnu2.0.3/lib/util-defs.exp +++ /dev/null @@ -1,110 +0,0 @@ -# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -# -# Run a utility and test the result. -# -# Parameters: -# First one is the command -# Second one is command arguments -# Third one is the file name -# Fourth one is the regexp style pattern to match for a PASS -# -# Returns: -# 1 if the test failed, -# 0 if the test passes, -# -1 if there was an internal error. -# - -proc util_test { args } { - global verbose - # get the parameters - set cmd [lindex $args 0] - verbose "Utility to execute is $cmd" 2 - set cmd_arg [lindex $args 1] - verbose "Command line arguments are $cmd_arg" 2 - set file [lindex $args 2] - verbose "The file name to use is $file" 2 - set pattern [lindex $args 3] - verbose "The pattern to match is \"$pattern\"" 2 - - if [info exists file] { - if ![string match "" $file] { - if ![file exists $file] { - perror "$file doesn't exist" - return -1 - } - } - } - - # Run the utility to be tested and analyze the results. - - set comp_output [util_start $cmd $cmd_arg $file] - - verbose "Output is \"$comp_output\"" 2 - verbose "Pattern is \"$pattern\"" 2 - - if [regexp "$pattern" $comp_output] { - verbose "Pattern matches." 2 - return 0 - } - - verbose "Pattern does not match." 2 - return 1 -} - -# -# Run the utility -# -# Return NULL or the output. -# - -proc util_start { args } { - global verbose - set cmd [lindex $args 0] - set cmd_arg [lindex $args 1] - set file [lindex $args 2] - - if {[which $cmd] == 0} { - perror "Can't find $cmd" - return "" - } - - if { $verbose > 0 } { - verbose "Spawning \"$cmd $cmd_arg $file\"" - } else { - send_log "Spawning \"$cmd $cmd_arg $file\"\n" - } - catch "exec $cmd $cmd_arg $file" comp_output - if ![string match "" $comp_output] { - send_log "$comp_output\n" - } - return $comp_output -} - -# -# add some basic error trapping. These mostly catch programming error's -# within the tests themselves -# -expect_before { - buffer_full { perror "Internal buffer is full" } - "can't open 'nmtest'" { perror "Can't open test file" } -} diff --git a/contrib/bluegnu2.0.3/lib/utils.exp b/contrib/bluegnu2.0.3/lib/utils.exp deleted file mode 100644 index 6ea6745..0000000 --- a/contrib/bluegnu2.0.3/lib/utils.exp +++ /dev/null @@ -1,454 +0,0 @@ -# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -# -# Most of the procedures found here mimic their unix counter-part. -# This file is sourced by runtest.exp, so they are usable by any test case. -# - -# -# Gets the directories in a directory -# args: the first is the dir to look in, the next -# is the pattern to match. It -# defaults to *. Patterns are csh style -# globbing rules -# returns: a list of dirs or NULL -# -proc getdirs { args } { - set path [lindex $args 0] - if { [llength $args] > 1} { - set pattern [lindex $args 1] - } else { - set pattern "*" - } - verbose "Looking in ${path} for directories that match \"${pattern}\"" 3 - catch "glob ${path}/${pattern}" tmp - if { ${tmp} != "" } { - foreach i ${tmp} { - if [file isdirectory $i] { - switch -- "[file tail $i]" { - "testsuite" - - "config" - - "lib" - - "CVS" - - "RCS" - - "SCCS" { - verbose "Ignoring directory [file tail $i]" 3 - continue - } - default { - if [file readable $i] { - verbose "Found directory [file tail $i]" 3 - lappend dirs $i - } - } - } - } - } - } else { - perror "$tmp" - return "" - } - - if ![info exists dirs] { - return "" - } else { - return $dirs - } -} - -# -# Finds all the files recursively -# rootdir - this is the directory to start the search -# from. This is and all subdirectories are search for -# filenames. Directory names are not included in the -# list, but the filenames have path information. -# pattern - this is the pattern to match. Patterns are csh style -# globbing rules. -# returns: a list or a NULL. -# -proc find { rootdir pattern } { - # first find all the directories - set dirs "$rootdir " - while 1 { - set tmp $rootdir - set rootdir "" - if [string match "" $tmp] { - break - } - foreach i $tmp { - set j [getdirs $i] - if ![string match "" $j] { - append dirs "$j " - set rootdir $j - unset j - } else { - set rootdir "" - } - } - set tmp "" - } - - # find all the files that match the pattern - foreach i $dirs { - verbose "Looking in $i" 3 - set tmp [glob -nocomplain $i/$pattern] - if { [llength $tmp] != 0 } { - foreach j $tmp { - if ![file isdirectory $j] { - lappend files $j - verbose "Adding $j to file list" 3 - } - } - } - } - - if ![info exists files] { - lappend files "" - } - return $files -} - -# -# Search the path for a file. This is basically a version -# of the BSD-unix which utility. This procedure depends on -# the shell environment variable $PATH. It returns 0 if $PATH -# does not exist or the binary is not in the path. If the -# binary is in the path, it returns the full path to the binary. -# -proc which { file } { - global env - - # strip off any extraneous arguments (like flags to the compiler) - set file [lindex $file 0] - - # if it exists then the path must be OK - # ??? What if $file has no path and "." isn't in $PATH? - if [file exists $file] { - return $file - } - if [info exists env(PATH)] { - set path [split $env(PATH) ":"] - } else { - return 0 - } - - foreach i $path { - verbose "Checking against $i" 3 - if [file exists $i/$file] { - if [file executable $i/$file] { - return $i/$file - } else { - warning "$i/$file exists but is not an executable" - } - } - } - # not in path - return 0 -} - -# -# Looks for a string in a file. -# return:list of lines that matched or NULL if none match. -# args: first arg is the filename, -# second is the pattern, -# third are any options. -# Options: line - puts line numbers of match in list -# -proc grep { args } { - - set file [lindex $args 0] - set pattern [lindex $args 1] - - verbose "Grepping $file for the pattern \"$pattern\"" 3 - - set argc [llength $args] - if { $argc > 2 } { - for { set i 2 } { $i < $argc } { incr i } { - append options [lindex $args $i] - append options " " - } - } else { - set options "" - } - - set i 0 - set fd [open $file r] - while { [gets $fd cur_line]>=0 } { - incr i - if [regexp -- "$pattern" $cur_line match] { - if ![string match "" $options] { - foreach opt $options { - case $opt in { - "line" { - lappend grep_out [concat $i $match] - } - } - } - } else { - lappend grep_out $match - } - } - } - close $fd - unset fd - unset i - if ![info exists grep_out] { - set grep_out "" - } - return $grep_out -} - -# -# Remove elements based on patterns. elements are delimited by spaces. -# pattern is the pattern to look for using glob style matching -# list is the list to check against -# returns the new list -# -proc prune { list pattern } { - foreach i $list { - verbose "Checking pattern \"$pattern\" against $i" 3 - if ![string match $pattern $i] { - lappend tmp $i - } else { - verbose "Removing element $i from list" 3 - } - } - return $tmp -} - -# -# Attempt to kill a process that you started -# -proc slay { name } { - set in [open [concat "|ps"] r] - while {[gets $in line]>-1} { - if ![string match "*expect*slay*" $line] { - if [string match "*$name*" $line] { - set pid [lindex $line 0] - catch "exec kill -9 $pid]" - verbose "Killing $name, pid = $pid\n" - } - } - } - close $in -} - -# -# Convert a relative path to an absolute one -# -proc absolute { path } { - if [string match "." $path] { - return [pwd] - } - - set basedir [pwd] - cd $path - set path [pwd] - cd $basedir - return $path -} - -# -# Source a file and trap any real errors. This ignores extraneous -# output. returns a 1 if there was an error, otherwise it returns 0. -# -proc psource { file } { - global errorInfo - global errorCode - - unset errorInfo - if [file exists $file] { - catch "source $file" - if [info exists errorInfo] { - send_error "ERROR: errors in $file\n" - send_error "$errorInfo" - return 1 - } - } - return 0 -} - -# -# Check if a testcase should be run or not -# -# RUNTESTS is a copy of global `runtests'. -# -# This proc hides the details of global `runtests' from the test scripts, and -# implements uniform handling of "script arguments" where those arguments are -# file names (ie: the "foo" in make check RUNTESTFLAGS="bar.exp=foo"). -# "glob" style expressions are supported as well as multiple files (with -# spaces between them). -# Eg: RUNTESTFLAGS="bar.exp=foo1.c foo2.c foo3*.c bar*.c" -# -proc runtest_file_p { runtests testcase } { - if [string length [lindex $runtests 1]] { - set testcase [file tail $testcase] - foreach ptn [lindex $runtests 1] { - if [string match $ptn $testcase] { - return 1 - } - } - return 0 - } - return 1 -} - -# -# Delete various system verbosities from TEXT on SYSTEM -# -# An example is: -# ld.so: warning: /usr/lib/libc.so.1.8.1 has older revision than expected 9 -# -# SYSTEM is typical $target_triplet or $host_triplet. -# -# This is useful when trying to do pattern matches on program output. -# Sites with particularily verbose os's may wish to override this in site.exp. -# -# We get loaded after site.exp so only define this if not already defined. -# - -if { [info procs prune_system_crud] == "" } { - proc prune_system_crud { system text } { - # This is from sun4's. Do it for all machines for now. - # The "\\1" is to try to preserve a "\n" but only if necessary. - regsub -all "(^|\n)(ld.so: warning:\[^\n\]*\n?)+" $text "\\1" text - - # This happens when compiling on Alpha OSF/1 with cc -g -O. - regsub -all "(^|\n)(\n*uopt: Warning: file not optimized; use -g3 if both optimization and debug wanted\n?)+" $text "\\1" text - - # This happens when compiling on Alpha OSF using gas. - regsub -all "(^|\n)(/usr/ucb/ld:\nWarning: Linking some objects which contain exception information sections\n\tand some which do not. This may cause fatal runtime exception handling\n\tproblems\[^\n\]*\n?)+" $text "\\1" text - - # This happens on SunOS with cc -g -O. - regsub -all "(^|\n)(cc: Warning: -O conflicts with -g. -O turned off.\n?)+" $text "\\1" text - - # This happens when using g++ on a DWARF system. - regsub -all "(^|\n)(cc1plus: warning: -g option not supported for C\\+\\+ on systems using the DWARF debugging format\n?)+" $text "\\1" text - - # It might be tempting to get carried away and delete blank lines, etc. - # Just delete *exactly* what we're ask to, and that's it. - return $text - } -} - -# -# Compares two files line-by-line -# returns 1 it the files match, -# returns 0 if there was a file error, -# returns -1 if they didn't match. -# -proc diff { file_1 file_2 } { - set eof -1 - set differences 0 - - if [file exists ${file_1}] { - set file_a [open ${file_1} r] - } else { - warning "${file_1} doesn't exist" - return 0 - } - - if [file exists ${file_2}] { - set file_b [open ${file_2} r] - } else { - warning "${file_2} doesn't exist" - return 0 - } - - verbose "# Diff'ing: ${file_1} ${file_2}\n" 1 - - while { [gets ${file_a} line] != ${eof} } { - if [regexp "^#.*$" ${line}] { - continue - } else { - lappend list_a ${line} - } - } - close ${file_a} - - while { [gets ${file_b} line] != ${eof} } { - if [regexp "^#.*$" ${line}] { - continue - } else { - lappend list_b ${line} - } - } - close ${file_b} - for { set i 0 } { $i < [llength $list_a] } { incr i } { - set line_a [lindex ${list_a} ${i}] - set line_b [lindex ${list_b} ${i}] - -# verbose "\t${file_1}: ${i}: ${line_a}\n" 3 -# verbose "\t${file_2}: ${i}: ${line_b}\n" 3 - if [string compare ${line_a} ${line_b}] { - verbose "line #${i}\n" 2 - verbose "\< ${line_a}\n" 2 - verbose "\> ${line_b}\n" 2 - - send_log "line #${i}\n" - send_log "\< ${line_a}\n" - send_log "\> ${line_b}\n" - - set differences -1 - } - } - - if { [llength ${list_a}] != [llength ${list_b}] } { - verbose "Files not the same" 2 - set differences -1 - } else { - verbose "Files are the same" 2 - set differences 1 - } - return ${differences} -} - -# -# Set an environment variable -# -proc setenv { var val } { - global env - - set env($var) $val -} - -# -# Unset an environment variable -# -proc unsetenv { var } { - global env - unset env($var) -} - -# -# Get a value from an environment variable -# -proc getenv { var } { - global env - - if [info exists env($var)] { - return $env($var) - } else { - return "" - } -} - diff --git a/contrib/bluegnu2.0.3/lib/vrtx.exp b/contrib/bluegnu2.0.3/lib/vrtx.exp deleted file mode 100644 index 91be6c5..0000000 --- a/contrib/bluegnu2.0.3/lib/vrtx.exp +++ /dev/null @@ -1,334 +0,0 @@ -# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -# these just need to be initialized -# FIXME: The usage of `shell_id' as a global here seems wrong. Most targets -# have it local to the file of our caller. See for example udi.exp. -set shell_id 0 - -# -# set default values -# - -global env -if ![info exists env(SPECTRA)] { - perror "SPECTRA environment variable is not set." - exit 1 -} else { - set SPECTRA $env(SPECTRA) - append CFLAGS " -I $SPECTRA/target/include" -} - -# the hostname of the target board - -global targetname -if ![info exists targetname] { - puts stderr "ERROR: Need a target name for Spectra." - puts stderr " Use the --target option\n" - exit 1 -} - -# the default connect program to use -global connectmode -if ![info exists connectmode] { - set connectmode "xsh" - warning "Using default of $connectmode for target communication." -} - -# -# Connect to Spectra (VTRX) using xsh -# -proc xsh { hostname } { - global verbose - global hex - global connectmode - global shell_prompt - global spawn_id - global shell_id - global spawn_id - global env - global target_triplet - - set retries 0 - set result 0 - if {[which xsh] != 0} { - spawn xsh - } else { - warning "Can't find xsh in path" - return - } - - set shell_id $spawn_id - - # start the shell - expect { - "*Spectra Cross-Development Shell version*$shell_prompt" { - verbose "Got prompt" - set result 0 - } - timeout { - warning "Timed out trying to connect." - set result -1 - incr retries - if { $retries <= 2 } { - exp_continue - } - } - } - - # connect to the shell - set retries 0 - send "connect $hostname\n" - expect { - "connect $hostname*$hostname connected \(non-os mode\)*\n" { - set shell_prompt "$hostname> " - verbose "Connected to $hostname" - } - "*connect: not attached*" { - warning "Couldn't attach target" - set result -1 - } - -re ".* reset on target.*$" { - send_user "Spectra was reset\n" - exp_continue - } - -re "\[0-9A-Fa-f\]+\[ 0x\]+\[0-9A-Fa-f\]+.*$" { - exp_continue - } - "$hostname> " { - #send "\n" - } - timeout { - warning "Timed out trying to connect after $expect_out(seconds) seconds." - set result -1 - incr retries - if { $retries <= 2 } { - exp_continue - } - } - } - - send "\n\n\n" - expect { - "*$hostname*$hostname" { - verbose "Cleared reset messages" 1 - } - timeout { - warning "Couldn't clear reset messages" - set result 1 - } - } - - # load to operating system - set timeout 20 - set retries 0 - if {[xsh_load $env(SPECTRA)/${target_triplet}-os.o {-e sys_start_crt0}]!=0} { - perror "Couldn't load Spectra into target" - return -1 - } - - set timeout 10 - # start the OS running - set retries 0 - send "go\n" - expect { - -re ".*Multithreading on target darkstar.*$" { - verbose "Spectra has been started..." 1 - set result 0 - } - -re ".*reset on target.*$" { - verbose "Spectra was reset" - exp_continue - } - -re "\[0-9A-Fa-f\]+\[ 0x\]+\[0-9A-Fa-f\]+.*$" { - #send "\n" - exp_continue - } - -re "go\n" { exp_continue } - "$shell_prompt" { exp_continue } - timeout { - perror "Spectra wouldn't start" - set result -1 - incr retries - if { $retries <= 2 } { - send "go\r" - exp_continue - } - } - } - - if { $result < 0 } { - perror "Couldn't connect after $retries retries.\n" - return -1 - } else { - return $spawn_id - } -} - -# -# Downloads using the load command in Spectra -# arg - is a full path name to the file to download -# returns 1 if a spectra error occured, -# -1 if an internal error occured, -# 0 otherwise. -# -proc xsh_load { args } { - global verbose - global shell_id - global decimal - global hex - global shell_prompt - global expect_out - - set result 1 - set retries 0 - - if { [llength $args] == 1 } { - set opts "" - } else { - set opts [lindex $args 1] - } - set file [lindex $args 0] - - if ![file exists $file] { - perror "$file doesn't exist." - return 1 - } - - verbose "Downloading $file..." - - send -i $shell_id "load $opts $file\r" - set force 0 - expect { - -i $shell_id -re "\[0-9A-Fa-f\]+\[ 0x\]+\[0-9A-Fa-f\]+\r\n" { - set timeout 1 - send "dout\n" - while $force<2 { - expect { - "dout*undefined kernel symbol*$shell_prompt" { - verbose "Attempted to flush I/O buffers" 1 - } - timout { - incr force - flush stdout - } - } - } - set timeout 20 - exp_continue - } - -i $shell_id "load $opts $file*\r" { - verbose "Loading a.out..." - exp_continue - } - -i $shell_id "Warm reset on target*\n" { - verbose "Spectra did a warm reset" - exp_continue - } - -i $shell_id "Cold reset on target*\n" { - verbose "Spectra did a cold reset" - exp_continue - } - -i $shell_id "loading a.out*\r" { - verbose "Loading a.out..." - exp_continue - } - -i $shell_id "reading symbols*\r" { - verbose "Reading symbols..." - exp_continue - } - -i $shell_id "defining symbols*\r" { - verbose "defining symbols..." - exp_continue - } - -i $shell_id "*loading image*\r" { - verbose "Loading image..." - exp_continue - } - -i $shell_id -re ".*bytes loaded:.*$decimal.*$" { - verbose "$expect_out(buffer)" - exp_continue - } - -i $shell_id "*loading done*\r" { - verbose "Loading done..." - exp_continue - } - -i $shell_id "*setting PC*\r" { - verbose "Setting PC..." - exp_continue - } - -i $shell_id "*resolving symbols*\r" { - verbose "Resolving symbols..." - exp_continue - } - -i $shell_id -re ".*load module id = $decimal.*$" { - verbose "" - } - } - -i $shell_id -re ".*load: undefined symbols.*$" { - perror "undefined symbols, make sure os is loaded and running" - set result -1 - } - -i $shell_id "$shell_prompt" { - set result 0 - exp_continue - } - -i $shell_id "load: no default target" { - perror "default target isn't set" - return -1 - } - -i $shell_id timeout { - perror "Timed out trying to download after $expect_out(seconds) seconds." - incr retries - set result 1 - if { $retries <= 2 } { - exp_continue - } - } - } - - set timeout 10 - if [info exists expect_out(buffer)] { - send_log $expect_out(buffer) - } - return $result -} - -# -# Exit the remote shell -# -proc xsh_exit { shell_id } { - global verbose - global connectmode - global targetname - global shell_prompt - global shell_id - - send -i $shell_id "exit\n" - - verbose "Exiting shell." - set shell_id 0 - return 0 -} - - - - diff --git a/contrib/bluegnu2.0.3/lib/vxworks.exp b/contrib/bluegnu2.0.3/lib/vxworks.exp deleted file mode 100644 index e412ab9..0000000 --- a/contrib/bluegnu2.0.3/lib/vxworks.exp +++ /dev/null @@ -1,265 +0,0 @@ -# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -# -# set target variables only if needed. -# -global targetname -global connectmode -global env -global checktask - -if ![info exists targetname] { - if [info exists env(TARGETNAME)] { - set targetname $env(TARGETNAME) - } else { - puts stderr "ERROR: Need a target name for the vxworks board." - puts stderr " Use the --name option\n" - exit 1 - } -} - -# The default connect program to use. -if ![info exists connectmode] { - set connectmode "telnet" - warning "Using default of $connectmode for target communication." -} - -if ![info exists checktask] { - set checktask "fp" -} - -# -# Compute a path to vxworks' value for it -# -# We use a default ftp device called "filesys" to load files from. -# This way it works without NFS. -# This proc may be overridden by the user. The typical thing to do is use -# a different name for the device, but it might also return a different path -# to PROG. -# -# ??? This is experimental. This kind of thing can't be specified on the -# command line, but neither can specifying the kinds of transformations that -# one might want to do without actually passing tcl code at which point it -# makes just as much sense to stick it in a config file. -# -if { [info procs vxworks_transform_path] == "" } { - proc vxworks_transform_path { prog } { - return "filesys:$prog" - } -} - -# -# Load a file into vxworks -# -# The result is: -# 0 - success -# 1 - failed (eg: link failed so testcase should fail) -# -1 - unresolved (eg: timeout, bad passwd) -# -2 - unsupported (not used) -# -3 - untested (not used) -# -proc vxworks_ld { shell_id prog } { - global shell_prompt - global expect_out - global logname - global passwd - global decimal hex - - set timeout 100 ;# for this call only - set result -7 ;# -7 is a local value meaning "not done" - set tries 0 - set maxtries 3 - - set prog [vxworks_transform_path $prog] - - if { $passwd != "" } { - send -i $shell_id "iam \"$logname\",\"$passwd\"\r" - } else { - send -i $shell_id "iam \"$logname\"\r" - } - expect { - -i $shell_id "iam*value = 0 = 0x0*$shell_prompt" { - verbose "Set default user." 2 - } - -i $shell_id timeout { - # ??? This is really an error. It's not clear whether `perror' - # or `warning' should be used here. There are *lots* of other - # cases like this. - perror "Couldn't set default user." - set result -1 - } - } - - # We always want to exit the program via the code at the end. - # If the load fails we want `expect_out' stored in the log and this - # saves duplicating that code. - - while { $result == -7 } { - verbose "Loading $prog into vxworks." - send -i $shell_id "ld < $prog\r" - incr tries - expect { - -i $shell_id "Login incorrect." { - if { $tries == $maxtries } { - perror "Login failed." - set result -1 - break - } - if [string match "" $passwd] { - stty -echo - warning "Login failed for default user" - send_user "Type in password (for $logname) please: " - expect_user -re "(.*)\n" - send_user "\n" - set passwd "$expect_out(1,string)" - stty echo - } - send -i $shell_id "iam \"$logname\",\"$passwd\"\r" - expect { - -i $shell_id "iam*value = 0 = 0x0*$shell_prompt " { - verbose "Set new user and password" 2 - } - -i $shell_id timeout { - perror "Couldn't set user and password (timed out)." - set result -1 - } - } - } - -i $shell_id -re "USER.*command not understood" { - perror "Need to set the user and password." - set result -1 - } - -i $shell_id -re "ld <.*undefined symbol:.*$shell_prompt $" { - # This is an error in the testcase, don't call perror. - warning "Undefined symbol, $prog not loaded." - set result 1 - } - -i $shell_id -re "ld <.*can't open input.*$shell_prompt $" { - perror "Can't access $prog." - set result -1 - } - -i $shell_id -re "ld <.*value = ${decimal} = ${hex}.*$shell_prompt $" { - verbose "Loaded $prog into vxworks." - set result 0 - } - -i $shell_id -re "ld <\[^\r\]*\r(.*)$shell_prompt $" { - warning "Load failed: $expect_out(1,string)" - set result -1 - } - -i $shell_id timeout { - warning "Timed out trying load $prog." - set result -1 - } - } - } - - if { $result && [info exists expect_out(buffer)] } { - send_log "$expect_out(buffer)" - } - return $result -} - -# -# Start a thread (process) executing -# -# The result is: -# 0 - success -# 1 - failed (eg: testcase aborted) -# -1 - unresolved (eg: timeout) -# -2 - unsupported (not used) -# -3 - untested (not used) -# -proc vxworks_spawn { shell_id function } { - global shell_prompt - global checktask - - # There isn't a command to wait for a thread to finish, so we have to keep - # polling. Bummer. - - set timeout 20 ;# for this call only - - send -i $shell_id "sp $function\r" - expect { - -i $shell_id -re "sp $function.*task spawned:.*name = (\[a-z0-9\]+).*value = (\[0-9\]+).*$shell_prompt $" { - set name $expect_out(1,string) - set value $expect_out(2,string) - verbose "$function running, name $name, value $value" - set tries 0 - set maxtries 100 ;# Don't hang on testcases with infinite loops. - set result -7 ;# "not done" - while { $result == -7 } { - # Get the task's frame pointer. - # VxWorks will return -1 if the task isn't running. - send -i $shell_id "$checktask \"$name\"\r" - incr tries - expect { - -i $shell_id -re "task $value - aborted.*$shell_prompt $" { - # FIXME: It's not clear we'll ever get here. - verbose "$function aborted" - set result 1 - } - -i $shell_id -re ".*AbOrT.*$shell_prompt $" { - # This requires support from the environment to - # redefine abort() to print this. - verbose "$function aborted" - set result 1 - } - # This is here to try to cope with apparently flaky h/w. - -i $shell_id -re ".*Bus Error.*$" { - # This is potentially an error in the testcase, - # don't call perror. - warning "Bus Error." - # Delete the task (it's still around). - send -i $shell_id "td $name\r" - set result 1 - } - -i $shell_id -re "value = \[0-9\]+.*$shell_prompt $" { - # Task is still running. - if { $tries == $maxtries } { - warning "$function started, won't stop" - set result -1 - } else { - catch "exec sleep 1" - } - } - -i $shell_id -re "value = -1.*$shell_prompt $" { - # Task is no longer running. - set result 0 - } - -i $shell_id timeout { - warning "$function started, can't determine status (timed out)" - set result -1 - } - } - } - } - -i $shell_id timeout { - warning "Couldn't run $function (timed out)" - set result -1 - } - } - - if { $result && [info exists expect_out(buffer)] } { - send_log "$expect_out(buffer)" - } - return $result -} diff --git a/contrib/bluegnu2.0.3/mkinstalldirs b/contrib/bluegnu2.0.3/mkinstalldirs deleted file mode 100755 index 0801ec2..0000000 --- a/contrib/bluegnu2.0.3/mkinstalldirs +++ /dev/null @@ -1,32 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Last modified: 1994-03-25 -# Public domain - -errstatus=0 - -for file in ${1+"$@"} ; do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d in ${1+"$@"} ; do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" 1>&2 - mkdir "$pathcomp" || errstatus=$? - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# mkinstalldirs ends here diff --git a/contrib/bluegnu2.0.3/runtest b/contrib/bluegnu2.0.3/runtest deleted file mode 100755 index a80d1ea..0000000 --- a/contrib/bluegnu2.0.3/runtest +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/sh -# -# runtest -- basically all this script does is find the proper expect shell -# and then -# run BlueGnu. -# - -# -# Get the execution path to this script and the current directory. -# -execpath=`echo ${0-.} | sed -e 's@/[^/]*$@@'` -# rootme=`pwd` - -# -# get the name by which bluegnu was invoked and extract the config triplet -# -bluegnu=`echo ${0-.} | sed -e 's@^.*/@@'` -target=`echo $bluegnu | sed -e 's/-runtest$//'` -if [ "$target" != runtest ] ; then - target="--target ${target}" -else - target="" -fi - -# -# Find the right expect binary to use. If a variable EXPECT exists, -# it takes precedence over all other tests. Otherwise look for a freshly -# built one, and then use one in the path. -# -if [ x"$EXPECT" != x ] ; then - expectbin=$EXPECT -else - if [ -x "$execpath/expect" ] ; then - expectbin=$execpath/expect - else - expectbin=expect - fi -fi - -# just to be safe... -if [ -z "$expectbin" ]; then - echo "ERROR: No expect shell found" - exit 1 -fi - -# -# Extract a few options from the option list. -# -verbose=0 -debug="" -for a in "$@" ; do - case $a in - -v|--v|-verb*|--verb*) verbose=`expr $verbose + 1`;; - -D0|--D0) debug="-D 0" ;; - -D1|--D1) debug="-D 1" ;; - esac -done - -if expr $verbose \> 0 > /dev/null ; then - echo Expect binary is $expectbin -fi - -# -# find runtest.exp. First we look in it's installed location, otherwise -# start if from the source tree. -# -for i in $execpath/../lib/bluegnu $execpath ; do - if expr $verbose \> 1 > /dev/null ; then - echo Looking for $i/runtest.exp. - fi - if [ -f $i/runtest.exp ] ; then - runpath=$i - if expr $verbose \> 0 > /dev/null ; then - echo Using $i/runtest.exp as main test driver - fi - fi -done -# check for an environment variable -if [ x"$BLUEGNULIBS" != x ] ; then - runpath=$BLUEGNULIBS - if expr $verbose \> 0 > /dev/null ; then - echo Using $BLUEGNULIBS/runtest.exp as main test driver - fi -fi -if [ x"$runpath" = x ] ; then - echo "ERROR: runtest.exp does not exist." - exit 1 -fi - -exec $expectbin $debug -- $runpath/runtest.exp $target ${1+"$@"} diff --git a/contrib/bluegnu2.0.3/runtest.exp b/contrib/bluegnu2.0.3/runtest.exp deleted file mode 100755 index e9a7464..0000000 --- a/contrib/bluegnu2.0.3/runtest.exp +++ /dev/null @@ -1,1146 +0,0 @@ -# Test Framework Driver -# Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. -# Copyright (C) 1998 jotOmega dsc, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# - -# This file was written by Rob Savoye. (rob@welcomehome.org) -# and modified by Jan-Willem Neurdenburg. (neurdenburgj@acm.org) - -set frame_version 1.3 -if ![info exists argv0] { - send_error "Must use a version of Expect greater than 5.0\n" - exit 1 -} - -# -# trap some signals so we know whats happening. These definitions are only -# temporary until we read in the library stuff -# -trap { send_user "\nterminated\n"; exit 1 } SIGTERM -trap { send_user "\ninterrupted by user\n"; exit 1 } SIGINT -trap { send_user "\nsegmentation violation\n"; exit 1 } SIGSEGV -trap { send_user "\nsigquit\n"; exit 1 } SIGQUIT - -# -# Initialize a few global variables used by all tests. -# `reset_vars' resets several of these, we define them here to document their -# existence. In fact, it would be nice if all globals used by some interface -# of bluegnu proper were documented here. -# -# Keep these all lowercase. Interface variables used by the various -# testsuites (eg: the gcc testsuite) should be in all capitals -# (eg: TORTURE_OPTIONS). -# -set mail_logs 0 ;# flag for mailing of summary and diff logs -set psum_file "latest" ;# file name of previous summary to diff against -set testcnt 0 ;# number of testcases that ran -set passcnt 0 ;# number of testcases that passed -set failcnt 0 ;# number of testcases that failed -set xfailcnt 0 ;# number of testcases expected to fail which did -set xpasscnt 0 ;# number of testcases that passed unexpectedly -set warncnt 0 ;# number of warnings -set errcnt 0 ;# number of errors -set unsupportedcnt 0 ;# number of testcases that can't run -set unresolvedcnt 0 ;# number of testcases whose result is unknown -set untestedcnt 0 ;# number of untested testcases -set exit_status 0 ;# exit code returned by this program -set xfail_flag 0 -set xfail_prms 0 -set sum_file "" ;# name of the file that contains the summary log -set base_dir "" ;# the current working directory -set logname "" ;# the users login name -set passwd "" -set prms_id 0 ;# GNATS prms id number -set bug_id 0 ;# optional bug id number -set dir "" ;# temp variable for directory names -set srcdir "." ;# source directory containing the test suite -set ignoretests "" ;# list of tests to not execute -set objdir "." ;# directory where test case binaries live -set makevars "" ;# FIXME: Is this used anywhere? -set reboot 0 -set configfile site.exp ;# (local to this file) -set multipass "" ;# list of passes and var settings -set target_abbrev "unix" ;# environment (unix, sim, vx, etc.). -set errno ""; ;# -# -# set communication parameters here -# -set netport "" -set targetname "" -set connectmode "" -set serialport "" -set baud "" -# -# These describe the host and target environments. -# -set build_triplet "" ;# type of architecture to run tests on -set build_os "" ;# type of os the tests are running on -set build_vendor "" ;# vendor name of the OS or workstation the test are running on -set build_cpu "" ;# type of the cpu tests are running on -set host_triplet "" ;# type of architecture to run tests on, sometimes remotely -set host_os "" ;# type of os the tests are running on -set host_vendor "" ;# vendor name of the OS or workstation the test are running on -set host_cpu "" ;# type of the cpu tests are running on -set target_triplet "" ;# type of architecture to run tests on, final remote -set target_os "" ;# type of os the tests are running on -set target_vendor "" ;# vendor name of the OS or workstation the test are running on -set target_cpu "" ;# type of the cpu tests are running on -set target_alias "" ;# standard abbreviation of target - -# -# some convenience abbreviations -# -if ![info exists hex] { - set hex "0x\[0-9A-Fa-f\]+" -} -if ![info exists decimal] { - set decimal "\[0-9\]+" -} - -# -# set the base dir (current working directory) -# -set base_dir [pwd] - -# -# These are tested in case they are not initialized in $configfile. They are -# tested here instead of the init module so they can be overridden by command -# line options. -# -if ![info exists all_flag] { - set all_flag 0 -} -if ![info exists binpath] { - set binpath "" -} -if ![info exists debug] { - set debug 0 -} -if ![info exists options] { - set options "" -} -if ![info exists outdir] { - set outdir "." -} -if ![info exists reboot] { - set reboot 1 -} -if ![info exists all_runtests] { - # FIXME: Can we create an empty array? - # we don't have to (JWN 20 March 1998) - #set all_runtests(empty) "" -} -if ![info exists tracelevel] { - set tracelevel 0 -} -if ![info exists verbose] { - set verbose 0 -} - -# -# verbose [-n] [-log] [--] message [level] -# -# Print MESSAGE if the verbose level is >= LEVEL. -# The default value of LEVEL is 1. -# "-n" says to not print a trailing newline. -# "-log" says to add the text to the log file even if it won't be printed. -# Note that the apparent behaviour of `send_user' dictates that if the message -# is printed it is also added to the log file. -# Use "--" if MESSAGE begins with "-". -# -# This is defined here rather than in framework.exp so we can use it -# while still loading in the support files. -# -proc verbose { args } { - global verbose - set newline 1 - set logfile 0 - - set i 0 - if { [string index [lindex $args 0] 0] == "-" } { - for { set i 0 } { $i < [llength $args] } { incr i } { - if { [lindex $args $i] == "--" } { - incr i - break - } elseif { [lindex $args $i] == "-n" } { - set newline 0 - } elseif { [lindex $args $i] == "-log" } { - set logfile 1 - } elseif { [string index [lindex $args $i] 0] == "-" } { - clone_output "ERROR: verbose: illegal argument: [lindex $args $i]" - return - } else { - break - } - } - if { [llength $args] == $i } { - clone_output "ERROR: verbose: nothing to print" - return - } - } - - set level 1 - if { [llength $args] > $i + 1 } { - set level [lindex $args [expr $i+1]] - } - set message [lindex $args $i] - - if { $verbose >= $level } { - # There is no need for the "--" argument here, but play it safe. - # We assume send_user also sends the text to the log file (which - # appears to be the case though the docs aren't clear on this). - if { $newline } { - send_user -- "$message\n" - } else { - send_user -- "$message" - } - } elseif { $logfile } { - if { $newline } { - send_log "$message\n" - } else { - send_log "$message" - } - } -} - -# -# Transform a tool name to get the installed name. -# target_triplet is the canonical target name. target_alias is the -# target name used when configure was run. -# -proc transform { name } { - global target_triplet - global target_alias - global host_triplet - - if [string match $target_triplet $host_triplet] { - return $name - } - if [string match "native" $target_triplet] { - return $name - } - if [string match "" $target_triplet] { - return $name - } else { - set tmp ${target_alias}-${name} - verbose "Transforming $name to $tmp" - return $tmp - } -} - -# -# findfile arg0 [arg1] [arg2] -# -# Find a file and see if it exists. If you only care about the false -# condition, then you'll need to pass a null "" for arg1. -# arg0 is the filename to look for. If the only arg, -# then that's what gets returned. If this is the -# only arg, then if it exists, arg0 gets returned. -# if it doesn't exist, return only the prog name. -# arg1 is optional, and it's what gets returned if -# the file exists. -# arg2 is optional, and it's what gets returned if -# the file doesn't exist. -# -proc findfile { args } { - # look for the file - verbose "Seeing if [lindex $args 0] exists." 2 - if [file exists [lindex $args 0]] { - if { [llength $args] > 1 } { - verbose "Found file, returning [lindex $args 1]" - return [lindex $args 1] - } else { - verbose "Found file, returning [lindex $args 0]" - return [lindex $args 0] - } - } else { - if { [llength $args] > 2 } { - verbose "Didn't find file, returning [lindex $args 2]" - return [lindex $args 2] - } else { - verbose "Didn't find file, returning [file tail [lindex $args 0]]" - return [transform [file tail [lindex $args 0]]] - } - } -} - -# -# load_file [-1] [--] file1 [ file2 ... ] -# -# Utility to source a file. All are sourced in order unless the flag "-1" -# is given in which case we stop after finding the first one. -# The result is 1 if a file was found, 0 if not. -# If a tcl error occurs while sourcing a file, we print an error message -# and exit. -# -# ??? Perhaps add an optional argument of some descriptive text to add to -# verbose and error messages (eg: -t "library file" ?). -# -proc load_file { args } { - set i 0 - set only_one 0 - if { [lindex $args $i] == "-1" } { - set only_one 1 - incr i - } - if { [lindex $args $i] == "--" } { - incr i - } - - set found 0 - foreach file [lrange $args $i end] { - verbose "Looking for $file" 2 - if [file exists $file] { - set found 1 - verbose "Found $file" - if { [catch "uplevel #0 source $file"] == 1 } { - send_error "ERROR: tcl error sourcing $file.\n" - global errorInfo - if [info exists errorInfo] { - send_error "$errorInfo\n" - } - exit 1 - } - if $only_one { - break - } - } - } - return $found -} - -# -# Parse the arguments the first time looking for these. We will ultimately -# parse them twice. Things are complicated because: -# - we want to parse --verbose early on -# - we don't want config files to override command line arguments -# (eg: $base_dir/$configfile vs --host/--target; $BLUEGNU vs --baud, -# --connectmode, and --name) -# - we need some command line arguments before we can process some config files -# (eg: --objdir before $objdir/$configfile, --host/--target before $BLUEGNU) -# The use of `arg_host_triplet' and `arg_target_triplet' lets us avoid parsing -# the arguments three times. -# - -set arg_host_triplet "" -set arg_target_triplet "" -set arg_build_triplet "" -set argc [ llength $argv ] -for { set i 0 } { $i < $argc } { incr i } { - set option [lindex $argv $i] - - # make all options have two hyphens - switch -glob -- $option { - "--*" { - } - "-*" { - set option "-$option" - } - } - - # split out the argument for options that take them - switch -glob -- $option { - "--*=*" { - set optarg [lindex [split $option =] 1] - } - "--ba*" - - "--bu*" - - "--co*" - - "--ho*" - - "--i*" - - "--m*" - - "--n*" - - "--ob*" - - "--ou*" - - "--sr*" - - "--st*" - - "--ta*" - - "--to*" { - incr i - set optarg [lindex $argv $i] - } - } - - switch -glob -- $option { - "--bu*" { # (--build) the build host configuration - set arg_build_triplet $optarg - continue - } - - "--ho*" { # (--host) the host configuration - set arg_host_triplet $optarg - continue - } - - "--ob*" { # (--objdir) where the test case object code lives - set objdir $optarg - continue - } - - "--sr*" { # (--srcdir) where the testsuite source code lives - set srcdir $optarg - continue - } - - "--ta*" { # (--target) the target configuration - set arg_target_triplet $optarg - continue - } - - "--to*" { # (--tool) specify tool name - set tool $optarg - continue - } - - "--v" - - "--verb*" { # (--verbose) verbose output - incr verbose - continue - } - } -} -verbose "Verbose level is $verbose" - -# -# get the users login name -# -if [string match "" $logname] { - if [info exists env(USER)] { - set logname $env(USER) - } else { - if [info exists env(LOGNAME)] { - set logname $env(LOGNAME) - } else { - # try getting it with whoami - catch "set logname [exec whoami]" tmp - if [string match "*couldn't find*to execute*" $tmp] { - # try getting it with who am i - unset tmp - catch "set logname [exec who am i]" tmp - if [string match "*Command not found*" $tmp] { - send_user "ERROR: couldn't get the users login name\n" - set logname "Unknown" - } else { - set logname [lindex [split $logname " !"] 1] - } - } - } - } -} -verbose "Login name is $logname" - -# -# Begin sourcing the config files. -# All are sourced in order. -# -# Search order: -# $HOME/.bluegnurc -> $base_dir/$configfile -> $objdir/$configfile -# -> installed -> $BLUEGNU -# -# ??? It might be nice to do $HOME last as it would allow it to be the -# ultimate override. Though at present there is still $BLUEGNU. -# -# For the normal case, we rely on $base_dir/$configfile to set -# host_triplet and target_triplet. -# - -load_file ~/.bluegnurc $base_dir/$configfile - -# -# If objdir didn't get set in $base_dir/$configfile, set it to $base_dir. -# Make sure we source $objdir/$configfile in case $base_dir/$configfile doesn't -# exist and objdir was given on the command line. -# - -if [expr [string match "." $objdir] || [string match $srcdir $objdir]] { - set objdir $base_dir -} else { - load_file $objdir/$configfile -} -verbose "Using test sources in $srcdir" -verbose "Using test binaries in $objdir" - -set execpath [file dirname $argv0] -set libdir [file dirname $execpath]/bluegnu -if [info exists env(BLUEGNULIBS)] { - set libdir $env(BLUEGNULIBS) -} -verbose "Using $libdir to find libraries" - -# -# If the host or target was given on the command line, override the above -# config files. We allow $BLUEGNU to massage them though in case it would -# ever want to do such a thing. -# -if { $arg_host_triplet != "" } { - set host_triplet $arg_host_triplet -} -if { $arg_build_triplet != "" } { - set build_triplet $arg_build_triplet -} - -# if we only specify --host, then that must be the build machne too, and we're -# stuck using the old functionality of a simple cross test -if [expr { $build_triplet == "" && $host_triplet != "" } ] { - set build_triplet $host_triplet -} -# if we only specify --build, then we'll use that as the host too -if [expr { $build_triplet != "" && $host_triplet == "" } ] { - set host_triplet $build_triplet -} -unset arg_host_triplet arg_build_triplet - -# -# If the build machine type hasn't been specified by now, use config.guess. -# - -if [expr { $build_triplet == "" && $host_triplet == ""} ] { - # find config.guess - foreach dir "$libdir $libdir/.. $srcdir/.. $srcdir/../.." { - verbose "Looking for $dir" 2 - if [file exists $dir/config.guess] { - set config_guess $dir/config.guess - verbose "Found $dir/config.guess" - break - } - } - - # get the canonical config name - if ![info exists config_guess] { - send_error "ERROR: Couldn't guess configuration.\n" - exit 1 - } - catch "exec $config_guess" build_triplet - case $build_triplet in { - { "No uname command or uname output not recognized" "Unable to guess system type" } { - verbose "WARNING: Uname output not recognized" - set build_triplet unknown - } - } - verbose "Assuming build host is $build_triplet" - if { $host_triplet == "" } { - set host_triplet $build_triplet - } - -} - -# -# Figure out the target. If the target hasn't been specified, then we have to assume -# we are native. -# -if { $arg_target_triplet != "" } { - set target_triplet $arg_target_triplet -} elseif { $target_triplet == "" } { - set target_triplet $build_triplet - verbose "Assuming native target is $target_triplet" 2 -} -unset arg_target_triplet -# -# Default target_alias to target_triplet. -# -if ![info exists target_alias] { - set target_alias $target_triplet -} - -# -# Find and load the global config file if it exists. -# The global config file is used to set the connect mode and other -# parameters specific to each particular target. -# These files assume the host and target have been set. -# - -if { [load_file -- $libdir/$configfile] == 0 } { - # If $BLUEGNU isn't set either then there isn't any global config file. - # Warn the user as there really should be one. - if { ! [info exists env(BLUEGNU)] } { - send_error "WARNING: Couldn't find the global config file.\n" - } -} - -if [info exists env(BLUEGNU)] { - if { [load_file -- $env(BLUEGNU)] == 0 } { - # It may seem odd to only issue a warning if there isn't a global - # config file, but issue an error if $BLUEGNU is erroneously defined. - # Since $BLUEGNU is set there is *supposed* to be a global config file, - # so the current behaviour seems reasonable. - send_error "ERROR: global config file $env(BLUEGNU) not found.\n" - exit 1 - } -} - -# -# parse out the config parts of the triplet name -# - -# build values -if { $build_cpu == "" } { - regsub -- "-.*-.*" ${build_triplet} "" build_cpu -} -if { $build_vendor == "" } { - regsub -- "^\[a-z0-9\]*-" ${build_triplet} "" build_vendor - regsub -- "-.*" ${build_vendor} "" build_vendor -} -if { $build_os == "" } { - regsub -- ".*-.*-" ${build_triplet} "" build_os -} - -# host values -if { $host_cpu == "" } { - regsub -- "-.*-.*" ${host_triplet} "" host_cpu -} -if { $host_vendor == "" } { - regsub -- "^\[a-z0-9\]*-" ${host_triplet} "" host_vendor - regsub -- "-.*" ${host_vendor} "" host_vendor -} -if { $host_os == "" } { - regsub -- ".*-.*-" ${host_triplet} "" host_os -} - -# target values -if { $target_cpu == "" } { - regsub -- "-.*-.*" ${target_triplet} "" target_cpu -} -if { $target_vendor == "" } { - regsub -- "^\[a-z0-9\]*-" ${target_triplet} "" target_vendor - regsub -- "-.*" ${target_vendor} "" target_vendor -} -if { $target_os == "" } { - regsub -- ".*-.*-" ${target_triplet} "" target_os -} - -# -# Parse the command line arguments. -# - -set argc [ llength $argv ] -for { set i 0 } { $i < $argc } { incr i } { - set option [ lindex $argv $i ] - - # make all options have two hyphens - switch -glob -- $option { - "--*" { - } - "-*" { - set option "-$option" - } - } - - # split out the argument for options that take them - switch -glob -- $option { - "--*=*" { - set optarg [lindex [split $option =] 1] - } - "--ba*" - - "--bu*" - - "--co*" - - "--ho*" - - "--i*" - - "--m*" - - "--n*" - - "--ob*" - - "--ou*" - - "--sr*" - - "--st*" - - - "--ta*" - - "--to*" { - incr i - set optarg [lindex $argv $i] - } - } - - switch -glob -- $option { - "--V*" - - "--vers*" { # (--version) version numbers - send_user "Expect version is\t[exp_version]\n" - send_user "Tcl version is\t\t[ info tclversion ]\n" - send_user "Framework version is\t$frame_version\n" - exit - } - - "--v*" { # (--verbose) verbose output - # Already parsed. - continue - } - - "--bu*" { # (--build) the build host configuration - # Already parsed (and don't set again). Let $BLUEGNU rename it. - continue - } - - "--ho*" { # (--host) the host configuration - # Already parsed (and don't set again). Let $BLUEGNU rename it. - continue - } - - "--ta*" { # (--target) the target configuration - # Already parsed (and don't set again). Let $BLUEGNU rename it. - continue - } - - "--a*" { # (--all) print all test output to screen - set all_flag 1 - verbose "Print all test output to screen" - continue - } - - "--ba*" { # (--baud) the baud to use for a serial line - set baud $optarg - verbose "The baud rate is now $baud" - continue - } - - "--co*" { # (--connect) the connection mode to use - set connectmode $optarg - verbose "Comm method is $connectmode" - continue - } - - "--d*" { # (--debug) expect internal debugging - if [file exists ./dbg.log] { - catch "exec rm -f ./dbg.log" - } - if { $verbose > 2 } { - exp_internal -f dbg.log 1 - } else { - exp_internal -f dbg.log 0 - } - verbose "Expect Debugging is ON" - continue - } - - "--D[01]" { # (-Debug) turn on Tcl debugger - verbose "Tcl debugger is ON" - continue - } - - "--m*" { # (--mail) mail the output - set mailing_list $optarg - set mail_logs 1 - verbose "Mail results to $mailing_list" - continue - } - - "--r*" { # (--reboot) reboot the target - set reboot 1 - verbose "Will reboot the target (if supported)" - continue - } - - "--ob*" { # (--objdir) where the test case object code lives - # Already parsed, but parse again to make sure command line - # options override any config file. - set objdir $optarg - verbose "Using test binaries in $objdir" - continue - } - - "--ou*" { # (--outdir) where to put the output files - set outdir $optarg - verbose "Test output put in $outdir" - continue - } - - "*.exp" { # specify test names to run - set all_runtests($option) "" - verbose "Running only tests $option" - continue - } - - "*.exp=*" { # specify test names to run - set j [string first "=" $option] - set tmp [list [string range $option 0 [expr $j - 1]] \ - [string range $option [expr $j + 1] end]] - set all_runtests([lindex $tmp 0]) [lindex $tmp 1] - verbose "Running only tests $option" - unset tmp j - continue - } - - "--i*" { # (--ignore) specify test names to exclude - set ignoretests $optarg - verbose "Ignoring test $ignoretests" - continue - } - - "--sr*" { # (--srcdir) where the testsuite source code lives - # Already parsed, but parse again to make sure command line - # options override any config file. - - set srcdir $optarg - continue - } - - "--st*" { # (--strace) expect trace level - set tracelevel $optarg - strace $tracelevel - verbose "Source Trace level is now $tracelevel" - continue - } - - "--n*" { # (--name) the target's name - # ??? `targetname' is a confusing word to use here. - set targetname $optarg - verbose "Target name is now $targetname" - continue - } - - "--to*" { # (--tool) specify tool name - set tool $optarg - verbose "Testing $tool" - continue - } - - "[A-Z]*=*" { # process makefile style args like CC=gcc, etc... - if [regexp "^(\[A-Z_\]+)=(.*)$" $option junk var val] { - if {0 > [lsearch -exact $makevars $var]} { - lappend makevars "$var" - set $var $val - } else { - set $var [concat [set $var] $val] - } - verbose "$var is now [set $var]" - #append makevars "set $var $val;" ;# FIXME: Used anywhere? - unset junk var val - } else { - send_error "Illegal variable specification:\n" - send_error "$option\n" - } - continue - } - - "--he*" { # (--help) help text - send_user "USAGE: bluegnu \[options...\]\n" - send_user "\t--all (-a)\t\tPrint all test output to screen\n" - send_user "\t--baud (-ba)\t\tThe baud rate\n" - send_user "\t--build \[string\]\t\tThe canonical config name of the build machine\n" - send_user "\t--host \[string\]\t\tThe canonical config name of the host machine\n" - send_user "\t--target \[string\]\tThe canonical config name of the target board\n" - send_user "\t--connect (-co)\t\[type\]\tThe type of connection to use\n" - send_user "\t--debug (-de)\t\tSet expect debugging ON\n" - send_user "\t--help (-he)\t\tPrint help text\n" - send_user "\t--ignore \[name(s)\]\tThe names of specific tests to ignore\n" - send_user "\t--mail \[name(s)\]\tWho to mail the results to\n" - send_user "\t--name \[name\]\t\tThe hostname of the target board\n" - send_user "\t--objdir \[name\]\t\tThe test suite binary directory\n" - send_user "\t--outdir \[name\]\t\tThe directory to put logs in\n" - send_user "\t--reboot \[name\]\t\tReboot the target (if supported)\n" - send_user "\t--srcdir \[name\]\t\tThe test suite source code directory\n" - send_user "\t--strace \[number\]\tSet expect tracing ON\n" - send_user "\t--tool\[name(s)\]\t\tRun tests on these tools\n" - send_user "\t--verbose (-v)\t\tEmit verbose output\n" - send_user "\t--version (-V)\t\tEmit all version numbers\n" - send_user "\t--D\[0-1\]\t\tTcl debugger\n" - send_user "\tscript.exp\[=arg(s)\]\tRun these tests only\n" - send_user "\tMakefile style arguments can also be used, ex. CC=gcc\n\n" - exit 0 - } - - default { - send_error "\nIllegal Argument \"$option\"\n" - send_error "try \"bluegnu --help\" for option list\n" - exit 1 - } - - } -} - -# -# check for a few crucial variables -# -if ![info exists tool] { - send_error "WARNING: No tool specified\n" - set tool "" -} - -# -# initialize a few Tcl variables to something other than their default -# -if { $verbose > 2 } { - log_user 1 -} else { - log_user 0 -} - -set timeout 10 - -# -# load_lib -- load a library by sourcing it -# -# If there a multiple files with the same name, stop after the first one found. -# The order is first look in the install dir, then in a parallel dir in the -# source tree, (up one or two levels), then in the current dir. -# -proc load_lib { file } { - global verbose libdir srcdir base_dir execpath tool - - # ??? We could use `load_file' here but then we'd lose the "library file" - # specific text in verbose and error messages. Worth it? - set found 0 - foreach dir "$libdir $libdir/lib [file dirname [file dirname $srcdir]]/bluegnu/lib $srcdir/lib . [file dirname [file dirname [file dirname $srcdir]]]/bluegnu/lib" { - verbose "Looking for library file $dir/$file" 2 - if [file exists $dir/$file] { - set found 1 - verbose "Loading library file $dir/$file" - if { [catch "uplevel #0 source $dir/$file"] == 1 } { - send_error "ERROR: tcl error sourcing library file $dir/$file.\n" - global errorInfo - if [info exists errorInfo] { - send_error "$errorInfo\n" - } - exit 1 - } - break - } - } - if { $found == 0 } { - send_error "ERROR: Couldn't find library file $file.\n" - exit 1 - } -} - -# -# load the testing framework libraries -# -load_lib utils.exp -load_lib framework.exp -load_lib debugger.exp -load_lib remote.exp -load_lib target.exp - -# -# open log files -# -open_logs - -# print the config info -clone_output "Test Run By $logname on [timestamp -format %c]" -if [is3way] { - clone_output "Target is $target_triplet" - clone_output "Host is $host_triplet" - clone_output "Build is $build_triplet" -} else { - if [isnative] { - clone_output "Native configuration is $target_triplet" - } else { - clone_output "Target is $target_triplet" - clone_output "Host is $host_triplet" - } -} - -clone_output "\n\t\t=== $tool tests ===\n" - -# -# Find the tool init file. This is in the config directory of the tool's -# testsuite directory. These used to all be named $target_abbrev-$tool.exp, -# but as the $tool variable goes away, it's now just $target_abbrev.exp. -# First we look for a file named with both the abbrev and the tool names. -# Then we look for one named with just the abbrev name. Finally, we look for -# a file called default, which is the default actions, as some tools could -# be purely host based. Unknown is mostly for error trapping. -# - -set found 0 -if ![info exists target_abbrev] { - set target_abbrev "unix" -} -foreach dir "${srcdir}/config ${srcdir}/../config ${srcdir}/../../config ${srcdir}/../../../config" { - foreach initfile "${target_abbrev}-${tool}.exp ${target_abbrev}.exp ${target_os}.exp default.exp unknown.exp" { - verbose "Looking for tool init file ${dir}/${initfile}" 2 - if [file exists ${dir}/${initfile}] { - set found 1 - verbose "Using ${dir}/${initfile} as tool init file." - if [catch "uplevel #0 source ${dir}/${initfile}"]==1 { - send_error "ERROR: tcl error sourcing tool init file ${dir}/${initfile}.\n" - if [info exists errorInfo] { - send_error "$errorInfo\n" - } - exit 1 - } - break - } - } - if $found { - break - } -} - -if { $found == 0 } { - send_error "ERROR: Couldn't find tool init file.\n" - exit 1 -} -unset found - -# -# Trap some signals so we know what's happening. These replace the previous -# ones because we've now loaded the library stuff. -# -if ![exp_debug] { - foreach sig "{SIGTERM {terminated}} \ - {SIGINT {interrupted by user}} \ - {SIGQUIT {interrupted by user}} \ - {SIGSEGV {segmentation violation}}" { - trap { send_error "Got a [trap -name] signal, [lindex $sig 1]\n"; \ - log_summary } [lindex $sig 0] - verbose "setting trap for [lindex $sig 0] to \"[lindex $sig 1]\"" 1 - } -} - -# -# main test execution loop -# - -if [info exists errorInfo] { - unset errorInfo -} -reset_vars -# FIXME: The trailing '/' is deprecated and will go away at some point. -# Do not assume $srcdir has a trailing '/'. -append srcdir "/" -# make sure we have only single path delimiters -regsub -all "//*" $srcdir "/" srcdir - -# If multiple passes requested, set them up. Otherwise prepare just one. -# The format of `MULTIPASS' is a list of elements containing -# "{ name var1=value1 ... }" where `name' is a generic name for the pass and -# currently has no other meaning. - -if { [info exists MULTIPASS] } { - set multipass $MULTIPASS -} -if { $multipass == "" } { - set multipass { "" } -} - -foreach pass $multipass { - # multipass_name is set for `record_test' to use (see framework.exp). - if { [lindex $pass 0] != "" } { - set multipass_name [lindex $pass 0] - clone_output "Running pass `$multipass_name' ..." - } else { - set multipass_name "" - } - set restore "" - foreach varval [lrange $pass 1 end] { - # FIXME: doesn't handle a=b=c. - set tmp [split $varval "="] - set var [lindex $tmp 0] - # Save previous value. - if [info exists $var] { - lappend restore "$var [list [eval concat \$$var]]" - } else { - lappend restore "$var" - } - # Handle "CFLAGS=$CFLAGS foo". - # FIXME: Do we need to `catch' this? - eval set $var \[concat [lindex $tmp 1]\] - verbose "$var is now [eval concat \$$var]" - unset tmp var - } - - # look for the top level testsuites. if $tool doesn't - # exist and there are no subdirectories in $srcdir, then - # we default to srcdir. - set test_top_dirs [lsort [getdirs ${srcdir} "$tool*"]] - if { ${test_top_dirs} == "" } { - set test_top_dirs ${srcdir} - } - verbose "Top level testsuite dirs are ${test_top_dirs}" 2 - foreach dir "${test_top_dirs}" { - foreach test_name [lsort [find ${dir} *.exp]] { - if { ${test_name} == "" } { - continue - } - # Ignore this one if asked to. - if ![string match "" ${ignoretests}] { - if { 0 <= [lsearch ${ignoretests} [file tail ${test_name}]]} { - continue - } - } - # Get the path after the $srcdir so we know the subdir we're in. - set subdir "" - regsub $srcdir [file dirname $test_name] "" subdir - if { "$srcdir" == "$subdir/" } { - set subdir "" - } - # Check to see if the range of tests is limited, - # set `runtests' to a list of two elements: the script name - # and any arguments ("" if none). - if { [array size all_runtests] > 0 } { - if { 0 > [lsearch [array names all_runtests] [file tail $test_name]]} { - continue - } - set runtests [list [file tail $test_name] $all_runtests([file tail $test_name])] - } else { - set runtests [list [file tail $test_name] ""] - } - clone_output "Running $test_name ..." - set prms_id 0 - set bug_id 0 - set test_result "" - if [file exists $test_name] { - if { [catch "uplevel #0 source $test_name"] == 1 } { - # We can't call `perror' here, it resets `errorInfo' - # before we want to look at it. Also remember that perror - # increments `errcnt'. If we do call perror we'd have to - # reset errcnt afterwards. - clone_output "ERROR: tcl error sourcing $test_name." - if [info exists errorInfo] { - clone_output "ERROR: $errorInfo" - unset errorInfo - } - } - } else { - # This should never happen, but maybe if the file got removed - # between the `find' above and here. - perror "$test_name does not exist." - # ??? This is a hack. We want to send a message to stderr and - # to the summary file (just like perror does), but we don't - # want the next testcase to get a spurious "unresolved" because - # errcnt != 0. Calling `clone_output' is also supposed to be a - # no-no (see the comments for clone_output). - set errcnt 0 - } - } - } - - # Restore the variables set by this pass. - foreach varval $restore { - if { [llength $varval] > 1 } { - verbose "Restoring [lindex $varval 0] to [lindex $varval 1]" 4 - set [lindex $varval 0] [lindex $varval 1] - } else { - verbose "Restoring [lindex $varval 0] to `unset'" 4 - unset [lindex $varval 0] - } - } -} - -# -# all done, cleanup -# -if { [info procs ${tool}_exit] != "" } { - if {[catch "${tool}_exit" tmp]} { - # ??? We can get away with calling `warning' here without ensuring - # `warncnt' isn't changed because we're about to exit. - warning "${tool}_exit failed:\n$tmp" - } -} - -log_summary diff --git a/contrib/bluegnu2.0.3/site.tmpl b/contrib/bluegnu2.0.3/site.tmpl deleted file mode 100644 index 9508c35..0000000 --- a/contrib/bluegnu2.0.3/site.tmpl +++ /dev/null @@ -1,307 +0,0 @@ -# -# site.tmpl -- Sample template for a global config file. -# NOTE: This file contains mostly site specific -# configuration data that is custom to Cygnus -# Support. You'll have to change most of the -# values to work at your site. -# Written by rob@welcomehome.org -# - -# -# transform -- transform a tool name to get the installed name. We only define -# this if there wasn't one. This was the global config file can -# override how the tool names are calculated. -# - -# -# uncomment this if you wish to redefine the transform procedure -# - -#if ![string match "transform" [info procs transform]] then { -# proc transform { name } { -# global target_triplet -# -# if [string match "" $target_triplet] then { -# return $name -# } else { -# return ${target_triplet}-$name -# } -# } -#} - -set noargs 0 -set noresults 0 -set nosignals 0 - -# -# Set default setting for all know targets -# -case "$target_triplet" in { - { "hppa*-*-proelf*" } { - - # By default we'll use the Winbond for testing, use the OKI - # only if explicitly asked for. - case "$target_triplet" in { - { "hppa*-oki-proelf*" } { - set target_abbrev hppro - set targetname op50n - set serialport hellcab:1024 - set netport {} - set baud 9600 - } - default { - set target_abbrev hppro - set targetname w89k - set serialport hellcab:1023 - set netport {} - set baud 9600 - } - } - - # Now stuff that's common to all proelf targets. - # We can't pass arguments or do IO with the PA boards, nor do we - # get status results or signals back from the board. - set noargs 1 - set noresults 1 - set nosignals 1 - set noinferiorio 1 - - # Disgusting hack because directories in libgloss don't - # necessarily match the value in target_cpu. - set target_cpu "pa" - - # The proelf targets are absurdly slow downloading, so we limit - # the number of tests we run on them - set TORTURE_OPTIONS [list \ - { -O0 -g } { -O2 } \ - { -O2 -fomit-frame-pointer -finline-functions -funroll-all-loops }] - - set target_info(target,name) $targetname - set target_info(target,ldflags) "-T$targetname.ld" - set target_info(target,config) "hppa1.1-hp-proelf" - set target_info(target,cflags) "-T$targetname.ld" - set target_info(target,connect) "" - set target_info(target,target) "" - set target_info(target,serial) $serialport - set target_info(target,netport) $netport - set target_info(target,baud) $baud - } - { "i386-*-aout" } { - set target_abbrev aout - set connectmode "" - set targetname "" - set netport "" - set serialport "" - set baud "" - } - { "m68k-mvme135-*" } { # Motorola MVME135 board running Bug monitor - set target_abbrev bug - set connectmode "telnet" - append targetname "s8" - append serialport "/dev/ttyr8" - append netport "termserv:90008" - append baud "9600" - append CFLAGS "-Tmvme135.ld" - append CXXFLAGS "-Tmvme135.ld" - } - { "m68k-idp-*" "m68k-rom68k-*" } { # Motorola IDP board running rom68k monitor - append target_abbrev idp - append connectmode "telnet" - append targetname "s12" - append serialport "/dev/tstty12" - append netport "termserv:900012" - append baud "9600" - append CFLAGS "-Tidp.ld" - append CXXFLAGS "-Tidp.ld" - } - { "m68k-*-aout" } { - append target_abbrev aout - append connectmode "" - append targetname "" - append netport "" - append serialport "" - append baud "" - } - { "m68k-est-coff" } { - append target_abbrev est - append connectmode telnet - append targetname est - append serialport /dev/ttyb - append netport "" - append baud 9600 - set noargs 1 - set noresults 1 - set nosignals 1 - append CFLAGS -Tidp.ld - append CXXFLAGS -Tidp.ld - } - { "m68k-cpu32bug-coff" } { - append target_abbrev cpu32bug - append connectmode telnet - append targetname cpu32bug - append serialport /dev/ttyb - append netport "" - append baud 9600 - set noargs 1 - set noresults 1 - set nosignals 1 - append CFLAGS -Tidp.ld - append CXXFLAGS -Tidp.ld - } - { "m68k-*-coff" } { - set target_abbrev rom68k - set connectmode telnet - set targetname rom68k - set serialport /dev/ttya - set netport "" - set baud 9600 - set noargs 1 - set noresults 1 - set nosignals 1 - set CFLAGS -Tidp.ld - set CXXFLAGS -Tidp.ld - } - { "i960-*-nindy" } { - append target_abbrev nind - append connectmode "" - append targetname "" - append netport "" - append serialport "" - append baud "" - } - { "m68*-*-vxworks" "m68*-vxworks" } { # Motorola MVME167 board running VxWorks - append target_abbrev vx - append connectmode "telnet" - append targetname "foobar" - append serialport "/dev/tstty16" - append netport "termserv:900016" - append baud "9600" - append CFLAGS "-r" - append CXXFLAGS "-r" - append LDFLAGS "-r" - } - { "m68*-*-spectra" "m68*-spectra-*" } { - append target_abbrev vrtx - append connectmode "" - append targetname "" - append netport "" - append serialport "" - append baud "" - } - { "sparc-*-vxworks" } { - append target_abbrev vx - append connectmode "" - append targetname "" - append netport "" - append serialport "" - append baud "" - append CFLAGS "-r" - append CXXFLAGS "-r" - append LDFLAGS "-r" - } - { "i960-*-vxworks" } { - append target_abbrev vx - append connectmode "telnet" - append targetname "barfoo" - append netport "" - append serialport "" - append baud "9600" - append CFLAGS "-r" - append CXXFLAGS "-r" - append LDFLAGS "-r" - } - { "a29k-*-udi" } { - append target_abbrev udi - append connectmode "mondfe" - append targetname "ser" - append netport "" - append serialport "" - append baud "" - } - { "a29k-isstip-*" } { - append target_abbrev itip - append connectmode "mondfe" - append targetname "isst" - append netport "" - append serialport "" - append baud "" - } - { "mips-idt-ecoff" } { - append target_abbrev mips - append connectmode "" - append targetname "" - append netport "" - append serialport "" - append baud "" - } - { "h8300*-*-*" } { - append target_abbrev sim - append connectmode "" - append targetname "" - append netport "" - append serialport "" - append baud "" - } - { "h8500*-*-*" } { - append target_abbrev sim - append connectmode "" - append targetname "" - append netport "" - append serialport "" - append baud "" - } - { "sh-*-*" } { - append target_abbrev sh - append connectmode "" - append targetname "" - append netport "" - append serialport "" - append baud "" - } - { "sparc-*-aout" } { - append target_abbrev aout - append connectmode "" - append targetname "" - append netport "" - append serialport "" - append baud "" - } - { "sparclite-*-*" } { - append target_abbrev slite - append connectmode "aload" - append targetname "" - append netport "" - append serialport "" - append baud "" - append CFLAGS "-Tex930" - append CXXFLAGS "" - } - { "sparclitefrwcompat-*-*" } { - append target_abbrev frwcom - append connectmode "" - append targetname "" - append netport "" - append serialport "" - append baud "" - } - default { - # For now only run default gdbserver framework for lynx cross - # targets in the future it should be the default for any cross - # targets not explicitly handled above. - if { $host_triplet != $target_triplet } then { - set target_abbrev gdbserver - set targetname extended-remote - append connectmode "" - append netport "" - append serialport "" - append baud "" - } else { - append target_abbrev unix - append connectmode "" - append targetname "" - append netport "" - append serialport "" - append baud "" - } - } -} diff --git a/contrib/bluegnu2.0.3/tcl-mode.el b/contrib/bluegnu2.0.3/tcl-mode.el deleted file mode 100644 index 90b3503..0000000 --- a/contrib/bluegnu2.0.3/tcl-mode.el +++ /dev/null @@ -1,2223 +0,0 @@ -;; tcl.el --- Tcl code editing commands for Emacs - -;; Copyright (C) 1994 Free Software Foundation, Inc. - -;; Maintainer: Tom Tromey -;; Author: Tom Tromey -;; Chris Lindblad -;; Keywords: languages tcl modes -;; Version: 1.49 - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 1, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - -;; HOW TO INSTALL: -;; Put the following forms in your .emacs to enable autoloading of Tcl -;; mode, and auto-recognition of ".tcl" files. -;; -;; (autoload 'tcl-mode "tcl" "Tcl mode." t) -;; (autoload 'inferior-tcl "tcl" "Run inferior Tcl process." t) -;; (setq auto-mode-alist (append '(("\\.tcl$" . tcl-mode)) auto-mode-alist)) -;; -;; If you plan to use the interface to the TclX help files, you must -;; set the variable tcl-help-directory-list to point to the topmost -;; directories containing the TclX help files. Eg: -;; -;; (setq tcl-help-directory-list '("/usr/local/lib/tclx/help")) -;; -;; Also you will want to add the following to your .emacs: -;; -;; (autoload 'tcl-help-on-word "tcl" "Help on Tcl commands" t) -;; -;; FYI a *very* useful thing to do is nroff all the Tk man pages and -;; put them in a subdir of the help system. -;; - -;;; Commentary: - -;; LCD Archive Entry: -;; tcl|Tom Tromey|tromey@busco.lanl.gov| -;; Major mode for editing Tcl| -;; 1995/12/07 18:27:47|1.49|~/modes/tcl.el.Z| - -;; CUSTOMIZATION NOTES: -;; * tcl-proc-list can be used to customize a list of things that -;; "define" other things. Eg in my project I put "defvar" in this -;; list. -;; * tcl-typeword-list is similar, but uses font-lock-type-face. -;; * tcl-keyword-list is a list of keywords. I've generally used this -;; for flow-control words. Eg I add "unwind_protect" to this list. -;; * tcl-type-alist can be used to minimally customize indentation -;; according to context. - -;; Change log: -;; tcl.el,v -;; Revision 1.49 1995/12/07 18:27:47 tromey -;; (add-log-tcl-defun): Don't use tcl-beginning-of-defun; just go to end -;; of line before searching. -;; -;; Revision 1.48 1995/12/07 18:18:21 tromey -;; (add-log-tcl-defun): Now uses tcl-beginning-of-defun. -;; -;; Revision 1.47 1995/08/22 17:49:45 tromey -;; (tcl-hilit): New function from "Chris Alfeld" -;; (tcl-mode): Call it -;; -;; Revision 1.46 1995/08/07 16:02:01 tromey -;; (tcl-do-auto-fill): Only fill past fill-column; for 19.29. -;; (tcl-auto-fill-mode): Use force-mode-line-update. -;; -;; Revision 1.45 1995/07/23 23:51:25 tromey -;; (tcl-word-no-props): New function. -;; (tcl-figure-type): Use it. -;; (tcl-current-word): Ditto. -;; -;; Revision 1.44 1995/07/23 20:26:47 tromey -;; Doc fixes. -;; -;; Revision 1.43 1995/07/17 19:59:49 tromey -;; (inferior-tcl-mode): Use modeline-process if it exists. -;; -;; Revision 1.42 1995/07/17 19:55:25 tromey -;; XEmacs currently must use tcl-internal-end-of-defun -;; -;; Revision 1.41 1995/07/14 21:54:56 tromey -;; Changes to make menus work in XEmacs. -;; From Mike Scheidler -;; -;; Revision 1.40 1995/07/11 03:13:15 tromey -;; (tcl-mode): Customize for new dabbrev. -;; -;; Revision 1.39 1995/07/09 21:58:03 tromey -;; (tcl-do-fill-paragraph): New function. -;; (tcl-mode): Set up for paragraph filling. -;; -;; Revision 1.38 1995/07/09 21:30:32 tromey -;; (tcl-mode): Fixes to 19.29 paragraph variables. -;; -;; Revision 1.37 1995/07/09 18:52:16 tromey -;; (tcl-do-auto-fill): Set fill-prefix. -;; -;; Revision 1.36 1995/07/09 01:07:57 tromey -;; (tcl-imenu-create-index-function): Work with imenu from Emacs 19.29 -;; -;; Revision 1.35 1995/06/27 20:12:00 tromey -;; (tcl-type-alist): More itcl changes. -;; -;; Revision 1.34 1995/06/27 20:06:05 tromey -;; More changes for itcl. -;; Bug fixes for Emacs 19.29. -;; -;; Revision 1.33 1995/06/27 20:01:29 tromey -;; (tcl-set-proc-regexp): Allow leading spaces. -;; (tcl-proc-list): Changes for itcl. -;; (tcl-typeword-list): Ditto. -;; (tcl-keyword-list): Ditto. -;; -;; Revision 1.32 1995/05/11 22:12:49 tromey -;; (tcl-type-alist): Include entry for "proc". -;; -;; Revision 1.31 1995/05/10 23:38:12 tromey -;; (tcl-add-fsf-menu): Use make-lucid-menu-keymap, not -;; "make-xemacs-menu-keymap". -;; -;; Revision 1.30 1995/05/10 18:22:21 tromey -;; Bug fix in menu code for XEmacs. -;; -;; Revision 1.29 1995/05/09 21:36:53 tromey -;; Changed "Lucid Emacs" to "XEmacs". -;; Tcl's popup menu now added to existing one, courtesy -;; dfarmer@evolving.com (Doug Farmer) -;; -;; Revision 1.28 1995/04/08 19:52:50 tromey -;; (tcl-outline-level): New function -;; (tcl-mode): Added outline-handling stuff. -;; From Jesper Pedersen -;; -;; Revision 1.27 1994/10/11 02:01:27 tromey -;; (tcl-mode): imenu-create-index-function made buffer local. -;; -;; Revision 1.26 1994/09/01 18:06:24 tromey -;; Added filename completion in inferior tcl mode -;; -;; Revision 1.25 1994/08/22 15:56:24 tromey -;; tcl-load-file default to current buffer. -;; -;; Revision 1.24 1994/08/21 20:33:05 tromey -;; Fixed bug in tcl-guess-application. -;; -;; Revision 1.23 1994/08/21 03:54:45 tromey -;; Keybindings don't overshadown comint bindings. -;; -;; Revision 1.22 1994/07/26 00:46:07 tromey -;; Emacs 18 changes from Carl Witty. -;; -;; Revision 1.21 1994/07/14 22:49:21 tromey -;; Added ";;;###autoload" comments where appropriate. -;; -; Revision 1.20 1994/06/05 16:57:22 tromey -; tcl-current-word does the right thing in inferior-tcl-mode. -; -; Revision 1.19 1994/06/03 21:09:19 tromey -; Another menu fix. -; -; Revision 1.18 1994/06/03 20:39:14 tromey -; Fixed menu bug. -; -; Revision 1.17 1994/06/03 00:47:15 tromey -; Fixed bug in bug-reporting code. -; -; Revision 1.16 1994/05/26 05:06:14 tromey -; Menu items now sensitive as appropriate. -; -; Revision 1.15 1994/05/22 20:38:11 tromey -; Added bug-report keybindings and menu entries. -; -; Revision 1.14 1994/05/22 20:18:28 tromey -; Even more compile stuff. -; -; Revision 1.13 1994/05/22 20:17:15 tromey -; Moved emacs version checking code to very beginning. -; -; Revision 1.12 1994/05/22 20:14:59 tromey -; Compile fixes. -; -; Revision 1.11 1994/05/22 20:12:44 tromey -; Fixed mark-defun for 19.23. -; More menu fixes. -; -; Revision 1.10 1994/05/22 20:02:03 tromey -; Fixed bug with M-;. -; Wrote bug-reporting code. -; -; Revision 1.9 1994/05/22 05:26:51 tromey -; Fixes for imenu. -; -; Revision 1.8 1994/05/22 03:38:07 tromey -; Fixed menu support. -; -; Revision 1.7 1994/05/03 01:23:42 tromey -; *** empty log message *** -; -; Revision 1.6 1994/04/23 16:23:36 tromey -; Wrote tcl-indent-for-comment -; -;; -;; 18-Mar-1994 Tom Tromey Fourth beta release. -;; Added {un,}comment-region to menu. Idea from -;; Mike Scheidler -;; 17-Mar-1994 Tom Tromey -;; Fixed tcl-restart-with-file. Bug fix attempt in -;; tcl-internal-end-of-defun. -;; 16-Mar-1994 Tom Tromey Third beta release -;; Added support code for menu (from Tcl mode written by -;; schmid@fb3-s7.math.TU-Berlin.DE (Gregor Schmid)). -;; 12-Mar-1994 Tom Tromey -;; Better documentation for inferior-tcl-buffer. Wrote -;; tcl-restart-with-file. Wrote Lucid Emacs menu (but no -;; code to install it). -;; 12-Mar-1994 Tom Tromey -;; Wrote tcl-guess-application. Another stab at making -;; tcl-omit-ws-regexp work. -;; 10-Mar-1994 Tom Tromey Second beta release -;; Last Modified: Thu Mar 10 01:24:25 1994 (Tom Tromey) -;; Wrote perl-mode style line indentation command. -;; Wrote more documentation. Added tcl-continued-indent-level. -;; Integrated help code. -;; 8-Mar-1994 Tom Tromey -;; Last Modified: Tue Mar 8 11:58:44 1994 (Tom Tromey) -;; Bug fixes. -;; 6-Mar-1994 Tom Tromey -;; Last Modified: Sun Mar 6 18:55:41 1994 (Tom Tromey) -;; Updated auto-newline support. -;; 6-Mar-1994 Tom Tromey Beta release -;; Last Modified: Sat Mar 5 17:24:32 1994 (Tom Tromey) -;; Wrote tcl-hashify-buffer. Other minor bug fixes. -;; 5-Mar-1994 Tom Tromey -;; Last Modified: Sat Mar 5 16:11:20 1994 (Tom Tromey) -;; Wrote electric-hash code. -;; 3-Mar-1994 Tom Tromey -;; Last Modified: Thu Mar 3 02:53:40 1994 (Tom Tromey) -;; Added code to handle auto-fill in comments. -;; Added imenu support code. -;; Cleaned up code. -;; Better font-lock support. -;; 28-Feb-1994 Tom Tromey -;; Last Modified: Mon Feb 28 14:08:05 1994 (Tom Tromey) -;; Made tcl-figure-type more easily configurable. -;; 28-Feb-1994 Tom Tromey -;; Last Modified: Mon Feb 28 01:02:58 1994 (Tom Tromey) -;; Wrote inferior-tcl mode. -;; 16-Feb-1994 Tom Tromey -;; Last Modified: Wed Feb 16 17:05:19 1994 (Tom Tromey) -;; Added support for font-lock-mode. -;; 29-Oct-1993 Tom Tromey -;; Last Modified: Sun Oct 24 17:39:14 1993 (Tom Tromey) -;; Patches from Guido Bosch to make things work with Lucid Emacs. -;; 22-Oct-1993 Tom Tromey -;; Last Modified: Fri Oct 22 15:26:46 1993 (Tom Tromey) -;; Made many characters have "_" syntax class; suggested by Guido -;; Bosch . Note that this includes the "$" -;; character, which might be a change you'd notice. -;; 21-Oct-1993 Tom Tromey -;; Last Modified: Thu Oct 21 20:28:40 1993 (Tom Tromey) -;; More fixes for tcl-omit-ws-regexp. -;; 20-Oct-1993 Tom Tromey -;; Started keeping history. Fixed tcl-{beginning,end}-of-defun. -;; Added some code to make things work with Emacs 18. - -;; THANKS TO: -;; Guido Bosch -;; pgs1002@esc.cam.ac.uk (Dr P.G. Sjoerdsma) -;; Mike Scheidler -;; Matt Newman -;; rwhitby@research.canon.oz.au (Rod Whitby) -;; h9118101@hkuxa.hku.hk (Yip Chi Lap [Beta]) -;; Pertti Tapio Kasanen -;; schmid@fb3-s7.math.TU-Berlin.DE (Gregor Schmid) -;; warsaw@nlm.nih.gov (Barry A. Warsaw) -;; Carl Witty -;; T. V. Raman -;; Jesper Pedersen -;; dfarmer@evolving.com (Doug Farmer) -;; "Chris Alfeld" - -;; KNOWN BUGS: -;; * indent-region should skip blank lines. (It does in v19, so I'm -;; not motivated to fix it here). -;; * In Tcl "#" is not always a comment character. This can confuse -;; tcl.el in certain circumstances. For now the only workaround is -;; to enclose offending hash characters in quotes or precede it with -;; a backslash. Note that using braces won't work -- quotes change -;; the syntax class of characters between them, while braces do not. -;; The electric-# mode helps alleviate this problem somewhat. -;; * indent-tcl-exp is untested. -;; * Doesn't work under Emacs 18 yet. -;; * There's been a report that font-lock does strange things under -;; Lucid Emacs 19.6. For instance in "proc foobar", the space -;; before "foobar" is highlighted. - -;; TODO: -;; * make add-log-tcl-defun smarter. should notice if we are in the -;; middle of a defun, or between defuns. should notice if point is -;; on first line of defun (or maybe even in comments before defun). -;; * Allow continuation lines to be indented under the first argument -;; of the preceeding line, like this: -;; [list something \ -;; something-else] -;; * There is a request that indentation work like this: -;; button .fred -label Fred \ -;; -command {puts fred} -;; * Should have tcl-complete-symbol that queries the inferior process. -;; * Should have describe-symbol that works by sending the magic -;; command to a tclX process. -;; * Need C-x C-e binding (tcl-eval-last-exp). -;; * Write indent-region function that is faster than indenting each -;; line individually. -;; * tcl-figure-type should stop at "beginning of line" (only ws -;; before point, and no "\" on previous line). (see tcl-real-command-p). -;; * overrides some comint keybindings; fix. -;; * Trailing \ will eat blank lines. Should deal with this. -;; (this would help catch some potential bugs). -;; * Inferior should display in half the screen, not the whole screen. -;; * Indentation should deal with "switch". -;; * Consider writing code to find help files automatically (for -;; common cases). -;; * `#' shouldn't insert `\#' when point is in string. - - - -;;; Code: - -;; I sure wish Emacs had a package that made it easy to extract this -;; sort of information. -(defconst tcl-using-emacs-19 (string-match "19\\." emacs-version) - "Nil unless using Emacs 19 (XEmacs or FSF).") - -;; FIXME this will break on Emacs 19.100. -(defconst tcl-using-emacs-19-23 - (string-match "19\\.\\(2[3-9]\\|[3-9][0-9]\\)" emacs-version) - "Nil unless using Emacs 19-23 or later.") - -(defconst tcl-using-xemacs-19 (string-match "XEmacs" emacs-version) - "Nil unless using XEmacs).") - -(require 'comint) - -;; When compiling under GNU Emacs, load imenu during compilation. If -;; you have 19.22 or earlier, comment this out, or get imenu. -(and (fboundp 'eval-when-compile) - (eval-when-compile - (if (and (string-match "19\\." emacs-version) - (not (string-match "XEmacs" emacs-version))) - (require 'imenu)) - ())) - -(defconst tcl-version "1.49") -(defconst tcl-maintainer "Tom Tromey ") - -;; -;; User variables. -;; - -(defvar tcl-indent-level 4 - "*Indentation of Tcl statements with respect to containing block.") - -(defvar tcl-continued-indent-level 4 - "*Indentation of continuation line relative to first line of command.") - -(defvar tcl-auto-newline nil - "*Non-nil means automatically newline before and after braces -inserted in Tcl code.") - -(defvar tcl-tab-always-indent t - "*Control effect of TAB key. -If t (the default), always indent current line. -If nil and point is not in the indentation area at the beginning of -the line, a TAB is inserted. -Other values cause the first possible action from the following list -to take place: - - 1. Move from beginning of line to correct indentation. - 2. Delete an empty comment. - 3. Move forward to start of comment, indenting if necessary. - 4. Move forward to end of line, indenting if necessary. - 5. Create an empty comment. - 6. Move backward to start of comment, indenting if necessary.") - -(defvar tcl-use-hairy-comment-detector t - "*If not `nil', the the more complicated, but slower, comment -detecting function is used. This variable is only used in GNU Emacs -19 (the fast function is always used elsewhere).") - -(defvar tcl-electric-hash-style 'smart - "*Style of electric hash insertion to use. -Possible values are 'backslash, meaning that `\\' quoting should be -done; 'quote, meaning that `\"' quoting should be done; 'smart, -meaning that the choice between 'backslash and 'quote should be -made depending on the number of hashes inserted; or nil, meaning that -no quoting should be done. Any other value for this variable is -taken to mean 'smart. The default is 'smart.") - -(defvar tcl-help-directory-list nil - "*List of topmost directories containing TclX help files") - -(defvar tcl-use-smart-word-finder t - "*If not nil, use a better way of finding the current word when -looking up help on a Tcl command.") - -(defvar tcl-application "wish" - "*Name of Tcl application to run in inferior Tcl mode.") - -(defvar tcl-command-switches nil - "*Switches to supply to `tcl-application'.") - -(defvar tcl-prompt-regexp "^\\(% \\|\\)" - "*If not nil, a regexp that will match the prompt in the inferior process. -If nil, the prompt is the name of the application with \">\" appended. - -The default is \"^\\(% \\|\\)\", which will match the default primary -and secondary prompts for tclsh and wish.") - -(defvar inferior-tcl-source-command "source %s\n" - "*Format-string for building a Tcl command to load a file. -This format string should use `%s' to substitute a file name -and should result in a Tcl expression that will command the -inferior Tcl to load that file. The filename will be appropriately -quoted for Tcl.") - -;; -;; Keymaps, abbrevs, syntax tables. -;; - -(defvar tcl-mode-abbrev-table nil - "Abbrev table in use in Tcl-mode buffers.") -(if tcl-mode-abbrev-table - () - (define-abbrev-table 'tcl-mode-abbrev-table ())) - -(defvar tcl-mode-map () - "Keymap used in Tcl mode.") - -(defvar tcl-mode-syntax-table nil - "Syntax table in use in Tcl-mode buffers.") -(if tcl-mode-syntax-table - () - (setq tcl-mode-syntax-table (make-syntax-table)) - (modify-syntax-entry ?% "_" tcl-mode-syntax-table) - (modify-syntax-entry ?@ "_" tcl-mode-syntax-table) - (modify-syntax-entry ?& "_" tcl-mode-syntax-table) - (modify-syntax-entry ?* "_" tcl-mode-syntax-table) - (modify-syntax-entry ?+ "_" tcl-mode-syntax-table) - (modify-syntax-entry ?- "_" tcl-mode-syntax-table) - (modify-syntax-entry ?. "_" tcl-mode-syntax-table) - (modify-syntax-entry ?: "_" tcl-mode-syntax-table) - (modify-syntax-entry ?! "_" tcl-mode-syntax-table) - (modify-syntax-entry ?$ "_" tcl-mode-syntax-table) ; FIXME use "'"? - (modify-syntax-entry ?/ "_" tcl-mode-syntax-table) - (modify-syntax-entry ?~ "_" tcl-mode-syntax-table) - (modify-syntax-entry ?< "_" tcl-mode-syntax-table) - (modify-syntax-entry ?= "_" tcl-mode-syntax-table) - (modify-syntax-entry ?> "_" tcl-mode-syntax-table) - (modify-syntax-entry ?| "_" tcl-mode-syntax-table) - (modify-syntax-entry ?\( "()" tcl-mode-syntax-table) - (modify-syntax-entry ?\) ")(" tcl-mode-syntax-table) - (modify-syntax-entry ?\; "." tcl-mode-syntax-table) - (modify-syntax-entry ?\n "> " tcl-mode-syntax-table) - (modify-syntax-entry ?\f "> " tcl-mode-syntax-table) - (modify-syntax-entry ?# "< " tcl-mode-syntax-table)) - -(defvar inferior-tcl-mode-map nil - "Keymap used in Inferior Tcl mode.") - -;; XEmacs menu. -(defvar tcl-xemacs-menu - '(["Beginning of function" tcl-beginning-of-defun t] - ["End of function" tcl-end-of-defun t] - ["Mark function" tcl-mark-defun t] - ["Indent region" indent-region (tcl-mark)] - ["Comment region" comment-region (tcl-mark)] - ["Uncomment region" tcl-uncomment-region (tcl-mark)] - "----" - ["Show Tcl process buffer" inferior-tcl t] - ["Send function to Tcl process" tcl-eval-defun - (and inferior-tcl-buffer (get-buffer inferior-tcl-buffer))] - ["Send region to Tcl process" tcl-eval-region - (and inferior-tcl-buffer (get-buffer inferior-tcl-buffer))] - ["Send file to Tcl process" tcl-load-file - (and inferior-tcl-buffer (get-buffer inferior-tcl-buffer))] - ["Restart Tcl process with file" tcl-restart-with-file t] - "----" - ["Tcl help" tcl-help-on-word tcl-help-directory-list] - ["Send bug report" tcl-submit-bug-report t]) - "XEmacs menu for Tcl mode.") - -;; GNU Emacs does menus via keymaps. Do it in a function in case we -;; later decide to add it to inferior Tcl mode as well. -(defun tcl-add-fsf-menu (map) - (define-key map [menu-bar] (make-sparse-keymap)) - ;; This fails in Emacs 19.22 and earlier. - (require 'lmenu) - (let ((menu (make-lucid-menu-keymap "Tcl" tcl-xemacs-menu))) - (define-key map [menu-bar tcl] (cons "Tcl" menu)) - ;; The following is intended to compute the key sequence - ;; information for the menu. It doesn't work. - (x-popup-menu nil menu))) - -(defun tcl-fill-mode-map () - (define-key tcl-mode-map "{" 'tcl-electric-char) - (define-key tcl-mode-map "}" 'tcl-electric-brace) - (define-key tcl-mode-map "[" 'tcl-electric-char) - (define-key tcl-mode-map "]" 'tcl-electric-char) - (define-key tcl-mode-map ";" 'tcl-electric-char) - (define-key tcl-mode-map "#" 'tcl-electric-hash) - ;; FIXME. - (define-key tcl-mode-map "\e\C-a" 'tcl-beginning-of-defun) - ;; FIXME. - (define-key tcl-mode-map "\e\C-e" 'tcl-end-of-defun) - ;; FIXME. - (define-key tcl-mode-map "\e\C-h" 'tcl-mark-defun) - (define-key tcl-mode-map "\e\C-q" 'indent-tcl-exp) - (define-key tcl-mode-map "\177" 'backward-delete-char-untabify) - (define-key tcl-mode-map "\t" 'tcl-indent-command) - (define-key tcl-mode-map "\M-;" 'tcl-indent-for-comment) - (define-key tcl-mode-map "\M-\C-x" 'tcl-eval-defun) - (define-key tcl-mode-map "\C-c\C-b" 'tcl-submit-bug-report) - (and (fboundp 'comment-region) - (define-key tcl-mode-map "\C-c\C-c" 'comment-region)) - (define-key tcl-mode-map "\C-c\C-i" 'tcl-help-on-word) - (define-key tcl-mode-map "\C-c\C-v" 'tcl-eval-defun) - (define-key tcl-mode-map "\C-c\C-f" 'tcl-load-file) - (define-key tcl-mode-map "\C-c\C-t" 'inferior-tcl) - (define-key tcl-mode-map "\C-c\C-x" 'tcl-eval-region) - (define-key tcl-mode-map "\C-c\C-s" 'switch-to-tcl) - - ;; Make menus. - (if (and tcl-using-emacs-19 (not tcl-using-xemacs-19)) - (progn - (tcl-add-fsf-menu tcl-mode-map)))) - -(defun tcl-fill-inferior-map () - (define-key inferior-tcl-mode-map "\t" 'comint-dynamic-complete) - (define-key inferior-tcl-mode-map "\M-?" - 'comint-dynamic-list-filename-completions) - (define-key inferior-tcl-mode-map "\e\C-a" 'tcl-beginning-of-defun) - (define-key inferior-tcl-mode-map "\e\C-e" 'tcl-end-of-defun) - (define-key inferior-tcl-mode-map "\177" 'backward-delete-char-untabify) - (define-key inferior-tcl-mode-map "\M-\C-x" 'tcl-eval-defun) - (define-key inferior-tcl-mode-map "\C-c\C-b" 'tcl-submit-bug-report) - (define-key inferior-tcl-mode-map "\C-c\C-i" 'tcl-help-on-word) - (define-key inferior-tcl-mode-map "\C-c\C-v" 'tcl-eval-defun) - (define-key inferior-tcl-mode-map "\C-c\C-f" 'tcl-load-file) - (define-key inferior-tcl-mode-map "\C-c\C-t" 'inferior-tcl) - (define-key inferior-tcl-mode-map "\C-c\C-x" 'tcl-eval-region) - (define-key inferior-tcl-mode-map "\C-c\C-s" 'switch-to-tcl)) - -(if tcl-mode-map - () - (setq tcl-mode-map (make-sparse-keymap)) - (tcl-fill-mode-map)) - -(if inferior-tcl-mode-map - () - ;; FIXME Use keymap inheritance here? FIXME we override comint - ;; keybindings here. Maybe someone has a better set? - (setq inferior-tcl-mode-map (copy-keymap comint-mode-map)) - (tcl-fill-inferior-map)) - - -(defvar inferior-tcl-buffer nil - "*The current inferior-tcl process buffer. - -MULTIPLE PROCESS SUPPORT -=========================================================================== -To run multiple Tcl processes, you start the first up with -\\[inferior-tcl]. It will be in a buffer named `*inferior-tcl*'. -Rename this buffer with \\[rename-buffer]. You may now start up a new -process with another \\[inferior-tcl]. It will be in a new buffer, -named `*inferior-tcl*'. You can switch between the different process -buffers with \\[switch-to-buffer]. - -Commands that send text from source buffers to Tcl processes -- like -`tcl-eval-defun' or `tcl-load-file' -- have to choose a process to -send to, when you have more than one Tcl process around. This is -determined by the global variable `inferior-tcl-buffer'. Suppose you -have three inferior Lisps running: - Buffer Process - foo inferior-tcl - bar inferior-tcl<2> - *inferior-tcl* inferior-tcl<3> -If you do a \\[tcl-eval-defun] command on some Lisp source code, what -process do you send it to? - -- If you're in a process buffer (foo, bar, or *inferior-tcl*), - you send it to that process. -- If you're in some other buffer (e.g., a source file), you - send it to the process attached to buffer `inferior-tcl-buffer'. -This process selection is performed by function `inferior-tcl-proc'. - -Whenever \\[inferior-tcl] fires up a new process, it resets -`inferior-tcl-buffer' to be the new process's buffer. If you only run -one process, this does the right thing. If you run multiple -processes, you can change `inferior-tcl-buffer' to another process -buffer with \\[set-variable].") - -;; -;; Hooks and other customization. -;; - -(defvar tcl-mode-hook nil - "Hook run on entry to Tcl mode. - -Several functions exist which are useful to run from your -`tcl-mode-hook' (see each function's documentation for more -information): - - tcl-guess-application - Guesses a default setting for `tcl-application' based on any - \"#!\" line at the top of the file. - tcl-hashify-buffer - Quotes all \"#\" characters that don't correspond to actual - Tcl comments. (Useful when editing code not originally created - with this mode). - tcl-auto-fill-mode - Auto-filling of Tcl comments. - -Emacs 19 users can add functions to the hook with `add-hook': - - (add-hook 'tcl-mode-hook 'tcl-guess-application) - -Emacs 18 users must use `setq': - - (setq tcl-mode-hook (cons 'tcl-guess-application tcl-mode-hook))") - - -(defvar inferior-tcl-mode-hook nil - "Hook for customizing Inferior Tcl mode.") - -(defvar tcl-proc-list - '("proc" "method" "itcl_class") - "List of commands whose first argument defines something. -This exists because some people (eg, me) use \"defvar\" et al. -Call `tcl-set-proc-regexp' and `tcl-set-font-lock-keywords' -after changing this list.") - -(defvar tcl-proc-regexp nil - "Regexp to use when matching proc headers.") - -(defvar tcl-typeword-list - '("global" "upvar" "inherit" "public" "protected" "common") - "List of Tcl keywords denoting \"type\". Used only for highlighting. -Call `tcl-set-font-lock-keywords' after changing this list.") - -;; Generally I've picked control operators to be keywords. -(defvar tcl-keyword-list - '("if" "then" "else" "elseif" "for" "foreach" "break" "continue" "while" - "eval" "case" "in" "switch" "default" "exit" "error" "proc" "return" - "uplevel" "constructor" "destructor" "itcl_class" "loop" "for_array_keys" - "for_recursive_glob" "for_file") - "List of Tcl keywords. Used only for highlighting. -Default list includes some TclX keywords. -Call `tcl-set-font-lock-keywords' after changing this list.") - -(defvar tcl-font-lock-keywords nil - "Keywords to highlight for Tcl. See variable `font-lock-keywords'. -This variable is generally set from `tcl-proc-regexp', -`tcl-typeword-list', and `tcl-keyword-list' by the function -`tcl-set-font-lock-keywords'.") - -;; FIXME need some way to recognize variables because array refs look -;; like 2 sexps. -(defvar tcl-type-alist - '( - ("proc" nil tcl-expr tcl-commands) - ("method" nil tcl-expr tcl-commands) - ("destructor" tcl-commands) - ("constructor" tcl-commands) - ("expr" tcl-expr) - ("catch" tcl-commands) - ("if" tcl-expr "then" tcl-commands) - ("elseif" tcl-expr "then" tcl-commands) - ("elseif" tcl-expr tcl-commands) - ("if" tcl-expr tcl-commands) - ("while" tcl-expr tcl-commands) - ("for" tcl-commands tcl-expr tcl-commands tcl-commands) - ("foreach" nil nil tcl-commands) - ("for_file" nil nil tcl-commands) - ("for_array_keys" nil nil tcl-commands) - ("for_recursive_glob" nil nil nil tcl-commands) - ;; Loop handling is not perfect, because the third argument can be - ;; either a command or an expr, and there is no real way to look - ;; forward. - ("loop" nil tcl-expr tcl-expr tcl-commands) - ("loop" nil tcl-expr tcl-commands) - ) - "Alist that controls indentation. -\(Actually, this really only controls what happens on continuation lines). -Each entry looks like `(KEYWORD TYPE ...)'. -Each type entry describes a sexp after the keyword, and can be one of: -* nil, meaning that this sexp has no particular type. -* tcl-expr, meaning that this sexp is an arithmetic expression. -* tcl-commands, meaning that this sexp holds Tcl commands. -* a string, which must exactly match the string at the corresponding - position for a match to be made. - -For example, the entry for the \"loop\" command is: - - (\"loop\" nil tcl-expr tcl-commands) - -This means that the \"loop\" command has three arguments. The first -argument is ignored (for indentation purposes). The second argument -is a Tcl expression, and the last argument is Tcl commands.") - -(defvar tcl-explain-indentation nil - "If not `nil', debugging message will be printed during indentation.") - - - -;; -;; Work around differences between various versions of Emacs. -;; - -;; We use this because Lemacs 19.9 has what we need. -(defconst tcl-pps-has-arg-6 - (or tcl-using-emacs-19 - (and tcl-using-xemacs-19 - (condition-case nil - (progn - (parse-partial-sexp (point) (point) nil nil nil t) - t) - (error nil)))) - "t if using an emacs which supports sixth (\"commentstop\") argument -to parse-partial-sexp.") - -;; Its pretty bogus to have to do this, but there is no easier way to -;; say "match not syntax-1 and not syntax-2". Too bad you can't put -;; \s in [...]. This sickness is used in Emacs 19 to match a defun -;; starter. (It is used for this in v18 as well). -;;(defconst tcl-omit-ws-regexp -;; (concat "^\\(\\s" -;; (mapconcat 'char-to-string "w_.()\"\\$'/" "\\|\\s") -;; "\\)\\S(*") -;; "Regular expression that matches everything except space, comment -;;starter, and comment ender syntax codes.") - -;; FIXME? Instead of using the hairy regexp above, we just use a -;; simple one. -;;(defconst tcl-omit-ws-regexp "^[^] \t\n#}]\\S(*" -;; "Regular expression used in locating function definitions.") - -;; Here's another stab. I think this one actually works. Now the -;; problem seems to be that there is a bug in Emacs 19.22 where -;; end-of-defun doesn't really use the brace matching the one that -;; trails defun-prompt-regexp. -(defconst tcl-omit-ws-regexp "^[^ \t\n#}][^\n}]+}*[ \t]+") - -(defun tcl-internal-beginning-of-defun (&optional arg) - "Move backward to next beginning-of-defun. -With argument, do this that many times. -Returns t unless search stops due to end of buffer." - (interactive "p") - (if (or (null arg) (= arg 0)) - (setq arg 1)) - (let (success) - (while (progn - (setq arg (1- arg)) - (and (>= arg 0) - (setq success - (re-search-backward tcl-omit-ws-regexp nil 'move 1)))) - (while (and (looking-at "[]#}]") - (setq success - (re-search-backward tcl-omit-ws-regexp nil 'move 1))))) - (beginning-of-line) - (not (null success)))) - -(defun tcl-internal-end-of-defun (&optional arg) - "Move forward to next end of defun. -An end of a defun is found by moving forward from the beginning of one." - (interactive "p") - (if (or (null arg) (= arg 0)) (setq arg 1)) - (let ((start (point))) - ;; Was forward-char. I think this works a little better. - (forward-line) - (tcl-beginning-of-defun) - (while (> arg 0) - (while (and (re-search-forward tcl-omit-ws-regexp nil 'move 1) - (progn (beginning-of-line) t) - (looking-at "[]#}]") - (progn (forward-line) t))) - (let ((next-line (save-excursion - (forward-line) - (point)))) - (while (< (point) next-line) - (forward-sexp))) - (forward-line) - (if (> (point) start) (setq arg (1- arg)))))) - -;; In Emacs 19, we can use begining-of-defun as long as we set up a -;; certain regexp. In Emacs 18, we need our own function. -(fset 'tcl-beginning-of-defun - (if tcl-using-emacs-19 - 'beginning-of-defun - 'tcl-internal-beginning-of-defun)) - -;; Ditto end-of-defun. -(fset 'tcl-end-of-defun - (if (and tcl-using-emacs-19 (not tcl-using-xemacs-19)) - 'end-of-defun - 'tcl-internal-end-of-defun)) - -;; Internal mark-defun that is used for losing Emacsen. -(defun tcl-internal-mark-defun () - "Put mark at end of Tcl function, point at beginning." - (interactive) - (push-mark (point)) - (tcl-end-of-defun) - (if tcl-using-emacs-19 - (push-mark (point) nil t) - (push-mark (point))) - (tcl-beginning-of-defun) - (backward-paragraph)) - -;; In GNU Emacs 19-23 and later, mark-defun works as advertised. I -;; don't know about XEmacs, so for now it and Emacs 18 just lose. -(fset 'tcl-mark-defun - (if tcl-using-emacs-19-23 - 'mark-defun - 'tcl-internal-mark-defun)) - -;; In GNU Emacs 19, mark takes an additional "force" argument. I -;; don't know about XEmacs, so I'm just assuming it is the same. -;; Emacs 18 doesn't have this argument. -(defun tcl-mark () - "Return mark, or nil if none." - (if tcl-using-emacs-19 - (mark t) - (mark))) - - - -;; -;; Some helper functions. -;; - -(defun tcl-set-proc-regexp () - "Set `tcl-proc-regexp' from variable `tcl-proc-list'." - (setq tcl-proc-regexp (concat "^\\s-*\\(" - (mapconcat 'identity tcl-proc-list "\\|") - "\\)[ \t]+"))) - -(defun tcl-set-font-lock-keywords () - "Set `tcl-font-lock-keywords'. -Uses variables `tcl-proc-regexp' and `tcl-keyword-list'." - (setq tcl-font-lock-keywords - (list - ;; Names of functions (and other "defining things"). - (list (concat tcl-proc-regexp "\\([^ \t\n]+\\)") - 2 'font-lock-function-name-face) - - ;; Names of type-defining things. - (list (concat "\\(\\s-\\|^\\)\\(" - ;; FIXME Use 'regexp-quote? - (mapconcat 'identity tcl-typeword-list "\\|") - "\\)\\(\\s-\\|$\\)") - 2 'font-lock-type-face) - - ;; Keywords. Only recognized if surrounded by whitespace. - ;; FIXME consider using "not word or symbol", not - ;; "whitespace". - (cons (concat "\\(\\s-\\|^\\)\\(" - ;; FIXME Use regexp-quote? - (mapconcat 'identity tcl-keyword-list "\\|") - "\\)\\(\\s-\\|$\\)") - 2) - ))) - -(if tcl-proc-regexp - () - (tcl-set-proc-regexp)) - -(if tcl-font-lock-keywords - () - (tcl-set-font-lock-keywords)) - - - -;; -;; The mode itself. -;; - -;;;###autoload -(defun tcl-mode () - "Major mode for editing Tcl code. -Expression and list commands understand all Tcl brackets. -Tab indents for Tcl code. -Paragraphs are separated by blank lines only. -Delete converts tabs to spaces as it moves back. - -Variables controlling indentation style: - tcl-indent-level - Indentation of Tcl statements within surrounding block. - tcl-continued-indent-level - Indentation of continuation line relative to first line of command. - -Variables controlling user interaction with mode (see variable -documentation for details): - tcl-tab-always-indent - Controls action of TAB key. - tcl-auto-newline - Non-nil means automatically newline before and after braces, brackets, - and semicolons inserted in Tcl code. - tcl-electric-hash-style - Controls action of `#' key. - tcl-use-hairy-comment-detector - If t, use more complicated, but slower, comment detector. - This variable is only used in GNU Emacs 19. - tcl-use-smart-word-finder - If not nil, use a smarter, Tcl-specific way to find the current - word when looking up help on a Tcl command. - -Turning on Tcl mode calls the value of the variable `tcl-mode-hook' -with no args, if that value is non-nil. Read the documentation for -`tcl-mode-hook' to see what kinds of interesting hook functions -already exist. - -Commands: -\\{tcl-mode-map}" - (interactive) - (kill-all-local-variables) - (use-local-map tcl-mode-map) - (setq major-mode 'tcl-mode) - (setq mode-name "Tcl") - (setq local-abbrev-table tcl-mode-abbrev-table) - (set-syntax-table tcl-mode-syntax-table) - - (make-local-variable 'paragraph-start) - (make-local-variable 'paragraph-separate) - (if (and tcl-using-emacs-19-23 - (>= emacs-minor-version 29)) - (progn - ;; In Emacs 19.29, you aren't supposed to start these with a - ;; ^. - (setq paragraph-start "$\\| ") - (setq paragraph-separate paragraph-start)) - (setq paragraph-start (concat "^$\\|" page-delimiter)) - (setq paragraph-separate paragraph-start)) - (make-local-variable 'paragraph-ignore-fill-prefix) - (setq paragraph-ignore-fill-prefix t) - (make-local-variable 'fill-paragraph-function) - (setq fill-paragraph-function 'tcl-do-fill-paragraph) - - (make-local-variable 'indent-line-function) - (setq indent-line-function 'tcl-indent-line) - ;; Tcl doesn't require a final newline. - ;; (make-local-variable 'require-final-newline) - ;; (setq require-final-newline t) - - (make-local-variable 'comment-start) - (setq comment-start "# ") - (make-local-variable 'comment-start-skip) - (setq comment-start-skip "#+ *") - (make-local-variable 'comment-column) - (setq comment-column 40) - (make-local-variable 'comment-end) - (setq comment-end "") - - (make-local-variable 'outline-regexp) - (setq outline-regexp "[^\n\^M]") - (make-local-variable 'outline-level) - (setq outline-level 'tcl-outline-level) - - (make-local-variable 'font-lock-keywords) - (setq font-lock-keywords tcl-font-lock-keywords) - - ;; The following only really makes sense under GNU Emacs 19. - (make-local-variable 'imenu-create-index-function) - (setq imenu-create-index-function 'tcl-imenu-create-index-function) - (make-local-variable 'parse-sexp-ignore-comments) - - ;; Settings for new dabbrev code. - (make-local-variable 'dabbrev-case-fold-search) - (setq dabbrev-case-fold-search nil) - (make-local-variable 'dabbrev-case-replace) - (setq dabbrev-case-replace nil) - (make-local-variable 'dabbrev-abbrev-skip-leading-regexp) - (setq dabbrev-abbrev-skip-leading-regexp "[$!]") - (make-local-variable 'dabbrev-abbrev-char-regexp) - (setq dabbrev-abbrev-char-regexp "\\sw\\|\\s_") - - (if tcl-using-emacs-19 - (progn - ;; This can only be set to t in Emacs 19 and XEmacs. - ;; Emacs 18 and Epoch lose. - (setq parse-sexp-ignore-comments t) - ;; XEmacs has defun-prompt-regexp, but I don't believe - ;; that it works for end-of-defun -- only for - ;; beginning-of-defun. - (make-local-variable 'defun-prompt-regexp) - (setq defun-prompt-regexp tcl-omit-ws-regexp) - ;; The following doesn't work in Lucid Emacs 19.6, but maybe - ;; it will appear in later versions. - (make-local-variable 'add-log-current-defun-function) - (setq add-log-current-defun-function 'add-log-tcl-defun)) - (setq parse-sexp-ignore-comments nil)) - - ;; Put Tcl menu into menubar for XEmacs. This happens - ;; automatically for GNU Emacs. - (if (and tcl-using-xemacs-19 - current-menubar - (not (assoc "Tcl" current-menubar))) - (progn - (set-buffer-menubar (copy-sequence current-menubar)) - (add-menu nil "Tcl" tcl-xemacs-menu))) - ;; Append Tcl menu to popup menu for XEmacs. - (if (and tcl-using-xemacs-19 (boundp 'mode-popup-menu)) - (setq mode-popup-menu - (cons (concat mode-name " Mode Commands") tcl-xemacs-menu))) - - ;; If hilit19 is loaded, add our stuff. - (if (featurep 'hilit19) - (tcl-hilit)) - - (run-hooks 'tcl-mode-hook)) - - - -;; This is used for braces, brackets, and semi (except for closing -;; braces, which are handled specially). -(defun tcl-electric-char (arg) - "Insert character and correct line's indentation." - (interactive "p") - ;; Indent line first; this looks better if parens blink. - (tcl-indent-line) - (self-insert-command arg) - (if (and tcl-auto-newline (= last-command-char ?\;)) - (progn - (newline) - (tcl-indent-line)))) - -;; This is used for closing braces. If tcl-auto-newline is set, can -;; insert a newline both before and after the brace, depending on -;; context. FIXME should this be configurable? Does anyone use this? -(defun tcl-electric-brace (arg) - "Insert character and correct line's indentation." - (interactive "p") - ;; If auto-newlining and there is stuff on the same line, insert a - ;; newline first. - (if tcl-auto-newline - (progn - (if (save-excursion - (skip-chars-backward " \t") - (bolp)) - () - (tcl-indent-line) - (newline)) - ;; In auto-newline case, must insert a newline after each - ;; brace. So an explicit loop is needed. - (while (> arg 0) - (insert last-command-char) - (tcl-indent-line) - (newline) - (setq arg (1- arg)))) - (self-insert-command arg)) - (tcl-indent-line)) - - - -(defun tcl-indent-command (&optional arg) - "Indent current line as Tcl code, or in some cases insert a tab character. -If tcl-tab-always-indent is t (the default), always indent current line. -If tcl-tab-always-indent is nil and point is not in the indentation -area at the beginning of the line, a TAB is inserted. -Other values of tcl-tab-always-indent cause the first possible action -from the following list to take place: - - 1. Move from beginning of line to correct indentation. - 2. Delete an empty comment. - 3. Move forward to start of comment, indenting if necessary. - 4. Move forward to end of line, indenting if necessary. - 5. Create an empty comment. - 6. Move backward to start of comment, indenting if necessary." - (interactive "p") - (cond - ((not tcl-tab-always-indent) - ;; Indent if in indentation area, otherwise insert TAB. - (if (<= (current-column) (current-indentation)) - (tcl-indent-line) - (self-insert-command arg))) - ((eq tcl-tab-always-indent t) - ;; Always indent. - (tcl-indent-line)) - (t - ;; "Perl-mode" style TAB command. - (let* ((ipoint (point)) - (eolpoint (progn - (end-of-line) - (point))) - (comment-p (tcl-in-comment))) - (cond - ((= ipoint (save-excursion - (beginning-of-line) - (point))) - (beginning-of-line) - (tcl-indent-line) - ;; If indenting didn't leave us in column 0, go to the - ;; indentation. Otherwise leave point at end of line. This - ;; is a hack. - (if (= (point) (save-excursion - (beginning-of-line) - (point))) - (end-of-line) - (back-to-indentation))) - ((and comment-p (looking-at "[ \t]*$")) - ;; Empty comment, so delete it. We also delete any ";" - ;; characters at the end of the line. I think this is - ;; friendlier, but I don't know how other people will feel. - (backward-char) - (skip-chars-backward " \t;") - (delete-region (point) eolpoint)) - ((and comment-p (< ipoint (point))) - ;; Before comment, so skip to it. - (tcl-indent-line) - (indent-for-comment)) - ((/= ipoint eolpoint) - ;; Go to end of line (since we're not there yet). - (goto-char eolpoint) - (tcl-indent-line)) - ((not comment-p) - (tcl-indent-line) - (tcl-indent-for-comment)) - (t - ;; Go to start of comment. We don't leave point where it is - ;; because we want to skip comment-start-skip. - (tcl-indent-line) - (indent-for-comment))))))) - -(defun tcl-indent-line () - "Indent current line as Tcl code. -Return the amount the indentation changed by." - (let ((indent (calculate-tcl-indent nil)) - beg shift-amt - (case-fold-search nil) - (pos (- (point-max) (point)))) - (beginning-of-line) - (setq beg (point)) - (cond ((eq indent nil) - (setq indent (current-indentation))) - (t - (skip-chars-forward " \t") - (if (listp indent) (setq indent (car indent))) - (cond ((= (following-char) ?}) - (setq indent (- indent tcl-indent-level))) - ((= (following-char) ?\]) - (setq indent (- indent 1)))))) - (skip-chars-forward " \t") - (setq shift-amt (- indent (current-column))) - (if (zerop shift-amt) - (if (> (- (point-max) pos) (point)) - (goto-char (- (point-max) pos))) - (delete-region beg (point)) - (indent-to indent) - ;; If initial point was within line's indentation, - ;; position after the indentation. Else stay at same point in text. - (if (> (- (point-max) pos) (point)) - (goto-char (- (point-max) pos)))) - shift-amt)) - -(defun tcl-figure-type () - "Determine type of sexp at point. -This is either 'tcl-expr, 'tcl-commands, or nil. Puts point at start -of sexp that indicates types. - -See documentation for variable `tcl-type-alist' for more information." - (let ((count 0) - result - word-stack) - (while (and (< count 5) - (not result)) - (condition-case nil - (progn - ;; FIXME should use "tcl-backward-sexp", which would skip - ;; over entire variables, etc. - (backward-sexp) - (if (looking-at "[a-zA-Z_]+") - (let ((list tcl-type-alist) - entry) - (setq word-stack (cons (tcl-word-no-props) word-stack)) - (while (and list (not result)) - (setq entry (car list)) - (setq list (cdr list)) - (let ((index 0)) - (while (and entry (<= index count)) - ;; Abort loop if string does not match word on - ;; stack. - (and (stringp (car entry)) - (not (string= (car entry) - (nth index word-stack))) - (setq entry nil)) - (setq entry (cdr entry)) - (setq index (1+ index))) - (and (> index count) - (not (stringp (car entry))) - (setq result (car entry))) - ))) - (setq word-stack (cons nil word-stack)))) - (error nil)) - (setq count (1+ count))) - (and tcl-explain-indentation - (message "Indentation type %s" result)) - result)) - -(defun calculate-tcl-indent (&optional parse-start) - "Return appropriate indentation for current line as Tcl code. -In usual case returns an integer: the column to indent to. -Returns nil if line starts inside a string, t if in a comment." - (save-excursion - (beginning-of-line) - (let* ((indent-point (point)) - (case-fold-search nil) - (continued-line - (save-excursion - (if (bobp) - nil - (backward-char) - (= ?\\ (preceding-char))))) - (continued-indent-value (if continued-line - tcl-continued-indent-level - 0)) - state - containing-sexp - found-next-line) - (if parse-start - (goto-char parse-start) - (tcl-beginning-of-defun)) - (while (< (point) indent-point) - (setq parse-start (point)) - (setq state (parse-partial-sexp (point) indent-point 0)) - (setq containing-sexp (car (cdr state)))) - (cond ((or (nth 3 state) (nth 4 state)) - ;; Inside comment or string. Return nil or t if should - ;; not change this line - (nth 4 state)) - ((null containing-sexp) - ;; Line is at top level. - continued-indent-value) - (t - ;; Set expr-p if we are looking at the expression part of - ;; an "if", "expr", etc statement. Set commands-p if we - ;; are looking at the body part of an if, while, etc - ;; statement. FIXME Should check for "for" loops here. - (goto-char containing-sexp) - (let* ((sexpr-type (tcl-figure-type)) - (expr-p (eq sexpr-type 'tcl-expr)) - (commands-p (eq sexpr-type 'tcl-commands)) - (expr-start (point))) - ;; Find the first statement in the block and indent - ;; like it. The first statement in the block might be - ;; on the same line, so what we do is skip all - ;; "virtually blank" lines, looking for a non-blank - ;; one. A line is virtually blank if it only contains - ;; a comment and whitespace. FIXME continued comments - ;; aren't supported. They are a wart on Tcl anyway. - ;; We do it this funky way because we want to know if - ;; we've found a statement on some line _after_ the - ;; line holding the sexp opener. - (goto-char containing-sexp) - (forward-char) - (if (and (< (point) indent-point) - (looking-at "[ \t]*\\(#.*\\)?$")) - (progn - (forward-line) - (while (and (< (point) indent-point) - (looking-at "[ \t]*\\(#.*\\)?$")) - (setq found-next-line t) - (forward-line)))) - (if (or continued-line - (/= (char-after containing-sexp) ?{) - expr-p) - (progn - ;; Line is continuation line, or the sexp opener - ;; is not a curly brace, or we are are looking at - ;; an `expr' expression (which must be split - ;; specially). So indentation is column of first - ;; good spot after sexp opener (with some added - ;; in the continued-line case). If there is no - ;; nonempty line before the indentation point, we - ;; use the column of the character after the sexp - ;; opener. - (if (>= (point) indent-point) - (progn - (goto-char containing-sexp) - (forward-char)) - (skip-chars-forward " \t")) - (+ (current-column) continued-indent-value)) - ;; After a curly brace, and not a continuation line. - ;; So take indentation from first good line after - ;; start of block, unless that line is on the same - ;; line as the opening brace. In this case use the - ;; indentation of the opening brace's line, plus - ;; another indent step. If we are in the body part - ;; of an "if" or "while" then the indentation is - ;; taken from the line holding the start of the - ;; statement. - (if (and (< (point) indent-point) - found-next-line) - (current-indentation) - (if commands-p - (goto-char expr-start) - (goto-char containing-sexp)) - (+ (current-indentation) tcl-indent-level))))))))) - - - -(defun indent-tcl-exp () - "Indent each line of the Tcl grouping following point." - (interactive) - (let ((indent-stack (list nil)) - (contain-stack (list (point))) - (case-fold-search nil) - outer-loop-done inner-loop-done state ostate - this-indent last-sexp continued-line - (next-depth 0) - last-depth) - (save-excursion - (forward-sexp 1)) - (save-excursion - (setq outer-loop-done nil) - (while (and (not (eobp)) (not outer-loop-done)) - (setq last-depth next-depth) - ;; Compute how depth changes over this line - ;; plus enough other lines to get to one that - ;; does not end inside a comment or string. - ;; Meanwhile, do appropriate indentation on comment lines. - (setq inner-loop-done nil) - (while (and (not inner-loop-done) - (not (and (eobp) (setq outer-loop-done t)))) - (setq ostate state) - (setq state (parse-partial-sexp (point) (progn (end-of-line) (point)) - nil nil state)) - (setq next-depth (car state)) - (if (and (car (cdr (cdr state))) - (>= (car (cdr (cdr state))) 0)) - (setq last-sexp (car (cdr (cdr state))))) - (if (or (nth 4 ostate)) - (tcl-indent-line)) - (if (or (nth 3 state)) - (forward-line 1) - (setq inner-loop-done t))) - (if (<= next-depth 0) - (setq outer-loop-done t)) - (if outer-loop-done - nil - ;; If this line had ..))) (((.. in it, pop out of the levels - ;; that ended anywhere in this line, even if the final depth - ;; doesn't indicate that they ended. - (while (> last-depth (nth 6 state)) - (setq indent-stack (cdr indent-stack) - contain-stack (cdr contain-stack) - last-depth (1- last-depth))) - (if (/= last-depth next-depth) - (setq last-sexp nil)) - ;; Add levels for any parens that were started in this line. - (while (< last-depth next-depth) - (setq indent-stack (cons nil indent-stack) - contain-stack (cons nil contain-stack) - last-depth (1+ last-depth))) - (if (null (car contain-stack)) - (setcar contain-stack - (or (car (cdr state)) - (save-excursion - (forward-sexp -1) - (point))))) - (forward-line 1) - (setq continued-line - (save-excursion - (backward-char) - (= (preceding-char) ?\\))) - (skip-chars-forward " \t") - (if (eolp) - nil - (if (and (car indent-stack) - (>= (car indent-stack) 0)) - ;; Line is on an existing nesting level. - (setq this-indent (car indent-stack)) - ;; Just started a new nesting level. - ;; Compute the standard indent for this level. - (let ((val (calculate-tcl-indent - (if (car indent-stack) - (- (car indent-stack)))))) - (setcar indent-stack - (setq this-indent val)) - (setq continued-line nil))) - (cond ((not (numberp this-indent))) - ((= (following-char) ?}) - (setq this-indent (- this-indent tcl-indent-level))) - ((= (following-char) ?\]) - (setq this-indent (- this-indent 1)))) - ;; Put chosen indentation into effect. - (or (null this-indent) - (= (current-column) - (if continued-line - (+ this-indent tcl-indent-level) - this-indent)) - (progn - (delete-region (point) (progn (beginning-of-line) (point))) - (indent-to - (if continued-line - (+ this-indent tcl-indent-level) - this-indent))))))))) - ) - - - -;; -;; Interfaces to other packages. -;; - -(defun tcl-imenu-create-index-function () - "Generate alist of indices for imenu." - (let ((re (concat tcl-proc-regexp "\\([^ \t\n{]+\\)")) - alist prev-pos) - (goto-char (point-min)) - (imenu-progress-message prev-pos 0) - (save-match-data - (while (re-search-forward re nil t) - (imenu-progress-message prev-pos) - ;; Position on start of proc name, not beginning of line. - (setq alist (cons - (cons (buffer-substring (match-beginning 2) (match-end 2)) - (match-beginning 2)) - alist)))) - (imenu-progress-message prev-pos 100) - (nreverse alist))) - -;; FIXME Definition of function is very ad-hoc. Should use -;; tcl-beginning-of-defun. Also has incestuous knowledge about the -;; format of tcl-proc-regexp. -(defun add-log-tcl-defun () - "Return name of Tcl function point is in, or nil." - (save-excursion - (end-of-line) - (if (re-search-backward (concat tcl-proc-regexp "\\([^ \t\n{]+\\)") nil t) - (buffer-substring (match-beginning 2) - (match-end 2))))) - -(defun tcl-outline-level () - (save-excursion - (skip-chars-forward " \t") - (current-column))) - - - -;; -;; Helper functions for inferior Tcl mode. -;; - -;; This exists to let us delete the prompt when commands are sent -;; directly to the inferior Tcl. See gud.el for an explanation of how -;; it all works (I took it from there). This stuff doesn't really -;; work as well as I'd like it to. But I don't believe there is -;; anything useful that can be done. -(defvar inferior-tcl-delete-prompt-marker nil) - -(defun tcl-filter (proc string) - (let ((inhibit-quit t)) - (save-excursion - (set-buffer (process-buffer proc)) - (goto-char (process-mark proc)) - ;; Delete prompt if requested. - (if (marker-buffer inferior-tcl-delete-prompt-marker) - (progn - (delete-region (point) inferior-tcl-delete-prompt-marker) - (set-marker inferior-tcl-delete-prompt-marker nil))))) - (if tcl-using-emacs-19 - (comint-output-filter proc string) - (funcall comint-output-filter string))) - -(defun tcl-send-string (proc string) - (save-excursion - (set-buffer (process-buffer proc)) - (goto-char (process-mark proc)) - (beginning-of-line) - (if (looking-at comint-prompt-regexp) - (set-marker inferior-tcl-delete-prompt-marker (point)))) - (comint-send-string proc string)) - -(defun tcl-send-region (proc start end) - (save-excursion - (set-buffer (process-buffer proc)) - (goto-char (process-mark proc)) - (beginning-of-line) - (if (looking-at comint-prompt-regexp) - (set-marker inferior-tcl-delete-prompt-marker (point)))) - (comint-send-region proc start end)) - -(defun switch-to-tcl (eob-p) - "Switch to inferior Tcl process buffer. -With argument, positions cursor at end of buffer." - (interactive "P") - (if (get-buffer inferior-tcl-buffer) - (pop-to-buffer inferior-tcl-buffer) - (error "No current inferior Tcl buffer")) - (cond (eob-p - (push-mark) - (goto-char (point-max))))) - -(defun inferior-tcl-proc () - "Return current inferior Tcl process. -See variable `inferior-tcl-buffer'." - (let ((proc (get-buffer-process (if (eq major-mode 'inferior-tcl-mode) - (current-buffer) - inferior-tcl-buffer)))) - (or proc - (error "No Tcl process; see variable `inferior-tcl-buffer'")))) - -(defun tcl-eval-region (start end &optional and-go) - "Send the current region to the inferior Tcl process. -Prefix argument means switch to the Tcl buffer afterwards." - (interactive "r\nP") - (let ((proc (inferior-tcl-proc))) - (tcl-send-region proc start end) - (tcl-send-string proc "\n") - (if and-go (switch-to-tcl t)))) - -(defun tcl-eval-defun (&optional and-go) - "Send the current defun to the inferior Tcl process. -Prefix argument means switch to the Tcl buffer afterwards." - (interactive "P") - (save-excursion - (tcl-end-of-defun) - (let ((end (point))) - (tcl-beginning-of-defun) - (tcl-eval-region (point) end))) - (if and-go (switch-to-tcl t))) - - - -;; -;; Inferior Tcl mode itself. -;; - -(defun inferior-tcl-mode () - "Major mode for interacting with Tcl interpreter. - -A Tcl process can be started with M-x inferior-tcl. - -Entry to this mode runs the hooks comint-mode-hook and -inferior-tcl-mode-hook, in that order. - -You can send text to the inferior Tcl process from other buffers -containing Tcl source. - -Variables controlling Inferior Tcl mode: - tcl-application - Name of program to run. - tcl-command-switches - Command line arguments to `tcl-application'. - tcl-prompt-regexp - Matches prompt. - inferior-tcl-source-command - Command to use to read Tcl file in running application. - inferior-tcl-buffer - The current inferior Tcl process buffer. See variable - documentation for details on multiple-process support. - -The following commands are available: -\\{inferior-tcl-mode-map}" - (interactive) - (comint-mode) - (setq comint-prompt-regexp (or tcl-prompt-regexp - (concat "^" - (regexp-quote tcl-application) - ">"))) - (setq major-mode 'inferior-tcl-mode) - (setq mode-name "Inferior Tcl") - (if (boundp 'modeline-process) - (setq modeline-process '(": %s")) ; For XEmacs. - (setq mode-line-process '(": %s"))) - (use-local-map inferior-tcl-mode-map) - (setq local-abbrev-table tcl-mode-abbrev-table) - (set-syntax-table tcl-mode-syntax-table) - (if tcl-using-emacs-19 - (progn - (make-local-variable 'defun-prompt-regexp) - (setq defun-prompt-regexp tcl-omit-ws-regexp))) - (make-local-variable 'inferior-tcl-delete-prompt-marker) - (setq inferior-tcl-delete-prompt-marker (make-marker)) - (set-process-filter (get-buffer-process (current-buffer)) 'tcl-filter) - (run-hooks 'inferior-tcl-mode-hook)) - -;;;###autoload -(defun inferior-tcl (cmd) - "Run inferior Tcl process. -Prefix arg means enter program name interactively. -See documentation for function `inferior-tcl-mode' for more information." - (interactive - (list (if current-prefix-arg - (read-string "Run Tcl: " tcl-application) - tcl-application))) - (if (not (comint-check-proc "*inferior-tcl*")) - (progn - (set-buffer (apply (function make-comint) "inferior-tcl" cmd nil - tcl-command-switches)) - (inferior-tcl-mode))) - (make-local-variable 'tcl-application) - (setq tcl-application cmd) - (setq inferior-tcl-buffer "*inferior-tcl*") - (switch-to-buffer "*inferior-tcl*")) - -(and (fboundp 'defalias) - (defalias 'run-tcl 'inferior-tcl)) - - - -;; -;; Auto-fill support. -;; - -(defun tcl-real-command-p () - "Return nil if point is not at the beginning of a command. -A command is the first word on an otherwise empty line, or the -first word following a semicolon, opening brace, or opening bracket." - (save-excursion - (skip-chars-backward " \t") - (cond - ((bobp) t) - ((bolp) - (backward-char) - ;; Note -- continued comments are not supported here. I - ;; consider those to be a wart on the language. - (not (eq ?\\ (preceding-char)))) - (t - (memq (preceding-char) '(?\; ?{ ?\[)))))) - -;; FIXME doesn't actually return t. See last case. -(defun tcl-real-comment-p () - "Return t if point is just after the `#' beginning a real comment. -Does not check to see if previous char is actually `#'. -A real comment is either at the beginning of the buffer, -preceeded only by whitespace on the line, or has a preceeding -semicolon, opening brace, or opening bracket on the same line." - (save-excursion - (backward-char) - (tcl-real-command-p))) - -(defun tcl-hairy-scan-for-comment (state end always-stop) - "Determine if point is in a comment. -Returns a list of the form `(FLAG . STATE)'. STATE can be used -as input to future invocations. FLAG is nil if not in comment, -t otherwise. If in comment, leaves point at beginning of comment. -Only works in Emacs 19. See also `tcl-simple-scan-for-comment', a -simpler version that is often right, and works in Emacs 18." - (let ((bol (save-excursion - (goto-char end) - (beginning-of-line) - (point))) - real-comment - last-cstart) - (while (and (not last-cstart) (< (point) end)) - (setq real-comment nil) ;In case we've looped around and it is - ;set. - (setq state (parse-partial-sexp (point) end nil nil state t)) - (if (nth 4 state) - (progn - ;; If ALWAYS-STOP is set, stop even if we don't have a - ;; real comment, or if the comment isn't on the same line - ;; as the end. - (if always-stop (setq last-cstart (point))) - ;; If we have a real comment, then set the comment - ;; starting point if we are on the same line as the ending - ;; location. - (setq real-comment (tcl-real-comment-p)) - (if real-comment - (progn - (and (> (point) bol) (setq last-cstart (point))) - ;; NOTE Emacs 19 has a misfeature whereby calling - ;; parse-partial-sexp with COMMENTSTOP set and with - ;; an initial list that says point is in a comment - ;; will cause an immediate return. So we must skip - ;; over the comment ourselves. - (beginning-of-line 2))) - ;; Frob the state to make it look like we aren't in a - ;; comment. - (setcar (nthcdr 4 state) nil)))) - (and last-cstart - (goto-char last-cstart)) - (cons real-comment state))) - -(defun tcl-hairy-in-comment () - "Return t if point is in a comment, and leave point at beginning -of comment." - (let ((save (point))) - (tcl-beginning-of-defun) - (car (tcl-hairy-scan-for-comment nil save nil)))) - -(defun tcl-simple-in-comment () - "Return t if point is in comment, and leave point at beginning -of comment. This is faster that `tcl-hairy-in-comment', but is -correct less often." - (let ((save (point)) - comment) - (beginning-of-line) - (while (and (< (point) save) (not comment)) - (search-forward "#" save 'move) - (setq comment (tcl-real-comment-p))) - comment)) - -(defun tcl-in-comment () - "Return t if point is in comment, and leave point at beginning -of comment." - (if (and tcl-pps-has-arg-6 - tcl-use-hairy-comment-detector) - (tcl-hairy-in-comment) - (tcl-simple-in-comment))) - -(defun tcl-do-fill-paragraph (ignore) - "fill-paragraph function for Tcl mode. Only fills in a comment." - (let (in-comment col where) - (save-excursion - (end-of-line) - (setq in-comment (tcl-in-comment)) - (if in-comment - (progn - (setq where (1+ (point))) - (setq col (1- (current-column)))))) - (and in-comment - (save-excursion - (back-to-indentation) - (= col (current-column))) - ;; In a comment. Set the fill prefix, and find the paragraph - ;; boundaries by searching for lines that look like - ;; comment-only lines. - (let ((fill-prefix (buffer-substring (progn - (beginning-of-line) - (point)) - where)) - p-start p-end) - ;; Search backwards. - (save-excursion - (while (looking-at "^[ \t]*#") - (forward-line -1)) - (forward-line) - (setq p-start (point))) - - ;; Search forwards. - (save-excursion - (while (looking-at "^[ \t]*#") - (forward-line)) - (setq p-end (point))) - - ;; Narrow and do the fill. - (save-restriction - (narrow-to-region p-start p-end) - (fill-paragraph ignore))))) - t) - -(defun tcl-do-auto-fill () - "Auto-fill function for Tcl mode. Only auto-fills in a comment." - (if (> (current-column) fill-column) - (let ((fill-prefix "# ") - in-comment col) - (save-excursion - (setq in-comment (tcl-in-comment)) - (if in-comment - (setq col (1- (current-column))))) - (if in-comment - (progn - (do-auto-fill) - (save-excursion - (back-to-indentation) - (delete-region (point) (save-excursion - (beginning-of-line) - (point))) - (indent-to-column col))))))) - - - -;; -;; Help-related code. -;; - -(defvar tcl-help-saved-dirs nil - "Saved help directories. -If `tcl-help-directory-list' changes, this allows `tcl-help-on-word' -to update the alist.") - -(defvar tcl-help-alist nil - "Alist with command names as keys and filenames as values.") - -(defun tcl-help-snarf-commands (dirlist) - "Build alist of commands and filenames." - (while dirlist - (let ((files (directory-files (car dirlist) t))) - (while files - (if (and (file-directory-p (car files)) - (not - (let ((fpart (file-name-nondirectory (car files)))) - (or (equal fpart ".") - (equal fpart ".."))))) - (let ((matches (directory-files (car files) t))) - (while matches - (or (file-directory-p (car matches)) - (setq tcl-help-alist - (cons - (cons (file-name-nondirectory (car matches)) - (car matches)) - tcl-help-alist))) - (setq matches (cdr matches))))) - (setq files (cdr files)))) - (setq dirlist (cdr dirlist)))) - -(defun tcl-reread-help-files () - "Set up to re-read files, and then do it." - (interactive) - (message "Building Tcl help file index...") - (setq tcl-help-saved-dirs tcl-help-directory-list) - (setq tcl-help-alist nil) - (tcl-help-snarf-commands tcl-help-directory-list) - (message "Building Tcl help file index...done")) - -(defun tcl-word-no-props () - "Like current-word, but strips properties." - (let ((word (current-word))) - (and (fboundp 'set-text-properties) - (set-text-properties 0 (length word) nil word)) - word)) - -(defun tcl-current-word (flag) - "Return current command word, or nil. -If FLAG is nil, just uses `current-word'. -Otherwise scans backward for most likely Tcl command word." - (if (and flag - (memq major-mode '(tcl-mode inferior-tcl-mode))) - (condition-case nil - (save-excursion - ;; Look backward for first word actually in alist. - (if (bobp) - () - (while (and (not (bobp)) - (not (tcl-real-command-p))) - (backward-sexp))) - (if (assoc (tcl-word-no-props) tcl-help-alist) - (tcl-word-no-props))) - (error nil)) - (tcl-word-no-props))) - -;;;###autoload -(defun tcl-help-on-word (command &optional arg) - "Get help on Tcl command. Default is word at point. -Prefix argument means invert sense of `tcl-use-smart-word-finder'." - (interactive - (list - (progn - (if (not (equal tcl-help-directory-list tcl-help-saved-dirs)) - (tcl-reread-help-files)) - (let ((word (tcl-current-word - (if current-prefix-arg - (not tcl-use-smart-word-finder) - tcl-use-smart-word-finder)))) - (completing-read - (if (or (null word) (string= word "")) - "Help on Tcl command: " - (format "Help on Tcl command (default %s): " word)) - tcl-help-alist nil t))) - current-prefix-arg)) - (if (not (equal tcl-help-directory-list tcl-help-saved-dirs)) - (tcl-reread-help-files)) - (if (string= command "") - (setq command (tcl-current-word - (if arg - (not tcl-use-smart-word-finder) - tcl-use-smart-word-finder)))) - (let* ((help (get-buffer-create "*Tcl help*")) - (cell (assoc command tcl-help-alist)) - (file (and cell (cdr cell)))) - (set-buffer help) - (delete-region (point-min) (point-max)) - (if file - (progn - (insert "*** " command "\n\n") - (insert-file-contents file)) - (if (string= command "") - (insert "Magical Pig!") - (insert "Tcl command " command " not in help\n"))) - (set-buffer-modified-p nil) - (goto-char (point-min)) - (display-buffer help))) - - - -;; -;; Other interactive stuff. -;; - -(defvar tcl-previous-dir/file nil - "Record last directory and file used in loading. -This holds a cons cell of the form `(DIRECTORY . FILE)' -describing the last `tcl-load-file' command.") - -(defun tcl-load-file (file &optional and-go) - "Load a Tcl file into the inferior Tcl process. -Prefix argument means switch to the Tcl buffer afterwards." - (interactive - (list - ;; car because comint-get-source returns a list holding the - ;; filename. - (car (comint-get-source "Load Tcl file: " - (or (and - (eq major-mode 'tcl-mode) - (buffer-file-name)) - tcl-previous-dir/file) - '(tcl-mode) t)) - current-prefix-arg)) - (comint-check-source file) - (setq tcl-previous-dir/file (cons (file-name-directory file) - (file-name-nondirectory file))) - (tcl-send-string (inferior-tcl-proc) - (format inferior-tcl-source-command (tcl-quote file))) - (if and-go (switch-to-tcl t))) - -(defun tcl-restart-with-file (file &optional and-go) - "Restart inferior Tcl with file. -If an inferior Tcl process exists, it is killed first. -Prefix argument means switch to the Tcl buffer afterwards." - (interactive - (list - (car (comint-get-source "Restart with Tcl file: " - (or (and - (eq major-mode 'tcl-mode) - (buffer-file-name)) - tcl-previous-dir/file) - '(tcl-mode) t)) - current-prefix-arg)) - (let* ((buf (if (eq major-mode 'inferior-tcl-mode) - (current-buffer) - inferior-tcl-buffer)) - (proc (and buf (get-process buf)))) - (cond - ((not (and buf (get-buffer buf))) - ;; I think this will be ok. - (inferior-tcl tcl-application) - (tcl-load-file file and-go)) - ((or - (not (comint-check-proc buf)) - (yes-or-no-p - "A Tcl process is running, are you sure you want to reset it? ")) - (save-excursion - (comint-check-source file) - (setq tcl-previous-dir/file (cons (file-name-directory file) - (file-name-nondirectory file))) - (comint-exec (get-buffer-create buf) - (if proc - (process-name proc) - "inferior-tcl") - tcl-application file tcl-command-switches) - (if and-go (switch-to-tcl t))))))) - -;; FIXME I imagine you can do this under Emacs 18. I just don't know -;; how. -(defun tcl-auto-fill-mode (&optional arg) - "Like `auto-fill-mode', but controls filling of Tcl comments." - (interactive "P") - (and (not tcl-using-emacs-19) - (error "You must use Emacs 19 to get this feature.")) - ;; Following code taken from "auto-fill-mode" (simple.el). - (prog1 - (setq auto-fill-function - (if (if (null arg) - (not auto-fill-function) - (> (prefix-numeric-value arg) 0)) - 'tcl-do-auto-fill - nil)) - (force-mode-line-update))) - -;; hilit19 support from "Chris Alfeld" -(defun tcl-hilit () - (hilit-set-mode-patterns - '(tcl-mode) - '( - ("\\(^ *\\|\; *\\)#.*$" nil comment) - ("[^\\]\\(\\$[A-Za-z0-9\\-\\_./\\(\\)]+\\)" 1 label) - ("[^_]\\<\\(append\\|array\\|auto_execok\\|auto_load\\|auto_mkindex\\|auto_reset\\|break\\|case\\|catch\\|cd\\|close\\|concat\\|continue\\|eof\\|error\\|eval\\|exec\\|exit\\|expr\\|file\\|flush\\|for\\|foreach\\|format\\|gets\\|glob\\|global\\|history\\|if\\|incr\\|info\\|join\\|lappend\\|lindex\\|linsert\\|list\\|llength\\|lrange\\|lreplace\\|lsearch\\|lsort\\|open\\|pid\\|proc\\|puts\\|pwd\\|read\\|regexp\\|regsub\\|rename\\|return\\|scan\\|seek\\|set\\|source\\|split\\|string\\|switch\\|tell\\|time\\|trace\\|unknown\\|unset\\|uplevel\\|upvar\\|while\\)\\>[^_]" 1 keyword) ; tcl keywords - ("[^_]\\<\\(after\\|bell\\|bind\\|bindtags\\|clipboard\\|destroy\\|fileevent\\|focus\\|grab\\|image\\|lower\\|option\\|pack\\|place\\|raise\\|scale\\|selection\\|send\\|subst\\|tk\\|tk_popup\\|tkwait\\|update\\|winfo\\|wm\\)\\>[^_]" 1 define) ; tk keywords - ("[^_]\\<\\(button\\|canvas\\|checkbutton\\|entry\\|frame\\|label\\|listbox\\|menu\\|menubutton\\|message\\|radiobutton\\|scrollbar\\|text\\|toplevel\\)\\>[^_]" 1 decl) ; tk widgets - ("[^_]\\<\\(tix\\((ButtonBox\\|Baloon\\|Control\\|DirList\\|ExFileSelectBox\\|ExFileSelectDialog\\|FileEntry\\|HList\\|LabelEntry\\|LabelFrame\\|NoteBook\\|OptionMenu\\|PanedWindow\\|PopupMenu\\|ScrolledHList\\|ScrolledText\\|ScrolledWindow\\|Select\\|StdButtonBox\\)\\)\\>[^_]" 1 defun) ; tix widgets - ("[{}\\\"\\(\\)]" nil include) ; misc punctuation - ))) - -(defun tcl-electric-hash (&optional count) - "Insert a `#' and quote if it does not start a real comment. -Prefix arg is number of `#'s to insert. -See variable `tcl-electric-hash-style' for description of quoting -styles." - (interactive "p") - (or count (setq count 1)) - (if (> count 0) - (let ((type - (if (eq tcl-electric-hash-style 'smart) - (if (> count 3) ; FIXME what is "smart"? - 'quote - 'backslash) - tcl-electric-hash-style)) - comment) - (if type - (progn - (save-excursion - (insert "#") - (setq comment (tcl-in-comment))) - (delete-char 1) - (and tcl-explain-indentation (message "comment: %s" comment)) - (cond - ((eq type 'quote) - (if (not comment) - (insert "\""))) - ((eq type 'backslash) - ;; The following will set count to 0, so the - ;; insert-char can still be run. - (if (not comment) - (while (> count 0) - (insert "\\#") - (setq count (1- count))))) - (t nil)))) - (insert-char ?# count)))) - -(defun tcl-hashify-buffer () - "Quote all `#'s in current buffer that aren't Tcl comments." - (interactive) - (save-excursion - (goto-char (point-min)) - (if (and tcl-pps-has-arg-6 tcl-use-hairy-comment-detector) - (let (state - result) - (while (< (point) (point-max)) - (setq result (tcl-hairy-scan-for-comment state (point-max) t)) - (if (car result) - (beginning-of-line 2) - (backward-char) - (if (eq ?# (following-char)) - (insert "\\")) - (forward-char)) - (setq state (cdr result)))) - (while (and (< (point) (point-max)) - (search-forward "#" nil 'move)) - (if (tcl-real-comment-p) - (beginning-of-line 2) - ;; There's really no good way for the simple converter to - ;; work. So we just quote # if it isn't already quoted. - ;; Bogus, but it works. - (backward-char) - (if (not (eq ?\\ (preceding-char))) - (insert "\\")) - (forward-char)))))) - -(defun tcl-indent-for-comment () - "Indent this line's comment to comment column, or insert an empty comment. -Is smart about syntax of Tcl comments. -Parts of this were taken from indent-for-comment (simple.el)." - (interactive "*") - (end-of-line) - (or (tcl-in-comment) - (progn - ;; Not in a comment, so we have to insert one. Create an - ;; empty comment (since there isn't one on this line). If - ;; line is not blank, make sure we insert a ";" first. - (skip-chars-backward " \t") - (let ((eolpoint (point))) - (beginning-of-line) - (if (/= (point) eolpoint) - (progn - (goto-char eolpoint) - (insert - (if (tcl-real-command-p) "" ";") - "# ") - (backward-char)))))) - ;; Point is just after the "#" starting a comment. Move it as - ;; appropriate. - (let* ((indent (if comment-indent-hook - (funcall comment-indent-hook) - (funcall comment-indent-function))) - (begpos (progn - (backward-char) - (point)))) - (if (/= begpos indent) - (progn - (skip-chars-backward " \t" (save-excursion - (beginning-of-line) - (point))) - (delete-region (point) begpos) - (indent-to indent))) - (looking-at comment-start-skip) ; Always true. - (goto-char (match-end 0)) - ;; I don't like the effect of the next two. - ;;(skip-chars-backward " \t" (match-beginning 0)) - ;;(skip-chars-backward "^ \t" (match-beginning 0)) - )) - -;; The following was inspired by the Tcl editing mode written by -;; Gregor Schmid . His version also -;; attempts to snarf the command line options from the command line, -;; but I didn't think that would really be that helpful (doesn't seem -;; like it owould be right enough. His version also looks for the -;; "#!/bin/csh ... exec" hack, but that seemed even less useful. -;; FIXME should make sure that the application mentioned actually -;; exists. -(defun tcl-guess-application () - "Attempt to guess Tcl application by looking at first line. -The first line is assumed to look like \"#!.../program ...\"." - (save-excursion - (goto-char (point-min)) - (if (looking-at "#![^ \t]*/\\([^ \t\n/]+\\)\\([ \t]\\|$\\)") - (progn - (make-local-variable 'tcl-application) - (setq tcl-application (buffer-substring (match-beginning 1) - (match-end 1))))))) - -;; This only exists to put on the menubar. I couldn't figure out any -;; other way to do it. FIXME should take "number of #-marks" -;; argument. -(defun tcl-uncomment-region (beg end) - "Uncomment region." - (interactive "r") - (comment-region beg end -1)) - - - -;; -;; XEmacs menu support. -;; Taken from schmid@fb3-s7.math.TU-Berlin.DE (Gregor Schmid), -;; who wrote a different Tcl mode. -;; We also have support for menus in FSF. We do this by -;; loading the XEmacs menu emulation code. -;; - -(defun tcl-popup-menu (e) - (interactive "@e") - (and tcl-using-emacs-19 - (not tcl-using-xemacs-19) - (if tcl-using-emacs-19-23 - (require 'lmenu) - ;; CAVEATS: - ;; * lmenu.el provides 'menubar, which is bogus. - ;; * lmenu.el causes menubars to be turned on everywhere. - ;; Doubly bogus! - ;; Both of these problems are fixed in Emacs 19.23. People - ;; using an Emacs before that just suffer. - (require 'menubar "lmenu"))) ;; This is annoying - ;; IMHO popup-menu should be autoloaded in FSF Emacs. Oh well. - (popup-menu tcl-xemacs-menu)) - - - -;; -;; Quoting and unquoting functions. -;; - -;; This quoting is sufficient to protect eg a filename from any sort -;; of expansion or splitting. Tcl quoting sure sucks. -(defun tcl-quote (string) - "Quote STRING according to Tcl rules." - (mapconcat (function (lambda (char) - (if (memq char '(?[ ?] ?{ ?} ?\\ ?\" ?$ ? ?\;)) - (concat "\\" (char-to-string char)) - (char-to-string char)))) - string "")) - - - -;; -;; Bug reporting. -;; - -(and (fboundp 'eval-when-compile) - (eval-when-compile - (require 'reporter))) - -(defun tcl-submit-bug-report () - "Submit via mail a bug report on Tcl mode." - (interactive) - (require 'reporter) - (and - (y-or-n-p "Do you really want to submit a bug report on Tcl mode? ") - (reporter-submit-bug-report - tcl-maintainer - (concat "Tcl mode " tcl-version) - '(tcl-indent-level - tcl-continued-indent-level - tcl-auto-newline - tcl-tab-always-indent - tcl-use-hairy-comment-detector - tcl-electric-hash-style - tcl-help-directory-list - tcl-use-smart-word-finder - tcl-application - tcl-command-switches - tcl-prompt-regexp - inferior-tcl-source-command - tcl-using-emacs-19 - tcl-using-emacs-19-23 - tcl-using-xemacs-19 - tcl-proc-list - tcl-proc-regexp - tcl-typeword-list - tcl-keyword-list - tcl-font-lock-keywords - tcl-pps-has-arg-6)))) - - - -(provide 'tcl) - -;;; tcl.el ends here diff --git a/contrib/bluegnu2.0.3/testsets/BlueGnu/appendQueue.itcl b/contrib/bluegnu2.0.3/testsets/BlueGnu/appendQueue.itcl deleted file mode 100644 index fcdf33d..0000000 --- a/contrib/bluegnu2.0.3/testsets/BlueGnu/appendQueue.itcl +++ /dev/null @@ -1,9 +0,0 @@ -# -# Test script for appendQueue command -# - -#appendQueue [list namespaceVariables.itcl namespaceVariables.itcl \ - namespaceVariables.itcl] "arg1 arg2 arg3" append - -appendQueue [list namespaceVariables.itcl namespaceVariables.itcl \ - namespaceVariables.itcl] diff --git a/contrib/bluegnu2.0.3/testsets/BlueGnu/clone_output.itcl b/contrib/bluegnu2.0.3/testsets/BlueGnu/clone_output.itcl deleted file mode 100644 index 56ff9cb..0000000 --- a/contrib/bluegnu2.0.3/testsets/BlueGnu/clone_output.itcl +++ /dev/null @@ -1,156 +0,0 @@ -# -# This test check the BlueGnu command clone_output -# - -verbose "all_flag: >$::BlueGnu::all_flag<" - -BlueGnu_overwrite [namespace current] - -set szCurrent [::BlueGnu::clone_output "namespace: >[namespace current]<"] - -set szSendUser [::BlueGnu::clone_output "send_user: >[info body ::send_user]<"] - -# Checking default messages -# -catch {unset sending} -::BlueGnu::clone_output "Hello there!" -::BlueGnu::clone_output " [array names sending]" -if [catch { - if {$sending(USER) && ([llength [array names sending]] == 1)} { - pass "Default message" - } else { - fail "Default Message: [array names sending]" - } -} szErrMsg] { - ::BlueGnu::clone_output "####### $szErrMsg\n \ - sending([join [array names sending] ")\n sending("])" - perror "Missing sending array elements" -} - -# Checking the PASS type messages -# -foreach szMsg {"PASS: hello there!" "XFAIL: hello there!"} { - catch {unset sending} - ::BlueGnu::clone_output $szMsg - if {$::BlueGnu::all_flag} { - if [catch { - if {$sending(USER) && $sending(LOG) && \ - ([llength [array names sending]] == 2)} { - pass "PASS message" - } else { - fail "PASS Message: [array names sending]" - } - } szErrMsg] { - ::BlueGnu::clone_output "####### $szErrMsg\n \ - sending([join [array names sending] ")\n \ - sending("])" - perror "Missing sending array elements" - } - } else { - if [catch { - if {$sending(LOG) && ([llength [array names sending]] == 1)} { - pass "PASS message" - } else { - fail "PASS Message: [array names sending]" - } - } szErrMsg] { - ::BlueGnu::clone_output "####### $szErrMsg\n \ - sending([join [array names sending] ")\n \ - sending("])" - perror "Missing sending array elements" - } - } -} - -# Checking the fail type messages -# -foreach szMsg {"FAIL: Hallo daar!" "XPASS: Hallo daar!" \ - "UNRESOLVED: Hello unresolved!" "UNSUPPORTED: Hello unsupported!" \ - "UNTESTED: not tested!"} { - catch {unset sending} - ::BlueGnu::clone_output $szMsg - if [catch { - if {$sending(USER) && $sending(LOG) && \ - ([llength [array names sending]] == 2)} { - pass "PASS message" - } else { - fail "PASS Message: [array names sending]" - } - } szErrMsg] { - ::BlueGnu::clone_output "####### $szErrMsg\n \ - sending([join [array names sending] ")\n sending("])" - perror "Missing sending array elements" - } -} - -# Checking ERROR type messages -# -catch {unset sending} -::BlueGnu::clone_output "ERROR: hallo daar!" -if [catch { - if {$sending(LOG) && $sending(ERROR) && \ - ([llength [array names sending]] == 2)} { - pass "PASS message" - } else { - fail "PASS Message: [array names sending]" - } -} szErrMsg] { - ::BlueGnu::clone_output "####### $szErrMsg\n \ - sending([join [array names sending] ")\n sending("])" - perror "Missing sending array elements" -} - -# Checking WARNING type message -# -foreach szMsg {"WARNING: Hello there!" "NOTE: Hello there!"} { - catch {unset sending} - ::BlueGnu::clone_output $szMsg - if {$::BlueGnu::all_flag} { - if [catch { - if {$sending(ERROR) && $sending(LOG) && \ - ([llength [array names sending]] == 2)} { - pass "PASS message" - } else { - fail "PASS Message: [array names sending]" - } - } szErrMsg] { - ::BlueGnu::clone_output "####### $szErrMsg\n \ - sending([join [array names sending] ")\n \ - sending("])" - perror "Missing sending array elements" - } - } else { - if [catch { - if {$sending(LOG) && ([llength [array names sending]] == 1)} { - pass "PASS message" - } else { - fail "PASS Message: [array names sending]" - } - } szErrMsg] { - ::BlueGnu::clone_output "####### $szErrMsg\n \ - sending([join [array names sending] ")\n \ - sending("])" - perror "Missing sending array elements" - } - } -} - -# Checking ******* type messages -# -catch {unset sending} -::BlueGnu::clone_output "******* Ik zie sterretjes!" -if [catch { - if {$sending(USER) && ([llength [array names sending]] == 1)} { - pass "PASS message" - } else { - fail "PASS Message: [array names sending]" - } -} szErrMsg] { - ::BlueGnu::clone_output "####### $szErrMsg\n \ - sending([join [array names sending] ")\n sending("])" - perror "Missing sending array elements" -} - -catch {unset sending} - -BlueGnu_restore \ No newline at end of file diff --git a/contrib/bluegnu2.0.3/testsets/BlueGnu/locateFile.itcl b/contrib/bluegnu2.0.3/testsets/BlueGnu/locateFile.itcl deleted file mode 100644 index 9f629e9..0000000 --- a/contrib/bluegnu2.0.3/testsets/BlueGnu/locateFile.itcl +++ /dev/null @@ -1,46 +0,0 @@ -# -# Unit test for command: locateFile -# - -note "[locateFile A.itcl]" - - -if {[regexp {verbose.itcl$} [locateFile verbose.itcl]]} { - pass "Found verbose.itcl as >[locateFile verbose.itcl]<" -} else { - fail "Couldn't find verbose.itcl" -} -if {[regexp {lib/bug.exp$} [locateFile bug.exp lib]]} { - pass "Found bug.exp as >[locateFile bug.exp lib]<" -} else { - fail "Couldn't find bug.exp" -} -if {[regexp {testsuite/T/test_004.exp$} \ - [locateFile test_004.exp testsuite/T]]} { - pass "Found test_004.exp as >[locateFile test_004.exp testsuite/T]<" -} else { - fail "Couldn't find test_004.exp as\ - >\[locateFile test_004.exp testsuite/T\]<" -} -if {[regexp {testsuite/T/test_004.exp$} \ - [locateFile test_004.exp testsuite]]} { - pass "Found test_004.exp as >[locateFile test_004.exp testsuite]<" -} else { - fail "Couldn't find test_004.exp as\ - >\[locateFile test_004.exp testsuite\]<" -} -if {[regexp {testsuite/T/test_004.exp$} \ - [locateFile test_004.exp T]]} { - pass "Found test_004.exp as >[locateFile test_004.exp T]<" -} else { - fail "Couldn't find test_004.exp as\ - >\[locateFile test_004.exp T\]<" -} -if {[regexp {testsuite/T/test_004.exp$} \ - [locateFile test_004.exp]]} { - pass "Found test_004.exp as >[locateFile test_004.exp]<" -} else { - fail "Couldn't find test_004.exp as\ - >\[locateFile test_004.exp testsuite\]<" -} - diff --git a/contrib/bluegnu2.0.3/testsets/BlueGnu/namespaceVariables.itcl b/contrib/bluegnu2.0.3/testsets/BlueGnu/namespaceVariables.itcl deleted file mode 100644 index c1143dc..0000000 --- a/contrib/bluegnu2.0.3/testsets/BlueGnu/namespaceVariables.itcl +++ /dev/null @@ -1,36 +0,0 @@ -# -# This test script prints the namespace variables -# pass the the test script when available varibale matches the expected -# and visa versa -# - -proc checkVars {} { - set lExpectedVars [list \ - bTestCase \ - iArgs lArgs \ - szID szName \ - szScriptName szTool \ - szTestCase szTestCaseID szTestCaseArgs \ - ] - set lVars [uplevel info vars] - note "Available Variable:" - foreach v [lsort $lVars] { - if {[lsearch [info globals] $v] < 0} { - note "[format %15s $v] = >[uplevel set $v]<" - if {[lsearch $lExpectedVars $v] >= 0} { - pass "Available variable >$v< in list of expected" - } else { - fail "Available variable >$v< NOT in list of expected" - } - } - } - foreach v $lExpectedVars { - if {[lsearch $lVars $v] >= 0} { - pass "Expected variable >$v< in list of available" - } else { - fail "Expected variable >$v< NOT in list of available" - } - } -} - -checkVars diff --git a/contrib/bluegnu2.0.3/testsets/BlueGnu/prependQueue.itcl b/contrib/bluegnu2.0.3/testsets/BlueGnu/prependQueue.itcl deleted file mode 100644 index 66bf2ab..0000000 --- a/contrib/bluegnu2.0.3/testsets/BlueGnu/prependQueue.itcl +++ /dev/null @@ -1,6 +0,0 @@ -# -# Test script for prependQueue command -# - -prependQueue [list namespaceVariables.itcl namespaceVariables.itcl \ - namespaceVariables.itcl] arg2 prepend diff --git a/contrib/bluegnu2.0.3/testsets/BlueGnu/runtest.itcl b/contrib/bluegnu2.0.3/testsets/BlueGnu/runtest.itcl deleted file mode 100644 index 0768026..0000000 --- a/contrib/bluegnu2.0.3/testsets/BlueGnu/runtest.itcl +++ /dev/null @@ -1,19 +0,0 @@ -# -# This script is testing the runtest command -# - -#runtest [list A.itcl\[1\]=arg A.itcl\[2\]=arg] -runtest [list namespaceVariables.itcl namespaceVariables.itcl] - -#note "test scripts: >>>>\n[join [parseTest A.itcl A.itcl\[2=x=y\]=arg2 \ - [list A.itcl\[1\] A.itcl]] "\n"]<<<<" -#note "test scripts: >>>>\n[join [appendTestCaseID [appendArguments \ - [parseTest A.itcl A.itcl\[2=x=y\]=arg2 \ - [list A.itcl\[1\] A.itcl]] XYZ=abc] DEF] "\n"]<<<<" - -#note "test scripts: >[appendTestCaseID \ - [list A.itcl\[DEF\]=xyz=100 A.itcl\[GHI\]=xyz=200] =SSN=00101001]<" - -#note "test scripts: >[appendArguments \ - [list A.itcl A.itcl=SSN=001010001 \ - A.itcl\[1\] A.itcl\[2\]=SSN=001010001] BODS=ABC]<" \ No newline at end of file diff --git a/contrib/bluegnu2.0.3/testsets/BlueGnu/testNaming.itcl b/contrib/bluegnu2.0.3/testsets/BlueGnu/testNaming.itcl deleted file mode 100644 index af13995..0000000 --- a/contrib/bluegnu2.0.3/testsets/BlueGnu/testNaming.itcl +++ /dev/null @@ -1,19 +0,0 @@ -# -# This test script test the commands: -# appendArguments -# appendTestCaseID -# - - -note "[appendTestCaseID A ID]" -note "[appendTestCaseID [list A B C] ID]" -note "[appendTestCaseID A ID=arg1=100]" -note "[appendTestCaseID [list A B C] ID=arg2]" -note "[appendTestCaseID [appendArguments A arg1] ID]" -note "[appendArguments [appendTestCaseID B ID] arg1]" -note "[appendTestCaseID [appendArguments [list A B C] arg1] ID]" -note "[appendArguments [appendTestCaseID [list X Y Z] ID] arg1]" -note "[appendTestCaseID [appendArguments [list A B C] \ - "arg1=1 arg2 arg3=100"] ID]" -note "[appendArguments [appendTestCaseID [list X Y Z] ID] \ - "arg1=1 arg2 arg3=100"]" diff --git a/contrib/bluegnu2.0.3/testsets/BlueGnu/ts001/A.itcl b/contrib/bluegnu2.0.3/testsets/BlueGnu/ts001/A.itcl deleted file mode 100644 index b3ac5f9..0000000 --- a/contrib/bluegnu2.0.3/testsets/BlueGnu/ts001/A.itcl +++ /dev/null @@ -1 +0,0 @@ -note "ts001/A.itcl" diff --git a/contrib/bluegnu2.0.3/testsets/BlueGnu/ts002/A.itcl b/contrib/bluegnu2.0.3/testsets/BlueGnu/ts002/A.itcl deleted file mode 100644 index 9d61374..0000000 --- a/contrib/bluegnu2.0.3/testsets/BlueGnu/ts002/A.itcl +++ /dev/null @@ -1 +0,0 @@ -note "ts002/A.itcl" diff --git a/contrib/bluegnu2.0.3/testsets/BlueGnu/types.itcl b/contrib/bluegnu2.0.3/testsets/BlueGnu/types.itcl deleted file mode 100644 index 0911f9c..0000000 --- a/contrib/bluegnu2.0.3/testsets/BlueGnu/types.itcl +++ /dev/null @@ -1,55 +0,0 @@ -# -*-Tcl-*- -# -# Checking Type definition -# - -verbose "auto_path: >[set auto_path]<" - -verbose [Type A 100] -verbose [set A] -verbose $A -verbose [A value] - -namespace eval TN { - verbose [Type B 200] - verbose [set B] - verbose $B - verbose [B value] - verbose [::itcl::find objects] -} - -verbose [::itcl::find objects] - -namespace eval TN { - verbose [::itcl::find objects] -} - -proc Y {} { - proc YY {} { - puts "in YY" - } - set Tmp 100 - verbose {[Type C 200]} - verbose {[set C]} - verbose {$C} - verbose {[C value]} - verbose {[set C 400]} - verbose {[set C]} - verbose {Locals: >[info locals]<} - verbose {Globals: >[info globals]<} - verbose {Vars: >[info vars]<} - verbose {Commands: >[lsort [split [info commands]]]<} - verbose {[::itcl::find objects]} - verbose {A: >[A value]<} -} - -verbose "################################ Doing Y" -Y -YY -rename Y "" -YY - -verbose {[::itcl::find objects]} - -verbose [Type Z text] -delete object Z diff --git a/contrib/bluegnu2.0.3/testsets/BlueGnu/verbose.itcl b/contrib/bluegnu2.0.3/testsets/BlueGnu/verbose.itcl deleted file mode 100644 index 90d208f..0000000 --- a/contrib/bluegnu2.0.3/testsets/BlueGnu/verbose.itcl +++ /dev/null @@ -1,562 +0,0 @@ -# -# test for verbose levels -# -# - -global verbose - -verbose "verbose level: >$verbose<" 0 - -# Modify output procedures to return instead of doing output -# -uplevel #0 { - rename send_user send_user_saved - rename send_error send_error_saved - rename send_log send_log_saved - proc send_user args { - eval return "\{USER: [join $args]\}" - } - proc send_error args { - eval return "\{ERROR: [join $args]\}" - } - proc send_log args { - eval return "\{LOG: [join $args]\}" - } -} - -# Checkin verbose with out any swicthes -# -foreach level {0 1} { - set szV [verbose "some text" $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - pass "$szV" - } else { - fail "Expected NL at end of >$szV<" - } - } - } else { - fail "Didn't used send_user" - } - } - } - - set szV [verbose {[set l some text]} $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - pass "$szV" - } else { - fail "Expected NL at end of >$szV<" - } - } else { - fail "Didn't detect ERROR in commands >$szV<" - } - } else { - fail "Didn't used send_user" - } - } - } - - set szV [verbose {[set l "some text"]} $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - pass "$szV" - } else { - fail "Expected NL at end of >$szV<" - } - } - } else { - fail "Didn't used send_user" - } - } - } -} - -# checking verbose -- -# -foreach level {0 1} { - set szV [verbose -- "some text" $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - pass "$szV" - } else { - fail "Expected NL at end of >$szV<" - } - } - } else { - fail "Didn't used send_user" - } - } - } - - set szV [verbose -- {[set l some text]} $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - pass "$szV" - } else { - fail "Expected NL at end of >$szV<" - } - } else { - fail "Didn't detect ERROR in commands >$szV<" - } - } else { - fail "Didn't used send_user" - } - } - } - - set szV [verbose -- {[set l "some text"]} $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - pass "$szV" - } else { - fail "Expected NL at end of >$szV<" - } - } - } else { - fail "Didn't used send_user" - } - } - } -} - -# Checking verbose -n (Suppress NL) -# -foreach level {0 1} { - set szV [verbose -n "some text" $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - fail "Didn't expected NL at end of >$szV<" - } else { - pass "$szV" - } - } - } else { - fail "Didn't used send_user" - } - } - } - - set szV [verbose -n {[set l some text]} $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - fail "Didn't expected NL at end of >$szV<" - } else { - pass "$szV" - } - } else { - fail "Didn't detect ERROR in commands >$szV<" - } - } else { - fail "Didn't used send_user" - } - } - } - - set szV [verbose -n {[set l "some text"]} $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - fail "Didn't expected NL at end of >$szV<" - } else { - pass "$szV" - } - } - } else { - fail "Didn't used send_user" - } - } - } -} - -# checking verbose -log -# -foreach level {0 1} { - set szV [verbose -log "some text" $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if {$level > $verbose} { - if [regexp "^LOG:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - pass "$szV" - } else { - fail "Expected NL at end of >$szV<" - } - } - } else { - fail "Didn't used send_user" - } - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - pass "$szV" - } else { - fail "Expected NL at end of >$szV<" - } - } - } else { - fail "Didn't used send_user" - } - } - } - } - - set szV [verbose -log {[set l some text]} $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if {$level > $verbose} { - if [regexp "^LOG:" $szV] { - if [regexp "ERROR:" $szV] { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - pass "$szV" - } else { - fail "Expected NL at end of >$szV<" - } - } else { - fail "Didn't detect ERROR in commands >$szV<" - } - } else { - fail "Didn't used send_user" - } - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - pass "$szV" - } else { - fail "Expected NL at end of >$szV<" - } - } else { - fail "Didn't detect ERROR in commands >$szV<" - } - } else { - fail "Didn't used send_user" - } - } - } - } - - set szV [verbose -log {[set l "some text"]} $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if {$level > $verbose} { - if [regexp "^LOG:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - pass "$szV" - } else { - fail "Expected NL at end of >$szV<" - } - } - } else { - fail "Didn't used send_user" - } - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - pass "$szV" - } else { - fail "Expected NL at end of >$szV<" - } - } - } else { - fail "Didn't used send_user" - } - } - } - } -} - -# checking verbose -n -log -# -foreach level {0 1} { - set szV [verbose -n -log "some text" $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if {$level > $verbose} { - if [regexp "^LOG:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - fail "Didn't expected NL at end of >$szV<" - } else { - pass "$szV" - } - } - } else { - fail "Didn't used send_user" - } - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - fail "Didn't expected NL at end of >$szV<" - } else { - pass "$szV" - } - } - } else { - fail "Didn't used send_user" - } - } - } - } - - set szV [verbose -log -n {[set l some text]} $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if {$level > $verbose} { - if [regexp "^LOG:" $szV] { - if [regexp "ERROR:" $szV] { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - fail "Didn't expected NL at end of >$szV<" - } else { - pass "$szV" - } - } else { - fail "Didn't detect ERROR in commands >$szV<" - } - } else { - fail "Didn't used send_user" - } - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - fail "Didn't expected NL at end of >$szV<" - } else { - pass "$szV" - } - } else { - fail "Didn't detect ERROR in commands >$szV<" - } - } else { - fail "Didn't used send_user" - } - } - } - } - - set szV [verbose -n -log -- {[set l "some text"]} $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, output expected" - } else { - if {[string length $szV] == 0} { - pass "No output expected" - } else { - if {$level > $verbose} { - if [regexp "^LOG:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - fail "Didn't expected NL at end of >$szV<" - } else { - pass "$szV" - } - } - } else { - fail "Didn't used send_user" - } - } else { - if [regexp "^USER:" $szV] { - if [regexp "ERROR:" $szV] { - fail "Did detect ERROR in commands >$szV<" - } else { - if {[string compare \ - [string range $szV end end] "\n"] == 0} { - fail "Didn't expected NL at end of >$szV<" - } else { - pass "$szV" - } - } - } else { - fail "Didn't used send_user" - } - } - } - } -} - -if {$verbose >= 1} { - set szV [verbose -n -BB -log -- {[set l "some text"]} $level] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, ERROR output expected" - } else { - if [regexp "^ERROR:.*illegal argument:" $szV] { - setup_xfail - } - fail "$szV" - } - - set szV [verbose] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, ERROR output expected" - } else { - if [regexp "^ERROR:.*nothing to print$" $szV] { - setup_xfail - } - fail "$szV" - } - - set szV [verbose -n --] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, ERROR output expected" - } else { - if [regexp "^ERROR:.*nothing to print$" $szV] { - setup_xfail - } - fail "$szV" - } - - set szV [verbose -n -- ABC def 100] - if {[string length $szV] == 0 && $level <= $verbose} { - fail "verbose level $level, ERROR output expected >$szV<" - } else { - if [regexp "^ERROR:.*Too many arguments$" $szV] { - setup_xfail - } - fail "$szV" - } -} else { - warning "NO verbose error returns tester, verbose level < 1" -} - -# Restore original procedures -# -uplevel #0 { - rename send_user "" - rename send_error "" - rename send_log "" - rename send_user_saved send_user - rename send_error_saved send_error - rename send_log_saved send_log -} diff --git a/contrib/bluegnu2.0.3/testsets/examples/lib/benchmark.itcl b/contrib/bluegnu2.0.3/testsets/examples/lib/benchmark.itcl deleted file mode 100644 index b8f589c..0000000 --- a/contrib/bluegnu2.0.3/testsets/examples/lib/benchmark.itcl +++ /dev/null @@ -1,64 +0,0 @@ -# -# - -namespace eval ::tc002 { - if {[::itcl::find classes Benchmark] != "Benchmark"} { - class Benchmark { - inherit ::BlueGnu::Benchmark - - public constructor {args} { - } - - public method benchmark {benchmarkFunction args} { - verbose {******* ${this}::benchmark\ - $benchmarkFunction $args} - verbose "Length Args is >[llength $args]<" 2 - set bResult 0 - switch -exact $benchmarkFunction { - English { - set bResult 1 - } - Dutch { - set bResult 1 - } - } - if $bResult { - pass "[info class]::benchmark\ - $benchmarkFunction $args" - } else { - fail "[info class]::benchmark\ - $benchmarkFunction $args" - } - return $bResult - } - } - - class English { - inherit ::tc002::Benchmark - - public constructor {args} { - eval ::BlueGnu::Benchmark::constructor $args - ::tc002::Benchmark::constructor - } { - verbose "******* Initialize Priority Benchmark Values" - foreach i [lsort [array names ARG]] { - verbose { ARG($i): >$ARG($i)<} 2 - } - } - } - - class Dutch { - inherit ::tc002::Benchmark - - public constructor {args} { - eval ::BlueGnu::Benchmark::constructor $args - ::tc002::Benchmark::constructor - } { - verbose "******* Initialize Priority Benchmark Values" - foreach i [lsort [array names ARG]] { - verbose { ARG($i): >$ARG($i)<} 2 - } - } - } - } -} \ No newline at end of file diff --git a/contrib/bluegnu2.0.3/testsets/examples/tc001 b/contrib/bluegnu2.0.3/testsets/examples/tc001 deleted file mode 100644 index bc76f0d..0000000 --- a/contrib/bluegnu2.0.3/testsets/examples/tc001 +++ /dev/null @@ -1,3 +0,0 @@ -set MSG "Hello World" -processTestScriptArgs -note $MSG diff --git a/contrib/bluegnu2.0.3/testsets/examples/tc002 b/contrib/bluegnu2.0.3/testsets/examples/tc002 deleted file mode 100644 index 1ec0192..0000000 --- a/contrib/bluegnu2.0.3/testsets/examples/tc002 +++ /dev/null @@ -1,3 +0,0 @@ -set MSG "Hello World" -processTestScriptArgs -benchmark $szTestCaseID $MSG diff --git a/contrib/bluegnu2.0.3/testsets/examples/ts_001 b/contrib/bluegnu2.0.3/testsets/examples/ts_001 deleted file mode 100644 index 354941c..0000000 --- a/contrib/bluegnu2.0.3/testsets/examples/ts_001 +++ /dev/null @@ -1,2 +0,0 @@ -appendQueue examples/tc002\[English=B\] -appendQueue examples/tc002\[Dutch=B\]={MSG=Hallo Wereld} diff --git a/contrib/bluegnu2.0.3/testsets/examples/ts_002 b/contrib/bluegnu2.0.3/testsets/examples/ts_002 deleted file mode 100644 index ff5ccc0..0000000 --- a/contrib/bluegnu2.0.3/testsets/examples/ts_002 +++ /dev/null @@ -1,4 +0,0 @@ -appendQueue [appendTestCaseID \ - [locateFile tc002 examples] English=A] -appendQueue [appendArguments [appendTestCaseID \ - [locateFile tc002 examples] Dutch=A] "{MSG=Hallo Wereld}"] diff --git a/contrib/bluegnu2.0.3/testsets/examples/ts_003 b/contrib/bluegnu2.0.3/testsets/examples/ts_003 deleted file mode 100644 index 146b551..0000000 --- a/contrib/bluegnu2.0.3/testsets/examples/ts_003 +++ /dev/null @@ -1,2 +0,0 @@ -appendQueue tc002 {} English=B -appendQueue tc002 {MSG=Hallo Wereld} Dutch=B diff --git a/contrib/bluegnu2.0.3/testsets/examples/versionTcl.itcl b/contrib/bluegnu2.0.3/testsets/examples/versionTcl.itcl deleted file mode 100644 index 94c9b82..0000000 --- a/contrib/bluegnu2.0.3/testsets/examples/versionTcl.itcl +++ /dev/null @@ -1,8 +0,0 @@ -if [doCmd {set tcl_version} errorCode=NONE \ - return=[list [list 1 8.0]] V] { - # code when failure: - # variable tcl_version does not exists or - # does not return 8.0 -} else { - # variable V will contain 8.0 -} diff --git a/contrib/bluegnu2.0.3/testsets/tclIndex b/contrib/bluegnu2.0.3/testsets/tclIndex deleted file mode 100644 index 70fa126..0000000 --- a/contrib/bluegnu2.0.3/testsets/tclIndex +++ /dev/null @@ -1,5 +0,0 @@ -# Tcl autoload index file: each line identifies a Tcl - -::tc002::Benchmark examples/lib/benchmark.itcl -::tc002::English examples/lib/benchmark.itcl -::tc002::Dutch examples/lib/benchmark.itcl diff --git a/contrib/bluegnu2.0.3/testsuite/Makefile.in b/contrib/bluegnu2.0.3/testsuite/Makefile.in deleted file mode 100644 index 405ca3d..0000000 --- a/contrib/bluegnu2.0.3/testsuite/Makefile.in +++ /dev/null @@ -1,100 +0,0 @@ -# Copyright (C) 1988, 1990, 1991, 1992, 1994, 1995 Free Software Foundation, Inc. -# Copyright (C) 1998 jotOmega dsc, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 1, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# - -# directory specifics -VPATH = @srcdir@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -host = @host@ - -.PHONY: info install-info check installcheck dvi install -info: -install: -dvi: -install-info: -check: -installcheck: -.NOEXPORT: -TCLHDIR = @TCLHDIR@ - -BLUEGNUFLAGS = -EXPECT = ` \ - if [ -f $${rootme}/../../expect/expect ] ; then \ - echo $${rootme}/../../expect/expect ; \ - else echo expect ; fi` - -BLUEGNU = ` \ - if [ -f ${srcdir}/../bluegnu ] ; then \ - echo ${srcdir}/../bluegnu ; \ - else echo bluegnu ; fi` - - -all: - -check: site.exp all - rootme=`pwd`; export rootme; \ - srcdir=${srcdir} ; export srcdir ; \ - EXPECT=${EXPECT} ; export EXPECT ; \ - if [ -f $${rootme}/../../expect/expect ] ; then \ - TCL_LIBRARY=`echo @TCLHDIR@ | sed -e 's/-I//' -e 's/generic/library/'` ; \ - export TCL_LIBRARY ; fi ; \ - ${BLUEGNU} ${BLUEGNUFLAGS} BLUEGNU=${BLUEGNU} --tool bluegnu --srcdir ${srcdir} - -site.exp: ./config.status Makefile - @echo "Making a new config file..." - -@rm -f ./tmp? - @touch site.exp - -@mv site.exp site.bak - @echo "## these variables are automatically generated by make ##" > ./tmp0 - @echo "# Do not edit here. If you wish to override these values" >> ./tmp0 - @echo "# add them to the last section" >> ./tmp0 - @echo "set tool bluegnu" >> ./tmp0 - @echo "set srcdir ${srcdir}" >> ./tmp0 - @echo "set objdir `pwd`" >> ./tmp0 - @echo "set host_triplet ${host}" >> ./tmp0 - @echo "set tmpdir `pwd`/tmpdir" >> ./tmp0 - @echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0 - @cat ./tmp0 > site.exp - @cat site.bak | sed \ - -e '1,/^## All variables above are.*##/ d' >> site.exp - -@rm -f ./tmp? - -clean mostlyclean: - -rm -f \#* *~ core *.o a.out xgdb *.x - -rm -f [Ee]rrs tags mklog ${OBJS} ${PROG} x.* xXx.* - -distclean maintainer-clean realclean: clean - -rm -f Makefile - -rm -f config.status config.log config.cache - -rm -f calc.h calc.log calc.plog calc.psum confdefs.h - -rm -f calc.sum site.exp - -rm -rf tmpdir - -Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) config.status - @echo "Rebuilding the Makefile..." - $(SHELL) ./config.status - -configure: $(srcdir)/configure.in $(srcdir)/Makefile.in $(srcdir)/../aclocal.m4 - @echo "Rebuilding configure..." - @cd ${srcdir} ;\ - autoconf --localdir=${srcdir}/.. - -config.status: - @echo "Rebuilding config.status..." - $(SHELL) ./config.status --recheck diff --git a/contrib/bluegnu2.0.3/testsuite/T/env.exp b/contrib/bluegnu2.0.3/testsuite/T/env.exp deleted file mode 100644 index ce48f79..0000000 --- a/contrib/bluegnu2.0.3/testsuite/T/env.exp +++ /dev/null @@ -1,12 +0,0 @@ - -uplevel #0 { - foreach var [lsort [info globals]] { - if {[array exists $var]} { - foreach index [lsort [array names $var]] { - puts "${var}($index)=[set ${var}($index)]" - } - } else { - puts "$var=[set $var]" - } - } -} diff --git a/contrib/bluegnu2.0.3/testsuite/T/env.iexp b/contrib/bluegnu2.0.3/testsuite/T/env.iexp deleted file mode 100644 index ca29e5f..0000000 --- a/contrib/bluegnu2.0.3/testsuite/T/env.iexp +++ /dev/null @@ -1,48 +0,0 @@ - -puts "======= Environment (Start) =======" - -foreach item [lsort [array names env]] { - if [catch {puts " env($item)=$env($item)"} szErrMsg] { - puts "******* >> msg : $szErrMsg" - puts "******* >> errorInfo: [uplevel #0 set errorInfo]" - puts "******* >> errorCode: [uplevel #0 set errorCode]" - } -} - -foreach info [list {info locals} \ - {info globals} {uplevel #0 info globals} \ - {info vars}] { - puts "=== Command: $info" - foreach item [lsort [eval $info]] { - if [catch {puts " $item=>[eval set $item]<"} szErrMsg] { - if [regexp "variable is array" $szErrMsg] { - foreach elem [lsort [array names $item]] { - puts " ${item}($elem)=>[set ${item}($elem)]<" - } - } else { - puts "******* >> msg : $szErrMsg" - puts "******* >> errorInfo: [uplevel #0 set errorInfo]" - puts "******* >> errorCode: [uplevel #0 set errorCode]" - } - } - } -} - -foreach info [list {namespace all} \ - {namespace children} {namespace parent} \ - classes commands context level library locals \ - objects patchlevel procs script tclversion] { - puts "=== info $info" - foreach item [lsort [eval info $info]] { - puts " $item" - } -} - -puts "argv: [set argv]" -puts "szTestName: [set szTestName]" -catch {puts "lTestName : $lTestName"} -$szTestName pass -puts [$szTestName <<] - -#runtest ::E0 env.iexp -puts "======= Environment (End) =======" diff --git a/contrib/bluegnu2.0.3/testsuite/T/foo.exp b/contrib/bluegnu2.0.3/testsuite/T/foo.exp deleted file mode 100644 index c5f9770..0000000 --- a/contrib/bluegnu2.0.3/testsuite/T/foo.exp +++ /dev/null @@ -1,5 +0,0 @@ -appendQueue env.iexp -appendQueue ../tools/env.exp -appendQueue env.iexp -appendQueue ../tools/env.exp -appendQueue ../tools/foo.exp diff --git a/contrib/bluegnu2.0.3/testsuite/T/subT/test_002.exp b/contrib/bluegnu2.0.3/testsuite/T/subT/test_002.exp deleted file mode 100644 index a887fc9..0000000 --- a/contrib/bluegnu2.0.3/testsuite/T/subT/test_002.exp +++ /dev/null @@ -1,20 +0,0 @@ - -puts "Test test_002.exp: level [info level]" -puts "szTestName: [set szTestName]" -puts "lTestName : $lTestName" - -namespace ::Common { - if [info exists i] { - if {[expr $i % 2]} { - puts " Remainder is 1 >$i<" - incr i - return - } else { - puts " Zero remainder >$i<" - incr i - } - puts " === End: $env(SHELL)" - } else { - puts "#### i doesn't exists" - } -} diff --git a/contrib/bluegnu2.0.3/testsuite/T/test_000.exp b/contrib/bluegnu2.0.3/testsuite/T/test_000.exp deleted file mode 100644 index 9548c1c..0000000 --- a/contrib/bluegnu2.0.3/testsuite/T/test_000.exp +++ /dev/null @@ -1,8 +0,0 @@ - -namespace Common { - private variable iCount 0 -} - -verbose "prepeding test_001.exp" -prependQueue test_001.exp -pass "test_000.exp" diff --git a/contrib/bluegnu2.0.3/testsuite/T/test_001.exp b/contrib/bluegnu2.0.3/testsuite/T/test_001.exp deleted file mode 100644 index 0ecd02b..0000000 --- a/contrib/bluegnu2.0.3/testsuite/T/test_001.exp +++ /dev/null @@ -1,19 +0,0 @@ - -verbose "Test test_001.exp: level [info level]" -verbose "Global tools: [uplevel #0 set szCurrentTestDirectory]" - -appendQueue test_003.exp=1 -prependQueue test_003.exp=2 test_003.exp=3 -verbose "Context: [info context]" -runtest test_003.exp=R0 -appendQueue test_003.exp=A0 -prependQueue test_003.exp=A2 test_003.exp=A3 - -namespace Common { - incr iCount - verbose "Counter is $iCount" - if {$iCount < 5} { - prependQueue test_001.exp - } - pass "test_001.exp: iCount - $iCount" -} diff --git a/contrib/bluegnu2.0.3/testsuite/T/test_002.exp b/contrib/bluegnu2.0.3/testsuite/T/test_002.exp deleted file mode 100644 index e1a185a..0000000 --- a/contrib/bluegnu2.0.3/testsuite/T/test_002.exp +++ /dev/null @@ -1,22 +0,0 @@ - -verbose "Test test_002.exp: level [info level]" -verbose "szTestName: [set szTestName]" -verbose "lTestName : $lTestName" -pass -namespace ::Common { - if [info exists i] { - if {[expr $i % 2]} { - verbose " Remainder is 1 >$i<" - incr i - pass "karel" - return - } else { - verbose " Zero remainder >$i<" - fail "pieter" - incr i - } - verbose " === End: $env(SHELL)" - } else { - verbose "#### i doesn't exists" - } -} diff --git a/contrib/bluegnu2.0.3/testsuite/T/test_003.exp b/contrib/bluegnu2.0.3/testsuite/T/test_003.exp deleted file mode 100644 index 32c0481..0000000 --- a/contrib/bluegnu2.0.3/testsuite/T/test_003.exp +++ /dev/null @@ -1,3 +0,0 @@ - -verbose "t003.exp == $lArgs" -pass "t003.exp == $lArgs" \ No newline at end of file diff --git a/contrib/bluegnu2.0.3/testsuite/T/test_004.exp b/contrib/bluegnu2.0.3/testsuite/T/test_004.exp deleted file mode 100644 index 6cda091..0000000 --- a/contrib/bluegnu2.0.3/testsuite/T/test_004.exp +++ /dev/null @@ -1,3 +0,0 @@ - -puts " in test 4" -pass "test 4" \ No newline at end of file diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/clone_output.test b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/clone_output.test deleted file mode 100644 index 2b5178f..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/clone_output.test +++ /dev/null @@ -1,68 +0,0 @@ -# test clone_output - -set srcdir [lindex $argv 0] -set subdir [lindex $argv 1] -set objdir [lindex $argv 2] - -if [ file exists $objdir/setval.tmp ] { - source $objdir/setval.tmp -} else { - puts "ERROR: $objdir/setval.tmp doesn't exist" -} -if [ file exists $srcdir$subdir/default_procs.tcl ] { - source "$srcdir$subdir/default_procs.tcl" -} else { - puts "ERROR: $srcdir$subdir/default_procs.tcl doesn't exist" -} -if [ file exists $srcdir/../lib/framework.exp] { - source $srcdir/../lib/framework.exp -} else { - puts "ERROR: $srcdir/../lib/framework.exp doesn't exist" -} - -set all_flag 0 -global all_flag -set errno "" - -# stuff that shouldn't print anything without all_flag set -set all_flag 0 -set tests { - { "lib_pat_test" "clone_output" "PASS: Foo" "" "clone_output(pass) without all_flag set" } - { "lib_pat_test" "clone_output" "UNRESOLVED: Foo" "" "clone_output(unresolved) without all_flag set" } - { "lib_pat_test" "clone_output" "UNSUPPORTED: Foo" "" "clone_output(unsupported) without all_flag set" } - { "lib_pat_test" "clone_output" "UNTESTED: Foo" "" "clone_output(untested) without all_flag set" } - { "lib_pat_test" "clone_output" "ERROR: Bar" "ERROR: Bar" "clone_output(error) without all_flag set" } - { "lib_pat_test" "clone_output" "WARNING: Bar" "WARNING: Bar" "clone_output(warning) without all_flag set" } - { "lib_pat_test" "clone_output" "NOTE: Bar" "NOTE: Bar" "clone_output(note) without all_flag set" } -} - -run_tests $tests - -# tests for all_flag set to 1 -set all_flag 1 -set tests { - { "lib_pat_test" "clone_output" "PASS: Foo" "PASS: Foo" "clone_output(pass) with all_flag set" } - { "lib_pat_test" "clone_output" "XFAIL: Foo" "XFAIL: Foo" "clone_output(xfail) with all_flag set" } - { "lib_pat_test" "clone_output" "UNRESOLVED: Foo" "UNRESOLVED: Foo" "clone_output(unresolved) with all_flag set" } - { "lib_pat_test" "clone_output" "UNSUPPORTED: Foo" "UNSUPPORTED: Foo" "clone_output(unsupported) with all_flag set" } - { "lib_pat_test" "clone_output" "UNTESTED: Foo" "UNTESTED: Foo" "clone_output(untested) with all_flag set" } - { "lib_pat_test" "clone_output" "ERROR: Foo" "ERROR: Foo" "clone_output(error) with all_flag set" } - { "lib_pat_test" "clone_output" "WARNING: Foo" "WARNING: Foo" "clone_output(warning) with all_flag set" } - { "lib_pat_test" "clone_output" "NOTE: Foo" "NOTE: Foo" "clone_output(note) with all_flag set" } -} - -run_tests $tests - - - - - - - - - - - - - - diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/config.test b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/config.test deleted file mode 100644 index 3d70572..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/config.test +++ /dev/null @@ -1,138 +0,0 @@ -# test clone_output - -set srcdir [lindex $argv 0] -set subdir [lindex $argv 1] -set objdir [lindex $argv 2] - -if [ file exists $objdir/setval.tmp ] { - source $objdir/setval.tmp -} else { - puts "ERROR: $objdir/setval.tmp doesn't exist" -} -if [ file exists $srcdir$subdir/default_procs.tcl ] { - source "$srcdir$subdir/default_procs.tcl" -} else { - puts "ERROR: $srcdir$subdir/default_procs.tcl doesn't exist" -} -if [ file exists $srcdir/../lib/framework.exp] { - source $srcdir/../lib/framework.exp -} else { - puts "ERROR: $srcdir/../lib/framework.exp doesn't exist" -} - -set all_flag 1 - -set host_triplet i586-unknown-linux -set target_triplet i586-unknown-linux -set target_cpu i586 -set target_os linux -set build_triplet i586-unknown-linux - -# FIXME: should use run_tests here, but due to Tcl's weird scoping rules, I get -# problems. - -# -# Tests for a native configuration -# -if [isbuild $build_triplet] { - puts "PASSED: isbuild, native" -} else { - puts "FAILED: isbuild, native" -} - -if [isbuild $target_cpu-*-$target_os ] { - puts "PASSED: isbuild, native regexp" -} else { - puts "FAILED: isbuild, native regexp" -} - -if [isbuild hppa-ibm-macos ] { - puts "FAILED: isbuild, native bogus config string" -} else { - puts "PASSED: isbuild, native bogus config string" -} - -# ishost tests -if [ishost $host_triplet] { - puts "PASSED: ishost, native" -} else { - puts "FAILED: ishost, native" -} - -if [ishost $target_cpu-*-$target_os] { - puts "PASSED: ishost, native regexp" -} else { - puts "FAILED: ishost, native regexp" -} - -if [ishost hppa-ibm-macos] { - puts "FAILED: ishost, native bogus config string" -} else { - puts "PASSED: ishost, native bogus config string" -} - -# istarget tests -if [istarget $target_triplet] { - puts "PASSED: istarget, native" -} else { - puts "FAILED: istarget, native" -} - -if [istarget $target_cpu-*-$target_os] { - puts "PASSED: istarget, native regexp" -} else { - puts "FAILED: istarget, native regexp" -} - -if [istarget hppa-ibm-macos] { - puts "FAILED: istarget, native bogus config string" -} else { - puts "PASSED: istarget, native bogus config string" -} - -# native tests -if [isnative] { - puts "PASSED: isnative, native" -} else { - puts "FAILED: isnative, native" -} - -if [is3way] { - puts "FAILED: is3way, native" -} else { - puts "PASSED: is3way, native" -} - -# -# Tests for a normal cross configuration -# -set target_triplet m68k-unknown-elf -if [isnative] { - puts "FAILED: isnative, cross" -} else { - puts "PASSED: isnative, cross" -} - -if [is3way] { - puts "FAILED: is3way, cross" -} else { - puts "PASSED: is3way, cross" -} - -# -# Tests for a canadian cross configuration -# -set host_triplet i386-unknown-winnt -if [isnative] { - puts "FAILED: isnative, canadian cross" -} else { - puts "PASSED: isnative, canadian cross" -} - -if [is3way] { - puts "PASSED: is3way, canadian cross" -} else { - puts "FAILED: is3way, canadian cross" -} - - diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/default_procs.tcl b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/default_procs.tcl deleted file mode 100644 index a0e6f88..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/default_procs.tcl +++ /dev/null @@ -1,94 +0,0 @@ -set sum_file [open .tmp w] -set reboot 0 -set errno "" - -# this tests a proc for a returned pattern -proc lib_pat_test { cmd arg pattern } { - catch "$cmd \"$arg\"" result - puts "CMD(lib_pat_test) was: $cmd \"$arg\"" - puts "RESULT(lib_pat_test) was: \"${result}\" for pattern \"$pattern\"." - if [ regexp -- "with too many" $result ] { - return -1 - } - if [ string match "$pattern" $result ] { - return 1 - } else { - return 0 - } -} - -# this tests a proc for a returned value -proc lib_ret_test { cmd arg val } { - catch "$cmd \"$arg\"" result -# catch "set result [$cmd $arg]" output -# set result "$cmd [eval $arg] - puts "CMD(lib_ret_test) was: $cmd $arg" - puts "RESULT(lib_ret_test) was: $result" -# puts "OUTPUT(lib_ret_test) was: $output" - - if { $result == $val } { - return 1 - } else { - return 0 - } -} - -# -# This runs a standard test for a proc. The list is set up as: -# |test proc|proc being tested|args|pattern|message| -# test proc is something like lib_pat_test or lib_ret_test. -# -proc run_tests { tests } { - foreach i "$tests" { - set result [ [lindex $i 0] "[lindex $i 1]" "[lindex $i 2]" "[lindex $i 3]" ] - switch -- $result { - "-1" { - puts "ERRORED: [lindex $i 4]" - } - "1" { - puts "PASSED: [lindex $i 4]" - } - "0" { - puts "FAILED: [lindex $i 4]" - } - default { - puts "BAD VALUE: [lindex $i 4]" - } - } - } -} - -proc send_log { msg } { - # this is just a stub for testing -} - -proc pass { msg } { - puts "PASSED: $msg" -} - -proc fail { msg } { - puts "FAILED: $msg" -} - -proc perror { msg } { - global errno - puts "ERRORED: $msg" - set errno "$msg" -} - -proc warning { msg } { - global errno - puts "WARNED: $msg" - set errno "$msg" -} - -proc untested { msg } { - puts "NOTTESTED: $msg" -} - -proc unsupported { msg } { - puts "NOTSUPPORTED: $msg" -} -proc verbose { args } { - puts "[lindex $args 0]" -} diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/libs.exp b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/libs.exp deleted file mode 100644 index 77f96b5..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/libs.exp +++ /dev/null @@ -1,73 +0,0 @@ -load_lib libsup.exp - -proc process_test { test } { - global srcdir - global subdir - global objdir - global EXPECT - - verbose "Executing test case $test" - set text "\[- A-Za-z0-9\,\.\;\"\_\:\'\`\(\)\!\#\=\+\?\&\*]*" - - set timeout 150 - - if [file exists $test] { - verbose "Processing test $test" 2 - spawn -open [open "|$EXPECT $test $srcdir $subdir [pwd]" r] - expect { - "No such file or directory" { - perror "$test wouldn't run" 0 - } - -re "\[\r\n\]*NOTSUPPORTED: $text\[\r\n\]*" { - unsupported "[lrange $expect_out(0,string) 1 end]" - exp_continue - } - -re "\[\r\n\]*NOTTESTED: $text\[\r\n\]*" { - untested "[lrange $expect_out(0,string) 1 end]" - exp_continue - } - -re "\[\r\n\]*PASSED: $text\[\r\n\]*" { - pass "[lrange $expect_out(0,string) 1 end]" - exp_continue - } - -re "\[\r\n\]*FAILED: $text\[\r\n\]*" { - fail "[lrange $expect_out(0,string) 1 end]" - exp_continue - } - -re "\[\r\n\]*WARNED: $text\[\r\n\]*" { - verbose "$expect_out(0,string)" 2 - exp_continue - } - -re "\[\r\n\]*ERRORED: $text\[\r\n\]*" { - verbose "$expect_out(0,string)" 2 - exp_continue - } - timeout { - perror "$test timed out" 0 - exp_continue - } - eof { - verbose "All Done" 3 - } - } - } else { - perror "$test doesn't exist" 0 - } -} - -if ![info exists EXPECT] { - set EXPECT [findfile $base_dir/../../expect/expect "$base_dir/../../expect/expect" expect] - verbose "EXPECT defaulting to $EXPECT" 2 -} - -make_defaults_file [pwd]/setval.tmp - -foreach i [glob $srcdir/$subdir/*.test] { - process_test $i -} - - - - - - diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/options.exp b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/options.exp deleted file mode 100644 index 0e1a078..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/options.exp +++ /dev/null @@ -1,91 +0,0 @@ -# Copyright (C) 1988, 90-92, 1994, 1995 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -load_lib util-defs.exp - -# move the site.exp file so we have no default to confuse us. -#if [file exists $objdir/site.exp] { -# catch "exec mv -f $objdir/site.exp $objdir/site.ignore" -#} -set fd [open site.exp w] -puts ${fd} "set host_triplet $host_triplet" -puts ${fd} "set srcdir $srcdir/.." -puts ${fd} "set objdir $objdir/.." -puts ${fd} "set tmpdir $objdir/../tmpdir" -close $fd - -# -# Set up the list. -# 1st field is the command line option. -# 2nd field is the pattern to match. -# NOTE - No variable substitutions can be used. -# 3rd field is an optional message to print with PASS/FAIL. -# - - -set tests { - { "" "WARNING: No tool specified" "No arguments" } - { "-v --tool xXx" "Found.*site\..*Loading.*utils\.exp" "Loading library files" } - { "-v --tool xXx" "Expect binary is.*Using.*main test driver" "Loading basic packages" } - { "--F --tool x" "Illegal Argument \"--F\"" "Bad argument" } - { "--tool x" "Couldn't find tool init file" "Bad tool name" } - { "--help" "USAGE:*" "Display help" } - { "-v -v -v" "Verbose level is 3" "Verbose set correctly" } - { "-V" "Expect version is.*Tcl version is.*Framework version is*" "--version" } - { "-v --target m68k-vxworks" "Target is m68k-vxworks" "--target option" } - { "-v --host sparc-sun-sunos4.1.9" "Native configuration is sparc-sun-sunos4.1.9" "--host option" } - { "-v -a" "Print all test output to screen" "--all option" } - { "-v --objdir xXx" "Using test binaries in xXx" "--objdir option" } - { "-v --baud 666" "The baud rate is now 666" "--baud option" } - { "-v --tool xXx" "Testing xXx" "--tool option" } - { "-v --debug" "Expect Debugging is ON" "--debug option" } - { "-v --D0" "Tcl debugger is ON" "--D0 option" } - { "-v --strace 1" "Source Trace level is now 1.* 1 if" "--strace option" } -} - -# Old tests not used anymore -# { "-v --build sparc-sun-sunos4.1.9" "Native configuration is sparc-sun-sunos4.1.9" "--build option" } -# { "-v --srcdir xXx" "Using test sources in xXx" "--srcdir option" } - -foreach i $tests { - if [util_test "$RUNTEST" "[lindex $i 0]" "" "[lindex $i 1]"] { - fail "[lindex $i 2]" - } else { - pass "[lindex $i 2]" - } -} - - -set fd [open site.exp w] -puts ${fd} "set host_triplet $host_triplet" -puts ${fd} "set tool runtest" -puts ${fd} "set srcdir $srcdir" -puts ${fd} "set objdir $objdir" -puts ${fd} "set tmpdir $objdir/tmpdir" -close $fd - -# clean up log files left by the child runtest -if [file exists $objdir/x.sum] { - exec rm -f $objdir/x.* -} -if [file exists $objdir/xXx.sum] { - exec rm -f $objdir/xXx.* -} diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/remote.test b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/remote.test deleted file mode 100644 index 9df5e56..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/remote.test +++ /dev/null @@ -1,217 +0,0 @@ -set srcdir [lindex $argv 0] -set subdir [lindex $argv 1] -set objdir [lindex $argv 2] - -if [ file exists $objdir/setval.tmp ] { - source $objdir/setval.tmp -} else { - puts "ERROR: $objdir/setval.tmp doesn't exist" -} -if [ file exists $srcdir$subdir/default_procs.tcl ] { - source "$srcdir$subdir/default_procs.tcl" -} else { - puts "ERROR: $srcdir$subdir/default_procs.tcl doesn't exist" -} - -set file $srcdir/../lib/remote.exp -if [ file exists $file] { - source $file -} else { - puts "ERROR: $file doesn't exist" -} - -global errno "" - -# -# Create a false target config array -# -set target_info(idp,name) "idp" -set target_info(idp,ldflags) "-Tidp.ld" -set target_info(idp,config) m68k-unknown-aout -set target_info(idp,cflags) "" -set target_info(idp,connect) telnet -set target_info(idp,target) "s12" -set target_info(idp,serial) "tstty12" -set target_info(idp,netport) "localhost:23" -set target_info(idp,baud) "9600" -# MVME target -set target_info(mvme,name) "mvme" -set target_info(mvme,ldflags) "-Tmvme.ld" -set target_info(mvme,config) m68k-unknown-aout -set target_info(mvme,cflags) "" -set target_info(mvme,connect) telnet -set target_info(mvme,target) "s12" -set target_info(mvme,serial) "tstty8" -set target_info(mvme,netport) "localhost:23" -set target_info(mvme,baud) "9600" - -# Test remote open. We try not to use any of the support procs in -# target.exp to for isolation testing. "target" is the name of the -# default array setup by the procs in target.exp. - -set timeout 100 -set errno "" - -# -# Force connection errors -# - -# force an rlogin error -if { [rlogin foobar.barfoo.com] < 0 } { - puts "PASSED: rlogin bogus host" -} else { - puts "FAILED: rlogin bogus" -} - -# force an rsh error -if { [rsh foobar.barfoo.com] < 0 } { - puts "PASSED: rsh bogus host" -} else { - puts "FAILED: rsh bogus" -} - -# force a telnet error -if { [telnet foobar.barfoo.com] < 0 } { - puts "PASSED: telnet bogus host" -} else { - puts "FAILED: telnet bogus" -} - -# -# Connect to localhost -# - -# localhost rlogin test -if { [rlogin localhost] < 0 } { - if [string match "*unencrypted connection" $errno] { - NOTTESTED "rlogin localhost" - } else { - puts "FAILED: rlogin localhost" - } -} else { - puts "PASSED: rlogin localhost" -} -catch "exp_send exit\n" -catch "close -i $spawn_id" -catch "wait -i $spawn_id" - -# localhost rsh test -if { [rsh localhost] < 0 } { - if [string match "*kinit" $errno] { - puts "NOTTESTED: rsh localhost" - } else { - puts "FAILED: rsh localhost" - } -} else { - puts "PASSED: rsh localhost" -} -catch "exp_send exit\n" -catch "close -i $spawn_id" -catch "wait -i $spawn_id" - -# localhost telnet test. In this case it will return -# an error cause we get prompted for a password or login. For -# now this is considered an error, as we usually only -# telnet to a terminal server. -if { [telnet localhost] < 0 } { - if [string match "*password." $errno] { - puts "NOTTESTED: telnet localhost" - } else { - puts "FAILED: telnet localhost" - } -} else { - puts "PASSED: telnet localhost" -} -catch "exp_send exit\n" -catch "close -i $spawn_id" -catch "wait -i $spawn_id" - -# -# Connect to the configured target -# -set target_info(target,netport) $target_info(idp,netport) -set target_info(target,target) localhost -set target_info(target,connect) rlogin -if { [rlogin target] < 0 } { - if [ string match "*kinit" $errno] { - puts "NOTTESTED: rlogin target" - } else { - puts "FAILED: rlogin target" - } -} else { - puts "PASSED: rlogin target" -} -catch "exp_send exit\n" -catch "close -i $spawn_id" -catch "wait -i $spawn_id" - -# test remote_open -if { [rsh target] < 0 } { - if [ string match "*kinit" $errno] { - puts "NOTTESTED: rsh target" - } else { - puts "FAILED: rsh target" - } -} else { - puts "PASSED: rsh target" -} -catch "exp_send exit\n" -catch "close -i $spawn_id" -catch "wait -i $spawn_id" - -# telnet to host -# FIXME: This won't work till we figure out how to telnet and -# not get a password prompt. - -# -# Connect to the configured host -# -set target_info(host,connect) rlogin -set target_info(host,netport) $target_info(idp,netport) -set target_info(host,target) localhost - -# rlogin to host -if { [rlogin host] < 0 } { - if [ string match "*kinit*" $errno] { - puts "NOTTESTED: rlogin host" - } else { - puts "FAILED: rlogin host" - } -} else { - puts "PASSED: rlogin host" -} -catch "exp_send exit\n" -catch "close -i $spawn_id" -catch "wait -i $spawn_id" - -# rsh to host -if { [rsh host] < 0 } { - if [ string match "*kinit*" $errno] { - puts "NOTTESTED: rsh host" - } else { - puts "FAILED: rsh host" - } -} else { - puts "PASSED: rsh host" -} -catch "exp_send exit\n" -catch "close -i $spawn_id" -catch "wait -i $spawn_id" - -# telnet to host -# FIXME: This won't work till we figure out how to telnet and -# not get a password prompt. - -# tip port -# remote_close args -# rcp_download src dest -# tip_download shell_id file -# kermit args -# download args - - - - - - - diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/stats-sub.exp b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/stats-sub.exp deleted file mode 100644 index 966bb75..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/stats-sub.exp +++ /dev/null @@ -1,16 +0,0 @@ -# Subordinate to stats.exp. - -# If not called by stats.exp, quit now. -if { ![info exists STATS_TEST] } { - return -} - -switch $STATS_TEST { - pass { pass "pass test" } - fail { fail "fail test" } - xpass { xpass "xpass test" } - xfail { xfail "xfail test" } - untested { untested "untested test" } - unresolved { unresolved "unresolved test" } - unsupported { unsupported "unsupported test" } -} \ No newline at end of file diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/stats.exp b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/stats.exp deleted file mode 100644 index 3b30f9d..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/stats.exp +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright (C) 1995 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file tests pass/fail/etc. -# The way we do this is to recursively invoke ourselves on a small testsuite -# and analyze the results. - -load_lib util-defs.exp - -if ![file isdirectory $tmpdir] { - catch "exec mkdir $tmpdir" -} - -set tests { - { pass "expected passes\[ \t\]+1\n" } - { fail "unexpected failures\[ \t\]+1\n" } - { xpass "unexpected successes\[ \t\]+1\n" } - { xfail "expected failures\[ \t\]+1\n" } - { untested "untested testcases\[ \t\]+1\n" } - { unresolved "unresolved testcases\[ \t\]+1\n" } - { unsupported "unsupported tests\[ \t\]+1\n" } -} - -foreach t $tests { - if [util_test "$RUNTEST" \ - "--outdir $tmpdir STATS_TEST=[lindex $t 0] stats-sub.exp" \ - "" \ - [lindex $t 1]] { - fail [lindex $t 0] - } else { - pass [lindex $t 0] - } -} diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/target.test b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/target.test deleted file mode 100644 index 8c18980..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/target.test +++ /dev/null @@ -1,247 +0,0 @@ -set srcdir [lindex $argv 0] -set subdir [lindex $argv 1] -set objdir [lindex $argv 2] - -if [ file exists $objdir/setval.tmp ] { - source $objdir/setval.tmp -} else { - puts "ERROR: $objdir/setval.tmp doesn't exist" -} -if [ file exists $srcdir$subdir/default_procs.tcl ] { - source "$srcdir$subdir/default_procs.tcl" -} else { - puts "ERROR: $srcdir$subdir/default_procs.tcl doesn't exist" -} - -set file $srcdir/../lib/target.exp -if [ file exists $file] { - source $file -} else { - puts "ERROR: $file doesn't exist" -} -# we load framework so we can use stuff like is3way -set file $srcdir/../lib/framework.exp -if [ file exists $file] { - source $file -} else { - puts "ERROR: $file doesn't exist" -} -# we load the remote stuff so we can test execute_anywhere -set file $srcdir/../lib/remote.exp -if [ file exists $file] { - source $file -} else { - puts "ERROR: $file doesn't exist" -} - -# -# Create a false target config array -# -set target_info(idp,name) "idp" -set target_info(idp,ldflags) "-Tidp.ld" -set target_info(idp,config) m68k-unknown-aout -set target_info(idp,cflags) "" -set target_info(idp,connect) "telnet" -set target_info(idp,target) "s12" -set target_info(idp,serial) "tstty12" -set target_info(idp,netport) "localhost:23" -set target_info(idp,baud) "9600" -# MVME target -set target_info(mvme,name) "mvme" -set target_info(mvme,ldflags) "-Tmvme.ld" -set target_info(mvme,config) m68k-unknown-aout -set target_info(mvme,cflags) "" -set target_info(mvme,connect) "telnet" -set target_info(mvme,target) "s12" -set target_info(mvme,serial) "tstty8" -set target_info(mvme,netport) "localhost:23" -set target_info(mvme,baud) "9600" - -# Test remote open. We try not to use any of the support procs in -# target.exp to for isolation testing. "target" is the name of the -# default array setup by the procs in target.exp. - -set timeout 100 - -# test list_target - -if { [list_targets] == "idp mvme" } { - puts "PASSED: list_targets" -} else { - puts "FAILED: list_targets" -} -push_config target idp -set matches 0 -if { $target_info(target,name) == "idp" } { - incr matches -} -if { $target_info(target,ldflags) == "-Tidp.ld" } { - incr matches -} -if { $target_info(target,config) == "m68k-unknown-aout" } { - incr matches -} -if { $target_info(target,cflags) == "" } { - incr matches -} -if { $target_info(target,connect) == "telnet" } { - incr matches -} -if { $target_info(target,target) == "s12" } { - incr matches -} -if { $target_info(target,serial) == "tstty12" } { - incr matches -} -if { $target_info(target,netport) == "localhost:23" } { - incr matches -} -if { $target_info(target,baud) == "9600" } { - incr matches -} -if { $matches == 9 } { - puts "PASSED: push_config target" -} else { - puts "FAILED: push_config target" -} - -# test pop_config target -pop_config target -set matches 0 -if { $target_info(target,name) == "" } { - incr matches -} -if { $target_info(target,ldflags) == "" } { - incr matches -} -if { $target_info(target,config) == "" } { - incr matches -} -if { $target_info(target,cflags) == "" } { - incr matches -} -if { $target_info(target,connect) == "" } { - incr matches -} -if { $target_info(target,target) == "" } { - incr matches -} -if { $target_info(target,serial) == "" } { - incr matches -} -if { $target_info(target,netport) == "" } { - incr matches -} -if { $target_info(target,baud) == "" } { - incr matches -} -if { $matches == 9 } { - puts "PASSED: pop_config target" -} else { - puts "FAILED: pop_config target" -} - -push_config host idp -set matches 0 -if { $target_info(host,name) == "idp" } { - incr matches -} -if { $target_info(host,ldflags) == "-Tidp.ld" } { - incr matches -} -if { $target_info(host,config) == "m68k-unknown-aout" } { - incr matches -} -if { $target_info(host,cflags) == "" } { - incr matches -} -if { $target_info(host,connect) == "telnet" } { - incr matches -} -if { $target_info(host,target) == "s12" } { - incr matches -} -if { $target_info(host,serial) == "tstty12" } { - incr matches -} -if { $target_info(host,netport) == "localhost:23" } { - incr matches -} -if { $target_info(host,baud) == "9600" } { - incr matches -} -if { $matches == 9 } { - puts "PASSED: push_config target" -} else { - puts "FAILED: push_config target" -} - -# test pop_config host -pop_config host -set matches 0 -if { $target_info(host,name) == "" } { - incr matches -} -if { $target_info(host,ldflags) == "" } { - incr matches -} -if { $target_info(host,config) == "" } { - incr matches -} -if { $target_info(host,cflags) == "" } { - incr matches -} -if { $target_info(host,connect) == "" } { - incr matches -} -if { $target_info(host,target) == "" } { - incr matches -} -if { $target_info(host,serial) == "" } { - incr matches -} -if { $target_info(host,netport) == "" } { - incr matches -} -if { $target_info(host,baud) == "" } { - incr matches -} -if { $matches == 9 } { - puts "PASSED: pop_config host" -} else { - puts "FAILED: pop_config host" -} - -# test execute_anywhere for a native environment -set host_triplet i586-unknown-linux -set target_triplet i586-unknown-linux -set build_triplet i586-unknown-linux -if { [string match "*setval.tmp*" [execute_anywhere "ls"]] } { - puts "PASSED: execute_anywhere, native" -} else { - puts "FAILED: execute_anywhere, native" -} - -# test execute_anywhere for a normal cross -set target_triplet m68k-unknown-coff -if { [string match "*testsuite" [execute_anywhere "pwd"]] } { - puts "PASSED: execute_anywhere, normal cross" -} else { - puts "FAILED: execute_anywhere, normal cross" -} - -# test execute_anywhere for a canadian cross -set build_triplet m68k-test-test -set target_info(host,connect) rlogin -set target_info(host,netport) $target_info(idp,netport) -set target_info(host,target) localhost -if { [string match "*FooBar*" [execute_anywhere "echo FooBar"]] } { - puts "PASSED: execute_anywhere, canadian cross" -} else { - puts "FAILED: execute_anywhere, canadian cross" -} - -# compile arg -# archive arg -# ranlib arg -# link_objects arg diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir1/subfile1 b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir1/subfile1 deleted file mode 100644 index 8397fe3..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir1/subfile1 +++ /dev/null @@ -1 +0,0 @@ -# just so we don't look empty. diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir1/subfile2 b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir1/subfile2 deleted file mode 100644 index 7d1d836..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir1/subfile2 +++ /dev/null @@ -1,2 +0,0 @@ -# just so we don't look empty. - diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir1/subsubdir1/subsubfile1 b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir1/subsubdir1/subsubfile1 deleted file mode 100644 index 7d1d836..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir1/subsubdir1/subsubfile1 +++ /dev/null @@ -1,2 +0,0 @@ -# just so we don't look empty. - diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir2/subfile2 b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir2/subfile2 deleted file mode 100644 index 7d1d836..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/topdir/subdir2/subfile2 +++ /dev/null @@ -1,2 +0,0 @@ -# just so we don't look empty. - diff --git a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/utils.test b/contrib/bluegnu2.0.3/testsuite/bluegnu.all/utils.test deleted file mode 100644 index 864c797..0000000 --- a/contrib/bluegnu2.0.3/testsuite/bluegnu.all/utils.test +++ /dev/null @@ -1,118 +0,0 @@ -set srcdir [lindex $argv 0] -set subdir [lindex $argv 1] -set objdir [lindex $argv 2] - -if [ file exists $objdir/setval.tmp ] { - source $objdir/setval.tmp -} else { - puts "ERROR: $objdir/setval.tmp doesn't exist" -} -if [ file exists $srcdir$subdir/default_procs.tcl ] { - source "$srcdir$subdir/default_procs.tcl" -} else { - puts "ERROR: $srcdir$subdir/default_procs.tcl doesn't exist" -} - -set file $srcdir/../lib/utils.exp -if [ file exists $file] { - source $file -} else { - puts "ERROR: $file doesn't exist" -} - -# -# getdirs tests -# -if [lib_pat_test "getdirs" "${srcdir}/runtest.all" "runtest.all/topdir" ] { - puts "FAILED: getdirs toplevel, no arguments" -} else { - puts "PASSED: getdirs toplevel, no arguments" -} - -if [lib_pat_test "getdirs" "${srcdir}/runtest.all top*" "runtest.all/topdir" ] { - puts "FAILED: getdirs toplevel, one subdir" -} else { - puts "PASSED: getdirs toplevel, one subdir" -} - -if [lib_pat_test "getdirs" "${srcdir}/runtest.all/topdir" "subdir1*subdir2" ] { - puts "FAILED: getdirs toplevel, two subdirs" -} else { - puts "PASSED: getdirs toplevel, two subdirs" -} - -# -# find tests -# -if [string match "*/subdir2/subfile2" "[find ${srcdir}/runtest.all/topdir/subdir2 sub*]"] { - puts "PASSED: find, only one level deep" -} else { - puts "FAILED: find, only one level deep" -} - -#set path ${srcdir}/runtest.all/topdir/subdir1 -#exp_test "find ${path} sub*" "Adding */subdir1/subsubdir1/subsubfile1" "find, two levels deep" - -if [string match "*/subdir1/subsubdir1/subsubfile1" "[find ${srcdir}/runtest.all/topdir/subdir1 sub*]"] { - puts "PASSED: find, two levels deep" -} else { - puts "FAILED: find, two levels deep" -} - -# -# environment varible utility tests -# - -if [info exists env(TESTRUN)] { - unset env(TESTRUN) -} - -# test setenv -setenv TESTRUN FooBar -if [info exists env(TESTRUN)] { - if { $env(TESTRUN) == "FooBar" } { - pass "setenv, set an environment variable" - } else { - fail "setenv, set an environment variable - } -} else { - fail "setenv, set an environment variable" -} -# test getenv -if [info exists env(TESTRUN)] { - if { [getenv TESTRUN] == "FooBar" } { - pass "getenv, get an environment variable" - } else { - fail "getenv, get an environment variable" - } -} else { - untested "getenv, get an environment variable" -} - -# test unsetenv -if [info exists env(TESTRUN)] { - unsetenv TESTRUN - if [info exists env(TESTRUN)] { - fail "unsetenv, unset an environment variable" - } else { - pass "unsetenv, unset an environment variable" - } -} else { - untested "unsetenv, unset an environment variable" -} - -# which file -# grep args -# prune list pattern -# slay name -# absolute path -# psource file -# diff file_1 file_2 - - - - - - - - diff --git a/contrib/bluegnu2.0.3/testsuite/config/default.exp b/contrib/bluegnu2.0.3/testsuite/config/default.exp deleted file mode 100644 index 5954252..0000000 --- a/contrib/bluegnu2.0.3/testsuite/config/default.exp +++ /dev/null @@ -1,79 +0,0 @@ - Copyright (C) 1988, 90-93, 1995 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -global RUNTEST -if ![info exists RUNTEST] then { - set RUNTEST [transform runtest] -} - -if ![info exists EXPECT] { - set EXPECT [findfile $base_dir/../../expect/expect "$base_dir/../../expect/expect" expect] - verbose "EXPECT defaulting to $EXPECT" 2 -} - -global RUNTESTFLAGS -if ![info exists RUNTESTFLAGS] then { - set RUNTESTFLAGS "-v -v -a" -} - -# -# runtest_version -- extract and print the version number -# -proc runtest_version { } { - global RUNTEST - - catch {exec $RUNTEST -V} tmp - if [info exists tmp] then { - clone_output "$tmp\n" - } -} - -# -# runtest_load -- loads the program. For runtest, this is just a stub -# -proc runtest_load { arg } { -} - -# -# runtest_exit -- exit the test driver for expect -# -proc runtest_exit { } { - close -} - -# -# runtest_start -- start everything -# -proc runtest_start { } { - global verbose - global spawn_id - global subdir - global srcdir - global objdir - global RUNTEST - global RUNTESTFLAGS - - if {[which $RUNTEST] != 0} then { - perror "Can't find $RUNTEST" - } - -# return [open [concat "$RUNTEST $RUNTESTFLAGS"] r] -} diff --git a/contrib/bluegnu2.0.3/testsuite/configure b/contrib/bluegnu2.0.3/testsuite/configure deleted file mode 100755 index 560258e..0000000 --- a/contrib/bluegnu2.0.3/testsuite/configure +++ /dev/null @@ -1,1076 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.7 -# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_help="$ac_help - --with-tclinclude directory where tcl private headers are" - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.7" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LANG+set}" = set; then LANG=C; export LANG; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=Makefile.in - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='echo $CPP $CPPFLAGS 1>&5; -$CPP $CPPFLAGS' -ac_compile='echo ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5; -${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' -ac_link='echo ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5; -${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error -EOF -eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" -fi - CPP="$ac_cv_prog_CPP" -else - ac_cv_prog_CPP="$CPP" -fi -echo "$ac_t""$CPP" 1>&6 - -# If we cannot run a trivial program, we must be cross compiling. -echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_c_cross'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_c_cross=yes -else -cat > conftest.$ac_ext </dev/null; then - ac_cv_c_cross=no -else - ac_cv_c_cross=yes -fi -fi -rm -fr conftest* -fi - -echo "$ac_t""$ac_cv_c_cross" 1>&6 -cross_compiling=$ac_cv_c_cross - - -# -# Ok, lets find the tcl source trees so we can use the headers -# Warning: transition of version 9 to 10 will break this algorithm -# because 10 sorts before 9. We also look for just tcl. We have to -# be careful that we don't match stuff like tclX by accident. -# the alternative search directory is involked by --with-tclinclude -# -no_tcl=true -echo $ac_n "checking for Tcl private headers""... $ac_c" 1>&6 -# Check whether --with-tclinclude or --without-tclinclude was given. -if test "${with_tclinclude+set}" = set; then - withval="$with_tclinclude" - with_tclinclude=${withval} -fi - -if eval "test \"`echo '$''{'ac_cv_c_tclh'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - -# first check to see if --with-tclinclude was specified -if test x"${with_tclinclude}" != x ; then - if test -f ${with_tclinclude}/tclInt.h ; then - ac_cv_c_tclh=`(cd ${with_tclinclude}; pwd)` - else - { echo "configure: error: ${with_tclinclude} directory doesn't contain private headers" 1>&2; exit 1; } - fi -fi -# next check in private source directory -# -# since ls returns lowest version numbers first, reverse its output -if test x"${ac_cv_c_tclh}" = x ; then - for i in \ - ${srcdir}/../tcl \ - `ls -dr ${srcdir}/../tcl[0-9]* 2>/dev/null` \ - ${srcdir}/../../tcl \ - `ls -dr ${srcdir}/../../tcl[0-9]* 2>/dev/null` \ - ${srcdir}/../../../tcl \ - `ls -dr ${srcdir}/../../../tcl[0-9]* 2>/dev/null ` ; do - if test -f $i/tclInt.h ; then - ac_cv_c_tclh=`(cd $i; pwd)` - break - fi - # Tcl 7.5 and greater puts headers in subdirectory. - if test -f $i/generic/tclInt.h ; then - ac_cv_c_tclh=`(cd $i; pwd)`/generic - fi - done -fi -# finally check in a few common install locations -# -# since ls returns lowest version numbers first, reverse its output -if test x"${ac_cv_c_tclh}" = x ; then - for i in \ - `ls -dr /usr/local/src/tcl[0-9]* 2>/dev/null` \ - `ls -dr /usr/local/lib/tcl[0-9]* 2>/dev/null` \ - /usr/local/src/tcl \ - /usr/local/lib/tcl \ - ${prefix}/include ; do - if test -f $i/tclInt.h ; then - ac_cv_c_tclh=`(cd $i; pwd)` - break - fi - done -fi -# see if one is installed -if test x"${ac_cv_c_tclh}" = x ; then - ac_safe=`echo "tclInt.h" | tr './\055' '___'` -echo $ac_n "checking for tclInt.h""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_cv_c_tclh=installed -else - echo "$ac_t""no" 1>&6 -ac_cv_c_tclh="" -fi - -fi - -fi - -if test x"${ac_cv_c_tclh}" = x ; then - TCLHDIR="# no Tcl private headers found" - { echo "configure: error: Can't find Tcl private headers" 1>&2; exit 1; } -fi -if test x"${ac_cv_c_tclh}" != x ; then - no_tcl="" - if test x"${ac_cv_c_tkh}" = x"installed" ; then - echo "$ac_t""is installed" 1>&6 - TCLHDIR="" - else - echo "$ac_t""found in ${ac_cv_c_tclh}" 1>&6 - # this hack is cause the TCLHDIR won't print if there is a "-I" in it. - TCLHDIR="-I${ac_cv_c_tclh}" - fi -fi - -echo $ac_n "checking Tcl version""... $ac_c" 1>&6 -rm -rf tclmajor tclminor -orig_includes="$CPPFLAGS" - -if test x"${TCLHDIR}" != x ; then - CPPFLAGS="$CPPFLAGS $TCLHDIR" -fi - -if test "$cross_compiling" = yes; then - { echo "configure: error: can't be cross compiled" 1>&2; exit 1; } - -else -cat > conftest.$ac_ext < -#include "tcl.h" -main() { - FILE *maj = fopen("tclmajor","w"); - FILE *min = fopen("tclminor","w"); - fprintf(maj,"%d",TCL_MAJOR_VERSION); - fprintf(min,"%d",TCL_MINOR_VERSION); - fclose(maj); - fclose(min); - return 0; -} -EOF -eval $ac_link -if test -s conftest && (./conftest; exit) 2>/dev/null; then - tclmajor=`cat tclmajor` - tclminor=`cat tclminor` - tclversion=$tclmajor.$tclminor - echo "$ac_t""$tclversion" 1>&6 - rm -f tclmajor tclminor - -else - echo "$ac_t""can't happen" 1>&6 - -fi -fi -rm -fr conftest* -CPPFLAGS="${orig_includes}" - - - - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - -subdirs="calc" - - - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \ - >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.7" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir - -trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@CPP@%$CPP%g -s%@TCLHDIR@%$TCLHDIR%g -s%@subdirs@%$subdirs%g -s%@host@%$host%g - -CEOF -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust relative srcdir, etc. for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file -fi; done -rm -f conftest.subs - - - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - -if test "$no_recursion" != yes; then - - # Remove --cache-file and --srcdir arguments so they do not pile up. - ac_sub_configure_args= - ac_prev= - for ac_arg in $ac_configure_args; do - if test -n "$ac_prev"; then - ac_prev= - continue - fi - case "$ac_arg" in - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - ;; - *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; - esac - done - - for ac_config_dir in calc; do - - # Do not complain, so a configure script can configure whichever - # parts of a large source tree are present. - if test ! -d $srcdir/$ac_config_dir; then - continue - fi - - echo configuring in $ac_config_dir - - case "$srcdir" in - .) ;; - *) - if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; - else - { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; } - fi - ;; - esac - - ac_popdir=`pwd` - cd $ac_config_dir - - case "$srcdir" in - .) # No --srcdir option. We are building in place. - ac_sub_srcdir=$srcdir ;; - /*) # Absolute path. - ac_sub_srcdir=$srcdir/$ac_config_dir ;; - *) # Relative path. - ac_sub_srcdir=../$srcdir/$ac_config_dir ;; - esac - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_sub_srcdir/configure; then - ac_sub_configure=$ac_sub_srcdir/configure - elif test -f $ac_sub_srcdir/configure.in; then - ac_sub_configure=$ac_configure - else - echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2 - ac_sub_configure= - fi - - # The recursion is here. - if test -n "$ac_sub_configure"; then - - # Make the cache file name correct relative to the subdirectory. - # A "../" for each directory in /$ac_config_dir. - ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` - case "$cache_file" in - /*) ac_sub_cache_file=$cache_file ;; - *) # Relative path. - ac_sub_cache_file="$ac_dots$cache_file" ;; - esac - - echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir" - # The eval makes quoting arguments work. - if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir - then : - else - { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; } - fi - fi - - cd $ac_popdir - done -fi - diff --git a/contrib/bluegnu2.0.3/testsuite/configure.in b/contrib/bluegnu2.0.3/testsuite/configure.in deleted file mode 100644 index 80b25da..0000000 --- a/contrib/bluegnu2.0.3/testsuite/configure.in +++ /dev/null @@ -1,9 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_INIT(Makefile.in) - -CY_AC_PATH_TCLH - -AC_CONFIG_SUBDIRS(calc) - -AC_SUBST(host) -AC_OUTPUT(Makefile) diff --git a/contrib/bluegnu2.0.3/testsuite/lib/libsup.exp b/contrib/bluegnu2.0.3/testsuite/lib/libsup.exp deleted file mode 100644 index ed47679..0000000 --- a/contrib/bluegnu2.0.3/testsuite/lib/libsup.exp +++ /dev/null @@ -1,220 +0,0 @@ - Copyright (C) 92, 93, 94, 95, 1996 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -# Please email any bugs, comments, and/or additions to this file to: -# bug-dejagnu@prep.ai.mit.edu - -# This file was written by Rob Savoye. (rob@welcomehome.org) - -# -# Setup an environment so we can execute library procs without DejaGnu -# - -# -# Create a default environment and start expect. -# -proc make_defaults_file { defs } { - global srcdir - global objdir - global subdir - global build_triplet - global host_triplet - global target_triplet - global target_os - global target_cpu - - # We need to setup default values and a few default procs so we - # can execute library code without DejaGnu - set fd [open $defs w] - puts ${fd} "set tool foobar" - puts ${fd} "set srcdir ${srcdir}" - puts ${fd} "set objdir ${objdir}" - puts ${fd} "set subdir ${subdir}" - puts ${fd} "set build_triplet ${build_triplet}" - puts ${fd} "set host_triplet ${host_triplet}" - puts ${fd} "set target_triplet ${target_triplet}" - puts ${fd} "set target_os ${target_os}" - puts ${fd} "set target_cpu ${target_cpu}" - puts ${fd} "set tool foobar" - puts ${fd} "set testcnt 0" - puts ${fd} "set warncnt 0" - puts ${fd} "set errcnt 0" - puts ${fd} "set passcnt 0" - puts ${fd} "set xpasscnt 0" - puts ${fd} "set failcnt 0" - puts ${fd} "set xfailcnt 0" - puts ${fd} "set prms_id 0" - puts ${fd} "set bug_id 0" - puts ${fd} "set exit_status 0" - puts ${fd} "set untestedcnt 0" - puts ${fd} "set unresolvedcnt 0" - puts ${fd} "set unsupportedcnt 0" - puts ${fd} "set xfail_flag 0" - puts ${fd} "set xfail_prms 0" - puts ${fd} "set mail_logs 0" - puts ${fd} "set multipass_name 0" - catch "close $fd" -} - -proc start_expect { } { - global spawn_id - global base_dir - - # We need to setup default values and a few default procs so we - # can execute library code without DejaGnu - set defaults_file setval.tmp - make_defaults_file $defaults_file - set fd [open ${defaults_file} w] - - # look for expect - if ![info exists EXPECT] { - set EXPECT [findfile $base_dir/../../expect/expect "$base_dir/../../expect/expect" expect] - verbose "EXPECT defaulting to $EXPECT" 2 - } - -# catch close -# catch wait - - # Start expect runing - spawn "$EXPECT" - expect { - -re "expect.*> " { - verbose "Started the child expect shell" 2 - } - timeout { - perror "Timed out starting the child expect shell." - return -1 - } - } - - # Load the defaults file - exp_send "source ${defaults_file}\n" - expect { - "expect*> " { - verbose "Loaded testing defaults file." 2 - return 1 - } - timeout { - perror "Couldn't load the testing defaults file." - return -1 - } - } -} - -# -# Stop the runing expect process -# -proc stop_expect { } { - global spawn_id - - # make expect exit - exp_send "exit\n" - catch "close -i $spawn_id" - catch "wait -i $spawn_id" -} - -# -# Load the library to test -# -proc load_test_lib { lib } { - global spawn_id - exp_send "source ${lib}\n" - expect { - "expect*> " { - verbose "Testing ${lib}" 2 - } - timeout { - perror "Couldn't load the libraries to test" - return -1 - } - } -} - -# -# test a library proc that emits patterns -# -proc exp_test { cmd pattern msg } { - global spawn_id - - exp_send "puts ACK ; $cmd ; puts NAK\r\n" - expect { - "puts ACK*puts NAK" { - verbose "Got command echo" 3 - } - timeout { - warning "Never got command echo" - } - } - - expect { - "ACK" { - exp_continue - } - -re "\r\n1\r\n" { - warning "$msg, 1 was returned" - exp_continue - } - -re "\r\n0\r\n" { - warning "$msg, 0 was returned" - exp_continue - } - "$pattern" { - pass "$msg" - } - timeout { - fail "$msg" - } - } -} - -# test a config proc that only returns a code -# ex... config_test "isbuild $build_triplet" "pass" "fail" "isbuild, native" -# args are: command, true condition, false condition, message to print -proc config_test { cmd true false msg } { - global spawn_id - - set timeout 20 - exp_send "puts ACK ; puts \[$cmd\] ; puts NAK\r\n" - expect { - "puts ACK*$cmd*puts NAK" { - verbose "Got command echo" 3 - } - timeout { - warning "Never got command echo" - } - } - - expect { - -re "Checking pattern*with*\[\r\n\]" { - exp_continue - } - -re "\r\n1\r\n" { - $true "$msg" - } - -re "\r\n0\r\n" { - $false "$msg" - } - timeout { - perror "$msg (timed out)" - } - } -} - - - - - - diff --git a/contrib/bluegnu2.0.3/testsuite/tools/env.exp b/contrib/bluegnu2.0.3/testsuite/tools/env.exp deleted file mode 100644 index ebbe79f..0000000 --- a/contrib/bluegnu2.0.3/testsuite/tools/env.exp +++ /dev/null @@ -1,20 +0,0 @@ - -puts "======= Environment (Start) =======" - -foreach __item [lsort [list env]] { - if {[string compare $__item "__info"] == 0} continue - if [catch {puts " $__item=>[eval set $__item]<"} szErrMsg] { - if [regexp "variable is array" $szErrMsg] { - foreach __elem [lsort [array names $__item]] { - puts " ${__item}($__elem)=>[set ${__item}($__elem)]<" - } - } else { - puts "******* >> msg : $szErrMsg" - puts "******* >> errorInfo: [uplevel #0 set errorInfo]" - puts "******* >> errorCode: [uplevel #0 set errorCode]" - } - } -} - -pass env.exp -puts "======= Environment (End) =======" -- cgit v1.1