Reorganized GDB tests - base
authorStan Shebs <shebs@codesourcery.com>
Tue, 7 Jun 1994 01:57:15 +0000 (01:57 +0000)
committerStan Shebs <shebs@codesourcery.com>
Tue, 7 Jun 1994 01:57:15 +0000 (01:57 +0000)
57 files changed:
gdb/testsuite/gdb.base/.Sanitize [new file with mode: 0644]
gdb/testsuite/gdb.base/Makefile.in [new file with mode: 0644]
gdb/testsuite/gdb.base/README [new file with mode: 0644]
gdb/testsuite/gdb.base/a1-selftest.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/bitfields.c [new file with mode: 0644]
gdb/testsuite/gdb.base/bitfields.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/break.c [new file with mode: 0644]
gdb/testsuite/gdb.base/break.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/callfuncs.c [new file with mode: 0644]
gdb/testsuite/gdb.base/configure.in [new file with mode: 0644]
gdb/testsuite/gdb.base/coremaker.c [new file with mode: 0644]
gdb/testsuite/gdb.base/crossload.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/echo.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/exprs.c [new file with mode: 0644]
gdb/testsuite/gdb.base/exprs.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/funcargs.c [new file with mode: 0644]
gdb/testsuite/gdb.base/funcargs.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/hppa.mt [new file with mode: 0644]
gdb/testsuite/gdb.base/i486-elf.u [new file with mode: 0644]
gdb/testsuite/gdb.base/i860-elf.u [new file with mode: 0644]
gdb/testsuite/gdb.base/interrupt.c [new file with mode: 0644]
gdb/testsuite/gdb.base/list0.c [new file with mode: 0644]
gdb/testsuite/gdb.base/list0.h [new file with mode: 0644]
gdb/testsuite/gdb.base/list1.c [new file with mode: 0644]
gdb/testsuite/gdb.base/m68k-aout.u [new file with mode: 0644]
gdb/testsuite/gdb.base/m68k-aout2.u [new file with mode: 0644]
gdb/testsuite/gdb.base/m68k-elf.u [new file with mode: 0644]
gdb/testsuite/gdb.base/mips-ecoff.u [new file with mode: 0644]
gdb/testsuite/gdb.base/mips_pro.c [new file with mode: 0644]
gdb/testsuite/gdb.base/nodebug.c [new file with mode: 0644]
gdb/testsuite/gdb.base/opaque-info.c [new file with mode: 0644]
gdb/testsuite/gdb.base/opaque.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/opaque0.c [new file with mode: 0644]
gdb/testsuite/gdb.base/opaque1.c [new file with mode: 0644]
gdb/testsuite/gdb.base/printcmds.c [new file with mode: 0644]
gdb/testsuite/gdb.base/printcmds.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/ptype.c [new file with mode: 0644]
gdb/testsuite/gdb.base/ptype.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/radix.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/recurse.c [new file with mode: 0644]
gdb/testsuite/gdb.base/recurse.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/return.c [new file with mode: 0644]
gdb/testsuite/gdb.base/run.c [new file with mode: 0644]
gdb/testsuite/gdb.base/scope.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/scope0.c [new file with mode: 0644]
gdb/testsuite/gdb.base/scope1.c [new file with mode: 0644]
gdb/testsuite/gdb.base/setvar.c [new file with mode: 0644]
gdb/testsuite/gdb.base/setvar.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/sparc-aout.u [new file with mode: 0644]
gdb/testsuite/gdb.base/sparc-elf.u [new file with mode: 0644]
gdb/testsuite/gdb.base/term.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/twice.c [new file with mode: 0644]
gdb/testsuite/gdb.base/types.c [new file with mode: 0644]
gdb/testsuite/gdb.base/watchpoint.c [new file with mode: 0644]
gdb/testsuite/gdb.base/watchpoint.exp [new file with mode: 0644]
gdb/testsuite/gdb.base/whatis-info.c [new file with mode: 0644]
gdb/testsuite/gdb.base/whatis.c [new file with mode: 0644]

diff --git a/gdb/testsuite/gdb.base/.Sanitize b/gdb/testsuite/gdb.base/.Sanitize
new file mode 100644 (file)
index 0000000..d0eedcb
--- /dev/null
@@ -0,0 +1,105 @@
+# .Sanitize for gdb/testsuite/gdb.base.
+
+# Each directory to survive its way into a release will need a file
+# like this one called "./.Sanitize".  All keyword lines must exist,
+# and must exist in the order specified by this file.  Each directory
+# in the tree will be processed, top down, in the following order.
+
+# Hash started lines like this one are comments and will be deleted
+# before anything else is done.  Blank lines will also be squashed
+# out.
+
+# The lines between the "Do-first:" line and the "Things-to-keep:"
+# line are executed as a /bin/sh shell script before anything else is
+# done in this directory.
+
+Do-first:
+
+# All files listed between the "Things-to-keep:" line and the
+# "Do-last:" line will be kept.  All other files will be removed.
+# Directories listed in this section will have their own Sanitize
+# called.  Directories not listed will be removed in their entirety
+# with rm -rf.
+
+Things-to-keep:
+
+Makefile.in
+README
+a1-selftest.exp
+a2-run.exp
+bitfields.c
+bitfields.exp
+break.c
+break.exp
+callfuncs.c
+callfuncs.exp
+configure.in
+corefile.exp
+coremaker.c
+crossload.exp
+default.exp
+echo.exp
+exprs.c
+exprs.exp
+funcargs.c
+funcargs.exp
+gdbvars.exp
+help.exp
+i486-elf.u
+i860-elf.u
+interrupt.c
+interrupt.exp
+list.exp
+list0.c
+list0.h
+list1.c
+m68k-aout.u
+m68k-aout2.u
+m68k-elf.u
+mips-ecoff.u
+mips_pro.c
+mips_pro.exp
+nodebug.c
+nodebug.exp
+opaque-info.c
+opaque.exp
+opaque0.c
+opaque1.c
+printcmds.c
+printcmds.exp
+ptype.c
+ptype.exp
+radix.exp
+recurse.c
+recurse.exp
+return.c
+return.exp
+run.c
+scope.exp
+scope0.c
+scope1.c
+setvar.c
+setvar.exp
+signals.c
+signals.exp
+sparc-aout.u
+sparc-elf.u
+t10.c
+term.exp
+twice.c
+twice.exp
+watchpoint.c
+watchpoint.exp
+whatis-info.c
+whatis.c
+whatis.exp
+
+Things-to-lose:
+
+# The lines between the "Do-last:" line and the end of the file
+# are executed as a /bin/sh shell script after everything else is
+# done.
+
+Do-last:
+
+# eof
diff --git a/gdb/testsuite/gdb.base/Makefile.in b/gdb/testsuite/gdb.base/Makefile.in
new file mode 100644 (file)
index 0000000..e25db0d
--- /dev/null
@@ -0,0 +1,413 @@
+# Makefile for regression testing the GNU debugger.
+#   Copyright (C) 1992, 93, 1994 Free Software Foundation, Inc.
+
+# This file is part of GDB.
+
+# GDB 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, or (at your option)
+# any later version.
+
+# GDB 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; see the file COPYING.  If not, write to
+# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+srcdir = .
+prefix = /usr/local
+program_transform_name =
+
+exec_prefix = $(prefix)
+bindir = $(exec_prefix)/bin
+libdir = $(exec_prefix)/lib
+tooldir = $(libdir)/$(target_alias)
+
+datadir = $(exec_prefix)/lib/dejagnu
+mandir = $(prefix)/man
+man1dir = $(mandir)/man1
+man2dir = $(mandir)/man2
+man3dir = $(mandir)/man3
+man4dir = $(mandir)/man4
+man5dir = $(mandir)/man5
+man6dir = $(mandir)/man6
+man7dir = $(mandir)/man7
+man8dir = $(mandir)/man8
+man9dir = $(mandir)/man9
+infodir = $(prefix)/info
+includedir = $(prefix)/include
+gxx_includedir = $(tooldir)/g++-include
+docdir = $(datadir)/doc
+targetdir = $(datadir)/$(target_alias)
+
+SHELL = /bin/sh
+
+INSTALL = install -c
+INSTALL_PROGRAM = $(INSTALL)
+INSTALL_DATA = $(INSTALL)
+
+CFLAGS = -g
+# start-sanitize-chill
+CHILLFLAGS = $(CFLAGS)
+# end-sanitize-chill
+# This should probably be consistent with the top-level Makefile.in,
+# gdb/Makefile.in, and gdb/testsuite/gdb.t2*/Makefile.in, so that "make check"
+# has the same effect no matter where it is run.
+CXXFLAGS = -g -O
+
+LINK=          ln -s
+
+RUNTEST = runtest
+
+EXPECT = `if [ -f $${rootme}/../../expect/expect ] ; then \
+          echo $${rootme}/../../expect/expect ; \
+          else echo expect ; fi`
+
+RUNTEST_FOR_TARGET = ` \
+  if [ -f $${rootme}/../../dejagnu/site.exp ] ; then \
+    echo $${rootme}/../../dejagnu/runtest ; \
+  else \
+    if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
+      echo $(RUNTEST); \
+    else \
+      t='$(program_transform_name)'; echo runtest | sed -e '' $$t; \
+    fi; \
+  fi`
+
+RUNTESTFLAGS = 
+
+CC_FOR_TARGET = ` \
+  if [ -f $${rootme}/../../gcc/xgcc ] ; then \
+    echo $${rootme}/../../gcc/xgcc -B$${rootme}/../../gcc/; \
+  else \
+    if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
+      echo $(CC); \
+    else \
+      t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \
+    fi; \
+  fi`
+
+CFLAGS_FOR_TARGET = $(CFLAGS)
+
+GDB = ` \
+  if [ -f $${rootme}/../gdb ] ; \
+    then echo $${rootme}|sed -e 's@/[^/]*$$@@'|sed -e 's@$$@/gdb@' ; \
+    else echo gdb; \
+  fi`
+
+GDBFLAGS = -nx
+
+#### host, target, and site specific Makefile frags come in here.
+
+EXECUTABLES =  \
+       bitfields  \
+       break  \
+       callfuncs  \
+       coremaker  \
+       exprs  \
+       funcargs  \
+       interrupt  \
+       list  \
+       mips_pro  \
+       nodebug  \
+       opaque  \
+       opaque-info.exp  \
+       printcmds  \
+       ptype  \
+       recurse  \
+       return  \
+       run  \
+       scope  \
+       setvar  \
+       signals  \
+       t10  \
+       twice  \
+       watchpoint  \
+       whatis  \
+       whatis-info.exp  \
+       $(CROSS_EXECUTABLES)
+
+# List of test executables that we have available.  They are kept in
+# uuencoded format to avoid SCCS/RCS problems with binary files.
+
+CROSS_EXECUTABLES =  \
+       i486-elf  \
+       i860-elf  \
+       m68k-elf  \
+       m68k-aout  \
+       m68k-aout2  \
+       mips-ecoff  \
+       sparc-aout  \
+       sparc-elf
+
+all:   $(EXECUTABLES) corefile
+
+CC_CFLAGS_LD_FOR_TARGET = $(CC_FOR_TARGET) $(CFLAGS) $(LDFLAGS_FOR_TARGET)
+
+CC_CFLAGS_FOR_TARGET = $(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET)
+
+run: run.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o run run.o $(LIBS)
+
+run.o: run.c
+       $(CC_FOR_TARGET) $(CFLAGS) -c $(srcdir)/run.c
+
+# We want to make sure comp-info.exp reflects the way that whatis was compiled;
+# that's why this isn't a separate rule.
+
+whatis whatis-info.exp: whatis.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o whatis.tmp whatis.o $(LIBS)
+       $(CC_FOR_TARGET) $(CFLAGS) -E $(srcdir)/whatis-info.c >whatis-info.tmp
+       mv whatis-info.tmp whatis-info.exp
+       mv whatis.tmp whatis
+
+.PRECIOUS: whatis whatis-info.exp
+
+whatis.o: whatis.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/whatis.c
+
+ptype: ptype.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o ptype ptype.o $(LIBS)
+
+ptype.o: ptype.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/ptype.c
+
+setvar: setvar.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o setvar setvar.o $(LIBS)
+
+setvar.o: setvar.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/setvar.c
+
+exprs: exprs.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o exprs exprs.o $(LIBS)
+
+exprs.o: exprs.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/exprs.c
+
+break: break.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o break break.o $(LIBS)
+
+break.o: break.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/break.c
+
+signals: signals.o
+       ${CC} ${CFLAGS} ${LDFLAGS_FOR_TARGET} -o signals signals.o ${LIBS}
+
+signals.o: signals.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/signals.c
+
+twice: twice.c
+       echo '#include "twice.c"' >twice-tmp.c
+       $(CC_CFLAGS_LD_FOR_TARGET) -I$(srcdir) -o twice twice-tmp.c $(LIBS)
+       rm -f twice-tmp.c
+
+watchpoint: watchpoint.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o watchpoint watchpoint.o $(LIBS)
+
+watchpoint.o: watchpoint.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/watchpoint.c
+
+recurse: recurse.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o recurse recurse.o $(LIBS)
+
+recurse.o: recurse.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/recurse.c
+
+# We want to make sure opaque-info.exp reflects the way that opaque
+# was compiled; that's why this isn't a separate rule.
+
+opaque opaque-info.exp: opaque0.o opaque1.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o opaque.tmp opaque0.o opaque1.o $(LIBS)
+       $(CC_CFLAGS_FOR_TARGET) -E $(srcdir)/opaque-info.c >opaque-info.tmp
+       mv opaque-info.tmp opaque-info.exp
+       mv opaque.tmp opaque
+
+opaque0.o: opaque0.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/opaque0.c
+
+opaque1.o: opaque1.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/opaque1.c
+
+coremaker: coremaker.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o coremaker coremaker.o $(LIBS)
+
+coremaker.o: coremaker.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/coremaker.c
+
+# Create a core file named "corefile" rather than just "core", to
+# avoid problems with sys admin types that like to regularly prune all
+# files named "core" from the system.
+# bsd 386 systems append the name of the program to the corefile name.
+
+corefile: coremaker
+       -rm -f core
+       -echo Expect a coredump from this next command...
+       -./coremaker >/dev/null 2>&1 || true
+       -if [ -f core ]; then mv core corefile; else true; fi
+       -if [ -f core.coremaker ]; then mv core.coremaker corefile; else true; fi
+
+nodebug: nodebug.o
+       $(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) -o nodebug nodebug.o $(LIBS)
+
+# This gets compiled *without* -g, so don't add CFLAGS here.
+
+nodebug.o: nodebug.c
+       $(CC_FOR_TARGET) -c $(srcdir)/nodebug.c
+
+# For VPATH and Sun Make, we have to make explicit dependencies.
+# DEC make doesn't seem to understand the ".u" dependency w/VPATH either.
+
+m68k-elf: $(srcdir)/m68k-elf.u
+       uudecode $(srcdir)/m68k-elf.u
+
+m68k-aout: $(srcdir)/m68k-aout.u
+       uudecode $(srcdir)/m68k-aout.u
+
+m68k-aout2: $(srcdir)/m68k-aout2.u
+       uudecode $(srcdir)/m68k-aout2.u
+
+mips-ecoff: $(srcdir)/mips-ecoff.u
+       uudecode $(srcdir)/mips-ecoff.u
+
+i486-elf: $(srcdir)/i486-elf.u
+       uudecode $(srcdir)/i486-elf.u
+
+sparc-aout: $(srcdir)/sparc-aout.u
+       uudecode $(srcdir)/sparc-aout.u
+
+i860-elf: $(srcdir)/i860-elf.u
+       uudecode $(srcdir)/i860-elf.u
+
+sparc-elf: $(srcdir)/sparc-elf.u
+       uudecode $(srcdir)/sparc-elf.u
+
+t10: t10.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o t10 t10.o $(LIBS)
+
+list: list0.o list1.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o list list0.o list1.o $(LIBS)
+
+list0.o: list0.c list0.h
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/list0.c
+
+list1.o: list1.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/list1.c
+
+scope: scope0.o scope1.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o scope scope0.o scope1.o $(LIBS)
+
+scope0.o: scope0.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/scope0.c
+
+scope1.o: scope1.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/scope1.c
+
+bitfields: bitfields.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o bitfields.tmp bitfields.o $(LIBS)
+       mv bitfields.tmp bitfields
+
+.PRECIOUS: bitfields
+
+bitfields.o: bitfields.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/bitfields.c
+
+funcargs: funcargs.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o funcargs funcargs.o $(LIBS)
+
+funcargs.o: funcargs.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/funcargs.c
+
+return: return.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o return return.o $(LIBS)
+
+return.o: return.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/return.c
+
+mips_pro: mips_pro.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o mips_pro mips_pro.o $(LIBS)
+
+mips_pro.o: mips_pro.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/mips_pro.c
+
+printcmds: printcmds.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o printcmds printcmds.o $(LIBS)
+
+printcmds.o: printcmds.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/printcmds.c
+
+callfuncs: callfuncs.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o callfuncs callfuncs.o $(LIBS)
+
+callfuncs.o: callfuncs.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/callfuncs.c
+
+interrupt: interrupt.o
+       $(CC_CFLAGS_LD_FOR_TARGET) -o interrupt interrupt.o $(LIBS)
+
+interrupt.o: interrupt.c
+       $(CC_CFLAGS_FOR_TARGET) -c $(srcdir)/interrupt.c
+
+.NOEXPORT:
+INFODIRS=doc
+info:
+install-info:
+dvi:
+
+install:
+
+uninstall: force
+
+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 GDBFLAGS \"${GDBFLAGS}\"" >> ./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 srcdir ${srcdir}" >> ./tmp0
+               @echo "set objdir `pwd`" >> ./tmp0
+       @echo "set tool gdb" >> ./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?
+
+installcheck:
+check: site.exp all just-check
+just-check:
+       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_FOR_TARGET) $(RUNTESTFLAGS) --tool gdb GDB=$(GDB) --srcdir $(srcdir)
+
+clean mostlyclean:
+       -rm -f *~ *.o a.out xgdb *.x $(EXECUTABLES)
+       -rm -f core core.coremaker corefile
+
+distclean realclean: clean
+       -rm -f *~ core *.log *.plog *.sum *.psum site.*
+       -rm -f Makefile config.status *-init.exp
+       -rm -fr *.log summary detail *.plog *.sum *.psum site.*
+
+Makefile : $(srcdir)/Makefile.in $(srcdir)/configure.in $(host_makefile_frag) $(target_makefile_frag)
+       $(SHELL) ./config.status
+
diff --git a/gdb/testsuite/gdb.base/README b/gdb/testsuite/gdb.base/README
new file mode 100644 (file)
index 0000000..556fc75
--- /dev/null
@@ -0,0 +1,13 @@
+Information about the various executables found in this test:
+
+             BFD              CPU     Objfile
+Executable   Target           Type    Type     Info about compilation machine
+----------   ------           ----    -------  -------------------------------
+i486-elf     elf-little       i486    ELF      NCR 3000, /usr/ccs/ATT/cc
+i860-elf     elf-big          i860    ELF      Stratus
+m68k-elf     elf-big          m68k    ELF      Amiga 3000 UX, /usr/ccs/bin/cc
+m68k-aout    a.out-newsos3    m68k    a.out    Sony NEWS
+m68k-aout2   a.out-sunos-big  m68k    a.out    SunOS 4.1, gcc cygnus-2.0.1
+sparc-aout   a.out-sunos-big  sparc   a.out    Sun 4, SunOS 4.1.1, gcc 2.1
+sparc-elf    elf-big          sparc   ELF      Sun 4, Solaris 1.0, gcc 2.0.2
+mips-ecoff   ecoff-bigmips    mips    ecoff    IRIX 4.0.1
diff --git a/gdb/testsuite/gdb.base/a1-selftest.exp b/gdb/testsuite/gdb.base/a1-selftest.exp
new file mode 100644 (file)
index 0000000..af9d836
--- /dev/null
@@ -0,0 +1,516 @@
+#   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 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-gdb@prep.ai.mit.edu
+
+# This file was written by Rob Savoye. (rob@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+       }
+
+set prms_id 0
+set bug_id 0
+
+# are we on a target board
+if ![isnative] then {
+    warning "These test cases can't run on a target system."
+    continue
+}
+
+proc test_with_self {} {
+    global prompt
+    global tool
+    global det_file
+    global timeout
+    global decimal
+
+    # load yourself into the debugger
+    # This can take a relatively long time, particularly for testing where
+    # the executable is being accessed over a network, or where gdb does not
+    # support partial symbols for a particular target and has to load the
+    # entire symbol table.  Set the timeout to 10 minutes, which should be
+    # adequate for most environments (it *has* timed out with 5 min on a
+    # SPARCstation SLC under moderate load, so this isn't unreasonable).
+    # After gdb is loaded, set the timeout to 30 seconds for the duration
+    # of this test, and then back to the original value.
+
+    set oldtimeout $timeout
+    set timeout 600
+    if {[gdb_load "./x$tool"] <0} then {
+       return -1
+    }
+
+    set timeout 30
+
+    # disassemble yourself
+    send "x/10i main\n"
+    expect {
+       -re "x/10i.*main.*main.$decimal.*main.$decimal.*$prompt $"\
+           { pass "Disassemble main" }
+       -re ".*$prompt $"       { fail "Disassemble main" }
+       timeout         { fail "(timeout) Disassemble main" }
+    }
+
+    set description "set breakpoint at main"
+    send "break main\n"
+    expect {
+       -re "Breakpoint.*at.* file.*, line.*$prompt $" {
+           pass "$description"
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+       }
+       timeout {
+           fail "$description (timeout)"
+       }
+    }
+
+    # run yourself
+    set description "run until breakpoint at main"
+    send "run\n"
+    expect {
+       -re "Starting program.*Breakpoint \[0-9\]+,.*main .argc.*argv.* at .*main.c:.*$prompt $" {
+           pass "$description"
+       }
+       -re "Starting program.*Breakpoint \[0-9\]+,.*main .argc.*argv.*$prompt $" {
+           xfail "$description (line numbers scrambled?)"
+       }
+       -re "vfork: No more processes.*$prompt $" {
+           fail "$description (out of virtual memory)"
+           return -1
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+           return -1
+       }
+       timeout {
+           fail "$description (timeout)"
+       }
+    }
+
+    # do we have a version number ?
+    send "print version\n"
+    expect {
+       -re ".\[0-9\]+ = +0x.*\[0-9.\]+.*$prompt $" {
+           pass "printed version"
+       }
+       -re ".\[0-9\]+ = +.+ +0x.*\[0-9.\]+.*$prompt $" {
+           pass "printed version with cast"
+       }
+       -re ".*$prompt $"       { fail "printed version" }
+       timeout         { fail "(timeout) printed version" }
+    }
+
+    # lets do a few single steps
+
+    set description "step over symarg initialization"
+    send "step\n"
+    expect {
+       -re "char \[*\]+execarg = NULL;.*$prompt $" {
+           pass "$description"
+       }
+       -re ".*No such file or directory.\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*A file or directory .* does not exist..\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+       }
+       timeout {
+           fail "$description (timeout)"
+       }
+    }
+
+    set description "step over execarg initialization"
+    send "step\n"
+    expect {
+       -re "char \[*\]corearg = NULL;.*$prompt $" {
+           pass "$description"
+       }
+       -re ".*No such file or directory.\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*A file or directory .* does not exist..\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+       }
+       timeout {
+           fail "$description" (timeout)"
+       }
+    }
+
+    set description "step over corearg initialization"
+    send "step\n"
+    expect {
+       -re "char \[*\]cdarg = NULL;.*$prompt $" {
+           pass "$description"
+       }
+       -re ".*No such file or directory.\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*A file or directory .* does not exist..\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+       }
+       timeout {
+           fail "$description" (timeout)"
+       }
+    }
+    
+    set description "step over cdarg initialization"
+    send "step\n"
+    expect {
+       -re "char \[*\]ttyarg = NULL;.*$prompt $" {
+           pass "$description"
+       }
+       -re ".*No such file or directory.\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*A file or directory .* does not exist..\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+       }
+       timeout {
+           fail "$description" (timeout)"
+       }
+    }
+    
+    set description "step over ttyarg initialization"
+    send "step\n"
+    expect {
+       -re "init_malloc.* NULL.*$prompt $" {
+           pass "$description"
+       }
+       -re ".*No such file or directory.\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*A file or directory .* does not exist..\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+       }
+       timeout {
+           fail "$description" (timeout)"
+       }
+    }
+
+    # now jump over a few functions
+
+    set description "next over init_malloc and everything it calls"
+    send "next\n"
+    expect {
+       -re "if.*SET_TOP_LEVEL.*$prompt $" {
+           pass "$description"
+       }
+       -re "i = .*count.*$prompt $" {
+           pass "$description"
+           set description "next over ALIGN_STACK_ON_STARTUP code"
+           send "next\n"
+           expect {
+               -re "if.*i != 0.*$prompt $" {
+                   pass "$description"
+                   send "next\n"
+                   expect {
+                       -re "if.*SET_TOP_LEVEL.*$prompt $" {
+                           pass "$description"
+                       }
+                       -re "alloca.*$prompt $" {
+                           send "next\n"
+                           expect {
+                               -re "if.*level.*$prompt $" {
+                                   pass "$description"
+                               }
+                           }
+                       }
+                   }
+               }
+           }
+       }
+       -re ".*No such file or directory.\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*A file or directory .* does not exist..\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+       }
+       timeout {
+           fail "$description (timeout)"
+       }
+    }
+    #    -re "if \(setmp \(to_top_level\)\).*$prompt $" { pass "first next" }
+    
+    
+    # This one fails on Solaris (for some versions of gdb) because you
+    # can't next over library functions
+    setup_xfail "sparc-sun-solaris2" 1817
+    set next_ok 1
+    set need_to_step_over_cmdsize 1
+    set description "next over SET_TOP_LEVEL call"
+    send "next\n"
+    expect {
+       -re "cmdsize = 1;.*$prompt $" {
+           pass "$description"
+       }
+       -re "cmdarg = .*xmalloc.*$prompt $" {
+           # This can happen in optimized code where the "cmdsize = 1" line
+           # is basically removed.
+           pass "$description"
+           set need_to_step_over_cmdsize 0
+       }
+       -re ".*No such file or directory.\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*A file or directory .* does not exist..\r\n$prompt $" {
+           pass "$description (no source available)"
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+           set next_ok 0
+       }
+       timeout {
+           fail "$description (timeout)"
+           set next_ok 0
+       }
+    }
+    
+    set description "print a string"
+    send "print \"foo\"\n"
+    expect {
+       -re ".\[0-9\]+ = \"foo\".*$prompt $" {
+           pass "$description"
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+       }
+       timeout {
+           fail "$description (timeout)"
+       }
+    }
+
+    if $need_to_step_over_cmdsize {    
+       set description "step over cmdsize initialization"
+       send "step\n"
+       expect {
+           -re "cmdarg = .*xmalloc.*$prompt $" {
+               pass "$description"
+           }
+           -re ".*No such file or directory.\r\n$prompt $" {
+               pass "$description (no source available)"
+           }
+           -re ".*A file or directory .* does not exist..\r\n$prompt $" {
+               pass "$description (no source available)"
+           }
+           -re ".*$prompt $" {
+               fail "$description"
+           }
+           timeout {
+               fail "$description" (timeout)"
+           }
+       }
+    }
+
+    # and another step for good luck
+    # This one fails on Solaris (for some versions of gdb) because you
+    # can't step into library functions
+    if $next_ok {
+       set description "step into xmalloc call"
+        send "step\n"
+        expect {
+           -re "xmalloc.*size=.*at.*utils.c.*$prompt $" {
+               pass "$description"
+           }
+           -re ".*No such file or directory.\r\n$prompt $" {
+               pass "$description (no source available)"
+           }
+           -re "A file or directory .* does not exist..\r\n$prompt $" {
+               pass "$description (no source available)"
+           }
+           -re ".*$prompt $" {
+               fail "$description"
+           }
+           timeout {
+               fail "$description (timeout)"
+           }
+       }
+    }
+    
+    # start the "xgdb" process
+    send "continue\n"
+    expect {
+       -re "GDB is free software and you are welcome to distribute copies of it.*
+ under certain conditions; type \"show copying\" to see the conditions..*
+There is absolutely no warranty for GDB; type \"show warranty\" for details..*
+GDB.*Copyright \[0-9\]+ Free Software Foundation, Inc..*$prompt $"\
+           { pass "xgdb is at prompt" }
+       -re ".*$prompt $"       { fail "xgdb is at prompt" }
+       timeout             { fail "(timeout) xgdb is at prompt" }
+    }
+    
+    # set xgdb prompt so we can tell which is which
+    send "set prompt (xgdb) \n"
+    expect {
+       -re "\[(\]xgdb\[)\].*\[(\]xgdb\[)\] $"  { pass "Set xgdb prompt" }
+       -re ".*$prompt $"               { fail "Set xgdb prompt" }
+       default                         { fail "(timeout) Set xgdb prompt" }
+    }
+    
+    # kill the xgdb process
+    set description "send ^C to child process"
+    send "\003"
+    expect {
+       -re "Program received signal SIGINT.*$prompt $" {
+           pass "$description"
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+       }
+       timeout {
+           fail "$description (timeout)"
+       }
+    }
+    
+    set description "send SIGINT signal to child process"
+    send "signal SIGINT\n"
+    expect {
+       -re "Continuing with signal SIGINT.*$prompt $" {
+           pass "$description"
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+       }
+       timeout {
+           fail "$description (timeout)"
+       }
+    }
+    
+    # get a stack trace
+    setup_xfail "rs6000-*-*"
+    setup_xfail "i486-*-sysv4"
+    set description "backtrace through signal handler"
+    send "backtrace\n"
+    expect {
+       -re "#0.*read.*#\[1-9\].*main.c.*$prompt $" {
+           pass "$description"
+       }
+       -re ".*$prompt $" {
+           fail "$description"
+       }
+       timeout {
+           fail "$description (timeout)"
+       }
+    }
+    
+    # force GDB to dump core.  On Solaris expect seems to not see the
+    # final message, even if gdb did dump core, so we check for the
+    # core dump explicitly if we time out.
+    # bsd 386 systems append the name of the program to the corefile name.
+    system rm -f core core.gdb
+    send "maint dump-me\n"
+    expect {
+       -re "maint dump-me.*Should GDB dump core.*y or n. $" {
+           send "y\n"
+           expect {
+               -re "Quit.*core dumped.*"    { pass "GDB dumped core" }
+               -re "Program received signal SIGQUIT.*$prompt $" {
+                   pass "GDB dumped core"
+                   # This means we just told xgdb, not gdb, to dump core.
+                   # Get out of gdb so that removing xgdb doesn't get
+                   # test busy errors.
+                   gdb_exit
+               }
+               -re "$prompt $" { fail "GDB dumped core" }
+               default { 
+                   if {[file exists core] || [file exists core.gdb]} then {
+                       pass "GDB dumped core"
+                   } else {
+                       fail "GDB dumped core"
+                   }
+               }
+           }
+       }
+       -re ".*$prompt $"       { fail "GDB dumped core" }
+       timeout             { fail "(timeout) GDB dumped core" }
+    }
+    system rm -f core core.gdb
+
+    # Set the timeout back to the value it had when we were called.
+    set timeout $oldtimeout
+
+    # Restart gdb in case next test expects it to be started already.
+    gdb_start
+    return 0
+}
+
+# Find a pathname to a file that we would execute if the shell was asked
+# to run $arg using the current PATH.
+
+proc find_gdb { arg } {
+
+    # If the arg directly specifies an existing executable file, then
+    # simply use it.
+
+    if [file executable $arg] then {
+       return $arg
+    }
+
+    set result [which $arg]
+    if [string match "/" [ string range $result 0 0 ]] then {
+       return $result
+    }
+
+    # If everything fails, just return the unqualified pathname as default
+    # and hope for best.
+
+    return $arg
+}
+
+# Run the test with self.
+# Copy the file executable file in case this OS doesn't like to edit it's own
+# text space.
+
+set GDB_FULLPATH [find_gdb $GDB]
+
+# Remove any old copy lying around.
+catch "exec rm -f ./x$tool"
+
+if ![file executable $GDB_FULLPATH] then {
+    fail "couldn't convert $GDB to absolute pathname to make local copy"
+} else {
+    if [catch "exec cp $GDB_FULLPATH ./x$tool"] then {
+       fail "couldn't copy $GDB_FULLPATH to current directory"
+    } else {
+       verbose "\t\tCopied $GDB_FULLPATH to ./x$tool"
+       if {[test_with_self] <0} then {
+           warning "Couldn't test self"
+           catch "exec rm -f ./x$tool"
+           return -1
+       }
+       catch "exec rm -f ./x$tool"
+    }
+}
diff --git a/gdb/testsuite/gdb.base/bitfields.c b/gdb/testsuite/gdb.base/bitfields.c
new file mode 100644 (file)
index 0000000..453bd3c
--- /dev/null
@@ -0,0 +1,190 @@
+/* Test program to test bit field operations */
+
+/* For non-ANSI compilers, use plain ints for the signed bit fields.  However,
+   whether they actually end up signed or not is implementation defined, so
+   this may cause some tests to fail.  But at least we can still compile
+   the test program and run the tests... */
+
+#ifndef __STDC__
+#define signed  /**/
+#endif
+
+struct fields
+{
+  unsigned char        uc    ;
+  signed int   s1 : 1;
+  unsigned int u1 : 1;
+  signed int   s2 : 2;
+  unsigned int u2 : 2;
+  signed int   s3 : 3;
+  unsigned int u3 : 3;
+  signed int   s9 : 9;
+  unsigned int  u9 : 9;
+  signed char  sc    ;
+} flags;
+
+void break1 ()
+{
+}
+
+void break2 ()
+{
+}
+
+void break3 ()
+{
+}
+
+void break4 ()
+{
+}
+
+void break5 ()
+{
+}
+
+void break6 ()
+{
+}
+
+void break7 ()
+{
+}
+
+void break8 ()
+{
+}
+
+void break9 ()
+{
+}
+
+void break10 ()
+{
+}
+
+/* This is used by bitfields.exp to determine if the target understands
+   signed bitfields.  */
+int i;
+
+int main ()
+{
+  /* For each member, set that member to 1, allow gdb to verify that the
+     member (and only that member) is 1, and then reset it back to 0. */
+
+  flags.uc = 1;
+  break1 ();
+  flags.uc = 0;
+
+  flags.s1 = 1;
+  break1 ();
+  flags.s1 = 0;
+
+  flags.u1 = 1;
+  break1 ();
+  flags.u1 = 0;
+
+  flags.s2  = 1;
+  break1 ();
+  flags.s2 = 0;
+
+  flags.u2 = 1;
+  break1 ();
+  flags.u2 = 0;
+
+  flags.s3  = 1;
+  break1 ();
+  flags.s3 = 0;
+
+  flags.u3 = 1;
+  break1 ();
+  flags.u3 = 0;
+
+  flags.s9 = 1;
+  break1 ();
+  flags.s9 = 0;
+
+  flags.u9 = 1;
+  break1 ();
+  flags.u9 = 0;
+
+  flags.sc = 1;
+  break1 ();
+  flags.sc = 0;
+
+  /* Fill alternating fields with all 1's and verify that none of the bits
+     "bleed over" to the other fields. */
+
+  flags.uc = 0xFF;
+  flags.u1 = 0x1;
+  flags.u2 = 0x3;
+  flags.u3 = 0x7;
+  flags.u9 = 0x1FF;
+  break2 ();
+  flags.uc = 0;
+  flags.u1 = 0;
+  flags.u2 = 0;
+  flags.u3 = 0;
+  flags.u9 = 0;
+
+  flags.s1 = 0x1;
+  flags.s2 = 0x3;
+  flags.s3 = 0x7;
+  flags.s9 = 0x1FF;
+  flags.sc = 0xFF;
+  break2 ();
+  flags.s1 = 0;
+  flags.s2 = 0;
+  flags.s3 = 0;
+  flags.s9 = 0;
+  flags.sc = 0;
+
+  /* Fill the unsigned fields with the maximum positive value and verify
+     that the values are printed correctly. */
+
+  /* Maximum positive values */
+  flags.u1 = 0x1;
+  flags.u2 = 0x3;
+  flags.u3 = 0x7;
+  flags.u9 = 0x1FF;
+  break3 ();
+  flags.u1 = 0;
+  flags.u2 = 0;
+  flags.u3 = 0;
+  flags.u9 = 0;
+
+  /* Fill the signed fields with the maximum positive value, then the maximally
+     negative value, then -1, and verify in each case that the values are
+     printed correctly. */
+
+  /* Maximum positive values */
+  flags.s1 = 0x0;
+  flags.s2 = 0x1;
+  flags.s3 = 0x3;
+  flags.s9 = 0xFF;
+  break4 ();
+
+  /* Maximally negative values */
+  flags.s1 = 0x1;
+  flags.s2 = 0x2;
+  flags.s3 = 0x4;
+  flags.s9 = 0x100;
+  /* Extract bitfield value so that bitfield.exp can check if the target
+     understands signed bitfields.  */
+  i = flags.s9;
+  break4 ();
+
+  /* -1 */
+  flags.s1 = 0x1;
+  flags.s2 = 0x3;
+  flags.s3 = 0x7;
+  flags.s9 = 0x1FF;
+  break4 ();
+
+  flags.s1 = 0;
+  flags.s2 = 0;
+  flags.s3 = 0;
+  flags.s9 = 0;
+
+  return 0;
+}
diff --git a/gdb/testsuite/gdb.base/bitfields.exp b/gdb/testsuite/gdb.base/bitfields.exp
new file mode 100644 (file)
index 0000000..ab92fd1
--- /dev/null
@@ -0,0 +1,434 @@
+# Copyright (C) 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Fred Fish. (fnf@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+set binfile "bitfields"
+set srcfile $binfile.c
+
+if ![file exists $objdir/$subdir/$binfile] then {
+    perror "$objdir/$subdir/$binfile does not exist."
+    return 0
+}
+
+#
+# Test bitfield locating and uniqueness.
+# For each member, set that member to 1 and verify that the member (and only
+# that member) is 1, then reset it back to 0.
+#
+
+proc bitfield_uniqueness {} {
+    global decimal
+    global hex
+    global prompt
+    global srcfile
+    global det_file
+
+    send "break break1\n"
+    expect {
+       -re "Break.* at $hex: file .*$srcfile, line $decimal.\r\n$prompt $" {}
+       timeout { fail "setting breakpoint at break1" ; return }
+    }
+
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.*y or n. $" {
+           send "y\n"
+           exp_continue
+       }
+       -re "Starting.*Break.*break1 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "running to break1" ; return }
+    }
+
+    send "print flags\n"
+    expect {
+       -re ".*uc = 1 .*, s1 = 0, u1 = 0, s2 = 0, u2 = 0, s3 = 0, u3 = 0, s9 = 0, u9 = 0, sc = 0 .*$prompt $" {}
+       timeout { fail "bitfield uniqueness (uc)" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.*break1 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "continuing to break1" ; return }
+    }
+    send "print flags\n"
+    # Note that we check for s1 as either 1 or -1, so that failure to
+    # treat it correctly as a signed 1bit field (values 0 or -1) while
+    # printing its value does not cause a spurious failure.  We do the
+    # signedness preservation test later.
+    expect {
+       -re ".*uc = 0 .*, s1 = (1|-1), u1 = 0, s2 = 0, u2 = 0, s3 = 0, u3 = 0, s9 = 0, u9 = 0, sc = 0 .*$prompt $" {}
+       timeout { fail "bitfield uniqueness (s1)" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.*break1 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "continuing to break1" ; return }
+    }
+    send "print flags\n"
+    expect {
+       -re ".*uc = 0 .*, s1 = 0, u1 = 1, s2 = 0, u2 = 0, s3 = 0, u3 = 0, s9 = 0, u9 = 0, sc = 0 .*$prompt $" {}
+       timeout { fail "bitfield uniqueness (u1)" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.*break1 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "continuing to break1" ; return }
+    }
+    send "print flags\n"
+    expect {
+       -re ".*uc = 0 .*, s1 = 0, u1 = 0, s2 = 1, u2 = 0, s3 = 0, u3 = 0, s9 = 0, u9 = 0, sc = 0 .*$prompt $" {}
+       timeout { fail "bitfield uniqueness (s2)" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.*break1 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "continuing to break1" ; return }
+    }
+    send "print flags\n"
+    expect {
+       -re ".*uc = 0 .*, s1 = 0, u1 = 0, s2 = 0, u2 = 1, s3 = 0, u3 = 0, s9 = 0, u9 = 0, sc = 0 .*$prompt $" {}
+       timeout { fail "bitfield uniqueness (u2)" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.*break1 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "continuing to break1" ; return }
+    }
+    send "print flags\n"
+    expect {
+       -re ".*uc = 0 .*, s1 = 0, u1 = 0, s2 = 0, u2 = 0, s3 = 1, u3 = 0, s9 = 0, u9 = 0, sc = 0 .*$prompt $" {}
+       timeout { fail "bitfield uniqueness (s3)" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.*break1 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "continuing to break1" ; return }
+    }
+    send "print flags\n"
+    expect {
+       -re ".*uc = 0 .*, s1 = 0, u1 = 0, s2 = 0, u2 = 0, s3 = 0, u3 = 1, s9 = 0, u9 = 0, sc = 0 .*$prompt $" {}
+       timeout { fail "bitfield uniqueness (u3)" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.*break1 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "continuing to break1" ; return }
+    }
+    send "print flags\n"
+    expect {
+       -re ".*uc = 0 .*, s1 = 0, u1 = 0, s2 = 0, u2 = 0, s3 = 0, u3 = 0, s9 = 1, u9 = 0, sc = 0 .*$prompt $" {}
+       timeout { fail "bitfield uniqueness (s9)" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.*break1 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "continuing to break1" ; return }
+    }
+    send "print flags\n"
+    expect {
+       -re ".*uc = 0 .*, s1 = 0, u1 = 0, s2 = 0, u2 = 0, s3 = 0, u3 = 0, s9 = 0, u9 = 1, sc = 0 .*$prompt $" {}
+       timeout { fail "bitfield uniqueness (u9)" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.*break1 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "continuing to break1" ; return }
+    }
+    send "print flags\n"
+    expect {
+       -re ".*uc = 0 .*, s1 = 0, u1 = 0, s2 = 0, u2 = 0, s3 = 0, u3 = 0, s9 = 0, u9 = 0, sc = 1 .*$prompt $" {}
+       timeout { fail "bitfield uniqueness (sc)" ; return }
+    }
+
+    pass "bitfield locating and uniqueness"
+}
+
+
+#
+# Test bitfield containment.
+# Fill alternating fields with all 1's and verify that none of the bits
+# "bleed over" to the other fields.
+#
+
+proc bitfield_containment {} {
+    global decimal
+    global hex
+    global prompt
+    global srcfile
+    global det_file
+
+    send "delete\n"
+    expect {
+       -re "Delete all breakpoints.*y or n. $" {
+           send "y\n"
+           expect {
+               -re "$prompt $" {}
+               timeout { fail "deleting breakpoints" ; return }
+           }
+       }
+       timeout { fail "deleting breakpoints" ; return }
+    }
+
+    send "break break2\n"
+    expect {
+       -re "Break.* at $hex: file .*$srcfile, line $decimal.\r\n$prompt $" {}
+       timeout { fail "setting breakpoint at break2" ; return }
+    }
+
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.*y or n. $" {
+           send "y\n"
+           exp_continue
+       }
+       -re "Starting.*Break.*break2 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "running to break2" ; return }
+    }
+
+    send "print/x flags\n"
+    expect {
+       -re ".*uc = 0xff, s1 = 0x0, u1 = 0x1, s2 = 0x0, u2 = 0x3, s3 = 0x0, u3 = 0x7, s9 = 0x0, u9 = 0x1ff, sc = 0x0.*$prompt $" {}
+       timeout { fail "bitfield containment" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.*break2 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "continuing to break2" ; return }
+    }
+
+    # If program is compiled with Sun CC, then these print out as their
+    # actual sizes; if compiled with gcc, they print out as 0xffffffff
+    # (which strikes me as bogus, but accept it at least for now).
+    send "print/x flags\n"
+    expect {
+       -re ".*uc = 0x0, s1 = 0x(1|f*), u1 = 0x0, s2 = 0x(3|f*), u2 = 0x0, s3 = 0x(7|f*), u3 = 0x0, s9 = 0x(1ff|f*), u9 = 0x0, sc = 0xff.*$prompt $" {}
+       timeout { fail "bitfield containment" ; return }
+    }
+
+    pass "bitfield containment"
+}
+
+#
+# Test unsigned bitfields for unsignedness and range.
+# Fill the unsigned fields with the maximum positive value and verify that
+# the values are printed correctly.
+# FIXME:  Perhaps we should test each bitfield separately so we can
+# report individual failures rather than just pass/nopass.
+
+proc bitfield_unsignedness {} {
+    global decimal
+    global hex
+    global prompt
+    global srcfile
+    global det_file
+
+    send "delete\n"
+    expect {
+       -re "Delete all breakpoints.*y or n. $" {
+           send "y\n"
+           expect {
+               -re "$prompt $" {}
+               timeout { fail "deleting breakpoints" ; return }
+           }
+       }
+       timeout { fail "deleting breakpoints" ; return }
+    }
+
+    send "break break3\n"
+    expect {
+       -re "Break.* at $hex: file .*$srcfile, line $decimal.\r\n$prompt $" {}
+       timeout { fail "setting breakpoint at break3" ; return }
+    }
+
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.*y or n. $" {
+           send "y\n"
+           exp_continue
+       }
+       -re "Starting.*Break.*break3 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "running to break3" ; return }
+    }
+
+    send "print flags\n"
+    expect {
+       -re ".*uc = 0 .*, s1 = 0, u1 = 1, s2 = 0, u2 = 3, s3 = 0, u3 = 7, s9 = 0, u9 = 511, sc = 0 .*$prompt $" {}
+       timeout { fail "unsigned bitfield ranges" ; return }
+    }
+
+    pass "unsigned bitfield ranges and unsigned-ness"
+}
+
+#
+# Test signed bitfields for signedness and range.
+# Fill the signed fields with the maximum positive value, then the maximally
+# negative value, then -1, and verify in each case that the values are
+# printed correctly.
+#
+
+proc bitfield_signedness {} {
+    global decimal
+    global hex
+    global prompt
+    global srcfile
+    global det_file
+
+    send "delete\n"
+    expect {
+       -re "Delete all breakpoints.*y or n. $" {
+           send "y\n"
+           expect {
+               -re "$prompt $" {}
+               timeout { warning "deleting breakpoints (timedout)" ; return }
+           }
+       }
+       timeout { warning "deleting breakpoints (timedout)" ; return }
+    }
+
+    send "break break4\n"
+    expect {
+       -re "Break.* at $hex: file .*$srcfile, line $decimal.\r\n$prompt $" {}
+       timeout { fail "setting breakpoint at break4" ; return }
+    }
+
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.*y or n. $" {
+           send "y\n"
+           exp_continue
+       }
+       -re "Starting.*Break.*break4 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "running to break4" ; return }
+    }
+
+    send "print flags\n"
+    expect {
+       -re ".*uc = 0 .*, s1 = 0, u1 = 0, s2 = 1, u2 = 0, s3 = 3, u3 = 0, s9 = 255, u9 = 0, sc = 0 .*$prompt $" {}
+       timeout { fail "signed bitfields, max positive values" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.*break4 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "continuing to break4" ; return }
+    }
+
+    # Determine if the target has signed bitfields so we can xfail the
+    # the signed bitfield tests if it doesn't.
+    send "print i\n"
+    expect {
+       -re ".* = -256.*$prompt $" {}
+       -re ".* = 256.*$prompt $" {setup_xfail "*-*-*"}
+       -re ".*$prompt $" { fail "\
+determining signed-ness of bitfields (known bug in sparc gcc 2.4.5)"
+           return
+       }
+       default { fail "determining signed-ness of bitfields" ; return }
+    }
+    send "print flags\n"
+    expect {
+       -re ".*uc = 0 .*, s1 = -1, u1 = 0, s2 = -2, u2 = 0, s3 = -4, u3 = 0, s9 = -256, u9 = 0, sc = 0 .*$prompt $" {}
+       timeout { fail "signed bitfields, max negative values" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.*break4 \[)(\]+ at .*$srcfile:$decimal.*$prompt $" {}
+       timeout { fail "continuing to break4" ; return }
+    }
+
+    send "print flags\n"
+    expect {
+       -re ".*uc = 0 .*, s1 = -1, u1 = 0, s2 = -1, u2 = 0, s3 = -1, u3 = 0, s9 = -1, u9 = 0, sc = 0 .*$prompt $" {}
+       timeout { fail "signed bitfields with -1" ; return }
+    }
+
+    pass "signed bitfield ranges and signed-ness"
+}
+
+# Start with a fresh gdb.
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $objdir/$subdir/$binfile
+
+send "set print sevenbit-strings\n" ; expect -re "$prompt $"
+bitfield_uniqueness
+if [istarget "mips-idt-*"] then {
+    # Restart because IDT/SIM runs out of file descriptors.
+    gdb_exit
+    gdb_start
+    gdb_reinitialize_dir $srcdir/$subdir
+    gdb_load $objdir/$subdir/$binfile
+}
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+    gdb_load $objdir/$subdir/$binfile
+}
+bitfield_containment
+if [istarget "mips-idt-*"] then {
+    # Restart because IDT/SIM runs out of file descriptors.
+    gdb_exit
+    gdb_start
+    gdb_reinitialize_dir $srcdir/$subdir
+    gdb_load $objdir/$subdir/$binfile
+}
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+    gdb_load $objdir/$subdir/$binfile
+}
+bitfield_unsignedness
+if [istarget "mips-idt-*"] then {
+    # Restart because IDT/SIM runs out of file descriptors.
+    gdb_exit
+    gdb_start
+    gdb_reinitialize_dir $srcdir/$subdir
+    gdb_load $objdir/$subdir/$binfile
+}
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+    gdb_load $objdir/$subdir/$binfile
+}
+bitfield_signedness
+
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+}
diff --git a/gdb/testsuite/gdb.base/break.c b/gdb/testsuite/gdb.base/break.c
new file mode 100644 (file)
index 0000000..2b36a52
--- /dev/null
@@ -0,0 +1,77 @@
+#ifdef vxworks
+#  include <vxWorks.h>
+#  include <stdioLib.h>
+
+/* VxWorks does not supply atoi.  */
+static int
+atoi (z)
+     char *z;
+{
+  int i = 0;
+
+  while (*z >= '0' && *z <= '9')
+    i = i * 10 + (*z++ - '0');
+  return i;
+}
+
+/* I don't know of any way to pass an array to VxWorks.  This function
+   can be called directly from gdb.  */
+
+vxmain (arg)
+char *arg;
+{
+  char *argv[2];
+
+  argv[0] = "";
+  argv[1] = arg;
+  main (2, argv, (char **) 0);
+}
+
+#else /* ! vxworks */
+#  include <stdio.h>
+#endif /* ! vxworks */
+
+/*
+ * The following functions do nothing useful.  They are included simply
+ * as places to try setting breakpoints at.  They are explicitly
+ * "one-line functions" to verify that this case works (some versions
+ * of gcc have or have had problems with this).
+ */
+
+int marker1 () { return (0); }
+int marker2 (a) int a; { return (1); }
+void marker3 (a, b) char *a, *b; {}
+void marker4 (d) long d; {}
+
+/*
+ *     This simple classical example of recursion is useful for
+ *     testing stack backtraces and such.
+ */
+
+int
+main (argc, argv, envp)
+int argc;
+char *argv[], **envp;
+{
+    if (argc != 2) {
+       fprintf (stderr, "usage:  factorial <number>\n");
+       return 1;
+    } else {
+       printf ("%d\n", factorial (atoi (argv[1])));
+    }
+    marker1 ();
+    marker2 (43);
+    marker3 ("stack", "trace");
+    marker4 (177601976L);
+    return 0;
+}
+
+int factorial (value)
+int value;
+{
+    if (value > 1) {
+       value *= factorial (value - 1);
+    }
+    return (value);
+}
+
diff --git a/gdb/testsuite/gdb.base/break.exp b/gdb/testsuite/gdb.base/break.exp
new file mode 100644 (file)
index 0000000..4fa1457
--- /dev/null
@@ -0,0 +1,427 @@
+#   Copyright (C) 1988, 1990, 1991, 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Rob Savoye. (rob@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+       }
+
+#
+# test running programs
+#
+set prms_id 0
+set bug_id 0
+
+set binfile "break"
+set srcfile $binfile.c
+
+if ![file exists $objdir/$subdir/$binfile] then {
+    perror "$objdir/$subdir/$binfile does not exist."
+    return 0
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $objdir/$subdir/$binfile
+
+#
+# test simple breakpoint setting commands
+#
+
+#
+# test deleting all breakpoints; note that gdb-init.exp provides a
+# "delete_breakpoints" proc for general use elsewhere
+#
+send "delete breakpoints\n"
+expect {
+    -re "Delete all breakpoints.*y or n. $"\
+       { send "y\n"
+           expect {
+               -re ".*$prompt $"\
+                   { send "info breakpoints\n"
+                       expect {
+                           -re "No breakpoints or watchpoints..*$prompt $" { pass "Deleted all breakpoints" }
+                           -re ".*$prompt $"       { fail "Deleted all breakpoints" }
+                           timeout                 { fail "Deleted all breakpoints" }
+                       }
+                   }
+               timeout             { fail "Deleted all breakpoints" }      
+           }
+       }
+    -re ".*$prompt $"       { fail "Deleted all breakpoints" }
+    timeout                { fail "Deleted all breakpoints" }
+}
+
+#
+# test break at function
+#
+send "break main\n"
+expect {
+    -re "Breakpoint.*at.* file .*$srcfile, line.*$prompt $" { pass "breakpoint function" }
+       -re ".*$prompt $"   { fail "breakpoint function" }
+       timeout     { fail "(timeout) breakpoint function" }
+}
+
+
+#
+# test break at function in file
+#
+send "break $srcfile:factorial\n"
+expect {
+    -re "Breakpoint.*at.* file .*$srcfile, line.*$prompt $" { pass "breakpoint function in file" }
+       -re ".*$prompt $"   { fail "breakpoint function in file" }
+       timeout     { fail "(timeout) breakpoint function in file" }
+}
+
+
+#
+# test break at line number
+#
+send "break 60\n"
+expect {
+    -re "Breakpoint.*at.* file .*$srcfile, line 60.*$prompt $" { pass "breakpoint line number" }
+       -re ".*$prompt $"   { fail "breakpoint line number" }
+       timeout     { fail "(timeout) breakpoint line number" }
+}
+
+
+#
+# test duplicate breakpoint
+#
+send "break 60\n"
+expect {
+    -re "Note: breakpoint \[0-9\]+ also set at pc.*Breakpoint \[0-9\]+ at.* file .*$srcfile, line 60.*$prompt $"\
+                           { pass "breakpoint duplicate" }
+       -re ".*$prompt $"   { fail "breakpoint duplicate" }
+       timeout     { fail "(timeout) breakpoint duplicate" }
+}
+
+
+#
+# test break at line number in file
+#
+send "break $srcfile:66\n"
+expect {
+    -re "Breakpoint.*at.* file .*$srcfile, line 66.*$prompt $" { pass "breakpoint line number in file" }
+       -re ".*$prompt $"   { fail "breakpoint line number in file" }
+       timeout     { fail "(timeout) breakpoint line number in file" }
+}
+
+
+#
+# check to see what breakpoints are set
+#
+send "info break\n"
+expect {
+    -re "Num Type\[ \]+Disp Enb Address\[ \]+What.*
+\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:56.*
+\[0-9\]+\[\t \]+breakpoint     keep y.* in factorial at .*$srcfile:72.*
+\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:60.*
+\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:60.*
+\[0-9\]+\[\t \]+breakpoint     keep y.* in main at .*$srcfile:66.*$prompt $" { pass "breakpoint info" }
+       -re ".*$prompt $"   { fail "breakpoint info" }
+       timeout     { fail "(timeout) breakpoint info" }
+}
+
+
+# FIXME: The rest of this test doesn't work with anything that can't
+# handle arguments.
+if [istarget "mips-idt-*"] then {
+    return
+}
+
+#
+# run until the breakpoint at main is hit
+#
+if [istarget "*-*-vxworks"] then {
+    send "run vxmain \"2\"\n"
+    set timeout 120
+} else {
+       send "run 2\n"
+}
+expect {
+    -re "Starting program.*Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$srcfile:56.*56\[\t \]+if .argc.* \{.*$prompt $"\
+                           { pass "run until function breakpoint" }
+    -re ".*$prompt $"       { fail "run until function breakpoint" }
+    timeout                { fail "(timeout) run until function breakpoint" }
+}
+
+
+#
+# run until the breakpoint at a line number
+#
+send "continue\n"
+expect {
+    -re "continue.*Continuing..*Breakpoint \[0-9\]+, main .argc.*argv.* at .*$srcfile:60.*
+60\[\t ]+printf.*factorial.*$prompt $" { pass "run until breakpoint set at a line number" }
+    -re ".*$prompt $"       { fail "run until breakpoint set at a line number" }
+    timeout                { fail "(timeout) run until breakpoint set at a line number" }
+}
+
+
+#
+# Run until the breakpoint set in a function in a file
+#
+send "continue\n"
+expect {
+    -re "continue.*Continuing..*Breakpoint \[0-9\]+, factorial .value=2. at .*$srcfile:72.*72\[\t ]+if .value > 1. \{.*$prompt $"\
+       { send "continue\n"
+           expect {
+               -re "continue.*Continuing..*Breakpoint \[0-9\]+, factorial .value=1. at .*$srcfile:72.*72\[\t ]+if .value > 1.*$prompt $" { pass "run until file:function breakpoint" }
+               -re ".*$prompt $"       { fail "run until file:function breakpoint" }
+               timeout             { fail "(timeout) run until file:function breakpoint" }
+           }
+       }
+    -re ".*$prompt $"       { fail "run until file:function breakpoint" }
+    timeout                { fail "(timeout) run until file:function breakpoint" }
+}
+
+
+#
+# run until the file:function breakpoint at a line number in a file
+#
+send "continue\n"
+expect {
+    -re "continue.*Continuing..*Breakpoint \[0-9\]+, main .*argc.*argv.* at .*$srcfile:66.*66\[\t ]+return 0;.*$prompt $" { pass "run until file:linenum breakpoint" }
+    -re ".*$prompt $"       { fail "run until file:linenum breakpoint" }
+    timeout                { fail "(timeout) run until file:linenum breakpoint" }
+}
+
+
+#
+# delete all breakpoints so we can start over, course this can be a test too
+#
+send "delete breakpoints\n"
+expect {
+    -re "Delete all breakpoints.*y or n.*$" {
+       send "y\n"
+       expect {
+           -re ".*$prompt $" {
+               send "info breakpoints\n"
+               expect {
+                   -re "No breakpoints or watchpoints..*$prompt $" {
+                       pass "Deleted all breakpoints"
+                   }
+                   -re ".*$prompt $"       { fail "Deleted all breakpoints" }
+                   timeout                 { fail "Deleted all breakpoints" }
+               }
+           }
+           timeout                 { fail "Deleted all breakpoints" }      
+       }
+    }
+    -re ".*$prompt $"       { fail "Deleted all breakpoints" }
+    timeout                { fail "Deleted all breakpoints" }
+}
+
+
+#
+# test temporary breakpoint at function
+#
+send "tbreak main\n"
+expect {
+    -re "Breakpoint.*at.* file .*$srcfile, line.*$prompt $" {
+       pass "Temporary breakpoint function"
+    }
+    -re ".*$prompt $" {
+       pass "Temporary breakpoint function"
+    }
+    timeout {
+       fail "(timeout) breakpoint function"
+    }
+}
+
+
+#
+# test break at function in file
+#
+send "tbreak $srcfile:factorial\n"
+expect {
+    -re "Breakpoint.*at.* file .*$srcfile, line.*$prompt $" {
+       pass "Temporary breakpoint function in file"
+    }
+    -re ".*$prompt $" {
+       pass "Temporary breakpoint function in file"
+    }
+    timeout {
+       fail "(timeout) breakpoint function in file"
+    }
+}
+
+
+#
+# test break at line number
+#
+send "tbreak 60\n"
+expect {
+    -re "Breakpoint.*at.* file .*$srcfile, line 60.*$prompt $" { pass "Temporary breakpoint line number" }
+       -re ".*$prompt $"   { pass "Temporary breakpoint line number" }
+       timeout     { fail "(timeout) breakpoint line number" }
+}
+
+
+#
+# test break at line number in file
+#
+send "tbreak $srcfile:66\n"
+expect {
+    -re "Breakpoint.*at.* file .*$srcfile, line 66.*$prompt $" { pass "Temporary breakpoint line number in file" }
+       -re ".*$prompt $"   { pass "Temporary breakpoint line number in file" }
+       timeout     { fail "(timeout) breakpoint line number in file" }
+}
+
+
+#
+# check to see what breakpoints are set (temporary this time)
+#
+send "info break\n"
+expect {
+    -re "Num Type.*Disp Enb Address.*What.*
+\[0-9\]+\[\t \]+breakpoint     del.*y.*in main at .*$srcfile:56.*
+\[0-9\]+\[\t \]+breakpoint     del.*y.*in factorial at .*$srcfile:72.*
+\[0-9\]+\[\t \]+breakpoint     del.*y.*in main at .*$srcfile:60.*
+\[0-9\]+\[\t \]+breakpoint     del.*y.*in main at .*$srcfile:66.*$prompt $" {
+        pass "Temporary breakpoint info"
+    }
+    -re ".*$prompt $"   { fail "Temporary breakpoint info" }
+    timeout        { fail "(timeout) Temporary breakpoint info" }
+}
+
+
+proc test_clear_command {} {
+    gdb_test "break main" "Breakpoint.*at"
+    gdb_test "break main" "Breakpoint.*at"
+
+    # We don't test that it deletes the correct breakpoints.  We do at
+    # least test that it deletes more than one breakpoint.
+    gdb_test "clear main" {Deleted breakpoints [0-9]+ [0-9]+}
+}
+
+#
+# Test "next" over recursive function call.
+#
+
+proc test_next_with_recursion {} { 
+   global prompt
+   global decimal
+
+# FIXME: should be using runto
+    send "kill\n"
+    expect {
+       -re ".*Kill the program being debugged.*y or n. $" {
+           send "y\n"
+           exp_continue
+       }
+       -re ".*$prompt $" {}
+       timeout { fail "killing inferior" ; return }
+    }
+
+    delete_breakpoints
+
+    send "break factorial\n"
+    expect {
+       -re "Breakpoint $decimal at .*$prompt" {}
+       timeout { fail "break at factorial" ; return }
+    }
+
+    # Run until we call factorial with 6
+
+    if [istarget "*-*-vxworks"] then {
+       send "run vxmain \"6\"\n"
+    } else {
+           send "run 6\n"
+    }
+    expect {
+       -re "Starting .*Break.* factorial .value=6. .*$prompt $" {}
+       timeout { fail "run to factorial(6)" ; return }
+    }
+
+    # Continue until we call factorial recursively with 5.
+
+    send "continue\n"
+    expect {
+       -re "Continuing.*Break.* factorial .value=5. .*$prompt $" {}
+       timeout { fail "continue to factorial(5)" ; return }
+    }
+
+    # Do a backtrace just to confirm how many levels deep we are.
+
+    set result [gdb_test "backtrace" \
+                       "#0\[ \t\]+ factorial .value=5." \
+                       "backtrace from factorial(5)"]
+    if $result!=0 then { return }
+
+    # Now a "next" should position us at the recursive call, which
+    # we will be performing with 4.
+
+    send "next\n"
+    expect {
+       -re ".* factorial .value - 1.;.*$prompt $" {}
+       timeout { fail "next to recursive call (timeout)" ; return }
+    }
+
+    # Disable the breakpoint at the entry to factorial by deleting them all.
+    # The "next" should run until we return to the next line from this
+    # recursive call to factorial with 4.
+    # Buggy versions of gdb will stop instead at the innermost frame on
+    # the line where we are trying to "next" to.
+
+    delete_breakpoints
+
+    send "next\n"
+    expect {
+       -re "return .value.;.*$prompt $" {
+           # Note that the correct behavior is for GDB to *not* print the
+           # frame.
+           pass "next over recursive call"
+       }
+       -re ".*$prompt $" {
+           fail "next over recursive call" ; return
+       }
+       timeout { fail "next over recursive call (timeout)" ; return }
+    }
+
+    # OK, we should be back in the same stack frame we started from.
+    # Do a backtrace just to confirm.
+
+    set result [gdb_test "backtrace" \
+                        "#0\[ \t\]+ factorial .value=120.*\r\n#1\[ \t\]+ \[0-9a-fx\]+ in factorial .value=6." \
+                        "backtrace from factorial(5)"]
+    if $result!=0 then { return }
+
+    # Continue until we exit.  Should not stop again.
+    gdb_test "continue" "Continuing.\r\n720"\
+               "continue until exit in recursive next test"
+}
+
+test_clear_command
+test_next_with_recursion
+
+# Reset the default arguments for VxWorks
+if [istarget "*-*-vxworks"] then {
+    set timeout 10
+    send "set args main\n"
+    expect -re ".*$prompt $" {}
+}
+
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+}
diff --git a/gdb/testsuite/gdb.base/callfuncs.c b/gdb/testsuite/gdb.base/callfuncs.c
new file mode 100644 (file)
index 0000000..e59db08
--- /dev/null
@@ -0,0 +1,206 @@
+/* Support program for testing gdb's ability to call functions
+   in the inferior, pass appropriate arguments to those functions,
+   and get the returned result. */
+
+#ifdef __STDC__
+#define PARAMS(paramlist) paramlist
+#else
+#define PARAMS(paramlist) ()
+#endif
+
+char char_val1 = 'a';
+char char_val2 = 'b';
+
+short short_val1 = 10;
+short short_val2 = -23;
+
+int int_val1 = 87;
+int int_val2 = -26;
+
+long long_val1 = 789;
+long long_val2 = -321;
+
+float float_val1 = 3.14159;
+float float_val2 = -2.3765;
+
+double double_val1 = 45.654;
+double double_val2 = -67.66;
+
+#define DELTA (0.001)
+
+char *string_val1 = "string 1";
+char *string_val2 = "string 2";
+
+char char_array_val1[] = "carray 1";
+char char_array_val2[] = "carray 2";
+
+struct struct1 {
+  int x;
+  long y;
+} struct_val1 = { 76, 51 };
+
+/* Some functions that can be passed as arguments to other test
+   functions, or called directly. */
+
+int add (a, b)
+int a, b;
+{
+  return (a + b);
+}
+
+int doubleit (a)
+int a;
+{
+  return (a + a);
+}
+
+int (*func_val1) PARAMS((int,int)) = add;
+int (*func_val2) PARAMS((int)) = doubleit;
+
+/* An enumeration and functions that test for specific values. */
+
+enum enumtype { enumval1, enumval2, enumval3 };
+enum enumtype enum_val1 = enumval1;
+enum enumtype enum_val2 = enumval2;
+enum enumtype enum_val3 = enumval3;
+
+t_enum_value1 (enum_arg)
+enum enumtype enum_arg;
+{
+  return (enum_arg == enum_val1);
+}
+
+t_enum_value2 (enum_arg)
+enum enumtype enum_arg;
+{
+  return (enum_arg == enum_val2);
+}
+
+t_enum_value3 (enum_arg)
+enum enumtype enum_arg;
+{
+  return (enum_arg == enum_val3);
+}
+
+/* A function that takes a vector of integers (along with an explicit
+   count) and returns their sum. */
+
+int sum_args (argc, argv)
+int argc;
+int argv[];
+{
+  int sumval = 0;
+  int idx;
+
+  for (idx = 0; idx < argc; idx++)
+    {
+      sumval += argv[idx];
+    }
+  return (sumval);
+}
+
+/* Test that calling functions works if there are a lot of arguments.  */
+int
+sum10 (i0, i1, i2, i3, i4, i5, i6, i7, i8, i9)
+     int i0, i1, i2, i3, i4, i5, i6, i7, i8, i9;
+{
+  return i0 + i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9;
+}
+
+/* Gotta have a main to be able to generate a linked, runnable
+   executable, and also provide a useful place to set a breakpoint. */
+
+main ()
+{
+  malloc(1);
+}
+
+/* Functions that expect specific values to be passed and return 
+   either 0 or 1, depending upon whether the values were
+   passed incorrectly or correctly, respectively. */
+
+int t_char_values (char_arg1, char_arg2)
+char char_arg1, char_arg2;
+{
+  return ((char_arg1 == char_val1) && (char_arg2 == char_val2));
+}
+
+int t_short_values (short_arg1, short_arg2)
+short short_arg1, short_arg2;
+{
+  return ((short_arg1 == short_val1) && (short_arg2 == short_val2));
+}
+
+int t_int_values (int_arg1, int_arg2)
+int int_arg1, int_arg2;
+{
+  return ((int_arg1 == int_val1) && (int_arg2 == int_val2));
+}
+
+int t_long_values (long_arg1, long_arg2)
+long long_arg1, long_arg2;
+{
+  return ((long_arg1 == long_val1) && (long_arg2 == long_val2));
+}
+
+int t_float_values (float_arg1, float_arg2)
+float float_arg1, float_arg2;
+{
+  return (((float_arg1 - float_val1) < DELTA) &&
+         ((float_arg2 - float_val2) < DELTA));
+}
+
+int t_double_values (double_arg1, double_arg2)
+double double_arg1, double_arg2;
+{
+  return (((double_arg1 - double_val1) < DELTA) &&
+         ((double_arg2 - double_val2) < DELTA));
+}
+
+int t_string_values (string_arg1, string_arg2)
+char *string_arg1, *string_arg2;
+{
+  return (!strcmp (string_arg1, string_val1) &&
+         !strcmp (string_arg2, string_val2));
+}
+
+int t_char_array_values (char_array_arg1, char_array_arg2)
+char char_array_arg1[], char_array_arg2[];
+{
+  return (!strcmp (char_array_arg1, char_array_val1) &&
+         !strcmp (char_array_arg2, char_array_val2));
+}
+
+
+/* This used to simply compare the function pointer arguments with
+   known values for func_val1 and func_val2.  Doing so is valid ANSI
+   code, but on some machines (RS6000, HPPA, others?) it may fail when
+   called directly by GDB.
+
+   In a nutshell, it's not possible for GDB to determine when the address
+   of a function or the address of the function's stub/trampoline should
+   be passed.
+
+   So, to avoid GDB lossage in the common case, we perform calls through the
+   various function pointers and compare the return values.  For the HPPA
+   at least, this allows the common case to work.
+
+   If one wants to try something more complicated, pass the address of
+   a function accepting a "double" as one of its first 4 arguments.  Call
+   that function indirectly through the function pointer.  This would fail
+   on the HPPA.  */
+
+int t_func_values (func_arg1, func_arg2)
+int (*func_arg1) PARAMS ((int, int));
+int (*func_arg2) PARAMS ((int));
+{
+  return ((*func_arg1) (5,5)  == (*func_val1) (5,5)
+          && (*func_arg2) (6) == (*func_val2) (6));
+}
+
+int t_call_add (func_arg1, a, b)
+int (*func_arg1) PARAMS ((int, int));
+int a, b;
+{
+  return ((*func_arg1)(a, b));
+}
diff --git a/gdb/testsuite/gdb.base/configure.in b/gdb/testsuite/gdb.base/configure.in
new file mode 100644 (file)
index 0000000..d55c708
--- /dev/null
@@ -0,0 +1,30 @@
+# This file is a shell script fragment that supplies the information
+# necessary to tailor a template configure script into the configure
+# script appropriate for this directory.  For more information, check
+# any existing configure script.
+
+srctrigger="Makefile.in"
+srcname="gdb.base"
+
+# per-host:
+
+# per-target:
+
+       # everything defaults to unix for a target
+target_abbrev=unix
+target_makefile_frag=config/mt-unix
+
+       # this section is for all targets
+case "${target}" in
+       i386-*-aout)    target_makefile_frag=config/mt-i386-aout ;;
+       *-*-lynx)       target_makefile_frag=config/mt-lynx ;;
+       *-*-vxworks)    target_makefile_frag=config/mt-vxworks ;;
+       m68k-*-*)       target_makefile_frag=config/mt-m68k ;;
+       i960-*-nindy)   target_makefile_frag=config/mt-i960-nindy ;;
+       a29k-*-udi)     target_makefile_frag=config/mt-a29k-udi ;;
+       sparclite-*-*)  target_makefile_frag=config/mt-slite ;;
+       sparc-*-aout)   target_makefile_frag=config/mt-sparc-aout ;;
+       mips-*-ecoff)   target_makefile_frag=config/mt-mips-ecoff ;;
+esac
+
+# post-target:
diff --git a/gdb/testsuite/gdb.base/coremaker.c b/gdb/testsuite/gdb.base/coremaker.c
new file mode 100644 (file)
index 0000000..79418be
--- /dev/null
@@ -0,0 +1,21 @@
+/* Simple little program that just generates a core dump from inside some
+   nested function calls. */
+
+
+void
+func2 ()
+{
+  abort ();
+}
+
+void
+func1 ()
+{
+  func2 ();
+}
+
+main ()
+{
+  func1 ();
+}
+
diff --git a/gdb/testsuite/gdb.base/crossload.exp b/gdb/testsuite/gdb.base/crossload.exp
new file mode 100644 (file)
index 0000000..9c41f8b
--- /dev/null
@@ -0,0 +1,376 @@
+# Copyright (C) 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Fred Fish. (fnf@cygnus.com)
+# Rob Savoye changed it to use gdb_test (rob@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+# FIXME: The configure.in for this test should look for --with-targets
+# and deal accordingly.  Until that has been done, skip the whole thing.
+# With a minimal bfd (the default), few if any of these tests work.
+
+verbose "FIXME: all the crossload tests ignored"
+continue
+
+# FIXME: These tests don't work for the i960, because
+# bfd/config/i960-bout.mt sets SELECT_VECS.  I could use setup_xfail
+# for each test, but rebooting the board between each one takes a long
+# time so I'm just punting the whole file.
+if [istarget "i960-*-*"] then {
+    if $verbose>1 then {
+       warning "FIXME: crossload test case doesn't run on the i960."
+    }
+    continue
+}
+
+# FIXME: These tests don't work for the a29k, because SELECT_VECS is
+# used when compiling bfd.  It would be nice if there were some better
+# way of detecting this case.
+if [istarget "a29k-*-*"] then {
+    if $verbose>1 then {
+       warning "FIXME: crossload test case doesn't run on the a29k."
+    }
+    continue
+}
+
+# Test if gdb can automatically determine the bfd format of an
+# executable and read it's symbols.
+
+proc bfddefault {} {
+    global GDB
+    global GDBFLAGS
+    global prompt
+    global objdir
+    global subdir
+    global binfile
+    global bfdformat
+    global file_loaded
+
+    gdb_unload
+    set file_loaded 0
+    send "file $objdir/$subdir/$binfile\n"
+    expect {
+       -re "A program is being debugged already.  Kill it.*y or n." {
+           send "y\n"
+           exp_continue
+       }
+       -re "Reading symbols from $objdir/$subdir/$binfile\[.\]+done\..*$prompt $" {
+           pass "$binfile ($bfdformat) auto format"
+       }
+       -re "Reading symbols from $objdir/$subdir/$binfile\[.\]+.no debugging symbols found.\[.\]+done\..*$prompt $" {
+           pass "$binfile ($bfdformat) auto format (but no symbols found)"
+       }
+       -re "File format not recognized.*$prompt $" {
+           fail "$binfile ($bfdformat) auto format (format not recognized)"
+           return
+       }
+       -re "File format is ambiguous.*$prompt $" {
+           fail "$binfile ($bfdformat) auto format (format is ambiguous)"
+           return
+       }
+       -re "$prompt $" {
+           fail "$binfile ($bfdformat) auto format"
+           return
+       }
+       timeout {
+           fail "(timeout) $binfile ($bfdformat) auto format"
+           return
+       }       
+    }
+
+    if [gdb_test "info target" ".*file type $bfdformat" ""]==0 then {
+       set file_loaded 1
+    } else {
+       fail "$binfile ($bfdformat) wrong format found"
+    }
+}
+
+# Test if gdb can read symbols from an executable when the bfd format
+# is explicitly set via the environment variable GNUTARGET.
+
+proc bfdexplicit {} {
+    global GDB
+    global GDBFLAGS
+    global prompt
+    global subdir
+    global objdir
+    global det_file
+    global binfile
+    global bfdformat
+    global file_loaded
+
+    gdb_unload
+    set file_loaded 0
+
+    # Once GDB 4.10 (the last to lack `set gnutarget') is forgotten,
+    # change this to use set gnutarget.
+   if [gdb_test "set env GNUTARGET=$bfdformat" "" ""]!=0 then {
+       fail "setting GNUTARGET=$bfdformat in environment"
+       return
+    }
+
+    send "file $objdir/$subdir/$binfile\n"
+    expect {
+       -re "A program is being debugged already.  Kill it.*y or n." {
+           send "y\n"
+           exp_continue
+       }
+       -re "Reading symbols from $objdir/$subdir/$binfile\[.\]+done\..*$prompt $" {
+           pass "$binfile ($bfdformat) explicit format"
+       }
+       -re "Invalid target.*$prompt $" {
+           fail "$binfile ($bfdformat) explicit format (invalid target)"
+           return
+       }
+       -re "$prompt $" {
+           fail "$binfile ($bfdformat) explicit format"
+           return
+       }
+       timeout {
+           fail "(timeout) $binfile ($bfdformat) explicit format"
+           return
+       }       
+    }
+
+    set file_loaded 1
+}
+
+proc test_ptype_functions {} {
+    global prompt
+    global binfile
+    global bfdformat
+    global det_file
+    send "ptype main\n"
+    expect {
+       -re "type = int \[)(\]+\r\n$prompt $" {}
+       timeout { fail "$binfile ($bfdformat) function main" ; return }
+    }
+
+    # set up a list of lists of command and patterns
+    set command [list { "ptype v_char_func" "type =(\ unsigned\ |\ signed\ |\ )char \[)(\]+" }\
+               { "ptype v_short_func" "type = (short|short int) \[)(\]+" } \
+                { "ptype v_int_func" "type = int \[)(\]+" } \
+                { "ptype v_long_func" "type = (long|long int|int) \[)(\]+" } \
+                { "ptype v_float_func" "type = float \[)(\]+" } \
+                { "ptype v_double_func" "type = double \[)(\]+" } ]
+
+    foreach i $command {
+       if [gdb_test [lindex $i 0] [lindex $i 1] ""] then {
+           fail "$binfile ($bfdformat) \"[lindex $i 0]\" function types"
+           return
+       }
+    }
+    pass "$binfile ($bfdformat) ptype function types"
+}
+
+# Note that plain chars can be either signed or unsigned.
+
+proc test_ptype_plain_types {} {
+    global prompt
+    global binfile
+    global bfdformat
+
+    # set up a list of lists of command and patterns
+    set command [list { "ptype v_char" "type =(\ unsigned\ |\ signed\ |\ )char" }\
+               { "ptype v_short" "type = short" } \
+                { "ptype v_int" "type = int" } \
+                { "ptype v_long" "type = long" } \
+                { "ptype v_float" "type = float" } \
+                { "ptype v_double" "type = double" } ]
+
+    foreach i $command {
+       if [gdb_test [lindex $i 0] [lindex $i 1] ""] then {
+           fail "$binfile ($bfdformat) \"[lindex $i 0]\" plain C types"
+           return
+    }
+    }
+    pass "$binfile ($bfdformat) ptype plain C types"
+}
+
+# Note that if compiled with pre-ANSI compilers, the "signed" keywords are
+# defined away and the variables default to plain types.  So accept either.
+
+proc test_ptype_signed_types {} {
+    global prompt
+    global binfile
+    global bfdformat
+    global det_file
+
+    # set up a list of lists of command and patterns
+    set command [list { "ptype v_signed_char" "type =(\ signed\ |\ )char" }\
+               { "ptype v_signed_short"  "type =(\ signed\ |\ )short" } \
+                { "ptype v_signed_int" "type =(\ signed\ |\ )int" } \
+                { "ptype v_signed_long" "type =(\ signed\ |\ )long" } ]
+
+    foreach i $command {
+       if [gdb_test [lindex $i 0] [lindex $i 1] ""] then {
+           if [expr [string match "ecoff-bigmips" $bfdformat]+[string match "ptype v_signed_char" [lindex $i 0]]]==2 then {
+               setup_xfail "*-*-*"
+           }
+           fail "$binfile ($bfdformat) \"[lindex $i 0]\" signed C types"
+           return
+       }
+    }
+    pass "$binfile ($bfdformat) ptype signed C types"
+}
+
+proc test_ptype_unsigned_types {} {
+    global prompt
+    global binfile
+    global bfdformat
+    global det_file
+
+    # set up a list of lists of command and patterns
+    set command [list { "ptype v_unsigned_char" "type = unsigned char" }\
+               { "ptype v_unsigned_short" \
+                 "type = (unsigned short|short unsigned int)" } \
+                { "ptype v_unsigned_int" "type = unsigned int" } \
+                { "ptype v_unsigned_long" \
+                 "type = (unsigned long|long unsigned int)" } ]
+
+    foreach i $command {
+       if [gdb_test [lindex $i 0] [lindex $i 1] ""] then {
+           fail "$binfile ($bfdformat) \"[lindex $i 0]\" unsigned C types"
+           return
+       }
+    }
+    pass "$binfile ($bfdformat) ptype unsigned C types"
+}
+
+# Note that plain chars can be either signed or unsigned.
+
+proc test_ptype_array_types {} {
+    global prompt
+    global binfile
+    global bfdformat
+    global det_file
+
+    # set up a list of lists of command and patterns
+    set command [list { "ptype v_char_array" "type =(\ unsigned\ |\ signed\ |\ )char \\\[2\\\]" }\
+               { "ptype v_short_array"  \
+                 "type = (short|short int) \\\[2\\\]" } \
+                { "ptype v_int_array" "type = int \\\[2\\\]" } \
+                { "ptype v_long_array" "type = (long|long int) \\\[2\\\]" } \
+                { "ptype v_float_array" "type = float \\\[2\\\]" } \
+                { "ptype v_double_array" "type = double \\\[2\\\]" } ]
+
+    foreach i $command {
+       if [gdb_test [lindex $i 0] [lindex $i 1] ""] then {
+           fail "$binfile ($bfdformat) \"[lindex $i 0]\" C array types"
+           return
+       }
+    }
+    pass "$binfile ($bfdformat) ptype C array types"
+}
+
+proc test_ptype_pointer_types {} {
+    global prompt
+    global binfile
+    global bfdformat
+    global det_file
+
+    # set up a list of lists of command and patterns
+    set command [list { "ptype v_char_pointer" "type =(\ unsigned\ |\ signed\ |\ )char \*" }\
+               { "ptype v_short_pointer"  "type = (short|short int) \*" } \
+                { "ptype v_int_pointer" "type = int \*" } \
+                { "ptype v_long_pointer" "type = (long|long int) \*" } \
+                { "ptype v_float_pointer" "type = float \*" } \
+                { "ptype v_double_pointer" "type = double \*" } ]
+
+    foreach i $command {
+       if [gdb_test [lindex $i 0] [lindex $i 1] ""] then {
+           fail "$binfile ($bfdformat) \"[lindex $i 0]\" C pointer types"
+           return
+       }
+    }
+    pass "$binfile ($bfdformat) ptype C pointer types"
+}
+
+proc loadandtest { args } {
+    global verbose
+    global GDB
+    global GDBFLAGS
+    global prompt
+    global subdir
+    global objdir
+    global binfile
+    global bfdformat
+    global file_loaded
+
+    set binfile [ lindex $args 0 ]
+    set bfdformat [ lindex $args 1 ]
+    set fixme [ lindex $args 2 ]
+
+    if ![file exists $objdir/$subdir/$binfile] then {
+        perror "$objdir/$subdir/$binfile does not exist"
+       return 0
+    }
+    gdb_exit
+    gdb_start
+    if $fixme then { setup_xfail "*-*-*" }
+    bfddefault
+    if $fixme then { setup_xfail "*-*-*" }
+    if [string match $bfdformat "elf-big"] then {
+       if [string match $binfile "i860-elf"] then {
+           setup_xfail "*-*-*"
+       }
+    }
+    bfdexplicit
+    if $file_loaded==1 then {
+       test_ptype_functions
+        if $fixme then { setup_xfail "*-*-*" }
+       test_ptype_plain_types
+        if $fixme then { setup_xfail "*-*-*" }
+       test_ptype_signed_types
+        if $fixme then { setup_xfail "*-*-*" }
+       test_ptype_unsigned_types
+        if $fixme then { setup_xfail "*-*-*" }
+       test_ptype_array_types
+        if $fixme then { setup_xfail "*-*-*" }
+       test_ptype_pointer_types
+    }
+}
+
+# Run tests for each of the test executables.
+# If the third argument is 1, the tests will be expected to fail.
+# We should extract the information about available tests and bfd formats
+# from the makefile or some other control file (FIXME).
+
+loadandtest m68k-elf   "elf32-m68k"            0
+
+# I'm getting an XPASS for explicit format on this one
+loadandtest m68k-aout  "a.out-newsos3"         1
+
+loadandtest m68k-aout2 "a.out-sunos-big"       0
+loadandtest mips-ecoff "ecoff-bigmips"         0
+loadandtest i486-elf   "elf32-i386"            0
+loadandtest sparc-aout "a.out-sunos-big"       0
+loadandtest sparc-elf  "elf32-sparc"           0
+
+#FIXME:  i860 support is unlikely to be working in the near future
+# so suppress this test until it is working.  -fnf
+#loadandtest i860-elf  "elf32-i860"            0
+
+gdb_test "set gnutarget auto" ""
diff --git a/gdb/testsuite/gdb.base/echo.exp b/gdb/testsuite/gdb.base/echo.exp
new file mode 100644 (file)
index 0000000..cfad3b0
--- /dev/null
@@ -0,0 +1,58 @@
+#   Copyright (C) 1988, 1990, 1991, 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Rob Savoye. (rob@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+       }
+
+#
+# test the echo command
+#
+
+# this sets the prms id number.  This is the number that will appear
+# on all the output logs.
+#      ex: set prms_id 643
+set prms_id 0
+
+# this sets the bug id id.  This is the number that will appear
+# on all the output logs. This is optional and if it is not set
+# it will appear on all output logs as a 0.
+#      ex: set bug_id 12
+set bug_id 0
+
+# this sends a string to the stdin of the tool being tested. The string
+# should be between the quotes.
+send "echo Hello world!\n"
+
+# any shell style globbing can be used between the ""
+# regular expressions can be used instead by preceding the
+# first quote with the option -re
+#      ex: "file deleted"      { fail "removed source file" }
+# the string between the quotes after a fail or pass is what
+# gets printed if the pattern matches. There can be multiple
+# send/expect sequences in one test.
+expect {
+       -re "Hello world.*$prompt $"    { pass "Echo test" }
+       -re "$prompt $"                 { fail "Echo test" }
+       timeout                         { fail "(timeout) Echo test" }
+       }
+
+# this dumps the output to the detailed log for this tool
diff --git a/gdb/testsuite/gdb.base/exprs.c b/gdb/testsuite/gdb.base/exprs.c
new file mode 100644 (file)
index 0000000..bd33620
--- /dev/null
@@ -0,0 +1,249 @@
+main (argc, argv, envp)
+     int argc;
+     char **argv;
+     char **envp;
+{
+    extern void dummy();
+    dummy();
+}
+
+/* We put main() right up front so its line number doesn't keep changing.  */
+
+/*
+ *     Test file with lots of different types, for testing the
+ *     "whatis" command.
+ */
+
+/*
+ *     First the basic C types.
+ */
+
+#if !defined (__STDC__) && !defined (_AIX)
+#define signed  /**/
+#endif
+
+char           v_char;
+signed char    v_signed_char;
+unsigned char  v_unsigned_char;
+
+short          v_short;
+signed short   v_signed_short;
+unsigned short v_unsigned_short;
+
+int            v_int;
+signed int     v_signed_int;
+unsigned int   v_unsigned_int;
+
+long           v_long;
+signed long    v_signed_long;
+unsigned long  v_unsigned_long;
+
+float          v_float;
+double         v_double;
+
+/*
+ *     Now some derived types, which are arrays, functions-returning,
+ *     pointers, structures, unions, and enumerations.
+ */
+
+/**** arrays *******/
+
+char           v_char_array[2];
+signed char    v_signed_char_array[2];
+unsigned char  v_unsigned_char_array[2];
+
+short          v_short_array[2];
+signed short   v_signed_short_array[2];
+unsigned short v_unsigned_short_array[2];
+
+int            v_int_array[2];
+signed int     v_signed_int_array[2];
+unsigned int   v_unsigned_int_array[2];
+
+long           v_long_array[2];
+signed long    v_signed_long_array[2];
+unsigned long  v_unsigned_long_array[2];
+
+float          v_float_array[2];
+double         v_double_array[2];
+
+/**** pointers *******/
+
+char           *v_char_pointer;
+signed char    *v_signed_char_pointer;
+unsigned char  *v_unsigned_char_pointer;
+
+short          *v_short_pointer;
+signed short   *v_signed_short_pointer;
+unsigned short *v_unsigned_short_pointer;
+
+int            *v_int_pointer;
+signed int     *v_signed_int_pointer;
+unsigned int   *v_unsigned_int_pointer;
+
+long           *v_long_pointer;
+signed long    *v_signed_long_pointer;
+unsigned long  *v_unsigned_long_pointer;
+
+float          *v_float_pointer;
+double         *v_double_pointer;
+
+/**** structs *******/
+
+struct t_struct {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_struct1;
+
+struct {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_struct2;
+
+/**** unions *******/
+
+union t_union {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_union;
+
+union {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_union2;
+
+/*** Functions returning type ********/
+
+char           v_char_func () { return(0); }
+signed char    v_signed_char_func () { return (0); }
+unsigned char  v_unsigned_char_func () { return (0); }
+
+short          v_short_func () { return (0); }
+signed short   v_signed_short_func () { return (0); }
+unsigned short v_unsigned_short_func () { return (0); }
+
+int            v_int_func () { return (0); }
+signed int     v_signed_int_func () { return (0); }
+unsigned int   v_unsigned_int_func () { return (0); }
+
+long           v_long_func () { return (0); }
+signed long    v_signed_long_func () { return (0); }
+unsigned long  v_unsigned_long_func () { return (0); }
+
+float          v_float_func () { return (0.0); }
+double         v_double_func () { return (0.0); }
+
+/**** Some misc more complicated things *******/
+
+struct link {
+       struct link *next;
+#ifdef __STDC__
+       struct link *(*linkfunc) (struct link *this, int flags);
+#else
+       struct link *(*linkfunc) ();
+#endif
+       struct t_struct stuff[1][2][3];
+} *s_link;
+
+union tu_link {
+       struct link *next;
+#ifdef __STDC__
+       struct link *(*linkfunc) (struct link *this, int flags);
+#else
+       struct link *(*linkfunc) ();
+#endif
+       struct t_struct stuff[1][2][3];
+} u_link;
+
+/**** Enumerations *******/
+
+enum colors {red, green, blue} color;
+enum cars {chevy, ford, porsche} clunker;
+
+
+void dummy()
+{
+  /* Some linkers (e.g. on AIX) remove unreferenced variables,
+     so make sure to reference them. */
+  v_char = 0;
+  v_signed_char = 1;
+  v_unsigned_char = 2;
+
+  v_short = 3;
+  v_signed_short = 4;
+  v_unsigned_short = 5;    
+
+  v_int = 6;
+  v_signed_int = 7;
+  v_unsigned_int = 8;    
+
+  v_long = 9;
+  v_signed_long = 10;
+  v_unsigned_long = 11;    
+  
+  v_float = 100.0;
+  v_double = 200.0;
+
+
+  v_char_array[0] = v_char;
+  v_signed_char_array[0] = v_signed_char;
+  v_unsigned_char_array[0] = v_unsigned_char;
+
+  v_short_array[0] = v_short;
+  v_signed_short_array[0] = v_signed_short;
+  v_unsigned_short_array[0] = v_unsigned_short;
+
+  v_int_array[0] = v_int;
+  v_signed_int_array[0] = v_signed_int;
+  v_unsigned_int_array[0] = v_unsigned_int;
+
+  v_long_array[0] = v_long;
+  v_signed_long_array[0] = v_signed_long;
+  v_unsigned_long_array[0] = v_unsigned_long;
+
+  v_float_array[0] = v_float;
+  v_double_array[0] = v_double;
+
+  v_char_pointer = &v_char;
+  v_signed_char_pointer = &v_signed_char;
+  v_unsigned_char_pointer = &v_unsigned_char;
+
+  v_short_pointer = &v_short;
+  v_signed_short_pointer = &v_signed_short;
+  v_unsigned_short_pointer = &v_unsigned_short;
+
+  v_int_pointer = &v_int;
+  v_signed_int_pointer = &v_signed_int;
+  v_unsigned_int_pointer = &v_unsigned_int;
+
+  v_long_pointer = &v_long;
+  v_signed_long_pointer = &v_signed_long;
+  v_unsigned_long_pointer = &v_unsigned_long;
+
+  v_float_pointer = &v_float;
+  v_double_pointer = &v_double;
+
+  color = red;
+  clunker = porsche;
+
+  u_link.next = s_link;
+
+  v_struct2.v_int_member = v_struct1.v_int_member;
+  v_union2.v_short_member = v_union.v_short_member;
+}
diff --git a/gdb/testsuite/gdb.base/exprs.exp b/gdb/testsuite/gdb.base/exprs.exp
new file mode 100644 (file)
index 0000000..cf81939
--- /dev/null
@@ -0,0 +1,2172 @@
+#   Copyright (C) 1988, 1990, 1991, 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Rob Savoye. (rob@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+       }
+
+#
+# test running programs
+#
+set prms_id 0
+set bug_id 0
+
+set binfile "exprs"
+
+if ![file exists $objdir/$subdir/$binfile] then {
+    perror "$objdir/$subdir/$binfile does not exist."
+    return 0
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $objdir/$subdir/$binfile
+
+#
+# set it up at a breakpoint so we can play with the variable values
+#
+
+if ![runto main] then {
+    perror "couldn't run to breakpoint"
+    continue
+}
+
+#
+# test expressions with "char" types
+#
+send "set variable v_char=127\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_char == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_char == 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print char ==" }
+                   -re "$prompt $"                      { fail "print char ==" }
+                   timeout                              { fail "(timeout) print char ==" }
+               }
+           }
+           -re "$prompt $"                      { fail "print char ==" }
+           timeout                              { fail "(timeout) print char ==" }
+       }
+    }
+    -re "$prompt $"                              { fail "print char ==" }
+    timeout                                      { fail "(timeout) print char ==" }
+}
+
+
+send "set variable v_char=127\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_char != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_char != 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print char !=" }
+                   -re "$prompt $"                      { fail "print char !=" }
+                   timeout                              { fail "(timeout) print char !=" }
+               }
+           }
+           -re "$prompt $"                      { fail "print char !=" }
+           timeout                              { fail "(timeout) print char !=" }
+       }
+    }
+    -re "$prompt $"                              { fail "print char !=" }
+    timeout                                      { fail "(timeout) print char !=" }
+}
+
+
+send "set variable v_char=127\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_char < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_char < 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print char <" }
+                   -re "$prompt $"                      { fail "print char <" }
+                   timeout                              { fail "(timeout) print char <" }
+               }
+           }
+           -re "$prompt $"                      { fail "print char <" }
+           timeout                              { fail "(timeout) print char <" }
+       }
+    }
+    -re "$prompt $"                              { fail "print char <" }
+    timeout                                      { fail "(timeout) print char <" }
+}
+
+
+send "set variable v_char=127\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_char > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_char > 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print char >" }
+                   -re "$prompt $"                      { fail "print char >" }
+                   timeout                              { fail "(timeout) print char >" }
+               }
+           }
+           -re "$prompt $"                      { fail "print char >" }
+           timeout                              { fail "(timeout) print char >" }
+       }
+    }
+    -re "$prompt $"                              { fail "print char >" }
+    timeout                                      { fail "(timeout) print char >" }
+}
+
+
+#
+# test expressions with "signed char" types
+#
+send "set variable v_signed_char=127\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_char == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_char == 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed char ==" }
+                   -re "$prompt $"                      { fail "print signed char ==" }
+                   timeout                              { fail "(timeout) print signed char ==" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed char ==" }
+           timeout                              { fail "(timeout) print signed char ==" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed char ==" }
+    timeout                                      { fail "(timeout) print signed char ==" }
+}
+
+
+send "set variable v_signed_char=127\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_char != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_char != 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed char !=" }
+                   -re "$prompt $"                      { fail "print signed char !=" }
+                   timeout                              { fail "(timeout) print signed char !=" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed char !=" }
+           timeout                              { fail "(timeout) print signed char !=" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed char !=" }
+    timeout                                      { fail "(timeout) print signed char !=" }
+}
+
+
+send "set variable v_signed_char=127\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_char < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_char < 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed char <" }
+                   -re "$prompt $"                      { fail "print signed char <" }
+                   timeout                              { fail "(timeout) print signed char <" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed char <" }
+           timeout                              { fail "(timeout) print signed char <" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed char <" }
+    timeout                                      { fail "(timeout) print signed char <" }
+}
+
+
+send "set variable v_signed_char=127\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_char > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_char > 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed char >" }
+                   -re "$prompt $"                      { fail "print signed char >" }
+                   timeout                              { fail "(timeout) print signed char >" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed char >" }
+           timeout                              { fail "(timeout) print signed char >" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed char >" }
+    timeout                                      { fail "(timeout) print signed char >" }
+}
+
+
+# make char a minus
+send "set variable v_signed_char=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_char == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_char == -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed char == (minus)" }
+                   -re "$prompt $"                      { fail "print signed char == (minus)" }
+                   timeout                              { fail "(timeout) print signed char == (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed char == (minus)" }
+           timeout                              { fail "(timeout) print signed char == (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed char == (minus)" }
+    timeout                                      { fail "(timeout) print signed char == (minus)" }
+}
+
+
+send "set variable v_signed_char=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_char != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_char != -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed char != (minus)" }
+                   -re "$prompt $"                      { fail "print signed char != (minus)" }
+                   timeout                              { fail "(timeout) print signed char != (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed char != (minus)" }
+           timeout                              { fail "(timeout) print signed char != (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed char != (minus)" }
+    timeout                                      { fail "(timeout) print signed char != (minus)" }
+}
+
+
+send "set variable v_signed_char=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_char < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_char < 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed char < (minus)" }
+                   -re "$prompt $"                      { fail "print signed char < (minus)" }
+                   timeout                              { fail "(timeout) print signed char < (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed char < (minus)" }
+           timeout                              { fail "(timeout) print signed char < (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed char < (minus)" }
+    timeout                                      { fail "(timeout) print signed char < (minus)" }
+}
+
+
+send "set variable v_signed_char=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_char > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_char > 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed char > (minus)" }
+                   -re "$prompt $"                      { fail "print signed char > (minus)" }
+                   timeout                              { fail "(timeout) print signed char > (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed char > (minus)" }
+           timeout                              { fail "(timeout) print signed char > (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed char > (minus)" }
+    timeout                                      { fail "(timeout) print signed char > (minus)" }
+}
+
+
+#
+# test expressions with "unsigned char" types
+#
+send "set variable v_unsigned_char=127\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_char == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_char == 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned char ==" }
+                   -re "$prompt $"                      { fail "print unsigned char ==" }
+                   timeout                              { fail "(timeout) print unsigned char ==" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned char ==" }
+           timeout                              { fail "(timeout) print unsigned char ==" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned char ==" }
+    timeout                                      { fail "(timeout) print unsigned char ==" }
+}
+
+
+send "set variable v_unsigned_char=127\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_char != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_char != 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned char !=" }
+                   -re "$prompt $"                      { fail "print unsigned char !=" }
+                   timeout                              { fail "(timeout) print unsigned char !=" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned char !=" }
+           timeout                              { fail "(timeout) print unsigned char !=" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned char !=" }
+    timeout                                      { fail "(timeout) print unsigned char !=" }
+}
+
+
+send "set variable v_unsigned_char=127\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_char < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_char < 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned char <" }
+                   -re "$prompt $"                      { fail "print unsigned char <" }
+                   timeout                              { fail "(timeout) print unsigned char <" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned char <" }
+           timeout                              { fail "(timeout) print unsigned char <" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned char <" }
+    timeout                                      { fail "(timeout) print unsigned char <" }
+}
+
+
+send "set variable v_unsigned_char=127\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_char > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_char > 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned char >" }
+                   -re "$prompt $"                      { fail "print unsigned char >" }
+                   timeout                              { fail "(timeout) print unsigned char >" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned char >" }
+           timeout                              { fail "(timeout) print unsigned char >" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned char >" }
+    timeout                                      { fail "(timeout) print unsigned char >" }
+}
+
+
+# make char a minus
+# FIXME:  gdb mishandles the cast (unsigned char) on the i960, so I've
+# set up an expected failure for this case.
+send "set variable v_unsigned_char=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_char == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_char == ~0\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" {
+                       setup_xfail "i960-*-*" 1821
+                       send "print v_unsigned_char == (unsigned char)~0\n"
+                       expect {
+                           -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned char == (~0)" }
+                           -re "$prompt $"                      { fail "print unsigned char == (~0)" }
+                           timeout                              { fail "(timeout) print unsigned char == (~0)" }
+                       }
+                   }
+                   -re "$prompt $"                      { fail "print unsigned char == (~0)" }
+                   timeout                              { fail "(timeout) print unsigned char == (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned char == (~0)" }
+           timeout                              { fail "(timeout) print unsigned char == (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned char == (~0)" }
+    timeout                                      { fail "(timeout) print unsigned char == (~0)" }
+}
+
+
+# FIXME:  gdb mishandles the cast (unsigned char) on the i960, so I've
+# set up an expected failure for this case.
+send "set variable v_unsigned_char=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_char != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               setup_xfail "i960-*-*" 1821
+               send "print v_unsigned_char != (unsigned char)~0\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned char != (~0)" }
+                   -re "$prompt $"                      { fail "print unsigned char != (~0)" }
+                   timeout                              { fail "(timeout) print unsigned char != (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned char != (~0)" }
+           timeout                              { fail "(timeout) print unsigned char != (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned char != (~0)" }
+    timeout                                      { fail "(timeout) print unsigned char != (~0)" }
+}
+
+
+send "set variable v_unsigned_char=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_char < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_char < 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned char < (~0)" }
+                   -re "$prompt $"                      { fail "print unsigned char < (~0)" }
+                   timeout                              { fail "(timeout) print unsigned char < (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned char < (~0)" }
+           timeout                              { fail "(timeout) print unsigned char < (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned char < (~0)" }
+    timeout                                      { fail "(timeout) print unsigned char < (~0)" }
+}
+
+
+send "set variable v_unsigned_char=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_char > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_char > 127\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned char > (~0)" }
+                   -re "$prompt $"                      { fail "print unsigned char > (~0)" }
+                   timeout                              { fail "(timeout) print unsigned char > (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned char > (~0)" }
+           timeout                              { fail "(timeout) print unsigned char > (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned char > (~0)" }
+    timeout                                      { fail "(timeout) print unsigned char > (~0)" }
+}
+
+
+#
+# test expressions with "short" types
+#
+send "set variable v_short=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_short == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_short == 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed short ==" }
+                   -re "$prompt $"                      { fail "print signed short ==" }
+                   timeout                              { fail "(timeout) print signed short ==" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed short ==" }
+           timeout                              { fail "(timeout) print signed short ==" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed short ==" }
+    timeout                                      { fail "(timeout) print signed short ==" }
+}
+
+
+send "set variable v_short=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_short != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_short != 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed short !=" }
+                   -re "$prompt $"                      { fail "print signed short !=" }
+                   timeout                              { fail "(timeout) print signed short !=" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed short !=" }
+           timeout                              { fail "(timeout) print signed short !=" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed short !=" }
+    timeout                                      { fail "(timeout) print signed short !=" }
+}
+
+
+send "set variable v_short=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_short < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_short < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed short <" }
+                   -re "$prompt $"                      { fail "print signed short <" }
+                   timeout                              { fail "(timeout) print signed short <" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed short <" }
+           timeout                              { fail "(timeout) print signed short <" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed short <" }
+    timeout                                      { fail "(timeout) print signed short <" }
+}
+
+
+send "set variable v_short=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_short > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_short > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed short >" }
+                   -re "$prompt $"                      { fail "print signed short >" }
+                   timeout                              { fail "(timeout) print signed short >" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed short >" }
+           timeout                              { fail "(timeout) print signed short >" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed short >" }
+    timeout                                      { fail "(timeout) print signed short >" }
+}
+
+
+# make short a minus
+send "set variable v_short=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_short == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_short == -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed short == (minus)" }
+                   -re "$prompt $"                      { fail "print signed short == (minus)" }
+                   timeout                              { fail "(timeout) print signed short == (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed short == (minus)" }
+           timeout                              { fail "(timeout) print signed short == (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed short == (minus)" }
+    timeout                                      { fail "(timeout) print signed short == (minus)" }
+}
+
+
+send "set variable v_short=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_short != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_short != -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed short != (minus)" }
+                   -re "$prompt $"                      { fail "print signed short != (minus)" }
+                   timeout                              { fail "(timeout) print signed short != (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed short != (minus)" }
+           timeout                              { fail "(timeout) print signed short != (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed short != (minus)" }
+    timeout                                      { fail "(timeout) print signed short != (minus)" }
+}
+
+
+send "set variable v_short=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_short < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_short < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed short < (minus)" }
+                   -re "$prompt $"                      { fail "print signed short < (minus)" }
+                   timeout                              { fail "(timeout) print signed short < (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed short < (minus)" }
+           timeout                              { fail "(timeout) print signed short < (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed short < (minus)" }
+    timeout                                      { fail "(timeout) print signed short < (minus)" }
+}
+
+
+send "set variable v_short=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_short > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_short > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed short > (minus)" }
+                   -re "$prompt $"                      { fail "print signed short > (minus)" }
+                   timeout                              { fail "(timeout) print signed short > (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed short > (minus)" }
+           timeout                              { fail "(timeout) print signed short > (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed short > (minus)" }
+    timeout                                      { fail "(timeout) print signed short > (minus)" }
+}
+
+
+#
+# test expressions with "signed short" types
+#
+send "set variable v_signed_short=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_short == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_short == 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed signed short ==" }
+                   -re "$prompt $"                      { fail "print signed signed short ==" }
+                   timeout                              { fail "(timeout) print signed signed short ==" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed short ==" }
+           timeout                              { fail "(timeout) print signed signed short ==" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed short ==" }
+    timeout                                      { fail "(timeout) print signed signed short ==" }
+}
+
+
+send "set variable v_signed_short=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_short != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_short != 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed short !=" }
+                   -re "$prompt $"                      { fail "print signed signed short !=" }
+                   timeout                              { fail "(timeout) print signed signed short !=" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed short !=" }
+           timeout                              { fail "(timeout) print signed signed short !=" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed short !=" }
+    timeout                                      { fail "(timeout) print signed signed short !=" }
+}
+
+
+send "set variable v_signed_short=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_short < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_short < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed short <" }
+                   -re "$prompt $"                      { fail "print signed signed short <" }
+                   timeout                              { fail "(timeout) print signed signed short <" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed short <" }
+           timeout                              { fail "(timeout) print signed signed short <" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed short <" }
+    timeout                                      { fail "(timeout) print signed signed short <" }
+}
+
+
+send "set variable v_signed_short=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_short > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_short > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed short >" }
+                   -re "$prompt $"                      { fail "print signed signed short >" }
+                   timeout                              { fail "(timeout) print signed signed short >" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed short >" }
+           timeout                              { fail "(timeout) print signed signed short >" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed short >" }
+    timeout                                      { fail "(timeout) print signed signed short >" }
+}
+
+
+# make short a minus
+send "set variable v_signed_short=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_short == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_short == -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed signed short == (minus)" }
+                   -re "$prompt $"                      { fail "print signed signed short == (minus)" }
+                   timeout                              { fail "(timeout) print signed signed short == (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed short == (minus)" }
+           timeout                              { fail "(timeout) print signed signed short == (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed short == (minus)" }
+    timeout                                      { fail "(timeout) print signed signed short == (minus)" }
+}
+
+
+send "set variable v_signed_short=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_short != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_short != -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed short != (minus)" }
+                   -re "$prompt $"                      { fail "print signed signed short != (minus)" }
+                   timeout                              { fail "(timeout) print signed signed short != (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed short != (minus)" }
+           timeout                              { fail "(timeout) print signed signed short != (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed short != (minus)" }
+    timeout                                      { fail "(timeout) print signed signed short != (minus)" }
+}
+
+
+send "set variable v_signed_short=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_short < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_short < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed signed short < (minus)" }
+                   -re "$prompt $"                      { fail "print signed signed short < (minus)" }
+                   timeout                              { fail "(timeout) print signed signed short < (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed short < (minus)" }
+           timeout                              { fail "(timeout) print signed signed short < (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed short < (minus)" }
+    timeout                                      { fail "(timeout) print signed signed short < (minus)" }
+}
+
+
+send "set variable v_signed_short=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_short > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_short > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed short > (minus)" }
+                   -re "$prompt $"                      { fail "print signed signed short > (minus)" }
+                   timeout                              { fail "(timeout) print signed signed short > (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed short > (minus)" }
+           timeout                              { fail "(timeout) print signed signed short > (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed short > (minus)" }
+    timeout                                      { fail "(timeout) print signed signed short > (minus)" }
+}
+
+
+#
+# test expressions with "unsigned short" types
+#
+send "set variable v_unsigned_short=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_short == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_short == 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned short ==" }
+                   -re "$prompt $"                      { fail "print unsigned short ==" }
+                   timeout                              { fail "(timeout) print unsigned short ==" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned short ==" }
+           timeout                              { fail "(timeout) print unsigned short ==" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned short ==" }
+    timeout                                      { fail "(timeout) print unsigned short ==" }
+}
+
+
+send "set variable v_unsigned_short=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_short != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_short != 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned short !=" }
+                   -re "$prompt $"                      { fail "print unsigned short !=" }
+                   timeout                              { fail "(timeout) print unsigned short !=" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned short !=" }
+           timeout                              { fail "(timeout) print unsigned short !=" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned short !=" }
+    timeout                                      { fail "(timeout) print unsigned short !=" }
+}
+
+
+send "set variable v_unsigned_short=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_short < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_short < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned short <" }
+                   -re "$prompt $"                      { fail "print unsigned short <" }
+                   timeout                              { fail "(timeout) print unsigned short <" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned short <" }
+           timeout                              { fail "(timeout) print unsigned short <" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned short <" }
+    timeout                                      { fail "(timeout) print unsigned short <" }
+}
+
+
+send "set variable v_unsigned_short=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_short > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_short > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned short >" }
+                   -re "$prompt $"                      { fail "print unsigned short >" }
+                   timeout                              { fail "(timeout) print unsigned short >" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned short >" }
+           timeout                              { fail "(timeout) print unsigned short >" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned short >" }
+    timeout                                      { fail "(timeout) print unsigned short >" }
+}
+
+
+# make short a minus
+send "set variable v_unsigned_short=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_short == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_short == ~0\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" {
+                       send "print v_unsigned_short == (unsigned short)~0\n"
+                       expect {
+                           -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned short == (~0)" }
+                           -re "$prompt $"                      { fail "print unsigned short == (~0)" }
+                           timeout                              { fail "(timeout) print unsigned short == (~0)" }
+                       }
+                   }
+                   -re "$prompt $"                      { fail "print unsigned short == (~0)" }
+                   timeout                              { fail "(timeout) print unsigned short == (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned short == (~0)" }
+           timeout                              { fail "(timeout) print unsigned short == (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned short == (~0)" }
+    timeout                                      { fail "(timeout) print unsigned short == (~0)" }
+}
+
+
+send "set variable v_unsigned_short=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_short != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_short != (unsigned short)~0\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned short != (~0)" }
+                   -re "$prompt $"                      { fail "print unsigned short != (~0)" }
+                   timeout                              { fail "(timeout) print unsigned short != (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned short != (~0)" }
+           timeout                              { fail "(timeout) print unsigned short != (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned short != (~0)" }
+    timeout                                      { fail "(timeout) print unsigned short != (~0)" }
+}
+
+
+send "set variable v_unsigned_short=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_short < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_short < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned short < (~0)" }
+                   -re "$prompt $"                      { fail "print unsigned short < (~0)" }
+                   timeout                              { fail "(timeout) print unsigned short < (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned short < (~0)" }
+           timeout                              { fail "(timeout) print unsigned short < (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned short < (~0)" }
+    timeout                                      { fail "(timeout) print unsigned short < (~0)" }
+}
+
+
+send "set variable v_unsigned_short=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_short > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_short > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned short > (~0)" }
+                   -re "$prompt $"                      { fail "print unsigned short > (~0)" }
+                   timeout                              { fail "(timeout) print unsigned short > (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned short > (~0)" }
+           timeout                              { fail "(timeout) print unsigned short > (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned short > (~0)" }
+    timeout                                      { fail "(timeout) print unsigned short > (~0)" }
+}
+
+
+#
+# test expressions with "int" types
+#
+send "set variable v_int=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_int == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_int == 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed int ==" }
+                   -re "$prompt $"                      { fail "print signed int ==" }
+                   timeout                              { fail "(timeout) print signed int ==" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed int ==" }
+           timeout                              { fail "(timeout) print signed int ==" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed int ==" }
+    timeout                                      { fail "(timeout) print signed int ==" }
+}
+
+
+send "set variable v_int=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_int != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_int != 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed int !=" }
+                   -re "$prompt $"                      { fail "print signed int !=" }
+                   timeout                              { fail "(timeout) print signed int !=" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed int !=" }
+           timeout                              { fail "(timeout) print signed int !=" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed int !=" }
+    timeout                                      { fail "(timeout) print signed int !=" }
+}
+
+
+send "set variable v_int=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_int < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_int < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed int <" }
+                   -re "$prompt $"                      { fail "print signed int <" }
+                   timeout                              { fail "(timeout) print signed int <" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed int <" }
+           timeout                              { fail "(timeout) print signed int <" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed int <" }
+    timeout                                      { fail "(timeout) print signed int <" }
+}
+
+
+send "set variable v_int=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_int > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_int > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed int >" }
+                   -re "$prompt $"                      { fail "print signed int >" }
+                   timeout                              { fail "(timeout) print signed int >" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed int >" }
+           timeout                              { fail "(timeout) print signed int >" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed int >" }
+    timeout                                      { fail "(timeout) print signed int >" }
+}
+
+
+# make int a minus
+send "set variable v_int=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_int == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_int == -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed int == (minus)" }
+                   -re "$prompt $"                      { fail "print signed int == (minus)" }
+                   timeout                              { fail "(timeout) print signed int == (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed int == (minus)" }
+           timeout                              { fail "(timeout) print signed int == (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed int == (minus)" }
+    timeout                                      { fail "(timeout) print signed int == (minus)" }
+}
+
+
+send "set variable v_int=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_int != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_int != -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed int != (minus)" }
+                   -re "$prompt $"                      { fail "print signed int != (minus)" }
+                   timeout                              { fail "(timeout) print signed int != (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed int != (minus)" }
+           timeout                              { fail "(timeout) print signed int != (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed int != (minus)" }
+    timeout                                      { fail "(timeout) print signed int != (minus)" }
+}
+
+
+send "set variable v_int=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_int < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_int < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed int < (minus)" }
+                   -re "$prompt $"                      { fail "print signed int < (minus)" }
+                   timeout                              { fail "(timeout) print signed int < (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed int < (minus)" }
+           timeout                              { fail "(timeout) print signed int < (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed int < (minus)" }
+    timeout                                      { fail "(timeout) print signed int < (minus)" }
+}
+
+
+send "set variable v_int=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_int > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_int > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed int > (minus)" }
+                   -re "$prompt $"                      { fail "print signed int > (minus)" }
+                   timeout                              { fail "(timeout) print signed int > (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed int > (minus)" }
+           timeout                              { fail "(timeout) print signed int > (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed int > (minus)" }
+    timeout                                      { fail "(timeout) print signed int > (minus)" }
+}
+
+
+#
+# test expressions with "signed int" types
+#
+send "set variable v_signed_int=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_int == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_int == 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed signed int ==" }
+                   -re "$prompt $"                      { fail "print signed signed int ==" }
+                   timeout                              { fail "(timeout) print signed signed int ==" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed int ==" }
+           timeout                              { fail "(timeout) print signed signed int ==" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed int ==" }
+    timeout                                      { fail "(timeout) print signed signed int ==" }
+}
+
+
+send "set variable v_signed_int=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_int != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_int != 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed int !=" }
+                   -re "$prompt $"                      { fail "print signed signed int !=" }
+                   timeout                              { fail "(timeout) print signed signed int !=" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed int !=" }
+           timeout                              { fail "(timeout) print signed signed int !=" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed int !=" }
+    timeout                                      { fail "(timeout) print signed signed int !=" }
+}
+
+
+send "set variable v_signed_int=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_int < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_int < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed int <" }
+                   -re "$prompt $"                      { fail "print signed signed int <" }
+                   timeout                              { fail "(timeout) print signed signed int <" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed int <" }
+           timeout                              { fail "(timeout) print signed signed int <" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed int <" }
+    timeout                                      { fail "(timeout) print signed signed int <" }
+}
+
+
+send "set variable v_signed_int=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_int > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_int > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed int >" }
+                   -re "$prompt $"                      { fail "print signed signed int >" }
+                   timeout                              { fail "(timeout) print signed signed int >" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed int >" }
+           timeout                              { fail "(timeout) print signed signed int >" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed int >" }
+    timeout                                      { fail "(timeout) print signed signed int >" }
+}
+
+
+# make int a minus
+send "set variable v_signed_int=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_int == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_int == -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed signed int == (minus)" }
+                   -re "$prompt $"                      { fail "print signed signed int == (minus)" }
+                   timeout                              { fail "(timeout) print signed signed int == (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed int == (minus)" }
+           timeout                              { fail "(timeout) print signed signed int == (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed int == (minus)" }
+    timeout                                      { fail "(timeout) print signed signed int == (minus)" }
+}
+
+
+send "set variable v_signed_int=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_int != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_int != -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed int != (minus)" }
+                   -re "$prompt $"                      { fail "print signed signed int != (minus)" }
+                   timeout                              { fail "(timeout) print signed signed int != (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed int != (minus)" }
+           timeout                              { fail "(timeout) print signed signed int != (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed int != (minus)" }
+    timeout                                      { fail "(timeout) print signed signed int != (minus)" }
+}
+
+
+send "set variable v_signed_int=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_int < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_int < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed signed int < (minus)" }
+                   -re "$prompt $"                      { fail "print signed signed int < (minus)" }
+                   timeout                              { fail "(timeout) print signed signed int < (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed int < (minus)" }
+           timeout                              { fail "(timeout) print signed signed int < (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed int < (minus)" }
+    timeout                                      { fail "(timeout) print signed signed int < (minus)" }
+}
+
+
+send "set variable v_signed_int=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_int > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_int > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed int > (minus)" }
+                   -re "$prompt $"                      { fail "print signed signed int > (minus)" }
+                   timeout                              { fail "(timeout) print signed signed int > (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed int > (minus)" }
+           timeout                              { fail "(timeout) print signed signed int > (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed int > (minus)" }
+    timeout                                      { fail "(timeout) print signed signed int > (minus)" }
+}
+
+
+#
+# test expressions with "unsigned int" types
+#
+send "set variable v_unsigned_int=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_int == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_int == 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned int ==" }
+                   -re "$prompt $"                      { fail "print unsigned int ==" }
+                   timeout                              { fail "(timeout) print unsigned int ==" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned int ==" }
+           timeout                              { fail "(timeout) print unsigned int ==" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned int ==" }
+    timeout                                      { fail "(timeout) print unsigned int ==" }
+}
+
+
+send "set variable v_unsigned_int=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_int != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_int != 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned int !=" }
+                   -re "$prompt $"                      { fail "print unsigned int !=" }
+                   timeout                              { fail "(timeout) print unsigned int !=" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned int !=" }
+           timeout                              { fail "(timeout) print unsigned int !=" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned int !=" }
+    timeout                                      { fail "(timeout) print unsigned int !=" }
+}
+
+
+send "set variable v_unsigned_int=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_int < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_int < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned int <" }
+                   -re "$prompt $"                      { fail "print unsigned int <" }
+                   timeout                              { fail "(timeout) print unsigned int <" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned int <" }
+           timeout                              { fail "(timeout) print unsigned int <" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned int <" }
+    timeout                                      { fail "(timeout) print unsigned int <" }
+}
+
+
+send "set variable v_unsigned_int=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_int > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_int > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned int >" }
+                   -re "$prompt $"                      { fail "print unsigned int >" }
+                   timeout                              { fail "(timeout) print unsigned int >" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned int >" }
+           timeout                              { fail "(timeout) print unsigned int >" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned int >" }
+    timeout                                      { fail "(timeout) print unsigned int >" }
+}
+
+
+# make int a minus
+send "set variable v_unsigned_int=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_int == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_int == ~0\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" {
+                       send "print v_unsigned_int == (unsigned int)~0\n"
+                       expect {
+                           -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned int == (~0)" }
+                           -re "$prompt $"                      { fail "print unsigned int == (~0)" }
+                           timeout                              { fail "(timeout) print unsigned int == (~0)" }
+                       }
+                   }
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" {
+# gdb currently compares all values as long, so this failure probably
+# applies to any configuration where LONGEST is bigger than a target int.
+                       setup_xfail "alpha-*-*"
+                       fail "print unsigned int == (~0)"
+                       send "print v_unsigned_int == (unsigned int)~0\n"
+                       expect {
+                           -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned int == (~0)" }
+                           -re "$prompt $"                      { fail "print unsigned int == (~0)" }
+                           timeout                              { fail "(timeout) print unsigned int == (~0)" }
+                       }
+                   }
+                   -re "$prompt $"                      { fail "print unsigned int == (~0)" }
+                   timeout                              { fail "(timeout) print unsigned int == (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned int == (~0)" }
+           timeout                              { fail "(timeout) print unsigned int == (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned int == (~0)" }
+    timeout                                      { fail "(timeout) print unsigned int == (~0)" }
+}
+
+
+send "set variable v_unsigned_int=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_int != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_int != (unsigned int)~0\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned int != (~0)" }
+                   -re "$prompt $"                      { fail "print unsigned int != (~0)" }
+                   timeout                              { fail "(timeout) print unsigned int != (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned int != (~0)" }
+           timeout                              { fail "(timeout) print unsigned int != (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned int != (~0)" }
+    timeout                                      { fail "(timeout) print unsigned int != (~0)" }
+}
+
+
+send "set variable v_unsigned_int=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_int < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_int < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned int < (~0)" }
+                   -re "$prompt $"                      { fail "print unsigned int < (~0)" }
+                   timeout                              { fail "(timeout) print unsigned int < (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned int < (~0)" }
+           timeout                              { fail "(timeout) print unsigned int < (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned int < (~0)" }
+    timeout                                      { fail "(timeout) print unsigned int < (~0)" }
+}
+
+
+send "set variable v_unsigned_int=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_int > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_int > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned int > (~0)" }
+                   -re "$prompt $"                      { fail "print unsigned int > (~0)" }
+                   timeout                              { fail "(timeout) print unsigned int > (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned int > (~0)" }
+           timeout                              { fail "(timeout) print unsigned int > (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned int > (~0)" }
+    timeout                                      { fail "(timeout) print unsigned int > (~0)" }
+}
+
+
+#
+# test expressions with "long" types
+#
+send "set variable v_long=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_long == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_long == 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed long ==" }
+                   -re "$prompt $"                      { fail "print signed long ==" }
+                   timeout                              { fail "(timeout) print signed long ==" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed long ==" }
+           timeout                              { fail "(timeout) print signed long ==" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed long ==" }
+    timeout                                      { fail "(timeout) print signed long ==" }
+}
+
+
+send "set variable v_long=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_long != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_long != 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed long !=" }
+                   -re "$prompt $"                      { fail "print signed long !=" }
+                   timeout                              { fail "(timeout) print signed long !=" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed long !=" }
+           timeout                              { fail "(timeout) print signed long !=" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed long !=" }
+    timeout                                      { fail "(timeout) print signed long !=" }
+}
+
+
+send "set variable v_long=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_long < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_long < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed long <" }
+                   -re "$prompt $"                      { fail "print signed long <" }
+                   timeout                              { fail "(timeout) print signed long <" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed long <" }
+           timeout                              { fail "(timeout) print signed long <" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed long <" }
+    timeout                                      { fail "(timeout) print signed long <" }
+}
+
+
+send "set variable v_long=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_long > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_long > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed long >" }
+                   -re "$prompt $"                      { fail "print signed long >" }
+                   timeout                              { fail "(timeout) print signed long >" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed long >" }
+           timeout                              { fail "(timeout) print signed long >" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed long >" }
+    timeout                                      { fail "(timeout) print signed long >" }
+}
+
+
+# make long a minus
+send "set variable v_long=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_long == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_long == -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed long == (minus)" }
+                   -re "$prompt $"                      { fail "print signed long == (minus)" }
+                   timeout                              { fail "(timeout) print signed long == (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed long == (minus)" }
+           timeout                              { fail "(timeout) print signed long == (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed long == (minus)" }
+    timeout                                      { fail "(timeout) print signed long == (minus)" }
+}
+
+
+send "set variable v_long=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_long != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_long != -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed long != (minus)" }
+                   -re "$prompt $"                      { fail "print signed long != (minus)" }
+                   timeout                              { fail "(timeout) print signed long != (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed long != (minus)" }
+           timeout                              { fail "(timeout) print signed long != (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed long != (minus)" }
+    timeout                                      { fail "(timeout) print signed long != (minus)" }
+}
+
+
+send "set variable v_long=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_long < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_long < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed long < (minus)" }
+                   -re "$prompt $"                      { fail "print signed long < (minus)" }
+                   timeout                              { fail "(timeout) print signed long < (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed long < (minus)" }
+           timeout                              { fail "(timeout) print signed long < (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed long < (minus)" }
+    timeout                                      { fail "(timeout) print signed long < (minus)" }
+}
+
+
+send "set variable v_long=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_long > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_long > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed long > (minus)" }
+                   -re "$prompt $"                      { fail "print signed long > (minus)" }
+                   timeout                              { fail "(timeout) print signed long > (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed long > (minus)" }
+           timeout                              { fail "(timeout) print signed long > (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed long > (minus)" }
+    timeout                                      { fail "(timeout) print signed long > (minus)" }
+}
+
+
+#
+# test expressions with "signed long" types
+#
+send "set variable v_signed_long=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_long == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_long == 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed signed long ==" }
+                   -re "$prompt $"                      { fail "print signed signed long ==" }
+                   timeout                              { fail "(timeout) print signed signed long ==" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed long ==" }
+           timeout                              { fail "(timeout) print signed signed long ==" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed long ==" }
+    timeout                                      { fail "(timeout) print signed signed long ==" }
+}
+
+
+send "set variable v_signed_long=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_long != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_long != 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed long !=" }
+                   -re "$prompt $"                      { fail "print signed signed long !=" }
+                   timeout                              { fail "(timeout) print signed signed long !=" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed long !=" }
+           timeout                              { fail "(timeout) print signed signed long !=" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed long !=" }
+    timeout                                      { fail "(timeout) print signed signed long !=" }
+}
+
+
+send "set variable v_signed_long=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_long < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_long < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed long <" }
+                   -re "$prompt $"                      { fail "print signed signed long <" }
+                   timeout                              { fail "(timeout) print signed signed long <" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed long <" }
+           timeout                              { fail "(timeout) print signed signed long <" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed long <" }
+    timeout                                      { fail "(timeout) print signed signed long <" }
+}
+
+
+send "set variable v_signed_long=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_long > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_long > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed long >" }
+                   -re "$prompt $"                      { fail "print signed signed long >" }
+                   timeout                              { fail "(timeout) print signed signed long >" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed long >" }
+           timeout                              { fail "(timeout) print signed signed long >" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed long >" }
+    timeout                                      { fail "(timeout) print signed signed long >" }
+}
+
+
+# make long a minus
+send "set variable v_signed_long=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_long == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_long == -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed signed long == (minus)" }
+                   -re "$prompt $"                      { fail "print signed signed long == (minus)" }
+                   timeout                              { fail "(timeout) print signed signed long == (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed long == (minus)" }
+           timeout                              { fail "(timeout) print signed signed long == (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed long == (minus)" }
+    timeout                                      { fail "(timeout) print signed signed long == (minus)" }
+}
+
+
+send "set variable v_signed_long=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_long != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_long != -1\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed long != (minus)" }
+                   -re "$prompt $"                      { fail "print signed signed long != (minus)" }
+                   timeout                              { fail "(timeout) print signed signed long != (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed long != (minus)" }
+           timeout                              { fail "(timeout) print signed signed long != (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed long != (minus)" }
+    timeout                                      { fail "(timeout) print signed signed long != (minus)" }
+}
+
+
+send "set variable v_signed_long=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_long < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_signed_long < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print signed signed long < (minus)" }
+                   -re "$prompt $"                      { fail "print signed signed long < (minus)" }
+                   timeout                              { fail "(timeout) print signed signed long < (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed long < (minus)" }
+           timeout                              { fail "(timeout) print signed signed long < (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed long < (minus)" }
+    timeout                                      { fail "(timeout) print signed signed long < (minus)" }
+}
+
+
+send "set variable v_signed_long=-1\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_long > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_signed_long > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print signed signed long > (minus)" }
+                   -re "$prompt $"                      { fail "print signed signed long > (minus)" }
+                   timeout                              { fail "(timeout) print signed signed long > (minus)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print signed signed long > (minus)" }
+           timeout                              { fail "(timeout) print signed signed long > (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print signed signed long > (minus)" }
+    timeout                                      { fail "(timeout) print signed signed long > (minus)" }
+}
+
+
+#
+# test expressions with "unsigned long" types
+#
+send "set variable v_unsigned_long=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_long == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_long == 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned long ==" }
+                   -re "$prompt $"                      { fail "print unsigned long ==" }
+                   timeout                              { fail "(timeout) print unsigned long ==" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned long ==" }
+           timeout                              { fail "(timeout) print unsigned long ==" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned long ==" }
+    timeout                                      { fail "(timeout) print unsigned long ==" }
+}
+
+
+send "set variable v_unsigned_long=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_long != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_long != 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned long !=" }
+                   -re "$prompt $"                      { fail "print unsigned long !=" }
+                   timeout                              { fail "(timeout) print unsigned long !=" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned long !=" }
+           timeout                              { fail "(timeout) print unsigned long !=" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned long !=" }
+    timeout                                      { fail "(timeout) print unsigned long !=" }
+}
+
+
+send "set variable v_unsigned_long=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_long < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_long < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned long <" }
+                   -re "$prompt $"                      { fail "print unsigned long <" }
+                   timeout                              { fail "(timeout) print unsigned long <" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned long <" }
+           timeout                              { fail "(timeout) print unsigned long <" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned long <" }
+    timeout                                      { fail "(timeout) print unsigned long <" }
+}
+
+
+send "set variable v_unsigned_long=0x7FFF\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_long > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_long > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned long >" }
+                   -re "$prompt $"                      { fail "print unsigned long >" }
+                   timeout                              { fail "(timeout) print unsigned long >" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned long >" }
+           timeout                              { fail "(timeout) print unsigned long >" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned long >" }
+    timeout                                      { fail "(timeout) print unsigned long >" }
+}
+
+
+# make long a minus
+send "set variable v_unsigned_long=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_long == 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_long == ~0\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" {
+                       send "print v_unsigned_long == (unsigned long)~0\n"
+                       expect {
+                           -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned long == (~0)" }
+                           -re "$prompt $"                      { fail "print unsigned long == (~0)" }
+                           timeout                              { fail "(timeout) print unsigned long == (~0)" }
+                       }
+                   }
+                   -re "$prompt $"                      { fail "print unsigned long == (~0)" }
+                   timeout                              { fail "(timeout) print unsigned long == (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned long == (~0)" }
+           timeout                              { fail "(timeout) print unsigned long == (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned long == (~0)" }
+    timeout                                      { fail "(timeout) print unsigned long == (~0)" }
+}
+
+
+send "set variable v_unsigned_long=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_long != 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_long != (unsigned long)~0\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned long != (~0)" }
+                   -re "$prompt $"                      { fail "print unsigned long != (~0)" }
+                   timeout                              { fail "(timeout) print unsigned long != (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned long != (~0)" }
+           timeout                              { fail "(timeout) print unsigned long != (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned long != (~0)" }
+    timeout                                      { fail "(timeout) print unsigned long != (~0)" }
+}
+
+
+send "set variable v_unsigned_long=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_long < 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 0.*$prompt $" {
+               send "print v_unsigned_long < 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 0.*$prompt $" { pass "print unsigned long < (~0)" }
+                   -re "$prompt $"                      { fail "print unsigned long < (~0)" }
+                   timeout                              { fail "(timeout) print unsigned long < (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned long < (~0)" }
+           timeout                              { fail "(timeout) print unsigned long < (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned long < (~0)" }
+    timeout                                      { fail "(timeout) print unsigned long < (~0)" }
+}
+
+
+send "set variable v_unsigned_long=~0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_long > 0\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $" {
+               send "print v_unsigned_long > 0x7FFF\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 1.*$prompt $" { pass "print unsigned long > (~0)" }
+                   -re "$prompt $"                      { fail "print unsigned long > (~0)" }
+                   timeout                              { fail "(timeout) print unsigned long > (~0)" }
+               }
+           }
+           -re "$prompt $"                      { fail "print unsigned long > (~0)" }
+           timeout                              { fail "(timeout) print unsigned long > (~0)" }
+       }
+    }
+    -re "$prompt $"                              { fail "print unsigned long > (~0)" }
+    timeout                                      { fail "(timeout) print unsigned long > (~0)" }
+}
+
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+}
diff --git a/gdb/testsuite/gdb.base/funcargs.c b/gdb/testsuite/gdb.base/funcargs.c
new file mode 100644 (file)
index 0000000..6c0fdd0
--- /dev/null
@@ -0,0 +1,545 @@
+/*  Test passing of arguments to functions.  Use various sorts of arguments,
+    including basic types, pointers to those types, structures, lots of
+    args, etc, in various combinations. */
+
+/* AIX requires this to be the first thing in the file.  */
+#ifdef __GNUC__
+#  define alloca __builtin_alloca
+#  define HAVE_STACK_ALLOCA 1
+#else /* not __GNUC__ */
+#  ifdef _AIX
+     #pragma alloca
+#    define HAVE_STACK_ALLOCA 1
+#  else /* Not AIX */
+#    ifdef sparc
+#      include <alloca.h>
+#      define HAVE_STACK_ALLOCA 1
+       char *alloca ();
+#    endif /* sparc */
+#  endif /* Not AIX */
+#endif /* not __GNUC__ */
+
+char c = 'a';
+char *cp = &c;
+
+unsigned char uc = 'b';
+unsigned char *ucp = &uc;
+
+short s = 1;
+short *sp = &s;
+
+unsigned short us = 6;
+unsigned short *usp = &us;
+
+int i = 2;
+int *ip = &i;
+
+unsigned int ui = 7;
+unsigned int *uip = &ui;
+
+long l = 3;
+long *lp = &l;
+
+unsigned long ul = 8;
+unsigned long *ulp = &ul;
+
+float f = 4.0;
+float *fp = &f;
+
+double d = 5.0;
+double *dp = &d;
+
+struct stag {
+    int s1;
+    int s2;
+} st = { 101, 102 };
+struct stag *stp = &st;
+
+union utag {
+    int u1;
+    long u2;
+} un;
+union utag *unp = &un;
+
+char carray[] = {'a', 'n', ' ', 'a', 'r', 'r', 'a', 'y', '\0'};
+
+
+/* Test various permutations and interleaving of integral arguments */
+
+
+call0a (c, s, i, l)
+char c; short s; int i; long l;
+{
+  c = 'a';
+  s = 5;
+  i = 6;
+  l = 7;
+}
+
+call0b (s, i, l, c)
+short s; int i; long l; char c;
+{
+  s = 6; i = 7; l = 8; c = 'j';
+}
+
+call0c (i, l, c, s)
+int i; long l; char c; short s;
+{
+  i = 3; l = 4; c = 'k'; s = 5;
+}
+
+call0d (l, c, s, i)
+long l; char c; short s; int i;
+{
+  l = 7; c = 'z'; s = 8; i = 9;
+}
+
+call0e (c1, l, c2, i, c3, s, c4, c5)
+char c1; long l; char c2; int i; char c3; short s; char c4; char c5;
+{
+  c1 = 'a'; l = 5; c2 = 'b'; i = 7; c3 = 'c'; s = 7; c4 = 'f'; c5 = 'g';
+}
+
+
+/* Test various permutations and interleaving of unsigned integral arguments */
+
+
+call1a (uc, us, ui, ul)
+unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
+{
+  uc = 5; us = 6; ui = 7; ul = 8;
+}
+
+call1b (us, ui, ul, uc)
+unsigned short us; unsigned int ui; unsigned long ul; unsigned char uc;
+{
+  uc = 5; us = 6; ui = 7; ul = 8;
+}
+
+call1c (ui, ul, uc, us)
+unsigned int ui; unsigned long ul; unsigned char uc; unsigned short us;
+{
+  uc = 5; us = 6; ui = 7; ul = 8;
+}
+
+call1d (ul, uc, us, ui)
+unsigned long ul; unsigned char uc; unsigned short us; unsigned int ui;
+{
+  uc = 5; us = 6; ui = 7; ul = 8;
+}
+
+call1e (uc1, ul, uc2, ui, uc3, us, uc4, uc5)
+unsigned char uc1; unsigned long ul; unsigned char uc2; unsigned int ui;
+unsigned char uc3; unsigned short us; unsigned char uc4; unsigned char uc5;
+{
+  uc1 = 5; ul = 7; uc2 = 8; ui = 9; uc3 = 10; us = 11; uc4 = 12; uc5 = 55;
+}
+
+/* Test various permutations and interleaving of integral arguments with
+   floating point arguments. */
+
+
+call2a (c, f1, s, d1, i, f2, l, d2)
+char c; float f1; short s; double d1; int i; float f2; long l; double d2;
+{
+  c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
+}
+
+call2b (f1, s, d1, i, f2, l, d2, c)
+float f1; short s; double d1; int i; float f2; long l; double d2; char c;
+{
+  c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
+}
+
+call2c (s, d1, i, f2, l, d2, c, f1)
+short s; double d1; int i; float f2; long l; double d2; char c; float f1;
+{
+  c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
+}
+
+call2d (d1, i, f2, l, d2, c, f1, s)
+double d1; int i; float f2; long l; double d2; char c; float f1; short s;
+{
+  c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
+}
+
+call2e (i, f2, l, d2, c, f1, s, d1)
+int i; float f2; long l; double d2; char c; float f1; short s; double d1;
+{
+  c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
+}
+
+call2f (f2, l, d2, c, f1, s, d1, i)
+float f2; long l; double d2; char c; float f1; short s; double d1; int i;
+{
+  c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
+}
+
+call2g (l, d2, c, f1, s, d1, i, f2)
+long l; double d2; char c; float f1; short s; double d1; int i; float f2;
+{
+  c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
+}
+
+call2h (d2, c, f1, s, d1, i, f2, l)
+double d2; char c; float f1; short s; double d1; int i; float f2; long l;
+{
+  c = 'a'; f1 = 0.0; s = 5; d1 = 0.0; i = 6; f2 = 0.1; l = 7; d2 = 0.2;
+}
+
+call2i (c1, f1, c2, c3, d1, c4, c5, c6, f2, s, c7, d2)
+char c1; float f1; char c2; char c3; double d1; char c4; char c5; char c6;
+float f2; short s; char c7; double d2;
+{
+  c1 = 'a'; f1 = 0.0; c2 = 5; d1 = 0.0; c3 = 6; f2 = 0.1; c4 = 7; d2 = 0.2;
+  c5 = 's'; c6 = 'f'; c7 = 'z'; s = 77;
+}
+
+
+/* Test pointers to various integral and floating types. */
+
+
+call3a (cp, sp, ip, lp)
+char *cp; short *sp; int *ip; long *lp;
+{
+  cp = 0; sp = 0; ip = 0; lp = 0;
+}
+
+call3b (ucp, usp, uip, ulp)
+unsigned char *ucp; unsigned short *usp; unsigned int *uip;
+unsigned long *ulp;
+{
+  ucp = 0; usp = 0; uip = 0; ulp = 0;
+}
+
+call3c (fp, dp)
+float *fp; double *dp;
+{
+  fp = 0; dp = 0;
+}
+
+
+/* Test passing structures and unions by reference. */
+
+
+call4a (stp)
+struct stag *stp; {
+stp = 0;}
+
+call4b (unp)
+union utag *unp;
+{
+  unp = 0;
+}
+
+
+/* Test passing structures and unions by value. */
+
+
+call5a (st)
+struct stag st; {st.s1 = 5;}
+
+call5b (un)
+union utag un; {un.u1 = 7;}
+
+
+/* Test shuffling of args */
+
+
+call6a (c, s, i, l, f, d, uc, us, ui, ul)
+char c; short s; int i; long l; float f; double d;
+unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
+{
+  c = c;
+    call6b (s, i, l, f, d, uc, us, ui, ul);
+}
+
+call6b (s, i, l, f, d, uc, us, ui, ul)
+short s; int i; long l; float f; double d;
+unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
+{
+  s = s;
+    call6c (i, l, f, d, uc, us, ui, ul);
+}
+
+call6c (i, l, f, d, uc, us, ui, ul)
+int i; long l; float f; double d;
+unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
+{
+  i = i;
+    call6d (l, f, d, uc, us, ui, ul);
+}
+
+call6d (l, f, d, uc, us, ui, ul)
+long l; float f; double d;
+unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
+{
+  l = l;
+    call6e (f, d, uc, us, ui, ul);
+}
+
+call6e (f, d, uc, us, ui, ul)
+float f; double d;
+unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
+{
+  f = f;
+    call6f (d, uc, us, ui, ul);
+}
+
+call6f (d, uc, us, ui, ul)
+double d;
+unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
+{
+  d = d;
+    call6g (uc, us, ui, ul);
+}
+
+call6g (uc, us, ui, ul)
+unsigned char uc; unsigned short us; unsigned int ui; unsigned long ul;
+{
+  uc = uc;
+    call6h (us, ui, ul);
+}
+
+call6h (us, ui, ul)
+unsigned short us; unsigned int ui; unsigned long ul;
+{
+  us = us;
+    call6i (ui, ul);
+}
+
+call6i (ui, ul)
+unsigned int ui; unsigned long ul;
+{
+  ui = ui;
+    call6j (ul);
+}
+
+call6j (ul)
+unsigned long ul;
+{
+  ul = ul;
+    call6k ();
+}
+
+call6k ()
+{
+}
+
+
+/*  Test shuffling of args, round robin */
+
+
+call7a (c, i, s, l, f, uc, d, us, ul, ui)
+char c; int i; short s; long l; float f; unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui;
+{
+    call7b (i, s, l, f, uc, d, us, ul, ui, c);
+}
+
+call7b (i, s, l, f, uc, d, us, ul, ui, c)
+int i; short s; long l; float f; unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui; char c;
+{
+    call7c (s, l, f, uc, d, us, ul, ui, c, i);
+}
+
+call7c (s, l, f, uc, d, us, ul, ui, c, i)
+short s; long l; float f; unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui; char c; int i;
+{
+    call7d (l, f, uc, d, us, ul, ui, c, i, s);
+}
+
+call7d (l, f, uc, d, us, ul, ui, c, i, s)
+long l; float f; unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui; char c; int i; short s;
+{
+    call7e (f, uc, d, us, ul, ui, c, i, s, l);
+}
+
+call7e (f, uc, d, us, ul, ui, c, i, s, l)
+float f; unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui; char c; int i; short s; long l;
+{
+    call7f (uc, d, us, ul, ui, c, i, s, l, f);
+}
+
+call7f (uc, d, us, ul, ui, c, i, s, l, f)
+unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui; char c; int i; short s; long l; float f;
+{
+    call7g (d, us, ul, ui, c, i, s, l, f, uc);
+}
+
+call7g (d, us, ul, ui, c, i, s, l, f, uc)
+double d; unsigned short us; unsigned long ul; unsigned int ui; char c; int i; short s; long l; float f; unsigned char uc;
+{
+    call7h (us, ul, ui, c, i, s, l, f, uc, d);
+}
+
+call7h (us, ul, ui, c, i, s, l, f, uc, d)
+unsigned short us; unsigned long ul; unsigned int ui; char c; int i; short s; long l; float f; unsigned char uc; double d;
+{
+    call7i (ul, ui, c, i, s, l, f, uc, d, us);
+}
+
+call7i (ul, ui, c, i, s, l, f, uc, d, us)
+unsigned long ul; unsigned int ui; char c; int i; short s; long l; float f; unsigned char uc; double d; unsigned short us;
+{
+    call7j (ui, c, i, s, l, f, uc, d, us, ul);
+}
+
+call7j (ui, c, i, s, l, f, uc, d, us, ul)
+unsigned int ui; char c; int i; short s; long l; float f; unsigned char uc; double d; unsigned short us; unsigned long ul;
+{
+    call7k (c, i, s, l, f, uc, d, us, ul, ui);
+}
+
+call7k (c, i, s, l, f, uc, d, us, ul, ui)
+char c; int i; short s; long l; float f; unsigned char uc; double d; unsigned short us; unsigned long ul; unsigned int ui;
+{
+  c = 'a'; i = 7; s = 8; l = 7; f = 0.3; uc = 44; d = 0.44; us = 77;
+  ul = 43; ui = 33;
+}
+
+
+/*  Test printing of structures passed as arguments to recursive functions. */
+
+
+typedef struct s
+{
+  short s;
+  int i;
+  long l;
+} SVAL;        
+
+hitbottom ()
+{
+}
+
+void recurse (a, depth)
+SVAL a;
+int depth;
+{
+  a.s = a.i = a.l = --depth;
+  if (depth == 0)
+    hitbottom ();
+  else
+    recurse (a, depth);
+}
+
+test_struct_args ()
+{
+  SVAL s; s.s = 5; s.i = 5; s.l = 5;
+
+  recurse (s, 5);
+}
+
+/* On various machines (pa, 29k, and rs/6000, at least), a function which
+   calls alloca may do things differently with respect to frames.  So give
+   it a try.  */
+
+int
+localvars_after_alloca (c, s, i, l)
+     char c;
+     short s;
+     int i;
+     long l;
+{
+#ifdef HAVE_STACK_ALLOCA
+  /* No need to use the alloca.c alloca-on-top-of-malloc; it doesn't
+     test what we are looking for, so if we don't have an alloca which
+     allocates on the stack, just don't bother to call alloca at all.  */
+
+  char *z = alloca (s + 50);
+#endif
+  c = 'a';
+  s = 5;
+  i = 6;
+  l = 7;
+}
+\f
+
+/* The point behind this test is the PA will call this indirectly
+   through dyncall.  Unlike the indirect calls to call0a, this test
+   will require a trampoline between dyncall and this function on the
+   call path, then another trampoline on between this function and main
+   on the return path.  */
+double
+call_with_trampolines (d1)
+double d1;
+{
+  return d1;
+} /* End of call_with_trampolines, this comment is needed by funcargs.exp */
+
+/* Dummy functions which the testsuite can use to run to, etc.  */
+
+void
+marker_indirect_call () {}
+
+void
+marker_call_with_trampolines () {}
+\f
+main ()
+{
+  int (*pointer_to_call0a) () = call0a;
+  double (*pointer_to_call_with_trampolines) () = call_with_trampolines;
+
+  /* Test calling with basic integer types */
+  call0a (c, s, i, l);
+  call0b (s, i, l, c);
+  call0c (i, l, c, s);
+  call0d (l, c, s, i);
+  call0e (c, l, c, i, c, s, c, c);
+
+  /* Test calling with unsigned integer types */
+  call1a (uc, us, ui, ul);
+  call1b (us, ui, ul, uc);
+  call1c (ui, ul, uc, us);
+  call1d (ul, uc, us, ui);
+  call1e (uc, ul, uc, ui, uc, us, uc, uc);
+
+  /* Test calling with integral types mixed with floating point types */
+  call2a (c, f, s, d, i, f, l, d);
+  call2b (f, s, d, i, f, l, d, c);
+  call2c (s, d, i, f, l, d, c, f);
+  call2d (d, i, f, l, d, c, f, s);
+  call2e (i, f, l, d, c, f, s, d);
+  call2f (f, l, d, c, f, s, d, i);
+  call2g (l, d, c, f, s, d, i, f);
+  call2h (d, c, f, s, d, i, f, l);
+  call2i (c, f, c, c, d, c, c, c, f, s, c, d);;
+
+  /* Test dereferencing pointers to various integral and floating types */
+
+  call3a (cp, sp, ip, lp);
+  call3b (ucp, usp, uip, ulp);
+  call3c (fp, dp);
+
+  /* Test dereferencing pointers to structs and unions */
+
+  call4a (stp);
+  un.u1 = 1;
+  call4b (unp);
+
+  /* Test calling with structures and unions. */
+
+  call5a (st);
+  un.u1 = 2;
+  call5b (un);
+
+  /* Test shuffling of args */
+
+  call6a (c, s, i, l, f, d, uc, us, ui, ul);
+  call7a (c, i, s, l, f, uc, d, us, ul, ui);
+  
+  /* Test passing structures recursively. */
+
+  test_struct_args ();
+
+  localvars_after_alloca (c, s, i, l);
+
+  /* This is for localvars_in_indirect_call.  */
+  marker_indirect_call ();
+  /* The comment on the following two lines is used by funcargs.exp,
+     don't change it.  */
+  (*pointer_to_call0a) (c, s, i, l);   /* First step into call0a.  */
+  (*pointer_to_call0a) (c, s, i, l);   /* Second step into call0a.  */
+  marker_call_with_trampolines ();
+  (*pointer_to_call_with_trampolines) (d); /* Test multiple trampolines.  */
+}
diff --git a/gdb/testsuite/gdb.base/funcargs.exp b/gdb/testsuite/gdb.base/funcargs.exp
new file mode 100644 (file)
index 0000000..e5f4a43
--- /dev/null
@@ -0,0 +1,1509 @@
+# Copyright (C) 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Fred Fish. (fnf@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+set binfile "funcargs"
+set srcfile $binfile.c
+
+if ![file exists $objdir/$subdir/$binfile] then {
+    perror "$objdir/$subdir/$binfile does not exist."
+    continue
+}
+
+#
+# Locate actual args; integral types.
+#
+
+proc integral_args {} {
+    global prompt
+    global det_file
+
+    delete_breakpoints
+
+    send "break call0a\n" ; expect -re ".*$prompt $"
+    send "break call0b\n" ; expect -re ".*$prompt $"
+    send "break call0c\n" ; expect -re ".*$prompt $"
+    send "break call0d\n" ; expect -re ".*$prompt $"
+    send "break call0e\n" ; expect -re ".*$prompt $"
+
+    # Run; should stop at call0a and print actual arguments.
+    # The a29k fails all of these tests, perhaps because the prologue
+    # code is broken.
+    setup_xfail "a29k-*-udi"
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.* \[(\]+y or n\[)\]+ $" {
+           send "y\n"
+           exp_continue
+       }
+       -re ".* call0a \[(\]+c=97 'a', s=1, i=2, l=3\[)\]+ .*$prompt $" {}
+       -re "$prompt $"  { fail "run to call0a" ; return }
+       timeout { fail "(timeout) run to call0a" ; return }
+    }
+
+    # Print each arg as a double check to see if we can print
+    # them here as well as with backtrace.
+
+    send "print c\n"
+    expect {
+       -re ".* = 97 'a'\r\n$prompt $" {}
+       -re "$prompt $" { fail "print c" ; return }
+       timeout { fail "(timeout) print c" ; return }
+    }
+    send "print s\n"
+    expect {
+       -re ".* = 1\r\n$prompt $" {}
+       -re "$prompt $" { fail "print s" ; return }
+       timeout { fail "(timeout) print s" ; return }
+    }
+    send "print i\n"
+    expect {
+       -re ".* = 2\r\n$prompt $" {}
+       -re "$prompt $" { fail "print i" ; return }
+       timeout { fail "(timeout) print i" ; return }
+    }
+    send "print l\n"
+    expect {
+       -re ".* = 3\r\n$prompt $" {}
+       -re "$prompt $" { fail "print l" ; return }
+       timeout { fail "(timeout) print l" ; return }
+    }
+
+    # Continue; should stop at call0b and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call0b \[(\]+s=1, i=2, l=3, c=97 'a'\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call0b" ; return }
+       timeout { fail "(timeout) continue to call0b" ; return }
+    }
+
+    # Continue; should stop at call0c and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call0c \[(\]+i=2, l=3, c=97 'a', s=1\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call0c" ; return }
+       timeout { fail "(timeout) continue to call0c" ; return }
+    }
+
+    # Continue; should stop at call0d and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call0d \[(\]+l=3, c=97 'a', s=1, i=2\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call0d" ; return }
+       timeout { fail "(timeout) continue to call0d" ; return }
+    }
+
+    # Continue; should stop at call0e and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call0e \[(\]+c1=97 'a', l=3, c2=97 'a', i=2, c3=97 'a', s=1, c4=97 'a', c5=97 'a'\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call0e" ; return }
+       timeout { fail "(timeout) continue to call0e" ; return }
+    }
+
+    pass "locate actual args, signed integral types"
+}
+
+#
+# Locate actual args; unsigned integral types.
+#
+
+proc unsigned_integral_args {} {
+    global prompt
+    global det_file
+
+    delete_breakpoints
+
+    send "break call1a\n" ; expect -re ".*$prompt $"
+    send "break call1b\n" ; expect -re ".*$prompt $"
+    send "break call1c\n" ; expect -re ".*$prompt $"
+    send "break call1d\n" ; expect -re ".*$prompt $"
+    send "break call1e\n" ; expect -re ".*$prompt $"
+
+    # Run; should stop at call1a and print actual arguments.
+    # The a29k fails all of these tests, perhaps because the prologue
+    # code is broken.
+    setup_xfail "a29k-*-udi"
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.* \[(\]+y or n\[)\]+ $" {
+           send "y\n"
+           exp_continue
+       }
+       -re ".* call1a \[(\]+uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "run to call1a" ; return }
+       timeout { fail "(timeout) run to call1a" ; return }
+    }
+
+    # Print each arg as a double check to see if we can print
+    # them here as well as with backtrace.
+
+    send "print uc\n"
+    expect {
+       -re ".* = 98 'b'\r\n$prompt $" {}
+       -re "$prompt $" { fail "print uc" ; return }
+       timeout { fail "(timeout) print uc" ; return }
+    }
+    send "print us\n"
+    expect {
+       -re ".* = 6\r\n$prompt $" {}
+       -re "$prompt $" { fail "print us" ; return }
+       timeout { fail "(timeout) print us" ; return }
+    }
+    send "print ui\n"
+    expect {
+       -re ".* = 7\r\n$prompt $" {}
+       -re "$prompt $" { fail "print ui" ; return }
+       timeout { fail "(timeout) print ui" ; return }
+    }
+    send "print ul\n"
+    expect {
+       -re ".* = 8\r\n$prompt $" {}
+       -re "$prompt $" { fail "print ul" ; return }
+       timeout { fail "(timeout) print ul" ; return }
+    }
+    
+    # Continue; should stop at call1b and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call1b \[(\]+us=6, ui=7, ul=8, uc=98 'b'\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call1b" ; return }
+       timeout { fail "(timeout) continue to call1b" ; return }
+    }
+
+    # Continue; should stop at call1c and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call1c \[(\]+ui=7, ul=8, uc=98 'b', us=6\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call1c" ; return }
+       timeout { fail "(timeout) continue to call1c" ; return }
+    }
+
+    # Continue; should stop at call1d and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call1d \[(\]+ul=8, uc=98 'b', us=6, ui=7\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call1d" ; return }
+       timeout { fail "(timeout) continue to call1d" ; return }
+    }
+
+    # Continue; should stop at call1e and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call1e \[(\]+uc1=98 'b', ul=8, uc2=98 'b', ui=7, uc3=98 'b', us=6, uc4=98 'b', uc5=98 'b'\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call1e" ; return }
+       timeout { fail "(timeout) continue to call1e" ; return }
+    }
+
+    pass "locate actual args, unsigned integral types"
+}
+
+#
+# Locate actual args; integrals mixed with floating point.
+#
+
+proc float_and_integral_args {} {
+    global prompt
+    global det_file
+
+    delete_breakpoints
+
+    send "break call2a\n" ; expect -re ".*$prompt $"
+    send "break call2b\n" ; expect -re ".*$prompt $"
+    send "break call2c\n" ; expect -re ".*$prompt $"
+    send "break call2d\n" ; expect -re ".*$prompt $"
+    send "break call2e\n" ; expect -re ".*$prompt $"
+    send "break call2f\n" ; expect -re ".*$prompt $"
+    send "break call2g\n" ; expect -re ".*$prompt $"
+    send "break call2h\n" ; expect -re ".*$prompt $"
+    send "break call2i\n" ; expect -re ".*$prompt $"
+
+    # Run; should stop at call2a and print actual arguments.
+
+    setup_xfail "i960-*-*" 1813
+    # The a29k fails all of these tests, perhaps because the prologue
+    # code is broken.
+    setup_xfail "a29k-*-udi"
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.* \[(\]+y or n\[)\]+ $" {
+           send "y\n"
+           exp_continue
+       }
+       -re ".* call2a \[(\]+c=97 'a', f1=4, s=1, d1=5, i=2, f2=4, l=3, d2=5\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "run to call2a" ; return }
+       timeout { fail "(timeout) run to call2a" ; return }
+    }
+
+    # Print each arg as a double check to see if we can print
+
+    send "print c\n"
+    expect {
+       -re ".* = 97 'a'\r\n$prompt $" {}
+       -re "$prompt $" { fail "print c" ; return }
+       timeout { fail "(timeout) print c" ; return }
+    }
+    send "print f1\n"
+    expect {
+       -re ".* = 4\r\n$prompt $" {}
+       -re "$prompt $" { fail "print f1" ; return }
+       timeout { fail "(timeout) print f1" ; return }
+    }
+    send "print s\n"
+    expect {
+       -re ".* = 1\r\n$prompt $" {}
+       -re "$prompt $" { fail "print s" ; return }
+       timeout { fail "(timeout) print s" ; return }
+    }
+    send "print d1\n"
+    expect {
+       -re ".* = 5\r\n$prompt $" {}
+       -re "$prompt $" { fail "print d1" ; return }
+       timeout { fail "(timeout) print d1" ; return }
+    }
+    send "print i\n"
+    expect {
+       -re ".* = 2\r\n$prompt $" {}
+       -re "$prompt $" { fail "print i" ; return }
+       timeout { fail "(timeout) print i" ; return }
+    }
+    send "print f2\n"
+    expect {
+       -re ".* = 4\r\n$prompt $" {}
+       -re "$prompt $" { fail "print f2" ; return }
+       timeout { fail "(timeout) print f2" ; return }
+    }
+    send "print l\n"
+    expect {
+       -re ".* = 3\r\n$prompt $" {}
+       -re "$prompt $" { fail "print l" ; return }
+       timeout { fail "(timeout) print l" ; return }
+    }
+    send "print d2\n"
+    expect {
+       -re ".* = 5\r\n$prompt $" {}
+       -re "$prompt $" { fail "print d2" ; return }
+       timeout { fail "(timeout) print d2" ; return }
+    }
+
+    # Continue; should stop at call2b and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call2b \[(\]+f1=4, s=1, d1=5, i=2, f2=4, l=3, d2=5, c=97 'a'\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call2b" ; return }
+       timeout { fail "(timeout) continue to call2b" ; return }
+    }
+
+    # Continue; should stop at call2c and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call2c \[(\]+s=1, d1=5, i=2, f2=4, l=3, d2=5, c=97 'a', f1=4\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call2c" ; return }
+       timeout { fail "(timeout) continue to call2c" ; return }
+    }
+
+    # Continue; should stop at call2d and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call2d \[(\]+d1=5, i=2, f2=4, l=3, d2=5, c=97 'a', f1=4, s=1\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call2d" ; return }
+       timeout { fail "(timeout) continue to call2d" ; return }
+    }
+
+    # Continue; should stop at call2e and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call2e \[(\]+i=2, f2=4, l=3, d2=5, c=97 'a', f1=4, s=1, d1=5\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call2e" ; return }
+       timeout { fail "(timeout) continue to call2e" ; return }
+    }
+
+    # Continue; should stop at call2f and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call2f \[(\]+f2=4, l=3, d2=5, c=97 'a', f1=4, s=1, d1=5, i=2\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call2f" ; return }
+       timeout { fail "(timeout) continue to call2f" ; return }
+    }
+
+    # Continue; should stop at call2g and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call2g \[(\]+l=3, d2=5, c=97 'a', f1=4, s=1, d1=5, i=2, f2=4\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call2g" ; return }
+       timeout { fail "(timeout) continue to call2g" ; return }
+    }
+
+    # Continue; should stop at call2h and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call2h \[(\]+d2=5, c=97 'a', f1=4, s=1, d1=5, i=2, f2=4, l=3\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call2h" ; return }
+       timeout { fail "(timeout) continue to call2h" ; return }
+    }
+
+    # Continue; should stop at call2i and print actual arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call2i \[(\]+c1=97 'a', f1=4, c2=97 'a', c3=97 'a', d1=5, c4=97 'a', c5=97 'a', c6=97 'a', f2=4, s=1, c7=97 'a', d2=5\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call2i" ; return }
+       timeout { fail "(timeout) continue to call2i" ; return }
+    }
+
+    pass "locate actual args, mixed integral and float types"
+}
+
+#
+# Locate actual args; dereference pointers to ints and floats.
+#
+
+proc pointer_args {} {
+    global prompt
+    global hex
+    global det_file
+
+    delete_breakpoints
+
+    send "break call3a\n" ; expect -re ".*$prompt $"
+    send "break call3b\n" ; expect -re ".*$prompt $"
+    send "break call3c\n" ; expect -re ".*$prompt $"
+
+    # Run; should stop at call3a and print actual arguments.
+    # Try dereferencing the arguments.
+
+    send "run\n"
+    # The a29k fails all of these tests, perhaps because the prologue
+    # code is broken.
+    setup_xfail "a29k-*-udi"
+    expect {
+       -re "The program .* has been started already.* \[(\]+y or n\[)\]+ $" {
+           send "y\n"
+           exp_continue
+       }
+       -re ".* call3a \[(\]+cp=$hex \"a\", sp=$hex, ip=$hex, lp=$hex\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "run to call3a" ; return }
+       timeout { fail "(timeout) run to call3a" ; return }
+    }
+
+    send "print *cp\n"
+    expect {
+       -re ".* = 97 'a'\r\n$prompt $" {}
+       -re "$prompt $" { fail "print *cp" ; return }
+       timeout { fail "(timeout) print *cp" ; return }
+    }
+    send "print *sp\n"
+    expect {
+       -re ".* = 1\r\n$prompt $" {}
+       -re "$prompt $" { fail "print *sp" ; return }
+       timeout { fail "(timeout) print *sp" ; return }
+    }
+    send "print *ip\n"
+    expect {
+       -re ".* = 2\r\n$prompt $" {}
+       -re "$prompt $" { fail "print *ip" ; return }
+       timeout { fail "(timeout) print *ip" ; return }
+    }
+    send "print *lp\n"
+    expect {
+       -re ".* = 3\r\n$prompt $" {}
+       -re "$prompt $" { fail "print *lp" ; return }
+       timeout { fail "(timeout) print *lp" ; return }
+    }
+
+    # Continue; should stop at call3b and print actual arguments.
+    # Try dereferencing the arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call3b \[(\]+ucp=$hex \"b\", usp=$hex, uip=$hex, ulp=$hex\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call3b" ; return }
+       timeout { fail "(timeout) continue to call3b" ; return }
+    }
+
+    send "print *ucp\n"
+    expect {
+       -re ".* = 98 'b'\r\n$prompt $" {}
+       -re "$prompt $" { fail "print *ucp" ; return }
+       timeout { fail "(timeout) print *ucp" ; return }
+    }
+    send "print *usp\n"
+    expect {
+       -re ".* = 6\r\n$prompt $" {}
+       -re "$prompt $" { fail "print *usp" ; return }
+       timeout { fail "(timeout) print *usp" ; return }
+    }
+    send "print *uip\n"
+    expect {
+       -re ".* = 7\r\n$prompt $" {}
+       -re "$prompt $" { fail "print *uip" ; return }
+       timeout { fail "(timeout) print *uip" ; return }
+    }
+    send "print *ulp\n"
+    expect {
+       -re ".* = 8\r\n$prompt $" {}
+       -re "$prompt $" { fail "print *ulp" ; return }
+       timeout { fail "(timeout) print *ulp" ; return }
+    }
+
+    # Continue; should stop at call3c and print actual arguments.
+    # Try dereferencing the arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call3c \[(\]+fp=$hex, dp=$hex\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call3c" ; return }
+       timeout { fail "(timeout) continue to call3c" ; return }
+    }
+
+    send "print *fp\n"
+    expect {
+       -re ".* = 4\r\n$prompt $" {}
+       -re "$prompt $" { fail "print *fp" ; return }
+       timeout { fail "(timeout) print *fp" ; return }
+    }
+    send "print *dp\n"
+    expect {
+       -re ".* = 5\r\n$prompt $" {}
+       -re "$prompt $" { fail "print *dp" ; return }
+       timeout { fail "(timeout) print *dp" ; return }
+    }
+
+    pass "locate actual args, pointer types"
+}
+
+#
+# Locate actual args; structures and unions passed by reference.
+#
+
+proc structs_by_reference {} {
+    global prompt
+    global hex
+    global det_file
+
+    delete_breakpoints
+
+    send "break call4a\n" ; expect -re ".*$prompt $"
+    send "break call4b\n" ; expect -re ".*$prompt $"
+
+    # Run; should stop at call4a and print actual arguments.
+    # Try dereferencing the arguments.
+
+    # The a29k fails all of these tests, perhaps because the prologue
+    # code is broken.
+    setup_xfail "a29k-*-udi"
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.* \[(\]+y or n\[)\]+ $" {
+           send "y\n"
+           exp_continue
+       }
+       -re ".* call4a \[(\]+stp=$hex\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "run to call4a" ; return }
+       timeout { fail "(timeout) run to call4a" ; return }
+    }
+
+    send "print *stp\n"
+    expect {
+       -re ".* = \{s1 = 101, s2 = 102\}\r\n$prompt $" {}
+       -re "$prompt $" { fail "print *stp" ; return }
+       timeout { fail "(timeout) print *stp" ; return }
+    }
+
+    # Continue; should stop at call4b and print actual arguments.
+    # Try dereferencing the arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call4b \[(\]+unp=$hex\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call4b" ; return }
+       timeout { fail "(timeout) continue to call4b" ; return }
+    }
+
+    send "print *unp\n"
+    expect {
+       -re ".* = \{u1 = 1, u2 = 1\}\r\n$prompt $" {}
+       -re "$prompt $" { fail "print *unp" ; return }
+       timeout { fail "(timeout) print *unp" ; return }
+    }
+
+    pass "locate actual args, structs/unions passed by reference"
+}
+
+#
+# Locate actual args; structures and unions passed by value.
+#
+
+proc structs_by_value {} {
+    global prompt
+    global hex
+    global det_file
+
+    delete_breakpoints
+
+    send "break call5a\n" ; expect -re ".*$prompt $"
+    send "break call5b\n" ; expect -re ".*$prompt $"
+
+    # Run; should stop at call5a and print actual arguments.
+    # Try dereferencing the arguments.
+
+    # The a29k fails all of these tests, perhaps because the prologue
+    # code is broken.
+    setup_xfail "a29k-*-udi"
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.* \[(\]+y or n\[)\]+ $" {
+           send "y\n"
+           exp_continue
+       }
+       -re ".* call5a \[(\]+st=\{s1 = 101, s2 = 102\}\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "run to call5a" ; return }
+       timeout { fail "(timeout) run to call5a" ; return }
+    }
+
+    send "print st\n"
+    expect {
+       -re ".* = \{s1 = 101, s2 = 102\}\r\n$prompt $" {}
+       -re "$prompt $" { fail "print st" ; return }
+       timeout { fail "(timeout) print st" ; return }
+    }
+
+    # Continue; should stop at call5b and print actual arguments.
+    # Try dereferencing the arguments.
+
+    send "cont\n"
+    expect {
+       -re ".* call5b \[(\]+un=\{u1 = 2, u2 = 2\}\[)\]+ .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call5b" ; return }
+       timeout { fail "(timeout) continue to call5b" ; return }
+    }
+
+    send "print un\n"
+    expect {
+       -re ".* = \{u1 = 2, u2 = 2\}\r\n$prompt $" {}
+       -re "$prompt $" { fail "print un" ; return }
+       timeout { fail "(timeout) print un" ; return }
+    }
+
+    pass "locate actual args, structs/unions passed by value"
+}
+
+#
+# Locate actual args; discard, shuffle, and call
+#
+
+proc discard_and_shuffle {} {
+    global prompt
+    global hex
+    global decimal
+    global det_file
+
+    delete_breakpoints
+
+    send "break call6a\n" ; expect -re ".*$prompt $"
+    send "break call6b\n" ; expect -re ".*$prompt $"
+    send "break call6c\n" ; expect -re ".*$prompt $"
+    send "break call6d\n" ; expect -re ".*$prompt $"
+    send "break call6e\n" ; expect -re ".*$prompt $"
+    send "break call6f\n" ; expect -re ".*$prompt $"
+    send "break call6g\n" ; expect -re ".*$prompt $"
+    send "break call6h\n" ; expect -re ".*$prompt $"
+    send "break call6i\n" ; expect -re ".*$prompt $"
+    send "break call6j\n" ; expect -re ".*$prompt $"
+    send "break call6k\n" ; expect -re ".*$prompt $"
+
+    # Run; should stop at call6a and print actual arguments.
+    # Print backtrace.
+
+    # The a29k fails all of these tests, perhaps because the prologue
+    # code is broken.
+    setup_xfail "a29k-*-udi"
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.* \[(\]+y or n\[)\]+ $" {
+           send "y\n"
+           exp_continue
+       }
+       -re ".*Breakpoint $decimal, call6a .*$prompt $" {}
+       -re "$prompt $" { fail "run to call6a" ; return }
+       timeout { fail "(timeout) run to call6a" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call6a \[(\]+c=97 'a', s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call6a" ; return }
+       timeout { fail "(timeout) backtrace from call6a" ; return }
+    }
+
+    # Continue; should stop at call6b and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call6b .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call6b" ; return }
+       timeout { fail "(timeout) continue to call6b" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call6b \[(\]+s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6a \[(\]+c=97 'a', s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call6b" ; return }
+       timeout { fail "(timeout) backtrace from call6b" ; return }
+    }
+
+    # Continue; should stop at call6c and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call6c .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call6c" ; return }
+       timeout { fail "(timeout) continue to call6c" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call6c \[(\]+i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6b \[(\]+s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6a \[(\]+c=97 'a', s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call6c" ; return }
+       timeout { fail "(timeout) backtrace from call6c" ; return }
+    }
+
+    # Continue; should stop at call6d and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call6d .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call6d" ; return }
+       timeout { fail "(timeout) continue to call6d" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call6d \[(\]+l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6c \[(\]+i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6b \[(\]+s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6a \[(\]+c=97 'a', s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call6d" ; return }
+       timeout { fail "(timeout) backtrace from call6d" ; return }
+    }
+
+    # Continue; should stop at call6e and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call6e .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call6e" ; return }
+       timeout { fail "(timeout) continue to call6e" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call6e \[(\]+f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6d \[(\]+l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6c \[(\]+i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6b \[(\]+s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6a \[(\]+c=97 'a', s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call6e" ; return }
+       timeout { fail "(timeout) backtrace from call6e" ; return }
+    }
+
+    # Continue; should stop at call6f and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call6f .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call6f" ; return }
+       timeout { fail "(timeout) continue to call6f" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call6f \[(\]+d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6e \[(\]+f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6d \[(\]+l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6c \[(\]+i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6b \[(\]+s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6a \[(\]+c=97 'a', s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call6f" ; return }
+       timeout { fail "(timeout) backtrace from call6f" ; return }
+    }
+
+    # Continue; should stop at call6g and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call6g .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call6g" ; return }
+       timeout { fail "(timeout) continue to call6g" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call6g \[(\]+uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6f \[(\]+d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6e \[(\]+f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6d \[(\]+l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6c \[(\]+i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6b \[(\]+s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6a \[(\]+c=97 'a', s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call6g" ; return }
+       timeout { fail "(timeout) backtrace from call6g" ; return }
+    }
+
+    # Continue; should stop at call6h and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call6h .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call6h" ; return }
+       timeout { fail "(timeout) continue to call6h" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call6h \[(\]+us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6g \[(\]+uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6f \[(\]+d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6e \[(\]+f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6d \[(\]+l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6c \[(\]+i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6b \[(\]+s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6a \[(\]+c=97 'a', s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call6h" ; return }
+       timeout { fail "(timeout) backtrace from call6h" ; return }
+    }
+
+    # Continue; should stop at call6i and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call6i .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call6i" ; return }
+       timeout { fail "(timeout) continue to call6i" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call6i \[(\]+ui=7, ul=8\[)\]+ .*\r
+.* call6h \[(\]+us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6g \[(\]+uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6f \[(\]+d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6e \[(\]+f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6d \[(\]+l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6c \[(\]+i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6b \[(\]+s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6a \[(\]+c=97 'a', s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call6i" ; return }
+       timeout { fail "(timeout) backtrace from call6i" ; return }
+    }
+
+    # Continue; should stop at call6j and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call6j .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call6j" ; return }
+       timeout { fail "(timeout) continue to call6j" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call6j \[(\]+ul=8\[)\]+ .*\r
+.* call6i \[(\]+ui=7, ul=8\[)\]+ .*\r
+.* call6h \[(\]+us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6g \[(\]+uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6f \[(\]+d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6e \[(\]+f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6d \[(\]+l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6c \[(\]+i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6b \[(\]+s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6a \[(\]+c=97 'a', s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call6j" ; return }
+       timeout { fail "(timeout) backtrace from call6j" ; return }
+    }
+
+    # Continue; should stop at call6k and print actual arguments.
+    # Print backtrace.
+    # This fails on i960-*-vxworks because gdb gets confused by
+    # breakpoints on adjacent instructions.
+    setup_xfail "i960-*-vxworks" 1786
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call6k .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call6k"; return }
+       timeout { fail "(timeout) continue to call6k"; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call6k \[(\]+\[)\]+ .*\r
+.* call6j \[(\]+ul=8\[)\]+ .*\r
+.* call6i \[(\]+ui=7, ul=8\[)\]+ .*\r
+.* call6h \[(\]+us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6g \[(\]+uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6f \[(\]+d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6e \[(\]+f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6d \[(\]+l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6c \[(\]+i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6b \[(\]+s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* call6a \[(\]+c=97 'a', s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call6k" ; return }
+       timeout { fail "(timeout) backtrace from call6k" ; return }
+    }
+
+    pass "locate actual args, discard, shuffle, and call"
+}
+
+#
+# Locate actual args; shuffle round robin and call
+#
+
+proc shuffle_round_robin {} {
+    global prompt
+    global hex
+    global decimal
+    global det_file
+
+    delete_breakpoints
+
+    send "break call7a\n" ; expect -re ".*$prompt $"
+    send "break call7b\n" ; expect -re ".*$prompt $"
+    send "break call7c\n" ; expect -re ".*$prompt $"
+    send "break call7d\n" ; expect -re ".*$prompt $"
+    send "break call7e\n" ; expect -re ".*$prompt $"
+    send "break call7f\n" ; expect -re ".*$prompt $"
+    send "break call7g\n" ; expect -re ".*$prompt $"
+    send "break call7h\n" ; expect -re ".*$prompt $"
+    send "break call7i\n" ; expect -re ".*$prompt $"
+    send "break call7j\n" ; expect -re ".*$prompt $"
+    send "break call7k\n" ; expect -re ".*$prompt $"
+
+    # Run; should stop at call7a and print actual arguments.
+    # Print backtrace.
+
+    # The a29k fails all of these tests, perhaps because the prologue
+    # code is broken.
+    setup_xfail "a29k-*-udi"
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.* \[(\]+y or n\[)\]+ $" {
+           send "y\n"
+           exp_continue
+       }
+       -re ".*Breakpoint $decimal, call7a .*$prompt $" {}
+       -re "$prompt $" { fail "run to call7a" ; return }
+       timeout { fail "(timeout) run to call7a" ; return }
+    }
+
+    setup_xfail "i960-*-*" 1813
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call7a \[(\]+c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call7a" ; return }
+       timeout { fail "(timeout) backtrace from call7a" ; return }
+    }
+
+    # Continue; should stop at call7b and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call7b .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call7b" ; return }
+       timeout { fail "(timeout) continue to call7b" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call7b \[(\]+i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a'\[)\]+ .*\r
+.* call7a \[(\]+c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call7b" ; return }
+       timeout { fail "(timeout) backtrace from call7b" ; return }
+    }
+
+    # Continue; should stop at call7c and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call7c .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call7c" ; return }
+       timeout { fail "(timeout) continue to call7c" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call7c \[(\]+s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2\[)\]+ .*\r
+.* call7b \[(\]+i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a'\[)\]+ .*\r
+.* call7a \[(\]+c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call7c" ; return }
+       timeout { fail "(timeout) backtrace from call7c" ; return }
+    }
+
+    # Continue; should stop at call7d and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call7d .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call7d" ; return }
+       timeout { fail "(timeout) continue to call7d" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call7d \[(\]+l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1\[)\]+ .*\r
+.* call7c \[(\]+s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2\[)\]+ .*\r
+.* call7b \[(\]+i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a'\[)\]+ .*\r
+.* call7a \[(\]+c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call7d" ; return }
+       timeout { fail "(timeout) backtrace from call7d" ; return }
+    }
+
+    # Continue; should stop at call7e and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re "Breakpoint $decimal, call7e .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call7e" ; return }
+       timeout { fail "(timeout) continue to call7e" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call7e \[(\]+f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3\[)\]+ .*\r
+.* call7d \[(\]+l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1\[)\]+ .*\r
+.* call7c \[(\]+s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2\[)\]+ .*\r
+.* call7b \[(\]+i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a'\[)\]+ .*\r
+.* call7a \[(\]+c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call7e" ; return }
+       timeout { fail "(timeout) backtrace from call7e" ; return }
+    }
+
+    # Continue; should stop at call7f and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call7f .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call7f" ; return }
+       timeout { fail "(timeout) continue to call7f" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call7f \[(\]+uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4\[)\]+ .*\r
+.* call7e \[(\]+f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3\[)\]+ .*\r
+.* call7d \[(\]+l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1\[)\]+ .*\r
+.* call7c \[(\]+s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2\[)\]+ .*\r
+.* call7b \[(\]+i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a'\[)\]+ .*\r
+.* call7a \[(\]+c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call7f" ; return }
+       timeout { fail "(timeout) backtrace from call7f" ; return }
+    }
+
+    # Continue; should stop at call7g and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call7g .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call7g" ; return }
+       timeout { fail "(timeout) continue to call7g" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call7g \[(\]+d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b'\[)\]+ .*\r
+.* call7f \[(\]+uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4\[)\]+ .*\r
+.* call7e \[(\]+f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3\[)\]+ .*\r
+.* call7d \[(\]+l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1\[)\]+ .*\r
+.* call7c \[(\]+s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2\[)\]+ .*\r
+.* call7b \[(\]+i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a'\[)\]+ .*\r
+.* call7a \[(\]+c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call7g" ; return }
+       timeout { fail "(timeout) backtrace from call7g" ; return }
+    }
+
+    # Continue; should stop at call7h and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call7h .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call7h" ; return }
+       timeout { fail "(timeout) continue to call7h" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call7h \[(\]+us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5\[)\]+ .*\r
+.* call7g \[(\]+d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b'\[)\]+ .*\r
+.* call7f \[(\]+uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4\[)\]+ .*\r
+.* call7e \[(\]+f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3\[)\]+ .*\r
+.* call7d \[(\]+l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1\[)\]+ .*\r
+.* call7c \[(\]+s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2\[)\]+ .*\r
+.* call7b \[(\]+i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a'\[)\]+ .*\r
+.* call7a \[(\]+c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call7h" ; return }
+       timeout { fail "(timeout) backtrace from call7h" ; return }
+    }
+
+    # Continue; should stop at call7i and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call7i .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call7i" ; return }
+       timeout { fail "(timeout) continue to call7i" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call7i \[(\]+ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6\[)\]+ .*\r
+.* call7h \[(\]+us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5\[)\]+ .*\r
+.* call7g \[(\]+d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b'\[)\]+ .*\r
+.* call7f \[(\]+uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4\[)\]+ .*\r
+.* call7e \[(\]+f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3\[)\]+ .*\r
+.* call7d \[(\]+l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1\[)\]+ .*\r
+.* call7c \[(\]+s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2\[)\]+ .*\r
+.* call7b \[(\]+i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a'\[)\]+ .*\r
+.* call7a \[(\]+c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call7i" ; return }
+       timeout { fail "(timeout) backtrace from call7i" ; return }
+    }
+
+    # Continue; should stop at call7j and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call7j .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call7j" ; return }
+       timeout { fail "(timeout) continue to call7j" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call7j \[(\]+ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8\[)\]+ .*\r
+.* call7i \[(\]+ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6\[)\]+ .*\r
+.* call7h \[(\]+us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5\[)\]+ .*\r
+.* call7g \[(\]+d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b'\[)\]+ .*\r
+.* call7f \[(\]+uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4\[)\]+ .*\r
+.* call7e \[(\]+f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3\[)\]+ .*\r
+.* call7d \[(\]+l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1\[)\]+ .*\r
+.* call7c \[(\]+s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2\[)\]+ .*\r
+.* call7b \[(\]+i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a'\[)\]+ .*\r
+.* call7a \[(\]+c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call7j" ; return }
+       timeout { fail "(timeout) backtrace from call7j" ; return }
+    }
+
+    # Continue; should stop at call7k and print actual arguments.
+    # Print backtrace.
+
+    send "continue\n"
+    expect {
+       -re ".*Breakpoint $decimal, call7k .*$prompt $" {}
+       -re "$prompt $" { fail "continue to call7k" ; return }
+       timeout { fail "(timeout) continue to call7k" ; return }
+    }
+
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* call7k \[(\]+c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7\[)\]+ .*\r
+.* call7j \[(\]+ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8\[)\]+ .*\r
+.* call7i \[(\]+ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6\[)\]+ .*\r
+.* call7h \[(\]+us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5\[)\]+ .*\r
+.* call7g \[(\]+d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b'\[)\]+ .*\r
+.* call7f \[(\]+uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3, f=4\[)\]+ .*\r
+.* call7e \[(\]+f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1, l=3\[)\]+ .*\r
+.* call7d \[(\]+l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2, s=1\[)\]+ .*\r
+.* call7c \[(\]+s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a', i=2\[)\]+ .*\r
+.* call7b \[(\]+i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7, c=97 'a'\[)\]+ .*\r
+.* call7a \[(\]+c=97 'a', i=2, s=1, l=3, f=4, uc=98 'b', d=5, us=6, ul=8, ui=7\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "backtrace from call7k" ; return }
+       timeout { fail "(timeout) backtrace from call7k" ; return }
+    }
+
+    pass "locate actual args, shuffle round robin and call"
+}
+
+#
+# Locate actual args; recursive passing of structs by value
+#
+
+proc recursive_structs_by_value {} {
+    global prompt
+    global hex
+    global decimal
+    global det_file
+
+    delete_breakpoints
+
+    send "break hitbottom\n" ; expect -re ".*$prompt $"
+
+    # Run; should stop at hitbottom and print actual arguments.
+    # Print backtrace.
+
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.* \[(\]+y or n\[)\]+ $" {
+           send "y\n"
+           exp_continue
+       }
+       -re ".*Breakpoint $decimal, hitbottom .*$prompt $" {}
+       -re "$prompt $" { fail "run to hitbottom" ; return }
+       timeout { fail "(timeout) run to hitbottom" ; return }
+    }
+
+    # The a29k fails all of these tests, perhaps because the prologue
+    # code is broken.
+    setup_xfail "a29k-*-udi"
+    send "backtrace 100\n"
+    expect {
+       -re "backtrace 100\r
+.* hitbottom \[(\]+\[)\]+ .*\r
+.* recurse \[(\]+a=\{s = 0, i = 0, l = 0\}, depth=0\[)\]+ .*\r
+.* recurse \[(\]+a=\{s = 1, i = 1, l = 1\}, depth=1\[)\]+ .*\r
+.* recurse \[(\]+a=\{s = 2, i = 2, l = 2\}, depth=2\[)\]+ .*\r
+.* recurse \[(\]+a=\{s = 3, i = 3, l = 3\}, depth=3\[)\]+ .*\r
+.* recurse \[(\]+a=\{s = 4, i = 4, l = 4\}, depth=4\[)\]+ .*\r
+.* test_struct_args \[(\]+\[)\]+ .*\r
+.* main \[(\]+.*\[)\]+ .*\r
+$prompt $" {}
+       -re "$prompt $" { fail "recursive passing of structs by value" ; return }
+       timeout { fail "(timeout) recursive passing of structs by value" ; return }
+    }
+
+    pass "locate actual args, recursive structs by value"
+}
+
+proc funcargs_reload { } {
+    global objdir
+    global subdir
+    global binfile
+    global srcdir
+
+    if [istarget "a29k-*-udi"] then {
+       # FIXME: If PR 2415 is fixed, this is not needed.
+       gdb_target_udi
+       gdb_load $objdir/$subdir/$binfile
+    }
+    if [istarget "mips-idt-*"] then {
+       # Restart because IDT/SIM runs out of file descriptors.
+       gdb_exit
+       gdb_start
+       gdb_reinitialize_dir $srcdir/$subdir
+       gdb_load $objdir/$subdir/$binfile
+    }
+}
+
+#
+# Test for accessing local stack variables in functions which call alloca
+#
+proc localvars_after_alloca { } {
+    global prompt
+    global hex
+    global decimal
+
+    if { ! [ runto localvars_after_alloca ] } then { return 0 }
+
+    # Print each arg as a double check to see if we can print
+    # them here as well as with backtrace.
+
+    gdb_test "print c" " = 97 'a'"
+    gdb_test "print s" " = 1"
+    gdb_test "print i" " = 2"
+    gdb_test "print l" " = 3"
+
+    send "next\n"
+    expect {
+       -re ".*$prompt $" {}
+       timeout { fail "next in localvars_after_alloca()" ; return }
+    }
+
+    # Print each arg as a double check to see if we can print
+    # them here as well as with backtrace.
+
+    gdb_test "print c" " = 97 'a'"
+    gdb_test "print s" " = 1"
+    gdb_test "print i" " = 2"
+    gdb_test "print l" " = 3"
+
+    gdb_test "backtrace 8" "#0.*localvars_after_alloca \[(\]+c=97 'a', s=1, i=2, l=3\[)\]+.*#1.*main" "backtrace after alloca"
+}
+
+#
+# Test for accessing local stack variables, backtraces, finish,
+# and finally stepping into indirect calls.  The point is that on the PA
+# these use a funky `dyncall' mechanism which GDB needs to know about.
+#
+proc localvars_in_indirect_call { } {
+    global prompt
+    global hex
+    global decimal
+
+    # Can not use "runto call0a" as call0a is called several times
+    # during single run.  Instead stop in a marker function and
+    # take control from there.
+    if { ! [ runto marker_indirect_call ] } then { return 0 }
+
+    # break on the next call to call0a, then delete all the breakpoints
+    # and start testing.
+    gdb_test "break call0a" "Breakpoint .*"
+    gdb_test "continue" "call0a .*"
+    delete_breakpoints
+    
+    # Print each arg as a double check to see if we can print
+    # them here as well as with backtrace.
+
+    gdb_test "print c" " = 97 'a'"
+    gdb_test "print s" " = 1"
+    gdb_test "print i" " = 2"
+    gdb_test "print l" " = 3"
+
+    gdb_test "backtrace 8" "#0.*call0a \[(\]+c=97 'a', s=1, i=2, l=3\[)\]+.*#1.*main" "backtrace in indirectly called function"
+
+    # 
+    # "finish" brings us back to main.  We then will try to step through
+    # the second indirect call.  
+    # On some targets (e.g. m68k) gdb will stop from the finish in midline
+    # of the first indirect call. This is due to stack adjustment instructions
+    # after the indirect call. In these cases we will step till we hit the
+    # second indirect call.
+    #
+
+    send "finish\n"
+    expect {
+       -re "\[(\]+\[*\]+pointer_to_call0a\[)\]+ \[(\]+c, s, i, l\[)\]+;.*First.*$prompt $" {
+           send "step\n"
+           exp_continue
+       }
+       -re "\[(\]+\[*\]+pointer_to_call0a\[)\]+ \[(\]+c, s, i, l\[)\]+;.*Second.*$prompt $" {
+           pass "finish from indirectly called function"
+       }
+       default { fail "finish from indirectly called function" ; return }
+    }
+
+    gdb_test "step" "call0a \[(\]+c=97 'a', s=1, i=2, l=3\[)\]+" \
+       "stepping into indirectly called function"
+}
+
+# Start with a fresh gdb.
+#
+# Test for stepping into indirect calls which may have trampolines (possibly
+# cascaded) on both the call path and the return path.
+# to handle trampolines.
+#
+proc test_stepping_over_trampolines { } {
+    global prompt
+    global hex
+    global decimal
+
+    # Stop in a marker function and take control from there.
+    if { ! [ runto marker_call_with_trampolines ] } then { return 0 }
+
+    # Cater for gdb stopping in midline, see comment for finish above.
+    send "finish\n"
+    expect {
+       -re "marker_call_with_trampolines ..;.*$prompt $" {
+           send "step\n"
+           exp_continue
+       }
+       -re "pointer_to_call_with_trampolines.*$prompt $" {
+           pass "finish from marker_call_with_trampolines"
+       }
+       -re ".*$prompt $" {
+           fail "finish from marker_call_with_trampolines"
+       }
+       default { fail "finish from marker_call_with_trampolines" ; return 0 }
+    }
+
+    # Try to step into the target function.
+    gdb_test "step" "call_with_trampolines \[(\]+d1=5\[)\]+" \
+       "stepping into function called with trampolines"
+
+    # Make we can backtrace and the argument looks correct.  */
+    gdb_test "backtrace 8" "#0.*call_with_trampolines \[(\]+d1=5\[)\]+.*1.*main" "backtrace through call with trampolines"
+
+    # Make sure we can get back to main.
+    # Stepping back to main might stop again after the return statement
+    # or immediately transfer control back to main if optimizations
+    # are performed.
+    send "step\n"
+    expect {
+       -re "main .* at.*$prompt $" {
+           pass "stepping back to main from function called with trampolines" ;
+           return 1
+       }
+       -re "\}.*End of call_with_trampolines.*$prompt $" {
+           send "step\n"
+           exp_continue
+       }
+       -re ".*$prompt $" {
+           fail "stepping back to main from function called with trampolines"
+       }
+       default { fail "stepping back to main from function called with trampolines" ; return 0 }
+    }
+}
+
+# Start with a fresh gdb.
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $objdir/$subdir/$binfile
+
+set oldtimeout $timeout
+set timeout 120
+
+integral_args
+funcargs_reload
+unsigned_integral_args
+funcargs_reload
+float_and_integral_args
+funcargs_reload
+pointer_args
+funcargs_reload
+structs_by_reference
+funcargs_reload
+structs_by_value
+funcargs_reload
+discard_and_shuffle
+funcargs_reload
+shuffle_round_robin
+funcargs_reload
+recursive_structs_by_value
+funcargs_reload
+localvars_after_alloca
+funcargs_reload
+localvars_in_indirect_call
+funcargs_reload
+test_stepping_over_trampolines
+
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+}
+
+catch "set timeout $oldtimeout"
diff --git a/gdb/testsuite/gdb.base/hppa.mt b/gdb/testsuite/gdb.base/hppa.mt
new file mode 100644 (file)
index 0000000..24232b2
--- /dev/null
@@ -0,0 +1,3 @@
+# Force static linking for nodebug
+LDFLAGS= -Wl,-a,archive
+
diff --git a/gdb/testsuite/gdb.base/i486-elf.u b/gdb/testsuite/gdb.base/i486-elf.u
new file mode 100644 (file)
index 0000000..882338b
--- /dev/null
@@ -0,0 +1,287 @@
+begin 777 i486-elf
+M?T5,1@$! 0            (  P !    W(($"#0   !\+@       #0 (  %
+M "@ %0 1  8    T    -( $"     "@    H     4          P   -0 
+M             !,         !          !    -    #2 ! @     * 8 
+M "@&   %     !    $   !<!@  7)8$"     "4    2 (   <     $   
+M @   ( &  " E@0(     '          !P         O=7-R+VQI8B]L:6)C
+M+G-O+C$   ,    ,    !@    L    *               !          ( 
+M   $          4    #    "     D    '                        
+M  $   "<@@0('    !(    *    I)@$"      1 /'_#P   &"6! @$    
+M$0 + !@   !<A@0(     !$ \?\?    K(($"$     2    )@   /"6! @ 
+M    $0#Q_RT   #,@@0(     !(    R    /(8$" 0    1  H /P   +R"
+M! @     $@   $D   !DE@0(     !$ \?]?    @)8$"      1 /'_ %]C
+M;&5A;G5P %]E;F0 7V5N=FER;VX 7V5T97AT &%T97AI= !?961A=&$ 97AI
+M= !?;&EB7W9E<G-I;VX 7U]F<'-T87)T %]'3$]"04Q?3T9&4T547U1!0DQ%
+M7P!?1%E.04U)0P O=7-R+VQI8B]L:6)C+G-O+C$  '"6! @' 0  =)8$" <%
+M  !XE@0(!PD  'R6! @'!P  PP   /\U:)8$"/\E;)8$"     #_)7"6! AH
+M     .G@_____R5TE@0(: @   #IT/____\E>)8$"&@0    Z<#_____)7R6
+M! AH&    .FP____:@!J (OL4KB<@@0(A<!T#6B<@@0(Z+;___^#Q 2X@)8$
+M"(7 = 7HI?___V@XA@0(Z)O___^+10B-5(40B15@E@0(4HU5#%)0Z%_____H
+MCO___^@! 0  @\0,4.B0____:@"X 0   )H     !P#TP^L&,\#K ,G#58OL
+MZ_60D)#K!C/ ZP#)PU6+[.OUD)"0ZP8SP.L R<-5B^SK]9"0D.L&,\#K ,G#
+M58OLZ_60D)#K!C/ ZP#)PU6+[.OUD)"0ZP8SP.L R<-5B^SK]9"0D.L&,\#K
+M ,G#58OLZ_60D)#K!C/ ZP#)PU6+[.OUD)"0ZP8SP.L R<-5B^SK]9"0D.L&
+M,\#K ,G#58OLZ_60D)#K!C/ ZP#)PU6+[.OUD)"0ZP8SP.L R<-5B^SK]9"0
+MD.L*W05 A@0(ZP#)PU6+[.OQD)"0ZPK=!4B&! CK ,G#58OLZ_&0D)#I\P$ 
+M )#&!?B7! @ Q@5TEP0( <8%.I<$" )FQP5LEP0( P!FQP5<EP0(! !FQP4$
+MEP0(!0#'!1"7! @&    QP7PE@0(!P   ,<%])8$" @   #'!6B7! @)    
+MQP7\E@0("@   ,<%>)<$" L   "A4(8$"*,\EP0(H5B&! BC#)<$"*%4A@0(
+MHPB7! B@^)<$"*+4EP0(H'27! BB.)<$"* ZEP0(HOB6! AFH6R7! AFHWR7
+M! AFH5R7! AFHTB7! AFH027! AFHX"7! BA$)<$"*,<EP0(H?"6! BCC)<$
+M"*'TE@0(HU"7! BA:)<$"*/PEP0(H?R6! BC0)<$"*%XEP0(HV"7! BA/)<$
+M"*/@EP0(H0R7! BC+)<$"*$(EP0(HRB7! C'!827! CXEP0(QP7LEP0(=)<$
+M",<%B)<$"#J7! C'!>B7! ALEP0(QP6<EP0(7)<$",<% )<$" 27! C'!4R7
+M! @0EP0(QP64EP0(\)8$",<%6)<$"/26! C'!7"7! AHEP0(QP7<EP0(_)8$
+M",<%&)<$"'B7! C'!=B7! @\EP0(QP6@EP0(")<$",<%))<$" (   #'!127
+M! @"    QP60F 0( 0   ,<%_)<$" $   "AF)<$"*, F 0(9J&<F 0(9J.4
+MF 0(R<-5B^SI!O[__Y    ##                                 ,A"
+M        :4           ("6! @          **"! BR@@0(PH($"-*"! @!
+M    :     P   "(@@0(#0   #B&! @$    Z( $" 4   #L@00(!@   "R!
+M! @*    >P    L    0    %0         #    9)8$" (    @    %   
+M !$    7    :(($"                                 $         
+M      0 \?\     U( $"      #  $      .B ! @      P "       L
+M@00(      ,  P      [($$"      #  0      &B"! @      P %    
+M  "(@@0(      , !@      C(($"      #  <      -R"! @      P (
+M       XA@0(      , "0      /(8$"      #  H      %R6! @     
+M P +      !DE@0(      , #       @)8$"      #  T      /"6! @ 
+M     P .                  , #P                 # !          
+M         P 1                  , $@                 # !,     
+M             P 4  H               0 \?\1               $ /'_
+M&               ! #Q_R0               0 \?\L               $
+M /'_-@              ! #Q_ST   !,@P0(#0   !( " !)    \)8$" 0 
+M   1  X 5@   /26! @$    $0 . &4    XA@0(     !( "0!K    ^)8$
+M" (    1  X @0   #2$! @! @  $@ ( (8   #\E@0(!    !$ #@"4    
+M )<$" 0    1  X K0   )R"! @<    $@   +8   "DF 0(     !$ \?^[
+M    !)<$" (    1  X S    )R#! @-    $@ ( .(    (EP0("    !$ 
+M#@#K    $)<$" 0    1  X \0   -R"! @     $@ ( /@    4EP0(!   
+M !$ #@ # 0  8)8$" 0    1  L # $  !B7! @$    $0 . "0!   <EP0(
+M"    !$ #@ P 0  ))<$" 0    1  X . $  %R#! @-    $@ ( $L!   H
+MEP0($    !$ #@!: 0  7(8$"      1 /'_80$  #B7! @"    $0 . '4!
+M   ZEP0( 0   !$ #@"% 0  /)<$" 0    1  X C0$  $"7! @(    $0 .
+M *$!  "L@@0(0    !(   "H 0  8)8$" 0    A  L L $  -R#! @-    
+M$@ ( +P!  #\@P0(#0   !( " #1 0  2)<$" 0    1  X Y@$  $R7! @$
+M    $0 . /0!  #PE@0(     !$ \?_[ 0  ?(,$" T    2  @ " (  %"7
+M! @(    $0 . !T"  !8EP0(!    !$ #@ T @  K(,$" T    2  @ /P( 
+M %R7! @"    $0 . $X"   ,A 0($0   !( " !; @  S(($"      2    
+M8 (  &"7! @(    $0 . '8"  !HEP0(!    !$ #@!] @  ;)<$" (    1
+M  X A0(  '"7! @$    $0 . )0"  !TEP0( 0   !$ #@"B @  >)<$" 0 
+M   1  X L@(  'R7! @$    $0 . , "  " EP0(!    !$ #@#7 @  /(8$
+M" 0    1  H Y (  $N#! @     $@ ( .P"  "$EP0(!    !$ #@#[ @  
+MB)<$" 0    1  X $P,  (R7! @(    $0 . "8#  "\@@0(     !(    P
+M P  E)<$" 0    1  X 10,  )B7! @$    $0 . $P#  !DE@0(     !$ 
+M\?]B P  G)<$" 0    1  X >0,  *"7! @$    $0 . (H#  !<E@0(!   
+M !$ "P"< P  I)<$"!@    1  X I@,  +R7! @8    $0 . + #  #4EP0(
+M @   !$ #@"] P  V)<$" 0    1  X S0,  -R7! @$    $0 . .,#   @
+MA 0($0   !( " #Q P  O(,$" T    2  @  P0  ("6! @     $0#Q_PP$
+M  #@EP0("    !$ #@ :!   Z)<$" 0    1  X *@0  .R#! @-    $@ (
+M #T$  #LEP0(!    !$ #@!3!   \)<$" @    1  X 8 0  (B"! @     
+M$@ & &8$  #XEP0( 0   !$ #@!M!   _)<$" 0    1  X =00  &R#! @-
+M    $@ ( (H$    F 0(D    !$ #@"1!   C(,$" T    2  @ I00  )"8
+M! @$    $0 . *\$  "4F 0("    !$ #@"X!   S(,$" T    2  @ S 0 
+M )R8! @(    $0 .  !I-#@V+F5L9@!C<G0Q+G, 8W)T:2YS '9A;'5E<RU8
+M="YC &=D8FUE+F, <VA?9&%T82YC &-R=&XN<P!V7V-H87)?9G5N8P!V7W-I
+M9VYE9%]I;G0 =E]U;G-I9VYE9%]I;G0 7V9I;FD =E]U;G-I9VYE9%]C:&%R
+M7V%R<F%Y &UA:6X =E]S:6=N961?;&]N9P!V7W5N<VEG;F5D7W-H;W)T7W!O
+M:6YT97( 7V-L96%N=7  7V5N9 !V7W5N<VEG;F5D7W-H;W)T '9?=6YS:6=N
+M961?<VAO<G1?9G5N8P!V7V1O=6)L90!V7VEN= !?<W1A<G0 ;F]N<')I;6%R
+M>0!?96YV:7)O;@!V7W5N<VEG;F5D7VQO;F=?<&]I;G1E<@!V7VEN=%]A<G)A
+M>0!P<FEM87)Y '9?<VEG;F5D7V-H87)?9G5N8P!V7V1O=6)L95]A<G)A>0!?
+M971E>'0 =E]S:6=N961?8VAA<E]A<G)A>0!V7W5N<VEG;F5D7V-H87( =E]F
+M;&]A= !V7W-I9VYE9%]L;VYG7V%R<F%Y &%T97AI= !E;G9I<F]N '9?;&]N
+M9U]F=6YC '9?=6YS:6=N961?;&]N9U]F=6YC '9?<VEG;F5D7W-H;W)T7V%R
+M<F%Y '9?:6YT7W!O:6YT97( 7V5D871A '9?<VAO<G1?9G5N8P!V7W5N<VEG
+M;F5D7VEN=%]A<G)A>0!V7W5N<VEG;F5D7VEN=%]P;VEN=&5R '9?:6YT7V9U
+M;F, =E]S:6=N961?<VAO<G0 =E]F;&]A=%]F=6YC &5X:70 =E]U;G-I9VYE
+M9%]L;VYG7V%R<F%Y '9?;&]N9P!V7W-H;W)T '9?;&]N9U]P;VEN=&5R '9?
+M<VEG;F5D7V-H87( =E]U;G-I9VYE9%]L;VYG '9?<VAO<G1?87)R87D =E]U
+M;G-I9VYE9%]S:&]R=%]A<G)A>0!?;&EB7W9E<G-I;VX 7VUC;W5N= !V7V-H
+M87)?<&]I;G1E<@!V7W5N<VEG;F5D7V-H87)?<&]I;G1E<@!V7W-I9VYE9%]I
+M;G1?87)R87D 7U]F<'-T87)T '9?<VEG;F5D7VEN=%]P;VEN=&5R '-?;&EN
+M:P!?1TQ/0D%,7T]&1E-%5%]404),15\ =E]S:6=N961?<VAO<G1?<&]I;G1E
+M<@!V7V1O=6)L95]P;VEN=&5R %]?;&]N9V1O=6)L95]U<V5D '9?<W1R=6-T
+M,0!V7W-T<G5C=#( =E]C:&%R7V%R<F%Y '9?9FQO871?<&]I;G1E<@!V7W-I
+M9VYE9%]L;VYG7W!O:6YT97( =E]D;W5B;&5?9G5N8P!V7W-I9VYE9%]I;G1?
+M9G5N8P!?1%E.04U)0P!V7V9L;V%T7V%R<F%Y '9?<VAO<G1?<&]I;G1E<@!V
+M7W-I9VYE9%]L;VYG7V9U;F, =E]S:6=N961?8VAA<E]P;VEN=&5R '9?;&]N
+M9U]A<G)A>0!?:6YI= !V7V-H87( 8VQU;FME<@!V7W5N<VEG;F5D7V-H87)?
+M9G5N8P!U7VQI;FL =E]S:6=N961?<VAO<G1?9G5N8P!S<&]R='-C87( =E]U
+M;FEO;C( =E]U;G-I9VYE9%]I;G1?9G5N8P!V7W5N:6]N   N:6YT97)P "YH
+M87-H "YD>6YS>6T +F1Y;G-T<@ N<F5L+G!L=  N:6YI=  N<&QT "YT97AT
+M "YF:6YI "YR;V1A=&$ +F1A=&$ +F=O=  N9'EN86UI8P N8G-S "YS>6UT
+M86( +G-T<G1A8@ N<VAS=')T86( +F-O;6UE;G0 +F1E8G5G "YL:6YE $ H
+M(REL:6)C+6DS.#8Z;&EB8RUI,S@V+V-S=2]C<G0Q+G,),2XQ. !A<SH@*%-#
+M1$4I(#4N," @,#0O,3DO.3  0"@C*6QI8F,M:3,X-CIC<W4O8W)T:2YS"3$N
+M,@!A<SH@*%-#1$4I(#4N," @,#0O,3DO.3  0"@C*6QI8F,M<&]R=#IG96XO
+M=F%L=65S+5AT+F,),2XS $ H(REL:6)C.FEN8R]S>6YO;GEM<RYH"3$N,S, 
+M0"@C*6AE860Z;6%T:"YH"3(N,3$N,2XR-P!A8V]M<#H@*%-#1$4I(#4N," @
+M,#0O,3DO.3  ;W!T:6TZ("A30T1%*2 U+C @(# T+S$Y+SDP &%S.B H4T-$
+M12D@-2XP(" P-"\Q.2\Y, !A8V]M<#H@*%-#1$4I(#4N," @,#0O,3DO.3  
+M87,Z("A30T1%*2 U+C @(# T+S$Y+SDP $ H(REL:6)C+6DS.#8Z9V5N+W-H
+M7V1A=&$N8PDQ+C, 86-O;7 Z("A30T1%*2 U+C @(# T+S$Y+SDP &]P=&EM
+M.B H4T-$12D@-2XP(" P-"\Q.2\Y, !A<SH@*%-#1$4I(#4N," @,#0O,3DO
+M.3  0"@C*6QI8F,M:3,X-CIL:6)C+6DS.#8O8W-U+V-R=&XN<PDQ+C4 87,Z
+M("A30T1%*2 U+C @(# T+S$Y+SDP "!L9" Z("A30T1%*2 U+C @(# T+S$Y
+M+SDP    +@   !$ $@!P%@  . !G9&)M92YC #8! 0   !$!3(,$""$!-88$
+M" 8!     !T    3 !( 3@$  #@ =%]S=')U8W0 M@ 8    *@    T $@!U
+M    . !V7V-H87)?;65M8F5R %4  0 C  8 !      '*P    T $@"@    
+M. !V7W-H;W)T7VUE;6)E<@!5  0 (P &  0"    !RD    - !( R0   #@ 
+M=E]I;G1?;65M8F5R %4 !P C  8 ! 0    '*@    T $@#S    . !V7VQO
+M;F=?;65M8F5R %4 "@ C  8 ! @    '*P    T $@ > 0  . !V7V9L;V%T
+M7VUE;6)E<@!5  X (P &  0,    !RP    - !( 2@$  #@ =E]D;W5B;&5?
+M;65M8F5R %4 #P C  8 !!     '!    !L    3 !( ; (  #@ +C!F86ME
+M +8 &    "H    - !( DP$  #@ =E]C:&%R7VUE;6)E<@!5  $ (P &  0 
+M    !RL    - !( O@$  #@ =E]S:&]R=%]M96UB97( 50 $ ", !@ $ @  
+M  <I    #0 2 .<!   X '9?:6YT7VUE;6)E<@!5  < (P &  0$    !RH 
+M   - !( $0(  #@ =E]L;VYG7VUE;6)E<@!5  H (P &  0(    !RL    -
+M !( / (  #@ =E]F;&]A=%]M96UB97( 50 . ", !@ $#     <L    #0 2
+M &@"   X '9?9&]U8FQE7VUE;6)E<@!5  \ (P &  00    !P0    <    
+M%P 2 (L#   X '1?=6YI;VX M@ (    *@    T $@"R @  . !V7V-H87)?
+M;65M8F5R %4  0 C  8 !      '*P    T $@#= @  . !V7W-H;W)T7VUE
+M;6)E<@!5  0 (P &  0     !RD    - !( !@,  #@ =E]I;G1?;65M8F5R
+M %4 !P C  8 !      '*@    T $@ P P  . !V7VQO;F=?;65M8F5R %4 
+M"@ C  8 !      '*P    T $@!; P  . !V7V9L;V%T7VUE;6)E<@!5  X 
+M(P &  0     !RP    - !( AP,  #@ =E]D;W5B;&5?;65M8F5R %4 #P C
+M  8 !      '!    !L    7 !( J00  #@ +C%F86ME +8 "    "H    -
+M !( T ,  #@ =E]C:&%R7VUE;6)E<@!5  $ (P &  0     !RL    - !( 
+M^P,  #@ =E]S:&]R=%]M96UB97( 50 $ ", !@ $      <I    #0 2 "0$
+M   X '9?:6YT7VUE;6)E<@!5  < (P &  0     !RH    - !( 3@0  #@ 
+M=E]L;VYG7VUE;6)E<@!5  H (P &  0     !RL    - !( >00  #@ =E]F
+M;&]A=%]M96UB97( 50 . ", !@ $      <L    #0 2 *4$   X '9?9&]U
+M8FQE7VUE;6)E<@!5  \ (P &  0     !P0    J    !@ 2 -<$   X '9?
+M8VAA<E]F=6YC %4  0 1 4R#! @A 5F#! @$    ,0    8 $@ ,!0  . !V
+M7W-I9VYE9%]C:&%R7V9U;F, 50 " !$!7(,$""$!:8,$" 0    S    !@ 2
+M $,%   X '9?=6YS:6=N961?8VAA<E]F=6YC %4  P 1 6R#! @A 7F#! @$
+M    *P    8 $@!R!0  . !V7W-H;W)T7V9U;F, 50 $ !$!?(,$""$!B8,$
+M" 0    R    !@ 2 *@%   X '9?<VEG;F5D7W-H;W)T7V9U;F, 50 % !$!
+MC(,$""$!F8,$" 0    T    !@ 2 . %   X '9?=6YS:6=N961?<VAO<G1?
+M9G5N8P!5  8 $0&<@P0((0&I@P0(!    "D    & !( #08  #@ =E]I;G1?
+M9G5N8P!5  < $0&L@P0((0&Y@P0(!    #     & !( 008  #@ =E]S:6=N
+M961?:6YT7V9U;F, 50 ( !$!O(,$""$!R8,$" 0    R    !@ 2 '<&   X
+M '9?=6YS:6=N961?:6YT7V9U;F, 50 ) !$!S(,$""$!V8,$" 0    J    
+M!@ 2 *4&   X '9?;&]N9U]F=6YC %4 "@ 1 =R#! @A >F#! @$    ,0  
+M  8 $@#:!@  . !V7W-I9VYE9%]L;VYG7V9U;F, 50 + !$![(,$""$!^8,$
+M" 0    S    !@ 2 !$'   X '9?=6YS:6=N961?;&]N9U]F=6YC %4 #  1
+M ?R#! @A 0F$! @$    *P    8 $@! !P  . !V7V9L;V%T7V9U;F, 50 .
+M !$!#(0$""$!'80$" 0    L    !@ 2 ' '   X '9?9&]U8FQE7V9U;F, 
+M50 / !$!((0$""$!,80$" 0    5    %0 2 *X'  "#  4  >H'   5    
+M!0 2 )H'  "#  4  >H'   0    !0 2 *H'  !5  < !    #P    ! !( 
+MZ@<  )4   "C "@   @             "        0     (       "    
+M"'( +@   !D    3 !( >P@  #@ ;&EN:P"V )@    F    #0 2 "D(   X
+M &YE>'0 @P %  'J!P  (P &  0     !RH    - !( 4P@  #@ ;&EN:V9U
+M;F, @P %  %P!P  (P &  0$    !R0    - !( =P@  #@ <W1U9F8 <@"N
+M!P  (P &  0(    !P0    5    %0 2 +D(  "#  4  >H'   5    !0 2
+M *4(  "#  4  >H'   0    !0 2 +4(  !5  < !    #P    ! !( ]0@ 
+M )4   "C "@   @             "        0     (       "    "'( 
+M+@   !P    7 !( B0D  #@ ='5?;&EN:P"V )     F    #0 2 #<)   X
+M &YE>'0 @P %  'J!P  (P &  0     !RH    - !( 80D  #@ ;&EN:V9U
+M;F, @P %  %["   (P &  0     !R0    - !( A0D  #@ <W1U9F8 <@"Y
+M"   (P &  0     !P0    Z    !  2 ,<)   X "XR9F%K90"V  0   #S
+M !L  @   &)L=64  0   &=R965N      !R960 !    #X    $ !( "0H 
+M #@ 8V]L;W)S +8 !    /, 'P "    <&EN:P !    <'5R<&QE      !Y
+M96QL;W< !    #(    $ !( /PH  #@ +C-F86ME +8 !    /, $P !    
+M9F]R9       8VAE=GD !    #$    $ !( = H  #@ 8V%R<P"V  0   #S
+M !0  0   '!O<G-C:&4      &)M=P $    ,@    0 $@"J"@  .  N-&9A
+M:V4 M@ $    \P 3  $   !44E5%      !&04Q310 $    '    !8 $@#&
+M"@  . !B;V]L96%N '( = H  #$    $ !( ^PH  #@ 8G9A;', M@ $    
+M\P 3  $   !T<G5E      !F86QS90 $    '0   !8 $@ 8"P  . !B;V]L
+M96%N,@!R ,8*  !&    !  2 &(+   X &UI<V]R9&5R960 M@ $    \P C
+M  ,   !T:')E90      >F5R;P !    ;VYE  (   !T=V\ !    ",    &
+M !( B0L  #@ ;6%I;@!5  < $0$TA 0((0$UA@0(!    "<    ' !( L L 
+M #@ <W!O<G1S8V%R '( /PH  ", !0 #D)@$""4    ' !( U0L  #@ 8VQU
+M;FME<@!R  D*   C  4  _R7! @H    !P 2 /T+   X &YO;G!R:6UA<GD 
+M<@#'"0  (P %  ,4EP0()0    < $@ B#   . !P<FEM87)Y '( B0D  ", 
+M!0 #))<$""0    ' !( 1@P  #@ =5]L:6YK '( ]0@  ", !0 # )@$""< 
+M   ' !( ;0P  #@ <U]L:6YK (, !0 !Z@<  ", !0 #F)<$""8    ' !( 
+MDPP  #@ =E]U;FEO;C( <@"+ P  (P %  .4F 0()0    < $@"X#   . !V
+M7W5N:6]N '( ; (  ", !0 #G)@$""<    ' !( WPP  #@ =E]S=')U8W0R
+M '( 3@$  ", !0 #O)<$""<    ' !( !@T  #@ =E]S=')U8W0Q '( +@  
+M ", !0 #I)<$""\    ' !( -0T  #@ =E]D;W5B;&5?<&]I;G1E<@!C  , 
+M 0\ (P %  .@EP0(+@    < $@!C#0  . !V7V9L;V%T7W!O:6YT97( 8P #
+M  $. ", !0 #V)<$"#8    ' !( F0T  #@ =E]U;G-I9VYE9%]L;VYG7W!O
+M:6YT97( 8P #  $, ", !0 #&)<$"#0    ' !( S0T  #@ =E]S:6=N961?
+M;&]N9U]P;VEN=&5R &,  P !"P C  4  ]R7! @M    !P 2 /H-   X '9?
+M;&]N9U]P;VEN=&5R &,  P !"@ C  4  W"7! @U    !P 2 "\.   X '9?
+M=6YS:6=N961?:6YT7W!O:6YT97( 8P #  $) ", !0 #6)<$"#,    ' !( 
+M8@X  #@ =E]S:6=N961?:6YT7W!O:6YT97( 8P #  $( ", !0 #E)<$""P 
+M   ' !( C@X  #@ =E]I;G1?<&]I;G1E<@!C  ,  0< (P %  -,EP0(-P  
+M  < $@#%#@  . !V7W5N<VEG;F5D7W-H;W)T7W!O:6YT97( 8P #  $& ", 
+M!0 # )<$"#4    ' !( ^@X  #@ =E]S:6=N961?<VAO<G1?<&]I;G1E<@!C
+M  ,  04 (P %  .<EP0(+@    < $@ H#P  . !V7W-H;W)T7W!O:6YT97( 
+M8P #  $$ ", !0 #Z)<$"#8    ' !( 7@\  #@ =E]U;G-I9VYE9%]C:&%R
+M7W!O:6YT97( 8P #  $# ", !0 #B)<$"#0    ' !( D@\  #@ =E]S:6=N
+M961?8VAA<E]P;VEN=&5R &,  P ! @ C  4  ^R7! @M    !P 2 +\/   X
+M '9?8VAA<E]P;VEN=&5R &,  P ! 0 C  4  X27! @D     0 2 .,/  "5
+M    HP 0   (       !    "%4 #P L    !P 2  \0   X '9?9&]U8FQE
+M7V%R<F%Y '( OP\  ", !0 #*)<$""0    ! !( ,Q   )4   "C !    @ 
+M      $    (50 . "L    ' !( 7A   #@ =E]F;&]A=%]A<G)A>0!R  \0
+M   C  4  ^"7! @D     0 2 ((0  "5    HP 0   (       !    "%4 
+M#  S    !P 2 +40   X '9?=6YS:6=N961?;&]N9U]A<G)A>0!R %X0   C
+M  4  V"7! @D     0 2 -D0  "5    HP 0   (       !    "%4 "P Q
+M    !P 2  H1   X '9?<VEG;F5D7VQO;F=?87)R87D <@"U$   (P %  - 
+MEP0()     $ $@ N$0  E0   *, $   "        0    A5  H *@    < 
+M$@!8$0  . !V7VQO;F=?87)R87D <@ *$0  (P %  /PEP0()     $ $@!\
+M$0  E0   *, $   "        0    A5  D ,@    < $@"N$0  . !V7W5N
+M<VEG;F5D7VEN=%]A<G)A>0!R %@1   C  4  U"7! @D     0 2 -(1  "5
+M    HP 0   (       !    "%4 "  P    !P 2  (2   X '9?<VEG;F5D
+M7VEN=%]A<G)A>0!R *X1   C  4  XR7! @D     0 2 "82  "5    HP 0
+M   (       !    "%4 !P I    !P 2 $\2   X '9?:6YT7V%R<F%Y '( 
+M A(  ", !0 #')<$""0    ! !( <Q(  )4   "C !    @       $    (
+M50 & #0    ' !( IQ(  #@ =E]U;G-I9VYE9%]S:&]R=%]A<G)A>0!R $\2
+M   C  4  X"7! @D     0 2 ,L2  "5    HP 0   (       !    "%4 
+M!0 R    !P 2 /T2   X '9?<VEG;F5D7W-H;W)T7V%R<F%Y '( IQ(  ", 
+M!0 #2)<$""0    ! !( (1,  )4   "C !    @       $    (50 $ "L 
+M   ' !( 3!,  #@ =E]S:&]R=%]A<G)A>0!R /T2   C  4  WR7! @D    
+M 0 2 ' 3  "5    HP 0   (       !    "%4  P S    !P 2 *,3   X
+M '9?=6YS:6=N961?8VAA<E]A<G)A>0!R $P3   C  4  _B6! @D     0 2
+M ,<3  "5    HP 0   (       !    "%4  @ Q    !P 2 /@3   X '9?
+M<VEG;F5D7V-H87)?87)R87D <@"C$P  (P %  ,XEP0()     $ $@ <%   
+ME0   *, $   "        0    A5  $ *@    < $@!&%   . !V7V-H87)?
+M87)R87D <@#X$P  (P %  /4EP0()     < $@!J%   . !V7V1O=6)L90!5
+M  \ (P %  ,(EP0((P    < $@"-%   . !V7V9L;V%T %4 #@ C  4  SR7
+M! @K    !P 2 +@4   X '9?=6YS:6=N961?;&]N9P!5  P (P %  -XEP0(
+M*0    < $@#A%   . !V7W-I9VYE9%]L;VYG %4 "P C  4  _R6! @B    
+M!P 2  ,5   X '9?;&]N9P!5  H (P %  -HEP0(*@    < $@ M%0  . !V
+M7W5N<VEG;F5D7VEN= !5  D (P %  /TE@0(*     < $@!5%0  . !V7W-I
+M9VYE9%]I;G0 50 ( ", !0 #\)8$""$    ' !( =A4  #@ =E]I;G0 50 '
+M ", !0 #$)<$""P    ' !( HA4  #@ =E]U;G-I9VYE9%]S:&]R= !5  8 
+M(P %  ,$EP0(*@    < $@#,%0  . !V7W-I9VYE9%]S:&]R= !5  4 (P %
+M  -<EP0((P    < $@#O%0  . !V7W-H;W)T %4 !  C  4  VR7! @K    
+M!P 2 !H6   X '9?=6YS:6=N961?8VAA<@!5  , (P %  ,ZEP0(*0    < 
+M$@!#%@  . !V7W-I9VYE9%]C:&%R %4  @ C  4  W27! @B    !P 2 &46
+M   X '9?8VAA<@!5  $ (P %  /XEP0(!     <       "2 @  3(,$"'D 
+M  #__P    !Z    __\0    >P   /__(    'T   #__S    !^    __] 
+M    ?P   /__4    ($   #__V    ""    __]P    @P   /__@    (4 
+M  #__Y    "&    __^@    AP   /__L    (D   #__\    "*    ___4
+M    L@   /__Z    +4   #__^X   "V    ___U    MP   /___    +D 
+M  #__P,!  "Z    __\, 0  NP   /__%0$  +T   #__QX!  "^    __\H
+M 0  OP   /__,@$  ,$   #__SP!  #"    __]& 0  PP   /__4 $  ,4 
+M  #__UH!  #&    __]D 0  R0   /__> $  ,H   #__X(!  #+    __^,
+M 0  S0   /__E@$  ,X   #__Z(!  #/    __^N 0  T0   /__N@$  -( 
+M  #__\0!  #3    ___. 0  U0   /__V $  -8   #__^(!  #7    ___L
+M 0  V0   /__]@$  -H   #__P "  #<    __\4 @  W0   /__'@(  -X 
+M  #__R@"  #@    __\R @  X0   /__/ (  .(   #__T8"  #D    __]0
+M @  Y0   /__6@(  .8   #__V0"  #H    __]N @  Z0   /__> (  .H 
+M  #__X("  #L    __^, @  [0   /__E@(  .\   #__Z "  #P    __^J
+M @  \0   /__M (  /(   #__[X"  #T    ___( @  ]@   /__T@(  /< 
+M  #__]X"        ___I @                                      
+M                     0    $    "    U( $"-0    3            
+M   !          D    %     @   .B ! CH    1     ,         !   
+M  0    /    "P    (    L@00(+ $  ,     $     0    0    0    
+M%P    ,    "    [($$".P!  ![               !         !\    )
+M     @   &B"! AH @  (     ,    '    !     @    H     0    8 
+M  "(@@0(B (   $               0         +@    $    &    C(($
+M"(P"  !0               $    !    #,    !    !@   -R"! C< @  
+M60,             !          Y     0    8    XA@0(. 8   $     
+M          0         /P    $    "    /(8$"#P&   @            
+M   $         $<    !     P   %R6! A<!@  "               !   
+M      !-     0    ,   !DE@0(9 8  !P               0    $    
+M4@    8    #    @)8$"( &  !P    !          $    "    %L    (
+M     P   /"6! CP!@  M $             !         !@     @      
+M        \ 8    '   0    '     0    0    :     ,             
+M / -  #4!              !         '     #              #$$@  
+MD                0        !Z     0              5!,  "("    
+M          $         @P    $              '@5  !P%@          
+M   $         (H    !              #H*P  D@(              0  
+%        
+end
diff --git a/gdb/testsuite/gdb.base/i860-elf.u b/gdb/testsuite/gdb.base/i860-elf.u
new file mode 100644 (file)
index 0000000..216e83b
--- /dev/null
@@ -0,0 +1,314 @@
+begin 775 i860-elf
+M?T5,1@$" 0             "  <    !   32    #0  #-4       T "  
+M!0 H !4 $0    8    T   0-         "@    H     4          P  
+M -0              !,         !          !    -   $#0        (
+M\   "/     %   0      $   DD   I)         "8   "7     8  !  
+M     @  "4P  "E,         '          !P     O=7-R+VQI8B]L:6)C
+M+G-O+C$       ,    ,    !P    P    +                     @  
+M       #    !0         &    !     D    *    "               
+M                           !     0  $M    !,$@        H  "N 
+M     !$ __$    /   I*     01   +    &   &20     $0#_\0   !\ 
+M !+L    F!(        F   IO      1 /_Q    +0  $R0     $@      
+M #(  !D0    !!$   H    _   3"      2        20  *3      $0#_
+M\0   %\  "E,     !$ __$ 7V-L96%N=7  7V5N9 !?96YV:7)O;@!?971E
+M>'0 871E>&ET %]E9&%T80!E>&ET %]L:6)?=F5R<VEO;@!?7V9P<W1A<G0 
+M7T=,3T)!3%]/1D93151?5$%"3$5? %]$64Y!34E# "]U<W(O;&EB+VQI8F,N
+M<V\N,0     I/    @0        I0   !@0        I1   "@0        I
+M2   " 0          *    !   @ H    *     7_RDY[!\  !?>*35  /@ 
+M%_\I/>P?  #D'0  0 #X &O___;OO0  [!\  .P>  !  /@ %_\I0>^]  #D
+M'0 ,[!X  &O__^\7_RE%[!\  .0= !A  /@ :___Z.^]  #L'P  [!X  $  
+M^  7_RE)[[T  .0= "3L'@  :___X:    #(   4'$   81"__"@0P  '$  
+M!>P0  #40@ /6@   N80$M"@    ;___X.??*4SL'@  ;___VUO@  +L$   
+MH)   .80&0!O___8H    &___\>@    ;___VZ82  (4<  1AE( &()2&  ?
+MY9$I[!\  &P  )J$<0 4;___UZ    "@$   H    $?@^ "$'P !H\$  * _
+M  "@    0 #X *    "@    H    ,@   P<0!@!A$+_\* 0  "$0P  %&, 
+M 81_ !"GX@  0  ( *    #(   ,'$ 8 81"__"@$   A$,  !1C  &$?P 0
+MI^(  $  " "@    R   #!Q & &$0O_PH!   (1#   48P !A'\ $*?B  ! 
+M  @ H    ,@   P<0!@!A$+_\* 0  "$0P  %&,  81_ !"GX@  0  ( *  
+M  #(   ,'$ 8 81"__"@$   A$,  !1C  &$?P 0I^(  $  " "@    R   
+M#!Q & &$0O_PH!   (1#   48P !A'\ $*?B  !   @ H    ,@   P<0!@!
+MA$+_\* 0  "$0P  %&,  81_ !"GX@  0  ( *    #(   ,'$ 8 81"__"@
+M$   A$,  !1C  &$?P 0I^(  $  " "@    R   #!Q & &$0O_PH!   (1#
+M   48P !A'\ $*?B  !   @ H    ,@   P<0!@!A$+_\* 0  "$0P  %&, 
+M 81_ !"GX@  0  ( *    #(   ,'$ 8 81"__"@$   A$,  !1C  &$?P 0
+MI^(  $  " "@    R   #!Q & &$0O_PH!   (1#   48P !A'\ $*?B  ! 
+M  @ H    ,@   P<0!@!A$+_\$@( <F$0P  %&,  81_ !"GX@  0  ( *  
+M  #(   ,'$ 8 81"__!(" ')A$,  !1C  &$?P 0I^(  $  " "@    R   
+M#!Q & &$0O_P[!\  (1#  "4'  !#^4"S _EXD3L'P  [!\  )0<  *4'  #
+M#^7B"A_EXCSL'P  [!\  )0<  24'  %'^7B+!_EX=3L'P  [!\  )0<  :4
+M'  ''^7AX1_EX<7L'P  [!\  )0<  B4'  )'^7AP1_EXCGL'P  [!\  )0<
+M  J4'  +'^7AS1_EXDGL'P  )_ 9(NP?   O\"H.[!\  "?P&1CL'P  +_ I
+MV.P?   '_"K,[!\   _EXJCL'P  !_PJ1.P?   /Y>(([!\   ?\*@KL'P  
+M#^7AR.P?   7_"H\[!\  !_EXDSL'P  %_PJ+.P?   ?Y>(8[!\  !?\*=3L
+M'P  '^7B4.P?   7_"GA[!\  !_EX>WL'P  %_PIQ>P?   ?Y>)=[!\  !?\
+M*<'L'P  '^7B(>P?   7_"HY[!\  !_EXL7L'P  %_PIS>P?   ?Y>(1[!\ 
+M !?\*DGL'P  '^7B,>P?   G\"H.[!\  "_P*K;L'P  )_ IV.P?   O\"GX
+M[!\  .?\*LSL'P  '^7B5>P?  #G_"I$[!\  !_EXL'L'P  Y_PJ"NP?   ?
+MY>)9[!\  .?\*CSL'P  '^7BO>P?  #G_"HL[!\  !_EXFWL'P  Y_PIU.P?
+M   ?Y>'1[!\  .?\*>#L'P  '^7B'>P?  #G_"G$[!\  !_EXF7L'P  Y_PI
+MP.P?   ?Y>(I[!\  .?\*CCL'P  '^7B0>P?  #G_"G,[!\  !_EXK'L'P  
+MY_PJ2.P?   ?Y>'I[!\  .?\*@SL'P  '^7BK>P?  #G_"G8[!\  !_EXG'L
+M'P  [!\  )0<  *4'  "'^7A]1_EX>7L'P  [!\  )0<  &4'  !'^7C:1_E
+MXM'L'P  %_PJ:>P?   ?Y>+9[!\  !?\*WCL'P  '^7C<.P?   48P !A'\ 
+M$*?B  !   @ H    $  " "@    H               0&D       !"R   
+M                   I3              2W   $O@  !,4   3,     $ 
+M  !H    #   $K     -   9      0  !#H    !0  $@     &   1,   
+M  H   ![    "P   !     5          ,  "DP     @   #     4    
+M!P   !<  !)\                                          $     
+M      0 __$        0U      #   !        $.@      P   @      
+M !$P      ,   ,        2       #   $        $GP      P  !0  
+M     !*P      ,   8        2P      #   '        $T       P  
+M"        !D       ,   D        9$      #   *        *20     
+M P  "P       "DP      ,   P        I3      #   -        *<  
+M     P  #@                ,   \                #   0        
+M         P  $0                ,  !(                #   3    
+M             P  %     <           0 __$    .           $ /_Q
+M    %0          ! #_\0   "$           0 __$    I           $
+M /_Q    ,P          ! #_\0   #H  "G     !!$   X   !)   IQ   
+M  01   .    5@  $_@    @$@  "    &(  !D      !(   D   !H   I
+MR     (1   .    ?@  %B@   +8$@  "    (,  "G,    !!$   X   "1
+M   IT     01   .    J@  $X    !,$@       +,  "N      !$ __$ 
+M  "X   IU     (1   .    R0  %,     @$@  "    -\  "G8    "!$ 
+M  X   #H   IX     01   .    [@  $T@     $@  "    /4  "GD    
+M!!$   X   $    I*     01   +   !"0  *>@    $$0  #@   2$  "GL
+M    "!$   X   $M   I]     01   .   !-0  %"     @$@  "    4@ 
+M "GX    $!$   X   %7   9)      1 /_Q   !7@  *@@    "$0  #@  
+M 7(  "H*     1$   X   &"   J#     01   .   !B@  *A     ($0  
+M#@   9X  !30    F!(       &E   I*     0A   +   !K0  %6     @
+M$@  "    ;D  "H8    !!$   X   '.   5L    " 2   (   !XP  *AP 
+M   $$0  #@   ?$  "F\     !$ __$   'X   4<    " 2   (   "!0  
+M*B     ($0  #@   AH  "HH    !!$   X   (Q   4Z    " 2   (   "
+M/   *BP    "$0  #@   DL  !78    (!(   @   )8   7<      2    
+M   "70  *C     ($0  #@   G,  "HX    !!$   X   )Z   J/     (1
+M   .   "@@  *D     $$0  #@   I$  "I$     1$   X   *?   J2   
+M  01   .   "KP  *DP    $$0  #@   KT  "I0    !!$   X   +4   9
+M$     01   *   "X0  $]@     $@  "    ND  "I4    !!$   X   +X
+M   J6     01   .   #$   *EP    ($0  #@   R,  !8@     !(     
+M  ,M   J9     01   .   #0@  *F@    $$0  #@   TD  "DP     !$ 
+M__$   -?   J;     01   .   #=@  *G     $$0  #@   X<  "DD    
+M!!$   L   .9   J>    !@1   .   #HP  *I     8$0  #@   ZT  "JH
+M     A$   X   .Z   JK     01   .   #R@  *K     $$0  #@   ^  
+M !8     (!(   @   /N   5$    " 2   (   $    *4P     $0#_\0  
+M! D  "JT    "!$   X   07   JO     01   .   $)P  %8@    @$@  
+M"   !#H  "K     !!$   X   10   JQ     @1   .   $70  $K      
+M$@  !@  !&,  "K,     1$   X   1J   JT     01   .   $<@  %$@ 
+M   @$@  "   !(<  "K8    D!$   X   2.   K:     01   .   $F   
+M%)@    @$@  "   !*P  "MP    "!$   X   2U   K>     @1   .   $
+MO0  %3@    @$@  " !G9&)M90!C<G0Q+G, 8W)T:2YS '9A;'5E<RU8="YC
+M &=D8FUE+F, <VA?9&%T82YC &-R=&XN<P!V7W5N<VEG;F5D7VEN= !V7W-I
+M9VYE9%]I;G0 =E]C:&%R7V9U;F, 7V9I;FD =E]U;G-I9VYE9%]C:&%R7V%R
+M<F%Y &UA:6X =E]S:6=N961?;&]N9P!V7W5N<VEG;F5D7W-H;W)T7W!O:6YT
+M97( 7V-L96%N=7  7V5N9 !V7W5N<VEG;F5D7W-H;W)T '9?=6YS:6=N961?
+M<VAO<G1?9G5N8P!V7V1O=6)L90!V7VEN= !?<W1A<G0 ;F]N<')I;6%R>0!?
+M96YV:7)O;@!V7W5N<VEG;F5D7VQO;F=?<&]I;G1E<@!V7VEN=%]A<G)A>0!P
+M<FEM87)Y '9?<VEG;F5D7V-H87)?9G5N8P!V7V1O=6)L95]A<G)A>0!?971E
+M>'0 =E]S:6=N961?8VAA<E]A<G)A>0!V7W5N<VEG;F5D7V-H87( =E]F;&]A
+M= !V7W-I9VYE9%]L;VYG7V%R<F%Y &%T97AI= !E;G9I<F]N '9?;&]N9U]F
+M=6YC '9?<VEG;F5D7W-H;W)T7V%R<F%Y '9?=6YS:6=N961?;&]N9U]F=6YC
+M '9?:6YT7W!O:6YT97( 7V5D871A '9?<VAO<G1?9G5N8P!V7W5N<VEG;F5D
+M7VEN=%]A<G)A>0!V7W5N<VEG;F5D7VEN=%]P;VEN=&5R '9?:6YT7V9U;F, 
+M=E]S:6=N961?<VAO<G0 =E]F;&]A=%]F=6YC &5X:70 =E]U;G-I9VYE9%]L
+M;VYG7V%R<F%Y '9?;&]N9P!V7W-H;W)T '9?;&]N9U]P;VEN=&5R '9?<VEG
+M;F5D7V-H87( =E]U;G-I9VYE9%]L;VYG '9?<VAO<G1?87)R87D =E]U;G-I
+M9VYE9%]S:&]R=%]A<G)A>0!?;&EB7W9E<G-I;VX 7VUC;W5N= !V7V-H87)?
+M<&]I;G1E<@!V7W5N<VEG;F5D7V-H87)?<&]I;G1E<@!V7W-I9VYE9%]I;G1?
+M87)R87D 7U]F<'-T87)T '9?<VEG;F5D7VEN=%]P;VEN=&5R '-?;&EN:P!?
+M1TQ/0D%,7T]&1E-%5%]404),15\ =E]S:6=N961?<VAO<G1?<&]I;G1E<@!V
+M7V1O=6)L95]P;VEN=&5R %]?;&]N9V1O=6)L95]U<V5D '9?<W1R=6-T,0!V
+M7W-T<G5C=#( =E]C:&%R7V%R<F%Y '9?9FQO871?<&]I;G1E<@!V7W-I9VYE
+M9%]L;VYG7W!O:6YT97( =E]D;W5B;&5?9G5N8P!V7W-I9VYE9%]I;G1?9G5N
+M8P!?1%E.04U)0P!V7V9L;V%T7V%R<F%Y '9?<VAO<G1?<&]I;G1E<@!V7W-I
+M9VYE9%]L;VYG7V9U;F, =E]S:6=N961?8VAA<E]P;VEN=&5R '9?;&]N9U]A
+M<G)A>0!?:6YI= !V7V-H87( 8VQU;FME<@!V7W5N<VEG;F5D7V-H87)?9G5N
+M8P!U7VQI;FL <W!O<G1S8V%R '9?<VEG;F5D7W-H;W)T7V9U;F, =E]U;FEO
+M;C( =E]U;FEO;@!V7W5N<VEG;F5D7VEN=%]F=6YC   N:6YT97)P "YH87-H
+M "YD>6YS>6T +F1Y;G-T<@ N<F5L82YP;'0 +FEN:70 +G!L=  N=&5X=  N
+M9FEN:0 N<F]D871A "YD871A "YG;W0 +F1Y;F%M:6, +F)S<P N<WEM=&%B
+M "YS=')T86( +G-H<W1R=&%B "YC;VUM96YT "YD96)U9P N;&EN90 D2&5A
+M9&5R.B O<"]20U,O=71I;#(M,BXQ+W5S<B]S<F,O;&EB+VQI8F,O:3@V,"]C
+M<W4O8W)T,2YS+'8@,BXQ(#DR+S U+S$T(# W.C$V.C(P(&1A=FED;V9F($5X
+M<" D $ H(RE&5%@@,BXQ+C N,2!S8V1E.B]U<W(O8V-S+VQI8B]C<G0Q+F\ 
+M)$AE861E<CH@+W O4D-3+W5T:6PR+3(N,2]U<W(O<W)C+VQI8B]L:6)C+VDX
+M-C O8W-U+V-R=&DN<RQV(#(N,2 Y,B\P-2\Q-" P-SHQ-CHR,2!D879I9&]F
+M9B!%>' @) ! *",I1E18(#(N,2XP+C$@<V-D93HO=7-R+V-C<R]L:6(O8W)T
+M:2YO "1(96%D97(Z("]P+U)#4R]U=&EL,BTR+C$O=7-R+W-R8R]L:6(O;&EB
+M8R]P;W)T+V=E;B]V86QU97,M6'0N8RQV(#(N,2 Y,B\P-2\Q-" P-SHR-SHP
+M,B!D879I9&]F9B!%>' @)  D2&5A9&5R.B O<"]20U,O=71I;#(M,BXQ+W5S
+M<B]S<F,O;&EB+VQI8F,O:6YC+W-Y;F]N>6US+F@L=B R+C$@.3(O,#4O,30@
+M,#<Z,C(Z,3D@9&%V:61O9F8@17AP("0 )$AE861E<CH@+W O4D-3+W5T:6PR
+M+3(N,2]U<W(O<W)C+VAE860O;6%T:"YH+'8@,BXQ(#DR+S U+S$T(# W.C$R
+M.C4W(&1A=FED;V9F($5X<" D &%C;VUP.B H4T-$12D@-2XP(#$R+S X+S@Y
+M &%S.B H4T-$12D@-2XP(#$R+S X+S@Y $ H(RE&5%@@,BXQ+C N,2!S8V1E
+M.B]U<W(O8V-S+VQI8B]V86QU97,M6'0N;P!A8V]M<#H@*%-#1$4I(#4N," Q
+M,B\P."\X.0!A<SH@*%-#1$4I(#4N," Q,B\P."\X.0 D2&5A9&5R.B O<"]2
+M0U,O=71I;#(M,BXQ+W5S<B]S<F,O;&EB+VQI8F,O:3@V,"]G96XO<VA?9&%T
+M82YC+'8@,BXQ(#DR+S U+S$T(# W.C$W.C4T(&1A=FED;V9F($5X<" D &%C
+M;VUP.B H4T-$12D@-2XP(#$R+S X+S@Y &%S.B H4T-$12D@-2XP(#$R+S X
+M+S@Y $ H(RE&5%@@,BXQ+C N,2!S8V1E.B]U<W(O8V-S+VQI8B]L:6)C+G-O
+M "1(96%D97(Z("]P+U)#4R]U=&EL,BTR+C$O=7-R+W-R8R]L:6(O;&EB8R]I
+M.#8P+V-S=2]C<G1N+G,L=B R+C$@.3(O,#4O,30@,#<Z,38Z,C(@9&%V:61O
+M9F8@17AP("0 0"@C*4946" R+C$N,"XQ('-C9&4Z+W5S<B]C8W,O;&EB+V-R
+M=&XN;P @;&0@.B H4T-$12D@-2XP(#$R+S X+S@Y     "X $0 2   6<  X
+M9V1B;64N8P !-@    $!$0  $_ !(0  &0 !!@         = !, $@   4X 
+M.'1?<W1R=6-T  "V    &    "H #0 2    =0 X=E]C:&%R7VUE;6)E<@  
+M50 ! ", !@0     !P   "L #0 2    H  X=E]S:&]R=%]M96UB97(  %4 
+M!  C  8$     @<    I  T $@   ,D .'9?:6YT7VUE;6)E<@  50 ' ", 
+M!@0    $!P   "H #0 2    \P X=E]L;VYG7VUE;6)E<@  50 * ", !@0 
+M   (!P   "L #0 2   !'@ X=E]F;&]A=%]M96UB97(  %4 #@ C  8$    
+M# <    L  T $@   4H .'9?9&]U8FQE7VUE;6)E<@  50 / ", !@0    0
+M!P    0    ; !, $@   FP ."XP9F%K90  M@   !@    J  T $@   9, 
+M.'9?8VAA<E]M96UB97(  %4  0 C  8$      <    K  T $@   ;X .'9?
+M<VAO<G1?;65M8F5R  !5  0 (P &!     ('    *0 - !(   'G #AV7VEN
+M=%]M96UB97(  %4 !P C  8$    ! <    J  T $@   A$ .'9?;&]N9U]M
+M96UB97(  %4 "@ C  8$    " <    K  T $@   CP .'9?9FQO871?;65M
+M8F5R  !5  X (P &!     P'    +  - !(   )H #AV7V1O=6)L95]M96UB
+M97(  %4 #P C  8$    $ <    $    '  7 !(   .+ #AT7W5N:6]N  "V
+M    "    "H #0 2   "L@ X=E]C:&%R7VUE;6)E<@  50 ! ", !@0     
+M!P   "L #0 2   "W0 X=E]S:&]R=%]M96UB97(  %4 !  C  8$      < 
+M   I  T $@   P8 .'9?:6YT7VUE;6)E<@  50 ' ", !@0     !P   "H 
+M#0 2   #,  X=E]L;VYG7VUE;6)E<@  50 * ", !@0     !P   "L #0 2
+M   #6P X=E]F;&]A=%]M96UB97(  %4 #@ C  8$      <    L  T $@  
+M X< .'9?9&]U8FQE7VUE;6)E<@  50 / ", !@0     !P    0    ; !< 
+M$@  !*D ."XQ9F%K90  M@    @    J  T $@   ]  .'9?8VAA<E]M96UB
+M97(  %4  0 C  8$      <    K  T $@   _L .'9?<VAO<G1?;65M8F5R
+M  !5  0 (P &!      '    *0 - !(   0D #AV7VEN=%]M96UB97(  %4 
+M!P C  8$      <    J  T $@  !$X .'9?;&]N9U]M96UB97(  %4 "@ C
+M  8$      <    K  T $@  !'D .'9?9FQO871?;65M8F5R  !5  X (P &
+M!      '    +  - !(   2E #AV7V1O=6)L95]M96UB97(  %4 #P C  8$
+M      <    $    *@ & !(   37 #AV7V-H87)?9G5N8P  50 ! 1$  !/X
+M 2$  !08    !    #$ !@ 2   %#  X=E]S:6=N961?8VAA<E]F=6YC  !5
+M  (!$0  %" !(0  %$     $    ,P & !(   5# #AV7W5N<VEG;F5D7V-H
+M87)?9G5N8P  50 # 1$  !1( 2$  !1H    !    "L !@ 2   %<@ X=E]S
+M:&]R=%]F=6YC  !5  0!$0  %' !(0  %)     $    ,@ & !(   6H #AV
+M7W-I9VYE9%]S:&]R=%]F=6YC  !5  4!$0  %)@!(0  %+@    $    -  &
+M !(   7@ #AV7W5N<VEG;F5D7W-H;W)T7V9U;F,  %4 !@$1   4P $A   4
+MX     0    I  8 $@  !@T .'9?:6YT7V9U;F,  %4 !P$1   4Z $A   5
+M"     0    P  8 $@  !D$ .'9?<VEG;F5D7VEN=%]F=6YC  !5  @!$0  
+M%1 !(0  %3     $    ,@ & !(   9W #AV7W5N<VEG;F5D7VEN=%]F=6YC
+M  !5  D!$0  %3@!(0  %5@    $    *@ & !(   :E #AV7VQO;F=?9G5N
+M8P  50 * 1$  !5@ 2$  !6     !    #$ !@ 2   &V@ X=E]S:6=N961?
+M;&]N9U]F=6YC  !5  L!$0  %8@!(0  %:@    $    ,P & !(   <1 #AV
+M7W5N<VEG;F5D7VQO;F=?9G5N8P  50 , 1$  !6P 2$  !70    !    "L 
+M!@ 2   '0  X=E]F;&]A=%]F=6YC  !5  X!$0  %=@!(0  %?@    $    
+M+  & !(   =P #AV7V1O=6)L95]F=6YC  !5  \!$0  %@ !(0  %B     $
+M    %0 5 !(   >N (, !0$   ?J    %0 % !(   >: (, !0$   ?J    
+M$  % !(   >J %4 !P    0    \  $ $@  !^H E0   *, *   "       
+M       (          $   @          @@ <@   "X    9 !, $@  "'L 
+M.&QI;FL  +8   "8    )@ - !(   @I #AN97AT  "#  4!   'Z@ C  8$
+M      <    J  T $@  "%, .&QI;FMF=6YC  "#  4!   '<  C  8$    
+M! <    D  T $@  "'< .'-T=69F  !R   'K@ C  8$    " <    $    
+M%0 5 !(   BY (, !0$   ?J    %0 % !(   BE (, !0$   ?J    $  %
+M !(   BU %4 !P    0    \  $ $@  "/4 E0   *, *   "           
+M   (          $   @          @@ <@   "X    < !< $@  "8D .'1U
+M7VQI;FL  +8   "0    )@ - !(   DW #AN97AT  "#  4!   'Z@ C  8$
+M      <    J  T $@  "6$ .&QI;FMF=6YC  "#  4!   (>P C  8$    
+M  <    D  T $@  "84 .'-T=69F  !R   (N0 C  8$      <    $    
+M.@ $ !(   G' #@N,F9A:V4  +8    $ /, &P    )B;'5E      %G<F5E
+M;@      <F5D      0    ^  0 $@  "@D .&-O;&]R<P  M@    0 \P ?
+M     G!I;FL      7!U<G!L90      >65L;&]W      0    R  0 $@  
+M"C\ ."XS9F%K90  M@    0 \P 3     69O<F0      &-H979Y      0 
+M   Q  0 $@  "G0 .&-A<G,  +8    $ /, %     %P;W)S8VAE      !B
+M;7<     !    #( !  2   *J@ X+C1F86ME  "V    ! #S !,    !5%)5
+M10      1D%,4T4     !    !P %@ 2   *Q@ X8F]O;&5A;@  <@  "G0 
+M   Q  0 $@  "OL .&)V86QS  "V    ! #S !,    !=')U90      9F%L
+M<V4     !    !T %@ 2   +&  X8F]O;&5A;C(  '(   K&    1@ $ !( 
+M  MB #AM:7-O<F1E<F5D  "V    ! #S ",    #=&AR964      'IE<F\ 
+M     6]N90     "='=O      0    C  8 $@  "XD .&UA:6X  %4 !P$1
+M   6* $A   9      0    G  < $@  "[  .'-P;W)T<V-A<@  <@  "C\ 
+M(P % P  *V@    E  < $@  "]4 .&-L=6YK97(  '(   H) ", !0,  "K0
+M    *  ' !(   O] #AN;VYP<FEM87)Y  !R   )QP C  4#   IY    "4 
+M!P 2   ,(@ X<')I;6%R>0  <@  "8D (P % P  *?0    D  < $@  #$8 
+M.'5?;&EN:P  <@  "/4 (P % P  *M@    G  < $@  #&T .'-?;&EN:P  
+M@P % 0  !^H (P % P  *F@    F  < $@  #), .'9?=6YI;VXR  !R   #
+MBP C  4#   K<    "4 !P 2   ,N  X=E]U;FEO;@  <@   FP (P % P  
+M*W@    G  < $@  #-\ .'9?<W1R=6-T,@  <@   4X (P % P  *I     G
+M  < $@  #08 .'9?<W1R=6-T,0  <@   "X (P % P  *G@    O  < $@  
+M#34 .'9?9&]U8FQE7W!O:6YT97(  &,  P$ #P C  4#   J<    "X !P 2
+M   -8P X=E]F;&]A=%]P;VEN=&5R  !C  ,!  X (P % P  *JP    V  < 
+M$@  #9D .'9?=6YS:6=N961?;&]N9U]P;VEN=&5R  !C  ,!  P (P % P  
+M*>@    T  < $@  #<T .'9?<VEG;F5D7VQO;F=?<&]I;G1E<@  8P # 0 +
+M ", !0,  "JP    +0 ' !(   WZ #AV7VQO;F=?<&]I;G1E<@  8P # 0 *
+M ", !0,  "I     -0 ' !(   XO #AV7W5N<VEG;F5D7VEN=%]P;VEN=&5R
+M  !C  ,!  D (P % P  *B@    S  < $@  #F( .'9?<VEG;F5D7VEN=%]P
+M;VEN=&5R  !C  ,!  @ (P % P  *F0    L  < $@  #HX .'9?:6YT7W!O
+M:6YT97(  &,  P$ !P C  4#   J'    #< !P 2   .Q0 X=E]U;G-I9VYE
+M9%]S:&]R=%]P;VEN=&5R  !C  ,!  8 (P % P  *=     U  < $@  #OH 
+M.'9?<VEG;F5D7W-H;W)T7W!O:6YT97(  &,  P$ !0 C  4#   J;    "X 
+M!P 2   /*  X=E]S:&]R=%]P;VEN=&5R  !C  ,!  0 (P % P  *KP    V
+M  < $@  #UX .'9?=6YS:6=N961?8VAA<E]P;VEN=&5R  !C  ,!  , (P %
+M P  *E@    T  < $@  #Y( .'9?<VEG;F5D7V-H87)?<&]I;G1E<@  8P #
+M 0 " ", !0,  "K     +0 ' !(   ^_ #AV7V-H87)?<&]I;G1E<@  8P #
+M 0 ! ", !0,  "I4    )  ! !(   _C )4   "C !    @          0@ 
+M50 /    +  ' !(  ! / #AV7V1O=6)L95]A<G)A>0  <@  #[\ (P % P  
+M*?@    D  $ $@  $#, E0   *, $   "          !" !5  X    K  < 
+M$@  $%X .'9?9FQO871?87)R87D  '(  ! / ", !0,  "JT    )  ! !( 
+M !"" )4   "C !    @          0@ 50 ,    ,P ' !(  !"U #AV7W5N
+M<VEG;F5D7VQO;F=?87)R87D  '(  !!> ", !0,  "HP    )  ! !(  !#9
+M )4   "C !    @          0@ 50 +    ,0 ' !(  !$* #AV7W-I9VYE
+M9%]L;VYG7V%R<F%Y  !R   0M0 C  4#   J$    "0  0 2   1+@"5    
+MHP 0   (          $( %4 "@   "H !P 2   16  X=E]L;VYG7V%R<F%Y
+M  !R   1"@ C  4#   JQ    "0  0 2   1? "5    HP 0   (        
+M  $( %4 "0   #( !P 2   1K@ X=E]U;G-I9VYE9%]I;G1?87)R87D  '( 
+M !%8 ", !0,  "H@    )  ! !(  !'2 )4   "C !    @          0@ 
+M50 (    ,  ' !(  !(" #AV7W-I9VYE9%]I;G1?87)R87D  '(  !&N ", 
+M!0,  "I<    )  ! !(  !(F )4   "C !    @          0@ 50 '    
+M*0 ' !(  !)/ #AV7VEN=%]A<G)A>0  <@  $@( (P % P  *>P    D  $ 
+M$@  $G, E0   *, $   "          !" !5  8    T  < $@  $J< .'9?
+M=6YS:6=N961?<VAO<G1?87)R87D  '(  !)/ ", !0,  "I0    )  ! !( 
+M !++ )4   "C !    @          0@ 50 %    ,@ ' !(  !+] #AV7W-I
+M9VYE9%]S:&]R=%]A<G)A>0  <@  $J< (P % P  *A@    D  $ $@  $R$ 
+ME0   *, $   "          !" !5  0    K  < $@  $TP .'9?<VAO<G1?
+M87)R87D  '(  !+] ", !0,  "I,    )  ! !(  !-P )4   "C !    @ 
+M         0@ 50 #    ,P ' !(  !.C #AV7W5N<VEG;F5D7V-H87)?87)R
+M87D  '(  !-, ", !0,  "G(    )  ! !(  !/' )4   "C !    @     
+M     0@ 50 "    ,0 ' !(  !/X #AV7W-I9VYE9%]C:&%R7V%R<F%Y  !R
+M   3HP C  4#   J"    "0  0 2   4' "5    HP 0   (          $(
+M %4  0   "H !P 2   41@ X=E]C:&%R7V%R<F%Y  !R   3^  C  4#   J
+MJ    "0 !P 2   4:@ X=E]D;W5B;&4  %4 #P C  4#   IV    ", !P 2
+M   4C0 X=E]F;&]A=   50 . ", !0,  "H,    *P ' !(  !2X #AV7W5N
+M<VEG;F5D7VQO;F<  %4 #  C  4#   J2    "D !P 2   4X0 X=E]S:6=N
+M961?;&]N9P  50 + ", !0,  "G,    (@ ' !(  !4# #AV7VQO;F<  %4 
+M"@ C  4#   J.    "H !P 2   5+0 X=E]U;G-I9VYE9%]I;G0  %4 "0 C
+M  4#   IP    "@ !P 2   550 X=E]S:6=N961?:6YT  !5  @ (P % P  
+M*<0    A  < $@  %78 .'9?:6YT  !5  < (P % P  *>     L  < $@  
+M%:( .'9?=6YS:6=N961?<VAO<G0  %4 !@ C  4#   IU    "H !P 2   5
+MS  X=E]S:6=N961?<VAO<G0  %4 !0 C  4#   J+    ", !P 2   5[P X
+M=E]S:&]R=   50 $ ", !0,  "H\    *P ' !(  !8: #AV7W5N<VEG;F5D
+M7V-H87(  %4  P C  4#   J"@   "D !P 2   60P X=E]S:6=N961?8VAA
+M<@  50 " ", !0,  "I$    (@ ' !(  !9E #AV7V-H87(  %4  0 C  4#
+M   JS     0    '       "D@  $_    !Y__\    (    >O__    ,   
+M 'O__P   %@   !]__\   "     ?O__    J    '___P   -    "!__\ 
+M  #X    @O__   !(    (/__P   4@   "%__\   %P    AO__   !F   
+M (?__P   <    ")__\   'H    BO__   "$    ++__P   C@   "U__\ 
+M  )$    MO__   "3    +?__P   E@   "Y__\   )D    NO__   "<   
+M +O__P   GP   "]__\   *(    OO__   "E    +___P   J    #!__\ 
+M  *L    PO__   "N    ,/__P   L0   #%__\   +0    QO__   "X   
+M ,G__P   O    #*__\   ,     R___   #$    ,W__P   R    #.__\ 
+M  ,P    S___   #0    -'__P   U    #2__\   -@    T___   #<   
+M -7__P   X    #6__\   .0    U___   #H    -G__P   [    #:__\ 
+M  /     W/__   #T    -W__P   ^    #>__\   /P    X/__   $    
+M .'__P  !!    #B__\   0@    Y/__   $,    .7__P  !$    #F__\ 
+M  10    Z/__   $8    .G__P  !'    #J__\   2     [/__   $D   
+M .W__P  !*    #O__\   2P    \/__   $O    /'__P  !,@   #R__\ 
+M  34    ]/__   $X    /;__P  !/    #W__\   3P     /__   %$   
+M                                                          $ 
+M   !     @  $-0   #4    $P               0         )    !0  
+M  (  !#H    Z    $@    #          0    $    #P    L    "   1
+M,    3    #0    !     (    $    $    !<    #     @  $@    ( 
+M    >P               0         ?    !     (  !)\   "?    #  
+M   #    !P    0    ,    *0    P    &   2L    K     0        
+M       0    "    "\    ,    !@  $L    +     @               
+M$     @    T    #     8  !-    #0   !<               !     (
+M    .@    P    &   9    "0     0               0    "    $  
+M   !     @  &1    D0    %               "         !(     0  
+M  ,  "DD   ))     @               0         3@    $    #   I
+M,   "3     <               0    !    %,    &     P  *4P   E,
+M    <     0         !     @   !<    "     ,  "G    )P    <  
+M              @         80    (             "<    <     $   
+M !P    $    $    &D    #             !#    $T0              
+M 0        !Q     P             5D0   )$               $     
+M    >P    $             %B(   0N               !         (0 
+M   !             !I0   6<               !         "+     0  
+>           PP    I(               $     
+end
diff --git a/gdb/testsuite/gdb.base/interrupt.c b/gdb/testsuite/gdb.base/interrupt.c
new file mode 100644 (file)
index 0000000..bafbaa5
--- /dev/null
@@ -0,0 +1,31 @@
+#include <errno.h>
+#include <stdio.h>
+int
+main ()
+{
+  char x;
+  int nbytes;
+  printf ("talk to me baby\n");
+  while (1)
+    {
+      nbytes = read (0, &x, 1);
+      if (nbytes < 0)
+       {
+         if (errno != EINTR)
+           perror ("");
+       }
+      else if (nbytes == 0)
+       {
+         printf ("end of file\n");
+         exit (0);
+       }
+      else
+       write (1, &x, 1);
+    }
+}
+
+int
+func1 ()
+{
+  return 4;
+}
diff --git a/gdb/testsuite/gdb.base/list0.c b/gdb/testsuite/gdb.base/list0.c
new file mode 100644 (file)
index 0000000..d888870
--- /dev/null
@@ -0,0 +1,39 @@
+#include "list0.h"
+
+main ()
+{
+    int x;
+
+    x = 0;
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+    foo (x++);
+}
+
+static void
+unused ()
+{
+    /* Not used for anything */
+}
diff --git a/gdb/testsuite/gdb.base/list0.h b/gdb/testsuite/gdb.base/list0.h
new file mode 100644 (file)
index 0000000..c4d337c
--- /dev/null
@@ -0,0 +1,36 @@
+/* An include file that actually causes code to be generated in the
+   including file.  This is known to cause problems on some systems. */
+
+static void
+foo (x)
+int x;
+{
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+    bar (x++);
+}
diff --git a/gdb/testsuite/gdb.base/list1.c b/gdb/testsuite/gdb.base/list1.c
new file mode 100644 (file)
index 0000000..0b362a4
--- /dev/null
@@ -0,0 +1,12 @@
+void
+bar (x)
+int x;
+{
+    printf ("%d\n", x);
+}
+
+static void
+unused ()
+{
+    /* Not used for anything */
+}
diff --git a/gdb/testsuite/gdb.base/m68k-aout.u b/gdb/testsuite/gdb.base/m68k-aout.u
new file mode 100644 (file)
index 0000000..3095fc0
--- /dev/null
@@ -0,0 +1,459 @@
+begin 777 m68k-aout
+M   !"P  $    !          #$@                                 
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M $Y6__!(USB 2^X !$GM  0F3$J<9ORYTV4"68PCS   $ 0O.0  $ 0O"R\5
+M8?\   %"WOP #"\ 8?\   -.6(],[CB __!.7DYU3E8  $Y>3G4  $@.    
+M $C7  !P &    ).7DYU2 X     2-<  '  8    DY>3G5(#@    !(UP  
+M< !@   "3EY.=4@.     $C7  !P &    ).7DYU2 X     2-<  '  8   
+M DY>3G5(#@    !(UP  < !@   "3EY.=4@.     $C7  !"@&    ).7DYU
+M2 X     2-<  $* 8    DY>3G5(#@    !(UP  0H!@   "3EY.=4@.    
+M $C7  !"@&    ).7DYU2 X     2-<  $* 8    DY>3G5(#@    !(UP  
+M0H!@   "3EY.=4@.     $C7  #R %P/8    DY>3G5(#@    !(UP  \@!<
+M#V    ).7DYU2 X     2-<  $(Y   0-!/\  $  ! V$_P  @  $#@S_  #
+M   0.C/\  0  ! \,_P !0  $#YP!B/    00' '(\   !!$< @CP   $$AP
+M"2/    03' *(\   !!0< LCP   $%0C_$+(     !!8(_Q :0     07"/\
+M        $& 3^0  $#0  !!D$_D  ! V   09A/Y   0.   $&@S^0  $#H 
+M !!L,_D  ! \   0<#/Y   0/@  $'0C^0  $$   !!\(_D  !!$   0A"/Y
+M   02   $(PC^0  $$P  !"4(_D  !!0   0G"/Y   05   $*0C^0  $%@ 
+M !"L(_D  !!<   0M"/Y   08   $+@C_   $#0  !#$(_P  ! V   0R"/\
+M   0.   $,PC_   $#H  !#0(_P  ! \   0U"/\   0/@  $-@C_   $$  
+M !#<(_P  !!$   0X"/\   02   $.0C_   $$P  !#H(_P  !!0   0["/\
+M   05   $/ C_   $%@  !#T(_P  !!<   0^' "(\   !'4< (CP   $=AP
+M 2/    1X' !(\   !'<(_D  !$\   11#/Y   1+   $31.7DYU0"@C*61B
+M>'AX+G,)-2XR("A"97)K96QE>2D@-R\Q,B\X-0  2'D  !'H('D  !'D3I!8
+MCTYR"HQ.5@  8?\    6+RX "&'_    %%B/3EY.=0  3E8  $Y>3G5.5@  
+M< %.0"/    3Y'#_3EY.=0                                      
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M     ! ,     $YU  ! *",I8W)T,"YC"30N-B H0F5R:V5L97DI(#,O,S O
+M.#,        !                                                
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M        ! 0  &0         "P0  )(   !4    $V0       !4    &X  
+M            /8              3X              <H              
+MC(              IX              Q8              WX          
+M    ^(             !"8             !'(             !*(      
+M       !,B    $        !/"    $        !32    $        !8"  
+M  (        !:R    (        !?2    (        !D2    0        !
+MFB    0        !JB    0        !O"    0        !QB    0     
+M   !UR    0        !ZB    0        !]2    @        " B    $ 
+M       "'2    $        "-2    $        "62    (        "=2  
+M  (        "CB    (        "LR    0        "S2    0        "
+MY"    0        #!R    0        #&"    0        #,"    0     
+M   #2B    0        #9B    @        #A"    $        #FB    $ 
+M       #M"    $        #TR    (        #ZB    (        $!2  
+M  (        $)2    0        $.B    0        $4R    0        $
+M<2    0        $A"    0        $GB    0        $NB    0     
+M   $T2    @        $ZH   !C___L%   %@R   !@        %D2   !@ 
+M       &*X    C___L%   &O"    @        &R"    @        '6B0 
+M  $   !4     $0  'D   !>   ':20   $   !H     $0  'H   !R   '
+M?R0   $   !\     $0  'L   "&   'ER0   (   "0     $0  'T   ":
+M   'IR0   (   "D     $0  'X   "N   'OB0   (   "X     $0  '\ 
+M  #"   'UR0   0   #,     $0  ($   #6   'Y20   0   #@     $0 
+M ((   #J   '^B0   0   #T     $0  (,   #^   ($20   0   $(    
+M $0  (4   $2   (("0   0   $<     $0  (8   $F   (-B0   0   $P
+M     $0  (<   $Z   (3B0   0   %$     $0  (D   %.   (7B0   @ 
+M  %:     $0  (H   %D   (<(   )C___L%   (W"   )@        (YX  
+M )#___L%   ))R   )         ),B    0        )5H    3___L%   )
+M?2    0        )C"    0        )JH    3___L%   )QB    0     
+M   )U(    3___L%   )\H    3___L%   *#H    3___L%   *&X    3_
+M__L%   *2"0   0   %P     $0  +(   %Z     $0  +,   %Z     $0 
+M +0   %Z     $0  +4   %Z     $0  +8   &      $0  +<   &(    
+M $0  +@   &0     $0  +D   &0     $0  +H   &8     $0  +L   &@
+M     $0  +P   &H     $0  +T   &H     $0  +X   &P     $0  +\ 
+M  &X     $0  ,    '      $0  ,$   '      $0  ,(   '(     $0 
+M ,,   '0     $0  ,0   '8     $0  ,4   '8     $0  ,8   'B    
+M $0  ,<   'V     $0  ,@   'V     $0  ,D   'V     $0  ,H   ( 
+M     $0  ,L   (*     $0  ,P   (4     $0  ,T   (4     $0  ,X 
+M  (>     $0  ,\   (H     $0  -    (R     $0  -$   (R     $0 
+M -(   (\     $0  -,   )&     $0  -0   )0     $0  -4   )0    
+M $0  -8   ):     $0  -<   )D     $0  -@   )N     $0  -D   )N
+M     $0  -H   )X     $0  -L   *,     $0  -P   *,     $0  -T 
+M  *6     $0  -X   *@     $0  -\   *J     $0  .    *J     $0 
+M .$   *T     $0  .(   *^     $0  .,   +(     $0  .0   +(    
+M $0  .4   +2     $0  .8   +<     $0  .<   +F     $0  .@   +F
+M     $0  .D   +P     $0  .H   +Z     $0  .L   ,$     $0  .P 
+M  ,$     $0  .T   ,.     $0  .X   ,8     $0  .\   ,8     $0 
+M /    ,@     $0  /$   ,H     $0  /(   ,P     $0  /,   ,X    
+M $0  /0   ,X     $0  /4   -"     $0  /8   -"     $0  /<   -,
+M   *4 0  /<   -0   *5 0       -0   *7 0       .(   *8P0 !N( 
+M  .D   *:P0  Y8   .L   *<P0 !N(   .T   *? < !7(  ! $   *A04 
+M!0X        *BP4  WX   %P   *D04  Z    .(   *EP4 !BX   !*   *
+MHP<  )(  ! (   *J@D !T8  ! T   *L@D !^X  ! V   *P0D !&8  ! X
+M   *T@D !YH  ! Z   *VPD  $P  ! \   *ZPD  =H  ! ^   *_0D !_  
+M !!    +! D "$0  !!$   +$@D !H   !!(   +(@D ![D  !!,   +*@D 
+M"&$  !!0   +.0D !-D  !!4   +2@D !L@  !!8   +4PD !6L  !!<   +
+M70D !W,  !!D   +:PD !ET  !!F   +@ D !&D  !!H   +EPD  ID  !!L
+M   +I@D  &T  !!P   +O D !2,  !!T   +U D !MT  !!\   +X0D  @, 
+M !"$   +]0D  0D  !",   ,"PD  ;L  !"4   ,&0D  *4  !"<   ,+@D 
+M!T\  !"D   ,10D  <T  !"L   ,5 D  +D  !"T   ,9 D "%(  !#$   ,
+M= D  _H  !#(   ,BPD !,@  !#,   ,I D !B8  !#0   ,M0D !A0  !#4
+M   ,S0D !ZP  !#8   ,YPD !?H  !#<   ,]@D  \X  !#@   -# D "(0 
+M !#D   -) D  JX  !#H   -- D !O0  !#L   -2PD !\(  !#P   -9 D 
+M O8  !#T   -=0D !T0  !#X   -APD !RL  !#\   -D@D !RP  !$4   -
+MG0D !\8  !$L   -I@D !R   !$T   -L 4  ZL   !4   -O04 !V\   !H
+M   -T04 !G4   !\   -YP4 !8T   "0   -]04 !'<   "D   ."@4  H, 
+M  "X   .(04 !Z\   #,   .+04  /,   #@   .0 4 !,4   #T   .504 
+M ,\   $(   .8@4 !),   $<   .=@4  YD   $P   .C 4 !2<   %$   .
+MF@4 !)T   %:   .J0D !T4  !$\   .L0D !X4  !%$   .N0D !\\  !'4
+M   .P@D  G<  !'8   .S@D !)X  !'<   .UPD  O@  !'@   .X@D  2< 
+M !'D   .ZP4  :D   -T   .] 4  ;0   .$   ._0< !,8  ! P   /!P4 
+M Y8   .D   /$04 !N(   .L   /& 4 "!P   .T   /'PD !Y<  !/D   /
+M)F-R=# N;P!G9&)M92YO &=D8FUE+F, :6YT.G0Q/7(Q.RTR,30W-#@S-C0X
+M.S(Q-#<T.#,V-#<[ &-H87(Z=#(]<C([,#LQ,C<[ &QO;F<Z=#,]<C$[+3(Q
+M-#<T.#,V-#@[,C$T-S0X,S8T-SL <VAO<G0Z=#0]<C$[+3,R-S8X.S,R-S8W
+M.P!U;G-I9VYE9"!C:&%R.G0U/7(Q.S [,C4U.P!U;G-I9VYE9"!S:&]R=#IT
+M-CUR,3LP.S8U-3,U.P!U;G-I9VYE9"!L;VYG.G0W/7(Q.S [+3$[ '5N<VEG
+M;F5D(&EN=#IT.#UR,3LP.RTQ.P!F;&]A=#IT.3UR,3LT.S [ &1O=6)L93IT
+M,3 ]<C$[.#LP.P!V;VED.G0Q,3TQ,0 _/S\Z=#$R/3$ =E]C:&%R.D<R '9?
+M<VEG;F5D7V-H87(Z1S( =E]U;G-I9VYE9%]C:&%R.D<U '9?<VAO<G0Z1S0 
+M=E]S:6=N961?<VAO<G0Z1S0 =E]U;G-I9VYE9%]S:&]R=#I'-@!V7VEN=#I'
+M,0!V7W-I9VYE9%]I;G0Z1S$ =E]U;G-I9VYE9%]I;G0Z1S@ =E]L;VYG.D<Q
+M '9?<VEG;F5D7VQO;F<Z1S$ =E]U;G-I9VYE9%]L;VYG.D<X '9?9FQO870Z
+M1SD =E]D;W5B;&4Z1S$P '9?8VAA<E]A<G)A>3I',3,]87(Q.S [,3LR '9?
+M<VEG;F5D7V-H87)?87)R87DZ1S$S '9?=6YS:6=N961?8VAA<E]A<G)A>3I'
+M,30]87(Q.S [,3LU '9?<VAO<G1?87)R87DZ1S$U/6%R,3LP.S$[- !V7W-I
+M9VYE9%]S:&]R=%]A<G)A>3I',34 =E]U;G-I9VYE9%]S:&]R=%]A<G)A>3I'
+M,38]87(Q.S [,3LV '9?:6YT7V%R<F%Y.D<Q-SUA<C$[,#LQ.S$ =E]S:6=N
+M961?:6YT7V%R<F%Y.D<Q-P!V7W5N<VEG;F5D7VEN=%]A<G)A>3I',3@]87(Q
+M.S [,3LX '9?;&]N9U]A<G)A>3I',3< =E]S:6=N961?;&]N9U]A<G)A>3I'
+M,3< =E]U;G-I9VYE9%]L;VYG7V%R<F%Y.D<Q. !V7V9L;V%T7V%R<F%Y.D<Q
+M.3UA<C$[,#LQ.SD =E]D;W5B;&5?87)R87DZ1S(P/6%R,3LP.S$[,3  =E]C
+M:&%R7W!O:6YT97(Z1S(Q/2HR '9?<VEG;F5D7V-H87)?<&]I;G1E<CI',C$ 
+M=E]U;G-I9VYE9%]C:&%R7W!O:6YT97(Z1S(R/2HU '9?<VAO<G1?<&]I;G1E
+M<CI',C,]*C0 =E]S:6=N961?<VAO<G1?<&]I;G1E<CI',C, =E]U;G-I9VYE
+M9%]S:&]R=%]P;VEN=&5R.D<R-#TJ-@!V7VEN=%]P;VEN=&5R.D<R-3TJ,0!V
+M7W-I9VYE9%]I;G1?<&]I;G1E<CI',C4 =E]U;G-I9VYE9%]I;G1?<&]I;G1E
+M<CI',C8]*C@ =E]L;VYG7W!O:6YT97(Z1S(U '9?<VEG;F5D7VQO;F=?<&]I
+M;G1E<CI',C4 =E]U;G-I9VYE9%]L;VYG7W!O:6YT97(Z1S(V '9?9FQO871?
+M<&]I;G1E<CI',C<]*CD =E]D;W5B;&5?<&]I;G1E<CI',C@]*C$P '1?<W1R
+M=6-T.E0R.3US,C1V7V-H87)?;65M8F5R.C(L,"PX.W9?<VAO<G1?;65M8F5R
+M.C0L,38L,38[=E]I;G1?;65M8F5R.C$L,S(L,S([=E]L;VYG7VUE;6)E<CHQ
+M+#8T+#,R.W9?9FQO871?;65M8F5R.CDL.38L,S([=E]D;W5B;&5?;65M8F5R
+M.C$P+#$R."PV-#L[ '9?<W1R=6-T,3I',CD =E]S=')U8W0R.D<S,#US,C1V
+M7V-H87)?;65M8F5R.C(L,"PX.W9?<VAO<G1?;65M8F5R.C0L,38L,38[=E]I
+M;G1?;65M8F5R.C$L,S(L,S([=E]L;VYG7VUE;6)E<CHQ+#8T+#,R.W9?9FQO
+M871?;65M8F5R.CDL.38L,S([=E]D;W5B;&5?;65M8F5R.C$P+#$R."PV-#L[
+M '1?=6YI;VXZ5#,Q/74X=E]C:&%R7VUE;6)E<CHR+# L.#MV7W-H;W)T7VUE
+M;6)E<CHT+# L,38[=E]I;G1?;65M8F5R.C$L,"PS,CMV7VQO;F=?;65M8F5R
+M.C$L,"PS,CMV7V9L;V%T7VUE;6)E<CHY+# L,S([=E]D;W5B;&5?;65M8F5R
+M.C$P+# L-C0[.P!V7W5N:6]N.D<S,0!V7W5N:6]N,CI',S(]=3AV7V-H87)?
+M;65M8F5R.C(L,"PX.W9?<VAO<G1?;65M8F5R.C0L,"PQ-CMV7VEN=%]M96UB
+M97(Z,2PP+#,R.W9?;&]N9U]M96UB97(Z,2PP+#,R.W9?9FQO871?;65M8F5R
+M.CDL,"PS,CMV7V1O=6)L95]M96UB97(Z,3 L,"PV-#L[ '9?8VAA<E]F=6YC
+M.D8R '9?<VEG;F5D7V-H87)?9G5N8SI&,@!V7W5N<VEG;F5D7V-H87)?9G5N
+M8SI&-0!V7W-H;W)T7V9U;F,Z1C0 =E]S:6=N961?<VAO<G1?9G5N8SI&- !V
+M7W5N<VEG;F5D7W-H;W)T7V9U;F,Z1C8 =E]I;G1?9G5N8SI&,0!V7W-I9VYE
+M9%]I;G1?9G5N8SI&,0!V7W5N<VEG;F5D7VEN=%]F=6YC.D8X '9?;&]N9U]F
+M=6YC.D8Q '9?<VEG;F5D7VQO;F=?9G5N8SI&,0!V7W5N<VEG;F5D7VQO;F=?
+M9G5N8SI&. !V7V9L;V%T7V9U;F,Z1CD =E]D;W5B;&5?9G5N8SI&,3  ;&EN
+M:SI4,S,]<S$U,FYE>'0Z,S0]*C,S+# L,S([;&EN:V9U;F,Z,S4]*C,V/68S
+M-"PS,BPS,CMS='5F9CHS-SUA<C$[,#LP.S,X/6%R,3LP.S$[,SD]87(Q.S [
+M,CLR.2PV-"PQ,34R.SL <U]L:6YK.D<S- !T=5]L:6YK.E0T,#UU,30T;F5X
+M=#HS-"PP+#,R.VQI;FMF=6YC.C,U+# L,S([<W1U9F8Z,S<L,"PQ,34R.SL 
+M=5]L:6YK.D<T, !P<FEM87)Y.D<T,3UE<F5D.C L9W)E96XZ,2QB;'5E.C(L
+M.P!C;VQO<G,Z5#0R/65Y96QL;W<Z,"QP=7)P;&4Z,2QP:6YK.C(L.P!N;VYP
+M<FEM87)Y.D<T,@!C;'5N:V5R.D<T,SUE8VAE=GDZ,"QF;W)D.C$L.P!C87)S
+M.E0T-#UE8FUW.C L<&]R<V-H93HQ+#L <W!O<G1S8V%R.D<T- !B;V]L96%N
+M.G0T-3UE1D%,4T4Z,"Q44E5%.C$L.P!B=F%L<SI4-#8]969A;'-E.C L=')U
+M93HQ+#L 8F]O;&5A;C(Z=#0V &UI<V]R9&5R960Z5#0W/65T=V\Z,BQO;F4Z
+M,2QZ97)O.C L=&AR964Z,RP[ &UA:6XZ1C$ +6QG %]S8V-S:60 97AI="YO
+M &9A:V-U+F\ 7V5X:70N;P!C97)R;W(N;P!?96YV:7)O;@!S=&%R= !?;6%I
+M;@!?97AI= !?;6]N8V]N=')O; !M8V]U;G0 7W9?8VAA<@!?=E]S:6=N961?
+M8VAA<@!?=E]U;G-I9VYE9%]C:&%R %]V7W-H;W)T %]V7W-I9VYE9%]S:&]R
+M= !?=E]U;G-I9VYE9%]S:&]R= !?=E]I;G0 7W9?<VEG;F5D7VEN= !?=E]U
+M;G-I9VYE9%]I;G0 7W9?;&]N9P!?=E]S:6=N961?;&]N9P!?=E]U;G-I9VYE
+M9%]L;VYG %]V7V9L;V%T %]V7V1O=6)L90!?=E]C:&%R7V%R<F%Y %]V7W-I
+M9VYE9%]C:&%R7V%R<F%Y %]V7W5N<VEG;F5D7V-H87)?87)R87D 7W9?<VAO
+M<G1?87)R87D 7W9?<VEG;F5D7W-H;W)T7V%R<F%Y %]V7W5N<VEG;F5D7W-H
+M;W)T7V%R<F%Y %]V7VEN=%]A<G)A>0!?=E]S:6=N961?:6YT7V%R<F%Y %]V
+M7W5N<VEG;F5D7VEN=%]A<G)A>0!?=E]L;VYG7V%R<F%Y %]V7W-I9VYE9%]L
+M;VYG7V%R<F%Y %]V7W5N<VEG;F5D7VQO;F=?87)R87D 7W9?9FQO871?87)R
+M87D 7W9?9&]U8FQE7V%R<F%Y %]V7V-H87)?<&]I;G1E<@!?=E]S:6=N961?
+M8VAA<E]P;VEN=&5R %]V7W5N<VEG;F5D7V-H87)?<&]I;G1E<@!?=E]S:&]R
+M=%]P;VEN=&5R %]V7W-I9VYE9%]S:&]R=%]P;VEN=&5R %]V7W5N<VEG;F5D
+M7W-H;W)T7W!O:6YT97( 7W9?:6YT7W!O:6YT97( 7W9?<VEG;F5D7VEN=%]P
+M;VEN=&5R %]V7W5N<VEG;F5D7VEN=%]P;VEN=&5R %]V7VQO;F=?<&]I;G1E
+M<@!?=E]S:6=N961?;&]N9U]P;VEN=&5R %]V7W5N<VEG;F5D7VQO;F=?<&]I
+M;G1E<@!?=E]F;&]A=%]P;VEN=&5R %]V7V1O=6)L95]P;VEN=&5R %]V7W-T
+M<G5C=#$ 7W9?<W1R=6-T,@!?=E]U;FEO;@!?=E]U;FEO;C( 7W9?8VAA<E]F
+M=6YC %]V7W-I9VYE9%]C:&%R7V9U;F, 7W9?=6YS:6=N961?8VAA<E]F=6YC
+M %]V7W-H;W)T7V9U;F, 7W9?<VEG;F5D7W-H;W)T7V9U;F, 7W9?=6YS:6=N
+M961?<VAO<G1?9G5N8P!?=E]I;G1?9G5N8P!?=E]S:6=N961?:6YT7V9U;F, 
+M7W9?=6YS:6=N961?:6YT7V9U;F, 7W9?;&]N9U]F=6YC %]V7W-I9VYE9%]L
+M;VYG7V9U;F, 7W9?=6YS:6=N961?;&]N9U]F=6YC %]V7V9L;V%T7V9U;F, 
+M7W9?9&]U8FQE7V9U;F, 7W-?;&EN:P!?=5]L:6YK %]P<FEM87)Y %]N;VYP
+M<FEM87)Y %]C;'5N:V5R %]S<&]R='-C87( 7U]D8F%R9W, 7U]D8G-U8F, 
+M7U]D8G-U8FX 7U]L9U]F;&%G %]?8VQE86YU< !?7V5X:70 8V5R<F]R %]E
+M<G)N;P                                                      
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+%        
+end
diff --git a/gdb/testsuite/gdb.base/m68k-aout2.u b/gdb/testsuite/gdb.base/m68k-aout2.u
new file mode 100644 (file)
index 0000000..b920961
--- /dev/null
@@ -0,0 +1,2208 @@
+begin 777 m68k-aout2
+M 0(!"P  @    ,          'B0  " @          !-^   )!='[P $(@+E
+M@4GS& 0CS  "  !*N0  (@9G   &80  *DA42%,O DZY   BF$ZY   C9M[\
+M  PO $ZY   F0%B/+P!.N0  )MA.5O_(2.<P $AZ :Q(>   2'H!BDZZ 3;?
+M_     @M0/_P2'@ ($AN_\@O $ZZ 3S?_    ! ,@    "!G"$'Z 79@  $T
+M#&X!"__*9O D/   '__4KO_, H+__@  !H(  @  ( +0KO_0T*[_U$AZ 6)(
+M>   +R[_\"\Z 9@O.@&@+P!(>   3KH S-_\    &"U _^@O+O_,+R[_\"\Z
+M 7@O.@%X+R[_T" "T*[_Z"\ 3KH HM_\    &"8 E*[_S"\"("[_Z-"N_\PO
+M $ZZ )#?_     Q(>@$B2'@  $AZ ,E.N@!F4(\M0/_L2J[_U&8$6(]@(DAX
+M   O "\Z 1@O.@$8+R[_U-:N_] O TZZ $3?_    !Q!^O[(+4C__"UY  ( 
+M /_X+7H ;/_T2&[_Z$AX  $@;O_HT>[_W$Z04(],WP ,3EY.=2!O  Q(>  %
+M8!P@;P <2'@ 1V 2(&\ #$AX $E@""!O !!(>  #3D!E DYU+QA(4$AX  )(
+M>   2'@ !$Y +WP   !_  1(>  !3D      +W5S<B]L:6(O;&0N<V\ +V1E
+M=B]Z97)O       88W)T,#H@;F\@+W5S<B]L:6(O;&0N<V\*    )6-R=# Z
+M("]U<W(O;&EB+VQD+G-O(&UA<'!I;F<@9F%I;'5R90H     $V-R=# Z(&YO
+M("]D978O>F5R;PH @    H   !(    '    !0       $[Y   ER   3E8 
+M $* 8    DY>3G5.5@  0H!@   "3EY.=4Y6  !"@&    ).7DYU3E8  $* 
+M8    DY>3G5.5@  0H!@   "3EY.=4Y6  !"@&    ).7DYU3E8  $* 8   
+M DY>3G5.5@  0H!@   "3EY.=4Y6  !"@&    ).7DYU3E8  $* 8    DY>
+M3G5.5@  0H!@   "3EY.=4Y6  !"@&    ).7DYU3E8  '  8    DY>3G5.
+M5@  < !R &    ).7DYU3E8  &'_   "0D(Y  *P4!/\  $  K!2$_P  @ "
+ML%0S_  #  *P5C/\  0  K!8,_P !0 "L%IP!B/   *P7' '(\   K!@< @C
+MP  "L&1P"2/   *P:' *(\   K!L< LCP  "L' C_$+(     K!T(_Q :0  
+M  *P>$*Y  *P?!/Y  *P4  "L( 3^0 "L%(  K""$_D  K!4  *PA#/Y  *P
+M5@ "L(@S^0 "L%@  K",,_D  K!:  *PD"/Y  *P7  "L)@C^0 "L&   K"@
+M(_D  K!D  *PJ"/Y  *P:  "L+ C^0 "L&P  K"X(_D  K!P  *PP"/Y  *P
+M=  "L,@C^0 "L'@  K#0(_D  K!\  *PU"/\  *P4  "L. C_  "L%(  K#D
+M(_P  K!4  *PZ"/\  *P5@ "L.PC_  "L%@  K#P(_P  K!:  *P]"/\  *P
+M7  "L/@C_  "L&   K#\(_P  K!D  *Q "/\  *P:  "L00C_  "L&P  K$(
+M(_P  K!P  *Q#"/\  *P=  "L1 C_  "L'@  K$4< (CP  "L1@CP  "L1QP
+M 2/   *Q("/   *Q)"/Y  *Q*  "L3 S^0 "L<   K'(3EY.=0  3E8  "\+
+M+PI"@$'Y  *R#$J09PA82%* 2I!F^$J ;Q1'^0 "L@A%\PP (%).D%E*M\IM
+M]B1N__@F;O_\3EY.=4Y6   O"D7Y  *R%$J29P@@6DZ02I)F^$*G2'D  "5 
+M8?\   #F)&[__$Y>3G5.5@  2KD  @ \9@IP 2/   ( /&&\3EY.=4CG@,!.
+MN0  *\A*0&<,3KD  "MH3-\# 4YU2'@ /4AZ !9(>  "3KD  ";.2'@ 8TZY
+M   FV$U#-C@X.#$@9FQO871I;F<@<&]I;G0@;F]T(&%V86EL86)L92 M+2!P
+M<F]G<F%M(')E<75I<F5S(&ET"@       $Y6__A(UR" +BX "& 4(^T "  "
+MLA@O+0 $+P<@54Z04$\J>0 "LAA*C6;B3KD  ";P+P=.N0  )MA83TSN((#_
+M^$Y>3G4  $Y6__PNC4AX  Q.N0  +PA83RI 2HUF!'#_8!HJK@ (*VX #  $
+M*WD  K(8  @CS0 "LAAP "IN__Q.7DYU  !.^0  )N!(>  $3D!E\DYU2'@ 
+M 4Y    CP  " $1P_TYU        3E8  $AY   G!DZY   W(%A/3EY.=4Y6
+M__A(UR" *FX "'[_2HUG<# M ! "@    0-G.C M ! (   &9C P+0 0"   
+M F<$?@!@#$A53KD  ">46$\N ! M !))P"\ 3KD  #AV6$]*@&P"?O\P+0 0
+M"    V<0+RT "$ZY   P'EA/0JT "$)M !!"E2MM  @ !$*M  P@!TSN((#_
+M^$Y>3G5.5O_\+HTJ;@ (,"T $ @   %F)F \,"T $ @   %G)$JM  AG'B M
+M  2PK0 (8Q1(54ZY   I8EA/,"T $ @   )GTC M ! (   %9P1P_V "<  J
+M;O_\3EY.=4Y6_^Q(UR# *FX #!PN  LP+0 0 H    "2#(    ""9CP@+0 (
+MT*T #+"M  1C  "\(&T !%)(*T@ !!%&__\,!@ *9@ !'DA53KD  "EB6$]^
+M_["'9@ !#&   00P+0 0?A; AWX&L(=F,!U&__]"E4AX  %(;O__$"T $DG 
+M+P!.N0  )LY^ ;"'9P  U@!M "  $'#_8   SC M !!^$L"'?@*PAV8@2JT 
+M"&<:("T !+"M  AF)$J59B P+0 0 H    "$9A1(54ZY   IYEA/2H!G!G#_
+M8   C# M ! "@    (1F /\F2%5.N0  *6)83U.5;1 @;0 $4D@K2  $$4;_
+M_V!,,"T $ @   =G,B 51("PK0 ,;"@@;0 $$(8,!@ *9Q @;0 $4D@K2  $
+M$"C__V <2%4@;0 $<  0$& &2%5P ! &+P!.N0  )_!03S M ! (   %9P1P
+M_V $<  0!DSN(,#_[$Y>3G5.5O_P2-<PP"IN  @H;0 (+"T !)R,*TP !# M
+M ! "@    (1G!'X 8 0N+0 ,*H=*E6P$?@!@ BX5("T "-"M  R0K0 $L(=L
+M"DA53KD  "M 6$]*AF\@+P9(5! M !))P"\ 3KD  ";.O(!G"@!M "  $'#_
+M8 )P $SN,,#_\$Y>3G5.5O_X2-<@@"IN  @P+0 0?A+ AWX"L(=G'C M ! "
+M@    0)F!'#_8&AP[\!M !!R H!!.T  $# M ! (   &9DY*K0 (9@I(54ZY
+M   J@EA/("T !+"M  AF-# M ! "@    (1F*"JM  Q*E6P$?@!@ BX5("T 
+M"-"M  R0K0 $L(=L"DA53KD  "M 6$]P $SN((#_^$Y>3G5.5O^T2-<@P"IN
+M  @0+0 22< L # M ! (   "9Q8@>0 " I1!\&X *T@ "'X(*T< #&!Z+P9.
+MN0  -7!83TJ 9PX ;0"  ! N/    (!@'DAN_\0O!DZY   XAE!/2H!M!BXN
+M__!N!BX\   $ " '4( O $ZY   O"%A/*T  "&<, &T "  0*T< #& @('D 
+M @*40?!N "M(  A^""M'  P";?]_ !  ;0 $ ! K;0 (  1,[B# _[1.7DYU
+M3E;_]")N  @@:0 (T>D #" (D*D !&H&(T@ !& &L)%L B* 3EY.=4CGP, @
+M.0 " $P,0  $9@8P/  28"0,0  #9@8P/  .8!@,0  "9@8P/  *8 P,0  !
+M9@8P/  &3G%!^0 "JZQ@!B-Q     B)8L_P     9O!.0DS? P-.=0      
+M $[Y   KZ   3E8  '(!(\$  K(<(&X $%RH  Q.7DYU3E;_Y"Z'2KD  @!8
+M9QH,N0    (  @!89@  Q'X#(\<  @!,8   N"U\   KT/_T0J[_^$*N__Q(
+M;O_H2&[_]$AX  =.N0  -Z!/[P ,0KD  K(<3KD  #H82&[_]$AN_^A(>  '
+M3KD  #>@3^\ #$JY  *R'&<$?@%@ GX"(\<  @!8#+D    "  ( 6&9.?@,C
+MQP " $Q.N0  .C!*@&8V2'D  "S@2'D  @+$3KD  #EP4$](>0  +2!(>0 "
+M L1.N0  .7!03TAY  ("Q$ZY   GE%A/3KD  #H8#+D    "  ( 6&8$< %@
+M G  +B[_Y$Y>3G4*(%!L96%S92!N;W1E.B!-0S8X.#@Q('5P9W)A9&4@=&\@
+M03DS3B!M87-K(&UA>2!B92!A9'9I<V%B;&4N( H 4V5E($9L;V%T:6YG+5!O
+M:6YT(%!R;V=R86UM97(G<R!'=6ED92X* $Y6_^Q(US#@*'P  @"P*E0J+@ ,
+M+"X "& 0O*T "&0$*$U@!$GM  0J5$J-9@1^ & $+BT #+Z%9.!.N0  -(0N
+M &=$*(<@1T*00J@ !"%&  @A10 ,($8@A2A'6(=*C6<>O*T "&,,*(U)[0 $
+M*FT !& (($<@C2X-*E5*C6;BF\T@1R"-*(U,[C#@_^Q.7DYU3E;_Z$C7,/ J
+M;@ (*%4L%&8$> !@!B!&*"@ #"XL  1F!'H 8 8@1RHH  R\AV=TN(5E.$J&
+M9VA*A&8:($8@*  (6( O $AY  ( \$ZY   U7%!/8$XJAEB&*D8L%68$> !@
+M/"!&*"@ #& T2H=G,$J%9AH@1R H  A8@"\ 2'D  @$$3KD  #5<4$]@%BJ'
+M*D<N%68$>@!@!B!'*B@ #+R'9HQ"E4A43KD  #5"6$],[C#P_^A.7DYU3E;_
+MY$C7,( J;@ ((%5*B&8$< !@!" H  PH4")H  1*C&8$?@!@)BXL  Q@(+Z!
+M918JC$OL  0H54J,9@1^ & 8+BP #& 2*HDJ22)52HEF!'( 8 0B*0 ,OH!B
+MT+* 8LPJB"",(4D !$SN,(#_Y$Y>3G5.5O_D2-<P^"@N  A8A'X(N(=D!'@(
+M8 96A.2,Y8Q*N0 " +!F!'H 8 H@>0 " + J*  ,NH1D%"\$3KD  #/(6$]*
+M@&8&< !@  #"*'P  @"P*E1@(+Z&8@R^A&042>T !"I#8!"\A&4(2>T !"I#
+M8 0H32I%*A4F+0 $2H5F!'X 8 8@12XH  Q*@V8$? !@!B!#+"@ #+Z$9+J\
+MA&2V("T #)"$?@BPAV(0*BT "$A43KD  "W:6$]@+BHM  @N!=Z$($4F$):$
+M*T, #"!'((-2N0 " '0K1P (2%1.N0  +I183R!%((0@12 0T;D  @"D4KD 
+M @"HN+D  @"89 92N0 " 'A8A2 %3.XP^/_D3EY.=4Y6_^!(US#\)"X "! "
+M?@/ AV<6+P)(>0 " 1A.N0  -5Q03W  8   \+2Y  ( M&4(M+D  @"X8PY^
+M%B/'  ( 1'  8   TBP"688@1B@0F;D  @"D4[D  @"H*'P  @"P*E1*C6< 
+M *(N+0 ()BT #+R'9#@J!MJ$NH=F%-B#4[D  @!T2%1.N0  +=I83V!PNH=C
+M%"\'+P9(>0 " 5=.N0  -5QP &!N*$U@5+R'8SPJ!]J#NH9F%BP'V(-3N0 "
+M '1(5$ZY   MVEA/8#*ZAF,4+P)(>0 " 79.N0  -5Q03W  8#!)[0 $8!0O
+M DAY  (!F$ZY   U7%!/< !@%BI42HUF /]B+P0O!DZY   M2%!/< %,[C#\
+M_^!.7DYU3E;_\$C7,, H;@ (+"X $"XN  R>AG((OH%E($OT:  JARB&4KD 
+M @!T4KD  @"H2&T !$ZY   P'EA/6$P@#$SN,,#_\$Y>3G5.5O_@2-<X^"IN
+M  @@#7X#P(=F$+OY  ( M&4(N_D  @"X8Q9(54AY  (!NDZY   U7%!/< !@
+M  #T1^W__"@30?-( "P(2'@  2\$2%-.N0  ,L!/[P ,?O^PAV8&< !@  #*
+M+BX #%B'>@B^A60$=@A@"%:'Y(_ECR8'N(-E$"\#+P1(4TZY   Q0&   )Z\
+MN0 " +AD8BA\  ( L"I4($8J$& *2>T !& "*$TJ5$J-9@1^ & $+BT #+Z%
+M93HN+0 (O(=EY+R'8MHN!-Z%OH-E)DA43KD  "W:6$]3N0 " '3;N0 " *0F
+MAR\#+P=(4TZY   Q0& R+RX #$ZY   O"%A/*D!*C6<>6$M9A"\$2%5(4TZY
+M   ]"$_O  Q(4TZY   P'EA/( U,[CCX_^!.7DYU3E;_Y$C7/. J+@ ,+"X 
+M""1&U<4F?  " +!@""9-8 1'[0 $*E-*C68$?@!@!"XM  R^A64  ,8H;0 (
+MO(QF'$A33KD  "W:6$_;N0 " *12N0 " *AP 6   *2\C&6\+@S>E+R'9+BU
+MQV,:2JX $&<0+P9(>0 " D=.N0  -5Q03W#_8'BUQV8N2%-.N0  +=I83U*Y
+M  ( =-NY  ( I%2Y  ( J)N42&P !$ZY   P'EA/< %@1DA33KD  "W:6$]4
+MN0 " '0@%-&Y  ( I%:Y  ( J" 'D(:1E)Z*)(=(;  $3KD  # >6$](:@ $
+M3KD  # >6$]P 6 "< !,[CS@_^1.7DYU3E;_]$C7(,!*N0 " &QF(DZY   X
+MIB/   ( ;$ZY   TA"I 2HUG.DA53KD  #5"6$\N.0 " &Q3A]ZN  A,>7 '
+M  ( ;$PY< <  @!L+ <O!DZY   XX%A/*D!R_[O!9@1P &!,2KD  @"T9@8C
+MS0 " +1!]6@ (\@  @"X*H<@.0 " +B0N0 " +0CP  " '#?N0 " *12N0 "
+M '12N0 " *A(;0 $3KD  # >6$]P 4SN(,#_]$Y>3G5.5O_X2-<@@$JY  ( 
+MQ&<6*GD  @#$('D  @#$(]   @#$8   CDJY  ( P&YP+CP  " $+P=.N0  
+M..!83RI <O^P@6822'D  @)Y3KD  #5<6$]P &!<2KD  @"T9@8CS0 " +0J
+MAT'M  0CR  " +PC_    @   @# 0?5X "/(  ( N" Y  ( N)"Y  ( M"/ 
+M  ( <-^Y  ( K%.Y  ( P"IY  ( O'X0W[D  @"\( U,[B" __A.7DYU3E8 
+M "!N  @@N0 " ,0C[@ (  ( Q$Y>3G5.5@  <A8CP0 " $1.7DYU     $Y6
+M_^@NARXY  ( 1$AN_^Q(>4 25 $O+@ (3KD  #BV2H!L"B/'  ( 1'  8 )P
+M 2XN_^A.7DYU3E;__"Z-2KD  JZL9C@J?  " IPP+0 0 H    $#9@0@#6!H
+M2^T %+O\  (%'&7D3KD  #8\2H!F#'(,(\$  @!$< !@1BIY  *NK$J59R0@
+M53 H ! "@    0-G%EA-N_D  JZP9>1R&"/!  ( 1'  8!A*E6822'@ %$AX
+M  %.N0  /9!03RJ (!4J;O_\3EY.=4Y6__A(UR" 3KD  #B6+@!(>  $+P=.
+MN0  /9!03R/   *NK$JY  *NK&8$< !@7" 'YX O $ZY   O"%A/(\   @*4
+M9A@O.0 "KJQ.N0  ,!Y83T*Y  *NK'  8"X@>0 "KJQ!\'P (\@  JZP+CP 
+M @*<*GD  JZL8 8JQW(4WH$,AP "!1QE\G !3.X@@/_X3EY.=4Y6__PNC4JY
+M  *NK&8*3KD  #8\2H!G+BIY  *NK+OY  *NL&0@2I5F$DAX !1(>  !3KD 
+M #V04$\J@%A-N_D  JZP9> J;O_\3EY.=4Y6__PNC4JN  AG9DJY  *NK&8J
+M*GP  @*<,"T $ *    ! V<*2%4@;@ (3I!83TOM !2[_  "!1QD-F#<*GD 
+M JZLN_D  JZP9"9*E6<8(%4P*  0 H    $#9PHO%2!N  A.D%A/6$V[^0 "
+MKK!EVBIN__Q.7DYU        3E;_V$C7/. N+@ (;P9\(+Z&;09^%F   *8D
+M;@ 0+"X #" '4X!R >&A+P%.N0  .,983RH 2_D  K(@2_5\ "952%(O!B\'
+M3KD  #EF3^\ #$J :U9*AF<V0>[_]")&(-D@V2#92>[_]"P49PYR ;R!9P@J
+MABB\   Y&$*G2%0O!TZY   Y9D_O  Q*@&L<2HIG"@R2   Y&&8")(LO!4ZY
+M   XUEA/< !@&BXY  ( 1"\%3KD  #C66$\JBR/'  ( 1'#_3.X\X/_83EY.
+M=4[Y   FX$AX  9.0&7R3G5.^0  )N!(>  ^3D!E\DYU3OD  ";@2'@ 64Y 
+M9?).=4[Y   FX$AX $!.0&7R3G5.^0  )N!(>  V3D!E\DYU3OD  ";@2'@ 
+M;4Y 9?).=4[Y   FX$AX &Y.0&7R3G4@+P $5H!R_,"!T+D  @4<+T  !$AX
+M !%.0&40(#D  @4<(^\ !  "!1Q.=4[Y   FX        $CGP,!.N0  .G @
+M+P$0Y8@@?  "LB @< @ +R\!'"\O 1PO+P$<+R\!'$Z0W_P    03KD  #JX
+M3-\# ]_\    "$AX (M.0$[Y   FX$AX &Q.0&7R3G5.5OOX2-<@@"IN  A!
+M[@ 0+@@P+0 0"    686,"T $ @   AG" !M  ( $& $</]@:C M ! (   "
+M9TX";?_[ !!![OP *T@ "$'N_  K2  $*WP   0   Q(52\'+RX #$ZY   ]
+MX$_O  PN $A53KD  ">46$\ ;0 $ !!"K0 (0JT #$*58!!(52\'+RX #$ZY
+M   ]X"X ( =,[B" ^_A.7DYU  #R.IP   1.=0                    #R
+M.E04 "CR &0 #( E@   9A;R.E0  ![R &0 #(  @   9@1P 6 "0H!.=3_P
+M       !. ____X         G_P   #\+R\ _$'O  0@* $0(, ,0  (9RP@
+M.0 " $P@P Q   1F"$ZY   [YF 6#$   V8(3KD  #KZ8 @,0  "9@)A6DYU
+M0>\ !" 8#$  "&<J(!@,0  $9@A.N0  /&!@&@Q   -F"$ZY   [!F ,#$  
+M F8&3KD  #MV+U<! -_\   ! $YU\A#PP/(HO   &$YU\AC0P/(0G !.=2)Y
+M  (%U# I__X(   .9P@Q?!!C "!@(DII__YJZ$AH " O/$ "   O.0 "LJ!.
+MN0  .+;?_     PS?!!C__PS?!! __P@D2%1  0A40 ((5$ #"%1 ! A40 4
+M(5$ &"%1 !Q.=2)Y  (%U# I__X(   .9P)@(DII__YJ[DAH "0O/$ "   O
+M.0 "LJ!.N0  .+;?_     PS?!!C__PS?!!!__PBD"*H  0BJ  ((J@ #"*H
+M ! BJ  4(J@ &"*H !PP*?_^"   #F?V,V@ (/_\3G7R$/# T?P    8\AB\
+M ")\X  /%"#9(-D@V2#9(-D@V2#9(-D@V2#9(-DC_     #@  ^$(GS@  X 
+M(-D@V2#9(-D@V2#9(-D@V2)\X    "-\      \<(WP     #Q0C?     ((
+MT/(\B       \CR0      !.=2/\     .  #X3R&-# \AB< -'\    +")\
+MX  , "+8(M@BV"+8(M@BV"+8(MB1_    $PB?.  #Q0BV"+8(M@B?.     @
+M*  8 H     /(T (T"-H !P)6"-\      G$(!!!Z  (3KD  #S>("C__$'H
+M  A.N0  /-Y.=4A "   #V8: D ?_".0  !(0 @   ]F"@) '_PCJ  $  !.
+M=0       "!O  0B;P (("\ #&],(@F2B&P   1$@;* ;0  0#((" $  &<$
+M$MA3@"()" $  &8>(@#DB& "(MA1R/_\0D!3@&3T( $"@     -@ A+84<C_
+M_$) 4X!D]$YUL\AN$& "$MA1R/_\0D!3@&3T3G71P-/ 8 (3(%'(__Q"0%. 
+M9/1.=0    !.5O_X2-< P"PN  A,+F &  PO!DZY   O"%A/+@!F!'  8 XO
+M!B\'3KD  $_X4$\@!TSN ,#_^$Y>3G5.5@  +RX "$ZY   P'EA/3EY.=4Y6
+M]H!(USS\3KD  %XV($ @4!U0__]"KO_X?@$M1__T0J[_\"UN  S_Y"UN_^3_
+MZ"UN_^C_["UN_^S_X"IN  @<'6=&)FX $# K !!^$L"'?@*PAV8@2JL "&<:
+M("L !+"K  AF*DJ39B8P*P 0 H    "$9AI(4TZY   IYEA/2H!G#'#_8  .
+M>'  8  .<G0 )&L !"X30>[VQ"U(]K!![O;$+4CVM$'N]L0M2/;4# 8 )6< 
+M BA3AVHL,"L $ *     A&<*( =$@+"K  QM%B=*  1(4TZY   I8EA/)&L 
+M!"X34X<4QE*"8  -NB!N_^@H4%BN_^A*C&8&*'D  @4D'!QG  V@4X=J+# K
+M ! "@    (1G"B '1("PJP ,;18G2@ $2%-.N0  *6)83R1K  0N$U.'%,92
+M@F#$(&[_Z" 0' !8KO_H4X=J+# K ! "@    (1G"B '1("PJP ,;18G2@ $
+M2%-.N0  *6)83R1K  0N$U.'%,92@F  #28@;O_H+!!8KO_H2H9J1%.':BPP
+M*P 0 H    "$9PH@!T2 L*L #&T6)TH !$A33KD  "EB6$\D:P $+A-3AQ3\
+M "U2@D2&8 H@;O_H+!!8KO_H*'D  @4H2>[[WRHY  (%*" &3'P  0    H@
+M11DP& !,?& &    "F;F8   B"HY  (%+"!N_^@L$%BN_^A)[OO?2H9G  "X
+M2H9G:' /P(8@11DP" #HCF;R8%@J.0 "!2@@;O_H+!!8KO_H2>[[WTJ&9P  
+MBDJ&9SIP#\"&($49, @ Z(YF\F J*CD  @4H(&[_Z"P06*[_Z$GN^]]*AF=<
+M2H9G#G 'P(8@11DP" #FCF;R0>[[WR8(N<-D  P4'!Q3AVHL,"L $ *     
+MA&<*( =$@+"K  QM%B=*  1(4TZY   I8EA/)&L !"X34X<4QE*"N<-EQF  
+M"]9\,&  _G1536!.($U231 02<!\>+"&8NY!^@ P<@VP&%3)__QFX# [$@9.
+M^P "_H+_7O[*_P+^/OZ"_]S^@O_<_U[_,/WN_LK_,'AU<W!O;&EH9&-854]$
+M0B[[TT(N^])"+OO10B[[T$(N^\]"+OO.8"8=?  !^])@'AU\  '[T6 6'7P 
+M ?O08 X=?  !^\]@!AU\  '[SE)-$!5)P'P@L(9GWGPCL(9GX'PKL(9GPGPM
+ML(9GQ'PPL(9GUF!<2J[_]&<:2&[[ "\N_^0O+@ (3KD  $SJ3^\ #$*N__0,
+MK@   #+_\&X4("[_\$/V#2#Z_"U)]JHM4?_H8!PM;OO$_^@O+O_P2&[_Z"\N
+M  A.N0  3GY/[P ,4DT,%0 J9@  HE)-2&[[R$A53KD  $^>4$\J &=T2J[_
+M]&<:2&[[ "\N_^0O+@ (3KD  $SJ3^\ #$*N__0,K@   #+[R&X4("[[R$/V
+M#2#Z_"U)]JHM4?_@8!PM;OO$_^ O+OO(2&[_X"\N  A.N0  3GY/[P ,(&[_
+MX"P06*[_X$J&:@A$AAU\  '[T2I%8$@@;O_H+!!8KO_H2H9J.D2&'7P  ?O1
+M8#!\ $*N__!@%A =2<!Z,)"%W(8B!N6!W('<@"U&__ 0%4B 0?D  @7="#  
+M @  9M@,%0 N9@  O%)-#!4 *F8  (I234AN^OQ(54ZY  !/GE!/* !G:$JN
+M__1G&DAN^P O+O_D+RX "$ZY  !,ZD_O  Q"KO_T#*X    R^OQN%" N^OQ#
+M]@T@^OPM2?:J+5'_[& <+6[[Q/_L+R[Z_$AN_^PO+@ (3KD  $Y^3^\ #"!N
+M_^PJ$%BN_^PJ1& V(&[_Z"H06*[_Z& J>@ 0%4B 0?D  @7="#   @  9Q80
+M'4G >#"0A-J%(@7E@=J!VH!@VGK_#!4 )&< _@)"KOKX+7P  @5$^O1"KOKP
+M+7P  @5$^NQ@  9H'7P  ?O38  &7AU\  KZZV .'7P "/KK8 8=?  0^NM*
+MA6P">@$@;O_H*!!8KO_H#"X 9/KJ9Q ,+@!$^NIG" PN &GZZF8N2H1L#"U\
+M  (%1?KT1(1@'DHN^])G"BU\  (%1_KT8 Y*+OO09P@M?  "!4GZ]$HN^\YG
+M%B\N^O1.N0  4)!83RA&F<"YQ6\"*@P,+@!8^NIF""8Y  (%+& &)CD  @4H
+M2>[[WQ N^NM)P'((L(%G"'(0L(%G%F! 2H1G0' 'P(0@0QDP" #FC&;R8#!*
+MA&<L< _ A"!#&3 ( .B,9O)@'" $3'P  0    H@0QDP& !,?$ $    "DJ$
+M9N1![OO?)@@@#)"#T(4M0/KX2B[[SV< !;:YPV8R8  %K@RN     ?KX;  %
+MHGH!+47Z^&  !9@M?  "!4OZ]&  !8PM?  "!4[Z]&  !8 0+OKJ2<!Z6+"%
+M9^AZ;["%9\!Z>+"%9]!@  5D2H5L GH&2B[[TV8X(&[_Z"U0^N M:  $^N10
+MKO_H2&[VV$AN^MA(;OK<( 52@"\ +R[ZY"\N^N!.N0  8?A/[P 88#8H;O;4
+M=A#6C"!N_^@HT%BN_^BYPV7R2&[VV$AN^MA(;OK<( 52@"\ 2&[VQ$ZY  "(
+M<$_O !0H0$JN^MAG"BU\  (%4?KT8!Y*+OO29PHM?  "!5/Z]& .2B[[T&<(
+M+7P  @55^O0,+@ Y]MAO%DGN]MA![  !)@@@0TH09P  SE*#8/1![OO4)@A*
+M%&<$&!Q@ G@P($,0A%*#2H5F!DHN^\]G""!#$*[__U*#+47Z\& .2A1G$%.N
+M^O @0Q"<4H-*KOKP;NQ)[OO4#"X ,/;89Q8J+OK<4X5J$$2%8 Q![O; *@AX
+M!& X>@!(;O:^<  P!2\ 3KD  'B04$]"+O;">&2ZA&W8#(4   /H; I![O:_
+M*@AX!6 (0>[VOBH(> 8M1/:X4X4H!4JN^MQN" PN ##VV&8$>BM@ GHM($00
+MA5.$+43Z["!$$*[ZZDHN^]%F!'H!8 )Z ! N^\Y)P,"%9P #O"\N^O1.N0  
+M4)!83T'N^]0B Y*(T('0KOKPT*[VN"(&DH M0?KX8  #DDJ%; )Z!DHN^]-F
+M-"!N_^@M4/K@+6@ !/KD4*[_Z$AN]MA(;OK82&[ZW"\%+R[ZY"\N^N!.N0  
+M8LY/[P 88#(H;O:T=A#6C"!N_^@HT%BN_^BYPV7R2&[VV$AN^MA(;OK<+P5(
+M;O;$3KD  (E&3^\ %"A 2J[ZV&<*+7P  @57^O1@'DHN^])G"BU\  (%6?KT
+M8 Y*+OO09P@M?  "!5OZ] PN #GVV&\62>[VV$'L  $F""!#2A!G  +64H-@
+M]$'N^]0F""@N^MQN"B!#$+P ,%*#8!9*%&8(($,0O  P8 0@0Q"<4H-3A&;J
+M2B[[SV8$2H5O""!#$*[__U*#* 4@!9"%+4#Z\& <4J[ZW$JN^MQO!$H49@@@
+M0Q"\ #!@!"!#$)Q2@U.$:N!*+OO19@8X?  !8 *9S! N^\Y)P"(,P(%G(B\N
+M^O1.N0  4)!83T'N^]0B Y*(T('0KOKP(@:2@"U!^OA)[OO48  ")$J%; 1Z
+M!F &2H5F GH!2B[[TV8T(&[_Z"U0^N M:  $^N10KO_H2&[VV! N^\])P"\ 
+M+P4O+OKD+R[ZX$ZY  !EKD_O !1@,BAN]K!V$-:,(&[_Z"C06*[_Z+G#9?)(
+M;O;8$"[[STG +P O!4AN]L1.N0  BCQ/[P 02>[VV PN "WVV&8,+7P  @5=
+M^O123& >2B[[TF<*+7P  @5?^O1@#DHN^]!G""U\  (%8?KT$"[ZZDB 0?D 
+M @7="#      9RHF#& *($,,$ !E9PA2@R!#2A!F\"!##!  968$$+P 12!#
+M2A!G$%*#8/8F#& "4H,@0TH09OA"KOKP2B[[T68$>@%@ GH $"[[SDG P(5G
+M  $.+R[Z]$ZY  !0D%A/(@.2C-"!(@:2@"U!^OA@  #P(&[_Z" 0'4#[U%BN
+M_^A)[OO40>P  28(8   U"!N_^@H4%BN_^A*A6H&*CQ_____2HQF!BAY  (%
+M)'@ 8 :XA6P(4H0=7/:O9O1*+OO19@1Z 6 ">@ 0+OO.2<# A6<(( :0A"U 
+M^OA33"8,F<1@?GH!+47_^&!V2>[ZZD'L  $F"&!J($U231U0^NH0+OKJ2<!X
+M>+"$8N!!^@ ^<A2P&%3)__QFTC [$@9.^P " G#Y>OK>_A[Y</F"^7KYBO]2
+M^7KZWORP_A[_UOEZ_];_POF"_V[Y>OF*>'5S;VYL:6AG9F5D8UA53TQ'140 
+M $JN^O!L!'H 8 0J+OKP2J[Z^&P$> !@!"@N^O@O+OKT3KD  %"06$\M0/:J
+M+R[Z[$ZY  !0D%A/G(6<@" #D(R<@)R$G*[VJDHN^]%F>F V4X=J+# K ! "
+M@    (1G"B '1("PJP ,;18G2@ $2%-.N0  *6)83R1K  0N$U.'%/P (%*"
+M4X9JQF \4X=J+# K ! "@    (1G"B '1("PJP ,;18G2@ $2%-.N0  *6)8
+M3R1K  0N$U.'(&[Z]!304H)2KOKT(&[Z]$H09KQ@-E.':BPP*P 0 H    "$
+M9PH@!T2 L*L #&T6)TH !$A33KD  "EB6$\D:P $+A-3AQ3\ #!2@E.N^OAJ
+MQ+G#9'!3AVHL,"L $ *     A&<*( =$@+"K  QM%B=*  1(4TZY   I8EA/
+M)&L !"X34X<4W%*"N<-ER& V4X=J+# K ! "@    (1G"B '1("PJP ,;18G
+M2@ $2%-.N0  *6)83R1K  0N$U.'%/P ,%*"4Z[Z\&K$8#Q3AVHL,"L $ * 
+M    A&<*( =$@+"K  QM%B=*  1(4TZY   I8EA/)&L !"X34X<@;OKL%-!2
+M@E*N^NP@;OKL2A!FO$HN^]%G/& V4X=J+# K ! "@    (1G"B '1("PJP ,
+M;18G2@ $2%-.N0  *6)83R1K  0N$U.'%/P (%*"4X9JQ@RN     ?_X9A @
+M;O_H(%!8KO_H(()"KO_X'!UF /($)TH !":',"L $ *     A&<P,"L $ @ 
+M  )F')7K  @O"DAX  HO*P (3KD  %*(3^\ #$J 9PI(4TZY   I8EA/,"L 
+M$ @   5G!'#_8 (@ DSN//SV@$Y>3G5.5O\<2-<\X$AX ,A"ITAN_SA.N0  
+M4#A/[P ,>O]\ "AN  A(>  E2%1.N0  80A03RX 9P  _E*'*$<O.0 "!3!(
+M5$ZY  !A6%!/+@ ,-  D> !F$DA43KD  %"P6$]3@"P 4H?9QWX ( ;E@$?V
+M"2#_."\Y  (%-$A43KD  &%84$_9P"1,4DP0$DG <G.P@6)@0?H :G(*L!A4
+MR?_\9E(P.Q(&3OL  O]Z !P )@ F "8 )@ F !8 .  R "P !P !8*X !P "
+M.GP  6 \.GP !& V.GP  V P.GP !F J" <  &<&.GP !V >.GP "& 8" < 
+M &?0.GP  F ,<W!N;&=F94=%*B4 2H9M#G(RO(%L"":-NH9L BH&4H982P@'
+M  %G /[\"H<    "8 #_0GX 2H5M4$ON_S@L+@ 0(D8BK@ ,2I5F$G(!*H%@
+M#%"N  Q@*%BN  Q@(B 54X!R!["!8A@P.PH&3OL  O_H_^C_Z/_B_^+_Z/_H
+M_^A2AUB&6$V^A6^X3.X\X/\<3EY.=4Y6_]Q(USSX)&X "'HR+ 4J;@ ,)BX 
+M$& ,NH-G  #R6)52A5*&*$IX & "4H:Z@V<  -A(>  E2%1.N0  80A03RX 
+M9P  Q%*'*$<O.0 "!3A(5$ZY  !A6%!/+@ ,-  D> !F$$A43KD  %"P6$\L
+M %*'V<>ZAF:R> %^ "\Y  (%/$A43KD  &%84$_9P"9,4DP0$TG <G.P@6)"
+M0?H 2'(*L!A4R?_\9C0P.Q(&3OL  O]V !P )  D "0 )  D !8 +  @ "  
+M!P !8*X !P "6)5@' @'  !0E6 4" <  %B58 QS<&YL9V9E1T4J)0!2A5*&
+M" <  6< _S *AP    )@ /]V2H1G /\,2H1F /\23.X\^/_<3EY.=4Y6__1(
+MUP# ?@!\ ")N  A@%%*&WH<B!^6!WH$2&4G!WH%R,)Z!$!%(@$'Y  (%W0@P
+M  (  &;:2H9G$@P1 "1F#"!N  P@AU))( E@ G  3.X P/_T3EY.=2)O  0@
+M+P (;S)"@0@O    !V<$$L%3@"! Y(A@ B+!4<C__$) 4X!D]" ("    6<"
+M,L$(    9P(2P4YU   B+P (9PX0 >&)$@#AB1( X8D2 ")O  0@+P ,;S (
+M+P    =G!!+!4X @0.2(8 (BP5'(__Q"0%. 9/0@" @   %G C+!"    &<"
+M$L$@+P $3G4     (&\ !")(<O]*&5?)__QF /_X4XF3R" )3G4       !.
+M5O_P2-< P")N  AR ! 12< N $'Y  (%W0@P  )X &9$0?D  @7="#   W@ 
+M9Q9221 12< N &#H<@%221 12< N & .( =\*["&9^Y\+;"&9^9!^0 "!=T(
+M,  "> !F!'  8#)\,)R'8 [<AB &Y8#<@' PD(?<@%))$!%)P"X 0?D  @7=
+M"#   G@ 9MQ*@68"1(8@!DSN ,#_\$Y>3G4       !.5O_\0?D  @7=T>X 
+M"! 0<@/ @4Y>3G5.5O_\0?D  @7=T>X "! 0<@' @4Y>3G5.5O_\0?D  @7=
+MT>X "! 0<@+ @4Y>3G5.5O_\0?D  @7=T>X "! 0<@3 @4Y>3G5.5O_\0?D 
+M @7=T>X "! 0<D# @4Y>3G5.5O_\0?D  @7=T>X "! 0<@C @4Y>3G5.5O_\
+M0?D  @7=T>X "! 0<A# @4Y>3G5.5O_\0?D  @7=T>X "! 0<@? @4Y>3G5.
+M5O_\0?D  @7=T>X "! 0 H    "73EY.=4Y6__Q!^0 "!=W1[@ ($!!R%\"!
+M3EY.=4Y6__Q!^0 "!=W1[@ ($!!R(,"!3EY.=4Y6__QP  RN    ?P (4\!$
+M $Y>3G5.5O_\("X "')_P(%.7DYU3E;_\$C7 , @;@ ($BX #RXN !!3AVL,
+M'!B\ 6;V4T@@"& "< !,[@# __!.7DYU3E;]O$C7 /!*.0 "LM!F!DZY  !@
+MDB@N  @J+@ ,9@ $ DJ$9@  EG@ ?@ L/  "LM J/  "LM\O!2\&3KD  &$H
+M4$]*@&824H=R#]J!W(%R!KZ!;>)*A&=82'D  K+02'D  J[$3KD  (OX4$]^
+M#P:'  *RT"P\  *S.4AY  ((5$AY  *NQ$ZY  "+T%!/+P=(>0 "KL1.N0  
+MB]!03WH/WH6^AF74(#P  J[$8  #GB \  *RT&   Y0@!"( Z8%$@-"!!H  
+M K+!8  #@$AX "\O!4ZY  !A"%!/2H!G  $V+P5.N0  4)!83WYXL(=N  ,8
+M+P5(>0 "KL1.N0  B_A03RX\  *NQ'P 2'D  @A6+P=.N0  89!03RX 9@  
+MMG  8  #)B\'2'@  4ZY  !2N%!/2H!F  "Z< !@  ,,+P=(>  "3KD  %*X
+M4$]*@&8  *!P &   O(O!TAX  -.N0  4KA03TJ 9@  AG  8  "V"\'2'@ 
+M!$ZY  !2N%!/2H!F;'  8  "P"\'2'@ !4ZY  !2N%!/2H!F5'  8  "J"\'
+M2'@ !DZY  !2N%!/2H!F/'  8  "D"\'2'@ !TZY  !2N%!/2H!F)'  8  "
+M>" &<@:P@6(6,#L*!D[[  +_0O]<_W;_D/^H_\#_V'X 4H9R![R!;0#_#DAY
+M  ((6$*G3KD  &&04$]*@&8  .)(>0 "LM!(;OW\+P5.N0  5Q!/[P ,/@!M
+M  ':2D=G,$AX 0%(;OW\2'D  @7<3KD  (M 3^\ #$AX 0%(;O[]2'D  @< 
+M3KD  (M 3^\ #$J$9@ !UDAY  *RWTAN_<PO!4ZY  !7<D_O  PN &=P($=*
+M$&=$2KD  @A(9PXO.0 ""$A.N0  ,!Y83R/'  ((2$AX #!![OW,3^__T")/
+M,#P "R+84<C__"\Y  ((1$ZY  "+0$_O #A*A&8  6Q(>0 "LNXO!4AX  -(
+M>0 ""%I.N0  6Y9/[P 0/@!L!G  8  !4DI'9PQ(QR\'3KD  #AV6$]*A&8 
+M 3!(>0 "LOU(;OW,+P5.N0  6&1/[P ,+@!G  #>($=*$&<T2KD  @A,9PXO
+M.0 ""$Q.N0  ,!Y83R/'  ((3$AX #!(;OW,+SD  @A$3KD  (M 3^\ #$J$
+M9@  U$AY  *S#"\%2'@ !4AY  ((8DZY  !;ED_O ! ^ &P,0GD  @@2< !@
+M  "T2D=G$D)Y  (($DC'+P=.N0  .'983TJ$9@  C$AY  *S&R\%2'@ !DAY
+M  ((:TZY  !;ED_O ! ^ &TT2D=G#$C'+P=.N0  .'983TJ$9E9(>0 "LRHO
+M!4AX  =(>0 ""'9.N0  6Y9/[P 0/@!L!'  8#Y*1V<N2,<O!TZY   X=EA/
+M8" @!'X'L(=B&# ["@9.^P "_)[]YOX\_J;^XO\^_X;_ND*G+P1.N0  4KA0
+M3TSN /#]O$Y>3G5.5O_\+H<O+@ 0+RX "$AX  %(>0 ""().N0  6Y9/[P 0
+M+@!O,DAX @(O+@ ,+P=.N0  BI9/[P ,#(    ("9PPO!TZY   X=EA/?O\O
+M!TZY   X=EA/( <N+O_\3EY.=4Y6_[1(UR#@+RX $"\N  A(>  "2'D  @B+
+M3KD  %N63^\ $"H ;0  ODJ%9@H@/  "")9@  "R2&[_Q"\%3KD  #B&4$]*
+M@&8  )P@+O_45( O $ZY   O"%A/+@!G  "&+R[_U"\'+P5.N0  BI9/[P ,
+ML*[_U&9B*FX #"P'W*[_U"!&$+P "E*&($9"$$A5+P=.N0  6C)03RP 9S)(
+M;0 $+P9.N0  6C)03RP 9R!(;0 (+P9.N0  6FA03TJ 9PXO!4ZY   X=EA/
+M( =@%B\%3KD  #AV6$\O!TZY   P'EA/< !,[B#@_[1.7DYU3E;_M$C7(. O
+M+@ 0+RX "$AX  1(>0 "")=.N0  6Y9/[P 0+ !M  &:2H9F"B \  ((HV  
+M 8Y(;O_$+P9.N0  .(903TJ 9@ !>" N_]14@"\ 3KD  "\(6$\J &<  6(O
+M+O_4+P4O!DZY  "*ED_O  RPKO_49@ !/BIN  PN!=ZN_]0@1Q"\  I2AR!'
+M0A!(;0 ,+P5.N0  6C)03RX 9P !"DAM ! O!TZY  !:,E!/+@!G  #V2&T 
+M%"\'3KD  %HR4$\N &<  .)(;0 8+P=.N0  6C)03RX 9P  SDAM !PO!TZY
+M  !::%!/+@!G  "Z2&T ("\'3KD  %HR4$\N &<  *9(;0 D+P=.N0  6C)0
+M3RX 9P  DDAM "DO!TZY  !:N%!/+@!G?DAM "HO!TZY  !;'%!/+@!G;$AM
+M "LO!TZY  !;'%!/+@!G6DAM "PO!TZY  !;'%!/+@!G2$AM "TO!TZY  !;
+M'%!/+@!G-DAM "XO!TZY  !:N%!/+@!G)$AM "\O!TZY  !:N%!/2H!G$B\&
+M3KD  #AV6$\@/  "LOU@%B\&3KD  #AV6$\O!4ZY   P'EA/< !,[B#@_[1.
+M7DYU3E;__"Z'+BX ""!N  P@ATAX  HO!TZY  !A"%!/+@!F!'  8 @@1T(0
+M4H<@!RXN__Q.7DYU3E;_^"Z'(FX "$H19PP@;@ ,((E@(DJ'9@1P & J<C"^
+M@6T.<CF^@6X(<C">@1*'8 02O !_4DD0$4G +@!R"KZ!9M)"&2 )+B[_^$Y>
+M3G5.5O_T2-< P")N  A*$6<@#!$ "F8*(&X #!"\ ']@-GP 8"!R,+Z!;09R
+M.;Z!;P1P & FW(8B!N6!W('<AWXPG(=221 12< N '(*OH%FU"!N  P0AD(9
+M( E,[@# __1.7DYU3E;_]"Z-*FX "$H59UP@;@ ,#!4 "F80$+P ?V!0$+P 
+M 6! 0A!@/")-4DT0$4G <D:P@6?N<DZP@6?H<E2P@6?<<EFP@6?6<F:P@6?6
+M<FZP@6?0<G2P@6?$<GFP@6>^< !@#@P5  IG!'  8 1"'2 -*F[_]$Y>3G5.
+M5OO<2-<@P"IN  @N+@ 0($=*$&9J2%5.N0  C'!83RX 9P8@1TH09E9(>0 "
+M"*1.N0  C'!83RX 9P8@1TH09CY*.0 "KK1F,$AY  ((J4ZY  ",<%A/+@!G
+M!B!'2A!F"$AY  ((M& "+P=(>0 "KK1.N0  B_A03RX\  *NM" N  PB .F!
+M1(#0@0:   *RP2\ +P=.N0  82A03TJ 9A0O!R\N !1.N0  B_A03W  8  !
+MR"\'3KD  %"06$]\#K"&;P9P_V   ;)(>0 ""+9(;OP 3KD  (OX4$](54AN
+M_ !.N0  B]!03TAY  ((PTAN_ !.N0  B]!03R\'2&[\ $ZY  "+T%!/0J=(
+M;OP 3KD  (LV4$\L &Q<#+D    "  ( 1&902'D  @C%2&[\ $ZY  "+^%!/
+M2%5(;OP 3KD  (O04$](>0 ""-Q(;OP 3KD  (O04$\O!TAN_ !.N0  B]!0
+M3T*G2&[\ $ZY  "+-E!/+ !*AFT.+P<O+@ 43KD  (OX4$\,K@    $ #&8 
+M .1(>0 ""-Y(;OP 3KD  (O04$]"ITAN_ !.N0  BS903RX <O^^@68*3KD 
+M &!.8   LDAX !A(;OOH+P=.N0  BI9/[P ,<ABP@6<63KD  &!.+P=.N0  
+M.'983W#_8   A$AN^^A(>0 "!N1.N0  B_A03R/N^_@  @;T2KD  @;X9PXO
+M.0 "!OA.N0  ,!Y83TJN^_QO5B\N^_Q.N0  +PA83RI +R[[_$A5+P=.N0  
+MBI9/[P ,L*[[_&<4+P=.N0  .'983TZY  !@3G#_8!(CS0 "!O@O!TZY   X
+M=EA/( 9,[B# ^]Q.7DYU0KD  @;X+P=.N0  .'983TZY  !@3G#_8-Q.5O_\
+M(#D  @A$3EY.=4Y6__!(UR# +#P  @CB+CP  @EH*GP  @F]2KD  @@"9@ !
+MV$AX +!.N0  +PA83R/   (( DJY  (( F=Z+P9.N0  4)!83U* +P!.N0  
+M+PA83R/   ((!F=<+P8O.0 "" 9.N0  B_A03R\'3KD  %"06$]2@"\ 3KD 
+M "\(6$\CP  "" IG+B\'+SD  @@*3KD  (OX4$](54ZY  !0D%A/4H O $ZY
+M   O"%A/(\   @@.9@9P &   41(52\Y  ((#DZY  "+^%!/+#D  @@&?@ @
+M>0 "" )(<'0 +P9.N0  6C)03RP 4D<,1P ,;>)^ "!Y  (( DAP=# O!DZY
+M  !:,E!/+ !21PQ'  QMXBPY  (("GX ('D  @@"2'!T8"\&3KD  %HR4$\L
+M %)'#$< !VWB?@ @>0 "" )(<'1\+P9.N0  6C)03RP 4D<,1P ';>(L.0 "
+M" X@.0 "" (&@    )@O "\&3KD  %HR4$\L " Y  (( @:     G"\ +P9.
+MN0  6C)03RP (#D  @@"!H    "@+P O!DZY  !:,E!/+  @.0 "" (&@   
+M *0O "\&3KD  %HR4$\L " Y  (( @:     J"\ +P9.N0  6C)03RP (#D 
+M @@"!H    "L+P O!DZY  !:,E!/(#D  @@"3.X@P/_P3EY.=4Y6  !(>0 "
+MKK1(>0 "!N1.N0  B_A03T*Y  (&]$JY  (&^&<.+SD  @;X3KD  # >6$]"
+MN0 "!OA"N0 "!OQ.7DYU3E;__"Z'?@!(>0 ""?8P!TC (@#I@42 T($&@  "
+MLM O $ZY  "+^%!/4D<,1P ';=9(>0 ""?A(>0 "!N1.N0  B_A03TAY  (*
+M $AY  *RP$ZY  "+^%!/(_P  @H"  *RL"/\  (*!@ "LK0N+O_\3EY.=4Y6
+M__0@;@ ($BX #[(09@0@"& &2AAF]'  3EY.=0  3E;_]"Z'(&X #")N  @>
+M&+X19@A*&6;V< !@"A 12< 2($G!D($N+O_T3EY.=0  3E;_]"Z-(FX ""!N
+M  Q@%BI(8 @0%; 19P9234H59O1*%6<&4DE*$6;FD^X "" )*F[_]$Y>3G5.
+M5O_X2-<@@"XN  AF!BXY  *O1$J'9Q8O+@ ,+P=.N0  85A03]"'*D!*%68$
+M< !@*"\N  Q(54ZY  "-"%!/+@!F"$*Y  *O1& ,($="$%*'(\<  J]$( U,
+M[B" __A.7DYU     $Y6_<A(US#@+"X $"UY  *S//_T?@$M1__X+4;__$AN
+M_=Q(;OW@2&[_]$AN  A.N0  <E8@;@ 8(*[]Y"IN !0J+@ <("[]X'X%L(=B
+M?# ["@9.^P " "X #  , $8 6 !8("[]Z-"&*H!*AF]62^[]["A%0?9I(/WL
+M+@@8W;O'9?I@0'X!*H=*AF\X*D4H1MG%&OP ,+O,9?A@*$*5+CD  @H@<@B\
+M@6T,? A@"D*5+CD  @H<? ,J1RA%WH88W;O'9?H@14(P:  @!4SN,.#]R$Y>
+M3G5.5OW(2-<@\"HN ! M>0 "LSS_]$*N__@M1?_\2&[]W$AN_>!(;O_T2&X 
+M"$ZY  !R5B!N !@@KOWD*"X '"XN !0@+OW@? 6PAF(  +(P.PH&3OL  @!$
+M  P # !R (8 ADJ%;0P@1R N__"0A2" 8 8@1R"N__!^ $ON_>PL!& (($80
+MG5*'4H:^KO_P;?(@1-'N__!"$&!D($="D"!$$+P ,#I\  &ZC6\6?@'>A-J$
+M+ 4@1Q"\ #!235*'OH9E\D(U2 !@-B!'0I L.0 ""B!^"+J';0YZ"& ,($="
+MD"PY  (*''H#+@8J1-R%($<:T%*'OH9E]B!$0C!8 " $3.X@\/W(3EY.=4Y6
+M_^!(USS@*&X #"XN !1.N0  7C8@0"!0'! J1TJL  1G  & ($<0O  M4H<J
+M1V   7(:_  P2H5G  &.&L:9S%-*+@JYQVP  8 :_  P4DQ@\GX(M<=L""AY
+M  (*.& .*'D  @HT8 8H>0 ""CQ*%&<  58:W&#V2JP "&X.( I6@$2 L*P 
+M"&\  )H:[  ,&L8V?  !?@%@!AK24DM2AT7T> Q*$F;R2H5F# PE #!G^KP5
+M9P)231K\ &4H;  (V<M33$J,:P8:_  K8 H:_  M( Q$@"A 2&[__'  , PO
+M $ZY  !XD%!/?@!)[O_\8 12AU),#!0 ,&?V? *^AF\$?@)@"'P#OH9N  "\
+M2?9X_$'N__Q62"X(&MRYQV/Z8   IG !D(JPK  (;C9^ "9'8 @:]+@,4H=2
+M2R *T*P "+Z ;>X:QB9'2C2X#&= OHIL/"X+)DH:]'@,4H>^BVWV8"P:_  P
+M&L9^ & &&OP ,%*'("P "-"*1("^@&WN?@!@!!K34H=']'@,2A-F]$J%9C0,
+M)0 P9_J\%6<J4DU@)B1N  @J+@ 0(!1^!;"'8@#^QC ["@9.^P "_G;^O/Z\
+M_I;^K/ZL0A5,[CS@_^!.7DYU3E;]W"UY  *S//_T<@$M0?_X+6X $/_\2&[]
+MW$AN_>!(;O_T2&X "$ZY  !R5D_O ! O+@ 8+RX %$AN_> O+@ 03KD  &/8
+M("X &$Y>3G5.5O_\+RX %$*G+RX $"\N  PO+@ (3KD  &6N3EY.=0  3E;_
+M\$C7(, J;@ ,+"X &!XN !<,!P P9@9*AF<  ,XB;@ 0<@&#D2!N  @@$'(#
+ML(%B7C ["@9.^P "  @ L !0 $@,!P U;0  H@P' #5N0$J&9CQ*K0(0;P  
+MD$'M  P@+0(0$# (_TG ?C"0AW(!2H!L"$2 P(%$@& "P(%*@& ,2JT !&9B
+M8 9*K0 $9UHN+0(04X<L!V ,2H=M$A*\ #!3AU.&0_5H# P1 #EGZDJ';092
+M-7@,8$(;?  Q  P@;@ (#*@    !  1F!E*M  A@*$JM A!O"B M A ;O  P
+M" Q2K0(08!)*K0(0;@P;?  P  Q^ 2M' A @+0(00C4(#$SN(,#_\$Y>3G5.
+M5OLL2-<XP#U\ 0#]^#U\ 0#[\$AN^^Q(;OWX+RX "$ZY  !^BD_O  Q*KOOL
+M:B!(;OOJ("[[[$2  H   /__+P!(;OWX3KD  'RV3^\ #$AN^_!(;OWX3KD 
+M '_*4$]*KOOL;@I![OOP+4C[Y&!T2&[[Y"\N  PO+OOL2'@  DAN^_!.N0  
+M@3)/[P 4("[[Y&<H?@&PAV9*+R[[[$AY  (*7$AN^Y1.N0  BO!/[P ,2&[[
+ME$AX ")@("\N^^Q(>0 ""G%(;OM$3KD  (KP3^\ #$AN^T1(>  ,3KD  (#N
+M4$](;OM (&[[Y'  ,"@  D'P"@9P # H__XO $ZY  !XD%!/?@!+[OM 8 12
+MAU)-#!4 ,&?V)FX $)O-? .^AFX>0?9Y(/M +@@H2T'N^T!62"P(($<8T%*'
+M4DV^AF/T(&[[Y'  ,"@  E6 +@!M)N.'0?/8 "P(+P8@;OOD<  P,'@&+P!.
+MN0  >)!03UA-6(95AVKB0C/8 "!N !@@C2!N^^0P*  $2, @;@ 4((!![OOP
+M("[[Y+"(9PHO $ZY  " TEA/3.XXP/LL3EY.=4Y6^R1(UR#\*FX %"HN ! L
+M+@ ,+BX ""!N !A"D"!'2J@ !&8T?@ H#6 *($00O  P4H=2A+Z%8_)!]7@ 
+M*@A@"B!%$+P ,%*'4H6^AF/R(&X '""'8  "=CU\ 0#]^#U\ 0#[\$AN^^Q(
+M;OWX+P=.N0  ?HI/[P ,/6[[[OW\=!&4KOOL<@ R+OWZZ8F4@4P\( (  $T1
+M<A#BJM2&M(5D B0%+@6\AV,"+@9,/'@'  -2:@:'  :DU'(0XJ=2AT2'2&[[
+MZ"\'+P)(>  *2&[]^$ZY  "!,D_O !0@+OOH9R9^ ;"'9D8O DAY  (*ADAN
+M^YA.N0  BO!/[P ,2&[[F$AX ")@'B\"2'D  @J<2&[[2$ZY  "*\$_O  Q(
+M;OM(2'@ #$ZY  " [E!/(&[[Z QH__  !&YV,"@ !$C 1(!J!'X/T(?H@"@ 
+M?@!\ & .(&[[Z$IP: 9F"%*'5(:^A&WNOH1L"B!N^^@ <  !2@8N!"P$XX8J
+M!..%( :0A2H 8! @;OOH,;!H!E@&4H=4A52&(&[[Z'  ,"@  KZ 9>*9:  "
+M(&[[Z.F$V6@ !"!N^^A*:  $;#!(;OM&,"@ !$C 1( "@   __\O "\(3KD 
+M 'RV3^\ #$IN^T9G"B!N^^@ :  !  9(;OOP+R[[Z$ZY  !_RE!/?@ ^+OOR
+M4X<L!^.&0?9I(/OV+ A@!%.'588@1DI09_9(;OM <  P-GL@^_8O $ZY  !X
+MD%!/>@!![OM + A@!%*%4H8@1@P0 #!G]'P > .ZA&XB0?99(/M *@@H#4'N
+M^T!62"8(($0B11"14H52AE*$NH-C\%.':S+CAT'V>2#[]BX(0?5H "H(0>[[
+M]B@(+P4@1W  ,! O $ZY  !XD%!/6(98A56'OH1DY$(U:  @;@ <((8@;@ 8
+ME(8@@D'N_?@@+OOHL(AG"B\ 3KD  (#26$],[B#\^R1.7DYU3E;J0$C7./PF
+M;@ 0+BX "'8P0J[__"!')U  !":H  0,J     ( !&<,#*@    !  1F  9>
+M*&X # RL   "   (;!0,K     $ !&86#*P    !  AL#"!N !1^"(^08  &
+M,$'N_]PB1S \  <@V5'(__Q![O_<0^[_O# \  <BV%'(__P,KO______Y&X(
+M0J[_X&   2P,K@   )__Y&T(0J[_P&   -X@+O_D<A]*@&P(1(# @42 8 + 
+M@7X?L(=F1" N_^12@&H"T(?J@"P ?@!+[O_(8 1"G5*'OH9E^'P%OH9L  "2
+MY8=!]GCH+@A![O_H0>@ %"P(($="D%B'OH9E]F!R("[_Y%* :@1^']"'ZH L
+M 'X 2^[_R& $0IU2A[Z&9?@@+O_D<A]*@&P(1(# @42 8 + @7(?DH!P >.@
+M4X N!N6'P;9XR$: P;9XZ%*&+@9\!;Z&;!SEAT'V>.@N"$'N_^A!Z  4+ @@
+M1T*06(>^AF7V2&[_O$ZY  !S:%A/2J[_X&<V#*P    !  1F""XL  A2AV &
+M+CP  !-$2&[L<$AN['1(;NQX+P=(;O_<3KD  &<P3^\ %& (0J[L<$*N['0D
+M+NQPU*[L='@ 2JP !&8&2JP "&P4#*P    !  1F:B L  A2@+"";V ,K   
+M  $ !&8:+BP "%2'GH(,AP   @!C!BX\   " 'P!8!9^ "PL  A4A@R&   "
+M &,&+#P   ( 2&[J:$ANZFQ(;NIP+P8O!TAN_[Q.N0  :.)/[P 8*"[J;-BN
+MZF@,K     $ !&8  @ J+NQPNJP "&\$*BP "'X 2H5O'$OK  Q![NQX+ A!
+M[NQXVH@@1AK04H=2AKR%9?0J;NQPV^[L=+OL  AO!"IL  B^C6P80>L #"P'
+MW(C;R"!&$+P ,%*'4H:\C67ROJP "&8  *0G1P(0( *0AR=   B^@FQ,OJ[L
+M<&0*%C9Y(.QX4H=@ G8P0?9Y(.QX+ A@"KZN['!D#%*'4H8@1@P0 #!G[KZN
+M['!D!GX!+4?__$JN_\!G  $N?@$M1__\8  !)$JN_\!G  $<2J[J;&\&=C!\
+M & &%B[J<'P!+@9!]FD@ZG L"& (OH1L#%*'4H8@1@P0 #!G\+Z$;   Z'X!
+M+4?__&   -XJ+  (FH=*AV8>? !+[NIP8 12AE)-#!4 ,&?VVH;:KNILW*[J
+M;& "? "ZA&\"*@0@!42 )T  "+JNZFQO!B@NZFQ@ B@%O(1L$DOK  S;QQK\
+M #!2AU*&O(1M]+R%;!I+ZP ,V\<@!I"NZFP:]@D@ZG!2AU*&O(5M[)RNZFR\
+MKNIH;#I*AFP$=C!@!A8V:2#J<%*&:@)\ $OV:2#J<& *O*[J:&P*4H9230P5
+M #!G\+RNZFAL(GP!+4;__& :0>L #"P(W(=@"B!&$+P ,%*'4H:^K  (;? G
+M1P(0+R[__$G#+P,O+@ 42%-(5$ZY  !F(&   C9*K  (;0 !'B "T*P " R 
+M   " &P ^^1^ $OK  Q![NQX+ A@""!&&M!2AU*&OJ[L<&7ROH)L&DOK  Q!
+M]7@ + C;PB!&$+P ,%*'4H:\C67R*@2XK  (;P0J+  (NJ[J;&\&*"[J;& "
+M* 5\ $J$;Q)+ZP ,V\<:_  P4H=2AKR$;?2\A6P:2^L #-O'( :0KNIL&O8)
+M(.IP4H=2AKR%;>Q+ZP ,V\=@"!K\ #!2AU*&O*P "&WR)T<"$)2')T( ")RN
+MZFPN!KZNZFAL/$J'; 1V,& &%C9Y(.IP4H=J GX 0?9Y(.IP+ A@"KZNZFAL
+M#%*'4H8@1@P0 #!G[KZNZFAL!GX!+4?__"\N__Q)PR\#+RX %$A32%1.N0  
+M9B!@  $2+"P "$2&#((   ( ; #ZR R&   " &P ^KZTAFXZM(9F"!8N['A^
+M 6 $=C!^ $OV>2#L>& *OJ[L<&0*4H=230P5 #!G\+ZN['!D!GX!+4?__$*K
+M A!@;GX 0>L #"@&2^[L>"H(8 @@11"=4H=2A2 N['"0A+Z 9>Y^ $OK  R4
+MABH"8 8:_  P4H>^A6WV)T<"$+ZN['!D+!8V>2#L>%*'2_9Y(.QX8 J^KNQP
+M9 I2AU)-#!4 ,&?POJ[L<&0&?@$M1__\2J[_P&<&?@$M1__\+R[__$G#+P,O
+M+@ 42%-(5$ZY  !F("XK A!)ZP ,V<=@!AC\ #!2AR K A#0AKZ ;?!"JP (
+M)T<"$$(S> Q,[CC\ZD!.7DYU3E;_U"Z-*FX $"!N !1"D"!N  @M4/_X+6@ 
+M!/_\Z>X  ?_X*T  !"\N  A.N0  =,!83RJ (!5R!;"!8A0P.PH&3OL  @ P
+M  P #  P #  ,$AN__A(;O_83KD  '5X4$\O+@ 42%4O+@ ,2&[_V$ZY  !K
+MNBIN_]1.7DYU3E;_O$C7., H;@ ((&X %$*0?@!+[O_P0>[_\$'H ! L""KT
+M> !8A[O&9?9@%# ["@9.^P " %  +@ N %  4 !0)FX $.GN  '_\"=   1(
+M5$ZY  !VHEA/)H @$WX%L(=CRDA42&[_T$ZY  !W1%!/+RX %$A3+RX #$AN
+M_]!.N0  :[I,[CC _[Q.7DYU     $Y6_]A(UP#X(&X " RH     @ $9@ !
+M(GX 8 @,1P %9 Q21W  , =*L P,9^X,1P %90A"J  $8   _DI'9UI"KO_\
+M>@ Z!W@%F(63R6 .W(4AL&P,F Q2KO_\6$DL+O_\O(1EZ@RN    !?_\;!SE
+MABU&__0@+O_T0K (#%BN__0,K@   !3_]&WJ<  P!^N(D:@ "& "4D=P # '
+M<@22@")!2K"<#&?N0F[_^BXH  P,AP  __]B"' 0X:\]0/_Z#(< ____8@;A
+MCU!N__H,AP____]B!NF/6&[_^@R'/____V(&Y8]4;O_Z#(=_____8@12;O_Z
+M<  P+O_ZD:@ " QN  '_^F4N? !*B6TH<  P+O_Z=B"6@"X)Y8=#\'@,*A$R
+M+O_ZXZTH$>:LC(4BABP$68=JYDSN /C_V$Y>3G5.5@  < $R+@ *XZ"!N0 "
+MLT1.7DYU3E;_]"!N  @M4/_X+6@ !/_\,"[_^ ) ?_!F&B N__@"@  /__]F
+M"DJN__QF!'  8$1P 6! ,"[_^ ) ?_ ,0'_P9C @+O_X H  #___9@I*KO_\
+M9@1P V <("[_^ *   ___PR   0  &4$< 1@!G %8 )P DY>3G5.5O_D2-< 
+M\'P (BX #" N  A^#-"'>""8@3!\ !#1P"X0XZ\J$.BMC(<@ABP%64BQP&3L
+M3.X \/_D3EY.=4Y6__!(UR" *FX ""!N  PM4/_X+6@ !/_\Z>X  ?_X*H K
+M;O_\ !!^"$*U> Q8AW(4OH%M]# N__@"0'_P9VPP+O_X D!_\ Q ?_!G  "2
+MZ>X 2__X!(    /_*T  "'X"*T< !" N__@"@  /__\ @  0   K0  ,2'@ 
+M"TA53KD  '4Z4$]@&$JN__QF7'X#*T< !& *2J[__&8:0JT !$SN((#_\$Y>
+M3G4@+O_X H  #___9^!^ BM'  0K?/___ T "" N__@"@  /__\K0  ,2%5.
+MN0  <VA83V#"("[_^ *   ___V>>("[_^ *   ___P@  !-G"'X$*T< !& 2
+M?@0K1P $2'@ !$ZY  !TJEA/("[_^ *   ___P"   @  &  _TY.5O_@2-< 
+MP")N  A\ $'N__ N"$'N__!!Z  0(@@@1R"Q: !8AEB'OH%E\C N__ "0'__
+M9THP+O_P D!__PQ ?_]G1G "8"YP!& J2J[_]&8^2J[_^&8X2J[__&8R< -@
+M%$JN__1F'DJN__AF&$JN__QF$G  3.X P/_@3EY.=4IN__)GW' !8.Q*;O_R
+M9[QP # N__(,@   @ !DJG %8-1.5O_<2-<PX"AN  Q\ $'N__ N"$'N__!!
+MZ  0*@@@1R"T: !8AEB'OH5E\BIN  CI[@ !__ J@"MN__0 $"MN__@ %"MN
+M__P &'X00K5X#%B'?!2^AFWT,"[_\ ) ?_]G8# N__ "0'__#$!__V<  (IP
+M # N__ "0'__!(   #__*T  "'X"*T< !'  ,"[_\@"   $  "M   Q(>  /
+M2%5.N0  =3I03V ,?@,K1P $8 1"K0 $3.XPX/_<3EY.=7  ,"[_\H"N__2 
+MKO_X@*[__&?>?@(K1P $*WS__\ 1  AP # N__(K0  ,2%5.N0  <VA83V"^
+M<  P+O_R@*[_]("N__B KO_\9YX(+@ '__)G"'X$*T< !& 2?@0K1P $2'@ 
+M!$ZY  !TJEA/<  P+O_R $"  "M   Q(>  08 #_7        $Y6__1(UP# 
+M? ,@;@ ,/BX "G  , <N $Q\  $    *<##2@!&!8 !,?' '    "E'._^!,
+M[@# __1.7DYU3E;_W$C7./Q\ '@ >@ H;@ 0=@ V+@ *) -3@BIN  Q@,"\&
+M( *0AS T"@ "@   __\O '  ,!4O $ZY  !Y^$_O  PN +Z&9 )21"P'4H54
+M32X%OH-ERB9N !0P//__P$8V@'(0XJXW1@ "-T0 !$SN./S_W$Y>3G5.5O_<
+M2-<X_'X > !\ "AN !!V #8N  HD U."*FX #& X+P<@ I"%,#0*  *   #_
+M_R\ <  P%2\ 3KD  'GX3^\ #"X #(>RT%X 90A21 2'LM!> %*&5$TJ!KJ#
+M9<(F;@ 4( =,?  !   G$#:!3'QP!P  )Q @!TQ\  $  "<0-T$  DQ\< < 
+M "<0<  P!$2 Y8@B -*!T('0AS=   1,[CC\_]Q.7DYU     $Y6__PP+@ *
+MP.X #M"N !!.7DYU3E;_^$C7 (1^ #XN  K>K@ ,( =,?      G$'(0XZA,
+M?' "   G$(""3.X A/_X3EY.=4Y6__@NARXN  AG&"!N  QP # 0WH P//__
+MP$<PP'(0XJ]F["XN__A.7DYU3E;_^$C7(( N+@ (9R0J;@ ,+P=P # 5+P!.
+MN0  >@Q03RX ,#S__\!'.L!R$.*O9N!,[B" __A.7DYU3E;_^$C7 (0P+@ *
+MP.X #M"N ! N $Q\     "<0<A#CJ$Q\< (  "<0@(),[@"$__A.7DYU3E;_
+M_# N  K [@ .3EY.=4Y6__A(UP"$,"X "L#N  XN $Q\     "<0<A#CJ$Q\
+M< (  "<0@(),[@"$__A.7DYU3E;_^$C7 (0^+@ .<  P+@ *[ZC0K@ 0+@!,
+M?      G$'(0XZA,?' "   G$(""3.X A/_X3EY.=4Y6__PP+@ *P/PG$-"N
+M  Q.7DYU3E;_^$C7 (1^ #XN  IR$..OWJX #" '3'P     )Q!R$..H3'QP
+M @  )Q" @DSN (3_^$Y>3G5.5O_X2-< A"XN  @@!TQ\     "<0<A#CJ$Q\
+M< (  "<0@(),[@"$__A.7DYU3E;_Y$C7,/ H;@ (."P  GX ? !+[  &>@ Z
+M+@ .<  P!"@ 8"0O!R\%<  P%2\ 3KD  'L@3^\ #"X ,#S__\!'.L!R$.*G
+M4H:\A&782H=G)DOL  8J!N.%V\4O!TZY  ![IEA/+@ P//__P$<ZP%*&<A#B
+MIV;D.48  DSN,/#_Y$Y>3G5.5O_D2-< ^"!N  @^*  ">@!\ #8N  Y#Z  &
+M>  X!V 8?@ ^$>>OWH4P//__P$<RP'(0XJ\J!U*&O(1EY$J%9PPP//__P$4Q
+M@&H&4H8Q1@ "3.X ^/_D3EY.=4Y6_^A(UP#T(FX "'P >@ Z*0 "4X5K.%Q)
+M+@EP # N  YX$)B XX7:AR)%*@=^ #X1Z:]T$.6NWH8@!W(0XJ@R@ *'  #_
+M_RP'54FSQ63>(&X $#"&3.X ]/_H3EY.=4Y6_^A(US#@?@!\ "AN  A+[  &
+M>@ Z+@ .8"0O!R\%<  P%2\ 3KD  'JH3^\ #"X ,#S__\!'.L!R$.*G4H9P
+M # L  *\@&722H=G)DOL  8J!N.%V\4O!TZY  ![IEA/+@ P//__P$<ZP%*&
+M<A#BIV;D.48  DSN,.#_Z$Y>3G5.5O_D2-<P^"AN  @^+  "?  J+@ 02^P 
+M!G@ ."X #G8 -@=@)"\%+P1P # 5+P!.N0  >?A/[P ,*@ P//__P$4ZP'(0
+MXJU2AKR#9=A*A6<,,#S__\!%.8!J!E*&.48  DSN,/C_Y$Y>3G5.5O_D2-<P
+M\"AN  @X+  "?@!\ $OL  9Z #HN  YP # $* !@)"\'+P5P # 5+P!.N0  
+M>R!/[P ,+@ P//__P$<ZP'(0XJ]2AKR$9=A*AV<F2^P !BH&XX7;Q2\'3KD 
+M 'NF6$\N # \___ 1SK 4H9R$.*O9N0Y1@ "3.XP\/_D3EY.=4Y6_]A(USC 
+M?@,B;@ (2^D #'P,+4;__-O&8 13AUE-2I5G^"9N  Q*AVU 0>D #$*N__0@
+M!^. D*[_]"U __@J2"P'Y8;<B" N__A)\PH&(!4"@   __\X@" =<A#BJ#E 
+M  )5KO_XN\9CW..'5(<W1P "2FL !F8H.'P  3I\  )@#D'K  8QL]@&V/Y2
+M3%1-( QR #(K  *P@67F4VL  B I  A2@'( ,BL  NF)D($@;@ 0((!":P $
+M3.XXP/_83EY.=4Y6_^Q(US#@?  H;@ (+BX #$OL  9@("\'<  P%2\ 3KD 
+M 'MN4$\N # \___ 1SK <A#BKU*&<  P+  "O(!EUDJ'9R9+[  &*@;CA=O%
+M+P=.N0  >Z983RX ,#S__\!'.L!2AG(0XJ]FY#E&  ),[C#@_^Q.7DYU3E;_
+M\$C7,, H;@ (*FX #$'L  8L"'  ,"P  B!&,# *_@*   #__X#\)Q!(0#M 
+M  9P # L  (R+0 &LG *_F8(.WP  0 "8" [?  "  )P # L  (@1C P"OX"
+M@   __^ _"<0.T  "'X /BP  E6':QSCA]Z&($=P # 0+P!(54ZY  !_4%!/
+M58>^AF3H?@!@$$*G2%5.N0  ?U!03WP0WH8P+  $2,!\$)"&OH!OXC L  1(
+MP+"';QHP+  $2,"0AP*   #__R\ 2%5.N0  >]103T)M  1,[C# __!.7DYU
+M  !.5O_P,"X $G( 2D!G$"!N  PB;@ (,MA20;) 9?A.7DYU3E;__"Z-*FX 
+M"$A53KD  # >6$\J;O_\3EY.=4Y6_V C[@ (  ( 1"\N  Q(>  O2'D  @K>
+M2'D  @JT2&[_8$ZY  "*\$_O !1(;O]@3KD  (S@6$].N0  C!!.7DYU3E;_
+M:$C7//PJ;@ (*"X %$)N__XM3?_X2H1M"G[_+4?_]&   /1$A$*N__1@  #J
+M/7P "O_R/7D  G9._^P]>0 "BM#_[CUY  (PSO_P+7P  G90_^ M?  "BM+_
+MY"U\  (PT/_H0J[_U$*N_]A"KO_<+7P  G9V_\@M?  "H=;_S"U\  )V"/_0
+M( 12@&H"5H#D@%2 /4#_QF   ) ]?  "__(]>0 "=BS_[#UY  )VFO_N/7D 
+M @M4__ M?  "=B[_X"U\  )VG/_D+7P  @M6_^@M?  "=CC_R"U\  *)8O_,
+M+7P  C"0_] M?  "=D3_U"U\  **&O_8+7P  C"P_]P@!%* :@1^#]"'Z(!4
+M@#U _\9@%" N  Q^ K"'9P#_#GX*L(=G /]T+"X $$'N_^PN"$'N_[@J"$'N
+M_^Q<2"@(($=P # 0(@9,0!  ($4P@"!'<  P$$Q 8 94A52'OH1EWGX"+4?_
+MM'@$0?9(N"@(8 P@1$I09@Q3KO^T581*KO^T;.Y*AF\R+P9P # N_[PO '  
+M,"[_NB\ <  P+O^X+P!(>0 ""N1.N0  BJ @;@ 8?@$@AV  !78\+0 "0>[_
+MN"X(0>[_R"H(0>[_N%Q(* @@1W  ,! @12!00? * ")'<  P$2)%(E%#\0H 
+M,"D  I!0W$!4AUB%OH1EU+QN_\9D!#U&_\:\56(((&X &""-8'!X #@&!(0 
+M  $ XXP&A    @8O!$ZY   O"%A/* !F"B!N !A"D&  !/(@;@ 8((1P # M
+M  (O $AM  8@;@ 8(!!<@"\ 3KD  ("P3^\ #"!N !@@4#%M  (  B!N !@@
+M4#%M  0 !"!N !@J4#J&0J[_P$JN_[1K  1&<  P+O_R+4#_D'  ,"[_QBU 
+M_Z!![O_@+4C_F$?N_[A%[O_(0>[_U"U(_Y1*4V<  _AP # 3(%(P, H" H  
+M /__<@ R$R!2,C :  *!  #__Y"!+4#_L'  ,"T  BU _ZQ*KO_T;"Q@.C M
+M  1(P$2 :@1^#]"'Z( M0/_T8"0P+0 $2,!$@&H"5H#D@"U __1@$" N_Y!^
+M K"'9\Q^"K"'9]P,;@ "__)F*G  ,!,@;O^4(%!!\ H ,!#1;O_^<  P$R!N
+M_Y0@4$'P"@ P$.E(T6T ! RN     ?^P9UP,K@    '_K&=F("[_D'X"L(=G
+M  #0?@JPAV<  ,Y@  #0<  P$R\ 2%5.N0  ?@103V   Q1"IW  ,!,@;O^8
+M(%!!\ H <  P$"\ 2%5.N0  ?9A/[P ,8  "[B N_Y!^ K"'9]!^"K"'9[9@
+M  +:/"T !B\N_[!P # 3(%(P, H  H   /__(&[_F"!02' * $AM  9.N0  
+M@+!/[P ,.V[_L@ "("[_D'X"L(=G''X*L(=F  *2<  P!B\ 2%5.N0  ?190
+M3V   GY"IW  , 8O $A53KD  'V83^\ #&   F9";O^J8 8]?"<0_ZH@+O^L
+ML*[_L&4$("[_L%: D6[_JB@N_ZS8KO^P0?5*!D)H__XL!%6&:P !M'  ,"[_
+M_B(N__22@"U!_YPV!"0N_ZQ3@B@&XX0N!IZN_[!2ARH"<  P$R!2,# *  * 
+M  #__RAN_Y@H5$GT"@"\@FP"*@9*AVP  -)^ &   ,Q(;O^D( :0A4AT"@!(
+M=7H&FH=2A0*%  #__R\%3KD  'C.3^\ $$IN_ZAG&$'U2 9(:  $<  P+O^H
+M+P!.N0  >D!03TIN_Z9G  "20?5(!DAH  )P # N_Z8O $ZY  !Z0%!/8'9(
+M;O^D( :0A4AT"@!(=7H&FH=2A0*%  #__R\%3KD  'E(3^\ $$IN_ZAG&$'U
+M2 9(:  $<  P+O^H+P!.N0  >FQ03TIN_Z9G+$'U2 9(:  "<  P+O^F+P!.
+MN0  >FQ03V 2("[_D'("L(%G /\L<@JP@6>*2?5(!CBN_Z0^ W  , -!]0H&
+M2FC__F8$/@-31[YN_\9C#'  , >0KO^@.@!@ GH ("[_P+"N_[1F0"X&5(=P
+M # %OH!B-# L  *P;O^J8BIP # L  )R #(4@(%G'#H'2J[_]&T&OJ[_G&X.
+M<  P!0!U  $*!CP%8 Q3AE6$2H9J /YL?  @+O^LT*[_L#M   )P # M  )!
+M]0H&2FC__F8(4VT  F "4D9P # &0?4*!BX(2E!G\$I&9T)X #@&<  P+0 "
+MD(0O "\'2&T !DZY  " L$_O  R=;0 "("[_D'X"L(=G"'X*L(=G"& .( 3I
+MB& $( 3EB-%M  12KO_ 5$M8KO^46$I8KO^8("[_P+"N_[1O /OJ("[_^+"-
+M9U(@0# M  *P4&)((&[_^#%M  (  B!N__@Q;0 $  1P # M  (O $AM  8@
+M+O_X7( O $ZY  " L$_O  P@;@ 8+Q!.N0  @-)83R!N !@@KO_X3.X\_/]H
+M3EY.=0  3E;]R$C7,. L+@ ,+7D  K,\__1^ 2U'__@M1O_\2&[]W$AN_>!(
+M;O_T+RX "$ZY  !RU"!N !0@KOWD*FX $"HN !@@+OW@?@6PAV)\,#L*!D[[
+M  ( +@ ,  P 1@!8 %@@+OWHT(8J@$J&;U9+[OWL*$5!]FD@_>PN"!C=N\=E
+M^F! ?@$JATJ&;S@J12A&V<4:_  PN\QE^& H0I4N.0 ""RAR"+R!;0Q\"& *
+M0I4N.0 ""R1\ RI'*$7>AAC=N\=E^B!%0C!H " %3.XPX/W(3EY.=4Y6_<Q(
+MUR#@+"X #"UY  *S//_T0J[_^"U&__Q(;OW<2&[]X$AN__0O+@ (3KD  '+4
+M(&X %""N_>0J+@ 8+BX $" N_>!R!;"!8@  GC ["@9.^P " $0 #  , '  
+MB@"*2H9M#"!'("[_\)"&((!@!B!'(*[_\'X 2^[]["P%8 @@1A"=4H=2AKZN
+M__!M\B!%T>[_\$(08% @1T*0($40O  P.GP  ;R-;Q1^ =Z%W(4@1Q"\ #!2
+M35*'OH9E\D(U6 !@)"!'0I!^"+R'; @J/  ""SE@$BH\  (+/6 *($="D"H\
+M  (+1B %3.X@X/W,3EY.=4Y6_=PM>0 "LSS_]'(!+4'_^"UN  S__$AN_=Q(
+M;OW@2&[_]"\N  A.N0  <M1/[P 0+RX %"\N !!(;OW@+RX #$ZY  !CV" N
+M !1.7DYU     $[Y   FX$AX  -.0&7R3G5.5O_\+H=![@ ,+@@P.0 " L (
+M   !9AHP.0 " L (   (9PH >0 "  ("P& $</]@$DAY  ("L"\'+RX "$ZY
+M   ]X"XN__Q.7DYU     $Y6_^@M?'______["UN  C_\"UN__#_]#U\ $+_
+M_$AN_^Q(;@ 0+RX #$ZY   ]X"!N__!"$" N  A.7DYU  !.^0  )N!(>  %
+M3D!E\DYU(F\ !"!O  @@+P ,;TPB"9*(;   !$2!LH!M  !$,@@( 0  9P02
+MV%. (@D( 0  9AXB .2(8 (BV%'(__Q"0%. 9/0@ 0*      V "$MA1R/_\
+M0D!3@&3T("\ !$YUL\AN%& "$MA1R/_\0D!3@&3T("\ !$YUT<#3P& "$R!1
+MR/_\0D!3@&3T("\ !$YU(&\ !")O  @@"'+_2AA7R?_\9@#_^%.(<O\0V5?)
+M__QF /_X3G4  "!O  0B;P (( AR_Q#95\G__&8 __A.=4Y6__PNAT*G2'@ 
+M!DZY  "-4%!/+@!G$"\'2'@ !DZY  "-4%!/8!A2N0 ""TP,N0    $  @M,
+M9@9.N0  )O!(>  &3KD  (U&+P!.N0  C>Y03RXN__Q.7DYU     $Y6__1(
+MUS" *GD  @  2HUG'"AN  A*E6<4+QU(5$ZY  ",JE!/+@!G[" '8 )P $SN
+M,(#_]$Y>3G5.5O_T(&X #")N  @2&+(19@H,&0 ]9O0@"& 22A%F# PH #W_
+M_V8$( A@ G  3EY.=0    !.5@  2'D  @+$3KD  ">46$\O+@ (3KD  (WX
+M6$].7DYU        3E;_\"Z-(&X #")N  @J2& ($!6P$6<&4DU*%6;T2A5G
+M!" )8 9*&6;D<  J;O_P3EY.=0    !.^0  )N!(>  43D!E\DYU3E;_W$C7
+M,( N+@ (+6X #/_T( ?E@"I !H   J],*$ M5/_XV_P  J_,+57__$AN_^A(
+M;O_T+P=.N0  -Z!/[P ,2H!K0" N__BPKO_L9@H@+O_\L*[_\&<P+6[_[/_X
+M**[_^" N__!R^\"!+4#__"JN__Q"ITAN__0O!TZY   WH$J ; 1P_V $("[_
+MZ$SN,(#_W$Y>3G5.^0  )N!(>  E3D!E\DYU3E;_V$C7,  H;@ (2^[_X$J,
+M9R1*%&<@*HQ(5$ZY  !0D%A/*T  !%!-*KP  J)L<@(K00 $4$T@.0 " $2P
+MN0 "H_!D$B Y  ( 1$'Y  *BA"AP# !@!BA\  *B;RJ,+Q5.N0  4)!83RM 
+M  1032J\  *B?7(!*T$ !$'N_^ @#9"(YH!2@"\ 2&[_X$AX  ).N0  CJ9,
+M[C  _]A.7DYU        3OD  ";@2'@ >4Y 9?).=0                  
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                     $ H(RE-8W)T,2YS(#$N-B X."\P,B\P."!#;W!Y
+M<B Q.3@U(%-U;B!-:6-R;P     " $                              
+M                      "                                     
+M                                          !D    !           
+M                                          !I;G-E<G0Z(&)A9"!B
+M;&]C:R!S:7IE("@E9"D@870@)2-X"@!B;&]C:W-I>F4],"!A=" E(W@* &)L
+M;V-K<VEZ93TP(&%T("4C> H 9G)E93H@:6QL96=A;"!A9&1R97-S("@E(W@I
+M"@!F<F5E.B!B860@8FQO8VL@<VEZ92 H)60I(&%T("4C> H 9G)E93H@8FQO
+M8VMS("4C>"P@)2-X(&]V97)L87 * &9R964Z(&)L;V-K("4C>"!W87,@86QR
+M96%D>2!F<F5E"@!F<F5E.B!B;&]C:R E(W@@=V%S(&%L<F5A9'D@9G)E90H 
+M<F5A;&QO8SH@:6QL96=A;"!A9&1R97-S("@E(W@I"@!R96%L;&]C.B!B860@
+M8FQO8VL@<VEZ92 H)60I(&%T("4C> H <F5A;&QO8SH@8F%D(&)L;V-K<VEZ
+M92@E9"D@870@)2-X"@!R96%L;&]C.B!B860@8FQO8VL@<VEZ92 H)60I(&%T
+M("4C> H <F5A;&QO8SH@8FQO8VL@)2-X('-T<F%D9&QE<R!F<F5E(&)L;V-K
+M(&)O=6YD87)Y"@!G971F<F5E:&1R.B!O=70@;V8@;65M;W)Y     JVL    
+M                         0                         " 0      
+M                  8"                                        
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                 K-,       "!:0  @6K  (%O  "!6,  @5O  (%@@ "
+M!8X      "T *P @ #!X #!8 "T *P @ "T *P @ "T *P @ # Q,C,T-38W
+M.#DP ",@*RTN,#$R,S0U-C<X.6A,)  P,3(S-#4V-S@Y,  C("LM+C Q,C,T
+M-38W.#EH)       *&YU;&PI # Q,C,T-38W.#EA8F-D968 ,#$R,S0U-C<X
+M.4%"0T1%1@                      (" @(" @(" @*"@H*"@@(" @(" @
+M(" @(" @(" @(""($! 0$! 0$! 0$! 0$! 01$1$1$1$1$1$1! 0$! 0$!!!
+M04%!04$! 0$! 0$! 0$! 0$! 0$! 0$! 1 0$! 0$$)"0D)"0@(" @(" @("
+M @(" @(" @(" @("$! 0$"                                      
+M                                                            
+M                                                            
+M                                                            
+M   ! @,$!08'" D*"PP-#@\0$1(3%!46%Q@9&AL<'1X?("$B(R0E)B<H*2HK
+M+"TN+S Q,C,T-38W.#DZ.SP]/C] 86)C9&5F9VAI:FML;6YO<'%R<W1U=G=X
+M>7I;7%U>7V!!0D-$149'2$E*2TQ-3D]045)35%565UA96GM\?7Y_        
+M                                                            
+M                                                            
+M                                                            
+M       !  (*#  ""@X  @H/  (*$  ""A$  @H2  (*$P ""A0  @H5  (*
+M%G]_?W]_?W]_  ((%                "\ +P O $Q#7U1)344 3$%.1TE.
+M1D\ 3$-?0T],3$%410!,0U]-15-304=%4P!,0U]#5%E010!,0U].54U%4DE#
+M  !,0U]-3TY%5$%260  3$%.1P!,0U]D969A=6QT $, +V5T8R]L;V-A;&4O
+M "\ +W5S<B]S:&%R92]L:6(O;&]C86QE+P O "YC:0!*86X*1F5B"DUA<@I!
+M<'(*36%Y"DIU;@I*=6P*075G"E-E< I/8W0*3F]V"D1E8PI*86YU87)Y"D9E
+M8G)U87)Y"DUA<F-H"D%P<FEL"DUA>0I*=6YE"DIU;'D*075G=7-T"E-E<'1E
+M;6)E<@I/8W1O8F5R"DYO=F5M8F5R"D1E8V5M8F5R %-U;@I-;VX*5'5E"E=E
+M9 I4:'4*1G)I"E-A= I3=6YD87D*36]N9&%Y"E1U97-D87D*5V5D;F5S9&%Y
+M"E1H=7)S9&%Y"D9R:61A>0I3871U<F1A>0 E2#HE33HE4PHE;2\E9"\E>0HE
+M82 E8B E92 E5" E6B E60I!30I030HE02P@)4(@)64L("59"@!# &1E9F%U
+M;'0 0P!Y97, ;F\     +@                     ""B0  @HH3F%. $EN
+M9FEN:71Y       ""D0  @I-  (*40    !);F9I;FET>0!);F8 3F%.    
+M       @8FEN87)Y(&5X<&]N96YT("5D(  @8FEN87)Y(&5X<&]N96YT("5D
+M(  @9&5C:6UA;"!E>'!O;F5N=" E9"  (&1E8VEM86P@97AP;VYE;G0@)60@
+M    (&QI8F,@8F%S92!C;VYV97)S:6]N(&9I;&4@)7,@;&EN92 E9#H@)7, 
+M7UA8+F, "B!?=&EM97-?<&]W97(@9F%I;&5D(&1U92!T;R!E>'!O;F5N=" E
+M9" E9" E9"!L969T;W9E<CH@)60@"@     ""RP  @LP3F%. $EN9FEN:71Y
+M $EN9@!);F9I;FET>0!.84X               3L  %A &>P"AK2 >' T 5S
+M.]L2+C^CGYWB8;+<XBIC!+R4)M6;87 EEL+C=;D4"RPA'QUJ8+@3.Z*)TGUS
+M8/'7W\;*WRL&:8<W)+@&[6:3;NL92=MODXV"=5YTFC;%;K<Q-I!"Q<@H>8XD
+MK@[>A,$;D\-GP5?#RZ;WM9#@[BPV3-FR7PT0EM1=L+=XT&,&92PRFI$L>;6R
+M23$ _B$HRQ&O9':DX48 (PEW4QW. $5WCL+>K<\"+?2%BI@W<X5[><Z4BIP6
+MYI'3M,T-X$,.74P^^_E4^MR=*>L9B2FOG?1H?'WU>D^'D0)E_IK=4.<3RO05
+M'9*K:&*D@&AC4$6S25MP*,WQ+QV0DT,>20"BWB80PD!J% P4GO"^;T@!R\"#
+M05[^X&C]_&:B0\"Z)J&Y]>9[+VJ]$ETM/?JAN2<,Q@#=(0#0_6;A>O&?_9ZW
+MOPW0T5#_.K06G=.1.$O6I.3T03_N!9(H-;]4CSYX']Y32L+\QM,I!/!J_2AA
+M-;L66 \>9'95LV0ON9>1WH]Q%":^I*_]!B92R719S%5#)/4S4;\BA&/'9)"K
+M8O0% -R+,2B^<IQ3JS4C CRJ\S]'J!H!3(FNR>6CGMS+X'^1,JU\!=WQK#60
+M'N&*M]#Y6 S,%6;E*> "G3EN0U1-, U\R@%F(;Y, =L9'$$4F\,AT*2%7H [
+MDQ+_3WH/A4BV2."13SAULF_&4P%X<9VUK*0@ HU=Y&(*#J^*(FX ;4;0'6&[
+M0>(^DIS5APH1(U18B6/!*@Q*CQM<"(.ASA839E]&2<10EL4->>Z[44>KY7"B
+M,Y\>Z<]#$82]V$,*B>$2E\ 6J??K%A;,>2=7SY[HUH, #)F!<'U,4"T9^@_-
+M;S8TYBE<@@?"WIU'3%+9@]'-0\?J"MY+EA?=D371>@OH!;79K<BI1G/2L46&
+M@N?&@+:!K^OC!FF=7OBRQ*>4]JQ P"WWL\\:A;CQ UJJK&4Q&^MRV&\(U$W+
+MM>Q^]O4>1<J,&RADHG,V4 :SB(!!:31)0=EU/-]2TGZY/J;LI*U))A3O;NA5
+MJ7C=8;U9.8QB=/6;0U#97)QZ1M$!C<*8:^KK.&+:E-XI[(J0FK<_)?/*&ZYK
+M:,/NHXFWLZJ[#X_[S-'K;AT#:Z8JY!=':B*=LN,JFXY\4<?#[_?$5VF)?U7U
+MXZ%KIYSK">@[^L\N?U<@9JMI&NH0")HU#5@WE_CDY4HBIV[CJ%9N=,+*K%;F
+M#VX.$S8X.1)S8O775'BZY-MS-54* ?!8FE#:]GIRDZ1C19A<ZZC."%>@R^HD
+MNB.2PXCB0C'00;J'%U#N3,EP9/G<N>]I@=#7V\1-BMZW6DI..F:4%$@T2L<Q
+M:"[%'CP^2^!V%CU2["U&/@SBCGGV-^#J(IPB!.84.63@M*6O6+=\:8GJI0^^
+MOM_A  ;9^M8JN\WIWQJYBC&N_LK,_D2MLJ"=:$+D6< >RNFU)<Z[AJ<1A$OF
+MX9Q'@Y'U)C)0'>5*2J2"ZW:\.5_5'KD_TF_HV>\;#D-BFY2=J Q*)D)QC"=K
+M?-(J;0"N)N!UII3R)SII]MQ<G^>X"I8>9WD]UL4<XQ[1X6\=AQDNA-4M1ALF
+M)2O\#^OF:)#(#1+B=N$A:)VA?.Z&#*FNY;BM84&%%TCQ;.L7RT"G;?8@K/&@
+M_20K4L9922+/W]JDZR"Q45/_.L?( 5+P#G!9>G/NCW7U\=@AL).,^?!,1IMS
+M1V;:47\4< .NS$\%,1P!0!=;UVUB;-69&X^5<FC. GN%YTK+$*:0%ANY.AZN
+M*OKEQ^BRD%56 ^;OHYI0.P-MQHN2NI;6JZF]L-D_+;?*&-Q0T#E'C>26EG!T
+MTNK:K1JV!$K>\JO-8CKS[DD3MUBM.:-)0[EL>4$W=*2N5= -+:]SWVNY:F4D
+M[I)T>0 V_ -L!>  !;=R=)QT0<FFD^A2.^) NA=^K E*NW(\PV_7P:\2NF"R
+MGP.XAR'L)DJ!$E\/Z$Z/UL,OD(!D;2?"!!/@#M_#)!2P#9E3NG^$\>TXBCUL
+M*6;Y#2 +X/F+^XOQU)4H*N8?M5,<\.B<W!53K4KAGG*&7G^#OEP)S FCE&[\
+M;.5(LX8R><]I\\H@0#_E#1;X:HE,#GGW8HS9TZ4+%3Y!4>K?W+/&RP9N1,'!
+M4XR=:-DEK1.G4@&._[-QLHT5Y0/9?3$><V$_[XUR;$Q$!$> -@-.8FIO SL/
+MVJ(83Q?)I 0ZGE52J(=]4$JKU.>)A=G8M@"!+P<^M=7]*J*XK^<(,P, []\U
+M7@^F9$R.2E&GB".>L0PQ=C?<7-</C_V@7-V[VN_IK^)ZV2+X-(O$'2.M!D9R
+M8T%OSB]E@FI"^\ ?*(S-_XM'<1H?Y%L*B/T#YM\N>CXR!SDU@$DAROKK=(% 
+M-3*$*P.[U<IX(:?)',_P%]C!U#?ET'6R.&UJ]PGD[,XB/&I_44EQ]"GZ:V5*
+M2E-+"IO)LC6/1X']WO&[<YEUU)#.P_I%/_P[8U4A=Z:BHMIBG)51Y/F0]+<2
+MH><PI*#QMFB-@N.4&ICMC0VWI)0)H%$71$\GS#NF-[ID">,9XDL(G1DKDC<P
+M=>7=@@5 O3;W%KQ D>6<>U'-_DHPQ@>VC%&P$]2\V5?(6@'[)LNM5ZH!B&AT
+MJ#$N5#@4]\H\#CFT;_ZAV0>VTVI"EL:VY-85%D3^W2[0N<G#(GK%\VL7YGY[
+M[@O?.WD'!7?!\J9\W"R13#^TT<=2^1;),AI!;\2K,)WP;E%K.+)&5K4F<9HZ
+M)H>:N9\HEL6@*6_(@"92XR%O]BS>-P=^3A$E1"DZJX/%MY;I\;VX@^M,\/,T
+M2.MTFQV1+"U4OBG!VHEQJL[ ^W*L>$$1WP2IJF&6\$0(&@\<0&LS9R:C&!FF
+M94KTLTE:TQ!V"0O"Y!7W6'::B+A,2C+@RCO4;"5'#_(NN2Y;L9]V0YF6G]@B
+MZF.#X+'-'.+I7NA>6FH\?%[;#+?0LJ\W(- 7 *2A +5&Y[KON<DX48B"0*-X
+MJT"Y=419VF0(N-C,D)S*15>LDCP<[ MQX;T]X? 'BG;Q.8244>Z<AGXO7F6+
+M)Y%5*I ^^Q?!$"-S5 =0(2YM%I/57/[TK055&7F;([.[ZJTD@L=2H?$FA:Y-
+M5][\>#T='0#P31(26HJ$W2%&P*/B!(!_0YO>Y&XX:J'NF8UGZ7ZN,V[>UOHP
+MY.X\#;+&;Y4!U'?V_E#7L3@G\@S&8:+>0WKC1XI^<,J^@BOV(>:#="EQD[^!
+M$+IY3#M=['4DI7T3Q$GO!F!LAW.TN*7#T*-\?)8[G(;OU$I<=3Q;L@X@31LD
+M?VKL7.?1DI(YYVB4]*!9L& B%<E8AMV.QC_H;24=$(D<UBK]6S:M$QK2B],@
+MBW0J+F@7!/?!&620TF)YRCI' ZEUG]D Y5U#AI#9B'HF$6$ALQ&&)*C86#<7
+M9_T80?[&O$= ]S$3J,;^K%&7A8]3R,,B8C2.W"Y_"/ 'BZ;W<)$6Q<\66I0W
+M[!K)AZE)^LC\@>'UM;B-X:Z3%UC2KX >2'=WO$/8=@M%PW\9JYZN1*B:VG<;
+MSJW) 11"<DS#Z4638#5,^1M DLA!79G(R9PGDT"8UNVQ5YE2*R6+_4'7-$6Z
+M2]71DO&=6#@V]DE;H;AQ[%J[N:IB(Q+0)R"!+0OUQP8[U5>&$]_)#\L25'?2
+MI-U94$76?330G?@7)N1" !+&[1]_BJH]Y<J?'7=0*6S(OTQ?O.Z_M:J(>B<@
+M[R<)A4BLX"+I'6::?#I0U-"U_#Y0)@EYHI'A7O.8NQT CH5\%6F\H= Y,7>1
+MU+<5 )#.&HGS,PNB3?G.*")GBS+T[2-[F$[Z*PP7S'F5MR^? C/U@>$WKC5^
+M-V:LDTHZ*LFDW@M@[KA2#K9LK_$UW)1@[L,+:-*65E>VQXMK9Z;G+QGEE8R<
+MS80)L!F>AO=()C280I"P@URD+1VB&F1I\,;[1=&%EJA(Y#6-[U:\DF4 "7,!
+M) 6LD&A$[:Y\9W&B8ON,6E%L'VM%/65',^A_"1^^QE>OICP!)%O\Z1V\8+QS
+MY33SQK"M9[O3Y,VF/.\4^]TNTJ<FR\ZGR,\GT_Y//B) 5T7OI?D>-P#KUO4;
+M'.IBAVV4MOZWA"&A(W:#2=$!B'* R'=]@!2J@SI[16_?<S *\OU$VB7(>\OV
+M\,)&GET9 E7U=WLR_BA9?* ,9#4VLR*TW2C@.[U&&42 \5;?CY68L5R5/$;+
+M<08))I/Y*F9]7Q-[VNIE@",[LR(87+0IL4-)>F8_Q&I2Y\-K,EW_*!<EQ,^K
+M?Z03.V43Y:!-[@&G82T"-R$[E&R0? @*NW_O88<NJLINA)WNI=1 [\&NH,=_
+MS1R/@(R>?-U^D)93=5>:YR_OT&8+RFFPS#X0D0FE,2_?>!6CZ)+?O\C4$0_'
+M^O;XIW_@NQ79D L,EI .(H+EV<8P5C@+0_LV>&(J Q]P:TU^? $?97HBY%AN
+MI(O5GY2$TQZ$Z@F_44\S[^R71GV5%FJ\6_3NA49CHE1+<%+51[,018TCC3OV
+MB@2:$>+@+2FX_+ /)[VYA0BZ]2SG3E?J7R)10;.[W!2;F@OSVRYHV<&=LE;U
+M6K:1Y6/[K*>[.")[A%8I8'3%YC'9!_0^#=1P>[+,KCEW5UU<NL*\3Y2>LZG6
+MIZ6XDE-G2?HSG T^ ;QY1NF"87I<MIGA>)<%8XP+*&S?XHA]TIM?:Q?"&3'F
+MFP_3"B*3^DRQ(G;H$UJK,^C$9UJ)K1B$)HI,ED*;)W6GZS,H_A$MZNL4G\T@
+M?<V^A,CJ\%T'_'DJ,S:!HQ7-@]HV3&ES5P?;[9ZT#2Z-0GDB]!APJT)VI>MX
+M87WD+N<OV#[B]FA9(5./,??^-0P3 H@L^]!#FJF%E" ]]N>)#2?*Y5LBHO:V
+MK452U;-*>D*T=LX(S/=9+EDN-'D4]BTO $OU1PQJWUH*._0-H[9CR2./\(&(
+M,27W6-V5!QVKN)P]232^I:-R7C@^$M:XU]KQ/8"9)2'864C7O"UGI%E2"5?K
+MC0_*9"@)]4_^R:*CUSX]PNNCF,9Y';4ZS:Z4:$,1F-X2T.,"P,JA[RQR#L:I
+M& 5HI ?#12&@G!S)6S_11$*VT^+=NXY/80"(0TK$RP9,3@'MS%\S':P^TK,V
+M=U+-14TR"4*[NP>L>(Q2GU(3Z"'H)#ZN2)9HCDC(8;GP$?$1K@"5YZ*LBZ^D
+M8?:3Z#5.]D_C?I0FBP(I: V(SX)NT42Y#PQS*>G$:Q!J0-LI^FZ\S,0$39VZ
+M#=C6]E+X33K4=Z+Y<-S&M.2;06!SCD3:F8S?]MWMV,_@0,9217J"?.&<OO=W
+M*CB<Y'6UJT@IB94%-[[1=(R<'-%Y6#=8; @@<"39O8M(%8MDZ?FS7&&,.]T(
+M*F8@9 I[C7^4E99:TD6HOEW%FJ!\N45[X(3A35'U.;%"K$8B#'/9*SHA*E25
+M_]G5((BSLJYSQ[FQ?&?&L\X957F3;<6#S6%-D,DX'@SDM%1J^!PSWRCF9619
+M"CS'DO&ZH3=VZ@>5 +PEI_L'2CRK<M3W8!5EM.,<_/<Z)BU"16#6Z6;81Z@U
+MGPV;%WQQ-EHJ421FM62C@H.]"H6\;3YEF;<%:>P_']^/EJJ._]MV\(Z%-L<_
+M =TU*QTYA]UW[R@G(O'D0H_EO<?I&UHVR8<A+XHYV$#.IRK4UEH'GK3A(\$X
+MN/#=!HW]J36;'HU&PB:HCL6\RSHP$CHT8(]_,5NMW"OC.705]8P7&G9VD$<:
+M^"E/FFBK?[!%L@-1DRF2PQ3"\K:%@P0\0]827"(9%H4^;V%@8-?$YZ1&MQ^'
+M 5>VG*^;KJ^T^;'._ /1M<$RWY=I*_E)PTX 4KPBP(",S<X"U^[+C8\S;_C3
+M^I /'IV"]9?HJG,-+7N3F.Q/&.]BON*H%4R.B7$\BW44R<*U$$0L:L&A4^[ 
+MH@OW$:-2EB/XLYP#U=49NS?J"YDS'Q;PU[';,_19K(#"=:5@@^MV"GHC#\&G
+MSE1LH5>'5P<2<.6B3IT1+?D1ZE:F9X865W>P++PPE50H"T3V&0A,B[?'9VU"
+M-)#K_<IJY*>ZZHZJ>W[0%,W3":$E:>'=AZ,Y\!;A<V#3F\)TN?^XG76P\IOB
+M2WGVEGAEB@[O/6M HT.9PC&H6\F:H--<:H7(--]5YZI,9TKC,%R/#=B'VD9_
+MLS5';E\CQ]9H]^049]:ZPJ$3&Y(H]Y^$RFI/C\XG%FB"$.N^[F2!:59L"?F?
+MCL$2=?:@]GRB"-Q;3V;[95]B[U-N$PC0=N/XX.6;!%:\.&Z;0 HJ%M'F%X&Y
+M07\GX_ W(.J$0P"%7J0>0@SUF6*?.FT\@83>X9/#29._1K,NYX8%"^BPT7\<
+M&=NV4Y,"XA$76-4[3URQQX+;Q@A#-\$;^[7GRG/#J2<GVHT ]02'0HW(3JS"
+MR<"+D6.E$3,[K>9("O!_+9EG),]AF)CDWP%:;POVQH[GFP-CSVT;MTR;B].@
+M9"7*NV$Q 9?:<>TL^*$P^%UQ\,]O5 &85X.ETWLES)0<T53#81ESI)()Y(V\
+ME]"MU!%RV.O&0SR4 ))O5I>'5+AH_<NEUAMR?%_04/Y$ ,!&9UM$ ?TU$&B9
+M1OW3=.&#6XJ#D#3);X#P!EP8A]1L=;47,$+SS>^VXZ=EHQA[. 6VX@&L[12J
+M,=O8S)N8:EF\\/'BG/"=3A1F"ZEHZU634>+WIM8O[Z0LQFD*JS+$$>J"P_ZY
+MA\Q!+L.G:2#!:#Q<:2B+UM2>#V1\54#B<DTM2VMGX(4EY.T:>ERIR#QPJA2P
+M,V:ZS0-/0<#M7IWK#P%POT[H!'(.D5F M)J#]*%!FV&*-AF6V/VO ];(H>Q.
+M.;^4.[F8QG#;,>,F+C '4@"/&I\!\<HCVF.O5KO$/"EU%;]KB31- QZ<D]I]
+M<^2DMKZMX>(6/>\/856*1M<I;8PJM@'JKWJQ+^RM53 83^W6VHL]%$<:,6RW
+MF8.S!O@I&@RR6>+0KS+E.14X]O_8Q_$A%F@Y]V+_D7Z=Q^!]/-+WZNM$]="?
+M'_V'+O#X-AJ*CVP#D(WP.]CFVZ"B@.J( UFE/Y4,E,6NST#AU1"61S>:'WQY
+M@?A&'&5Y79!+I<$V)IVPD/]E /WY4$6.!?N-13"6K\*-Z+Y5]9WX2^3)"T)R
+MCD[EYPF4"H>N)+/Q>)GK=]:7A:A8I^2QO3@ZJFSO7%7V2Q&V-$+)DYU!S7P"
+ML\GS/:I4W#/>VAFMDGB-R%<7"2>CY>B4U3?619>[ &[I/A)1P/8*I]+>.@/3
+M/4&Z.9@*C/SA5OQ7@V%NLHAFX'G"R4A@U1C>S!QL*[[A'ED%/I$G2UK%5+&B
+M-+8S88&L<[\L\[H;YR2I*R;^%.(6WTBXU+&%"K[DYB6#I=9WYLM;<A9'')SM
+M9# 7?O YWH-EP.%[(H;R>"TR,;V,NGK*#P"WBX$= T#,0>RMG/LIPZ_=X(>*
+M&*QP+(])/% YDL"4/H^']<*\O-A[ P1"UZHL&)*?N)63G]E0R+Q/I.F69P+:
+M"P96[ZB!HWCCUEQV.P44N)$CKX##OJ\.!3EYRWL?T'E ):H+77VQO8,&.-2C
+M*A318 N-0S/D9BII8^1PUU-J$8LY3/9UY&&<Z.O "(P]SSUHE[^FK[F;BV.@
+M@&;%;OB/]<]]7@%.4JKRXYS(,T1L72:4#%US\6PB=Q27#Q*>O?(RH6B'T!89
+M<D$@1A@KI=0E2BM-Q/+6UUW]HX9]2Z^="%A:,FA)K]KCQ;TAQQ,RW-/,[$7T
+ME+0E/5X2+VG;=<O!!7NJ;I+QN!EZ*"^8*$.B/N(, 'HA "O0%5D4A#5[]3E@
+M5/AR+=[Y^F>E&#;[Q?SZ.JXM*.*/!4*H03%^<G.BW)W5+N,EUN-4R5,3P423
+MNT(T#;J;2&^L"1S+IWG]MI4MM[*>?@(9MV;0#UMY4!,Q3O8]5*J\T!1\KG]X
+M7%:3(U D)__0HFA';GHOE*J.F ;QHCM]Y[.1\5L4*TX)HN,Z>G-NQ+[?]5Y2
+MW*0I/1BN$]U,83#7JB&CL@7F1PAH0-<0&3HB RQ>-R$ENB4[E15,@K5$74U[
+M/63;>I/1Q#S2K=HE92&BDF)<H*)CI0'SEPQEO02)*S8^<E$SDIKL0VWA ]$%
+M=BP+Z7LNI$TGPB=8I)5,2Q6(5?M/7>V@LKI=-2)C'U@D5!_]W55+^9R(*)O*
+M:+$-5(J>J1$MGW_1; Z(:,!5W,%.33]OOWB[3YSGB?N.VZ>[C8# %XTY@T.6
+M')?8$$ 9;0$H0U"X9E&"7W.MN!D:L=\KE=7< G9/4DUSPD2)U#*V)N@X:=_V
+MSG9:OS&;VX8M-WHF^B0H+6E&8ZZ<>V0E[4*K"; I-\PFZ.H65UA3"PVYI!*/
+M[X,$IF^NGS3#Q /(FTWH8 "8*68E0Z1IAHA34HNIX G_9N\PNLI+Y!,=$+PO
+M*"F9<<>'#4%-I+KM8R)]!)W5K'!\_30C-O[Q>VNS?>5[/DE/F5/CZ83&=L$#
+MR#>0*3".3T^&^;C>57SW8C[)QSD5S28'>(:I@F?2<O##2HT$7%)12?I([SO+
+M7'39@U\_J'ZU&,W.#3U4FL2U/U^I&5-%)A$4P(.$Q-_Y6>O%TQ$,!PP)NM U
+MV-@\ >)MJ4O/.5#?=OW^H@<]G]4VI7[]_?;>T8^%IE$HO(&Q"2^J\ '"2"L0
+M-)]J!B:PD=8;)>!'0!"Y RYP'VO^Q4NGWW8/-)0J9/':ER,QMZ_RT673">;X
+M.;LL$[/P,-FJI5M:.+ARKA(3K%76V84\&&' ITE8P4^EQ8P;#U&^LO$0#M@>
+MB-S#!==R<"()C "J<VBX,TP_:0G!#*&O,+P0T=P'9@K'^&UU#/;YJ5;<=G3"
+M^DT(2+#-$1,YPJ'^1#K7=7[7]!Z4<EMO"WSA+*>7#[314PSVNW\4*7T=>!'3
+M-PG]Q@'/\HU/H %]K ]%2DCPN84_-T!A:$( ]6(P5.A!!U\"A?@Q0_ $6L-W
+M"GZ%RR7*5, SK)QDU;JXM@B&5H"O1'P.734M!53B#E%H"./(?4""\W8[GU^/
+M=-8 E.445",X^LU"@[RW@[VDT.<:JNN.;B^](B?Y4T&.;E"!*]#"_'E!O-'P
+M1DZ1-[H<XE '*!F .>FU20>Y0IZ-7SG)17JAN7*4-@H88.HC8^Q!5<-SJM"$
+M7HF-5M5A'9<_"^\+]>*0%^VCA'HAP,2V"R8DC"5UT,$"&[RZORG>%:&PZ8UD
+M?DO[7?$$%UT9^1C&"P;-Q5;NF7[C"HQ55R8&0SI8I]XQ4'HY!/(JH2!2DV'"
+M&95V7X?9(QL!Q(EV@=H)_=2ACLKD* )+4#3;79(]W[;Q!DZVFJ>,Y7:NJJ[,
+M6M(*<0IEW.-372+^  >,@?_W3W(OTM[&:UM1O8@RE&OT"04R/H=I$XBQT@,V
+MHFD$_WC:72]JTD\A0["ND0IX$9WQ0+^W[:_J%+9NK]ZM5Z@I>^=Z&LVB'/+7
+MX?00)8O_6+AJ.*2^MJ)H .]ZZITPD2>)&*F3O!=W[P T3V,GOX>7#*GQ.O']
+MXA,/*SY89Q@__]]MUH]'C%)0I);.@#DD$=M6!B_'F+$HZFP(0Z-H[,MS+&23
+MZ5/$)X)Y)C&"3!'!H-WKUCU*B1?Y9A L((0V4+X)BH ?M*2MQ!Z<?[,P':]*
+M$KTAFLE+N1P/F75CA7RNA1L+G4]0#QV?RQB+T"54/=80#!OW=TOD".OGS2<,
+MO'R^KM1)5H94;9T*JV28(/Q<&:-Y$@GYKW2F87)RD*ZPP2L1O$TDIT(6D]U^
+MFGK0<COKXX?HTT4<</SI&&*FMMEE'P[>*1,FSF2K>0)_)$#J:+8;?0MA^<ML
+M<3>XRO&.3$]?D**U9/.J*;Y5H1^OIM VJR8<QR3R-BUZ]#'?V2IX:/F_)> :
+M"WS_QLW7PJ>A3"@R4-58DS"X33V>I&N]NZ#EWDJL)4PF[^FZ"\':S*%+ZO_G
+M0;0*4\,7B4VHA UO_X\<3HZ_)J@-_B>E6\B*U0H6+ 6F)Z[?P^CR')J)W2&0
+MQ2".L$HW$)U6.PK!/]WH/1#4C?ICM6..<]"K*A0M :I<_01/2\T:152:D>O-
+M4P.%["F,K"AI&+,AJG=>_O'3'L:"Z3T ]@>T.!R15"N1:[6G81R]I54F5T8W
+M,U81S#?QH3^WQRV.A-S-7RG*&IB'K+5W1<.@S&- -;;)$N[U^(P6JW$*YT:_
+M/P:0>:H.!H(+FC!-EB :>:^!,GB'OA06 .^JBJ0W.;B))B57L"#0=)7:I=RH
+M[B#U/J"- =>97F?ID!^=C<"4_!>H?I$$>$&=7YI;BI1*=6'-]=LNX^2/PF#\
+MO8E+U612LUH -R^>IMGKXT'4^&EKU]?<;)K4SW(#(BR&,!1YL=3JD@&5MG"@
+M5F=MLT/J=LK @TNLK'=TZF1)5WY4;\ZQXK^5]X=:L\?@I^:@L/>R>>VHI9->
+M2Q9RNJUR3"=:@#!20S@]JKEU;+Q-<F\]%E=> Q/?B>E"#U#_T_$2A5KI-_R1
+M&T;_LCZ>-V%V1L$CKR4=53TQ)BN#]88!T#$<X%0TVV\]2%HI+6>)NDS0WV23
+MTA8TZ!_VLS.[_]:D<JA%.*A'2F'RZ_U&A "X(;_PE?V\=PHK=MG(Q6%U=^E7
+M8M'$59K_#G7 AJ)A025X )Y@)#5AE\OD65V_GXU*T#:\4MQ8T8XO('-P3 @,
+M':5#80%JHMPAI,IKY?419\^35.F1UQ7XYH*.XXU_D$1$B! 9H$AN+*_K]X9F
+MS1P#@\L1+_"FXA55 ._(36L(55)UA]ED;%A5MFBL%,G^6_!%SWW+(P:A0EAA
+M3PT_VU@E#V9C_KA*#J_X1%F&\S?'HBP&#S[3=11VY=\-'>JV;9^?#2,SE(@$
+M*D@G"2,D<YW<!Z=8++*BT&>/'7KB++1W6\[I=9(%1L'S0!#8XO"T'[$+U9E(
+MF51=B^OT7I,_72UEULWT8B$)X8;P*8(7TKM=>2?R<:N5]NTL*!CC'H'EBV-_
+MG,R-D\]2*W="_PY/NH&^A(?H]\DVU[GMXW_)V8!7FTGVQM78RT>FA>&]'3K3
+M!T!=E4;D:AOA $OL=<^=2?E3AW6^:(IRKLIJ 2G(PXO"&-D/NY5JTS"'SFO-
+M8QDGM#OBM/F7Q5D*3XLA.OV*'\OUA,[\%>LS8IW3+FHJ(1IHS2C%3.\$&F+?
+M*!(?'(K7G\ME*DE\$0I]DN^.>RS''# GMM[_13,8OY_L)!&2JJNR[!*<O2$H
+M9<"IW%/H6"/U]5Z9H'X8B[@<D6]&:AAYX&DVM*'@;UZ>/7;(_9*_W_64L+\1
+M\%IHHJNY+T6<P[8O+HZF:8! [U^>9ZX)9M3G<]+BQ2B.U(RZX&B!1]RDS>F1
+M B>F';(R"0:H=IS_GRPPK<0F"/H>"^WF/GG[&RT.3K;05\M,5LKCQ8GYI[Y^
+MYSA:T./3'Z.#B%%YZK'41XW5-QYYE(KLKJ;H1]-6?YK+<(G&:\T)V1YX/(X[
+M7WO$/?2H\8M67:QI8@;RYH&[6I&A).KM81]_^ZB.]-+9%+4])S7TSXJEO3]0
+M+T=-S)-[SZ7WCAIOMBO&&X+42%+1EY&>%_IQJT+P&HO'9JA+?-4BJ[6;?Q-(
+MG!A8T%8V]A1;<H>$X,UF).X\+)P%.7/55&4D1$D#V+W$?#=X4$&[(6X_EO^K
+MG4.TY,8)G#G+3=NIN7EYN0&$T(^2A^O1(,>'^8X% <K2&*X8@Q0V@K_^$['5
+M..N04AZC/(VEHDW^FYY=Q[<FFU-O@%U8JSA%FZ9DK/<^0=V:\4&S@ T_$D^)
+MP-B^I2X22&KFL+R:B'\]_V\*S^HN3[&6=:SMO&V7)#.H#;0.IHZ7U@4IV'"0
+MJK.+HXZ6B^MOHWAV3ZWT/+AH@)N+H7)O]GY4B@ZPT,^UFO@U.T!GN1+=[_M2
+ME778\8-_)0O),M^U^6CVR1*[F3*@06YCN@A;OG?)'&@+#IK!*+FWM>^+]=6M
+MO74WJ S+;7@%EB/A)D!.:;#]W$"VQ6E0#2:R4_2K=P%VK>/=P2 ?O/R?.#>Q
+MFNB'1J%%.X[SR[K0O-"0,1M 0(#A<J5)-IN[V  \85#S VWWBZB/7<.$8"KF
+M_$\?,-'I,G.)R7$Q_J36TAY<$DVC\A(J,+PP8 T:[7M\X20I<G9*5L>K^'H?
+MAM:O\WZT+^:VK<V0/\$0$N;/U=_ #).\^@QK+F4/*\0[NFE1E@!1%_L\)97Z
+M%+<]4-/-IX)$+3A"JC:_P9Z>6OBP.F!0SYBB90"5?+L!=RD%VI#G-6TD3'>S
+MP)H+FH=S9]H1=C8Z\D*FESDZ?;-[[/@T&1:R%+[S/R]$1Q\NR(<.>5]_7P93
+M^<R38>9A/CYU#"7&O&I (<A]KDXE(@_OAI9: '7BZ[)Y7@6<%W=/"CC\\/2H
+M0/\.8:ZU)PR),*$)ND![20$OX'0T4#W/.$.]:R@H==3Y@L\.E4ETGW)88!(>
+M+4EYX(+8=>7#S",A?FZJ%>^[,2TW!3F374>N3N7I2ASKV/O<:-3.)=-W(A,,
+M+3$ARAP<!\Y7'!E(T@I)_""9#'</-(Q5>P(]@OBK2L">CY@''P-)D!(8R5OC
+M=6K+8YD&F\>B 1/PPKP9N^(:!?FXXK5H0!;?+*SO!Z]=IY7MA*6+:3DM%US:
+M/H#"XE>FXG(/#OV]#;^<OTXBL(&:/XGBU]^UZB'MVBB*Z$N];#LS G#D/D@>
+M")"=FX=U[J\^7"Z)G?5D"[1/[;> (RELY[R,M)/ J<$N^6KQ)]8*IYM<$V;>
+MT9;_4&.1&431KJ:SSMKH"A"+]WAA:[W][T)HML'=)BBEC=,=)M$OB),@$@?9
+M:@1C_T?K)+$(V_YWOD[K@;&BX:XN753^_5-/9,WPL.2D(IIP,S3OK\19R;PD
+M0_F^>O?G*:>?=*R;'@N0O 8I       ! #8 GP$] @X#% 1.!;T'7PDV"T$-
+M@0_T$IP      !8 +0!# %H < "' )T M #* .$ ]P$. 20   0:  $1X!32
+M"F,*2@J, /$"X!?F"V811!"G T(>QQY&$9L,$24-)>T<V Y[#)X-&!XI$ZD)
+M9B.3#)P;'2)S!2T3W"2)).D)@QHP).40I0Q:%9@E3!+U%:\;\2&Z&I (#@ S
+M"A\1, M_!$L49P*;'#8/AB2#&98/H N_ BP%JP.((FP=UP=L$K,-5Q&?%^@$
+M#0NU &$!DQO\#_T48 RN% XA(!B3(K$/?"06"7L #B8P",TB\AFV$0X$SA=D
+M%VH3>@D<##TES!'%%?T1V"/;"]PC[1P!#"\F9!8&#M02"1D5%V8E&P(+%%,(
+M:!QZ&M\F51%9%R4#'AQ$#[,8HR#. )T)U!?_(<8=1"5O)M(4(!J_'T8"JP#T
+M'T8$K ZN)3P!Q &1%V@=&@75 O$F8P1F"Q,6:AX]#7,#<0B\!LT0B12?#E<+
+M?!2N'MHF?!U0(3P/<0G?#=H*F L?"^@<_ [7&G,@"A$"'!(?_A':&2@5AR%E
+M%"$5<A[N FP4>Q6G#R$8U"-V%0H&-QO'$#\)$" $&:D7L $B)OH NR,0(A(2
+M+P'B'Z\/Y@!,"T,EDQPQ&W,6K@S9'7D<2B"A"E0A! :0!&,?X1+P(;L#VQ9>
+M(V\,%@F$&4@%%PBP'(D%N LG)K(%M 3.&5$CD@)W#&X#QB8$#Y0>>A4;$5T(
+MK@JH#:$A>P#*$W !&1=\ !$BCQ*\#/@F< %G#[\0JB @$[ C,AG.(*H/'@KS
+M!1,*YA7%(3 = 0T!&U@!\0MN"T86LQQC$?0C1QAX#OP2@PLO#6@14"-M"7\+
+M+Q#7"KX2 0=,)FXA"P%K!Q$*%16 !^@8FA8J(]P2=2$F'?0*E0$A#2 !$PH9
+M")T0"0K2'P028B'-$/L;\@Y<&;$!5!D_"$D*<!BA'U8>H!7B)6,0V V*'U0'
+M? _F"ZP-@1D0)E0(?B+B(]47O"!X UD$2 2< FP2^P"8!$0=0Q*)#S$// HG
+M$3$.;!$,"K 0]0;A&D,5*QRS#'87922T"\T#EA^3'"@5501*&P4?AQ7P'BH;
+MQ"2T"R\%4B.))> 7" "D(LT"*P&R(/T361L)"4 !'09I&CD:6"<%&Q(F>@FK
+M $<3/12S$2PC& ^Z(+4%]P.L%L 4V1LY$(P+G0C;"?X:? "Z"'T4?!H/#ODE
+MEQ$7&+<8PQ\=%]H*>B,K)@L%(@ R#]@1(1\*!987T27R <$: Q;4!JL6>P@\
+M"Z4.\ CY(F<3.!5= S\+:B/I")(@:1?G""@+Y1GQ$W$*T1QR$O 8:P7%!KTF
+MG U( 'L1B2(K),X+=@CV)N(.;""Y!B(/JQPT#5L2RA5)",(  0'['R$4]!Z;
+M(L\@#B)J!>LDN1-,# \5U G8"TD L #5"B\FTP%5&I<3[@B?(8 FMA6E!MP,
+M'!;Y"LX&VAO] J8@1 HQ%($0%P./"R47. >C'E81+AT!%Y(+5@:&%(T:8"'X
+M(L4"TP@-!*$1"03$&)<D?@ZA"M((Q24M(:@"!P%&$R8)S@#P"P$7Y!QC%D 6
+M*1*6 9 >] F!"M ;RR:A'W@3" TS&,L O M4#BP"S@HI CD1C23_'D<:3A"%
+M'+81V@W3)NP<E@MM''43M ..!)(:]B4'%M81ZP@2)?8'Z"5^)CH:LB8\ VXA
+M0P'?#O,>)0FC$OX8QAD=!MLA?R6U'>H7L"$T#IL:,27M(A<<% ]0 H,-TB/L
+M!_P)T ^^$H8BF@KN%2TDZ1&-'O,>@Q] )/H#?0F3": "4P*($F@EU00M&2 6
+M4"26"/,@727) \,#'0ZO(AHF.PPN&!\:Z!RL%JP&^Q&3)#H5X"&O!] +Q!UE
+M#KP6R")(("DB<Q!:(H<$VPZM&<L )B,<!IDE PI@$-0*Q091(2,<^Q%0 :8-
+M,R2C'P42X!C]$P  A!*($YH(R0QR'PLB!Q8=&^ 'G29C$"<=C@!J!OD8R!D^
+M%PPE5P;/(C<F5PK."J8BN02:%YH%.0DH O8(UB9])HX!0 ^-"N<.EP2H'R,8
+M.@?P$7X>(!Y_#]<$[AR6$*L")PEE'3@.2027$"4"9A-W#B8"V081#'(#]P1N
+M&2T,82:1$M4 $PN##/($,@B/#F,E/B;Y!/H8#!/X!UX3T1\\$J$5T!",!^\;
+M[ O2'H@.\Q0R'&$<M"8O&JH7Y2""%0T"TP\G'E8(8 9J%6@0PQB>!241!!1>
+M&B@%G@, (B 9A L@)#0%>P1/)5,(XA-\!/87VQ6+(K,)RP$3'_L2/@// *4:
+MU >U X8G"P6- $X9AAX( *L$?P $%0 +( P9'38E;1*? C0<^ M.)48"U@GG
+M&:@9(A:/((X:!!^M P 1'1\, T E_QI0$1,>!B%& 4P K2 Q(3( !!FB#:4,
+M*!.& I0%]!JG&&(92Q_R'OD@:B3?(\D($1.=#3P:YQEO&AL0-P2X'T40(@YL
+M&R0(C0,E!(( A1!)&>\'$P/>%80AM0$L"08-OA.9%.X6VB'?&:T ,160%9@?
+M@ UQ%R\4[!=+%@ 7(B1'":X&.R)[!+PF:Q+P"@TBEABM(&P;Z QY&% (^1B3
+M""XD.@[U)"(.&"0(&(X-YQNI% 8>+ LA'-XE' D#"UP"@17^!/<(=1VD$OTD
+MX1N6" X/#@$#%0\%Q0QH%L@-%P[##:<7Q28/!"P0-0Z:)@D*R1C[!B<7^"5B
+M :,BT!*' (L3\B35&-(9[P?@ " 99PJ  /T, "#V!Q$.%1T%&0<-PPQZ#.4-
+M5Q^3'1( #1CH#@,F? R> Y,8R!^B(^@0'P5/#H$6>AK@"FL/C0:1 )L*Z1E!
+M&+X>MPG>#^L* !.G!)( 31D_!U45,Q\J"HL!+1,>"0P:/":# .L8K"9J%TT1
+M@2-[&),A;B22'XLFS!D%&O8.]1>H">$"LQIR!N$,<R*J'',7P!S\%CT1E06_
+M)FD8WA)'$H$,]A:[%&T4GQH#)H(!J!$Z ","A1__)"\6) G1%' 3XQ_Y!\(B
+M#!96':$,+ JL"$8<3P[!&/<4+14M(!\/P0[U%CDEI1,#$ID6X!$*)(@7#!]%
+M"@ ,P!_#%LH)YR"W#X<"41GT%L<&*1%,(/($M2*P#H /_1:> $H6>Q3L :4&
+M!0*, IP6,P=7#O$ >B*W&64EU ,]!3<&^ Y'&G<+Q1V@(PLB[Q'2#4X2R N:
+M#_4;[!7Y%UL+D05V"_L*50G.!"X*Y@-2(?H-L@3%'$@"JPJ\#OP6E@\Q$.@A
+M#A7:&B0*E!M'% \:G SY%KX'>P@] ?05=1;[&[\/:P-)(E\=[0)I"VD(QP!]
+M&F8@WP=E" (CR![['J8BY0,[#88? B**%B<@8PC" 8L?F@;B'Y$@I1K=!N\/
+ME@II$)0-TB:5%5T061P+!Z0B=!%:! H#MA/(%*H +1'3!L\=& ^Y(X,F\Q;U
+M'HL/8 ]D%]D .@) (QP"F ]/)+4AN1[<%@$#"@'A!V $M!/M'K8=I2/G)>X*
+M@1&%!PP8QQ#K# (@I1:U#+XF PY!"" +,!8J $TC>AB) ]4+WQ&\%!H&=A ?
+M#'\%=A1_!O<CRQ1! L(*OB#N)J@)\PK_"<T-3 IM#H$*H@<' (H#GB.>(4T1
+M9B'<&, F*B'M)4P#Y1;6'8<E"R"J!H$*S2.%(#T&O292 -4>S0LE!8,(Y!CP
+M((D3:12E",L9\R9I"Z8D%P.?&?4%L!\N(? 7LQZR"!P7V!1A H0-O1<S&]8=
+MDQ+Z$?H+/B22&B8$V  R(.<7X14*(VT9W@A;!B@%$P[##^<:?Q! $V\#]PR0
+M%:42U@K '64"% /W#6P7X!LT!"$4V@6I%<< ?QU.&=4=A!3A!' 2-@;-"9T3
+M]"*P#^0=QB:V!UP:\@VZ%8 /"1,8!O0FA048#38'U1R3!DX>CA2;)4$$7@[V
+M!V$-#B$2&0  _@HZ);492A-@ 8T*$!T\)#L@* #'(78 H1C8&:T5J0>F"_L4
+MCP(O$UX!.P82(ID<$B&N#L8>/ S.!P(<9 I(%7TEDB(B#CL8A1=\#AH!(!!N
+M%J0-DQP&$S B-ABS#T$CP!\1$0D1;PP7#>(&DQ>.!XD<SQAR"&@9HA;6#-\/
+M0@)M#W\5B!LR%$ ?90G[&%$;GQU !+P3(@FI'* .A!;!)<@EIQO0 ;L=O"$1
+M%^(?PQ;!#( >1"0Z$-<DCA(\'(0B( ]M D@DUQ<B&FD6RP5Z)J8;L F:"$ 4
+M7P;R&;PG!R;D([P:3122#=@9)26?!E(50@][",$9?1/I&H@B/17_#\8&R RX
+M()\4PB;[&N07?P1B%'<A-1:0&?D3^AK@ <P!VP4Q"MD?8!FB'J8;:B:E)*\.
+MT29J$&</ P)S)=D(90"@!2\ERB%P)%,C!1RU'_L7@1N<'YT6?1VV"7< AP%T
+M&)X1_0?K(],%+!6'(XLBDB,B("@1=A\L'T4<,!&"%^P!*009&T0EE0$W(O<B
+MLQ=:#^TE;0G,$F<13 T-#<L""R.V'.D?0P.V#-\!HQX%"ND2% 6Z)( &GB80
+M E //1W(%+0"7PL.'*,,_!ST)'\#ZB1V 9 !Y2;B!.D -!M_#((*0A./#-L0
+MC23D&LP4VQU4!)<D#!,Q([D%/ $R"%$FQ!^P ]\;SA8K&OH8S FL!/4?=0**
+M#?H>30=5'8X"7 0,'_$?Z0;Q':(/UP;1"HP?10 ! 70#2PR=%ML62 ZH"6D@
+MI!+F Z(/ZQ_5"CP9IPSF&TP@3@+U#,L/.QZ8 >@<AB3O"<PB#AU=(<X;#0WG
+M(:D751^9(W$7"1=^"]\/Q@P[(Q,BU!X[": 12!YA T(6D"37 ?L/E")?%E<C
+M/ P;'6,/R0K5'NDA8A?*&6D8M *F%2@5OB0S%P,* @!J!Z(3F@N3)AD$/@(^
+M)" A"1Z9%!\E00VR)F4<: .8(8P3J"8+)7@BU2"-(-T>M X%(7X+X!Z%$2( 
+M' 8Y$2H%3A-Y(J<CB!TF T0-@B0Q)"X,SP.0 2(%V1%,%Q\0,@^C%O(AQP"G
+M(*P)LQL4$XT9=PH@ A@*JP#!'.8+@1YZ Q$/_A!8!+TBE :6$;T9!0T=&1<%
+MXA?)!+T$;1/^#5<$-0>F&A,<_Q@)&WH6QP4Z!"H'CP)' & B30P$$L <A@4>
+M&LH7MB/>#T@-:!0= J4=30/I#FL%U L &WD/\Q0K"\X'Z!= #Y$A? HC%V$4
+MU0#4$:P*;Q4H')\BAPK"&JH@CQH4%A4DT@2A!W0&C1MF)14:G@??$$H=8".)
+M"A4<#1_?( P%K!K0)/L4XR9F$3,6X P/%YL<D! 3 ]X#>2"D'O,>' PC(&<B
+MJ1-P%I$.]Q!< T,@)PYJ#<0DKAMO!U0<1!%+ @(8SA.8 @< EP1?!X ;_0")
+M%F@D/0G>'T 2'AW[#'T?2AQ$(T,+[ &M$)L";1)/ D0EQB'4'JP8DR#Y$VD)
+M9P','*L::1ED)O\#)0.3(?@170 X)%<:_ ]-(&07V"8S#>\"M 3K 20#00QV
+M)+X.G $3!$L%RAK%!#@A;Q_+!703)@LZ)8T6L@#L(/L5*"#)(B\.( !F&+ /
+MI0,I"2T<7@0D Y\81 <U"049R0#J&V\$#1^,$+8B4P17"N$4XR/6$P(A7P>[
+M)>4B]PN+!D<!/0'\$?\ENA) &K@': 3K)F@<Y@"P 3T,<171"R %EP(A(4(D
+M+"->$E,2<@E<#_ %GAOY "8)10@A 6<6 B#<',8&4002)G(![ &J%5 DV!;'
+M&)4-?P-_) (!,P]O !(<M@="!PT!8!^5#>XFP0[_(PX=30XR(1,@LA!Q#*H"
+M:0 F%SL-,!GN!@<0SQAR!]@C!17G$JD671,L$-@5;!B$$TL+F0?%'^ )$PX=
+M%O 8,P0;"4 4"A/Z$#TBG0VQ(1L4@P4@)=XF2QD@ 5X;M"$[&1T3(!"@ [D6
+M[1+4%W84C"%+ XD(:!XO"SD0IB;7":09R@$K![<.H21T$;<0?1"Q&^@!*0^I
+M(5<!PPZ]"X07(A=$#^\5EP*O)"LD#AK4$W8?X087%RHBFPZA)((-MPYN!BP8
+M&0%#%;8.ER*((+D:Z 7X#6,EL!OV'90B=0P-!@84!Q%.&JH<ZB1+ C($WB&P
+M"NH8<!WG!#LB>A$^!;0(YAZU()4.70NH$E,!PPWH!BP=GQEM#\T?) %!$: &
+M?B/B 7,>[P38(Q8#Y0<L)104\!5(%XD03A.##9(?(@A;!Y\<^R+N&BD15@WG
+M"!PBM0C0&>,"'P"D%MT2^![B"%$&O [*(54,/PW3"/P;(1Q,$/8/XP-Z'A$E
+M;!X  #T7=R*F'A0C)!H[#2H'R -Y#Q09OA7C!^0EJ0;A"U\"0!*&$-T'UQ;T
+M"MHBMPLL"#@'SB(]#!8"' Q[)*T5M W2$SX,=ATP F$5DB;N)D<6' =A  $#
+MT!-S"^ C]@.[$2<+ 0.J!%@5DQ4+!1H70@>U(TPA+!=)(V$0[1#- D<0BPVU
+M(UL#F J%%1X#P1<Y"SP752#@!4$!"2-7!-D-(26Y%BL<$AB,$C@EZQ0Z(@H+
+M[R30'^ -U CM"[@ 4Q.#$!(( 0RW('X8(@5R!EH?P!5* ^@<G0.Z#"<CAQ@?
+M!F8<*A.$%2X(HB8H ($#N!M[#!<)\0!$"$D7!Q;0'V8862$&$M, *26[ O04
+M+A%C&!L#/!L] 7T5'2%,%IP?:!7X)MT/[Q]5)K45.B2>)4T1IPSS)G,+[0.H
+M"+,&&R,;$38,A@Y8%B,3/PY&#$<@LP\ #J<7Q1>Q',L+2Q4/ 50+ 1!5(#,*
+M"!"T$ZT5RP_W)ID,5!W" N(1T0=]%6,!9"!H AT#JP^I$U$=YB,V%$8'IB(Z
+M(5@)TQ>9!98@_Q[8$W 75@<X" T#4 A0(X@@D!:(!/0*N F-!\T"(Q22"!(*
+MX1DY&WL4^!W"!6T%&! 7 X,1QP\E#$0/)PWL#P0+^@CG'E,0/PZ"'K<7^P($
+M#^L.Y0&;&K4=D@-?&/T) B7M%T4'6PF<!(P>XR$.&(8)5P2U)9(AG!OD%FX6
+M_":?#=,F'!IU!O<,HAO8".T<GQ3T(S\0= /M!R,2WAM0&A<*R2$1(ML:*0A;
+M'VD'NB*9"^H/%A* 'B\DC!ML'X #2!Q7"6\#G1:*(:\BBP:Z&_ 3Q02I%O81
+M@R'.%GTC00/F'X,8>0- #\\,E1E"".\ERA60!0T=( V"%H<"\PZH&1 <\QD*
+M!IT-7R/V'K@7 "&F$4D2$Q8?%I@9_P*##&0'B2&3 :09NAM)"]P98!C*%'($
+MBR;9 2P#(!X$'WP:81IZ$?@9=@MQ%5P/[1;  :\>9@-)"Y@$"!XD)*XG P@5
+M"%<21@!Q'(0-.")>$ T',1H-&B$6-P,;$N0BFR.J!'$"+0W?$&T/O@ID%P@'
+MUAG#!,@8F0H[%+H1J@(F"M@6S"8R!#0-&QC"(=X=S@Z!'30$Y!>F)405M@KS
+M(,P/;!7. &D+TB53 (H&=AYL)ELF70XB D89U@4M'CT"$@F\#3L#M@U@$M<=
+M$B:))?('!!/K"Y02!0Y$$L<: QU&$'\B3A_;!F0(D <2"E(.32.((%P>="4*
+M)L ;)QC3(QP!7@V8!\ # !9S$5,+4B!@ \<'2A%C(BL=R@YD&4P2D!G, BX)
+M42,I"9X4'A2+&=@)5A!8)387-0Q"#Q4-F@ 3&,4;?!CA .,5RB8Q$&@"&AH^
+M"L %.A"-"  6F1<+$B@*PPL#)10DZB5B!BT#N@SO#FLE)A)7)CX3*PG&&<4@
+MK1$L#&( 7 QA)+\#9B/0&\0 6A/O$+04X!,X&X4&CP7P&XLBO1L]&J()T (^
+M&",5\@#A!FP+AP4B)JT%VPH6#N8)M2("#6DEQ0\S =48UR"^%4\5IAIB$1P!
+M#P^N V,?GQI! Y(): A5'',D>!93)>T(N0V0#R$FHQ<6%5\8R@#>'_$E2P8'
+M'+,$9A-R">@;4A;U(Q4DQ08&)P@=2!R+&>L#/QB\#KD!B@=5 "41P0NF%/X>
+MU"-=&:((E1CL(3X(TP>@"XP@N@7.&<</% 0> 7T"C0]J(> B82;H%ED+U!II
+M%O &(@AU"0\9,QYL 0D5(!3Y $,B+ B:&043^@IG$5$8<@\K)8\/Z!VD#]L)
+M;Q".("L* 25N$+(0+188!U\BVB$$!P !\AH'"HD7$QA^)1X<1P/<%!P5V2-)
+M&J,*@!PL(= 0TPB''X<3#@-_%/ 9FP#A&HP;8P45!0$<K@0@&PP81B1\ ! 8
+M(!D>&[00"2(0%EL772:V%+$0#@Y#$WP6O1(($G<69A]J)1@%=1"J'0D!AP+B
+M#VD1]A"O'9H"$0'8&ATF/QJ2#)H<V1WN&I8'?R4U&DD?&A< )<4*3!VW'5PB
+M3!@Z#WT < 2Y%7,*4PF>%TL)TP3.$!D/U@M\ D84>" 2!#@D 00) EH=$0@1
+M&U8-,P'I I(=31@7#*H*L254!A( \@D3#1D#"Q2:#!$8Q0 8!3 @^03!"U4F
+MLR.)#L</ 0R,!0,4U![V$:\0!P8]'#44^2/$$,TBQ@]O)MX9?PA4&C\*!A4S
+M"=X3& =-!OD,+Q8,)KX&]Q._"YL80@GH&S,,]@>2!UP7)",1"7P@=PR9!+H+
+M'A,4'/$4J!<!#!\.P WV'I@&"@*H)=(FK02)$(P#?2,T)CP-!P)L&;4#K2'V
+M <X-PQG^!<DF=1T/'306O0[K(TX$>!E')O,5GR-8#WTDD078"\$;.0J%%GL)
+M&AJ:"3 %Z G;)?<=*!Y;(.\+V0+O'N <ZA(T"LD4[0HY%S$*Y!0A$F\BS@_N
+M"-4BO"&^ @L;( K,$+$@)@[4(. 9(1VP&$\-E20&((HA9P ](]<=$@_L(G<F
+MIA !'_LFD25E#3\1:0@L"3(FDA@B&%8ABP)'$!<(E"#&)1\@C"/[!CP,ZAT)
+M)+4 YQ[,)5, 4Q*+$-$5( [C$O(&[ EF!U4-^A@='ID #B"("B075Q1 %;H!
+M@Q:(#)8'50FM'X 6TAA $J,;+!6F'5DDI1ZD#<L*NQ9E LD(!0I?'3 3B!,G
+M(G,0<R;*#[X%/0L3!E8 #"&&%#H@P!A8$A D/02:'$ 2\0-W! T2^B%_&G07
+M7!Q_'1DF'B:* L4/F@,?!7@)71X;'MX$N R$'V<AI!W=!RLB_!89""@ O0D,
+M&'\ VA@)%3P  0#""J8E/Q%9#A,-1R3$$OXACR;X!<X(&0W7"0P#21.8#^D7
+M?AHA#T@<I2-K)M8B7!Y!).P?T0B?%O .DR2))MPCXQF((.DB?1H@%]0/MB2>
+M$QT6>  -%CL(N1#N%?X89@&R!,4=)0EZ%@H29@K\! D1! P1!C,'R1G/$T,=
+MTP1*$X4 %PD=%G<<+PG'%D<!)02J!VL!JQ7_!#D.7 (L)B44B!W '0<BYQ5U
+M HP7?26[#FL9_ ;@$,H)W +V&D,EP0R%)&TFHAX9(HD,(A 4#10+DQQ" #\.
+M5Q!F!IL4:R<!&04B+ ,^&,P4Z0O0$Z@=@!WE!N@*D!B_$?< \R",#A(CH".$
+M$$,&4B5W(U@4!!?$(YT7XA'M <X"Z1QV&8 ;XQC+!R$#I 0K 24!NQH7 $$.
+MQ!#_ N\E@R('%8 BS!Y$(5T0FA[1)&4<4@A #&40JQ=B$L0$*A*X'#\%T *5
+M)4(042-R I )(A2P!T\0^R#"('D+1!3Z%&0=G@KM(8(?<18J#XDEW0D^ B$#
+M91JH(@(.]@AT$^$)J I$ ^P*C09F&\D?I1*, Z$B1R0X!A@B518@($(EC15N
+M$@4FAR,M$_@'!Q#Y(<4".B;O&60#0"&0 T8C1QZP%Q,!?0K+']D@S@/C%JD8
+MR@2^$X\4Q!L0 : 2V1<X!1$=?07; T<'B!;V%G$,R H,%( %M ]!$, :H@E4
+M'K,D* 2A"(4-(Q]R(+PFHP&W%< ?0Q;<!,TE@AZG%U$C8165 \H$I %T$T )
+M*"6^(^8$?R+O%&H$S G&(:$FPB )(A0=XP_.)=LFL 7_(#H/KQ=+)CH9M2!(
+M$(8>Z@B*)!,8EQ#^"NH,QPW@'5L83PA<$-H(R@>W G,1;A8Z#54.(Q$Y(6(*
+M^ADS'VH;11;7&@XAK!>I"ZD"" \.%&LCUQW0":\*YB5Z(@DF2!@\ R0@- (!
+M HHA& P?(H$+X02*!/,>S!^R%@ <20]1)=\)*0+T)?PE!0L$&UP+JP7K&.,<
+MEAU''^X%U 7>"#LF<26F'=HFCR&M&T\)+A+^))P&S287#P029";5 ZX#80K=
+M%4< #P(0#C 6]@%?   %<1]<$E ?4AV %J8,00=; /$%8!'J#"8?K0,M"6T<
+MSA%K'<\B\A%F"9,"L!;K(#(-(2* $545CPOU 6P/K""5$(<@J!9<%Z<'HQT^
+M(1@)&"61!7,@$PH"#RD#)!8T!BP5]@#]"$0<P1B'(HXE$@P$&CH#6Q,Y =8&
+M( ]*#<X6Y0!$"-0F;@;1&D4ERPQ] 7$D4QL/&N('SQ#?!\H9S!_-"8@)*1T3
+M <$ R@_  >H4VB) '&$3E"'@%PP5I1,;%] 1'QBS%NX%]!W6#4@8WAA% :P'
+M4!/S&"H)=17(!UDB9"5D'C8/*25["D0>4!/"'O05L10D$ (CX@$-'_T-_2 I
+M&% +2QX #78?RAV0)G,@# ?"%^X-C"/N(,0%)"##)&$.D!KI)E41% >O(7$7
+MTQ^J$ 04H0\5))\CB27H'#@'J0H)#F,91 AY"2D65B'T%0D;D Q+![HDY1*:
+M%0X9C1H'(4HB1R U _X !!T;!E<12A4W"HP-E@#8(@DCNB/ )4<)+ #)%+<7
+M!A6O#>P'$P"4$YH6EPU7"EX1(Q<J'$D#-@$P%* 3"B&K#Q\9K0<2'[D7W03D
+M(K0D\0U>&\,2D!8\#DL(/P&6&P49_B:N%#<$6QNA%4@DW )]"]<2 @BE(8@9
+MT" =&U<6G24; '<1&R(/";\DV11]&$L9N06^'K@ $1_%!E<0ZR.@';$*Y!*1
+M!%D,Z"7?".TD22:F&Q(.# WA((<.=B%( [@9)0<")(0)11]J)9<23P-4'AX+
+M#@+(&R438AV, TT!12&6%QL>I@"&#_P@@ HB#2$-G@AD#R($CQXI"[42GA\4
+M"ZX.>AA6&_8(WAS7&_0 W '-$24::0T_'?4-S1!3$60'OP!@$OT3:0>C!L(6
+MK J" > 5D2!S)+\4DQ1H%=4!8A_K!XLD-A3:&44,/@CV'547S!ZP$M$EWB;2
+M!L8 MPP.(H<%8@:@&ET411HM!9$9'0NM&),1S0F)(+\,IA)H)+T+=@DO%6@<
+M#PGP'R\<OA!'!JX.EPZ&(B$>1@NI!! >5@K#&FX8NR.'%Y\5S!5]&*$&DB4"
+M <T/EA%*(AX* @]F)A0;&P"6&-<> @TS!3 ?P!=4&NP2_ @[#0(.> 2U ',6
+M$"! #.P!=B,S(C83MA0B$^060AJ:&_0E/0PI#N$/H!-D'.,:H 4")88D_R9F
+M)M$-[R'_"4@:[11B''T,CPU&(64)O@8S#MP+*B,[%U >FQ:]'3L;T0(@(T @
+MSQU6$=L(+@W2!BD;VA:^!\P%RP:D%9<".@,7"A(,"!,G$J,<F 8)).X=<Q#K
+M#Q@F2AK8(5 /G!O5%F0E8P,6'2XEP0#;'(L(EPD'(=T4D!_"%7D8LAO! CL+
+M:"!1'!(F/0] $](*N@8$(UX!BPV0#/$(X!7@![04_A3#'3\/+R+7!6,3 R:W
+M )\&[PG&%)X?_0;7 HD2VQ8$%R(?E1\J#R0#N0!;%)$"2B"Q!3,, 15!"F "
+M] ZF$\D-:!7A"VT0Y PE!C 0E"9W&H05J!I\ VL+G@5_$Z()M0Y\"(,6UA>9
+M&&,E$Q%9(8H$^Q@M(>( *!)@%@HF0P!8#6$7>B%=%!<?(217&I,*712=!,0*
+M)@7G FD77"#V :P)AR..$LT"%@2>(^(@:R5*&A,$%QJ4!I *>@R]'T@:<AVB
+M"Z$1/B3T ;(=7P)G(VP4.A[K"FH/:!,\'J\(KR%\%+(&$"#%$*\<[AC;'=X@
+MSA_@"!4"&Q.I';0%G!2; >(0_R.U'S\96@= #LP3;!03$0<:EP3B(*4-'PY!
+M&F(;C2)5#>H.T1 R #P7;A\K(7\"4!'H$ H-3!W!&N$*B0Q0(2@8N0OC&SHD
+M$ ==##H2^Q@L#RT$% ,V(3(9" >!&E$B)P&O&04<K!O!!-8:)R.,$7,4"!$G
+M$; 5'@0H(.0"\@P_ 6<">A0:'0\'#P1R%S4 - 82(!8A/0OA#[L0?@1.";4,
+MN@\@'8(:O QO#DP7?PAF!)L/]@N^%A $+AZ?)+(!H1%\%QH,41_7(C(1UARZ
+M"-H*(R7+)GD* 0\##L<1001#&LP<1P,((G89QP<$$V09X@:N$N &R1-Y)?P!
+M]")X$P81S0T="D<':B'3%Z<7KP50#R@7\1A+",@-8P[K)FH"$2'V$\\2:272
+M&] %> 5I"]DDR!\7 .@;\@4($\023AF6):(3@0RL#(4*;!*@'C03ZP6M(Q0!
+M&0"0%=T/XA9R"*P+%B9: XX.?!6](0\@40JV#VH!,!D&! 0C\PA<#FL)9@=:
+M :H+:@>A#6L9L #U&-06\PEV)<(8O0.W )8(81TU%TX%@@K+ 3,D[!:J%F$%
+M.PRZ" \F\A@@!MH2E0SA \8A7R*^ '4810CB$-DB(PU< K,761&9">@+M0\I
+M#? %YA9@&GTCIAY7!CDC.1ZX![@.HAZV%)D4B0SE(6<*WPE;'=T!.QDO'04)
+MB .O#>\'AQ(I(L\C-AP$!\H8#1 O(C4)]PY )=D6-QCS)(X/)@XP#Y <10GS
+M)>0#X0CF%J<(- ;4'-DEQ1YO']88KPBQ)HXEV@-T"G4.W M7"'\53!R^(P$=
+M%0(#)2,+<QOC(VH!% Y)$V,'<P?\ EL4!!P'&W<>(!%A)HD4CA;9(U$.>1A*
+M#_P$YP?7)<X.*!0\#=(B0Q_.$]\B-1JA# H.N1Q,$Q,2"Q!'!J,CFR/>!40+
+M6AM/%08-A2&T&W0D;0X#'!01'R;N'G8 :0N+'7(+A@^4([8:B13<#>,$711B
+M&,T;7@[))0@F;Q*['2@ETAM>#]H0#@_E!*80P E^(08,! 5S&<(CRQTW'X$2
+MDQ,* H<8. S&$ID%S2*<$OT)6P6H((<#"":K(%4D! TV"MX,,Q1*#H(3A08"
+M"C,CQB1?(ID)LQ!V"_83$!ZF(D0?G YO'74CB0*;'GX67PC5$^(57R.##4X!
+MI@^:&O84; 3 !ZT!=PK% ^00.P5;$]0=] .L"/<B'"-C(F@8U@JQ'_,4X!%"
+M&W,.+QO9!OT 8!P8!-X#>R(D"2 32 BE!88><0OA("<9@!NF 2L<?0:3(! ?
+MH0:&&?,<QA0:)9TF] NA)=0%I0D>'4($4!G5&GH(U@(%$;(1.Q]T"TL6E@W^
+M'G4*6AO()&P7O00, -D#U!9Y(WH$^QIN"ZT83PHS"/$G"P  &U\.T@VS)+D<
+M A^!'5$5-1^L #D2T!BD QL4-"9' @(@L1G-"$TA(A+W%C\;S JF&<0520/Z
+M'!,AUQCO%3H58 !O!&T=.P(\"E(<S@Y8&;(&01.N!X\?K!^P -L4$2:;!+@1
+M)P-H$X4ENA@,$#@ ]QMN!K@-:PY5 WP-  ]")A8ESPPZ!$@*)A^-%@PD(Q*V
+M&Z<2V #X&U  #1"O 8$*@@L['S,9[20@&;,FH! S%0 1XA_J)"T<8B8+%98,
+MJP3W&(@ A@CV!)$7OP)U">T".P0R#^,82Q?]#]L>;QA]$1(!^ @Z$&P # &,
+M(&@:PQ2S![P(G1?3'68AJ03['(@0T@P''!4<RQ;6!UP$32 E $D16 (3%A$3
+M/R-G&8$8T 2O$O<$O"25!Y,2%B""!.0D&@CX&(4-M!LY(<\4VB),'%\"6R3X
+M'( 5NR;N#V$;80(1(6T*P!=D(U '4 (=(&<0, ER#A,!#2*:))()2 =: .$=
+M& E-!XL!J@@+#0D?+1A-(=D5XP@E HL:Q0<&%Q8B7P\P!WT3TQR#""<1417M
+M ;4BO0TN%: ?] EM#MT2KA3K'=(#00,\$-X7M0>7&RD- R7W!!\?-2*R'KP,
+M7P>5%E,DBB'&&9DAPPH5#*D:"0]@%BT#"",!"B0%?"$ #8H@MAD')40.&"&F
+M%X4"/0.U(. ;ZR&M"H,9'2'S'=(#! !9"N(< 1JG)0X>?P82!94@5@YH%.@2
+M,B*4(S4CRQ7X"3LC(!TX(XL5-1^/!-,$F2#Y).,BB07V X,24A\+)7X TA]]
+M%/,AN"'4#L\;WQ9P#V,41A+3(&,%ZQ[.#"H;* G"%GX ]010%Y\(" TS'S<;
+M41XH!M(16!YX#'H)T!#(#  AU@>)'@ /\!.''%4:,@!!'] 5OPP[#:P?8 R*
+M(A$F!0#V#0<?RPH$"0,4"AX%%_\*@A-C(T0/?R#!&38+S \$!V4+216E(3@!
+M=AX)"!009QGH%W,001T#%/8._1TY$%@/VQH-"Z89K!\&&NP,$B.W#]0#W",D
+M'50)?@ON&,T/KA-5&!L*6";-! X+YB+[#JH0&PQG#V(*>@[W)2D$O0&* P\3
+MYA]K$V8,.Q>"(\X;=QOC%8X3=10[(:X*Q20N#C,+4Q/E)!8C#PE&$)0B;@ ?
+M&L,)E1W6 A 7G0W!$DX5)QHA$/82%0>("(8#R T0'>87R!2+)3L(2B":$$T"
+MWR/'$;4=11I9"DL8OA[C'NP*# '>'W\*=Q*I!) 5%16*!G\*$QG7!ZPAD15Z
+M%Y0=)R)O!+@3S11R F$C!A'(!(4(,P L ^DDL2 ^ ,0%[0!Q#>47!AH<%X0*
+M4 WM J 6RB*,#*T/2!"2 > /9 YT)#H10 G^$NX2W!7?(XT9$P6?%"P48POP
+M"CL5AAU9"2,+B!US"J@:X A< 98+V!3""B :Z1&*"KPBIP^<#((9=PF<'O<@
+MA C"',TE/AW*'=D390^$%/D/0 @%(B@AM@!\!9<&:Q3X'C(&W0HU'/8 X2/&
+M'BX Q0I8)3L;E@D.(PP!L0'*'LLB@ IF#/(?FQI<%D<4!!T7'T@D%1HH'L@ 
+M'"'7 @T+6AUA"8H<31XZ(MX ! ;P$'$ :R++%L4@8P[0&^0A\A9A![P@C1C'
+M$GD3&QG5!U0;T LI$5$1712;' , ,"1I'J0;TPLC' DB6R80):<)L0H!$2XB
+MZA=U#A,E0Q+S&.P8Z!5F(V8(TA^=$)(.&ACC!& C60&P(80F= &[$?83;0--
+M%T83Q1\,)2@CN2#"'"P ?@:(!)@DA1(N$?H#+AP7!]@1:Q9Q'68"AA=O)NLA
+M9B8_'FH!%1G&'; #A0T8'XH,50Y-&48#B0Y)$$T2Q!H;)H$1 01C(&4"G1K?
+M E(!8064#3L6(Q^5!)<0DP&)&%X!P1<K#T,%D RD ,T+SQ@; +P>*R.'!4\'
+M8@;_(,(!O "B"<T.K0T:"L4 YQH(&Q$9&B-! ZD$EQZ'%!(5)"-:(MDFIP.U
+M"GH#C266%)\'!1QJ$,,.M WW)$(910ND#*T2\AJ_#FH4K15G(*H!"",7"K(%
+MWQJ>!A4*GR0E%',DAP/U(;<=BAR>"@44WPU8#R0*O15()C -W DI'Y\5M1=J
+M ^D R1>,$R<4F1,+#3LF?A= ("\"%!,<$;PF.P5-"W<==!Q6 2<+S! Q)=T,
+MR!%'&8 >D".4(+\9X0Q4%30?FP=+&AH;>AV" W,0LP+[#_T"M!WA$:L*&R#[
+M"!$4J22I&#8<C!4,$!$.H@BF$2T1,AA"$/H QP/])JL4_Q=F(T,;L0T*%)8&
+M 266!V %UB4%'U0-;A(&%08G " 8$5X-Y UR!4H,BA:_%J@:C@TF"Y@&OAMI
+M%?06-1Y9!U8=3!KZ#ST9#A5G"L "QP/L(@00\B9^(C@$!PQ. N<#QP*L'RX5
+M+A?)'GD#^0QV!J07'Q5K&<<>\@G"#+X3#0@H!5X/MA_7!J$)F!M5'ST<&1(V
+M&YP9/PV.(=0,?QT+%4T$- &C"CL%?AF%)K<7;":5$W(=^ 48 S82RQTR)7<%
+MDB.E)N,%]1;*%DH77@V^%2\8; 0H"N,"70/]$7 &J1+F)8X!/PD3(,P-VP U
+M%ZDF<Q N)3\?=0BO%O<@_B L$ZP?R2-Q"9 A,AC&&,DD#Q(?)OX$P1;B!V0C
+MPR,5!3,5EB#M'+4CC"*U#M@C>A<2(@<A,Q46"1T)PP5.%101QA;N(205O"1.
+M)D :@@<L&BX&CR7" (<<_A7Z&)<>E!NH#1$ N0YW%\()OR*L%$ .[AUL(70*
+M?098%8LF+P$T)*<B'0P%''0<A@ C)6T3/QTF$NT- Q8]$FHA2@B0 \0?80AA
+M MP6H"-J U@**0)!(4\5EA=/(,<+]!#X U4,[QL&(+(6GQIC)"H'K \6')X*
+MPP8H!HL =P&""@L?_0TJ KT,T0+&(K47^R;I(MH?[B"W%_HF=Q+V%I$A9Q[Z
+M'.D-@0Q'!>06>0YN%VD4;!5H"=,::R"/(X 3<Q\S%H +WQ:&%NP'C UK(%(&
+M@R!Q)<X6;11))&HFV@F! Z -_B#U%#$=82:$)@T#2  :',0*/!S-!%H=L1N(
+M%*DAJ L )><."P@,$]X*<0W*!4\'11!\#G0#@P5(%:\#_!9_(2,#X" Z),,,
+M;!GJ U@8;A@R#TTD4"-+"2PCUA[ #2XBC0]$#(H@#@\]!#L)BAGB'7(%[P?2
+M%/\$NQ'U! ,BT0N:%,0']P[T)3HAX 4*&&,@SAWV D@A:B8V$E$)$@\S%<()
+MB0XD"[,='1U%'60CZ0<P(7(;KR*P!IPDK@A(&*8$H@[8$; *G0Z#$%P#4 \E
+M \TA\ "K#AH'%A""'^@1%@* !G0CO0>_'F 67!^5'=H2?!% &'H42!E9$#<6
+M60;R"I08IB'Z(L '8!_K#VX2E!#$!]41AQL<"],AZ!"X'^D<Z"&G U 23A$2
+M!1L&\!RH&$ 6Y!DD K<)C I?"180,!9M#U 6\1-S'E@5?QPC".L>; ?U(ZL+
+M9"(4$I(@= E;&E,!Y1^)'K4$IP/5!\X0M0D"%84++0*D$Z\1HQKT""4<[PN$
+M$LH<2Q^K%^P/<PV]! ,%NQ^F$!D.JB4F"XP+TP.P(KD@Q C=(DTB[0'W!C0=
+M'"8#&X4C?B*_ %H,2!7!!8</G"*B$B -S0XR$DXC 13>($,AG"-Y))@>]Q?E
+M'54BQPRX&V ,&PVT#,DE[22=!5XB\ XW(3D/R@ , A(D.1+! OD3,1G.&E,5
+MY18% L\;2 1J!#8B7!$['"0AW!1I!CPB8!^3%?0#CA]6(C$5)@Q;)D4)O @]
+M). F"0Y+"X@#D1#)#P\:ZQK3%1 F'221$-@5)PW-%VH" 0R8#9X!6A V"L 7
+M!PRO".,4$14P&L8FO@CA'0H9_PC=)?@/2R8Y(9P.UQ>Q#^8(G AA$G$:5R%5
+M$9@1H"%C( <A.@QP"PTA@A=+)9T,]P6# Q CR ]5"$4@&!_<%&X#_2$4)OL 
+MQQ?T$<P-/!%?!=\C\P^\$AD1N29V&\ #QB8Z"6(8B"#)#;H.6Q/* "T5;!_Y
+M&.@8!PZ]'Z4@JQQ9"'0-W 2_$CL"+P'_%DL6FQV &;TBYPB#!$ (^0?Q!&T"
+M/B+ #,$*>0U@""H?)!&9!4T;Q"%?)1P-_ 1<%1@ [!U8$(4BU@2N B ;)P95
+M#-H@UA?W!7@ 3B.&!0DF>1">#>4"N 'C%1@)7PJ/ 9D%[@03(3D'51>L#9LD
+M P.2$4 (B1DH'.4'XQ,9([<:L@OW(*0.[1M[![0@> 76$J8E02*%%@T(R".1
+M"0,AE2&,!*8>^B ](G8:Q0!%&T <;"*:!,4F&1/<$64&T@H$%+H&+"5A!9D9
+M*"2&!2  HPHO&[0C>Q(0( LBUQY%#7 :IQ@F!^\=?!6K$AP3NA9^'O,2+P/R
+M)P,#!!T&'.4B;0E>(#L)N HK '8%#@#C)* FWP\<!#,4OQ[G$6T@( $2"U<D
+M-@T?"KH.5PG'':<:/A$%(R,3"0C]!]D>4Q&A$TD/F 3!#AX;SA8E%0($\05C
+M&[X>]04G!N@,HB(U"1\,*0:Z&O ",QTE$-DCC@1=(YXEPAH_!5D1W0W.#!(-
+MJAZ:"W\A$B3#&64D(PHL WP!TA(R&9D/;0%Y"BH!' !C"G,DY0B/%9 5+PP^
+M&]LAS1," 1P78B1A#>4%!@9"!%P*)!2!&H\AUP8-'#(?;13X(:P 52!Q'] 9
+M_1,Q QP6) '7(I4=V!4T#0T2,AX@%JD-30YS ,\:I0P1#W<7'04J'"X!MAW!
+M!@L1)P"W$V44-"+E$I !WR8% [8>@A8Q#?T00@_1#?0/+ 2['<L7TQ$Z'90>
+MO #E#7P&CQET PXC:!/I#]@4O &H T\@_P2^$=,"^QO^(3H'>!*\"M</!P C
+M%5\(%0W%#/D292!P"\<.,00#)0,/\0 /)+,=1Q2M!6D"PQ&_$;4 #PCJ%\ 9
+M.!ZC(D@(.!;R#E(/!A@B'5TC-04"%#D.DA/,"@($Z@$*$B D: BI!#8@:PQ+
+M%40(TA?>%>,2]!"L(+H%4!Y6#OH+$0N6 ?('%A3,(5</@!*N%Y84Y!4"(-<;
+M7 ]>%OX9;1%\"=8#K@&#'L@!-@B2 Q4E- ^:&6(21 B2&W4%OQX.(_X3?0,G
+M)N8+BP6 )>$DF0_+ K(@^0S8(/4%8!-X!0LB:"&))D AEQ\Q"T,A9R6 (:0?
+MT1^=%/0=G1JI WPCR1RY%*,;,A*?$CDAO2$_()\EBPS,(WD0Y0PX'$ C-B9D
+M&ZL(F U.$W ./A* $^P$[Q[O!5@ 4QSE'U,"<@2=(6HF"B3!%H8F/!K*&PT9
+MX28W%NP9^P^/(88)X".] +H?* $G$#X0#@['!(,'OQ !"F<.41.Y('8).1:2
+M(R4%L@F%#UH%LPRZ(M,6<2,S!#@B3@M0$PT-PAS('WLDJQ,'#5DCGA@%%<H+
+M+P%%$6T>5@XC&LH:P0/Y)P4=&@9C%FT7GA_9!JD<J04_$9P+? B!(&,.5 ^4
+M'#XF#20\!=0C9!;'!WL0XPS_%"0=TA8C %T&3QOJ 8 %>QT: H@!C0TT(#@%
+MT""["+4C\P'A(\$@,0+!)3T=40O'(VX ?1'[(.D4"R*O"Q<0+!?P%C@&$PJ,
+M%_@EZ" ^$D8#U0$()+D<5PW2'[0)% $8&VP0#Q2R)&,,4P^L(1P*; N/ A\?
+M805M#@@6^0^"!S4$0P0(%8$DD!N4 IL98B<"%XP7JPFY&.@:<R&'$'D/BAF)
+M"<PD#"9F"W4)FR#K!JHC(Q7^$ND47QCX&,86BA.&)!<87"-$%HX7X@QX%?4*
+M=@C*#RD*!R.D)64&C D(!5@;- RB$&,F#!/')&$@:P)C$C$9! 4_'L\B=B %
+M%G(>?!57!_$,'A>O".@9[00;":H2M CO'P$F5@VK'(T&91P9&OP52PRY"W<.
+MF0R&(5DF@0MK IL$P@Q&)'@72",C'6<( 1UB(!\6Y@3&)1@(A \:(0 : B3G
+M S,EC17&)&4'"@P["]8B.P_H#^P=KB';#V$&?!.N +L5V -((/\F[Q(;)!4=
+MKB9X"ET+Z0ZF%D,!]0X4"9@ASB3S#J8*K1PV%OL4NA0W(A<)@A(Z(LX>- FS
+M!&@@X"!4$S@4;@+< 0@2#A*($?\&Y1PR&)T4I!;7)$XF8QOP%%P?*QV_ 5HD
+MUR2N&KX1\ ^3(S(7V1MI"04&A"(<'O 3,P"]$&0*(!E=&/T=+B#W ?0<*!/B
+M'HD-4@0?#-T@#QM8#T@"<P'1%Q$92@HD">X#"@$L%O<!H!%@ -$8$A]_#JL<
+M&!:/#;,)V"9N'O<!5QTK'U@/" =;%#86,"+#'B<2"Q5[&IH:1!O3&)(&S"%J
+M%%<&R0+U(AP&)@;1!.0 :Q/# O<93PG+)8<8>QIK)0T'&@:4(*@8G!')'HX*
+M)0<^![<0CAR2(" :,2 '$G<>(PLG&@0&RPU.&8< *P3: 2@>20?9%*L#-0 2
+M!40:,!1J ;4,E0>J$; '0@$<&\(", D< : 9HADC"GL3OP7-#;HEFP2_&#T%
+MQ1F;$D\,N@ZC)EHF(@?"'%L ' F])HXC7 :X(<4'"!3/'5<"D@H]&UH?]2*B
+M!$ 5CP#1!LP><0O&!)<44P^W&9H(WA1/ UH$3P27)BD#00ME&U\*4PK/("(/
+MZ1A*%[H$MQLE#[$9[!87'Z C7PGH(^(BBP53%&0,ZPF(%WDEE!>B!%L21 [/
+M ]$FM1S#(M\8<  ^ B\4T1AE%CP5CPEN%,PA3A@N)/H/'QD>%<(A1@P$$;0A
+M9 2)#TPE)P%D!=,'510_%[43'B2]#GL9 R*7%\T9%B7H(?<-I@M9!\0.#P.Q
+M GL24PQO"] EO@-#&PT+PP]$!^$4GR @$  F"@.%!2@(=@3O)BT&5A7J%R03
+M+QWO%>H"#!H"%4$ LP+M$&L/I18C)'D (2!Y 08)-R67(5P>U2'7&X<B4A'&
+M#EX-=P6 ')(@70Q_!RL6:1V$''XA_Q_ (V$@TQ ;&BP:7P7+).D!V1"4(LL8
+MUQ6Z![8+ZB#^(M4 ^QG6'MT$VR6C#&TAIQ2 %!0DAA06 $P9Z1]6$GH'?AG/
+M'Q0> 1^-!%P!#Q7'#R8!] FH&UD6ZAQ1!P4F,Q?#&QH89!>9%ET1\"90 5H=
+M6B&'$.41!0C_'8$("1[! ML.,A-'&=0#X0%5#^<CX2:<$DX'A 'G"$H-WQ_=
+M$*46K",O#Y\;D@MQ#N48>B0@#I0>* MT$NXC,16) 8(6ZAHU!*,+_1<[ _$&
+MB109 ^ (@ #X!? '8P$]$$L"]2$6 HP;JR"2&5T0TR"3!<T@4B4.%1H? P"E
+M&\DEK@MO&!470R64(^,1%1JW!>(96" E$P$:714K _P;7",,#*X<[ .G"QH'
+M0"39"!,8SB10 >PD>!]D'2 3:@TJ&E@D2P4["\\E,!L: >L='""G)(4:]".E
+M$(H0E1,6('<($2/E(O@!+Q=&'&H7R D)$:\>>PA]#+L@D!Z2"FT!;P0@$*X6
+M'"7;$R$/'1\H "D$5PK=&[$2 2', *0?""-'!A,5<PX!"[</#"#D'EP#R1^X
+M$^X1-@1P!9T+P AE E<;HB:D%<LF#Q;+(KL3CA7"",,!@!G1!&T<;R+("R\+
+M^@?>(BP1;0I:!TH!(!M6%8P/.02.)D4A4R Z'I<.< -F&V\!A1V&!\\@0@?^
+M'5D*^R N!)44" !Z$D,<11_V)-H,J" <'7H@IB8")?(B3@NP((0C,27^&V G
+M#18=!_$$J +Y#[4>L2,$&)P,!A(7#RTB?14D(5433R;% ?<2)@$H(:<'%@LH
+M'3,7UB+U :(E1 FP"%$<]B:K$3\)= E&(?DA "#%&\,$Y03<%S<>1Q</!^4%
+MPAW2'(4"S@QQ(B4*P0H=&\<:*PI""18.+"5/)L,(-!#9'50FT0-9!)L'/P)U
+M!Q@3EQ'W"H\)/!0="7 =I"#^)H@F$P-4!Z88]B/[ F4/F KP $\:UA:W'HTB
+M'2:Y$B\-9A9] ]HAK1SN(;4=Z2/8): &O05;"0T?R OI&QD23"8%!JX6I10Z
+M#,4 O0@O#0<3=144$2$2T06]"/$/^PJ&'FX?^ Y3$V\:YB0P LXAV0&$ L@(
+MTP=2"]<6#"6\(>LA*!/4):LE'0=@$]D&<Q'\$18?L EN&=0FR1AA%=P$: @W
+M$!(;%@X2!Q\(GQ6:"Z0*8A8!&A(>8!/M(5('CQY !9 @'!_ $T,%2QZE&!HF
+MBQFX&Q<:BQ0K'=T>NQ#Y 5@$ @HW"D$?U1.Z&IL<@R,;'-HA:1U]"V82C .V
+M(.()51UB"-4 _R+N'E<7>P,T(O45C0'J%/T##2:M&"$-;Q)?!N$4 1UN')\2
+M'1*S$-D,&0R"!DH*S ZF$2H@#0>+!#44'P2;$<44GR%*$F<,\Q(B%TP;'!M'
+M&P03S"27!(0EYAG0 IX PP3? 4@<% ^B%LH4NP*L(P(*RAZV$X\EUR;+'R08
+MP1"!%?,39"%5&&@<$1#8&'D6\AC$$YH9_"$*%O # @(J!18/VB X$082+!>(
+M WH3"PJ1%= =<@/0%<,!: <<#507EABK)&,9H1!E$E(DSB88#I4<!"54"^(2
+M)Q3:&6D4 0BK&? @400V(GL(*P)O&L47Y25&(3@7,0@6(L8/VR%;(; ?K1'N
+M!EP8?"3U&_TE$P_!$'P@Z@&,"G<'.R&T#T$$4A."".4:<1%4#;(48B*;'00;
+MUA!A&;P%\AH""'<1M0I(("(!U!0W(-DC0"5<!T<1F"/>")4AT2%1!@H0J",V
+M&J@ :A3M(!4C PT, GX&>";@$;T$(B)A)A\(K@MH!L<6^@%!!D(*AR(\"4\D
+MC1D0&<8+1A"!#P )J0A<"_8?(A^)).4(0"+5"B0 JQ73 @P@'A?[#S<F)PF&
+M"78'U16!$U,2;A2N"><?+ .W(Q@%?P6@#=8(5@SU$J( @"$"!YL%M U@%@$*
+M%@*) @<@#Q?I%_LFIB;\!JXF*11I 1P>%PI (&LBZPX,&@ +>!*B ),*LP>4
+M(J,25B4N V,+_22[)(0)N@21(3P#51]R (,.V0O4&6H52 C4(LX7'P*>!+@$
+MP@#D%]H)]B6J&&T%$ALA)F\=Y0^-(T01]1)#$QXD+!HL(T$7.!&]%#(/, ?J
+M!F\@Y!!W"EL%6A:M'?0EJ2!D$G$4;R"   ,@_ @V!BT+]00*%5H#CB7U)GP:
+M;P$]"PH3/B6C!78DR 1S&CD$2"2!&E$")!O4$3,)AR)F))43G24X)8T8)1(9
+M)8H*.29D#'L,ZB04!G($3Q9%"%,+?16%%;0'/03?"Z<4"2*%"C\F?1^W%I(F
+M Q/R&KH?.P$M&J0(/AS-(5L.#QK %KT4P@O])AD4)R&8'C$7, .<#%@3;0\)
+M$XX-KB5/%-T&001$ ;$&)!<Z%Y8-V13*"6LFH1W9(L08,":"!!,2RPSL'F,)
+M\1\;&9X 2B,;%EH3H@M!$F\3W"0Z%7$%,@:6)/0152#^"!L2N!A+)=4"9!9S
+M$8H/6Q9)#?\2IQ5)!I\9*R"8(3TC^1EG"Y4;+PJF!EP!* F/!9X'>A4*(*H0
+M-!-S)+@@WB14(*(=:R;>% 4BD0M[!S<?&@1D U,+?R:0%A<#'1'('F$>*R$<
+M%.(#T0X\(Z <Q!+C(=TCQ27('HHASB-L'3H&:AFR'SX':B3> _<@>QO<!N0@
+M"A7V!;0B0 V! &\B61KX(<$$O!HC%<<*Y!Z' H8+V@Q?!@4.'@"B&V\,D2&B
+M$CT!6B83$" <\P U!S0)EA6($1D5K2/M"ZP6J!P^&'XFGQ%7!#$*D27@$B8;
+MPR0B$L8E?AFQ!1XD>R#B(4<7'0DV!$4G!1]$#2P7^!#A$C$7<!8]"9X/$ _Y
+M"=H8 "!+#3 FPR1P%<X*M"#M"^<!_R1$&&86-AO?$W $EQ 8(\4A31OV$!<@
+MJ0<2$=8"FAAA#S@2?0YP)8H4]29\(C\%%1;O(5L"JA."!#X>A0-3%UL*6 Q"
+M)PL1[P$'%'0B,1S$#Y\!S0H9&\0!,A0@"K4&VA&_)$@&B @*&$T2L0;% XT7
+MQ!PH'<$"H0OT(=4100BY()8E8QD\&ND*D@]9%"\#QQLV)KP9JQA&& $C\ /R
+M")8C=PL%&XD:^2 K&3T362') XD!ER7O"1,*:@@K! $5#P39&E$D("12(0(D
+M9P6V([X&1Q!*&8T>906[(.05  #"&?L<]P(!#?H+21JS$J@/]0(:']L,>B3[
+M"#DA.1S)$KD0>27V(KL.*@;K(A$ =!6D')X/3AKN'TP05!OB%'04MPHJ#>PC
+M+Q8>$GD;.1&-$T$%WA;A(>\ 80]($:<@&!5Z$'8??P;2(9 EYB,Y!?L$QQ"7
+M S00>@2B#@,F]0;&!1$@4P?H)L 7MQ<4$,H#?P\^"CL']R%O"9X!3!_!"H@;
+M]!.1%EX1#B),"EX*HQ,' /0#]R<#!O40*  !       ! %8 _P'\ TX$] ;N
+M"3T+X [7$B(5PAFV'?XBFP      !  !  H 9 /H       !  (  P $    
+M             !   0 "  0 "  0 "  0 "  0 "  0 "  0 "  &/   0K0
+M  ,       $  @ #  0 !0 &  < "  )  H "P ,  T #@ 0 !(   !:  $G
+M$.$ !?40 -2E .AOP8;R "-C$%XM:\< !:$ S.T;SM/"$  "83XESEX@3^^!
+MA:Q!6RUM!.Z?$+-+!Q5[R9?. ,!A +GUOZM<I/'#8RD '1   1TD$.-_WU*6
+M<WOQ  1_0;$KEG"5U@Y#C06O*=L0LQJ2" Y4, V5?4<4&KHA $D-<]3'B/W_
+M:B24#PQX!!00 )#9E&5"+-=B10&:(B873R< GQ\!OVKM9&XXE^W:I_GTZ3]/
+M P 8%Q A6R]UC[FJH3*>[)U3$XC'M8X  ^$ ]C3/9C'-1OY5Z;R).DKJ'0^^
+MD.00 '&5I?%W=2EYZ&6TJP=D%;41F<RG%AO.P2=D8Z(8RN^D>R7-T>]P:]\^
+M'YWJ U]3$-',[B)AT_H(>>#&VB9GVWFK98X:QP@ @Z$ /6PP(V:&YVWD)K8X
+M-<<L;#K-\<>^+AN. !00 &-18(_9N"%T+[ .4,D^0O3NEW9H"<1WY1%T  ..
+M@>$7LCOD>- :'$8(#WGU]*=BYXI18LW5BW?9CQ"H+D,(JK(:?(XASD#SBLX+
+MA,0+)WSKE,.M)1))80":M((ITUJER^T:N:]>&++91["WLIUC%#^, UW[ LH0
+M "8->2O_?&GOX.QH':752NMF2J00!S?T]#A&,@T ]P!M7D$E?NX]+NL2Z@\B
+MX#.4_;8.P)OM>'Q94\ D9K@3H?4 $,L0F$$TB. *V\@C LI__069F\)W/.-X
+MS([YW2=KO8YFB;8  B$ B@P7NXZD5J^?J09'LC9=2U_@@-RJ"O#^V4"HCH#0
+M:QIC(Q  ><D-P.G?*;/&RDW,7E5<X2P\H&$Z2=O2>,5,!M:XNT>7AP\@/@$N
+ME9D) ]\X_0\5Y"\C=/7LT\_<",0$L-J\S7\9IC,F ^D? DX'$*7&]JM.21MG
+M+0)N/0816"GK=AC1_=-AB"+,W5\[E.Z,4+PJ<@!:X0"'<Y#[*3-S8B).-:X(
+MXL)]OM.'_07Y]SM/H50_9P=%U]0F$7'"&@ -$  >A6%;;D\J:1A[XAP$4#0K
+M+]TG[F-0<9FFR>D6CDHN*!<(;F\:21EN  (MP?=8_,JV9$LH:7R7@-!8L,7(
+M+6L7=[<<Y0333C$0-J^+TW/4:5SB4@%#$.1[N%W(TN94AS<(&(2>+QIXR5#[
+M;,?#E':86LQ)3B@IUOEETUR)53P,@Z$ #NO3K:=!3^3WE3XA71S[W#*_7QXI
+MR]79KU?2V(2ZS+]DL*+]MQF%WLHQ >@0 -1!F!9[7-/%.( .UQ\[3_5K7HN>
+MF#-R\%<1,$'!S/DP.CW*+5EN2] N?95: $HM@?O#T/12(BA0MP_R\U<3%!/<
+M0EU]UCD9F?A9.!P DA36AK-WN7JE_F$2MV%J  M_$'@A8:IP L&(P!90'GM"
+M,WG5, 1K(-0)0!AXZZ5/K^=VLUV_'=^4O\8S0#][O(T  6$ G',2]%T'X9=X
+MY[$OSEFY7JK:M#=9[%D"T.GA"\?D?8B$(7@NHFE(?1%#O()-?T/5$ !:_7,?
+MY%0HH>'<3F*/F0=<_^F^@:X_Z]B;)-V07):O %PWF0DWYJN85#^8PDVSO",*
+M63U!^-(BT#/GI_/VEE2%CZE^K[8<F@' %E(\X*S%+OX@/R/]HI^YZ@?W'B;Z
+M-W\C"U%% 92[$)1X O=TP(P;70"P\,9UJ=NY%.+9<M]E#TM,=RC@%FWVD<)1
+M0\G/)Y6K5=;BYB><J+&F #TA *P+YQ>,<_" Y6"M,%5/&/BW*UC-28VK=U@K
+ME?UMCGN1NN=?;3)62QNN6O9$=#F%GGQ':>L "1  <KD,L&]SG6X:LD8 >%UD
+MA -_X\,A7..I*=GX1)'"X,?R2JY43>_67J<5VMH8(WV<J=-^IF^Y  %= :R!
+M?A^IX>$E9!*[?G:=H$;QN#R _J?/3.:BT %SK8SLUCABB</$Q07]'OB4H6[5
+M6DY)/>,X'/<0?4"U0OA.SSLA>ODE<6O >3OT;.)DJZ^;-\%*0;6-U&8! "A 
+M)TDQ+X'P.]_^SB1!)!Y_(L\Q"(_A +FR=3R"B!:3S3\Z:XFTA]X(GD5&:$VF
+M#/W;DY'?).P3,&A$)YFT0>ZV@<K#6 )1\=EH):)]=G&- 4X0 -MUE!7R8^(:
+M<&$3 1 J9..PF_^P2F%$JE0&=LR$Q,@\ H4ZTQ&F>%09'WT)[1#C?7L *4S7
+M'J;T"#, ,XS!E<Q1R#R<[Y!H-6N&Y:>V%.7RE!,[^33:C9(Z8+P"B=W2DFU9
+M4_%=3#-E5!1F_-*V.X0*+;P38:G)<  ',Q"&.JM;FCKR/[K=,D;;V)!*6.A)
+M1L4HC,8?,%N:%PAE@'PIA+$&OW6/IXQ5%^"4]1;T9H;DI[WV0K7F,"P  :$ 
+M06JG*Y/%U'A]QNKCK2ML*_R$2_!UKA1U6'LT8K9ZVX,1#%4"F2\B]]ZP[ "B
+M.\VD]<5/BEMEB[B-\]*!+FD0 %4Q":M8TJ8,)LM688.':ASTP76'Z'8L1$?/
+M0: %GLD(!CZ@NLCHY\_ 5>'Z1++O 7ZP)" E<]%R^8'DN 6N!Q7,@;2OC)E"
+M37,&,OO6GOG1PT .R)-/0[@,L83U=>/)6_2,8I/_!B27&Z]2^8N;(8O?>#54
+MX;-ZUE\%>9+_QJ4M 11O$!,D-"+U1"1]?CV#IY3/&AZ"2T Q6?K,9:0_!WF$
+MK;MYLX#I:G%9:84BR6-96OU$GD-9:%-IT,8.Y9\X[%37-G0 *F$ OS)S"[@T
+M>#PT8;ZSZ@9*E)6LC?&_:S<*_"#_GZ;S.L[4F]@#R"WLF]NIR=Y)^&G"SP@T
+M=ESKDP6Q**7)%Q\@,G#O  80 )_M^MR S</;'V@X+J=Y6/6:(:SF65@3U:IF
+M66B;,2A9[ZD5H'[&A3N=JI%DADTU:3BC8/>CL0%]0.\6F$0\I*=\V?N;'$%*
+M)VX7KE?L8HFJ[R+[W;:B[^07X;WR,V:(@#>T+#Z_N-Z1&:QD"-3T:DXU_VH.
+M9U:Y%$#;.\IX*IMH:S+%V?6O:;PF9*L0E[]MP#<\SKJDL34AC4T^CM8>Z:K 
+MQ-U;#]?\%#Y?"D =4?"V?&J*@Z=>22C+'9^.K02&[8R%\;^@U6C6?.LB(&4]
+MLF(%VR$ KPHS)ZA_2@UAFW(QE^N@;_UKH4L+Y] :X#;/JH5F;80MH,G9$5JP
+M+-T"Q DG^;G>A)BD-A_F2F&E,S_JJZ\5#Z0%(Y+5Z #D$ ![J3XEZ+ZUA<'\
+MJ/1=' <>/"NH6P@,^7%=( +6 ! (FTJVLX;J;+EE.0'!28QY=?F-W)&;(6YQ
+M[B.)O=5ML+0B!H:0)[OMZN, (GP!F"Z'6[[3GW+8V2^'$A50QFO>;G#/2M@/
+MU95Q;B:R9K"MQC8D'1736CQ"5 YC_W/ S%7O%V7Y*/)5O,?W@-SMW/1N[\Y?
+MW%/W  7G$)?+:>@FUW(^M.2JAEN0.2*<,P=U2WKID2U'^7>:;D#G%@OXQ R2
+M\!#R7VP1)<.+0LGYD9US"WRO!?\MA;!#=6DM*X0LIE?O$- ?X0",\0VI/IF;
+MS1NN+?K#!<X8D.=B)4[#NY3)$[]8CO!7 !>7:YTM%7+KPY%]"R&MQ^.CSR.A
+M\^B%?4OV'#I (G!U<9K]I+J:>F'?:A_!$ "H9:\1.J4!752F^=GZ4Z=!7N+;
+M;+ I4422SWPNG#*%SX>VJ&D4NP*189F;AXCD&%/D<-H.F^^(!TV^I3<T;N09
+MH,CGE493B8DO3(4G!-CKP:'!Z 9)PI25N7IP3X%"=:4Y.F,+BR'"5MM&=!+]
+MQ4G*FD7B8D,Y:/185&'[/Q-:MN6[236I.^*AP$PB%1B0ITY$V"V&@DN=O$JG
+M2=$ O2,0IPF##DV'!Y%$3"H],T.1"7N3YFO(+%2:? <@E?$&B5@RDBNJ!1O%
+M@F%#:BKE(V[_YH?)79O;RN*[5'&G?C-:GT\'3.&8HI.A,X%_=.(3 !RA -3I
+M;%Q];YODV>?Y.V^A=V(T4<:+6>C>*]Y8SSS_6")&?!6H5W59)N=G4Q=WMV/K
+MY@I?X_TY:3/HH#6H!;F']C$/0R$?0]O86O66JQL9HF@_  00 .8AZCS0>(UC
+MYSFQ[Z<7=2BN1YVK%,M]:&]F.:U]'_56^8K97OX_L5<@'Z@TCL3D6T+NS&6X
+M69]"'CM;PD,3]E].P,U$G[U%^E1C]"EB.R#9K"AK@>K=<ST*_S@CJS@-EH/_
+MQU "1U&_L:R3@@;/D[V"=\0/#?.>&WT[U?]T)N'J.'B3N#.&,\ >0?C]3KPD
+M,.DL49<\1.8BC?]EW8YP1?$KC=^#&D1?$&DWHJ::A=C=1!#-@!L"N203V35)
+M6SDA/ QR!]I>^YW8 AH T>C03 LM!]99\?A,';CJ@]S2]1]MM;Z? TQ%/@0L
+MLYE2W T>>@:+*\P^?//5(EH$ F$  O&$;@0A4&32%V)B'7L27VC0=I=JL46K
+M*C*UABWBT_XOM>1B/1^1-NT*^VX(-%&\0#W=]Y9NL@!2JX#K7Y.'XQFF&?+3
+M-9\SFE;1O])NN=@ U)-> )P0 /3="5)=14+AKK0T+J.SHV\_S7INM"AW]TO!
+MR-!GTOC@KJ@[9ZW)5K-LR)T+E9W! %M(BCU*OC;T4MGH37';(<7Y'($)2D78
+M:M>J3'P(X:6<=9N( .0\ !?[03A\6+R#2V%T7XB()CCJ4,!RG&TN.^TU7DB/
+MF<2]UZAY@A:$H,JT4;J.25S&)M3)\_R]LO>FIT3R3'2>(C"OVN>5DCL M_6!
+MI<RHX+L?&@_UD?)\@*5#  .;$)(6.%ZO.M=(OUY:\TEF5*_Z$N9<ZGBQ!%H4
+M@U*UYA.'E16]V2M\D(X0" P6QVBJ'+6@]P#VOD:-?<4;RLP1YMVXAL;2VU!9
+M879(I^H)ZE</_X]>1)POCF<A ),)[BK2.8<\:+G18RY _R-L"X_H$J;0!\A"
+MP-Y\:>4QATH#3[BXL8).CAW24%@$+=/UB[:#D EVZA25T%Q--_,5FH=( U9^
+MAVHC-JQ>/[MSSSAG/OI2KT05NA  E)E?#_;GM]//,CLJP_-./I2>9OR*511(
+ML=[^;N+]W0O=F%*4E $"3Z7VYQQR#"H2DO.5MSY1I7.NL3"WEJR21=@I;\MD
+M!'GR"GZN\H5'2I&8&@5^,N%V<LQ> U"; 5"<K?''W*TL.#U--W/&9]#J;:@&
+M49OR^,0#X:*@4B,ZUQ!SJ42%V;K/$A@#<(<ZFU+<4NCELOM.!Q>F+[Y-U^$*
+MJ^U/C&+L>\ZY0"'49H, H15UYLSC*?*$+P"!UQ#E9J)<'$JE/^D\/01R*#ZJ
+M4:>.)=!3 _/:0^8(I8TB%N9@&F"<]OP4T%@4R)T:5]NZL9,DA<:Y[!C(C06Y
+M*^(9V*#?D-A5FAL^I2B;VBE0:%A-@/1U+9QC<E;#.P 3X0 !,$S!(V;Q0=#V
+MC]9#S^(+E/^1Q;_@8_G9RKG-]NF4H@LS:2=-9N4SD_;D2LK+\JBO=\J\G-.G
+M*2#>EQ@U- S1#( *#IIMW[(DTS _Y\+_R4P42+E!?>T15SQ"(@/Z  ,0 (55
+M,S[,%@!VKC"W0MOBV A+;38,-#Y+UW'A^0L)Z1W-CMZ%)7!K(__<6:$SO(7A
+M<3UV:H81'\E^^6$>@U9.K"Y)],3(0U@PL)12HHX1?+[M]$?&*RWH<@Z[[%UO
+M7[=URTK!NC@C,2"$,Q*<M$@6V@URQD!"OA^&:'"B3Q!#D!E3Q&P+'&@!*A=:
+M#OG/(^AJU//&&\#;,<Q\>\X#/4N(T@OEA<_(NX;E1LJ-X8$4C0Q[,I(4]E2]
+M2>'$)]R<ZK%82A'Y$Q VZ,9Z*9[T%C\*\TFFSW>E(Z.DOEN"S*)R+S401'^^
+MG1.XJ,(R3LE,,ZV\GOZZ=JPA,BY,S3(^$Y&T</[9-KM<EX5"%!K]1LS=^.8X
+MA])I!]$7&@+Q_CZUJZ[#N>YO' @"OJ$ R6@& ,HIH;F;WETN&P^VQ"%Q0U"?
+M0X86:RG2;*D(WT-@E1TB(* P;;2'X\)>9\6>PSM]T'@PY7^0N-@;WIW:Y-?F
+M1%Y$Y83>LDT-7IY!MBFB=@X'U=BC/$9QA,+MS1SA(B< :Q  AQ%^N^)Z:6BH
+MC>RH""=,86GS:AHS==.M!@6K&NB;0OK>80[<;G*FRN#3Y:NZ,'I'3M>JRN8R
+MPT8VA+3%]<F,-ZG&N-$[OBIC]!9#%,T:N;4]*PHZ1Z1X8;;XY-\L$3E9%]A8
+MY@ 0"H%]3-#VD0X3Y7PXEXR.3J_7I\H:@)VJ0YRHBT#+:1ZW2).N1V1#>DNC
+MB?X6"Y'9P1A^IQLO 8"B#%>A%R5)\=O%???*$\1-H==B?M'<39M\!H+U=\]7
+M_DG>8MMZ_"M);D"< WZ0  )/$&I:G'Y2PC=R3HG?M-W_U"9==$&:Q*L5SL !
+M$V<MPWR*V-?(R-B$F7M=:B*^+^W/P7CF[T.<)?3Z&<DBKUF8RIBA^)EH'J7\
+M9'*1L,>6M;8WE3P9ZT0H?4V5]2+5YE2JFD8"\,YA;P       0 "  0 !P *
+M  X $@ 7 !P (@ I #$ . !  $D 4P!= &@ <P!_ (L F "F +4 PP#2 .( 
+M\P$$ 18!* $[ 4X!8@%W 8T!H@&X <\!YP'_ A@",0)+ F4"@ *< KD"U0+R
+M Q #+P-. VX#C@.O ] #\@05!#@$6P1_!*0$R@3P!18%/05E!8T%M@7@!@H&
+M- 9?!HL&N ;E!Q('0 =O!YX'S@?_"# (80B3",8(^@DN"6(             
+M  $  0 !  $  @ "  (  @ #  ,  P #  0 !  $  0 !0 %  4 !0 &  8 
+M!@ &  < !P '  < "  (  @ "  )  D "0 )  H "@ *  H "P +  L "P ,
+M  P #  ,  T #0 -  T #@ .  X #@ /  \ #P / !  $  0 !  $0 1 !$ 
+M$0 2 !( $@ 2 !, $P 3 !, %  4 !0 %  5 !4 %0 5 !8 %@   $8  16@
+M  8<@"48 "H"D!WW$HT!&090 [L"X1I8!S08(!TN&),EC@H5""D  0%0$2L7
+M+Q#Q!9(&620,  < 8 MJ$V,A4@K*%.0:RB0- #,%L!JE$-T1_QC!$AH#JAHD
+M"P<!5 &@ E8.'PI8!R,4[0Q%"_8'P0+I"+8+H RV&9\+RP9<((<.9 <<(T4<
+MH@"C$@<  100#C\'GQ@;"5TB[R/L)<0921]U 9LE\1:4  D+4 U[$B 51 #K
+M$$$=\@D0'M8.^Q^,#QH&QQX> #X(T Z#);H@RAGP&K<890ZR&/D(]P\B$_$!
+M+0]=#K$!FR0 !  $# FQ#]D0@1OH',,8HAMK!>0:#B9"$\<:#R;:"H<F,"0M
+M!]P&1A:T&"T:VR#%(%(A0Q##$X\,X0N.#P,2JA)B'?0  2;0"Y,CJP^G%GX!
+MB@(T&:0F=@S% Q$:WQ.0&[H0BQ@S#I,#?!:@  L60"!<(< *(@GZ(MH3&0?0
+M =H&LQP6''HDFARX!<@,SQ4J"@<!:"*7 $L+\!V!%-4;9!<](N,/B _.' 8<
+MLQ/7$=$ 9 @D!;P(R!6B&14F.@XX#* !\1]0#6L+K0T[)94#[R7&$FX&]@ *
+M%7H+J@VF'@(!^1'&#!T+AQS4%#D810H/#+L9L"'U)90 %@_7'GXE_0BM%[X;
+M@1M2&7\)- '$%XL(0ALK&Y43G2 O(XP7("'_!4\  A* '7@,WA+K(;8"3B(X
+M(^H)02)J$T,D8!7;'B0@\PHJ&E(4G0GG#ZX&/@K+(:,!SR<   TA,!(-$Z,)
+MB!S]"O D$!41$[,>"Q9Z#>$35@F1&DLFY"&Q'<\@FQ^X"Q,9*R&<)8(1;QSG
+M %L/$!UO)B$#$R'*)-L:,A@(#44!K1''&](96 !J(J4"$0RT!M,C,!MS'F0;
+M> ^""_< 90!W"-T"61J@(T88AP,F!APBD1AN!9(7XAPJ&^T<,1"5)'PE"AH+
+M&9 *D"8+ ?L7^@"/#ZH*YB/\).<'JP?6#V0-,!*-)?\,8PX&('H B130&342
+M%1 7 *@=Q@_@#>T"DP4#"+L+#0)##.$'4@$M!K@7'R,%(WT?EA-[%KX  B5 
+M"APF12#5$Z,F:0MH&C<B%2#U##0;A1E?(#\)K@8V&V$%6!=H#RT79!>W(:L/
+M-2*8(T<,] XY! 8,T"0. ! %$"6_#%80OQ'1(/8E7 36%<\10"8B!CX)O C*
+M"0@A)0C%(]\"J1GF$Z@@;1'>'\D)'@Y)&:<@>1<W$N B2"-K &X2, LM%X -
+MSAYQ"F4&1AAL%><-[05@ ?L8+PD<#XL?L0]8!PX QQ_5 EH<EA>T&0T1 0'%
+M(K .WQ-$(LD5Y@E](,,"UA7P(S$-  Y$%%P)0B!$!CX%+@H> X<6C!HK @T+
+MUR6N(8,.LPVN$$D7O1C^ 9<(7 #P&,0*6PZD(3L!E QK#FD8TA &$IL L )U
+M"R4D2!V/$7\+3P*6!+X;$Q=>)>\-HP$R"_4 >!FB( 4&R@GI)7PCQ!/=)>\*
+M:"96'3T8H21D"/D&/0Q")L(!.Q+W!,$  Q#P#.$@BAN9!O<4W1>^#M\3M!\D
+M!N\D6"9=&O0>%Q$<'U0&/!2L&%, 4P'Z CL-8P8-'ED$_@W4$ET<41>C"8,B
+M-B*B)(8CJ1'J !00  )@&5H9(1M2)/D*^Q4,(5D7HB'((84 'PK1(TH?YAT%
+M'U(;0!RZ 2P&Y!$4%>X>*R1Y%R,6O!\ !/H6UB9< /DE9B7M)-$>^0,, (85
+M4 JK"D,5]0.S#_ .DAC\&  B+Q-V!$<>LB2P 7(8)P'2&,0&EQTK(R<=,A-8
+M'DT%*@#Y YP@EP<Q$PT'$@<I"P@,Y@;H ;,:/@ Q&QT#;A% $=P#S1/2)-<,
+M$1>#"H\3[Q:M'AH1WR-K%>HFE 7N 2D%$@,.(+0<Z!.T#+L46B37&]P:\ M7
+M&34$=@A+)(D6+2"\)$DF% YS%*L611?0%GX;0"4\&5T7FPS%"=(%F@RX'O8F
+MQ"$.'AD3(QCP 3,@MQ R'?L=Z@G5!/,()A,5#U$00A'2"[H8/@L5$30!H A*
+M(]$BNB)Z%K$&$A1H%242U1AB'CL  R.P$P4>*1G.&H<BXQ/M$@<ERP2Y J,!
+M5P55#U\%<1> &^876!-]$- "9!D!&W<AWQF#"<XC#!?,&*$CM <O 'D-HQ0+
+M(RL91P/[ /P"71&V'(X/KARB !@:\!(Q%/L%BR!2&7T=]@@;!!@9(1)Y#,@B
+MN PA'0T.>QUS)MD@4"6K&&$FW16](B()CA_G%440$!$Z 6P"8 =Z&SH?GA",
+M"9T.#@;: Z0071["),441@.( *(8<!C)$1P#$A!'&>$/+QTN%-,FY0=O$K05
+M)AUJ!C("M0#+$T(C#!ZY#3$A>POE "T@A2%C&X0E^0+'#Z@@5":@(0\/WPW9
+M!T82,PZ-!!D9#1[M![4-SB%S"L<$)@R0&P<D,@ $#E(,[0<\)+8%71KN 0DB
+MC@S3!APDZ!J^()X.X@45).(9W02H#-TC>1U( NX&0P99)E +B0B;$' 75R M
+M!M@$\Q%-"%8&CR0= AP101OW'ODFV!R6&S$.P!(T!X(+.A.0"ED1""3["=<0
+M7 BM#'T*929A$1L%7P'8&N<<CB3@%F<)!1ZX#YT<RP1K(Z@9:1XZ""84+R;'
+M%#HCZ OQ%=\<4 LB(N0%+  =%ZD$DP=(!Z =Q@_=%?@ ! ]@"<H"W@OW##0>
+M!A#C'L\</04""U@,3@C)(<$9A@+ !]8E-@S>'D<#/@#7 / BXP@')34 & 7>
+M ,TB;!_[)@<!U -5#M07V 97$_ 86B *) H&S@DO&GXA*!_Y!G $.R,L !TE
+MX",R)GD&*Q&Z *L)Q0, !9L1M1-6'0@$504E(I< JB9J(WH?3@1I%B\6-  Q
+M#@43D@\A%*@4<Q)S$> #UAG<$BP4H0#V&=X311CP$PH;VB*\$%09G@(P#[ >
+M;QL^&)4,JB51 ,,;D M7#"X7" JB&/T: Q]F(^H/_ M<%VL?Q1_X)K<CP A?
+M"6 3I@IN&,P/ B%&(T0BL ZS)AD5\0-'#FP8R!*6&LD7VQE$ ^\)MA ]$-$.
+M*@L:(C<)MPQ%&&H<?R.E#JTB_AH""% %! ?@'%(!%0*T'=(&8A@%!]P"F@WS
+M%8<<U WZ)L@#IP&N#C$!P@<2#_8 '0.4 S\2XB*3 *D<:R6?!?$1/A'D!TH&
+M @S=&ML;Z".+).0E_ ;7&Z8A Q4\$Q "2A?"#N0A;A?C'.40EPA^(. "0"/\
+M ]H*K!C7%MX&*2(; *4-7@C[!P<8(1+]!,H9UA/R$Y$,)P>F')L$D!D3&48#
+M, X)%8D3'0TR%O8.X #"&<@ @ 8N$)(BMP93#WH<912I!&,C?04>%\$.TPP3
+M"!HB&":0)I ,'11J%"0 !2(@!7XBI ,S!3$DS"' %"("E!2?)=H0[!WO ](C
+M)0Q% *(,VQ3.)I<+D0_)#*LG!"8U&#<-NP[$"G8*O26,(N\BJ0=%(EL/[QA9
+M! 00F!ON'7@&.@>#!J0+OR,-&?H'@P<*(9$7S@<O!;D>NP7! "0)P -D":0(
+M-@J='I8*UR/5'78BJ"#T%5,"_!%/#MX=<QS^ "<8H!.Z&KH!@R8%$M<, P;K
+M)<@CGP"V%X$ ,06C)4<"BP4J(Q@*00=##E4 \ &]#O48(P[;'M80BPR')&,A
+M'@IB"HP"APCX!2(7QB+Z .P>L 9%(5H+'A/A$D\.A":_"D42V29T&*L4I1.B
+M(U\#41VR$<4C]!^Q 9L<:Q%,#TH2SA$[%J@8&QR8!1X"N2)%)2 930LP#_@#
+M;B&Y#K@*?A/G 00']@]!%]\:* :O(IP4B #_$A$E$!,A)(<"Q"0.%#P&$ ,P
+M&FT:ZP6#!5$"20G %S0COR#S'T81!"/ (7\%C23" /$,#0Q9#S(A%QNZ!#T;
+M$!=% T\>'P*=#WX B!P.!V@&9R,#'84FU1SH'VP841$K#<4*P _K!9P7R2.3
+M%UX L12B%_,6*A;V![<D$P,%!X8;.A;! *X  1S0&/,+7QD]#J,=. :: ,8B
+MHA?W&64<>0^X!)T+*PP&%M8 D24J%GT#MP N# L""PT<'V0.0A 7 *4BN &]
+M#/P7+B:V$,0+6P82 %<0X@7Q#(<?\!Q%&0,?M1AQ%Y<C>0D+%L@%IQYU"$T>
+MXR9['.\A7@L_!:,:&  &#= :<QOV' D6: \ $O\<* V2!;@F%!&@$AT1*!0N
+M(6$.+00* <H,'PFG WP>;A6<",4D2B-J&C4!M!.\!N@1Z@EH HL55@4&!\X'
+M&AO[(80/4@T:'< 161W_!Y\+8P?-%.T$:2)N#EX3ZQNK&RPE]!N4$"$<F2;2
+M&U( *Q2P'04$*")3!?\6S!I1%/ D61TS$:P)#0 ($9@>4B,2& ,?3 C:!+HF
+M0!#3!0<8/1'C$#P!! &]'?8"W0+U)=8"YR7X!VL3Y"2/'788BQ; (.H-?! _
+M%*H -00H .<1D23A%(0&JB/4"'T3*Q+F#2<>GQ%"%^@2C0].#S(!'B'0!G,C
+M(@<1%.,?X1"W&\L=NPH8#Q(9I24#$&4FW0P'(;L2<ANO#5<9*QXM"_@D90 )
+M'<T9QQ1J#\0?VA6X&@$:1A*[&:4&XQ*\#PH(20L=$9P5>!K$"HH?CP*.%IT:
+M^A+O&R,BB1S/)FXDMA3/!8TB123/)#X"/@27 M B6 =4)9 :!P9)#? +)1#S
+M!^\:( 1G$RP2VR.E&>(:(Q0W B0-V1V@$><'8 -!'I,+=B,E W40<0@-$20=
+M?1M5#A E>R(^(_,4E NS"*83J!NR#NX31A49(?4$# O6#:0(DR53(#X!:21;
+M%S@%X@</!TT&)1GT#)<2H"$:(7<.)!P_#%,(_  !$% DJP1("[4=J"2[" 4?
+MD0M7'XX151W5!3P2Q@I>'=\B"B! !*@'V \8%F0/3QGA((0:K1QP%64 %A,$
+M%50%[06T%(\/?A+R&+\&?PR3$\0ES CA)G<(W0-K!B(1-P-C&FT*(Q<C&T(8
+M( UA(;,!>076%[<:=@SQ"9(91A'!#8\-F0)C  @@D [7(Q$AA"+Y$IP;?":4
+M#X BAA@='5L@9!+"#\D$I ,U"1D+T! )$*@=_ Q/!I<3W":L&K<@PAX*)+,A
+M#@\Y"<D5H0$,%=L)*Q[0!08,N24;&E<>UA96(JP<5QT1(9(:1 #_&E,C0A>V
+M!/\%\@X<#+PBCP*+%"X3- ^*#<,4?@WN%+\@9@ T'Z 7!@8F'B( *PB("=LE
+ML@8G#&L&<PVM#K8@&PF3#+8+'"(5%^\3ZPEH".L0E":?%\$E]Q73)?H:D@1B
+M'"@D)@R8)",FT!8O);L-& /@(^$>@07>%049NA.6!ST#H!0B 886>")+"#0*
+M=0%*$%(7=P0((*<'?0RP(H 13"2Y$U(6?A/- 8@(MP%:)/ (P0CX$Y\AFP..
+M!FDBZ F+)#@# @DV!?$3RPHJ -063P#P&&X@'Q ,$7@F$PC&(_X0D@T"';TE
+M=1=7 TT<UR(+$CX8M0_B).@F^ YE$C<#,QAO(V@4\0*=!# E4R&R"P$5_R P
+M#$$..!%)!B0(50G:"(\<?@VH%'<%"PN1"FTB!"7Z#0<-/ !-"-T@X!_2%.0)
+M2".H$"\"(0'#"\06L V>(NP630-Q'L@"KQT_%[,.B VZ%I8/3R'^'C@-91 "
+M"GX<XA'V ;\;K!Z5$A$ [Q:S SX#"R-A%:@A3!'!"^HD41[=(A,C$PVQ& P%
+MJ0:3#=D!M09$ I$&.B&1%HL7$0]H!GL7A 4@ C 3?A-U'WX8AQZ6(1T&FA,&
+M  $#T 6#)K\AC1_V%5X0M0$V'-P+"QFA$E$.'Q(<)/$3"@GK%UL.91[/"(<-
+MER;G#<<.0",M&9H#%0NK$GHFY!Y9%, -6P3Q"Y,?,Q(Q ZP44QM*$>\?]P-B
+M"0H3- GB"B 'VAF\& 8)H0HR'? A\@4.$=P>X@I^ $L=JPI](CH@=AU>#R8-
+M-A]C)P8%=P5Y'1T "0Q '@P#/PY^!S<5JPS]$&$'TB'R .,%& TN(8X0\!%<
+M'JP8\B2!&;D:>@_7%L$"Y2$!%=4'J0->!+<2^!SX$5(?V0EA%4H%M!5+#:D1
+M#2;S(9(&&@2<'G\78 "-(&L7!Q#\$/8E:!F4$_X3DA^$ ALC=AV;!><*^!D-
+M#UX/P08P$!(>RQ_K#U8<A %3$_<C'B'< #\#@ V( SP/JR1: 2H-XA"2 BD#
+MPPXH ;4;8AC0 8D!EAYW$046D!:O&!D+6 [# 6$A3!>["JD3%QVR M8:D11L
+M#^<4^AL<(%88HQ/\'8D?@ ;$#>@*HAQV(8PF11!?(Y0CSA:R!*H)N!@7(LD<
+M=!I])($:M1';$X,# P*.":H5415O'%(8L![2(581PQI""%<3:!7, :(!  H0
+M&6X!1!#/ LX:]QM;(_H2NB)'"Z8 X@)E''$ PQ[U!;<1CQ4@):P;0"5K(P\$
+MFQN7'8H)$!HM(O\3ZAI[!2H3BQ.K";TF3PVZ!,P'0P2U)2P)$PQ! Y<)KQ73
+M)) *;!",'X(%=!JB(3$*&QR^(*P#;R:-".@#XA7@ 5X8%@<$!ZL3K0'/%S ?
+MO0KL#5@:O UO FP*MQPP"6T88ABY#<\+Z"7T#P<)FR;;)E\6Y@*L$[L&81Q%
+M#_($40])'],2% DF$\P@O1:((30E, P*!YD#K03>!Z@+SA2<&900F![5'F $
+MVR4""_<A&@F\!GX?T"8H%O8-^ 5Q'S,$<@1@#A(/ZQR: T\%+P/# B8:9AXT
+M'[,0S!QI"_DB[AX1&",2?2+&!W,D60,$#%<2_B1A'R@  1Y@%AH%^B ]!-D:
+M\QY) IP@,@J5%,89#A.W&J8-/A*!%04/Q"6,'0P/HA8/!P<!KQFQ#MX@[1#[
+M'BP(3 ^X(A8*31X^$-(F= VC)<((I1A'(ID(7P3A' $7O2,]$A04D!/?%"L)
+M"!YG'TP*]@44&T0'(R:)!%<7!2'!%,0?,P7I%8,+NR/L'. )4PF^%7<3=Q*F
+M#-D:3R&Y&!P>A0 +'P .0!O](;X0IP/J%KXBG@@N! \@#PK%"+8ER ;7&&T!
+M!B%T(24A\P[B'U@8@AZ!#!D,+Q[3 .HA;B-^ Q0-M17U&U<B,Q(  K0/%1&E
+M NT,# :A(4(6BB0G %8F! <O%_4630O_!S,50!F %$HF20 0$@H4' .G%$T7
+M>0-L('L:$ *[(B0)3 M""8 :"@=M!?0CZAEU&1P2I0R6"#< 30YP'*DDB!L.
+M&;83EQOY'_L!T18! OH9B@T9(F@;"Q^9!80'Z2-](QPCHA;.%4P&TA@=&ZT3
+MFAOD(;(8)0=_ ^(#50SH#> <901<(TH%AQ>U'O\2PQ(3(48-JQIA&PD1@Q#Z
+M%&(A&@NA'O 2-!IQ"4L*^Q3O)7@FK!I")ILBUQV@ JT-0R0)"XX!8PF)(M0=
+MQR1N'R0@KA^[%5(@5 S^ #@!^@0@!SX"]@XN#108)!@6 *4>VQRL%.0DE1._
+M"_H-?A? )G@ENAZ7&\0@;2+[ AD&-A0V"\@7Q";* 4L1R! !%/0B$QF&%941
+M<!:X)48*51Q?'OX%AAF:%U88DAUX(M(,L2*(%-08=QA"$ALEP@Z0$9P<>Q;7
+M&2(D,1[&&,L!90V:!TPC_@<Y%SL2/Q9($VTDD2'[$!,9&PZP(A@&KAM!!QH&
+M,0ST%X "F"#W H@@?A%'%6</#2;=%W82'"7=%N$9;@6@!>X@N 3/%E4$OP.<
+M)$8%]!:%#F0!Y0,9"3(=20?_ S@'I18T)+(D"B+4&>H*1A2*%+P X":Q"*<3
+MF0)3$LH<M!,7)4(6_QL%)8@ /05,!A8"U@G:&GD;(PR)#0,ALQ\0(?</XP.T
+M&3(2:QW/'Q<>Z!/B(S<=YQJ]'3H+)0ZR%OP K1E/'E0&Q  "       !  , 
+M!@ *  \ %@ > "< ,0 \ $D 5P!F '8 AP": *X PP#9 / !"0$C 3X!6@%W
+M 98!M@'7 ?D"' )! F<"C@*V M\#"@,V V,#D0/  _$$(P16!(H$OP3V!2X%
+M9P6A!=T&&@98!I<&UP<9!UP'H ?E""L(<PB\"08)40F=">L*.@J*"ML++0N!
+M           Z( !5;FMN;W=N(&5R<F]R  H          J/T  *C_  "I 8 
+M J0@  *D,  "I$@  J12  *D;  "I'X  J20  *DH  "I*P  J2^  *DT  "
+MI.(  J3N  *E!  "I1   J4<  *E+@ "I3T  J5-  *E7  "I6T  J6!  *E
+ME0 "I;0  J7#  *ET@ "I>H  J7W  *F#0 "IAP  J8H  *F.P "IDP  J9B
+M  *F?  "IIH  J:Y  *FU@ "IN<  J<&  *G)P "ISX  J=8  *G>@ "IY@ 
+M J?(  *GWP "I_X  J@.  *H)0 "J$D  JAJ  *H@P "J)T  JBY  *HT0 "
+MJ/(  JD4  *I*0 "J3P  JE>  *I<0 "J7X  JF2  *II@ "J;D  JG(  *I
+MW  "J?(  JH4  *J*  "JC8  JI.  *J:0 "JGP  JJ/  *JLP "JLT  JKK
+M  *J_  "JQ(  JLC  *K,@ "JTX  JM=  *K<  "JWP  JN3    6T5R<F]R
+M(#  3F]T(&]W;F5R $YO('-U8V@@9FEL92!O<B!D:7)E8W1O<GD 3F\@<W5C
+M:"!P<F]C97-S $EN=&5R<G5P=&5D('-Y<W1E;2!C86QL $DO3R!E<G)O<@!.
+M;R!S=6-H(&1E=FEC92!O<B!A9&1R97-S $%R9R!L:7-T('1O;R!L;VYG $5X
+M96,@9F]R;6%T(&5R<F]R $)A9"!F:6QE(&YU;6)E<@!.;R!C:&EL9')E;@!.
+M;R!M;W)E('!R;V-E<W-E<P!.;W0@96YO=6=H(&UE;6]R>0!097)M:7-S:6]N
+M(&1E;FEE9 !"860@861D<F5S<P!";&]C:R!D979I8V4@<F5Q=6ER960 1&5V
+M:6-E(&)U<WD 1FEL92!E>&ES=', 0W)O<W,M9&5V:6-E(&QI;FL 3F\@<W5C
+M:"!D979I8V4 3F]T(&$@9&ER96-T;W)Y $ES(&$@9&ER96-T;W)Y $EN=F%L
+M:60@87)G=6UE;G0 1FEL92!T86)L92!O=F5R9FQO=P!4;V\@;6%N>2!O<&5N
+M(&9I;&5S $EN87!P<F]P<FEA=&4@:6]C=&P@9F]R(&1E=FEC90!497AT(&9I
+M;&4@8G5S>0!&:6QE('1O;R!L87)G90!.;R!S<&%C92!L969T(&]N(&1E=FEC
+M90!);&QE9V%L('-E96L 4F5A9"UO;FQY(&9I;&4@<WES=&5M %1O;R!M86YY
+M(&QI;FMS $)R;VME;B!P:7!E $%R9W5M96YT('1O;R!L87)G90!297-U;'0@
+M=&]O(&QA<F=E $]P97)A=&EO;B!W;W5L9"!B;&]C:P!/<&5R871I;VX@;F]W
+M(&EN('!R;V=R97-S $]P97)A=&EO;B!A;')E861Y(&EN('!R;V=R97-S %-O
+M8VME="!O<&5R871I;VX@;VX@;F]N+7-O8VME= !$97-T:6YA=&EO;B!A9&1R
+M97-S(')E<75I<F5D $UE<W-A9V4@=&]O(&QO;F< 4')O=&]C;VP@=W)O;F<@
+M='EP92!F;W(@<V]C:V5T $]P=&EO;B!N;W0@<W5P<&]R=&5D(&)Y('!R;W1O
+M8V]L %!R;W1O8V]L(&YO="!S=7!P;W)T960 4V]C:V5T('1Y<&4@;F]T('-U
+M<'!O<G1E9 !/<&5R871I;VX@;F]T('-U<'!O<G1E9"!O;B!S;V-K970 4')O
+M=&]C;VP@9F%M:6QY(&YO="!S=7!P;W)T960 061D<F5S<R!F86UI;'D@;F]T
+M('-U<'!O<G1E9"!B>2!P<F]T;V-O;"!F86UI;'D 061D<F5S<R!A;')E861Y
+M(&EN('5S90!#86XG="!A<W-I9VX@<F5Q=65S=&5D(&%D9')E<W, 3F5T=V]R
+M:R!I<R!D;W=N $YE='=O<FL@:7,@=6YR96%C:&%B;&4 3F5T=V]R:R!D<F]P
+M<&5D(&-O;FYE8W1I;VX@;VX@<F5S970 4V]F='=A<F4@8V%U<V5D(&-O;FYE
+M8W1I;VX@86)O<G0 0V]N;F5C=&EO;B!R97-E="!B>2!P965R $YO(&)U9F9E
+M<B!S<&%C92!A=F%I;&%B;&4 4V]C:V5T(&ES(&%L<F5A9'D@8V]N;F5C=&5D
+M %-O8VME="!I<R!N;W0@8V]N;F5C=&5D $-A;B=T('-E;F0@869T97(@<V]C
+M:V5T('-H=71D;W=N %1O;R!M86YY(')E9F5R96YC97,Z(&-A;B=T('-P;&EC
+M90!#;VYN96-T:6]N('1I;65D(&]U= !#;VYN96-T:6]N(')E9G5S960 5&]O
+M(&UA;GD@;&5V96QS(&]F('-Y;6)O;&EC(&QI;FMS $9I;&4@;F%M92!T;V\@
+M;&]N9P!(;W-T(&ES(&1O=VX 2&]S="!I<R!U;G)E86-H86)L90!$:7)E8W1O
+M<GD@;F]T(&5M<'1Y %1O;R!M86YY('!R;V-E<W-E<P!4;V\@;6%N>2!U<V5R
+M<P!$:7-C('%U;W1A(&5X8V5E9&5D %-T86QE($Y&4R!F:6QE(&AA;F1L90!4
+M;V\@;6%N>2!L979E;',@;V8@<F5M;W1E(&EN('!A=&@ 3F]T(&$@<W1R96%M
+M(&1E=FEC90!4:6UE<B!E>'!I<F5D $]U="!O9B!S=')E86T@<F5S;W5R8V5S
+M $YO(&UE<W-A9V4@;V8@9&5S:7)E9"!T>7!E $YO="!A(&1A=&$@;65S<V%G
+M90!)9&5N=&EF:65R(')E;6]V960 1&5A9&QO8VL@<VET=6%T:6]N(&1E=&5C
+M=&5D+V%V;VED960 3F\@<F5C;W)D(&QO8VMS(&%V86EL86)L90!-86-H:6YE
+M(&ES(&YO="!O;B!T:&4@;F5T=V]R:P!/8FIE8W0@:7,@<F5M;W1E $QI;FL@
+M:&%S(&)E96X@<V5V97)E9 !!9'9E<G1I<V4@97)R;W(@ %-R;6]U;G0@97)R
+M;W(@ $-O;6UU;FEC871I;VX@97)R;W(@;VX@<V5N9 !0<F]T;V-O;"!E<G)O
+M<@!-=6QT:6AO<"!A='1E;7!T960 141/5$1/5"$A(2$ 4F5M;W1E(&%D9')E
+M<W,@8VAA;F=E9 !&=6YC=&EO;B!N;W0@:6UP;&5M96YT960             
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                               $!       ("     0!       (I@ 
+M   =!       (J     E!       (J     T9       (J    !79       
+M(J    !?@             "!@             "3@             "Z@   
+M          #3@             #Q@             $/@             $I
+M@             %+@             %N@             &+@           
+M  &G@             &Y@             ',@             'D@       
+M      'P@             (M@             ):@             *.@   
+M          +(@             +S@               1   >0  (J      
+M1   >0  (J0     1   >0  (JH   ,D)       (J      1   >@  (JX 
+M    1   >@  (K(     1   >@  (K@   ,S)       (JX     1   >P  
+M(KP     1   >P  (L      1   >P  (L8   -*)       (KP     1   
+M?0  (LH     1   ?0  (LX     1   ?0  (M0   -C)       (LH     
+M1   ?@  (M@     1   ?@  (MP     1   ?@  (N(   -S)       (M@ 
+M    1   ?P  (N8     1   ?P  (NH     1   ?P  (O    .*)       
+M(N8     1   @0  (O0     1   @0  (O@     1   @0  (OX   .C)   
+M    (O0     1   @@  (P(     1   @@  (P8     1   @@  (PP   .Q
+M)       (P(     1   @P  (Q      1   @P  (Q0     1   @P  (QH 
+M  /&)       (Q      1   A0  (QX     1   A0  (R(     1   A0  
+M(R@   /=)       (QX     1   A@  (RP     1   A@  (S      1   
+MA@  (S8   /L)       (RP     1   AP  (SH     1   AP  (SX     
+M1   AP  (T0   0")       (SH     1   B0  (T@     1   B0  (TP 
+M    1   B0  (U(   0:)       (T@     1   B@  (U8     1   B@  
+M(UH     1   B@  (V(   0K)       (U8   0]@             1W@   
+M          2K@             3;@             3M@             44
+M@             4P@             5.@             5J@           
+M  5W@               1   L@  (V8     1   M0  (W      1   M@  
+M(W8     1   MP  (WX     1   N0  (X8     1   N@  (XX     1   
+MNP  (Y8     1   O0  (YX     1   O@  (Z8     1   OP  (ZX     
+M1   P0  ([8     1   P@  ([X     1   PP  (\8     1   Q0  (\X 
+M    1   Q@  (]@     1   R0  (^@     1   R@  (_(     1   RP  
+M(_P     1   S0  ) 8     1   S@  )!      1   SP  )!H     1   
+MT0  )"0     1   T@  )"X     1   TP  )#@     1   U0  )$(     
+M1   U@  )$P     1   UP  )%8     1   V0  )&      1   V@  )&H 
+M    1   W   )'X     1   W0  )(@     1   W@  ))(     1   X   
+M))P     1   X0  )*8     1   X@  )+      1   Y   )+H     1   
+MY0  ),0     1   Y@  ),X     1   Z   )-@     1   Z0  ).(     
+M1   Z@  ).P     1   [   )/8     1   [0  )0      1   [P  )0H 
+M    1   \   )1(     1   \0  )1@     1   \@  )2      1   ]   
+M)28     1   ]@  )3      1   ]P  )3H     1   ]P  )3H   6D)   
+M    (V8   6L(             6V(             7((             7<
+M(             7G(             7Y(             8-(           
+M  86(             8F(             8X(             9"(       
+M      93(             9F(             9R(             9_(   
+M          ::(             :](             ;B(             ;^
+M(             <7(             <\(             =6(           
+M  =M(             >0(             >K(             ?#(       
+M      ?G(             @$(             @B(             @X(   
+M          A6(             AV(             B-(             BH
+M(             C((             C=(             CV(           
+M  D4(             DJ(             E$(             EC(       
+M      E[(             F4(             FB(             G@(   
+M          H-(             I!(             I-(             J(
+M(             JS(             KD(             KO(           
+M  KZ(             L>(             LM(             M+(       
+M      M9!       )4    MB!       )4    MQ9       )4    N:9   
+M    )4    NS@             O5@             OG@             P.
+M@             PG@             Q%@             QC@           
+M  Q]@             R?@             S"@             S?@       
+M      S[@             T-@             T@@             TX@   
+M          U$@             V"@             W&@             X4
+M@             Y+@             Y8@             YB@           
+M  YM@             Z6@             Z\@             [1)       
+M)4    [G(             [^)       )8    \4!@     " #P   \C)   
+M    ):X   \N!       )<@   \V!       )<@   ]%9       )<@   ]N
+M9       )<@   ^'@             ^I@             ^[@           
+M  _B@             _[@            ! 9@            ! W@       
+M     !!1@            !!S@            !"6@            !"S@   
+M         !#/@            !#A@            !#T@            !$,
+M@            !$8@            !%6@            !&:@           
+M !'H@            !(?@            !(L@            !(V@       
+M     !)!@            !)J@            !*0@            !*E(   
+M         !*Y(            !+6(            !+H!       )<@  !+L
+M9       )<@     1 #__P  )<@  !+S!       )<@  !+]!       )D  
+M !,$!       )H@  !,.!       )L@  !,6!       )L@  !,:!       
+M)M@  !,B!       )N   !,K!       )O   !,S!       )O   !,\!   
+M    *V@  !-+!       *\@  !-3!       *]   !-@!       *]   !-J
+M!       +4@  !-S!       -7   !-\!       -:@  !.&!       -Z  
+M !.,!       -Z   !.5!       .'   !.=!       .'   !.A!       
+M.(   !.I!       .(   !.M!       .)   !.]!       .)   !/!!   
+M    .*   !//!       .*   !/3!       .+   !/;!       .+   !/?
+M!       .,   !/J!       .,   !/N!       .-   !/[!       .-  
+M !/_!       ..   !0&!       .1@  !01!       .6   !0;!       
+M.7   !0E!       .A@  !0P!       .C   !0X!       .G   !1"!   
+M    /0@  !1*!       /9   !13!       />   !1<!       3_@  !1I
+M!       3_@  !1Q!       4#@  !1Z!       4)   !2#!       4+  
+M !2*!       45@  !23!       4H@  !2<!       4K@  !2H!       
+M80@  !2Q!       82@  !2Z!       85@  !3#!       89   !3,!   
+M    8?@  !37!       8]@  !3B!       9B   !3Q!       <V@  !4 
+M!       >)   !4*!       >?@  !45!       >J@  !4D!       @+  
+M !4S!       B'   !4_!       BI   !5&!       BI   !5*!       
+MBJ   !53!       BO   !5=!       BS   !5D!       BS   !5H!   
+M    BT   !5Q!       B]   !5Z!       B_@  !6#!       C!   !6+
+M!       C'   !64!       C.   !6=!       C0@  !6G!       C4  
+M !6T!       C4   !7#!       C4   !7,!       C4   !70!       
+MC5   !79!       C>@  !7@!       C>@  !7D!       C?@  !7N!   
+M    CJ   !7W!       CJ   !8 !       CJ   !8$!       CK   !8(
+M9       CK      1 #__P  CK   !8/!0 #H   )D   !85 P          
+M !8?!0 %#@  ("   !8E!0      (V8  !8K!0 #8@  (I@  !8W!0 &X@  
+M)M@  !8^!P %<@ "     !9'!0 $0   )<@  !9/!0 #I   (I@  !9;!0  
+M    (J   !9H!0      (JX  !9\!0      (KP  !:2!0      (LH  !:@
+M!0      (M@  !:U!0      (N8  !;,!0      (O0  !;8!0      (P( 
+M !;K!0      (Q   !< !0      (QX  !<-!0      (RP  !<A!0      
+M(SH  !<W!0      (T@  !=%!0      (U8  !=4!0      ):X  !=<"0  
+M   "L%   !=D"0     "L%(  !=S"0     "L%0  !>$"0     "L%8  !>-
+M"0     "L%@  !>="0     "L%H  !>O"0     "L%P  !>V"0     "L&  
+M !?$"0     "L&0  !?4"0     "L&@  !?<"0     "L&P  !?K"0     "
+ML'   !?\"0     "L'0  !@%"0     "L'@  !@/"0     "L(   !@="0  
+M   "L((  !@R"0     "L(0  !A)"0     "L(@  !A8"0     "L(P  !AN
+M"0     "L)   !B&"0     "L)@  !B3"0     "L*   !BG"0     "L*@ 
+M !B]"0     "L+   !C+"0     "L+@  !C@"0     "L,   !CW"0     "
+ML,@  !D&"0     "L-   !D6"0     "L.   !DF"0     "L.0  !D]"0  
+M   "L.@  !E6"0     "L.P  !EG"0     "L/   !E_"0     "L/0  !F9
+M"0     "L/@  !FH"0     "L/P  !F^"0     "L0   !G6"0     "L00 
+M !GF"0     "L0@  !G]"0     "L0P  !H6"0     "L1   !HG"0     "
+ML10  !HY"0     "L1@  !I""0     "L1P  !I."0     "L2   !I9"0  
+M   "L20  !IB"0     "L2@  !IJ"0     "L3   !IR"0     "L<   !I[
+M"0     "L<@  !J%"0     "L=   !J0"0     "L?   !J;!0      )4  
+M !JN"0     "L@@  !J]!P     " #@  !K.!P     " $   !K@!0      
+M)8   !KS"0     "LA   !L"!0 &=   )H@  !L+!0      )LX  !L2!0 &
+MY0  )<@  !L>!0 ">   *\@  !LD!0 %&@  *V@  !LQ!0 #E@  )O   !L[
+M"0 'B0 "LA@  !M+!0 &JP  +P@  !M3!0 ('   )N   !M:!P 'EP " $0 
+M !MA!0 $W0  *>8  !MJ!0 "9@  )_   !MS!0 #>0  ,!X  !MY!P %^@ "
+M I0  !N!!0 &3   )Y0  !N)!0 $9   *H(  !N3!0  /@  *6(  !N=!0  
+M    .(8  !ND!0 %)P  *T   !NN!0      .'8  !NU!0 ',P  -7   !N]
+M!0 & 0  )P8  !O%!0 %:0  -R   !O-"0 #(  "JZP  !O3!P #<@ " $P 
+M !O>!0 $50  *^@  !OH!P &@P " %@  !OZ!P %50 " &   !P!!P &J0 "
+M &0  !P*!P #RP " %P  !P;!P #?@ " %0  !PL!P &;P " %   !P_!0 '
+MUP  -Z   !Q'!0 #.   *]   !Q3!0 %I   .7   !Q<!0 $*0  .C   !QD
+M!0 "L@  .A@  !QN"0 #J  "LAP  !Q\!P #+@ " IP  !R"!0 &-P  ,8H 
+M !R+!0 #P0  ..   !R1!0      .*8  !R>!0 &\0  /0@  !RE!P #P@ "
+M +@  !RN!P #30 " '   !RZ!P ',@ " +   !S!!P "H@ " +0  !S*!0  
+M    .+8  !S1!0 $?@  -:@  !S;!0      .)8  !SJ!0 "HP  -CP  !SX
+M!0 $5P  -M(  !T$!0 %:P  /9   !T,"0 '?P "LB   !T6!0      .-8 
+M !TB!0 '>   .1@  !TM!0 #HP  .68  !TV!0      .,8  !U "0     "
+MLTP  !U%!P  /0 "!1P  !U,!0  *0  .G   !U4!0 $U0  .K@  !U?!0 "
+M?@  />   !UH"0 #^@ "LJ   !UQ!P (>P "!=0  !U[!0 '>P  3_@  !V"
+M!0 &^P  /<P  !V)!0 #<0  4+   !V/!0  5@  85@  !V7!P "QP "!=P 
+M !V@!0 &T   4H@  !VH!0 '#   4#@  !VP!0 !&@  B48  !V[!0 (B   
+M8LX  !W%!0  "@  80@  !W-!0 %4   7C8  !W9!0 #_   3.H  !WD!0  
+M)   4)   !WL!0 %QP  >)   !W^!0 !F@  BCP  !X)!0  :@  9:X  !X3
+M!0  F@  B'   !X>!0 ("   8?@  !XH!0 "%0  3GX  !XQ P $6^      
+M !X[!0 &\   4>@  !Y$!0 &(@  4C(  !Y-!0 %Q0  4F(  !Y6!0 (!0  
+M4G@  !Y?"0 $S@ "LJ0  !YL!0 %>   4;@  !YV!0 &M0  4=   !Y_!0 %
+MU0  4@   !Z(!0 '(@  47   !Z1!0 &%@  4DH  !Z:!0 &V@  4A@  !ZC
+M!0 %MP  45@  !ZL!0 %P   4:   !ZU!0 &I@  48@  !Z^!0      BI8 
+M ![$!P 'B@ ""$0  ![+!0 %P0  5Q   ![<"0 !Y0 "LK   ![G!0 "_   
+M7D0  ![T!0 (G   B]   ![\"0 'OP "LL   !\&!0 %QP  4K@  !\1!0  
+M50  89   !\9!0 &>0  8)(  !\G!0  6P  5W(  !\Z!0 &YP  BT   !]"
+M"0 %\0 "LM   !],!0  $@  82@  !]4!0      BS8  !]:!0 (10  6Y8 
+M !]F!0  (0  B_@  !]N!P &Z  "!N0  !]^!P #U  "!P   !^)!0 &8   
+MC'   !^1!P "7  "" (  !^:!0  SP  C0@  !^C"0  H@ "LSP  !^Q"0 '
+M=  "LT   !_("0  H0 "LT0  !_@"0 #D  "LT@  !_W!0 $E@  <E8  " *
+M!0 #=@  9?X  " 0!0 &N   8]@  " 7!0 (B   9S   " R!0 %70  ?+8 
+M "!)!0 '^   9B   "!8!0 $H   @3(  "!P!0 &4@  :.(  "",!0 #TP  
+M<V@  "";!0  1@  BO   ""D!0 !3   @-(  ""U!0 &    ?HH  "#-!0 '
+M(   @.X  "#E!0 %PP  =7@  "#U!0 $6P  =,   "$$!0 %G   <M0  "$:
+M!0 'O   :[H  "$P!0 &C   ?\H  "%,!0  XP  =T0  "%?!0 &WP  =J( 
+M "%Q!0 $.   =3H  "& !0 "G   =*H  "&3!0 '%0  >?@  "&:!0 "*   
+M>,X  "&U!0  Y   >4@  "'0!0 !A0  >D   "'F!0 !8   >FP  "'\!0  
+M2   >@P  "(.!0  7   >J@  "(=!0 #00  ?9@  "(Q!0 &*0  ?%H  ")'
+M!0 (+P  ?@0  ")B!0 #'   ?18  ")V!0 &!   >]0  "*,!0 %+   >UH 
+M "*@!0 %E   >MX  "*N!0 !.   >Z8  "+!!0 #!@  >VX  "+5!0 &*@  
+M>R   "+E!0 $_   >NX  "+S!0 %O   ?U   ",$!0 (&   BJ   ",,!P '
+MY@ ",+   ",K!P #J  "BAH  "-,!P '8  "=D0  "-L!P (<@ ",)   ".#
+M!P %X  "B6(  ".<!P (?  "=C@  ".T!P !M@ ""U8  "/%!P $R@ "=IP 
+M "/8!P #H@ "=BX  "/J!P &S@ ""U0  "/_!P '[@ "=IH  "06!P %-  "
+M=BP  "0L!0 #X0  @+   "1$!0 &V   C!   "1+!P (EP "=@@  "1B!P &
+M!0 "H=8  "1[!P   P "=G8  "23!P !VP ",-   "2D!P $[P "BM(  "2W
+M!P #QP "=E   "3)!P &\P ",,X  "3>!P ($P "BM   "3U!P %60 "=DX 
+M "4+!0 'H@  C.   "43!0      C>X  "49!0 'N   C5   "4A!0      
+MC48  "4I!0 #;@  C?@  "4R!P %P@ "HH0  "4_!0      CJ8  "5'!P "
+MF@ "H_   "51!0     "     "58!P     "JZP  "5?"0     "LTP  "5E
+M+VQI8B]C<G0P+F\ +VQI8B]-8W)T,2YO &=D8FUE+F\ 9V-C,E]C;VUP:6QE
+M9"X +V-Y9VEN="]P;&%Y+V9N9B]D979O+V=D8G1E<W0O=#$P+P!G9&)M92YC
+M &EN=#IT,3UR,3LM,C$T-S0X,S8T.#LR,30W-#@S-C0W.P!C:&%R.G0R/7(R
+M.S [,3(W.P!L;VYG(&EN=#IT,SUR,3LM,C$T-S0X,S8T.#LR,30W-#@S-C0W
+M.P!U;G-I9VYE9"!I;G0Z=#0]<C$[,#LM,3L ;&]N9R!U;G-I9VYE9"!I;G0Z
+M=#4]<C$[,#LM,3L <VAO<G0@:6YT.G0V/7(Q.RTS,C<V.#LS,C<V-SL ;&]N
+M9R!L;VYG(&EN=#IT-SUR,3LP.RTQ.P!S:&]R="!U;G-I9VYE9"!I;G0Z=#@]
+M<C$[,#LV-34S-3L ;&]N9R!L;VYG('5N<VEG;F5D(&EN=#IT.3UR,3LP.RTQ
+M.P!S:6=N960@8VAA<CIT,3 ]<C$[+3$R.#LQ,C<[ '5N<VEG;F5D(&-H87(Z
+M=#$Q/7(Q.S [,C4U.P!F;&]A=#IT,3(]<C$[-#LP.P!D;W5B;&4Z=#$S/7(Q
+M.S@[,#L ;&]N9R!D;W5B;&4Z=#$T/7(Q.S@[,#L =F]I9#IT,34],34 =%]S
+M=')U8W0Z5#$V/7,R-'9?8VAA<E]M96UB97(Z,BPP+#@[=E]S:&]R=%]M96UB
+M97(Z-BPQ-BPQ-CM< '9?:6YT7VUE;6)E<CHQ+#,R+#,R.W9?;&]N9U]M96UB
+M97(Z,RPV-"PS,CM< '9?9FQO871?;65M8F5R.C$R+#DV+#,R.W9?9&]U8FQE
+M7VUE;6)E<CHQ,RPQ,C@L-C0[.P!T7W5N:6]N.E0Q-SUU.'9?8VAA<E]M96UB
+M97(Z,BPP+#@[=E]S:&]R=%]M96UB97(Z-BPP+#$V.UP =E]I;G1?;65M8F5R
+M.C$L,"PS,CMV7VQO;F=?;65M8F5R.C,L,"PS,CM< '9?9FQO871?;65M8F5R
+M.C$R+# L,S([=E]D;W5B;&5?;65M8F5R.C$S+# L-C0[.P!V7V-H87)?9G5N
+M8SI&,@!V7W-I9VYE9%]C:&%R7V9U;F,Z1C$P '9?=6YS:6=N961?8VAA<E]F
+M=6YC.D8Q,0!V7W-H;W)T7V9U;F,Z1C8 =E]S:6=N961?<VAO<G1?9G5N8SI&
+M-@!V7W5N<VEG;F5D7W-H;W)T7V9U;F,Z1C@ =E]I;G1?9G5N8SI&,0!V7W-I
+M9VYE9%]I;G1?9G5N8SI&,0!V7W5N<VEG;F5D7VEN=%]F=6YC.D8T '9?;&]N
+M9U]F=6YC.D8S '9?<VEG;F5D7VQO;F=?9G5N8SI&,P!V7W5N<VEG;F5D7VQO
+M;F=?9G5N8SI&-0!V7V9L;V%T7V9U;F,Z1C$R '9?9&]U8FQE7V9U;F,Z1C$S
+M &QI;FLZ5#$X/7,Q-3)N97AT.C$Y/2HQ."PP+#,R.VQI;FMF=6YC.C(P/2HR
+M,3UF,3DL,S(L,S([7 !S='5F9CHR,CUA<C$[,#LP.S(S/6%R,3LP.S$[,C0]
+M87(Q.S [,CLQ-BPV-"PQ,34R.SL ='5?;&EN:SI4,C4]=3$T-&YE>'0Z,3DL
+M,"PS,CML:6YK9G5N8SHR,"PP+#,R.UP <W1U9F8Z,C(L,"PQ,34R.SL 8V]L
+M;W)S.E0R-CUE>65L;&]W.C L<'5R<&QE.C$L<&EN:SHR+#L 8V%R<SI4,C<]
+M96)M=SHP+'!O<G-C:&4Z,2P[ &)O;VQE86XZ=#(X/65&04Q313HP+%12544Z
+M,2P[ &)V86QS.E0R.3UE9F%L<V4Z,"QT<G5E.C$L.P!B;V]L96%N,CIT,CD 
+M;6ES;W)D97)E9#I4,S ]971W;SHR+&]N93HQ+'IE<F\Z,"QT:')E93HS+#L 
+M;6%I;CI&,0!V7V-H87(Z1S( =E]S:6=N961?8VAA<CI',3  =E]U;G-I9VYE
+M9%]C:&%R.D<Q,0!V7W-H;W)T.D<V '9?<VEG;F5D7W-H;W)T.D<V '9?=6YS
+M:6=N961?<VAO<G0Z1S@ =E]I;G0Z1S$ =E]S:6=N961?:6YT.D<Q '9?=6YS
+M:6=N961?:6YT.D<T '9?;&]N9SI',P!V7W-I9VYE9%]L;VYG.D<S '9?=6YS
+M:6=N961?;&]N9SI'-0!V7V9L;V%T.D<Q,@!V7V1O=6)L93I',3, =E]C:&%R
+M7V%R<F%Y.D<S,3UA<C$[,#LQ.S( =E]S:6=N961?8VAA<E]A<G)A>3I',S(]
+M87(Q.S [,3LQ, !V7W5N<VEG;F5D7V-H87)?87)R87DZ1S,S/6%R,3LP.S$[
+M,3$ =E]S:&]R=%]A<G)A>3I',S0]87(Q.S [,3LV '9?<VEG;F5D7W-H;W)T
+M7V%R<F%Y.D<S- !V7W5N<VEG;F5D7W-H;W)T7V%R<F%Y.D<S-3UA<C$[,#LQ
+M.S@ =E]I;G1?87)R87DZ1S,V/6%R,3LP.S$[,0!V7W-I9VYE9%]I;G1?87)R
+M87DZ1S,V '9?=6YS:6=N961?:6YT7V%R<F%Y.D<S-SUA<C$[,#LQ.S0 =E]L
+M;VYG7V%R<F%Y.D<S.#UA<C$[,#LQ.S, =E]S:6=N961?;&]N9U]A<G)A>3I'
+M,S@ =E]U;G-I9VYE9%]L;VYG7V%R<F%Y.D<S.3UA<C$[,#LQ.S4 =E]F;&]A
+M=%]A<G)A>3I'-# ]87(Q.S [,3LQ,@!V7V1O=6)L95]A<G)A>3I'-#$]87(Q
+M.S [,3LQ,P!V7V-H87)?<&]I;G1E<CI'-#(]*C( =E]S:6=N961?8VAA<E]P
+M;VEN=&5R.D<T,STJ,3  =E]U;G-I9VYE9%]C:&%R7W!O:6YT97(Z1S0T/2HQ
+M,0!V7W-H;W)T7W!O:6YT97(Z1S0U/2HV '9?<VEG;F5D7W-H;W)T7W!O:6YT
+M97(Z1S0U '9?=6YS:6=N961?<VAO<G1?<&]I;G1E<CI'-#8]*C@ =E]I;G1?
+M<&]I;G1E<CI'-#<]*C$ =E]S:6=N961?:6YT7W!O:6YT97(Z1S0W '9?=6YS
+M:6=N961?:6YT7W!O:6YT97(Z1S0X/2HT '9?;&]N9U]P;VEN=&5R.D<T.3TJ
+M,P!V7W-I9VYE9%]L;VYG7W!O:6YT97(Z1S0Y '9?=6YS:6=N961?;&]N9U]P
+M;VEN=&5R.D<U,#TJ-0!V7V9L;V%T7W!O:6YT97(Z1S4Q/2HQ,@!V7V1O=6)L
+M95]P;VEN=&5R.D<U,CTJ,3, =E]S=')U8W0Q.D<Q-@!V7W-T<G5C=#(Z1S4S
+M/7,R-'9?8VAA<E]M96UB97(Z,BPP+#@[=E]S:&]R=%]M96UB97(Z-BPQ-BPQ
+M-CM< '9?:6YT7VUE;6)E<CHQ+#,R+#,R.W9?;&]N9U]M96UB97(Z,RPV-"PS
+M,CM< '9?9FQO871?;65M8F5R.C$R+#DV+#,R.W9?9&]U8FQE7VUE;6)E<CHQ
+M,RPQ,C@L-C0[.P!V7W5N:6]N.D<Q-P!V7W5N:6]N,CI'-30]=3AV7V-H87)?
+M;65M8F5R.C(L,"PX.W9?<VAO<G1?;65M8F5R.C8L,"PQ-CM< '9?:6YT7VUE
+M;6)E<CHQ+# L,S([=E]L;VYG7VUE;6)E<CHS+# L,S([7 !V7V9L;V%T7VUE
+M;6)E<CHQ,BPP+#,R.W9?9&]U8FQE7VUE;6)E<CHQ,RPP+#8T.SL <U]L:6YK
+M.D<Q.0!U7VQI;FLZ1S(U '!R:6UA<GDZ1S4U/65R960Z,"QG<F5E;CHQ+&)L
+M=64Z,BP[ &YO;G!R:6UA<GDZ1S(V &-L=6YK97(Z1S4V/65C:&5V>3HP+&9O
+M<F0Z,2P[ '-P;W)T<V-A<CI',C< 7U]M86EN+F\ 9V-C,E]C;VUP:6QE9"X 
+M+W-E;F1A:2]A8F,O<FEC:"]L871E<W0O;V)J9&ER+7-U;C,O9V-C+P N+B\N
+M+B]D979O+V=C8R]L:6)G8V,R+F, :6YT.G0Q/7(Q.RTR,30W-#@S-C0X.S(Q
+M-#<T.#,V-#<[ &-H87(Z=#(]<C([,#LQ,C<[ &QO;F<@:6YT.G0S/7(Q.RTR
+M,30W-#@S-C0X.S(Q-#<T.#,V-#<[ '5N<VEG;F5D(&EN=#IT-#UR,3LP.RTQ
+M.P!L;VYG('5N<VEG;F5D(&EN=#IT-3UR,3LP.RTQ.P!S:&]R="!I;G0Z=#8]
+M<C$[+3,R-S8X.S,R-S8W.P!L;VYG(&QO;F<@:6YT.G0W/7(Q.S [+3$[ '-H
+M;W)T('5N<VEG;F5D(&EN=#IT.#UR,3LP.S8U-3,U.P!L;VYG(&QO;F<@=6YS
+M:6=N960@:6YT.G0Y/7(Q.S [+3$[ '-I9VYE9"!C:&%R.G0Q,#UR,3LM,3(X
+M.S$R-SL =6YS:6=N960@8VAA<CIT,3$]<C$[,#LR-34[ &9L;V%T.G0Q,CUR
+M,3LT.S [ &1O=6)L93IT,3,]<C$[.#LP.P!L;VYG(&1O=6)L93IT,30]<C$[
+M.#LP.P!V;VED.G0Q-3TQ-0!R96=?8VQA<W,Z5#$V/65.3U]214=3.C L3$]?
+M1E!!7U)%1U,Z,2Q&4$%?4D5'4SHR+$907U)%1U,Z,RQ< $907T]27T9005]2
+M14=3.C0L1$%405]214=3.C4L1$%405]/4E]&4$%?4D5'4SHV+$1!5$%?3U)?
+M1E!?4D5'4SHW+%P 1$%405]/4E]&4%]/4E]&4$%?4D5'4SHX+$%$1%)?4D5'
+M4SHY+$=%3D5204Q?4D5'4SHQ,"Q'14Y%4D%,7T]27T9005]214=3.C$Q+%P 
+M1T5.15)!3%]/4E]&4%]214=3.C$R+$%,3%]214=3.C$S+$Q)35]214=?0TQ!
+M4U-%4SHQ-"P[ '!T<F1I9F9?=#IT,0!S:7IE7W0Z=#$ =V-H87)?=#IT. !L
+M;VYG;&]N9SI4,3<]<SAH:6=H.C,L,"PS,CML;W<Z,RPS,BPS,CL[ &QO;F=?
+M;&]N9SIT,3@]=3AS.C$W+# L-C0[;&PZ-RPP+#8T.SL 9G5N8U]P='(Z=#$Y
+M/2HR,#UF,34 7U]D;U]G;&]B86Q?9'1O<G,Z1C$U %]E>&ET7V1U;6UY7W)E
+M9CI',C$]*C$ 7U]D;U]G;&]B86Q?8W1O<G,Z1C$U %]I;FET:6%L:7IE9"XP
+M %]?;6%I;CI&,34 7V5X:70N;P!G8V,R7V-O;7!I;&5D+@ O<V5N9&%I+V%B
+M8R]R:6-H+VQA=&5S="]O8FID:7(M<W5N,R]G8V,O "XN+RXN+V1E=F\O9V-C
+M+VQI8F=C8S(N8P!I;G0Z=#$]<C$[+3(Q-#<T.#,V-#@[,C$T-S0X,S8T-SL 
+M8VAA<CIT,CUR,CLP.S$R-SL ;&]N9R!I;G0Z=#,]<C$[+3(Q-#<T.#,V-#@[
+M,C$T-S0X,S8T-SL =6YS:6=N960@:6YT.G0T/7(Q.S [+3$[ &QO;F<@=6YS
+M:6=N960@:6YT.G0U/7(Q.S [+3$[ '-H;W)T(&EN=#IT-CUR,3LM,S(W-C@[
+M,S(W-C<[ &QO;F<@;&]N9R!I;G0Z=#<]<C$[,#LM,3L <VAO<G0@=6YS:6=N
+M960@:6YT.G0X/7(Q.S [-C4U,S4[ &QO;F<@;&]N9R!U;G-I9VYE9"!I;G0Z
+M=#D]<C$[,#LM,3L <VEG;F5D(&-H87(Z=#$P/7(Q.RTQ,C@[,3(W.P!U;G-I
+M9VYE9"!C:&%R.G0Q,3UR,3LP.S(U-3L 9FQO870Z=#$R/7(Q.S0[,#L 9&]U
+M8FQE.G0Q,SUR,3LX.S [ &QO;F<@9&]U8FQE.G0Q-#UR,3LX.S [ '9O:60Z
+M=#$U/3$U ')E9U]C;&%S<SI4,38]94Y/7U)%1U,Z,"Q,3U]&4$%?4D5'4SHQ
+M+$9005]214=3.C(L1E!?4D5'4SHS+%P 1E!?3U)?1E!!7U)%1U,Z-"Q$051!
+M7U)%1U,Z-2Q$051!7T]27T9005]214=3.C8L1$%405]/4E]&4%]214=3.C<L
+M7 !$051!7T]27T907T]27T9005]214=3.C@L041$4E]214=3.CDL1T5.15)!
+M3%]214=3.C$P+$=%3D5204Q?3U)?1E!!7U)%1U,Z,3$L7 !'14Y%4D%,7T]2
+M7T907U)%1U,Z,3(L04Q,7U)%1U,Z,3,L3$E-7U)%1U]#3$%34T53.C$T+#L 
+M<'1R9&EF9E]T.G0Q '-I>F5?=#IT,0!W8VAA<E]T.G0X &QO;F=L;VYG.E0Q
+M-SUS.&AI9V@Z,RPP+#,R.VQO=SHS+#,R+#,R.SL ;&]N9U]L;VYG.G0Q.#UU
+M.',Z,3<L,"PV-#ML;#HW+# L-C0[.P!F=6YC7W!T<CIT,3D]*C(P/68Q-0!?
+M97AI=%]D=6UM>5]D96-L.D<Q %]?0U1/4E],25-47U\Z1S(Q/6%R,3LP.S$[
+M,3D 7U]$5$]27TQ)4U1?7SI',C$ +6QG &QI8F<N<P!-<W=I=&-H+F\ 97AI
+M="YO &]N7V5X:70N;P!W<FET92YO &5R<@!?97AI="YO &-E<G)O<BYO &5R
+M<FYO+F\ 9FQS8G5F+F\ 9FQO871?<W=I=&-H+F\ 36EN:70N;P!F<%]G;&]B
+M86QS+F\ ;6EN:71F<"YO &UA;&QO8RYO &ES871T>2YO &9I;F1I;W N;P!I
+M;V(N;P!S:6=V96,N;P!C;&]S92YO &5R<@!F<W1A="YO &5R<@!G971D=&%B
+M;&5S:7IE+F\ 97)R &=E='!A9V5S:7IE+F\ 97)R &EO8W1L+F\ 97)R '-I
+M9V)L;V-K+F\ 97)R '-I9W-E=&UA<VLN;P!E<G( <V)R:RYO '-I9W1R86UP
+M+F\ 7W-I9W9E8RYO &9P<FEN=&8N;P!-9&5F875L="YO &UA.3-N+F\ 9G!?
+M<V%V92YO &)C;W!Y+F\ 8V%L;&]C+F\ 9&]P<FYT+F\ 9G!?8V]M;6]N<RYO
+M &)Z97)O+F\ ;65M<V5T+F\ <W1R;&5N+F\ 871O:2YO &-T>7!E7RYO &UE
+M;6-H<BYO '-E=&QO8V%L92YO '-T<F-H<BYO '-T<F-M<"YO '-T<G-P;BYO
+M '-T<G1O:RYO &5C;VYV97)T+F\ 9V-O;G9E<G0N;P!D;W5B;&5?9&5C:6TN
+M;P!?=6YP86-K7V1B;&4N;P!?8F%S95]3+F\ 7V)A<V5?:6PN;P!?<W!R:6YT
+M9E]S=7 N;P!?=&EM97-?<&]W97(N;P!Q96-O;G9E<G0N;P!R96%D+F\ 97)R
+M '!R:6YT9BYO '-P<FEN=&8N;P!O<&5N+F\ 97)R &UE;6-P>2YO '-T<F-A
+M="YO '-T<F-P>2YO &%B;W)T+F\ 9V5T96YV+F\ <&5R<F]R+F\ <W1R<&)R
+M:RYO %]B:6=?<&]W97(N;P!?<VUA;&Q?<&]W97(N;P!G971P:60N;P!E<G( 
+M<VEG;F%L+F\ :VEL;"YO &5R<@!?<&5R<F]R+F\ 97)R;'-T+F\ =W)I=&5V
+M+F\ 97)R "UL9P!L:6)G+G, 7V5X:70 7U]$64Y!34E# '-T87)T %]M86EN
+M '-T87)T7V9L;V%T %]?97AI= !?96YV:7)O;@!-<W=I=&-H &8V.#@X,5]U
+M<V5D %]V7V-H87)?9G5N8P!?=E]S:6=N961?8VAA<E]F=6YC %]V7W5N<VEG
+M;F5D7V-H87)?9G5N8P!?=E]S:&]R=%]F=6YC %]V7W-I9VYE9%]S:&]R=%]F
+M=6YC %]V7W5N<VEG;F5D7W-H;W)T7V9U;F, 7W9?:6YT7V9U;F, 7W9?<VEG
+M;F5D7VEN=%]F=6YC %]V7W5N<VEG;F5D7VEN=%]F=6YC %]V7VQO;F=?9G5N
+M8P!?=E]S:6=N961?;&]N9U]F=6YC %]V7W5N<VEG;F5D7VQO;F=?9G5N8P!?
+M=E]F;&]A=%]F=6YC %]V7V1O=6)L95]F=6YC %]?7VUA:6X 7W9?8VAA<@!?
+M=E]S:6=N961?8VAA<@!?=E]U;G-I9VYE9%]C:&%R %]V7W-H;W)T %]V7W-I
+M9VYE9%]S:&]R= !?=E]U;G-I9VYE9%]S:&]R= !?=E]I;G0 7W9?<VEG;F5D
+M7VEN= !?=E]U;G-I9VYE9%]I;G0 7W9?;&]N9P!?=E]S:6=N961?;&]N9P!?
+M=E]U;G-I9VYE9%]L;VYG %]V7V9L;V%T %]V7V1O=6)L90!?=E]C:&%R7V%R
+M<F%Y %]V7W-I9VYE9%]C:&%R7V%R<F%Y %]V7W5N<VEG;F5D7V-H87)?87)R
+M87D 7W9?<VAO<G1?87)R87D 7W9?<VEG;F5D7W-H;W)T7V%R<F%Y %]V7W5N
+M<VEG;F5D7W-H;W)T7V%R<F%Y %]V7VEN=%]A<G)A>0!?=E]S:6=N961?:6YT
+M7V%R<F%Y %]V7W5N<VEG;F5D7VEN=%]A<G)A>0!?=E]L;VYG7V%R<F%Y %]V
+M7W-I9VYE9%]L;VYG7V%R<F%Y %]V7W5N<VEG;F5D7VQO;F=?87)R87D 7W9?
+M9FQO871?87)R87D 7W9?9&]U8FQE7V%R<F%Y %]V7V-H87)?<&]I;G1E<@!?
+M=E]S:6=N961?8VAA<E]P;VEN=&5R %]V7W5N<VEG;F5D7V-H87)?<&]I;G1E
+M<@!?=E]S:&]R=%]P;VEN=&5R %]V7W-I9VYE9%]S:&]R=%]P;VEN=&5R %]V
+M7W5N<VEG;F5D7W-H;W)T7W!O:6YT97( 7W9?:6YT7W!O:6YT97( 7W9?<VEG
+M;F5D7VEN=%]P;VEN=&5R %]V7W5N<VEG;F5D7VEN=%]P;VEN=&5R %]V7VQO
+M;F=?<&]I;G1E<@!?=E]S:6=N961?;&]N9U]P;VEN=&5R %]V7W5N<VEG;F5D
+M7VQO;F=?<&]I;G1E<@!?=E]F;&]A=%]P;VEN=&5R %]V7V1O=6)L95]P;VEN
+M=&5R %]P<FEM87)Y %]N;VYP<FEM87)Y %]S<&]R='-C87( 7V-L=6YK97( 
+M7W-?;&EN:P!?=5]L:6YK %]V7W5N:6]N %]V7W5N:6]N,@!?=E]S=')U8W0Q
+M %]V7W-T<G5C=#( 7U]?9&]?9VQO8F%L7V1T;W)S %]?7T143U)?3$E35%]?
+M %]?97AI=%]D=6UM>5]R968 7U]E>&ET7V1U;6UY7V1E8VP 7U]?9&]?9VQO
+M8F%L7V-T;W)S %]?7T-43U)?3$E35%]? %]O;E]E>&ET %]W<FET90!?;7-W
+M:71C:&9P7P!-:6YI= !F;&]A=%]S=VET8V@ 7U]C;&5A;G5P %]?97AI=%]H
+M86YD;&5R<P!?;6%L;&]C &-E<G)O<@!?97)R;F\ 7U]W<G1C:&L 7U]F;'-B
+M=68 7V9R964 7U]S;6)U9@!?9F9L=7-H %]?9FEN9&)U9@!?7WAF;'-B=68 
+M7V9S=&%T %]?8G5F<WEN8P!?8VQO<V4 7VES871T>0!?9F-L;W-E %]?9G=A
+M;&L 5FQI<W0 7V9P7W-W:71C: !?;6EN:71F<%\ 7V9P7W-T871E7VUC-C@X
+M.#$ 7T9M;V1E %]&<W1A='5S %]F<%]S=&%T95]S=6YF<&$ 7V9P7W-T871E
+M7W-K>69F< !?9G!?<W1A=&5?<V]F='=A<F4 7W-I9W9E8P!?14U44W!E8VEA
+M; !?9G!R:6YT9@!?;6$Y,VY? %]-9&5F875L= !?14U44VEG;F%L;&5D %]?
+M:6]B %]R96%L;&]C %]S8G)K %]G971P86=E<VEZ90!?8F-O<'D 7U]U8F]U
+M;F0 7U]?;6%L;&EN9F\ 7U]R;V]T %]?;&)O=6YD %]I;V-T; !?7V9I;F1I
+M;W  7V=E=&1T86)L97-I>F4 7U]F7VUO<F5F:6QE<P!?9E]P<F5A;&QO8P!?
+M8V%L;&]C %]?<VEG9G5N8P!?<VEG<V5T;6%S:P!?7W-I9W1R86UP %]?<VEG
+M=F5C %]S:6=B;&]C:P!?96YD &-U<F)R:P!F<%]S879E &9P7W)E<W1O<F4 
+M7U]D;W!R;G0 7U]S:WE?9F0 7U]S:WEB87-E %]B>F5R;P!?8V9R964 7V%T
+M;VD 7W-T<G-P;@!?7V-T>7!E7P!?;65M8VAR %]M96US970 7W%F8V]N=F5R
+M= !?9F-O;G9E<G0 7W-T<F-H<@!?;&]C86QE8V]N=@!?7VUK87)G;'-T %]S
+M=')L96X 7U]F;W5R9&EG:71S<75I8VL 7W%G8V]N=F5R= !?9V-O;G9E<G0 
+M7W%E8V]N=F5R= !?96-O;G9E<G0 7U]G971A<F< 7U]F<&%B87-E %]I<W!U
+M;F-T %]I<V=R87!H %]I<V%S8VEI %]T;V%S8VEI %]?;6)?8W5R7VUA> !?
+M:7-X9&EG:70 7VES<W!A8V4 7VES86QN=6T 7VES=7!P97( 7VES8VYT<FP 
+M7VES<')I;G0 7VES86QP:&$ 7VES9&EG:70 7VES;&]W97( 7W)E860 7VQC
+M;VYV %]G971L;V-A;&5?8W1Y<&4 7U]L86YG:6YF;P!?;&]C86QD=&-O;G8 
+M7W-T<F-A= !?7VUY7W1I;64 7W-E=&QO8V%L90!?<W1R=&]K %]I;FET7W-T
+M871I8W, 7V=E=&QO8V%L95]N=6UE<FEC %]M96UC<'D 7U]L;V-A;&5S %]S
+M=')C;7  7V]P96X 7V]P96YL;V-A;&4 7W-T<F-P>0!?7V-O9&5?<V5T7VEN
+M9F\ 7U]C='EP95]U; !?9V5T96YV %]?9'1C;VYV %]S=')P8G)K %]F<%]D
+M:7)E8W1I;VX 7U]F<%]C=7)R96YT7V1I<F5C=&EO;@!?7V9P7V-U<G)E;G1?
+M97AC97!T:6]N<P!?7V9P7V-U<G)E;G1?<')E8VES:6]N %]D;W5B;&5?=&]?
+M9&5C:6UA; !?9V-V= !?7V=C=G0 7V)I;F%R>5]T;U]D96-I;6%L7VEN=&5G
+M97( 7U]R:6=H=%]S:&EF=%]B87-E7W1W;P!?9&5C:6UA;%]R;W5N9 !?7V)I
+M9U]F;&]A=%]T:6UE<U]P;W=E<@!?8FEN87)Y7W1O7V1E8VEM86Q?9G)A8W1I
+M;VX 7U]F<%]N;W)M86QI>F4 7W-P<FEN=&8 7U]F<F5E7V)I9U]F;&]A= !?
+M7W5N<&%C:V5D7W1O7V)I9U]F;&]A= !?7V)A<V5?8V]N=F5R<VEO;E]A8F]R
+M= !?7W5N<&%C:U]D;W5B;&4 7U]C;&%S<U]D;W5B;&4 7W%U861R=7!L95]T
+M;U]D96-I;6%L %]?=6YP86-K961?=&]?9&5C:6UA; !?7V)I9U]B:6YA<GE?
+M=&]?8FEG7V1E8VEM86P 7U]U;G!A8VM?<75A9')U<&QE %]?8VQA<W-?<75A
+M9')U<&QE %]?9G!?;&5F='-H:69T %]?9G!?<V5T7V5X8V5P=&EO;@!?7W5M
+M86, 7U]M=6QT:7!L>5]B87-E7W1W;U]V96-T;W( 7U]M=6QT:7!L>5]B87-E
+M7W1E;E]V96-T;W( 7U]C87)R>5]P<F]P86=A=&5?='=O %]?8V%R<GE?<')O
+M<&%G871E7W1E;@!?7V-A<G)Y7VEN7V(Q,# P, !?7W!R;V1C7V(Q,# P, !?
+M7VUU;'1I<&QY7V)A<V5?='=O %]?;&5F=%]S:&EF=%]B87-E7W1W;P!?7VUU
+M;'1I<&QY7V)A<V5?=&5N7V)Y7W1W;P!?7VUU;'1I<&QY7V)A<V5?=&5N %]?
+M;&5F=%]S:&EF=%]B87-E7W1E;@!?7W!R;V1?,3 P,#!?8C8U-3,V %]?<')O
+M9%]B-C4U,S8 7U]C87)R>5]O=71?8C$P,# P %]?<')O9%\V-34S-E]B,3 P
+M,#  7U]L<VAI9G1?8C$P,# P %]?<')O9%]B,3 P,#  7U]M=6Q?-C4U,S9S
+M:&]R= !?<')I;G1F %]?;&5A9&EN9U]Z97)O<U]B:6=?<&]W97)S7W1E;@!?
+M7VQE861I;F=?>F5R;W-?<VUA;&Q?<&]W97)S7W1E;@!?7VQE861I;F=?>F5R
+M;W-?=&EN>5]P;W=E<G-?=&5N %]?<W1A<G1?8FEG7W!O=V5R<U]T96X 7U]S
+M=&%R=%]S;6%L;%]P;W=E<G-?=&5N %]?<W1A<G1?=&EN>5]P;W=E<G-?=&5N
+M %]?8FEG7W!O=V5R<U]T96X 7U]S;6%L;%]P;W=E<G-?=&5N %]?=&EN>5]P
+M;W=E<G-?=&5N %]?;6%X7V)I9U]P;W=E<G-?=&5N %]?;6%X7W-M86QL7W!O
+M=V5R<U]T96X 7U]M87A?=&EN>5]P;W=E<G-?=&5N %]?8V]P>5]B:6=?9FQO
+M871?9&EG:71S %]A8F]R= !?7W-T87)T7V)I9U]P;W=E<G-?='=O %]?<W1A
+M<G1?<VUA;&Q?<&]W97)S7W1W;P!?7W-T87)T7W1I;GE?<&]W97)S7W1W;P!?
+M7V)I9U]P;W=E<G-?='=O %]?<VUA;&Q?<&]W97)S7W1W;P!?7W1I;GE?<&]W
+M97)S7W1W;P!?7VUA>%]B:6=?<&]W97)S7W1W;P!?7VUA>%]S;6%L;%]P;W=E
+M<G-?='=O %]?;6%X7W1I;GE?<&]W97)S7W1W;P!?<&5R<F]R %]K:6QL %]S
+M:6=N86P 7V=E='!I9 !?7W!E<G)O<@!?<WES7V5R<FQI<W0 7W=R:71E=@!?
+=<WES7VYE<G( 7V5T97AT %]E9&%T80!?7V5N9 !R
+end
diff --git a/gdb/testsuite/gdb.base/m68k-elf.u b/gdb/testsuite/gdb.base/m68k-elf.u
new file mode 100644 (file)
index 0000000..e3d05e7
--- /dev/null
@@ -0,0 +1,298 @@
+begin 777 m68k-elf
+M?T5,1@$" 0             "  0    !@  $>    #0  #"0       T "  
+M!0 H !4 $0    8    T@   -         "@    H     4          P  
+M -0              !,         !          !    -(   #0        )
+MC   "8P    %   @      $   G @  IP         "4   "6     <  "  
+M     @  ">2  "GD         '          !P     O=7-R+VQI8B]L:6)C
+M+G-O+C$      &$    ,                                        
+M  4          P              !P               0              
+M           +                    !                @          
+M                                                            
+M                                        "@                  
+M       (                                               )    
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M!@                         !         "02        "H  +!@     
+M$0#_\0    ^  "G$    !!$   H    8@  )P      1 /_Q    'P      
+M  !:$@       ":  "I4     !$ __$    M           2        ,H  
+M!-@    $$0  "    #\          !(       !)@  IR      1 /_Q    
+M7X  *>0     $0#_\0!?8VQE86YU< !?96YD %]E;G9I<F]N %]E=&5X= !A
+M=&5X:70 7V5D871A &5X:70 7VQI8E]V97)S:6]N %]?9G!S=&%R= !?1TQ/
+M0D%,7T]&1E-%5%]404),15\ 7T193D%-24, +W5S<B]L:6(O;&EB8RYS;RXQ
+M  "  "G4   %%0    "  "G8   !%0    "  "G<   )%0    "  "G@   '
+M%0    !.=4YQ+SL!<   );9.^P%Q   EL@    !.^P%Q   EJB\\     &#_
+M____W$[[ 7$  "6:+SP    ,8/_____(3OL!<0  )8HO/    !A@_____[1.
+M^P%Q   E>B\\    )&#_____H"\\@  )O$ZY@  $*%A/(#R   0\9_\    .
+M+P!.N8  !"A83Y_\    #"Z60>X !"](  1*F&;\(\B  "G$+T@ "$ZY@  $
+M$$ZY@  $4$ZY@  'K"Z 3KF   1D3G5.<0    !(#O____Q([P    3R-_  
+M 7     $< !@_P    3R-]   7     $3.\    $3EY.=4@._____$CO    
+M!/(W\  !<     1P &#_    !/(WT  !<     1,[P    1.7DYU2 [____\
+M2.\    $\C?P  %P    !'  8/\    $\C?0  %P    !$SO    !$Y>3G5(
+M#O____Q([P    3R-_   7     $< !@_P    3R-]   7     $3.\    $
+M3EY.=4@._____$CO    !/(W\  !<     1P &#_    !/(WT  !<     1,
+M[P    1.7DYU2 [____\2.\    $\C?P  %P    !'  8/\    $\C?0  %P
+M    !$SO    !$Y>3G5(#O____Q([P    3R-_   7     $< !@_P    3R
+M-]   7     $3.\    $3EY.=4@._____$CO    !/(W\  !<     1P &#_
+M    !/(WT  !<     1,[P    1.7DYU2 [____\2.\    $\C?P  %P    
+M!'  8/\    $\C?0  %P    !$SO    !$Y>3G5(#O____Q([P    3R-_  
+M 7     $< !@_P    3R-]   7     $3.\    $3EY.=4@._____$CO    
+M!/(W\  !<     1P &#_    !/(WT  !<     1,[P    1.7DYU2 [____\
+M2.\    $\C?P  %P    !'  8/\    $\C?0  %P    !$SO    !$Y>3G5(
+M#O____Q([P    3R-_   7     $\CQ4            8/\    $\C?0  %P
+M    !$SO    !$Y>3G5(#O____Q([P    3R-_   7     $\CQ4        
+M    8/\    $\C?0  %P    !$SO    !$Y>3G5(#O____Q([P    3R-_  
+M 7     $0CF  "MD$_P  8  *N 3_  "@  JI#/\  .  "K8,_P !(  *L@S
+M_  %@  J;"/\    !H  *G@C_     >  "I8(_P    (@  J7"/\    "8  
+M*M0C_     J  "ID(_P    +@  JY"/\0L@  (  *J@C_$!I  "  "IP(_P 
+M    @  J=!/Y@  K9(  *T 3^8  *N"  "J@$_F  "JD@  J8#/Y@  JV(  
+M*N@S^8  *LB  "JT,_F  "IL@  J["/Y@  J>(  *H0C^8  *EB  "KX(_F 
+M "I<@  JO"/Y@  JU(  *UPC^8  *F2  "JL(_F  "KD@  JS"/Y@  JJ(  
+M*TPC^8  *G"  "J0(_F  "IT@  JE"/\@  K9(  *O C_(  *N"  "M8(_R 
+M "JD@  J]"/\@  JV(  *U0C_(  *LB  "L((_R  "IL@  J:"/\@  J>(  
+M*K@C_(  *EB  "L (_R  "I<@  JQ"/\@  JU(  *MPC_(  *F2  "M((_R 
+M "KD@  J@"/\@  JJ(  *T0C_(  *G"  "L,(_P    "@  JC"/\     H  
+M*GPC_     &  "P (_P    !@  K:"/Y@  K!(  *W S^8  +!"  "P(\C?0
+M  %P    !$SO    !$Y>3G5.=4YQ          "  "GD          "   0P
+M@  $1(  !%B   1L     0   &@    ,@  $$     V   F\    !(   .@ 
+M   %@  #9     :   *D    "@   'L    +    $    !4          X  
+M*<@    "    ,    !0    '    %X   ^                          
+M                 0          ! #_\0    "   #4      ,   $     
+M@   Z      #   "     (   J0      P   P    "   -D      ,   0 
+M    @  #X      #   %     (  !!       P  !@    "   04      , 
+M  <     @  $>      #   (     (  ";P      P  "0    "  "G     
+M  ,   H     @  IR      #   +     (  *>0      P  #     "  "I8
+M      ,   T                #   .                 P  #P      
+M          ,  !                 #   1                 P  $@  
+M              ,  !,                #   4    "@          ! #_
+M\0   !$           0 __$    8           $ /_Q    )           
+M! #_\0   "P           0 __$    V           $ /_Q    /8  !-P 
+M   R$@  "    $F  "I8    !!$   T   !6@  J7     01   -    98  
+M";P     $@  "0   &N  "I@     A$   T   "!@  'K    A 2   (    
+MAH  *F0    $$0  #0   )2  "IH    !!$   T   "M@  $/    "02    
+M    MH  +!@     $0#_\0   +N  "IL     A$   T   #,@  %U@   #(2
+M   (    XH  *G     ($0  #0   .N  "IX    !!$   T   #Q@  $>   
+M   2   (    ^(  *GP    $$0  #0   0.  "G$    !!$   H   $,@  J
+M@     01   -   !)(  *H0    ($0  #0   3"  "J,    !!$   T   $X
+M@  %#@   #(2   (   !2X  *I     0$0  #0   5J   G      !$ __$ 
+M  %A@  JH     (1   -   !=8  *J0    !$0  #0   86  "JH    !!$ 
+M  T   &-@  JK     @1   -   !H8  !"@   !:$@       :B  "G$    
+M!"$   H   &P@  &G@   #(2   (   !O(  !P(    R$@  "    =&  "JT
+M    !!$   T   'F@  JN     01   -   !](  *E0     $0#_\0   ?N 
+M  5R    ,A(   @   ((@  JO     @1   -   "'8  *L0    $$0  #0  
+M C2   8(    ,A(   @   (_@  JR     (1   -   "3H  !S0    \$@  
+M"    EN   1D     !(       )@@  JS     @1   -   "=H  *M0    $
+M$0  #0   GV  "K8     A$   T   *%@  JW     01   -   "E(  *N  
+M   !$0  #0   J*  "KD    !!$   T   *R@  JZ     01   -   "P(  
+M*NP    $$0  #0   M>   38    !!$   @   +D@  $U      2   (   "
+M[(  *O     $$0  #0   ON  "KT    !!$   T   ,3@  J^     @1   -
+M   #)H  !%      $@       S"  "L     !!$   T   -%@  K!     01
+M   -   #3(  *<@     $0#_\0   V*  "L(    !!$   T   -Y@  K#   
+M  01   -   #BH  *<     $$0  "@   YR  "L0    &!$   T   .F@  K
+M*    !@1   -   #L(  *T     "$0  #0   [V  "M$    !!$   T   /-
+M@  K2     01   -   #XX  !W     \$@  "    _&   8Z    ,A(   @ 
+M  0#@  IY      1 /_Q   $#(  *TP    ($0  #0  !!J  "M4    !!$ 
+M  T   0J@  &T    #(2   (   $/8  *U@    $$0  #0  !%.  "M<    
+M"!$   T   1@@  $$      2   &   $9H  *V0    !$0  #0  !&V  "MH
+M    !!$   T   1U@  %0    #(2   (   $BH  *W    "0$0  #0  !)& 
+M  6D    ,A(   @   2E@  L      01   -   $KX  + @    ($0  #0  
+M!+B   9L    ,A(   @   3,@  L$     @1   - &TV.&LN96QF &-R=#$N
+M<P!C<G1I+G, =F%L=65S+5AT+F, 9V1B;64N8P!S:%]D871A+F, 8W)T;BYS
+M '9?8VAA<E]F=6YC '9?<VEG;F5D7VEN= !V7W5N<VEG;F5D7VEN= !?9FEN
+M:0!V7W5N<VEG;F5D7V-H87)?87)R87D ;6%I;@!V7W-I9VYE9%]L;VYG '9?
+M=6YS:6=N961?<VAO<G1?<&]I;G1E<@!?8VQE86YU< !?96YD '9?=6YS:6=N
+M961?<VAO<G0 =E]U;G-I9VYE9%]S:&]R=%]F=6YC '9?9&]U8FQE '9?:6YT
+M %]S=&%R= !N;VYP<FEM87)Y %]E;G9I<F]N '9?=6YS:6=N961?;&]N9U]P
+M;VEN=&5R '9?:6YT7V%R<F%Y '!R:6UA<GD =E]S:6=N961?8VAA<E]F=6YC
+M '9?9&]U8FQE7V%R<F%Y %]E=&5X= !V7W-I9VYE9%]C:&%R7V%R<F%Y '9?
+M=6YS:6=N961?8VAA<@!V7V9L;V%T '9?<VEG;F5D7VQO;F=?87)R87D 871E
+M>&ET &5N=FER;VX =E]L;VYG7V9U;F, =E]U;G-I9VYE9%]L;VYG7V9U;F, 
+M=E]S:6=N961?<VAO<G1?87)R87D =E]I;G1?<&]I;G1E<@!?961A=&$ =E]S
+M:&]R=%]F=6YC '9?=6YS:6=N961?:6YT7V%R<F%Y '9?=6YS:6=N961?:6YT
+M7W!O:6YT97( =E]I;G1?9G5N8P!V7W-I9VYE9%]S:&]R= !V7V9L;V%T7V9U
+M;F, 97AI= !V7W5N<VEG;F5D7VQO;F=?87)R87D =E]L;VYG '9?<VAO<G0 
+M=E]L;VYG7W!O:6YT97( =E]S:6=N961?8VAA<@!V7W5N<VEG;F5D7VQO;F< 
+M=E]S:&]R=%]A<G)A>0!V7W5N<VEG;F5D7W-H;W)T7V%R<F%Y %]L:6)?=F5R
+M<VEO;@!?;6-O=6YT '9?8VAA<E]P;VEN=&5R '9?=6YS:6=N961?8VAA<E]P
+M;VEN=&5R '9?<VEG;F5D7VEN=%]A<G)A>0!?7V9P<W1A<G0 =E]S:6=N961?
+M:6YT7W!O:6YT97( <U]L:6YK %]'3$]"04Q?3T9&4T547U1!0DQ%7P!V7W-I
+M9VYE9%]S:&]R=%]P;VEN=&5R '9?9&]U8FQE7W!O:6YT97( 7U]L;VYG9&]U
+M8FQE7W5S960 =E]S=')U8W0Q '9?<W1R=6-T,@!V7V-H87)?87)R87D =E]F
+M;&]A=%]P;VEN=&5R '9?<VEG;F5D7VQO;F=?<&]I;G1E<@!V7V1O=6)L95]F
+M=6YC '9?<VEG;F5D7VEN=%]F=6YC %]$64Y!34E# '9?9FQO871?87)R87D 
+M=E]S:&]R=%]P;VEN=&5R '9?<VEG;F5D7VQO;F=?9G5N8P!V7W-I9VYE9%]C
+M:&%R7W!O:6YT97( =E]L;VYG7V%R<F%Y %]I;FET '9?8VAA<@!C;'5N:V5R
+M '9?=6YS:6=N961?8VAA<E]F=6YC '5?;&EN:P!V7W-I9VYE9%]S:&]R=%]F
+M=6YC '-P;W)T<V-A<@!V7W5N:6]N,@!V7W5N<VEG;F5D7VEN=%]F=6YC '9?
+M=6YI;VX  "YI;G1E<G  +FAA<V@ +F1Y;G-Y;0 N9'EN<W1R "YR96QA+G!L
+M=  N:6YI=  N<&QT "YT97AT "YF:6YI "YD871A "YG;W0 +F1Y;F%M:6, 
+M+F)S<P N<WEM=&%B "YS=')T86( +G!E<V5L "YS:'-T<G1A8@ N8V]M;65N
+M=  N9&5B=6< +FQI;F4 0"@C*6QI8F,M;3,R.FTT+F1E9@DQ+C0 0"@C*6QI
+M8F,M;3,R.F-S=2]C<G0Q+G,),2XQ.     ! *",I;&EB8RUM,S(Z;30N9&5F
+M"3$N- ! *",I;&EB8RUM,S(Z8W-U+V-R=&DN<PDQ+C, 87,Z("A#1%,I(#4N
+M," Q+S(O.3      0"@C*6QI8F,M;3,R.FTT+F1E9@DQ+C0 0"@C*6QI8F,M
+M;3,R.F-S=2]C<G1N+G,),2XV "!L9" Z("A#1%,I(#4N," Q+S(O.3      
+M "X $0 2   6<  X9V1B;64N8P !-@    $!$8  !-P!(8  ";P!!@      
+M   = !, $@   4X .'1?<W1R=6-T  "V    &    "H #0 2    =0 X=E]C
+M:&%R7VUE;6)E<@  50 ! ", !@0     !P   "L #0 2    H  X=E]S:&]R
+M=%]M96UB97(  %4 !  C  8$     @<    I  T $@   ,D .'9?:6YT7VUE
+M;6)E<@  50 ' ", !@0    $!P   "H #0 2    \P X=E]L;VYG7VUE;6)E
+M<@  50 * ", !@0    (!P   "L #0 2   !'@ X=E]F;&]A=%]M96UB97( 
+M %4 #@ C  8$    # <    L  T $@   4H .'9?9&]U8FQE7VUE;6)E<@  
+M50 / ", !@0    0!P    0    ; !, $@   FP .'XP9F%K90  M@   !@ 
+M   J  T $@   9, .'9?8VAA<E]M96UB97(  %4  0 C  8$      <    K
+M  T $@   ;X .'9?<VAO<G1?;65M8F5R  !5  0 (P &!     ('    *0 -
+M !(   'G #AV7VEN=%]M96UB97(  %4 !P C  8$    ! <    J  T $@  
+M A$ .'9?;&]N9U]M96UB97(  %4 "@ C  8$    " <    K  T $@   CP 
+M.'9?9FQO871?;65M8F5R  !5  X (P &!     P'    +  - !(   )H #AV
+M7V1O=6)L95]M96UB97(  %4 #P C  8$    $ <    $    '  7 !(   .+
+M #AT7W5N:6]N  "V    "    "H #0 2   "L@ X=E]C:&%R7VUE;6)E<@  
+M50 ! ", !@0     !P   "L #0 2   "W0 X=E]S:&]R=%]M96UB97(  %4 
+M!  C  8$      <    I  T $@   P8 .'9?:6YT7VUE;6)E<@  50 ' ", 
+M!@0     !P   "H #0 2   #,  X=E]L;VYG7VUE;6)E<@  50 * ", !@0 
+M    !P   "L #0 2   #6P X=E]F;&]A=%]M96UB97(  %4 #@ C  8$    
+M  <    L  T $@   X< .'9?9&]U8FQE7VUE;6)E<@  50 / ", !@0     
+M!P    0    ; !< $@  !*D .'XQ9F%K90  M@    @    J  T $@   ]  
+M.'9?8VAA<E]M96UB97(  %4  0 C  8$      <    K  T $@   _L .'9?
+M<VAO<G1?;65M8F5R  !5  0 (P &!      '    *0 - !(   0D #AV7VEN
+M=%]M96UB97(  %4 !P C  8$      <    J  T $@  !$X .'9?;&]N9U]M
+M96UB97(  %4 "@ C  8$      <    K  T $@  !'D .'9?9FQO871?;65M
+M8F5R  !5  X (P &!      '    +  - !(   2E #AV7V1O=6)L95]M96UB
+M97(  %4 #P C  8$      <    $    *@ & !(   37 #AV7V-H87)?9G5N
+M8P  50 ! 1&   3< 2&   4.    !    #$ !@ 2   %#  X=E]S:6=N961?
+M8VAA<E]F=6YC  !5  (!$8  !0X!(8  !4     $    ,P & !(   5# #AV
+M7W5N<VEG;F5D7V-H87)?9G5N8P  50 # 1&   5  2&   5R    !    "L 
+M!@ 2   %<@ X=E]S:&]R=%]F=6YC  !5  0!$8  !7(!(8  !:0    $    
+M,@ & !(   6H #AV7W-I9VYE9%]S:&]R=%]F=6YC  !5  4!$8  !:0!(8  
+M!=8    $    -  & !(   7@ #AV7W5N<VEG;F5D7W-H;W)T7V9U;F,  %4 
+M!@$1@  %U@$A@  &"     0    I  8 $@  !@T .'9?:6YT7V9U;F,  %4 
+M!P$1@  &" $A@  &.@    0    P  8 $@  !D$ .'9?<VEG;F5D7VEN=%]F
+M=6YC  !5  @!$8  !CH!(8  !FP    $    ,@ & !(   9W #AV7W5N<VEG
+M;F5D7VEN=%]F=6YC  !5  D!$8  !FP!(8  !IX    $    *@ & !(   :E
+M #AV7VQO;F=?9G5N8P  50 * 1&   :> 2&   ;0    !    #$ !@ 2   &
+MV@ X=E]S:6=N961?;&]N9U]F=6YC  !5  L!$8  !M !(8  !P(    $    
+M,P & !(   <1 #AV7W5N<VEG;F5D7VQO;F=?9G5N8P  50 , 1&   <" 2& 
+M  <T    !    "L !@ 2   '0  X=E]F;&]A=%]F=6YC  !5  X!$8  !S0!
+M(8  !W     $    +  & !(   =P #AV7V1O=6)L95]F=6YC  !5  \!$8  
+M!W !(8  !ZP    $    %0 5 !(   >N (, !0$   ?J    %0 % !(   >:
+M (, !0$   ?J    $  % !(   >J %4 !P    0    \  $ $@  !^H E0  
+M *, *   "              (          $   @          @@ <@   "X 
+M   9 !, $@  "'L .&QI;FL  +8   "8    )@ - !(   @I #AN97AT  "#
+M  4!   'Z@ C  8$      <    J  T $@  "%, .&QI;FMF=6YC  "#  4!
+M   '<  C  8$    ! <    D  T $@  "'< .'-T=69F  !R   'K@ C  8$
+M    " <    $    %0 5 !(   BY (, !0$   ?J    %0 % !(   BE (, 
+M!0$   ?J    $  % !(   BU %4 !P    0    \  $ $@  "/4 E0   *, 
+M*   "              (          $   @          @@ <@   "X    <
+M !< $@  "8D .'1U7VQI;FL  +8   "0    )@ - !(   DW #AN97AT  "#
+M  4!   'Z@ C  8$      <    J  T $@  "6$ .&QI;FMF=6YC  "#  4!
+M   (>P C  8$      <    D  T $@  "84 .'-T=69F  !R   (N0 C  8$
+M      <    $    .@ $ !(   G' #A^,F9A:V4  +8    $ /, &P    )B
+M;'5E      %G<F5E;@      <F5D      0    ^  0 $@  "@D .&-O;&]R
+M<P  M@    0 \P ?     G!I;FL      7!U<G!L90      >65L;&]W    
+M  0    R  0 $@  "C\ .'XS9F%K90  M@    0 \P 3     69O<F0     
+M &-H979Y      0    Q  0 $@  "G0 .&-A<G,  +8    $ /, %     %P
+M;W)S8VAE      !B;7<     !    #( !  2   *J@ X?C1F86ME  "V    
+M! #S !,    !5%)510      1D%,4T4     !    !P %@ 2   *Q@ X8F]O
+M;&5A;@  <@  "G0    Q  0 $@  "OL .&)V86QS  "V    ! #S !,    !
+M=')U90      9F%L<V4     !    !T %@ 2   +&  X8F]O;&5A;C(  '( 
+M  K&    1@ $ !(   MB #AM:7-O<F1E<F5D  "V    ! #S ",    #=&AR
+M964      'IE<F\      6]N90     "='=O      0    C  8 $@  "XD 
+M.&UA:6X  %4 !P$1@  'K $A@  )O     0    G  < $@  "[  .'-P;W)T
+M<V-A<@  <@  "C\ (P % X  +      E  < $@  "]4 .&-L=6YK97(  '( 
+M  H) ", !0.  "MH    *  ' !(   O] #AN;VYP<FEM87)Y  !R   )QP C
+M  4#@  J?    "4 !P 2   ,(@ X<')I;6%R>0  <@  "8D (P % X  *HP 
+M   D  < $@  #$8 .'5?;&EN:P  <@  "/4 (P % X  *W     G  < $@  
+M#&T .'-?;&EN:P  @P % 0  !^H (P % X  *P0    F  < $@  #), .'9?
+M=6YI;VXR  !R   #BP C  4#@  L"    "4 !P 2   ,N  X=E]U;FEO;@  
+M<@   FP (P % X  +!     G  < $@  #-\ .'9?<W1R=6-T,@  <@   4X 
+M(P % X  *R@    G  < $@  #08 .'9?<W1R=6-T,0  <@   "X (P % X  
+M*Q     O  < $@  #34 .'9?9&]U8FQE7W!O:6YT97(  &,  P$ #P C  4#
+M@  K#    "X !P 2   -8P X=E]F;&]A=%]P;VEN=&5R  !C  ,!  X (P %
+M X  *T0    V  < $@  #9D .'9?=6YS:6=N961?;&]N9U]P;VEN=&5R  !C
+M  ,!  P (P % X  *H     T  < $@  #<T .'9?<VEG;F5D7VQO;F=?<&]I
+M;G1E<@  8P # 0 + ", !0.  "M(    +0 ' !(   WZ #AV7VQO;F=?<&]I
+M;G1E<@  8P # 0 * ", !0.  "K<    -0 ' !(   XO #AV7W5N<VEG;F5D
+M7VEN=%]P;VEN=&5R  !C  ,!  D (P % X  *L0    S  < $@  #F( .'9?
+M<VEG;F5D7VEN=%]P;VEN=&5R  !C  ,!  @ (P % X  *P     L  < $@  
+M#HX .'9?:6YT7W!O:6YT97(  &,  P$ !P C  4#@  JN    #< !P 2   .
+MQ0 X=E]U;G-I9VYE9%]S:&]R=%]P;VEN=&5R  !C  ,!  8 (P % X  *F@ 
+M   U  < $@  #OH .'9?<VEG;F5D7W-H;W)T7W!O:6YT97(  &,  P$ !0 C
+M  4#@  K"    "X !P 2   /*  X=E]S:&]R=%]P;VEN=&5R  !C  ,!  0 
+M(P % X  *U0    V  < $@  #UX .'9?=6YS:6=N961?8VAA<E]P;VEN=&5R
+M  !C  ,!  , (P % X  *O0    T  < $@  #Y( .'9?<VEG;F5D7V-H87)?
+M<&]I;G1E<@  8P # 0 " ", !0.  "M8    +0 ' !(   ^_ #AV7V-H87)?
+M<&]I;G1E<@  8P # 0 ! ", !0.  "KP    )  ! !(   _C )4   "C !  
+M  @          0@ 50 /    +  ' !(  ! / #AV7V1O=6)L95]A<G)A>0  
+M<@  #[\ (P % X  *I     D  $ $@  $#, E0   *, $   "          !
+M" !5  X    K  < $@  $%X .'9?9FQO871?87)R87D  '(  ! / ", !0. 
+M "M,    )  ! !(  !"" )4   "C !    @          0@ 50 ,    ,P '
+M !(  !"U #AV7W5N<VEG;F5D7VQO;F=?87)R87D  '(  !!> ", !0.  "K,
+M    )  ! !(  !#9 )4   "C !    @          0@ 50 +    ,0 ' !( 
+M !$* #AV7W-I9VYE9%]L;VYG7V%R<F%Y  !R   0M0 C  4#@  JK    "0 
+M 0 2   1+@"5    HP 0   (          $( %4 "@   "H !P 2   16  X
+M=E]L;VYG7V%R<F%Y  !R   1"@ C  4#@  K7    "0  0 2   1? "5    
+MHP 0   (          $( %4 "0   #( !P 2   1K@ X=E]U;G-I9VYE9%]I
+M;G1?87)R87D  '(  !%8 ", !0.  "J\    )  ! !(  !'2 )4   "C !  
+M  @          0@ 50 (    ,  ' !(  !(" #AV7W-I9VYE9%]I;G1?87)R
+M87D  '(  !&N ", !0.  "KX    )  ! !(  !(F )4   "C !    @     
+M     0@ 50 '    *0 ' !(  !)/ #AV7VEN=%]A<G)A>0  <@  $@( (P %
+M X  *H0    D  $ $@  $G, E0   *, $   "          !" !5  8    T
+M  < $@  $J< .'9?=6YS:6=N961?<VAO<G1?87)R87D  '(  !)/ ", !0. 
+M "KL    )  ! !(  !++ )4   "C !    @          0@ 50 %    ,@ '
+M !(  !+] #AV7W-I9VYE9%]S:&]R=%]A<G)A>0  <@  $J< (P % X  *K0 
+M   D  $ $@  $R$ E0   *, $   "          !" !5  0    K  < $@  
+M$TP .'9?<VAO<G1?87)R87D  '(  !+] ", !0.  "KH    )  ! !(  !-P
+M )4   "C !    @          0@ 50 #    ,P ' !(  !.C #AV7W5N<VEG
+M;F5D7V-H87)?87)R87D  '(  !-, ", !0.  "I@    )  ! !(  !/' )4 
+M  "C !    @          0@ 50 "    ,0 ' !(  !/X #AV7W-I9VYE9%]C
+M:&%R7V%R<F%Y  !R   3HP C  4#@  JH    "0  0 2   4' "5    HP 0
+M   (          $( %4  0   "H !P 2   41@ X=E]C:&%R7V%R<F%Y  !R
+M   3^  C  4#@  K0    "0 !P 2   4:@ X=E]D;W5B;&4  %4 #P C  4#
+M@  J<    ", !P 2   4C0 X=E]F;&]A=   50 . ", !0.  "JH    *P '
+M !(  !2X #AV7W5N<VEG;F5D7VQO;F<  %4 #  C  4#@  JY    "D !P 2
+M   4X0 X=E]S:6=N961?;&]N9P  50 + ", !0.  "ID    (@ ' !(  !4#
+M #AV7VQO;F<  %4 "@ C  4#@  JU    "H !P 2   5+0 X=E]U;G-I9VYE
+M9%]I;G0  %4 "0 C  4#@  J7    "@ !P 2   550 X=E]S:6=N961?:6YT
+M  !5  @ (P % X  *E@    A  < $@  %78 .'9?:6YT  !5  < (P % X  
+M*G@    L  < $@  %:( .'9?=6YS:6=N961?<VAO<G0  %4 !@ C  4#@  J
+M;    "H !P 2   5S  X=E]S:6=N961?<VAO<G0  %4 !0 C  4#@  JR   
+M ", !P 2   5[P X=E]S:&]R=   50 $ ", !0.  "K8    *P ' !(  !8:
+M #AV7W5N<VEG;F5D7V-H87(  %4  P C  4#@  JI    "D !P 2   60P X
+M=E]S:6=N961?8VAA<@  50 " ", !0.  "K@    (@ ' !(  !9E #AV7V-H
+M87(  %4  0 C  4#@  K9     0    '       "DH  !-P   !Y__\     
+M    >O__    ,@   'O__P   &0   !]__\   "6    ?O__    R    '__
+M_P   /H   "!__\   $L    @O__   !7@   (/__P   9    "%__\   '"
+M    AO__   !]    (?__P   B8   ")__\   )8    BO__   "E    ++_
+M_P   M    "U__\   +F    MO__   "[    +?__P   O0   "Y__\   +\
+M    NO__   #!    +O__P   PP   "]__\   ,4    OO__   #'@   +__
+M_P   R@   #!__\   ,R    PO__   #/    ,/__P   T8   #%__\   -0
+M    QO__   #6@   ,G__P   VX   #*__\   -X    R___   #@@   ,W_
+M_P   XP   #.__\   .6    S___   #H    -'__P   ZH   #2__\   .T
+M    T___   #O@   -7__P   \@   #6__\   /2    U___   #W    -G_
+M_P   ^8   #:__\   /P    W/__   $!    -W__P  ! X   #>__\   08
+M    X/__   $(@   .'__P  !"P   #B__\   0V    Y/__   $0    .7_
+M_P  !$H   #F__\   14    Z/__   $7@   .G__P  !&@   #J__\   1R
+M    [/__   $?    .W__P  !(8   #O__\   20    \/__   $F@   /'_
+M_P  !*0   #R__\   2N    ]/__   $N    /;__P  !,(   #W__\   3,
+M     /__   $X                                               
+M              $    !     H   -0   #4    $P               0  
+M       )    !0    *   #H    Z    ;P    #          0    $    
+M#P    L    "@  "I    J0   #     !     $    $    $    !<    #
+M     H   V0   -D    >P               0         ?    !     * 
+M  /@   #X    #     #    !P    0    ,    *0    $    &@  $$   
+M!!     $               $         "\    !    !H  !!0   04    
+M9               !    !0    T     0    :   1X   $>   !40     
+M          0         .@    $    &@  )O   ";P    $            
+M   $         $     !     X  *<    G     "               !   
+M      !&     0    .  "G(   )R    !P               0    $    
+M2P    8    #@  IY   ">0   !P    !          $    "    %0    (
+M     X  *E@   I8   !P               "         !9     @      
+M       *6   !P     /    '     0    0    80    ,             
+M$5@   34               !         &D    #             !8L    
+M                !         !P     P             6+    )      
+M          $         >@    $             %KP   #/            
+M   $         (,    !             !>,   6<               !   
+J      "*     0             M_    I0               0     
+end
diff --git a/gdb/testsuite/gdb.base/mips-ecoff.u b/gdb/testsuite/gdb.base/mips-ecoff.u
new file mode 100644 (file)
index 0000000..69f656a
--- /dev/null
@@ -0,0 +1,671 @@
+begin 777 mips-ecoff
+M 6  "2G<_%0  #      8  X  <!"P(*   @    $    )=  $ !P !    0
+M    $  0 //___X        -T           $ "*@"YT97AT     $ !P ! 
+M <   !E0   !P                    " N:6YI=     ! &Q  0!L0    
+M(   &Q                "     +F1A=&$    0    $       "I   "  
+M                    0"YL:70X    $  *D!  "I     0   JD       
+M          @    N;&ET-    !  "J 0  J@    $   *J              
+M   0    +G-D871A   0  JP$  *L    &   "JP        ,          "
+M "YS8G-S    $  +$!  "Q    %              #          !  N8G-S
+M     !  #% 0  Q0  ":\                         " <G-R8P      
+M                                     "                   (^D
+M   \'! !)Z4 !"><BH DI@ $  00@*^%@90 PC A)[W_Z*^&@#"OH  4  #P
+M(0P0!L>OA(&0#! !9      ,$ %H   @(8^$@9"/A8&4CX: , P0 .L     
+M#! !I ! ("$    - ^  "      GO0 ( ^  "  @^"$#X  (            
+M          /@  @  ! A ^  "      #X  (      /@  @  ! A ^  "   
+M   #X  (      /@  @  ! A ^  "      #X  (      /@  @  ! A ^  
+M"      #X  (      /@  @  ! A ^  "      #X  (      /@  @  ! A
+M ^  "      #X  (      /@  @  ! A ^  "      #X  (      /@  @ 
+M ! A ^  "      #X  (      /@  @  ! A ^  "      #X  (      /@
+M  @  ! A ^  "      #X  (      /@  @  ! A ^  "      #X  (    
+M  /@  @  ! A ^  "      #X  (     $2    #X  (      /@  @     
+M ^  "     !$@   1( (  /@  @      ^  "      #X  (     *. @) D
+M#@ !HXZ D20/  *CCX"2)!@  Z>8@)0D&0 $IYF EB0(  6GB("8) D !J^)
+M@)PD"@ 'KXJ H"0+  BOBX"D) P ":^,@*@D#0 *KXV K"0.  NOCH"PQX2 
+M(     #GA("TQX> $,>&@!3GAX"XYX: O)./@)      HX^ P).8@)$     
+MHYB PI.9@)(     HYF Q(>(@)0     IXB R(>)@)8     IXF S)>*@)@ 
+M    IXJ T(^+@)P     KXN V(^,@*      KXR X(^-@*0     KXV Z(^.
+M@*@     KXZ \(^/@*P     KX^ ^(^8@+      KYB! ,>(@+0     YXB!
+M",>+@+C'BH"\/ $0 .0K8_#D*F/T)YF D*^9@1 GB("1KXB!%">)@)*OB8$8
+M)XJ E*^*@1PGBX"6KXN!(">,@)BOC($D)XV G*^-@2@GCH"@KXZ!+">/@*2O
+MCX$P)YB J*^8@30GF8"LKYF!.">(@+"OB($\)XF M*^)@4 GBH"XKXJ!1"0+
+M  *OBX%<) P  J^,@6 D#0 !KXV!:"0.  &OCH%DCX^!6#P!$ "L+V,PAYB!
+M2     "GF(%0 ^  "   $"$#X  (           #X  (                
+M)[W]4 " &"$D#O__K[\ '!1@ !&OK@ D/ 00  P0 ;0DA ($$$  !0! &"&0
+M3P       !7@  @     DYB 0      3   #     !   ",  ! A)X. 1#P%
+M$ "C@(! )*4"$">D C ,$ 'TKZ,"L(^C K GI (^#! !] !@*"$GI (P#! "
+M(   *"$$0  1 $ @(2>E "PD!@("#! "**^D "@D 0("%$$ "(^D "@\!!  
+M)(0  ">E "P,$ (P) 8" J^@ "2/I  H#! "]     "/H@ D     (^_ !PG
+MO0*P ^  "           )[W_X*^_ !P,$ ,.KZ0 ( P0 R@     CZ0 ( P0
+M!4P     C[\ '">] " #X  (                     ">]_^"/@H PK[$ 
+M&*^P !0 @(@AK[\ '!1   , 0( A$   %0  $"&/CH P     (W/        
+M$>  #P  $"&.!0        (@("$,$ '7)A  !!!   , 0!@A$   !@!@$"&.
+M!0       !2@__<"(" A   0(8^_ !R/L  4C[$ & /@  @GO0 @D*(  )"#
+M   DI0 !$$, !"0& #T0   ,) 8 /20& #T 8! A%$8  R2$  $#X  ( * 0
+M(9"B  "0@P  )*4  1!#__@ 8! A%&  "   $"&0KO__     !3.  0  ! A
+M ^  " "@$"$  ! A ^  "       @! A@*@  #2-  ,1   D :1P(H"I  $ 
+MKG@@$2  'P    " J@ "     !%  !J(K   @*L  YBL  ,18  4J(P  "&D
+M__V!Z  !(>\ !!$  !,@A  $@>G__@     1(  .     ('J__\     $4  
+M"8GL__V!ZP  F>P  !5@__&LC    ^  "      #X  (N(P  Z"*  *@B0 !
+M ^  "*"(             "0" ^T    ,$.   P     ($ 50      /@  @ 
+M    ) (#ZP    P0X  #      @0!5       ^  "      0P  : ( X(1"D
+M !@ A0@J%"  ""C! !  IA @ (((*A @  0HP0 0$   6RC! ! HP0 0%"  
+M!0     PH@ #,(,  Q!#  L     $,  !P      IA@A@*(  "2E  $DA  !
+M%*/__*""__\#X  ( . 0(1!  !@D 0 !$$$ #R0!  (000 '     ("B   D
+MI0 !)(0  23&__\0   .H(+__X2B   DI0 ")(0  B3&__X0   (I(+__H"B
+M  "$HP !H((  "2E  ,DA  #),;__:2#__XHP0 @%"  %BC! !",H@  C*, 
+M!(RH  B,J0 ,C*H $(RK !2,K  8C*T '*R"  "L@P $K(@ "*R)  RLB@ 0
+MK(L %*R, !@DI0 @)(0 ("3&_^ 0 /_JK(W__"C! ! 4(  .*,$ !(RB  ",
+MHP $C*@ "(RI  RL@@  K(, !*R(  @DI0 0)(0 $"3&__ 0 /_RK(G__"C!
+M  04(/^U     (RB   DI0 $)(0 !"3&__P0 /_XK(+__"C! !  IB@@%"  
+M!0"&(" PH@ #,(,  Q!#  T     $,#_K0     DI?__)(3__P"F&". H@  
+M)*7__R2$__\4H__\H((  0/@  @ X! A$$  &"0!  ,000 /) $  A!!  < 
+M    @*+__R2E__\DA/__),;__Q    Z@@@  A*+__B2E__XDA/_^),;__A  
+M  BD@@  @*+__X2C__V@@O__)*7__22$__TDQO_]I(,  "C! " 4(  6*,$ 
+M$(RB__R,H__XC*C_](RI__",JO_LC*O_Z(RL_^2,K?_@K(+__*R#__BLB/_T
+MK(G_\*R*_^RLB__HK(S_Y"2E_^ DA/_@),;_X!  _^JLC0  *,$ $!0@  XH
+MP0 $C*+__(RC__B,J/_TC*G_\*R"__RL@__XK(C_]"2E__ DA/_P),;_\!  
+M__*LB0  *,$ !!0@_[,     C*+__"2E__PDA/_\),;__!  __BL@@      
+M            ) (#[@    P0X  #      @0!5       ^  "   $"$0@  /
+M) (  8^#@&      *&$ (! @  HD @ !  -P@#P!$   +@@A)&,  :PD B"O
+M@X!@ ^  "   $"$D @ ! ^  "     "/@X!@)[W_X*^_ !ROL0 8K[  %!A@
+M  \D8O__/ \0 "7O B   G" /!$0 "8Q B !SX ACA@        # /@)    
+M "80__P"$0@K$"#_^0    "/OP <C[  %(^Q !@#X  ()[T ((^.@' GO?_@
+M/ \0 *^P !@E[P0U/! 0  '/""NOOP <%"  $280!#0\&!  CQ@+       3
+M   %      P0 W8" " A$    P     ,$ -& @ @(8^9@' F$  0 AD(*Q0@
+M__$     C[\ '(^P !@#X  ()[T (">]_]BOL  8 (" (:^_ !P6   #) /_
+M_Q   "4D O__D@( #      P3@"#$<  %#!8  @P3P &) $  A7A  8  !@A
+M#! #=@( ("$0   " $ 8(0  &"&2!  -#! "]*^C "2/HP D!$$  @     D
+M ___D@( #      P6  ($P  !@    ".!  (#! &&J^C "2/HP DK@  "(X9
+M  BB   ,K@    !@$"&N&0 $C[\ '(^P !@#X  ()[T *">]_^"OL  8 (" 
+M(18  !.OOP <CXZ <#P/$  E[P0U/! 0  '/""L4(  *)A $-!(   ,     
+M#! #=@( ("&/F(!P)A  $ (8""L4(/_X     !   #@  ! AD@, #      P
+M8@ "%$  ##!H  2.!0  D@0 #20&  $,$ 9P  4H(XX9  BN       0(1  
+M "FN&0 $,&@ !!4  " P;0 @$$  'C!M "". @ (     !!  !HP;0 @C@D 
+M!       20@K$"  %3!M " ,$ 14 @ @(9(#  P     ,&H !!5   XP;0 @
+M,&L  A%@  LP;0 @C@( "      00  ',&T ((X,  0      $P(*Q0@_^X 
+M    ,&T (!&@  0  !@A$    B0#__\  !@A & 0(8^_ !R/L  8 ^  "">]
+M " GO?^PK[  '*^_ "ROLP H *" (:^R "2OL0 @KZ0 4)(#  PD$0!")!( 
+M!B03  (P;@!2%BX )3!L !:2#P -/!D0   /P( #.,@ACSD"H(X"  0     
+M %D(*Q @ $\     CZ@ 4"0!  J@2   C@D !      E*@ !K@H !).K %, 
+M    $6$ !     "/H@!0$   8(^_ "P,$ 14 @ @(20!__\400 $CZ, 4!  
+M  ,D ___CZ, 4      0  !4 & 0(3!L !863  4,'@ $H^M % GI0!,HZT 
+M3)($  VN    #! &>"0&  $D 0 !%$$ !     "/H@!0$   18^_ "R2#@ ,
+M) +__S7/ " 0   _H@\ ##!X !(6>  0     (X"  @     $$  #     ".
+M&0 $     !19  P     C@@        5   (     #!I $05(  &   8(0P0
+M!)H" " A$    @! &"$  !@A$&   P     0   D) +__Y(#  P     ,&H 
+M1!5 _Z<P;@!2#! $5 ( ("&. @       "1"__\$00 &K@(  ).D %,,$ /(
+M @ H(1    J2#P ,CZL 4(X,  0     H8L  (X-  0     ):X  :X.  22
+M#P ,     #'X " 3   $CZ, 4!    ,D ___CZ, 4       8! AC[\ +(^P
+M !R/L0 @C[( )(^S "@#X  ()[T 4">]_^"OOP 4 ( X(8SC  B0[P ,C.X 
+M! !@*"$Q^ !$K.4 !!,   @!Q3 CD/D #3P)$  E*0*@ !E @ $)("$0   *
+MK.   )#J  T\#!  )8P"H  *6( !;" AC(T        !HQ CK.(  (SB    
+M    !$$ ! ! &"$0   "   8(0! &"&,C@  C.\ !      !S\ C P,(*A @
+M  H     KZ4 '*^F !@ X" A#! %-J^G ""/I0 <CZ8 &(^G "      &,  
+M#P  $"&0Y  -KZ< ( P0!GBOI@ 8CZ8 &(^G " 0P@ '   0(9#Y  PD O__
+M-R@ (!    *@Z  ,   0(8^_ !0GO0 @ ^  "      GO?_HK[\ %)""  PD
+M 0 ",$X $A'!  P     ,$\ @A7@  8D ?_O#! &@R0$  D0   R) +__R0!
+M_^\ 0< D-QD  J"9  R,@P (     !1@  <     #! $W:^D !B/I  8    
+M (R#  @     C(@ !      4:  @   0(9")  P     ,2H 1!5  !L  ! A
+MD(L #3P-$  EK0*@  M@@ &-*"&,K@        '#>".LCP  C((        $
+M00 $ $ 8(1    (  !@A $ 8(8RX  ",F0 $      ,90",! P@J$"  !   
+M$"$,$ 4V        $"&/OP 4)[T & /@  @     )[W_X*^_ !0 @"@AD*X 
+M#)"C  TQSP $$>  # !@,"$\&1  )SE@"  &P, #&1 A  -(@#P!$   *0@A
+MK*( ""1(  @0   TK"@"H"C!  (0(  3     !3   8     / ,0 "1C$ "L
+MHP ($   !0!@$"$\ Q  )&-  *RC  @ 8! AD*L #3P!$   "V"  "P((21*
+M(  0   ?K"H"H*^E " D!" (#! %5*^F !R/I0 @CZ8 '!!   RLH@ (D*T 
+M#)"Y  V,KP (/ $0 #6N  @ &4" H*X #  H""$E^"  $   #*PX J \"Q  
+MD*P #25K8 @ !DC  2L0(3P!$   #&B  "T((:RB  @D2@ (K"H"H(RN  @ 
+MP" AK*X ! P0!HBOI0 @CZ4 (!!   F/OP 4D*( #      P3P $%>  !(^_
+M !0T60! H+D #(^_ !0GO0 @ ^  "     "0C@ -/ ,0   .>(  ;Q@AC&,"
+MH(R8  0      '@0(P1!  ,      ^  "*R#  2,F0        !9""H0(  "
+M     *R"   #X  (                ) (#Z0    P#X  (     #P!$ "L
+M(@P8 ^  ""0"__\GO?^HK[8 +*^R !ROOP TK[< ,*^U "B/CH%PK[0 )*^S
+M ""OL0 8 ("0(:^P !01P  $  "P(8^%@800   +)Y6!<">"@70GE8%PKX*!
+M?#1/  &OCX%P-K@  0*@."&OF(%T $ H(:^'@7B/AX%X)!?__R04__X X(@A
+M   P(8XC         & 0(3!9  $7(  = B" (0!@@"&. @  )D0 !P $(((P
+M2  !%0  #@ $(( "(#@AKX>!>!2P  *N(@   B H(8XC         &" (8X"
+M        ,$D  1$@__8      B00(0("""L4(  # %$(*Q @ &H      & 0
+M(0(@@"$ 5(@D A$(*Q0@_]L     CXJ!?      2"@ #     !    2OA8&$
+M$C4 !23&  &OA8&$$   :P  $"$DQ@ !+,$  A0@_\P     )D, !P #&(*O
+MHP X *"((0  ("$,$ :@KX6!A(^+@7R/HP X)6P !!!,  P 0( A)&8'_P &
+M,L(P1  #$(  $  &,T D#0 $ :08(P!@L"$ 0X A$   "@#6,"&/A8&$CXZ!
+M?      !Q7@C  _ @P!X,",DQ@@   8RP@ &,T "!L@A S (*Q @  0\ 7__
+M$   00  $"$\ 7__-"'@ 0#!""L4(  - ,"8(3P$?_\TA.  #! &H*^F $B/
+MI@!(%%< !#P!@  0   S   0(3P!@  T(2   ,$P(0P0!J  P" A%%< !0  
+M   ,$ :L @ @(1   "@  ! ACXB!? (32"$!-E C)4O__*T0  "N"P  CXR!
+M? ( *"$EC0 $$@T !3:B  &-C@       #7/  &MCP  CA@       "OF(%\
+MCYF!?!  _W>O(@   $ X(0#P""L0(  &-.D  8SH        KXB!@*SC   T
+MZ0 !$+$ !*XI  "OAX%X$   !*^%@80 X"@AKX6!A*^'@7@F(@ $C[\ -(^P
+M !2/L0 8C[( '(^S ""/M  DC[4 *(^V "R/MP P ^  "">] %@0@  - ( 0
+M(22"__RO@H%XC$X  "0!__X!P7@DK$\  (Q9  "/F(%\     !<9  (     
+MKX*!A /@  @     )[W_R*^P !@ @( A$@  .*^_ !R. O_\     #!.  $1
+MP  ( % 8(P( ("$,$ 8:KZ4 /(^E #R. O_\      !0&",  QB#KZ, ) "@
+M("$,$ 54KZ4 /(^C "2/I0 \$$  !0! ("$04  #     !2@  0DIP #$   
+M(0" $"$DIP #  <X@@#C""L0(  "      #@&"&OI  T @ H(0 #,( ,$ (P
+MKZ< ((^D #2/IP @ % (*Q @ !        =X@ !/&"$ < @K%"  "P      
+M<,@C !E @X^8@8  "$B  $E0(1    2M6   #! %5 "@("$ 0" A ( 0(8^_
+M !R/L  8 ^  "">] #@          "0" _L    ,$.   P     ($ 50    
+M  /@  @     ) (#[     P0X  #      @0!5       ^  "     "/@H&8
+M ^  "     "OA(&8 ^  " " $"$          ">]_["OOP <#! &@*^D %"/
+MI !0KZ( )"0%5 @,$ :\)Z8 * 1!  <D @ !CZ0 ) P0!H,     $    @  
+M$"$D @ !C[\ '">] % #X  (                     #P#$ ",8PJ$) (#
+M^0"#("$    ,%.  !#P!$   8! A ^  "*PD"H0($ 50     #P"$ ",0@J 
+M      """"L0(  "      ! ("$D @/Y    #!3@__0\ 1  K"0*A /@  @ 
+M ! A           D @0>    #!#@  ,     "! %4      #X  (        
+M                   #X  (                                    
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M    (" @(" @(" @*"@H*"@@(" @(" @(" @(" @(" @("!($! 0$! 0$! 0
+M$! 0$! 0A(2$A(2$A(2$A! 0$! 0$!"!@8&!@8$! 0$! 0$! 0$! 0$! 0$!
+M 0$! 1 0$! 0$(*"@H*"@@(" @(" @(" @(" @(" @(" @("$! 0$"      
+M                                                            
+M                                                            
+M                                                 0(#! 4&!P@)
+M"@L,#0X/$!$2$Q05%A<8&1H;'!T>'R A(B,D)28G*"DJ*RPM+B\P,3(S-#4V
+M-S@Y.CL\/3X_0&%B8V1E9F=H:6IK;&UN;W!Q<G-T=79W>'EZ6UQ=7E]@04)#
+M1$5&1TA)2DM,34Y/4%%24U155E=865I[?'U^?P                      
+M                                                            
+M                                                            
+M                              !#2%)#3$%34P     O;&EB+V-H<F-L
+M87-S+P                                                      
+M                                                            
+M                                                            
+M         !  8"                                              
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M              $                    " 0       !  8!@0 & 8!@( 
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                               0 *= $ "G0   
+M        0&D                  $+(                            
+M             0   &%S8VEI                                    
+M                $  *=                                       
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M    < D""@  !D    +    P8               -   ,R    $Y   ]L   
+M           "$P  3%P   A,  !4J   !B0  %ST    '@  8Q@   !<  !K
+MB    (<  &SX,/ @X# 00-! T$ 0(*"! !9 \# 0$!%@P% A(! 0(04%!04%
+M!04%!04%!08',!$1(1$1(1$1(1$1(A,R$A(B$A(B$A(B$A(B%"$1$2$1$2$1
+M$2$1$2$1(1$1$2(B$P$!,-"   BP6(, "1$0,/ 4$A0F5! B)0&   Z __*!
+M  \2$P4PX#$7%!$8 !<2$1@!$1)08! 0$! 0$! 0$! 0$! 0$! P$! 0$! 0
+M$! 0$! 0$! 0$! P$" 0$!  $!$1$0 0$1$10/ A,A 2$8( "A 0$7$0(! @
+M$.! \($ "A(2,! @$!#0<! @$!#0<! @\# 0X(( #! 0$! 0$! 0(! 0$! 0
+M$)"   D0$-!R$! 0$" 0$-!0$!#0<A 0(! 0T(  $,! T$ 0$7$0$! @$" 0
+MX$#P@0 *$A(P$" 0$-!P$" 0$-!P$"#P,!#@@@ ,$! 0$! 0$! @$! 0$! 0
+MD(  "1 0T'(0$! 0(! 0T% 0$-!R$! @$!#0 ! 1$2$6%!(B!"<7%##0,- R
+MT#&$  H3,103 T#0010C$R 5$"$2$Q! X! @\!,",-!V$R8T)"#P(?!(!!@(
+M !@!" )2&  H 1(8 3(0(. @\!02$!#P$/!H" 81%#$8""@' D @X2#P$. H
+M!A@(!!@ $!#P$/ T 102$1$C(Q48&!@&) ) T#'02!#P,B@(-R 2\!#P$1#P
+M. $@$/ 8 !$3.  1%! 1 !)A</ %<)1PT#0PX1 @X# 10A 5&$#P$!<6(! 0
+M$B@A$Q% \!(0\!'P<1'P(A PX" W(Q%#\"81(B,1$4!"P$ 0D'(3$A @X$ B
+M$A @(. E& ) T'$S%3$"@  )@/_WA  +%1$5(. C$200%A<4$/ R%  0$1$1
+M ! 1$1%"0"$!0,!0\!0B$20A(/ @$2#P$2$3$" 0$1$1 ! 1$1$         
+M @               /____\              !@ '0      .    &<     
+M    :     0    :          #_____                 !T 'P   (( 
+M  "$    &@   '     &    '           _____P                 =
+M !\   "/    DP   !L   !\    "    !\          /____\         
+M        '0 ?    G@   *     >         "$               #_____
+M                 !T 'P   'D   !Y         !@    E    !@      
+M    _____P                 = !\   !Z    >@    $    P    *0  
+M  P          /____\                 '0 ?    >P   'L    "    
+M2    "T    2          #_____                 !T 'P   'T   !]
+M     P   &     Q    &           _____P                 = !\ 
+M  !^    ?@    0   !X    -0   !X          /____\             
+M    '0 ?    ?P   '\    %    D    #D    D          #_____    
+M             !T 'P   ($   "!    !@   *@    ]    *@          
+M_____P                 = !\   ""    @@    <   #     00   #  
+M         /____\                 '0 ?    @P   (,    (    V   
+M $4    V          #_____                 !T 'P   (4   "%    
+M"0   /    !)    /           _____P                 = !\   "&
+M    A@    H   $(    30   $(          /____\                 
+M'0 ?    AP   (<    +   !(    %$   !(          #_____        
+M         !T 'P   (D   ")    #    3P   !5    3P          ____
+M_P                 = !\   "*    B@    T   %<    A0   %<     
+M     /____\                 '0 ?    L@   /<    .          $ 
+M              #_____                 !T 'P    (    "        
+M       "     (    #___UL_____P             "L  = !\   !?    
+M@P               0    "     _____/____\              "  '0 ?
+M    '0   "X               $     @ ,  /____S_____            
+M   @ !T 'P   !X    F         (P    #    (P          _____P  
+M               = !\    S    .0    D          0              
+M /____\                 '0 ?    8@   )H               $     
+M          #_____                 !T 'P    X    2            
+M   !                _____P                 = !\    .    $@  
+M             0               /____\                 '0 ?    
+M*    2X               $               #_____                
+M !T 'P    X    3               #                _____P      
+M           = !\    7    '         !(    !0   !*  P  _____/__
+M__\              "  '0 ?    (0   "4    $          $     @ $ 
+M /____S_____               @ !T 'P   "H    ]         '@    #
+M    'H !  #____T_____P              *  = !\   !.    90    X 
+M  $X    !0   $Z  0  _____/____\              "  '0 ?    <@  
+M (D    B   "@     <   "@@ \  /___]S_____              !0 !T 
+M'P   )H   "Z    -0  !+     )   !+(    #____T_____P          
+M    (  = !\   #2    W@   %8   7(    "P   7*     _____/____\ 
+M             !@ '0 ?    Z@   /@   !K   &U     T   &U@    /__
+M__3_____               @ !T 'P   0,   $;    >   "#@    /   "
+M#@          _____P                 = !\   $I   !,    )4     
+M     0               /____\                 '0 ?    #@    \ 
+M              $               #_____                 !T 'P  
+M !$    >               &     (#_  #____<_____P              
+M6  = !\   !D    Q0        ,8    "    ,<          /____\     
+M            '0 ?    S    -L   !.   #6     H   #7@ $  /___^3_
+M____               X !T 'P   .8   $!    5          !        
+M        _____P                 = !\    .    $@              
+M 0               /____\                 '0 ?    #@   !(     
+M          $               #_____                 !T 'P   !\ 
+M   C          P    #     P          _____P                 =
+M !\    J    ,     $          0    "     ____S/____\         
+M     %  '0 ?    '@   "@               $               #_____
+M                 !T 'P   !<    ?         #     $    "P      
+M    _____P                 = !\    E    +P    @          0  
+M             /____\                 '0 ?    #@   !(         
+M 0     L(  +    #      (K___    %0!  < 8(  "    %0   &@@(  "
+M    '0!  B@8(  &    '0    @@(  $    *0!  C 8(  *    *0    P@
+M(  &    ,0!  CP8(  .    ,0    @@(  (     0     @(        0  
+M   L(  "     0     @(        0     L(  "     0     @(       
+M 0     L(  "     0     @(        0     L( "*    0@   !AI8  )
+M    2P     E8  (    60   ! E8  #    :    " E8  $    =0   $ E
+M8  %    @P   & E8  &    D@   ( E8  '           A8  !    H@  
+M !AI8  1    IP     E8  (    M0   ! E8  #    Q    " E8  $    
+MT0   $ E8  %    WP   & E8  &    [@   ( E8  '           A8  )
+M    _@    AM8  9   !!@     E8  (   !%      E8  #   !(P     E
+M8  $   !,      E8  %   !/@     E8  &   !30     E8  '        
+M   A8  1   !70    AM8  A   !8@     E8  (   !<      E8  #   !
+M?P     E8  $   !C      E8  %   !F@     E8  &   !J0     E8  '
+M           A8  9   !N0!  E 8( "'           <(  D          @@
+M(  B   !N0   !@@(  A   !Q0!  F@8( ")           <(  H        
+M  @@(  F   !Q0   !@@(  E   !V !  H 8( "+           <(  L    
+M      @@(  J   !V    !@@(  I   ![0!  I@8( "-           <(  P
+M          @@(  N   ![0   !@@(  M   !^@!  K 8( "/           <
+M(  T          @@(  R   !^@   !@@(  Q   "#@!  L@8( "1        
+M   <(  X          @@(  V   "#@   !@@(  U   ") !  N 8( "3    
+M       <(  \          @@(  Z   ")    !@@(  Y   "+P!  O@8( "5
+M           <( !           @@(  ^   "+P   !@@(  ]   "00!  Q 8
+M( "7           <( !$          @@( !"   "00   !@@( !!   "50! 
+M R@8( "9           <( !(          @@( !&   "50   !@@( !%   "
+M80!  T 8( ";           <( !,          @@( !*   "80   !@@( !)
+M   "= !  U@8( "=           <( !0          @@( !.   "=    !@@
+M( !-   "B0!  W 8( "?           <( !4          P@( !2   "B0  
+M !P@( !1   "E@!  XP8( "A           <( !8         ! @( !6   "
+ME@   " @( !5   "I    )AI8 !>   "J0     E8 "F   "K@   " E8 "I
+M   "MP   $ E8 "L           A8 !9   "O0   )!M8 !C   "Q0     E
+M8 #$   "R@     E8 #'   "TP     E8 #*           A8 !>   "V0  
+M  1Q8 !H   "W@     E8 #B   "X@    $E8 #C   "Z     (E8 #D    
+M       A8 !C   "[0    1Q8 !M   "]      E8 #K   "^P    $E8 #L
+M   # @    (E8 #M           A8 !H   #!P    1Q8 !Q   ##      E
+M8 #T   #$@    $E8 #U           A8 !M   #%P    1Q8 !U   #'   
+M   E8 #\   #(     $E8 #]           A8 !Q   #*     1Q8 !Y   #
+M+0     E8 $$   #,P    $E8 $%           A8 !U   #.      I8 $&
+M   #0     1Q8 !^   #1@     E8 $,   #3     $E8 $-           A
+M8 !Z   #40     I8 $.   #6@    1Q8 "%   #90    (E8 $4   #:0  
+M  $E8 $5   #;0     E8 $6   #<@    ,E8 $7           A8 !_   #
+M> !  ZP8( $8           <( "(         = @( "&   #>    > @( "%
+M     0     @(        0     L(  $    % ! !9 8(  -    %     @@
+M(  !     0     @(        0     L(  %    "1  "L )K___    % ! 
+M!: 8(  -    %    .P@(  "     0     @(        0     L(  $    
+M#@! !I 8(  -    #@   #0@(  !     0     @(        0     L(  &
+M    "@! !M 8(  -    "@   (P@(  !    $0! !UPX(  /    $0   '0@
+M(  #     0     @(        0     L(  )    #@! !] 8(  "    %0! 
+M"!@4+___    (@! "& 4+___    *0! "&@4+___    , ! "&P4+___    
+M-P! "' 4+___    #@   *@@(  !     0     @(        0     L(  %
+M    #0! "( 8(  "    $P! ")@4+___    #0   " @(  !     0     @
+M(        0     L(  "     0     @(        0     L(  "     0  
+M   @(        0     L(  %    #0! "* 8(  "    $P! "+@4+___    
+M#0   " @(  !     0     @(        0     L(  9    #0! ", 8(  "
+M    % ! "/ 4+___    'P! "0P4+___    ,0! "1@4+___    /P! "2P4
+M+___    0P! "304+___    40! "604+___    7 ! "7P4+___    9P! 
+M"9@4+___    < ! "9@4+___    ? ! "?04+___    B ! "C 4+___    
+MDP! "E04+___    GP! "G04+___    L@! "H@4+___    P ! "J04+___
+M    S@! "M04+___    V0! "NP4+___    Y ! "P@4+___    [@! "P@4
+M+___    ^P! "V04+___   !" ! "Z 4+___    #0   P0@(  !     0  
+M   @(        0     L(  %    #@! "] 8(  "    %0! "^@4+___    
+M#@   " @(  !     0     @(        0     L(  (    "A  "N )K___
+M    $Q   B (3___    '@! "_ 8(  -    '@   $@@(  #    )0! ##@8
+M(  /    )0   &@@(  %     0     @(        0     L(  2    "@! 
+M#* 8(  -    "@   '@@(  !    $P! #1@8(  /    $P   , @(  #    
+M&@! #=@8(  1    &@   4@@(  %    (0! #R 8(  3    (0   C @(  '
+M    *0! $5 8(  5    *0   1@@(  )    ,@! $F@8(  7    ,@   0P@
+M(  +    .@! $W08(  9    .@   60@(  -    0P! %-@8(  ;    0P  
+M % @(  /     0     @(        0     L(  $    # ! %3 8(  "    
+M#    ! @(  !     0     @(        0     L(  $    #@! %4 8(  "
+M    #@   ! @(  !     0     @(        0     L(  "     0     @
+M(        0     L(  "     0     @(        0     L(  -    "A  
+M"_ )S___    $1  "_@)S___    &!  "_P)S___    'Q  #  )S___    
+M)A  # 0)S___    +P! %5 8(  -    +P   Q@@(  &    -@! &&@8(  /
+M    -@   $ @(  (    .P! &*@8(  1    .P   1 @(  *     0     @
+M(        0     L(  %    #@! &< 8(  "    %0! &=@4+___    #@  
+M " @(  !     0     @(        0     L(  %    #@! &> 8(  "    
+M%0! &?@4+___    #@   " @(  !     0     @(        0     L(  &
+M    # ! &@ 8(  -    #     P@(  !    %0! &@P8(  /    %0    P@
+M(  #     0     @(        0     L(  $    "P! &B 8(  -    "P  
+M %0@(  !     0     @(        0     L(  (    #0! &H 8(  "    
+M#0   "@@(  !    $P! &J@4+___    %P! &K 8(  &    ' ! &LP4+___
+M    %P   #@@(  $     0     @(        0     L(  %    #@! &O 8
+M(  "    %0! &P@4+___    #@   " @(  !     0     @(        0  
+M   L(  "     0     @(   _____P         $     /____\         
+M!@    #_____          @     _____P         *           &    
+M @    0    &    "     H    +     P    4    '    "0   !H    #
+M #  __  !                0    @# #  __  !                0  
+M  @# #  __  !                0    @$ #  __  !               
+M 0   ! $ #  __  !                0   ! % #  __  !           
+M     0   ! & #  __  !                0   " & #  __  !       
+M         0   " ' #  __  !                0   " ( #  __  !   
+M             0   " ( #  __  !                0   " ) #  __  
+M!                0   " * #  __  !                0   " + #  
+M__  !                0   $ # !   P 0  , $  $ !  !  0  4 $  &
+M !  !@ 0  < $  ( !  "  0  D $  * !  "P 0  P   #__________PP 
+M  #_\  !      P   #__________PP   #_\  )      T   #_________
+M_PT   #_\  1      T   #__________PT   #_\  9         "4#    
+M    *0,        M P       #$$        -00        Y!0       #T&
+M        008       !%!P       $D(        30@       !1"0      
+M %4*        60L    ,    __________\, !  __  60     , !(0__  
+M60     , #,P__   0    #_\  $               "    P/_P  0     
+M          $   ) __  !                   !( , !  __  60     -
+M    __________\, !  __  60     , !(0__  60     , #,P__   0  
+M  #_\  $               "    P/_P  0               $   ) __  
+M!                   !( -    __  7@     .    __________\     
+M           .    __  8P     .    __________\                .
+M    __  :      .    __________\           X   #_\ !M      X 
+M  #__________P          #@   /_P '$     #@   /__________    
+M       .    __  =0     .    __________\           X   #_\ !Z
+M      X   #__________P                        ")!@         &
+M     @    0    &    "     H    +     P    4    '    "0   !H 
+M       #!@         &     @    0    &    "     H    +     P  
+M  4    '    "0   !H        $!@         &     @    0    &    
+M"     H    +     P    4    '    "0   !H        #!@         &
+M     @    0    &    "     H    +     P    4    '    "0   !H 
+M       # P 0      4# !  _____P         (     /____\         
+M!     #_____          0     _____P         8     /____\     
+M    !           !@    (    $    !@    @    *    "P    ,    %
+M    !P    D    :        !08        '&@         &     @    0 
+M   &    "     H    +     P    4    '    "0   !H        #&@  
+M      4&        !P8        )!@        L&        #08        /
+M!@       !$&    _____P         #     /____\          P      
+M    !@    (    $    !@    @    *    "P    ,    %    !P    D 
+M   :          8    "    !     8    (    "@    L    #    !0  
+M  <    )    &@         &     @    0    &    "     H    +    
+M P    4    '    "0   !H        (&@ 0      H:        #!H $ #_
+M____          0     _____P         $           &     @    0 
+M   &    "     H    +     P    4    '    "0   !H        #!@  
+M      4&          8    "    !     8    (    "@    L    #    
+M!0    <    )    &@        ,&    _____P         #     /____\ 
+M        !P    #_____          0      &-R=#%T97AT+G, 4U1!4E1&
+M4DT 7U]S=&%R= !?;6]N8V]N=')O; !?;6-O=6YT %]S<')O8VUO;G-T87)T
+M   O8F%B82]C>7!R97-S+W5S<B]I;F-L=61E+W)E9V1E9BYH   O8F%B82]C
+M>7!R97-S+W5S<B]I;F-L=61E+V%S;2YH  !C<G0Q=&EN:70N<P  9V1B;64N
+M8P \+S1$96)U9R\^ '!U<&EL.B]C>6=I;G0O<&QA>2]F;F8O9V1B;64N8P W
+M,#(S-#@S-CD -3,X-@!T7W-T<G5C= !V7V-H87)?;65M8F5R '9?<VAO<G1?
+M;65M8F5R '9?:6YT7VUE;6)E<@!V7VQO;F=?;65M8F5R '9?9FQO871?;65M
+M8F5R '9?9&]U8FQE7VUE;6)E<@ N1C$Q '9?8VAA<E]M96UB97( =E]S:&]R
+M=%]M96UB97( =E]I;G1?;65M8F5R '9?;&]N9U]M96UB97( =E]F;&]A=%]M
+M96UB97( =E]D;W5B;&5?;65M8F5R '1?=6YI;VX =E]C:&%R7VUE;6)E<@!V
+M7W-H;W)T7VUE;6)E<@!V7VEN=%]M96UB97( =E]L;VYG7VUE;6)E<@!V7V9L
+M;V%T7VUE;6)E<@!V7V1O=6)L95]M96UB97( +D8Q,P!V7V-H87)?;65M8F5R
+M '9?<VAO<G1?;65M8F5R '9?:6YT7VUE;6)E<@!V7VQO;F=?;65M8F5R '9?
+M9FQO871?;65M8F5R '9?9&]U8FQE7VUE;6)E<@!V7V-H87)?9G5N8P!V7W-I
+M9VYE9%]C:&%R7V9U;F, =E]U;G-I9VYE9%]C:&%R7V9U;F, =E]S:&]R=%]F
+M=6YC '9?<VEG;F5D7W-H;W)T7V9U;F, =E]U;G-I9VYE9%]S:&]R=%]F=6YC
+M '9?:6YT7V9U;F, =E]S:6=N961?:6YT7V9U;F, =E]U;G-I9VYE9%]I;G1?
+M9G5N8P!V7VQO;F=?9G5N8P!V7W-I9VYE9%]L;VYG7V9U;F, =E]U;G-I9VYE
+M9%]L;VYG7V9U;F, =E]F;&]A=%]F=6YC '9?9&]U8FQE7V9U;F, ;&EN:P!N
+M97AT &QI;FMF=6YC '-T=69F '1U7VQI;FL ;F5X= !L:6YK9G5N8P!S='5F
+M9@ N1C(Y ')E9 !G<F5E;@!B;'5E &-O;&]R<P!Y96QL;W< <'5R<&QE '!I
+M;FL +D8S,0!C:&5V>0!F;W)D &-A<G, 8FUW '!O<G-C:&4 +D8S,P!&04Q3
+M10!44E5% &)O;VQE86X 8G9A;', 9F%L<V4 =')U90!B;V]L96%N,@!M:7-O
+M<F1E<F5D '1W;P!O;F4 >F5R;P!T:')E90!M86EN  !G96XO<W1U8F9P97-T
+M87)T+F, 7U]R96%D96YV7W-I9V9P90  8W1Y<&4N8P!F:7)S=%]C86QL %]S
+M971C:')C;&%S<P  9V5N+V-U97AI="YC &5X:70  &=E=&5N=BYC &=E=&5N
+M=@!N=FUA=&-H  !G96XO<W1R8W!Y+G, <W1R8W!Y #$D,# P,# P,# P,  D
+M9&]C:#, )&1O8V@R "1D;V-H,0 D9&]C:#   '-Y<R]?;W!E;BYS %]O<&5N
+M #DD,# P,# P,# P,   +V)A8F$O8WEP<F5S<R]U<W(O:6YC;'5D92]S>7,N
+M<P  +V)A8F$O8WEP<F5S<R]U<W(O:6YC;'5D92]S>7,O<WES8V%L;"YH  !S
+M>7,O7W)E860N<P!?<F5A9  Y)# P,# P,# P,#   &=E;B]B8V]P>2YS &UE
+M;6-P>0!G;V9O<G=A<F1S &9O<G=A<F1S7V)Y=&5C;W!Y #DY)# P,# P,# P
+M,#  <F5T &9O<G=A;&EG;F%B;&4 9F]R=U]C;W!Y,@!F;W)W7V-O<'DS &9O
+M<G=A<F1S &9O<G=A<F1S7S,R &9O<G=A<F1S7S$V &9O<G=A<F1S7S0 9V]B
+M86-K=V%R9', 8F%C:W=A<F1S7V)Y=&5C;W!Y #DY)# P,# P,# P,#$ 8F%C
+M:V%L:6=N86)L90!B86-K7V-O<'DR &)A8VM?8V]P>3, 8F%C:W=A<F1S &)A
+M8VMW87)D<U\S,@!B86-K=V%R9'-?,38 8F%C:W=A<F1S7S0  '-Y<R]?8VQO
+M<V4N<P!?8VQO<V4 .20P,# P,# P,# P  !A=&5X:70N8P!?7VYE>'1F;@!?
+M7V5X:71?9FYS &%T97AI= !?7V-A;&Q?97AI=&9N<P  9FQS8G5F+F, 7V-L
+M96%N=7  9F-L;W-E &9F;'5S: !?9FQS8G5F %]X9FQS8G5F %]W<G1C:&L 
+M7V9I;F1B=68 7V)U9G-Y;F,  '-Y<R]E>&ET+G, 7V5X:70  &-R="]C97)R
+M;W(N<P!?8V5R<F]R  !D871A+F,  &UP7V1E9BYC  !M86QL;V,N8P!A;&QO
+M8W, 86QL;V-P &%L;&]C= !A;&QO8W@ 86QL;V-E;F0 ;6%L;&]C &9R964 
+M<F5A;&QO8P  <WES+U]L<V5E:RYS %]L<V5E:P Y)# P,# P,# P,#   '-Y
+M<R]?=W)I=&4N<P!?=W)I=&4 .20P,# P,# P,# P  !?;W-E<G)O<BYC %]O
+M<V5R<F]R %]S971O<V5R<F]R  !?:7-A='1Y+F, 7VES871T>0  <WES+U]S
+M8G)K+G, 7W-B<FL 97)R %]B<FL ,20P,# P,# P,# P  !S>7,O7VEO8W1L
+M+G, 7VEO8W1L #DD,# P,# P,# P,   8W)T;FEN:70N<P  7V5N=FER;VX 
+M96YV:7)O;@!?7T%R9V, 7U]!<F=V &5R<FYO %]?<W1A<G0 7V=P %]?:7-T
+M87)T %]?<F5A9&5N=E]S:6=F<&4 7W-E=&-H<F-L87-S &UA:6X 97AI= !?
+M;6]N8V]N=')O; !?;6-O=6YT %]S<')O8VUO;G-T87)T '9?8VAA<@!V7W-I
+M9VYE9%]C:&%R '9?=6YS:6=N961?8VAA<@!V7W-H;W)T '9?<VEG;F5D7W-H
+M;W)T '9?=6YS:6=N961?<VAO<G0 =E]I;G0 =E]S:6=N961?:6YT '9?=6YS
+M:6=N961?:6YT '9?;&]N9P!V7W-I9VYE9%]L;VYG '9?=6YS:6=N961?;&]N
+M9P!V7V9L;V%T '9?9&]U8FQE '9?8VAA<E]A<G)A>0!V7W-I9VYE9%]C:&%R
+M7V%R<F%Y '9?=6YS:6=N961?8VAA<E]A<G)A>0!V7W-H;W)T7V%R<F%Y '9?
+M<VEG;F5D7W-H;W)T7V%R<F%Y '9?=6YS:6=N961?<VAO<G1?87)R87D =E]I
+M;G1?87)R87D =E]S:6=N961?:6YT7V%R<F%Y '9?=6YS:6=N961?:6YT7V%R
+M<F%Y '9?;&]N9U]A<G)A>0!V7W-I9VYE9%]L;VYG7V%R<F%Y '9?=6YS:6=N
+M961?;&]N9U]A<G)A>0!V7V9L;V%T7V%R<F%Y '9?9&]U8FQE7V%R<F%Y '9?
+M8VAA<E]P;VEN=&5R '9?<VEG;F5D7V-H87)?<&]I;G1E<@!V7W5N<VEG;F5D
+M7V-H87)?<&]I;G1E<@!V7W-H;W)T7W!O:6YT97( =E]S:6=N961?<VAO<G1?
+M<&]I;G1E<@!V7W5N<VEG;F5D7W-H;W)T7W!O:6YT97( =E]I;G1?<&]I;G1E
+M<@!V7W-I9VYE9%]I;G1?<&]I;G1E<@!V7W5N<VEG;F5D7VEN=%]P;VEN=&5R
+M '9?;&]N9U]P;VEN=&5R '9?<VEG;F5D7VQO;F=?<&]I;G1E<@!V7W5N<VEG
+M;F5D7VQO;F=?<&]I;G1E<@!V7V9L;V%T7W!O:6YT97( =E]D;W5B;&5?<&]I
+M;G1E<@!V7W-T<G5C=#$ =E]S=')U8W0R '9?=6YI;VX =E]U;FEO;C( =E]C
+M:&%R7V9U;F, =E]S:6=N961?8VAA<E]F=6YC '9?=6YS:6=N961?8VAA<E]F
+M=6YC '9?<VAO<G1?9G5N8P!V7W-I9VYE9%]S:&]R=%]F=6YC '9?=6YS:6=N
+M961?<VAO<G1?9G5N8P!V7VEN=%]F=6YC '9?<VEG;F5D7VEN=%]F=6YC '9?
+M=6YS:6=N961?:6YT7V9U;F, =E]L;VYG7V9U;F, =E]S:6=N961?;&]N9U]F
+M=6YC '9?=6YS:6=N961?;&]N9U]F=6YC '9?9FQO871?9G5N8P!V7V1O=6)L
+M95]F=6YC '-?;&EN:P!U7VQI;FL <')I;6%R>0!N;VYP<FEM87)Y &-L=6YK
+M97( <W!O<G1S8V%R %]C='EP90!G971E;G8 <W1R8W!Y %]O<&5N %]R96%D
+M &UE;6-P>0!?8VQO<V4 7U]T<F%P7V9P95]O=F5R<FED90!?7V-A;&Q?97AI
+M=&9N<P!?8VQE86YU< !?97AI= !?8V5R<F]R &%T97AI= !?8G5F96YD=&%B
+M %]I;V( 7W-P<F]C960 7VQA<W1B=68 7W-I8G5F %]S;V)U9@!?<VUB=68 
+M9F9L=7-H &9C;&]S90!F<F5E %]L<V5E:P!?>&9L<V)U9@!?9FQS8G5F %]W
+M<FET90!?=W)T8VAK %]B=69S>6YC %]S971O<V5R<F]R %]F:6YD8G5F &UA
+M;&QO8P!?:7-A='1Y %]L;V-K %]U;&]C:P!?;FQO8VL 7VEL;V-K %]F;&]C
+M:P!?=VQO8VL 7V-L;V-K %]T;&]C:P!?8W1L;V-K %]D;&]C:P!?8V%S %]U
+M<U]R<W1H<F5A9%]S=&1I;P!?<V)R:P!?8G)K ')E86QL;V, 7V]S97)R;W( 
+M7VEO8W1L &5N9 !?;6EN8G)K %]C=7)B<FL 7V5N9    $ !P     $     
+M    0          +         "$               0         $       
+M   %&8             ? $ !P     $   !     )     L    "        
+M               $       0          4    %'8               $ !
+MP     $   !D    (0    T    "                       $       0
+M          H    %'8               $ !P     $   "%    #0    \ 
+M   "                                          \    !'8      
+M         $ "4     $   "2   #?0   !$   "*    (0   ,\         
+M   $  \    0   !&@   !     ! 0       !\    _ $ %D     $   0/
+M    )0   )L    $    \     (            3  $   $J    #P   !$ 
+M   ! 8       %X    ! $ %H     $   0T    (0   )\    %    \@  
+M #L            4  $   $Y    #P   !(    ! 8       %\    7 $ &
+MD     $   15    $P   *0    $   !+0    T            5  $   %(
+M    #P   !,    ! 8       '8    , $ &T     $   1H    &0   *@ 
+M   &   !.@   $             6  (   %7    $0   !0    ! 8      
+M ((    0 $ 'T     $   2!    /@   *X    )   !>@   "H         
+M   8  $   %H    !    !4    %&8       )(    J $ (@     $   2_
+M    (    +<    %   !I     @            9  $   %L    !    !H 
+M   %&8       +P    % $ (@     $   3?    (0   +P    "        
+M               !       $         !\    %'8               $ (
+M@     $   4     *0   +X    "                       !       $
+M         "0    %'8               $ (H     $   4I    (    ,  
+M   %   !K     @            :  $   %P    !    "D    %&8      
+M ,$    % $ (P     $   5)   !%    ,4    9   !M    ,8         
+M   ;  $   %T    !    "X    %&8       ,8   "T $ +T     $   9=
+M    (@   -X    %   ">@    @            <  $   %X    !    #, 
+M   %&8       7H    % $ +\     $   9_    -    .,    (   "@@  
+M "P            =  (   %\    $0   #@    ! 8       7\    ( $ ,
+MH     $   :S    3    .L    2   "K@   B(            ?  @   &-
+M    '0   #D    ! 8       8<   "; $ 5,     $   ;_    $@   /T 
+M   $   $T     0            G  $   &J    !    #H    %&8      
+M B(    " $ 50     $   <1    %@   0$    $   $U     0         
+M   H  $   &N    !    #\    #&8       B0    # $ 54     $   <G
+M    "    04    "                              &R    #0   $( 
+M   ! 8               $ 54     $   <O    "@   0<    "        
+M                      &_    #0   $,    ! 8               $ 5
+M4     $   <Y    0P   0D    -   $V    1L            I  ,   ',
+M    $P   $0    ! 8       B<   !N $ 9P     $   =\    (@   18 
+M   %   %\P    @            L  $   '?    !    $4    %&8      
+M I4    % $ 9X     $   >>    (@   1L    %   %^P    @         
+M   M  $   'C    !    $H    %&8       IH    % $ :      $   ? 
+M    (0   2     &   & P    8            N  (   'G    $0   $\ 
+M   ! 8       I\    # $ :(     $   ?A    $P   28    $   &"0  
+M !4            P  $   'X    #P   %     ! 8       J(    ) $ :
+M@     $   ?T    *0   2H    (   &'@   !H            Q  (   ('
+M    "    %$    %&8       JL    0 $ :\     $   @=    (@   3( 
+M   %   &.     @            S  $   (/    !    %8    %&8      
+M KL    %$$ ;$     $   @_    #    3<    "                    
+M                     %L    !'8                        $    !
+M     @    (          0    $    "     @         !     0    ( 
+M   "     P    0    %    !@    <    (    "0    (    "     0  
+M  $    *     0    (    +    #     H    !     @    L    ,    
+M"@    $    "    "P    P    -     0    (    +    #     X    "
+M     @    $    !    #P    $    "    "P    P    0    $0   !( 
+M   !     @    L    ,    $P    $    "    %    !4    6    %P  
+M  $    "    "P    P    8     0    (    +    #    !D    :    
+M&P    $    "    "P    P    <     0    (    +    #    !T     
+M     !  "K %K___          D0  JP!:___P         1$  ,$ 7/__\ 
+M        &!  #!0%S___         !\0  P8!<___P         E $ !P!@@
+M  (         +1  BH 4K___     P   #$ 0!L<%L___P    4    Z $ %
+MD!@@  $    &    2P! !: 8(  "    !    %@ 0 .L&"  A0    <   !=
+M $ &D!@@  $         8@!  B@8(  $         &X 0 (P&"  !@      
+M  !V $ "/!@@  @    $    A1  "Q %P  (    !    (P0  L1!<  "   
+M  0   ":$  +$@7   @    $    JA  "Q0%P  #    !    +(0  L6!<  
+M P    0   #!$  +& 7   D    $    TA  "QP%P  $    !    -@0  L@
+M!<  !     0   #E$  +) 7   H    $    ]!  "R@%P  %    !    /L0
+M  LL!<  !0    0   $)$  +, 7   L    $   !&1  "S0%P  &    !   
+M 2$0  LX!<  !P    0   $J$  +0 7   T    $   !-Q  "T(%P  3    
+M!    4L0  M$!<  &0    0   %A$  +2 7  !\    $   !;Q  "TP%P  E
+M    !    800  M0!<  *P    0   &;$  +6 7  #$    $   !IQ  "V %
+MP  W    !    ;H0  MH!<  /0    0   '/$  +< 7  $,    $   !W!  
+M"W@%P !)    !    ? 0  N !<  3P    0   (&$  +B 7  %4    $   "
+M%!  8_ $8 !;    !    B,0  N0!<  80    0   (R$  +E 7  &(    $
+M   "2!  "Y@%P !C    !    F 0  N<!<  9     0   )P$  +H 7  &4 
+M   $   "AQ  "Z0%P !F    !    J 0  NH!<  9P    0   *N$  +K 7 
+M &@    $   "PQ  "[ %P !I    !    MH0  NT!<  :@    0   +I$  +
+MN 7  &L    $   "_Q  "[P%P !L    !    Q<0  O !<  ;0    0   ,G
+M$  +Q 7  &X    $   #.!  8\ $8 !R    !    T(0 &/8!&  >     0 
+M  -,$  +R 7  'X    $   #5!  "] %P "$    !    UT 0 )0&"  (0  
+M  0   -I $ ":!@@ "4    $   #? !  H 8(  I    !    Y$ 0 *8&"  
+M+0    0   .> $ "L!@@ #$    $   #L@!  L@8(  U    !    \@ 0 +@
+M&"  .0    0   /3 $ "^!@@ #T    $   #Y0!  Q 8( !!    !    _D 
+M0 ,H&"  10    0   0% $ #0!@@ $D    $   $& !  U@8( !-    !   
+M!"T 0 -P&"  40    0   0Z $ #C!@@ %4    $   $2!  "]@%P "^    
+M!   !$\0 &,P!&  W     0   16$  +W 7  .4    $   $7A  "^ %P #N
+M    !   !&D0  OD!<  ]@    0   1Q$  +Z 7  /X    &   $>Q     $
+M3___    "   !(( 0 ;0&"   0    D   2) $ 'T!@@  $    *   $D ! 
+M"( 8(  !    #0  !)8 0 B@&"   0    X   2< $ (P!@@  $    /   $
+MHP! "] 8(  !    !P  !*H0  K0!:___P   !    2^ $ ,.!@@  4    1
+M   $S0! #* 8(  !    $@  !-8 0!4P&"   0   !,   3< $ 50!@@  $ 
+M   0   $Y ! "_ 8(  #    %   !.L0  *@!$___P   !0   3V$  $- 1/
+M__\    5   $^Q  "P %K___    %   !000  KP!:___P   !0   4-$  0
+M  1O__\    4   %%!  0  $;___    %   !1L0 & (!&___P   !$   4B
+M $ -V!@@  4    1   %*0! #1@8(  #    %@  !3  0!AH&"  "    !< 
+M  4U $ 9P!@@  $    1   %/ ! $5 8(  )    $0  !44 0 \@&"  !P  
+M !@   5- $ 9X!@@  $    1   %5 ! $F@8(  +    $0  !5P 0!38&"  
+M#P   !D   5E $ :#!@@  ,    1   %<0! $W08(  -    %@  !7H 0!50
+M&"  !@   !H   6! $ :(!@@  $    5   %B1  #!P%S___    %0  !8\0
+M  P@!<___P   !4   66$  ,) 7/__\    5   %G1  #"@%S___    %0  
+M!:00  PL!<___P   !4   6K$  ,, 7/__\    5   %LA  ##0%S___    
+M%0  !;D0  PX!<___P   !4   7 $  ,/ 7/__\    5   %R!  #$ %S___
+M    %0  !<\0  Q$!<___P   !4   74$  +! 6O__\    ;   %YP! &H 8
+M(  !    &P  !>T 0!JP&"  !    !8   7R $ 8J!@@  H    9   %^@! 
+M&@ 8(  !    '   !@, 0!KP&"   0   !L   8*$ "G0!1O__\    ;   &
+I#A  "H $3___    &P  !A80  J$!$___P  __\   8>$ "G0!1O__\;
+end
diff --git a/gdb/testsuite/gdb.base/mips_pro.c b/gdb/testsuite/gdb.base/mips_pro.c
new file mode 100644 (file)
index 0000000..cef975d
--- /dev/null
@@ -0,0 +1,98 @@
+/* Tests regarding examination of prologues.  */
+
+int
+inner (z)
+     int z;
+{
+  return 2 * z;
+}
+
+/* The native compiler seems to lack asm().  */
+
+#if defined (__GNUC__) && defined (__mips__)
+/* This is the verbatim output corresponding to the function middle.
+   Label names have been changed to avoid conflicts.  It is here as
+   asm() so we don't have to worry that (a) the compiler might change
+   how it does things, and (b) we'd have to insure it gets compiled
+   with gcc -O2.  */
+
+asm ("\n\
+       .text \n\
+       .align 2 \n\
+       .globl  middle \n\
+       .loc    1 22 \n\
+\n\
+       .loc    1 21 \n\
+       .ent    middle \n\
+middle: \n\
+       .frame  $sp,24,$31      # vars= 0, regs= 1/0, args = 16, extra= 0 \n\
+       .mask   0x80000000,-8 \n\
+       .fmask  0x00000000,0 \n\
+       subu    $sp,$sp,24 \n\
+\n\
+       .loc    1 23 \n\
+       .set    noreorder \n\
+       .set    nomacro \n\
+       beq     $4,$0,middle_lab0 \n\
+       sw      $31,16($sp) \n\
+       .set    macro \n\
+       .set    reorder \n\
+\n\
+\n\
+       .loc    1 26 \n\
+       .set    noreorder \n\
+       .set    nomacro \n\
+       jal     inner \n\
+       li      $4,0x00000006           # 6 \n\
+       .set    macro \n\
+       .set    reorder \n\
+\n\
+       j       middle_lab1 \n\
+middle_lab0: \n\
+\n\
+       .loc    1 24 \n\
+       .set    noreorder \n\
+       .set    nomacro \n\
+       jal     inner \n\
+       li      $4,0x00000005           # 5 \n\
+       .set    macro \n\
+       .set    reorder \n\
+\n\
+middle_lab1: \n\
+       .set    noreorder \n\
+       lw      $31,16($sp) \n\
+       nop \n\
+       j       $31 \n\
+       addu    $sp,$sp,24 \n\
+       .set    reorder \n\
+       .end    middle \n\
+");
+#if 0
+/* Not necessary, and loses if gcc is not using stabs.  */
+asm (".stabs \"middle:F1\",36,0,13,middle");
+asm (".stabs \"x:p1\",160,0,13,0");
+#endif
+#else
+int
+middle (x)
+     int x;
+{
+  if (x == 0)
+    return inner (5);
+  else
+    return inner (6);
+}
+#endif
+
+int
+top (y)
+     int y;
+{
+  return middle (y + 1);
+}
+
+int
+main (argc, argv)
+{
+  return top (-1) + top (1);
+}
diff --git a/gdb/testsuite/gdb.base/nodebug.c b/gdb/testsuite/gdb.base/nodebug.c
new file mode 100644 (file)
index 0000000..5428e66
--- /dev/null
@@ -0,0 +1,35 @@
+/* Test that things still (sort of) work when compiled without -g.  */
+
+int dataglobal = 3;                    /* Should go in global data */
+static int datalocal = 4;              /* Should go in local data */
+int bssglobal;                         /* Should go in global bss */
+static int bsslocal;                   /* Should go in local bss */
+
+int
+inner (x)
+     int x;
+{
+  return 2 * x;
+}
+
+static int
+middle (x)
+     int x;
+{
+  return 2 * inner (x);
+}
+
+int
+top (x)
+     int x;
+{
+  return 2 * middle (x);
+}
+
+int 
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  return top (argc);
+}
diff --git a/gdb/testsuite/gdb.base/opaque-info.c b/gdb/testsuite/gdb.base/opaque-info.c
new file mode 100644 (file)
index 0000000..f0317d2
--- /dev/null
@@ -0,0 +1,5 @@
+#if defined (__GNUC__)
+set gcc_compiled __GNUC__
+#else
+set gcc_compiled 0
+#endif
diff --git a/gdb/testsuite/gdb.base/opaque.exp b/gdb/testsuite/gdb.base/opaque.exp
new file mode 100644 (file)
index 0000000..544023d
--- /dev/null
@@ -0,0 +1,367 @@
+# Copyright (C) 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Fred Fish. (fnf@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+set binfile "opaque"
+set srcfile $binfile.c
+
+if ![file exists $objdir/$subdir/$binfile] then {
+    perror "$objdir/$subdir/$binfile does not exist."
+    return 0
+}
+
+# Start with a fresh gdb.
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $objdir/$subdir/$binfile
+
+source gdb.base/opaque-info.exp
+
+#
+# Test basic opaque structure handling (statically).
+# The ordering of the tests is significant.  We first try the things that
+# might fail if gdb fails to connect the uses of opaque structures to
+# the actual opaque structure definition.
+
+# When we start up, gdb sets the file containing main() as the current
+# source file.  The actual structure foo is defined in a different file.
+# A pointer (foop) to an instance of the opaque struct is defined in the same
+# source file as main().  Ensure that gdb correctly "connected" the definition
+# in the other file with the pointer to the opaque struct in the file containing
+# "foop".
+
+# Define a procedure to set up an xfail for all targets that do not support
+# this sort of cross reference.
+# Any target gcc that has a DBX_NO_XREFS definition in its config file will
+# not support it.
+# XCOFF does not seem to support it either.  See the very end of gcc/xcoffout.h.
+# Native alpha ecoff doesn't support it either.
+# I don't think this type of cross reference works for any COFF target
+# either.
+
+proc setup_xfail_on_opaque_pointer {} {
+       global gcc_compiled
+
+       setup_xfail "rs6000-*-*" "a29k-*-udi" "vax-*-*" "i*86-sequent-bsd*"
+       if {!$gcc_compiled} then {
+               setup_xfail "alpha-*-*"
+       }
+}
+
+setup_xfail_on_opaque_pointer
+send "whatis foop\n"
+expect {
+       -re "whatis foop\r
+type = struct foo \[*\]+\r
+$prompt $" { pass "whatis on opaque struct pointer (statically)"}
+       -re ".*$prompt $"       { fail "whatis on opaque struct *" }
+       timeout                 { fail "(timeout) whatis on opaque struct *" }
+}
+
+
+# Ensure that we know the form of the structure that foop points to.
+
+setup_xfail_on_opaque_pointer
+send "ptype foop\n"
+expect {
+       -re "ptype foop\r
+type = struct foo \{\r
+    int a;\r
+    int b;\r
+\} \[*\]+\r
+$prompt $" { pass "ptype on opaque struct pointer (statically)" }
+       -re ".*$prompt $"       { fail "ptype on opaque struct *" }
+       timeout                 { fail "(timeout) ptype on opaque struct *" }
+}
+
+
+# An instance of the opaque structure (afoo) is defined in a different file.
+# Ensure that we can locate afoo and the structure definition.
+
+send "whatis afoo\n"
+expect {
+       -re "whatis afoo\r
+type = struct foo\r
+$prompt $" { pass "whatis on opaque struct instance (statically)" }
+       -re ".*$prompt $"       { fail "whatis on opaque struct" }
+       timeout                 { fail "(timeout) whatis on opaque struct" }
+}
+
+
+# Ensure that we know the form of "afoo".
+
+send "ptype afoo\n"
+expect {
+       -re "ptype afoo\r
+type = struct foo \{\r
+    int a;\r
+    int b;\r
+\}\r
+$prompt $" { pass "ptype on opaque struct instance (statically)" }
+       -re ".*$prompt $"       { fail "ptype on opaque struct instance" }
+       timeout                 { fail "(timeout) ptype on opaque struct" }
+}
+
+
+# Ensure that we know what a struct foo looks like.
+
+send "ptype struct foo\n"
+expect {
+       -re "ptype struct foo\r
+type = struct foo \{\r
+    int a;\r
+    int b;\r
+\}\r
+$prompt $" { pass "ptype on opaque struct tagname (statically)" }
+       -re ".*$prompt $"       { fail "ptype on opaque struct" }
+       timeout                 { fail "(timeout) ptype on opaque struct" }
+}
+
+
+#
+# Done with static tests, now test dynamic opaque structure handling.
+# We reload the symbol table so we forget about anything we might
+# have learned during the static tests.
+#
+
+if [istarget "mips-idt-*"] then {
+    # Restart because IDT/SIM runs out of file descriptors.
+    gdb_exit
+    gdb_start
+}
+gdb_reinitialize_dir $srcdir/$subdir
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+}
+gdb_load $objdir/$subdir/$binfile
+
+# Set breakpoint on main, where struct foo is incomplete.
+
+send "break main\n"
+expect {
+       -re "Breakpoint.*at.* file .*opaque0.c, line.*$prompt $" {}
+       -re ".*$prompt $"       { fail "setting breakpoint at main" }
+       timeout                 { fail "(timeout) setting breakpoint" }
+}
+
+
+# Run until break at main.  Struct foo is opaque in the file containing
+# main().
+
+send "run\n"
+expect {
+       -re "Starting program:.*Breakpoint 1.*$prompt $" {}
+       -re ".*$prompt $"       { fail "run until main()" }
+       timeout                 { fail "(timeout) run until main()" }
+}
+
+
+# The current source file is now the one containing main().  The structure foo
+# is defined in a different file, but we have a pointer to an instance of
+# the opaque structure in the current file.  Ensure we know it's type.
+
+setup_xfail_on_opaque_pointer
+send "whatis foop\n"
+expect {
+       -re "whatis foop\r
+type = struct foo \[*\]+\r
+$prompt $" { pass "whatis on opaque struct pointer (dynamically)"}
+       -re ".*$prompt $"       { fail "whatis on opaque struct pointer" }
+       timeout                 { fail "(timeout) whatis on opaque struct ptr" }
+}
+
+
+# Ensure that we know the form of the thing foop points to.
+
+setup_xfail_on_opaque_pointer
+send "ptype foop\n"
+expect {
+       -re "ptype foop\r
+type = struct foo \{\r
+    int a;\r
+    int b;\r
+\} \[*\]+\r
+$prompt $" { pass "ptype on opaque struct pointer (dynamically)" }
+       -re ".*$prompt $"       { fail "ptype on opaque struct *" }
+       timeout                 { fail "(timeout) ptype on opaque struct *" }
+}
+
+
+send "whatis afoo\n"
+expect {
+       -re "whatis afoo\r
+type = struct foo\r
+$prompt $" { pass "whatis on opaque struct instance (dynamically)" }
+       -re ".*$prompt $"       { fail "whatis on opaque struct" }
+       timeout                 { fail "(timeout) whatis on opaque struct" }
+}
+
+
+# Ensure that we know the form of afoo, an instance of a struct foo.
+
+send "ptype afoo\n"
+expect {
+       -re "ptype afoo\r
+type = struct foo \{\r
+    int a;\r
+    int b;\r
+\}\r
+$prompt $" { pass "ptype on opaque struct instance (dynamically)" }
+       -re ".*$prompt $"       { fail "ptype on opaque struct instance" }
+       timeout                 { fail "(timeout) ptype on opaque struct" }
+}
+
+
+# Ensure that we know the form of an explicit struct foo.
+
+send "ptype struct foo\n"
+expect {
+       -re "ptype struct foo\r
+type = struct foo \{\r
+    int a;\r
+    int b;\r
+\}\r
+$prompt $" { pass "ptype on opaque struct tagname (dynamically)" }
+       -re ".*$prompt $"       { fail "ptype on opaque struct" }
+       timeout                 { fail "(timeout) ptype on opaque struct" }
+}
+
+
+# Now reload the symbols again so we forget about anything we might
+# have learned reading the symbols during the previous tests.
+
+gdb_reinitialize_dir $srcdir/$subdir
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+}
+gdb_load $objdir/$subdir/$binfile
+
+# Disable the breakoint on main().
+# Set breakpoint on getfoo, where struct foo is complete.
+
+send "disable 1\n"
+expect {
+       -re ".*$prompt $"       {}
+       timeout                 { fail "(timeout) disabling breakpoint" }
+}
+
+
+send "break getfoo\n"
+expect {
+       -re "Breakpoint.*at.* file .*opaque1\.c, line.*$prompt $" {}
+       -re ".*$prompt $"       { fail "setting breakpoint at getfoo" }
+       timeout                 { fail "(timeout) setting breakpoint" }
+}
+
+
+# Run until break at getfoo().  Struct foo is defined here.
+# Retry all the tests we we tried at main() where struct foo was opaque.
+
+send "run\n"
+expect {
+       -re "Starting program:.*Breakpoint.*$prompt $" {}
+       -re ".*$prompt $"       { fail "run until getfoo()" }
+       timeout                 { fail "(timeout) run until getfoo()" }
+}
+
+
+# Ensure that we know what foop is.
+
+setup_xfail_on_opaque_pointer
+send "whatis foop\n"
+expect {
+       -re "whatis foop\r
+type = struct foo \[*\]+\r
+$prompt $" { pass "whatis on opaque struct pointer (dynamically)"}
+       -re ".*$prompt $"       { fail "whatis on opaque struct pointer" }
+       timeout                 { fail "(timeout) whatis on opaque struct ptr" }
+}
+
+
+# Ensure that we know the form of the thing foop points to.
+
+setup_xfail_on_opaque_pointer
+send "ptype foop\n"
+expect {
+       -re "ptype foop\r
+type = struct foo \{\r
+    int a;\r
+    int b;\r
+\} \[*\]+\r
+$prompt $" { pass "ptype on opaque struct pointer (dynamically)" }
+       -re ".*$prompt $"       { fail "ptype on opaque struct *" }
+       timeout                 { fail "(timeout) ptype on opaque struct *" }
+}
+
+
+send "whatis afoo\n"
+expect {
+       -re "whatis afoo\r
+type = struct foo\r
+$prompt $" { pass "whatis on opaque struct instance (dynamically)" }
+       -re ".*$prompt $"       { fail "whatis on opaque struct" }
+       timeout                 { fail "(timeout) whatis on opaque struct" }
+}
+
+
+# Ensure that we know the form of afoo, an instance of a struct foo.
+
+send "ptype afoo\n"
+expect {
+       -re "ptype afoo\r
+type = struct foo \{\r
+    int a;\r
+    int b;\r
+\}\r
+$prompt $" { pass "ptype on opaque struct instance (dynamically)" }
+       -re ".*$prompt $"       { fail "ptype on opaque struct instance" }
+       timeout                 { fail "(timeout) ptype on opaque struct" }
+}
+
+
+# Ensure that we know the form of an explicit struct foo.
+
+send "ptype struct foo\n"
+expect {
+       -re "ptype struct foo\r
+type = struct foo \{\r
+    int a;\r
+    int b;\r
+\}\r
+$prompt $" { pass "ptype on opaque struct tagname (dynamically)" }
+       -re ".*$prompt $"       { fail "ptype on opaque struct" }
+       timeout                 { fail "(timeout) ptype on opaque struct" }
+}
+
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+}
diff --git a/gdb/testsuite/gdb.base/opaque0.c b/gdb/testsuite/gdb.base/opaque0.c
new file mode 100644 (file)
index 0000000..e5a343c
--- /dev/null
@@ -0,0 +1,16 @@
+/*  Note that struct foo is opaque (never defined) in this file.  This
+    is allowed by C since this file does not reference any members of
+    the structure.  The debugger needs to be able to associate this
+    opaque structure definition with the full definition in another
+    file.
+*/
+
+struct foo *foop;
+extern struct foo *getfoo ();
+
+int main ()
+{
+    foop = getfoo ();
+    putfoo (foop);
+    return 0;
+}
diff --git a/gdb/testsuite/gdb.base/opaque1.c b/gdb/testsuite/gdb.base/opaque1.c
new file mode 100644 (file)
index 0000000..4a3c855
--- /dev/null
@@ -0,0 +1,18 @@
+struct foo {
+    int a;
+    int b;
+} afoo = { 1, 2};
+
+struct foo *getfoo ()
+{
+    return (&afoo);
+}
+
+#ifdef __STDC__
+void putfoo (struct foo *foop)
+#else
+void putfoo (foop)
+     struct foo *foop;
+#endif
+{
+}
diff --git a/gdb/testsuite/gdb.base/printcmds.c b/gdb/testsuite/gdb.base/printcmds.c
new file mode 100644 (file)
index 0000000..79ba4d2
--- /dev/null
@@ -0,0 +1,97 @@
+/* This table is used as a source for every ascii character.
+   It is explicitly unsigned to avoid differences due to native characters
+   being either signed or unsigned. */
+
+unsigned char ctable1[256] = {
+  0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007,
+  0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017,
+  0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027,
+  0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037,
+  0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047,
+  0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057,
+  0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067,
+  0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077,
+  0100, 0101, 0102, 0103, 0104, 0105, 0106, 0107,
+  0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117,
+  0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127,
+  0130, 0131, 0132, 0133, 0134, 0135, 0136, 0137,
+  0140, 0141, 0142, 0143, 0144, 0145, 0146, 0147,
+  0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157,
+  0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167,
+  0170, 0171, 0172, 0173, 0174, 0175, 0176, 0177,
+  0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207,
+  0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217,
+  0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227,
+  0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237,
+  0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247,
+  0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257,
+  0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267,
+  0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277,
+  0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307,
+  0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317,
+  0320, 0321, 0322, 0323, 0324, 0325, 0326, 0327,
+  0330, 0331, 0332, 0333, 0334, 0335, 0336, 0337,
+  0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347,
+  0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357,
+  0360, 0361, 0362, 0363, 0364, 0365, 0366, 0367,
+  0370, 0371, 0372, 0373, 0374, 0375, 0376, 0377
+};
+
+unsigned char ctable2[] = {
+  'a','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X',
+  'a','a','X','X','X','X','X','X','X','X','X','X','X','X','X','X',
+  'a','a','a','X','X','X','X','X','X','X','X','X','X','X','X','X',
+  'a','a','a','a','X','X','X','X','X','X','X','X','X','X','X','X',
+  'a','a','a','a','a','X','X','X','X','X','X','X','X','X','X','X',
+  'a','a','a','a','a','a','X','X','X','X','X','X','X','X','X','X',
+  'a','a','a','a','a','a','a','X','X','X','X','X','X','X','X','X',
+  'a','a','a','a','a','a','a','a','X','X','X','X','X','X','X','X',
+  'a','a','a','a','a','a','a','a','a','X','X','X','X','X','X','X',
+  'a','a','a','a','a','a','a','a','a','a','X','X','X','X','X','X',
+  'a','a','a','a','a','a','a','a','a','a','a','X','X','X','X','X',
+  'a','a','a','a','a','a','a','a','a','a','a','a','X','X','X','X',
+  'a','a','a','a','a','a','a','a','a','a','a','a','a','X','X','X',
+  'a','a','a','a','a','a','a','a','a','a','a','a','a','a','X','X',
+  'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','X',
+  'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a'
+};
+
+/* Single and multidimensional arrays to test access and printing of array
+   members. */
+
+int int1dim[12] = {0,1,2,3,4,5,6,7,8,9,10,11};
+int int2dim[3][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11}};
+int int3dim[2][3][2] = {{{0,1},{2,3},{4,5}},{{6,7},{8,9},{10,11}}};
+int int4dim[1][2][3][2] = {{{{0,1},{2,3},{4,5}},{{6,7},{8,9},{10,11}}}};
+
+char *teststring = "teststring contents";
+
+/* Test printing of a struct containing character arrays. */
+
+struct some_arrays {
+    unsigned char array1[4];
+    unsigned char array2[1];
+    unsigned char array3[1];
+    unsigned char array4[2];
+    unsigned char array5[4];
+} arrays = {
+  {'a', 'b', 'c', '\0'},
+  {'d'},
+  {'e'},
+  {'f', 'g' },
+  {'h', 'i', 'j', '\0'}
+};
+
+struct some_arrays *parrays = &arrays;
+
+/* -- */
+
+main ()
+{
+  malloc(1);
+
+  /* Prevent AIX linker from removing variables.  */
+  return ctable1[0] + ctable2[0] + int1dim[0] + int2dim[0][0]
+    + int3dim[0][0][0] + int4dim[0][0][0][0] + teststring[0] +
+      *parrays -> array1;
+}
diff --git a/gdb/testsuite/gdb.base/printcmds.exp b/gdb/testsuite/gdb.base/printcmds.exp
new file mode 100644 (file)
index 0000000..9993888
--- /dev/null
@@ -0,0 +1,1523 @@
+# Copyright (C) 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Fred Fish. (fnf@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+set binfile "printcmds"
+set srcfile $binfile.c
+
+if ![file exists $objdir/$subdir/$binfile] then {
+    perror "$objdir/$subdir/$binfile does not exist"
+    continue
+}
+
+# Set the current language to C.  This counts as a test.  If it
+# fails, then we skip the other tests.
+
+proc set_lang_c {} {
+    global prompt
+
+    send "set language c\n"
+    expect {
+       -re ".*$prompt $" {}
+       timeout { fail "set language c (timeout)" ; return 0 }
+    }
+
+    send "show language\n"
+    expect {
+       -re ".* source language is \"c\".*$prompt $" {
+           pass "set language to \"c\""
+           return 1
+       }
+       -re ".*$prompt $" {
+           fail "setting language to \"c\""
+           return 0
+       }
+       timeout {
+           fail "can't show language (timeout)"
+           return 0
+       }
+    }
+}
+
+# Testing printing of a specific value.  Increment passcount for
+# success or issue fail message for failure.  In both cases, return
+# a 1 to indicate that more tests can proceed.  However a timeout
+# is a serious error, generates a special fail message, and causes
+# a 0 to be returned to indicate that more tests are likely to fail
+# as well.
+
+proc prt_accept { sendthis expectthis } {
+    global prompt
+    global passcount
+    global xfail_flag
+
+    send "$sendthis\n"
+    expect {
+       -re ".* = $expectthis\r\n$prompt $" {
+           if $xfail_flag then { pass "$sendthis" }
+           incr passcount
+           return 1
+       }
+       -re ".*$prompt $" {
+           fail "$sendthis"
+           return 1
+       }
+       timeout {
+           fail "$sendthis (timeout)"
+           return 0
+       }
+    }
+}
+
+proc test_integer_literals_accepted {} {
+    global prompt
+    global passcount
+
+    set passcount 0
+
+    # Test various decimal values.
+
+    prt_accept "p 123" "123"
+    prt_accept "p -123" "-123"
+    prt_accept "p/d 123" "123"
+
+    # Test various octal values.
+
+    prt_accept "p 0123" "83"
+    prt_accept "p 00123" "83"
+    prt_accept "p -0123" "-83"
+    prt_accept "p/o 0123" "0123"
+
+    # Test various hexadecimal values.
+
+    prt_accept "p 0x123" "291"
+    prt_accept "p -0x123" "-291"
+    prt_accept "p 0x0123" "291"
+    prt_accept "p -0x0123" "-291"
+    prt_accept "p 0xABCDEF" "11259375"
+    prt_accept "p 0xabcdef" "11259375"
+    prt_accept "p 0xAbCdEf" "11259375"
+    prt_accept "p/x 0x123" "0x123"
+
+    if $passcount then {
+       pass "$passcount correct integer literals printed"
+    }
+}
+
+proc test_character_literals_accepted {} {
+    global prompt
+    global passcount
+
+    set passcount 0
+
+    prt_accept "p 'a'" "97 'a'"
+    prt_accept "p/c 'a'" "97 'a'"
+    prt_accept "p/x 'a'" "0x61"
+    prt_accept "p/d 'a'" "97"
+    prt_accept "p/t 'a'" "1100001"
+    prt_accept "p '\\141'" "97 'a'"
+    prt_accept "p/x '\\377'" "0xff"
+    # Note "p '\''" => "= 39 '\''"
+    prt_accept "p '''" "39 '\[\\'\]+'"
+    # Note "p '\\'" => "= 92 '\\'"
+    prt_accept "p '\\\\'" "92 '\\\\\\\\'"
+
+    if $passcount then {
+       pass "$passcount correct character literals printed"
+    }
+}
+
+# Testing printing of a specific value.  Increment passcount for
+# success or issue fail message for failure.  In both cases, return
+# a 1 to indicate that more tests can proceed.  However a timeout
+# is a serious error, generates a special fail message, and causes
+# a 0 to be returned to indicate that more tests are likely to fail
+# as well.
+#
+# Note we aren't too selective about what sort of error is printed,
+# just that *some* error is printed.
+
+proc prt_reject { sendthis } {
+    global prompt
+    global passcount
+
+    send "$sendthis\n"
+    expect {
+       -re ".*Invalid syntax in expression.*$prompt $" {
+           incr passcount
+           return 1
+       }
+       -re ".*Junk after end of expression.*$prompt $" {
+           incr passcount
+           return 1
+       }
+       -re ".*Invalid number.*$prompt $" {
+           incr passcount
+           return 1
+       }
+       -re ".*Invalid character constant.*$prompt $" {
+           incr passcount
+           return 1
+       }
+       -re ".*No symbol table is loaded.*$prompt $" {
+           incr passcount
+           return 1
+       }
+       -re ".*No symbol .* in current context.*$prompt $" {
+           incr passcount
+           return 1
+       }
+       -re ".*$prompt $" {
+           fail "$sendthis not properly rejected"
+           return 1
+       }
+       timeout {
+           fail "$sendthis (timeout)"
+           return 0
+       }
+    }
+}
+
+proc test_integer_literals_rejected {} {
+    global prompt
+    global passcount
+
+    set passcount 0
+
+    prt_reject "p 0x" 
+    prt_reject "p ''" 
+    prt_reject "p '\'"
+
+    # Note that this turns into "p '\\\'" at gdb's input.
+    prt_reject "p '\\\\\\'"
+
+    # Test various decimal values.
+
+    prt_reject "p DEADBEEF"
+
+    # Gdb currently fails this test for all configurations.  The C
+    # lexer thinks that 123DEADBEEF is a floating point number, but
+    # then fails to notice that atof() only eats the 123 part.
+    # FIXME:  This should be put into PRMS.
+
+    setup_xfail "*-*-*"
+    prt_reject "p 123DEADBEEF"
+
+    # Test various octal values.
+
+    prt_reject "p 09" 
+    prt_reject "p 079" 
+
+    # Test various hexadecimal values.
+
+    prt_reject "p 0xG" 
+    prt_reject "p 0xAG" 
+
+    if $passcount then {
+       pass "$passcount incorrect integer literals rejected"
+    }
+}
+
+proc test_print_all_chars {} {
+    global prompt
+    global passcount
+
+    set passcount 0
+
+    prt_accept "p ctable1\[0\]"   "0 '\\\\000'"
+    prt_accept "p ctable1\[1\]"   "1 '\\\\001'"
+    prt_accept "p ctable1\[2\]"   "2 '\\\\002'"
+    prt_accept "p ctable1\[3\]"   "3 '\\\\003'"
+    prt_accept "p ctable1\[4\]"   "4 '\\\\004'"
+    prt_accept "p ctable1\[5\]"   "5 '\\\\005'"
+    prt_accept "p ctable1\[6\]"   "6 '\\\\006'"
+    prt_accept "p ctable1\[7\]"   "7 '\\\\a'"
+    prt_accept "p ctable1\[8\]"   "8 '\\\\b'"
+    prt_accept "p ctable1\[9\]"   "9 '\\\\t'"
+    prt_accept "p ctable1\[10\]"  "10 '\\\\n'"
+    prt_accept "p ctable1\[11\]"  "11 '\\\\013'"
+    prt_accept "p ctable1\[12\]"  "12 '\\\\f'"
+    prt_accept "p ctable1\[13\]"  "13 '\\\\r'"
+    prt_accept "p ctable1\[14\]"  "14 '\\\\016'"
+    prt_accept "p ctable1\[15\]"  "15 '\\\\017'"
+    prt_accept "p ctable1\[16\]"  "16 '\\\\020'"
+    prt_accept "p ctable1\[17\]"  "17 '\\\\021'"
+    prt_accept "p ctable1\[18\]"  "18 '\\\\022'"
+    prt_accept "p ctable1\[19\]"  "19 '\\\\023'"
+    prt_accept "p ctable1\[20\]"  "20 '\\\\024'"
+    prt_accept "p ctable1\[21\]"  "21 '\\\\025'"
+    prt_accept "p ctable1\[22\]"  "22 '\\\\026'"
+    prt_accept "p ctable1\[23\]"  "23 '\\\\027'"
+    prt_accept "p ctable1\[24\]"  "24 '\\\\030'"
+    prt_accept "p ctable1\[25\]"  "25 '\\\\031'"
+    prt_accept "p ctable1\[26\]"  "26 '\\\\032'"
+    prt_accept "p ctable1\[27\]"  "27 '\\\\e'"
+    prt_accept "p ctable1\[28\]"  "28 '\\\\034'"
+    prt_accept "p ctable1\[29\]"  "29 '\\\\035'"
+    prt_accept "p ctable1\[30\]"  "30 '\\\\036'"
+    prt_accept "p ctable1\[31\]"  "31 '\\\\037'"
+    prt_accept "p ctable1\[32\]"  "32 ' '"
+    prt_accept "p ctable1\[33\]"  "33 '!'"
+    prt_accept "p ctable1\[34\]"  "34 '\"'"
+    prt_accept "p ctable1\[35\]"  "35 '#'"
+    prt_accept "p ctable1\[36\]"  "36 '\\\$'"
+    prt_accept "p ctable1\[37\]"  "37 '%'"
+    prt_accept "p ctable1\[38\]"  "38 '&'"
+    prt_accept "p ctable1\[39\]"  "39 '\\\\''"
+    prt_accept "p ctable1\[40\]"  "40 '\[(\]+'"
+    prt_accept "p ctable1\[41\]"  "41 '\[)\]+'"
+    prt_accept "p ctable1\[42\]"  "42 '\[*\]+'"
+    prt_accept "p ctable1\[43\]"  "43 '\[+\]+'"
+    prt_accept "p ctable1\[44\]"  "44 ','"
+    prt_accept "p ctable1\[45\]"  "45 '-'"
+    prt_accept "p ctable1\[46\]"  "46 '.'"
+    prt_accept "p ctable1\[47\]"  "47 '/'"
+    prt_accept "p ctable1\[48\]"  "48 '0'"
+    prt_accept "p ctable1\[49\]"  "49 '1'"
+    prt_accept "p ctable1\[50\]"  "50 '2'"
+    prt_accept "p ctable1\[51\]"  "51 '3'"
+    prt_accept "p ctable1\[52\]"  "52 '4'"
+    prt_accept "p ctable1\[53\]"  "53 '5'"
+    prt_accept "p ctable1\[54\]"  "54 '6'"
+    prt_accept "p ctable1\[55\]"  "55 '7'"
+    prt_accept "p ctable1\[56\]"  "56 '8'"
+    prt_accept "p ctable1\[57\]"  "57 '9'"
+    prt_accept "p ctable1\[58\]"  "58 ':'"
+    prt_accept "p ctable1\[59\]"  "59 ';'"
+    prt_accept "p ctable1\[60\]"  "60 '<'"
+    prt_accept "p ctable1\[61\]"  "61 '='"
+    prt_accept "p ctable1\[62\]"  "62 '>'"
+    prt_accept "p ctable1\[63\]"  "63 '\\?'"
+    prt_accept "p ctable1\[64\]"  "64 '@'"
+    prt_accept "p ctable1\[65\]"  "65 'A'"
+    prt_accept "p ctable1\[66\]"  "66 'B'"
+    prt_accept "p ctable1\[67\]"  "67 'C'"
+    prt_accept "p ctable1\[68\]"  "68 'D'"
+    prt_accept "p ctable1\[69\]"  "69 'E'"
+    prt_accept "p ctable1\[70\]"  "70 'F'"
+    prt_accept "p ctable1\[71\]"  "71 'G'"
+    prt_accept "p ctable1\[72\]"  "72 'H'"
+    prt_accept "p ctable1\[73\]"  "73 'I'"
+    prt_accept "p ctable1\[74\]"  "74 'J'"
+    prt_accept "p ctable1\[75\]"  "75 'K'"
+    prt_accept "p ctable1\[76\]"  "76 'L'"
+    prt_accept "p ctable1\[77\]"  "77 'M'"
+    prt_accept "p ctable1\[78\]"  "78 'N'"
+    prt_accept "p ctable1\[79\]"  "79 'O'"
+    prt_accept "p ctable1\[80\]"  "80 'P'"
+    prt_accept "p ctable1\[81\]"  "81 'Q'"
+    prt_accept "p ctable1\[82\]"  "82 'R'"
+    prt_accept "p ctable1\[83\]"  "83 'S'"
+    prt_accept "p ctable1\[84\]"  "84 'T'"
+    prt_accept "p ctable1\[85\]"  "85 'U'"
+    prt_accept "p ctable1\[86\]"  "86 'V'"
+    prt_accept "p ctable1\[87\]"  "87 'W'"
+    prt_accept "p ctable1\[88\]"  "88 'X'"
+    prt_accept "p ctable1\[89\]"  "89 'Y'"
+    prt_accept "p ctable1\[90\]"  "90 'Z'"
+    prt_accept "p ctable1\[91\]"  "91 '\\\['"
+    prt_accept "p ctable1\[92\]"  "92 '\\\\\\\\'"
+    prt_accept "p ctable1\[93\]"  "93 '\\\]'"
+    prt_accept "p ctable1\[94\]"  "94 '\\^'"
+    prt_accept "p ctable1\[95\]"  "95 '_'"
+    prt_accept "p ctable1\[96\]"  "96 '`'"
+    prt_accept "p ctable1\[97\]"  "97 'a'"
+    prt_accept "p ctable1\[98\]"  "98 'b'"
+    prt_accept "p ctable1\[99\]"  "99 'c'"
+    prt_accept "p ctable1\[100\]" "100 'd'"
+    prt_accept "p ctable1\[101\]" "101 'e'"
+    prt_accept "p ctable1\[102\]" "102 'f'"
+    prt_accept "p ctable1\[103\]" "103 'g'"
+    prt_accept "p ctable1\[104\]" "104 'h'"
+    prt_accept "p ctable1\[105\]" "105 'i'"
+    prt_accept "p ctable1\[106\]" "106 'j'"
+    prt_accept "p ctable1\[107\]" "107 'k'"
+    prt_accept "p ctable1\[108\]" "108 'l'"
+    prt_accept "p ctable1\[109\]" "109 'm'"
+    prt_accept "p ctable1\[110\]" "110 'n'"
+    prt_accept "p ctable1\[111\]" "111 'o'"
+    prt_accept "p ctable1\[112\]" "112 'p'"
+    prt_accept "p ctable1\[113\]" "113 'q'"
+    prt_accept "p ctable1\[114\]" "114 'r'"
+    prt_accept "p ctable1\[115\]" "115 's'"
+    prt_accept "p ctable1\[116\]" "116 't'"
+    prt_accept "p ctable1\[117\]" "117 'u'"
+    prt_accept "p ctable1\[118\]" "118 'v'"
+    prt_accept "p ctable1\[119\]" "119 'w'"
+    prt_accept "p ctable1\[120\]" "120 'x'"
+    prt_accept "p ctable1\[121\]" "121 'y'"
+    prt_accept "p ctable1\[122\]" "122 'z'"
+    prt_accept "p ctable1\[123\]" "123 '\[{\]+'"
+    prt_accept "p ctable1\[124\]" "124 '\[|\]+'"
+    prt_accept "p ctable1\[125\]" "125 '\[}\]+'"
+    prt_accept "p ctable1\[126\]" "126 '\[~\]'"
+    prt_accept "p ctable1\[127\]" "127 '\\\\177'"
+    prt_accept "p ctable1\[128\]" "128 '\\\\200'"
+    prt_accept "p ctable1\[129\]" "129 '\\\\201'"
+    prt_accept "p ctable1\[130\]" "130 '\\\\202'"
+    prt_accept "p ctable1\[131\]" "131 '\\\\203'"
+    prt_accept "p ctable1\[132\]" "132 '\\\\204'"
+    prt_accept "p ctable1\[133\]" "133 '\\\\205'"
+    prt_accept "p ctable1\[134\]" "134 '\\\\206'"
+    prt_accept "p ctable1\[135\]" "135 '\\\\207'"
+    prt_accept "p ctable1\[136\]" "136 '\\\\210'"
+    prt_accept "p ctable1\[137\]" "137 '\\\\211'"
+    prt_accept "p ctable1\[138\]" "138 '\\\\212'"
+    prt_accept "p ctable1\[139\]" "139 '\\\\213'"
+    prt_accept "p ctable1\[140\]" "140 '\\\\214'"
+    prt_accept "p ctable1\[141\]" "141 '\\\\215'"
+    prt_accept "p ctable1\[142\]" "142 '\\\\216'"
+    prt_accept "p ctable1\[143\]" "143 '\\\\217'"
+    prt_accept "p ctable1\[144\]" "144 '\\\\220'"
+    prt_accept "p ctable1\[145\]" "145 '\\\\221'"
+    prt_accept "p ctable1\[146\]" "146 '\\\\222'"
+    prt_accept "p ctable1\[147\]" "147 '\\\\223'"
+    prt_accept "p ctable1\[148\]" "148 '\\\\224'"
+    prt_accept "p ctable1\[149\]" "149 '\\\\225'"
+    prt_accept "p ctable1\[150\]" "150 '\\\\226'"
+    prt_accept "p ctable1\[151\]" "151 '\\\\227'"
+    prt_accept "p ctable1\[152\]" "152 '\\\\230'"
+    prt_accept "p ctable1\[153\]" "153 '\\\\231'"
+    prt_accept "p ctable1\[154\]" "154 '\\\\232'"
+    prt_accept "p ctable1\[155\]" "155 '\\\\233'"
+    prt_accept "p ctable1\[156\]" "156 '\\\\234'"
+    prt_accept "p ctable1\[157\]" "157 '\\\\235'"
+    prt_accept "p ctable1\[158\]" "158 '\\\\236'"
+    prt_accept "p ctable1\[159\]" "159 '\\\\237'"
+    prt_accept "p ctable1\[160\]" "160 '\\\\240'"
+    prt_accept "p ctable1\[161\]" "161 '\\\\241'"
+    prt_accept "p ctable1\[162\]" "162 '\\\\242'"
+    prt_accept "p ctable1\[163\]" "163 '\\\\243'"
+    prt_accept "p ctable1\[164\]" "164 '\\\\244'"
+    prt_accept "p ctable1\[165\]" "165 '\\\\245'"
+    prt_accept "p ctable1\[166\]" "166 '\\\\246'"
+    prt_accept "p ctable1\[167\]" "167 '\\\\247'"
+    prt_accept "p ctable1\[168\]" "168 '\\\\250'"
+    prt_accept "p ctable1\[169\]" "169 '\\\\251'"
+    prt_accept "p ctable1\[170\]" "170 '\\\\252'"
+    prt_accept "p ctable1\[171\]" "171 '\\\\253'"
+    prt_accept "p ctable1\[172\]" "172 '\\\\254'"
+    prt_accept "p ctable1\[173\]" "173 '\\\\255'"
+    prt_accept "p ctable1\[174\]" "174 '\\\\256'"
+    prt_accept "p ctable1\[175\]" "175 '\\\\257'"
+    prt_accept "p ctable1\[176\]" "176 '\\\\260'"
+    prt_accept "p ctable1\[177\]" "177 '\\\\261'"
+    prt_accept "p ctable1\[178\]" "178 '\\\\262'"
+    prt_accept "p ctable1\[179\]" "179 '\\\\263'"
+    prt_accept "p ctable1\[180\]" "180 '\\\\264'"
+    prt_accept "p ctable1\[181\]" "181 '\\\\265'"
+    prt_accept "p ctable1\[182\]" "182 '\\\\266'"
+    prt_accept "p ctable1\[183\]" "183 '\\\\267'"
+    prt_accept "p ctable1\[184\]" "184 '\\\\270'"
+    prt_accept "p ctable1\[185\]" "185 '\\\\271'"
+    prt_accept "p ctable1\[186\]" "186 '\\\\272'"
+    prt_accept "p ctable1\[187\]" "187 '\\\\273'"
+    prt_accept "p ctable1\[188\]" "188 '\\\\274'"
+    prt_accept "p ctable1\[189\]" "189 '\\\\275'"
+    prt_accept "p ctable1\[190\]" "190 '\\\\276'"
+    prt_accept "p ctable1\[191\]" "191 '\\\\277'"
+    prt_accept "p ctable1\[192\]" "192 '\\\\300'"
+    prt_accept "p ctable1\[193\]" "193 '\\\\301'"
+    prt_accept "p ctable1\[194\]" "194 '\\\\302'"
+    prt_accept "p ctable1\[195\]" "195 '\\\\303'"
+    prt_accept "p ctable1\[196\]" "196 '\\\\304'"
+    prt_accept "p ctable1\[197\]" "197 '\\\\305'"
+    prt_accept "p ctable1\[198\]" "198 '\\\\306'"
+    prt_accept "p ctable1\[199\]" "199 '\\\\307'"
+    prt_accept "p ctable1\[200\]" "200 '\\\\310'"
+    prt_accept "p ctable1\[201\]" "201 '\\\\311'"
+    prt_accept "p ctable1\[202\]" "202 '\\\\312'"
+    prt_accept "p ctable1\[203\]" "203 '\\\\313'"
+    prt_accept "p ctable1\[204\]" "204 '\\\\314'"
+    prt_accept "p ctable1\[205\]" "205 '\\\\315'"
+    prt_accept "p ctable1\[206\]" "206 '\\\\316'"
+    prt_accept "p ctable1\[207\]" "207 '\\\\317'"
+    prt_accept "p ctable1\[208\]" "208 '\\\\320'"
+    prt_accept "p ctable1\[209\]" "209 '\\\\321'"
+    prt_accept "p ctable1\[210\]" "210 '\\\\322'"
+    prt_accept "p ctable1\[211\]" "211 '\\\\323'"
+    prt_accept "p ctable1\[212\]" "212 '\\\\324'"
+    prt_accept "p ctable1\[213\]" "213 '\\\\325'"
+    prt_accept "p ctable1\[214\]" "214 '\\\\326'"
+    prt_accept "p ctable1\[215\]" "215 '\\\\327'"
+    prt_accept "p ctable1\[216\]" "216 '\\\\330'"
+    prt_accept "p ctable1\[217\]" "217 '\\\\331'"
+    prt_accept "p ctable1\[218\]" "218 '\\\\332'"
+    prt_accept "p ctable1\[219\]" "219 '\\\\333'"
+    prt_accept "p ctable1\[220\]" "220 '\\\\334'"
+    prt_accept "p ctable1\[221\]" "221 '\\\\335'"
+    prt_accept "p ctable1\[222\]" "222 '\\\\336'"
+    prt_accept "p ctable1\[223\]" "223 '\\\\337'"
+    prt_accept "p ctable1\[224\]" "224 '\\\\340'"
+    prt_accept "p ctable1\[225\]" "225 '\\\\341'"
+    prt_accept "p ctable1\[226\]" "226 '\\\\342'"
+    prt_accept "p ctable1\[227\]" "227 '\\\\343'"
+    prt_accept "p ctable1\[228\]" "228 '\\\\344'"
+    prt_accept "p ctable1\[229\]" "229 '\\\\345'"
+    prt_accept "p ctable1\[230\]" "230 '\\\\346'"
+    prt_accept "p ctable1\[231\]" "231 '\\\\347'"
+    prt_accept "p ctable1\[232\]" "232 '\\\\350'"
+    prt_accept "p ctable1\[233\]" "233 '\\\\351'"
+    prt_accept "p ctable1\[234\]" "234 '\\\\352'"
+    prt_accept "p ctable1\[235\]" "235 '\\\\353'"
+    prt_accept "p ctable1\[236\]" "236 '\\\\354'"
+    prt_accept "p ctable1\[237\]" "237 '\\\\355'"
+    prt_accept "p ctable1\[238\]" "238 '\\\\356'"
+    prt_accept "p ctable1\[239\]" "239 '\\\\357'"
+    prt_accept "p ctable1\[240\]" "240 '\\\\360'"
+    prt_accept "p ctable1\[241\]" "241 '\\\\361'"
+    prt_accept "p ctable1\[242\]" "242 '\\\\362'"
+    prt_accept "p ctable1\[243\]" "243 '\\\\363'"
+    prt_accept "p ctable1\[244\]" "244 '\\\\364'"
+    prt_accept "p ctable1\[245\]" "245 '\\\\365'"
+    prt_accept "p ctable1\[246\]" "246 '\\\\366'"
+    prt_accept "p ctable1\[247\]" "247 '\\\\367'"
+    prt_accept "p ctable1\[248\]" "248 '\\\\370'"
+    prt_accept "p ctable1\[249\]" "249 '\\\\371'"
+    prt_accept "p ctable1\[250\]" "250 '\\\\372'"
+    prt_accept "p ctable1\[251\]" "251 '\\\\373'"
+    prt_accept "p ctable1\[252\]" "252 '\\\\374'"
+    prt_accept "p ctable1\[253\]" "253 '\\\\375'"
+    prt_accept "p ctable1\[254\]" "254 '\\\\376'"
+    prt_accept "p ctable1\[255\]" "255 '\\\\377'"
+
+    if $passcount then {
+       pass "$passcount of 256 characters printed from ASCII table"
+    }
+}
+
+# Test interaction of the number of print elements to print and the
+# repeat count, set to the default of 10.
+
+proc test_print_repeats_10 {} {
+    global prompt
+    global passcount
+
+    set passcount 0
+    send "set print elements 1\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"a\"..."
+    if $passcount then {
+       pass "$passcount tests with elements = 1 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 2\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\"..."
+    if $passcount then {
+       pass "$passcount tests with elements = 2 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 3\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\"..."
+    if $passcount then {
+       pass "$passcount tests with elements = 3 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 4\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\"..."
+    if $passcount then {
+       pass "$passcount tests with elements = 4 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 5\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\"..."
+    if $passcount then {
+       pass "$passcount tests with elements = 5 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 6\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaa\"..."
+    if $passcount then {
+       pass "$passcount tests with elements = 6 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 7\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaa\"..."
+    if $passcount then {
+       pass "$passcount tests with elements = 7 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 8\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaa\"..."
+    if $passcount then {
+       pass "$passcount tests with elements = 8 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 9\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaa\"..."
+    if $passcount then {
+       pass "$passcount tests with elements = 9 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 10\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]"  "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaa\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaa\"..."
+    if $passcount then {
+       pass "$passcount tests with elements = 10 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 11\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aXXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaaX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 11 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 11 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 11 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 11 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 11 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 11 times>..."
+    if $passcount then {
+       pass "$passcount tests with elements = 11 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 12\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"a\", 'X' <repeats 11 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaXXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaaXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 11 times>, \"X\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 12 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 12 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 12 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 12 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 12 times>..."
+    if $passcount then {
+       pass "$passcount tests with elements = 12 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 13\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"a\", 'X' <repeats 12 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\", 'X' <repeats 11 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaXXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaaXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 11 times>, \"XX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 12 times>, \"X\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 13 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 13 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 13 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 13 times>..."
+    if $passcount then {
+       pass "$passcount tests with elements = 13 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 14\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"a\", 'X' <repeats 13 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\", 'X' <repeats 12 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\", 'X' <repeats 11 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaXXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaaXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 11 times>, \"XXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 12 times>, \"XX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 13 times>, \"X\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 14 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 14 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 14 times>..."
+    if $passcount then {
+       pass "$passcount tests with elements = 14 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 15\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"a\", 'X' <repeats 14 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\", 'X' <repeats 13 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\", 'X' <repeats 12 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\", 'X' <repeats 11 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaXXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaaXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 11 times>, \"XXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 12 times>, \"XXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 13 times>, \"XX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 14 times>, \"X\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 15 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 15 times>..."
+    if $passcount then {
+       pass "$passcount tests with elements = 15 and repeat count = 10"
+    }
+
+    set passcount 0
+    send "set print elements 16\n" ; expect -re "$prompt $"
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[0*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"a\", 'X' <repeats 15 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[1*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aa\", 'X' <repeats 14 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[2*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaa\", 'X' <repeats 13 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[3*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaa\", 'X' <repeats 12 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[4*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaa\", 'X' <repeats 11 times>..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[5*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaXXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[6*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaXXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[7*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaXXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[8*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaXXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[9*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"aaaaaaaaaaXXXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[10*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 11 times>, \"XXXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[11*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 12 times>, \"XXXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[12*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 13 times>, \"XXX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[13*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 14 times>, \"XX\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[14*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 15 times>, \"X\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable2\[15*16\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ 'a' <repeats 16 times>"
+    if $passcount then {
+       pass "$passcount tests with elements = 16 and repeat count = 10"
+    }
+}
+
+proc test_print_strings {} {
+    global prompt
+    global passcount
+
+    # We accept "(unsigned char *) " before the string.  char vs. unsigned char
+    # is already tested elsewhere.
+
+    # Test that setting print elements unlimited doesn't completely suppress
+    # printing; this was a bug in older gdb's.
+    send "set print elements 0\n" ; expect -re "$prompt $"
+    gdb_test "p teststring" \
+       " = (.unsigned char .. )?\"teststring contents\"\r\n"
+    send "set print elements 1\n" ; expect -re "$prompt $"
+    gdb_test "p teststring" \
+       " = (.unsigned char .. )?\"t\"...\r\n"
+    send "set print elements 5\n" ; expect -re "$prompt $"
+    gdb_test "p teststring" \
+       " = (.unsigned char .. )?\"tests\"...\r\n"
+    send "set print elements 19\n" ; expect -re "$prompt $"
+    gdb_test "p teststring" \
+       " = (.unsigned char .. )?\"teststring contents\"\r\n"
+    send "set print elements 20\n" ; expect -re "$prompt $"
+    gdb_test "p teststring" \
+       " = (.unsigned char .. )?\"teststring contents\"\r\n"
+
+    set passcount 0
+    send "set print elements 8\n" ; expect -re "$prompt $"
+
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[0\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\""
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[1\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\001\\\\002\\\\003\\\\004\\\\005\\\\006\\\\a\\\\b\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[1*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\b\\\\t\\\\n\\\\013\\\\f\\\\r\\\\016\\\\017\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[2*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\020\\\\021\\\\022\\\\023\\\\024\\\\025\\\\026\\\\027\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[3*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\030\\\\031\\\\032\\\\e\\\\034\\\\035\\\\036\\\\037\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[4*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \" !\\\\\"#\\\$%&'\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[5*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\[(\]+\[)\]+\[*\]+\\+,-./\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[6*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"01234567\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[7*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"89:;<=>\\?\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[8*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"@ABCDEFG\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[9*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"HIJKLMNO\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[10*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"PQRSTUVW\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[11*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"XYZ\\\[\\\\\\\\\\\]\\^_\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[12*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"`abcdefg\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[13*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"hijklmno\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[14*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"pqrstuvw\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[15*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"xyz\[{|}\]+\\~\\\\177\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[16*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\200\\\\201\\\\202\\\\203\\\\204\\\\205\\\\206\\\\207\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[17*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\210\\\\211\\\\212\\\\213\\\\214\\\\215\\\\216\\\\217\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[18*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\220\\\\221\\\\222\\\\223\\\\224\\\\225\\\\226\\\\227\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[19*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\230\\\\231\\\\232\\\\233\\\\234\\\\235\\\\236\\\\237\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[20*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\240\\\\241\\\\242\\\\243\\\\244\\\\245\\\\246\\\\247\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[21*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\250\\\\251\\\\252\\\\253\\\\254\\\\255\\\\256\\\\257\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[22*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\260\\\\261\\\\262\\\\263\\\\264\\\\265\\\\266\\\\267\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[23*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\270\\\\271\\\\272\\\\273\\\\274\\\\275\\\\276\\\\277\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[24*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\300\\\\301\\\\302\\\\303\\\\304\\\\305\\\\306\\\\307\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[25*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\310\\\\311\\\\312\\\\313\\\\314\\\\315\\\\316\\\\317\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[26*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\320\\\\321\\\\322\\\\323\\\\324\\\\325\\\\326\\\\327\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[27*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\330\\\\331\\\\332\\\\333\\\\334\\\\335\\\\336\\\\337\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[28*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\340\\\\341\\\\342\\\\343\\\\344\\\\345\\\\346\\\\347\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[29*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\350\\\\351\\\\352\\\\353\\\\354\\\\355\\\\356\\\\357\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[30*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\360\\\\361\\\\362\\\\363\\\\364\\\\365\\\\366\\\\367\"..."
+    setup_xfail "a29k-*-udi" 2417
+    prt_accept "p &ctable1\[31*8\]" \
+       "\[(\]+unsigned char \[*\]+\[)\]+ \"\\\\370\\\\371\\\\372\\\\373\\\\374\\\\375\\\\376\\\\377\"..."
+
+    if $passcount then {
+       pass "$passcount tests printing substrings from ASCII table"
+    }
+}
+
+proc test_print_int_arrays {} {
+    global prompt
+    global passcount
+
+    set passcount 0
+    send "set print elements 24\n" ; expect -re "$prompt $"
+
+    prt_accept "p int1dim" \
+       "{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}"
+    prt_accept "p int2dim" \
+       "{{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}}"
+    prt_accept "p int3dim" \
+       "{{{0, 1}, {2, 3}, {4, 5}}, {{6, 7}, {8, 9}, {10, 11}}}"
+    prt_accept "p int4dim" \
+       "{{{{0, 1}, {2, 3}, {4, 5}}, {{6, 7}, {8, 9}, {10, 11}}}}"
+
+    if $passcount then {
+       pass "$passcount tests printing multidimensional arrays"
+    }
+}
+
+proc test_print_char_arrays {} {
+    global prompt
+    global passcount
+    global hex
+
+    set passcount 0
+    send "set print elements 24\n" ; expect -re "$prompt $"
+    send "set print address on\n" ; expect -re "$prompt $"
+
+    prt_accept "p arrays" \
+       "{array1 = \"abc\", array2 = \"d\", array3 = \"e\", array4 = \"fg\", array5 = \"hij\"}"
+
+    prt_accept "p parrays"             "\[(\]+struct some_arrays \[*\]+\[)\]+ $hex"
+    prt_accept "p parrays->array1"     "\"abc\""
+    prt_accept "p &parrays->array1"    "\[(\]+unsigned char \[*\]+\[)\]+ $hex \"abc\""
+    prt_accept "p parrays->array2"     "\"d\""
+    prt_accept "p &parrays->array2"    "\[(\]+unsigned char \[*\]+\[)\]+ $hex \"defghij\""
+    prt_accept "p parrays->array3"     "\"e\""
+    prt_accept "p &parrays->array3"    "\[(\]+unsigned char \[*\]+\[)\]+ $hex \"efghij\""
+    prt_accept "p parrays->array4"     "\"fg\""
+    prt_accept "p &parrays->array4"    "\[(\]+unsigned char \[*\]+\[)\]+ $hex \"fghij\""
+    prt_accept "p parrays->array5"     "\"hij\""
+    prt_accept "p &parrays->array5"    "\[(\]+unsigned char \[*\]+\[)\]+ $hex \"hij\""
+
+    send "set print address off\n" ; expect -re "$prompt $"
+    if $passcount then {
+       pass "$passcount tests printing character arrays"
+    }
+}
+
+proc test_print_string_constants {} {
+    global prompt
+    global passcount
+    global timeout
+
+    set otimeout $timeout
+    set timeout 120
+
+    set passcount 0
+
+    send "set print elements 50\n" ; expect -re "$prompt $"
+
+    setup_xfail "a29k-*-udi" 2416
+    prt_accept "p \"a string\""                "\"a string\""
+    setup_xfail "a29k-*-udi" 2416
+    prt_accept "p \"embedded \\000 null\"" "\"embedded \\\\000 null\""
+    setup_xfail "a29k-*-udi" 2416
+    prt_accept "p \"abcd\"\[2\]"       "99 'c'"
+    setup_xfail "a29k-*-udi" 2416
+    prt_accept "p sizeof (\"abcdef\")" "7"
+    setup_xfail "a29k-*-udi" 2416
+    prt_accept "ptype \"foo\""         "char \\\[4\\\]"
+    setup_xfail "a29k-*-udi" 2416
+    prt_accept "p *\"foo\""            "102 'f'"
+    setup_xfail "a29k-*-udi" 2416
+    prt_accept "ptype *\"foo\""                "char"
+    setup_xfail "a29k-*-udi" 2416
+    prt_accept "p &*\"foo\""           "\"foo\""
+    setup_xfail "*-*-*"
+    prt_accept "ptype &*\"foo\""       "char \[*\]+"
+    setup_xfail "a29k-*-udi" 2416
+    prt_accept "p (char *)\"foo\""     "\"foo\""
+
+    set timeout $otimeout
+
+    if $passcount then {
+       pass "$passcount tests printing string constants"
+    }
+}
+
+proc test_print_array_constants {} {
+    global timeout
+
+    set otimeout $timeout
+    set timeout 120
+
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "print {'a','b','c'}"     " = \"abc\""
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "print {0,1,2}"           " = {0, 1, 2}"
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "print {(long)0,(long)1,(long)2}" " = {0, 1, 2}"
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "print {{0,1,2},{3,4,5}}"  " = {{0, 1, 2}, {3, 4, 5}}"
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "print {4,5,6}\\\[2\\\]"  " = 6"
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "print *&{4,5,6}\\\[1\\\]"        " = 5"
+
+    set timeout $otimeout
+}
+
+proc test_printf {} {
+    gdb_test "printf \\\"x=%d,y=%d,z=%d\\\\n\\\", 5, 6, 7" "x=5,y=6,z=7"
+    gdb_test "printf \\\"string=%.4sxx\\\\n\\\", teststring" "string=testxx"
+    gdb_test "printf \\\"string=%sxx\\\\n\\\", teststring" \
+       "string=teststring contentsxx"
+
+    gdb_test "printf \\\"%f is fun\\\\n\\\", 1.0" "1\.0+ is fun"
+
+    # Test mixing args of different sizes.
+    gdb_test "printf \\\"x=%d,y=%f,z=%d\\\\n\\\", 5, 6.0, 7" "x=5,y=6\.0+,z=7"
+    gdb_test "printf \\\"%x %f, %c %x, %x, %f\\\\n\\\", 0xbad, -99.541, 'z',\
+0xfeedface, 0xdeadbeef, 5.0" "bad -99.5410+, z feedface, deadbeef, 5.0+"
+}
+
+# Start with a fresh gdb.
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $objdir/$subdir/$binfile
+
+send "set print sevenbit-strings\n" ; expect -re "$prompt $"
+send "set print address off\n" ; expect -re "$prompt $"
+send "set width 0\n" ; expect -re "$prompt $"
+
+if [set_lang_c] then {
+# On AIX, we can't print variables before we run the program.  This is because
+# the data segment and text segment are in the same address space until
+# they are relocated.  Ick.
+    setup_xfail "rs6000-*-aix*"
+    gdb_test "p ctable1\\\[120\\\]" "120 'x'"
+
+    if [runto main] then {
+       test_integer_literals_accepted
+       test_integer_literals_rejected
+       test_character_literals_accepted
+       test_print_all_chars
+       test_print_repeats_10
+       test_print_strings
+       test_print_int_arrays
+       test_print_char_arrays
+# We used to do the runto main here.
+       test_print_string_constants
+       test_print_array_constants
+       test_printf
+       if [istarget "a29k-*-udi"] then {
+           # FIXME: If PR 2415 is fixed, this is not needed.
+           gdb_target_udi
+       }
+    }
+} else {
+    fail "C print command tests suppressed"
+}
diff --git a/gdb/testsuite/gdb.base/ptype.c b/gdb/testsuite/gdb.base/ptype.c
new file mode 100644 (file)
index 0000000..1f3858e
--- /dev/null
@@ -0,0 +1,301 @@
+/*
+ *     Test file with lots of different types, for testing the
+ *     "ptype" command.
+ */
+
+/*
+ *     First the basic C types.
+ */
+
+#if !defined (__STDC__) && !defined (_AIX)
+#define signed  /**/
+#endif
+
+char           v_char;
+signed char    v_signed_char;
+unsigned char  v_unsigned_char;
+
+short          v_short;
+signed short   v_signed_short;
+unsigned short v_unsigned_short;
+
+int            v_int;
+signed int     v_signed_int;
+unsigned int   v_unsigned_int;
+
+long           v_long;
+signed long    v_signed_long;
+unsigned long  v_unsigned_long;
+
+float          v_float;
+double         v_double;
+
+/*
+ *     Now some derived types, which are arrays, functions-returning,
+ *     pointers, structures, unions, and enumerations.
+ */
+
+/**** arrays *******/
+
+char           v_char_array[2];
+signed char    v_signed_char_array[2];
+unsigned char  v_unsigned_char_array[2];
+
+short          v_short_array[2];
+signed short   v_signed_short_array[2];
+unsigned short v_unsigned_short_array[2];
+
+int            v_int_array[2];
+signed int     v_signed_int_array[2];
+unsigned int   v_unsigned_int_array[2];
+
+long           v_long_array[2];
+signed long    v_signed_long_array[2];
+unsigned long  v_unsigned_long_array[2];
+
+float          v_float_array[2];
+double         v_double_array[2];
+
+/**** pointers *******/
+
+char           *v_char_pointer;
+signed char    *v_signed_char_pointer;
+unsigned char  *v_unsigned_char_pointer;
+
+short          *v_short_pointer;
+signed short   *v_signed_short_pointer;
+unsigned short *v_unsigned_short_pointer;
+
+int            *v_int_pointer;
+signed int     *v_signed_int_pointer;
+unsigned int   *v_unsigned_int_pointer;
+
+long           *v_long_pointer;
+signed long    *v_signed_long_pointer;
+unsigned long  *v_unsigned_long_pointer;
+
+float          *v_float_pointer;
+double         *v_double_pointer;
+
+/**** structs *******/
+
+struct t_struct {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_struct1;
+
+struct t_struct *v_t_struct_p;
+
+struct {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_struct2;
+
+/* typedef'd struct without a tag.  */
+typedef struct {
+  double v_double_member;
+  int v_int_member;
+} t_struct3;
+/* GCC seems to want a variable of this type, or else it won't put out
+   a symbol.  */
+t_struct3 v_struct3;
+
+/**** unions *******/
+
+union t_union {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_union;
+
+union {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_union2;
+
+/* typedef'd union without a tag.  */
+typedef union {
+  double v_double_member;
+  int v_int_member;
+} t_union3;
+/* GCC seems to want a variable of this type, or else it won't put out
+   a symbol.  */
+t_union3 v_union3;
+
+/*** Functions returning type ********/
+
+char           v_char_func () { return(0); }
+signed char    v_signed_char_func () { return (0); }
+unsigned char  v_unsigned_char_func () { return (0); }
+
+short          v_short_func () { return (0); }
+signed short   v_signed_short_func () { return (0); }
+unsigned short v_unsigned_short_func () { return (0); }
+
+int            v_int_func () { return (0); }
+signed int     v_signed_int_func () { return (0); }
+unsigned int   v_unsigned_int_func () { return (0); }
+
+long           v_long_func () { return (0); }
+signed long    v_signed_long_func () { return (0); }
+unsigned long  v_unsigned_long_func () { return (0); }
+
+float          v_float_func () { return (0.0); }
+double         v_double_func () { return (0.0); }
+
+/**** Some misc more complicated things *******/
+
+struct link {
+       struct link *next;
+#ifdef __STDC__
+       struct link *(*linkfunc) (struct link *this, int flags);
+#else
+       struct link *(*linkfunc) ();
+#endif
+       struct t_struct stuff[1][2][3];
+} *s_link;
+
+union tu_link {
+       struct link *next;
+#ifdef __STDC__
+       struct link *(*linkfunc) (struct link *this, int flags);
+#else
+       struct link *(*linkfunc) ();
+#endif
+       struct t_struct stuff[1][2][3];
+} u_link;
+
+struct outer_struct {
+       int outer_int;
+       struct inner_struct {
+               int inner_int;
+               long inner_long;
+       }inner_struct_instance;
+       union inner_union {
+               int inner_union_int;
+               long inner_union_long;
+       }inner_union_instance;
+       long outer_long;
+} nested_su;
+
+/**** Enumerations *******/
+
+enum 
+/* Work around the bug for compilers which don't put out the right stabs.  */
+#if __GNUC__ < 2 && !defined (_AIX)
+primary1_tag
+#endif
+{red1, green1, blue1} primary1;
+
+enum {red, green, blue} primary;
+enum colors {yellow, purple, pink} nonprimary;
+
+enum {chevy, ford} clunker;
+enum cars {bmw, porsche} sportscar;
+
+typedef enum {FALSE, TRUE} boolean;
+boolean v_boolean;
+typedef enum bvals {false, true} boolean2;
+
+enum misordered {two = 2, one = 1, zero = 0, three = 3};
+
+/***********/
+
+main ()
+{
+  /* Seems like we need a variable of this type to get the type to be put
+     in the executable, at least for AIX xlc.  */
+  enum misordered v_misordered = three;
+
+  /* Some of the tests in ptype.exp require invoking malloc, so make
+     sure it is linked in to this program.  */
+  v_char_pointer = (char *) malloc (1);
+
+  /* Some linkers (e.g. on AIX) remove unreferenced variables,
+     so make sure to reference them. */
+  primary = blue;
+  primary1 = blue1;
+  nonprimary = pink;
+  sportscar = porsche;
+  clunker = ford;
+  v_struct1.v_int_member = 5;
+  v_struct2.v_int_member = 6;
+  v_struct3.v_int_member = 7;
+
+  v_char = 0;
+  v_signed_char = 0;
+  v_unsigned_char = 0;
+
+  v_short = 0;
+  v_signed_short = 0;
+  v_unsigned_short = 0;
+
+  v_int = 0;
+  v_signed_int = 0;
+  v_unsigned_int = 0;
+
+  v_long = 0;
+  v_signed_long = 0;
+  v_unsigned_long = 0;
+
+  v_float = 0;
+  v_double = 0;
+
+  v_char_array[0] = 0;
+  v_signed_char_array[0] = 0;
+  v_unsigned_char_array[0] = 0;
+
+  v_short_array[0] = 0;
+  v_signed_short_array[0] = 0;
+  v_unsigned_short_array[0] = 0;
+
+  v_int_array[0] = 0;
+  v_signed_int_array[0] = 0;
+  v_unsigned_int_array[0] = 0;
+
+  v_long_array[0] = 0;
+  v_signed_long_array[0] = 0;
+  v_unsigned_long_array[0] = 0;
+
+  v_float_array[0] = 0;
+  v_double_array[0] = 0;
+
+  v_char_pointer = 0;
+  v_signed_char_pointer = 0;
+  v_unsigned_char_pointer = 0;
+
+  v_short_pointer = 0;
+  v_signed_short_pointer = 0;
+  v_unsigned_short_pointer = 0;
+
+  v_int_pointer = 0;
+  v_signed_int_pointer = 0;
+  v_unsigned_int_pointer = 0;
+
+  v_long_pointer = 0;
+  v_signed_long_pointer = 0;
+  v_unsigned_long_pointer = 0;
+
+  v_float_pointer = 0;
+  v_double_pointer = 0;
+
+  nested_su.outer_int = 0;
+  v_t_struct_p = 0;
+
+  v_boolean = FALSE;
+}
diff --git a/gdb/testsuite/gdb.base/ptype.exp b/gdb/testsuite/gdb.base/ptype.exp
new file mode 100644 (file)
index 0000000..e69a8d1
--- /dev/null
@@ -0,0 +1,713 @@
+#   Copyright (C) 1988, 1990, 1991, 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Rob Savoye. (rob@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+       }
+
+#
+# test running programs
+#
+set prms_id 0
+set bug_id 0
+
+set binfile "ptype"
+
+if ![file exists $objdir/$subdir/$binfile] then {
+    perror "$objdir/$subdir/$binfile does not exist."
+    return 0
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $objdir/$subdir/$binfile
+
+# Test ptype of unnamed enumeration members before any action causes
+# the partial symbol table to be expanded to full symbols.  This fails
+# with stabs compilers which fail to use a nameless stab (such as
+# pre-2.4.5 versions of gcc and most non-gcc compilers).
+
+send "ptype red1\n"
+expect {
+    -re "type = enum primary1_tag \{red1, green1, blue1\}.*$prompt $"\
+       {
+           # The workaround is in effect.  As this is a compiler, not GDB,
+           # bug, we'll make it a PASS but perhaps it should be an XFAIL.
+           pass "ptype unnamed enumeration member (worked around)"
+       }
+    -re "type = enum \{red1, green1, blue1\}.*$prompt $"\
+                       { pass "ptype unnamed enumeration member" }
+    -re ".*$prompt $"  { fail "ptype unnamed enumeration member" }
+    timeout            { fail "(timeout) ptype unnamed enumeration member" }
+}
+
+#
+# test ptype command with structures
+#
+# Here and elsewhere, we accept
+# "long", "long int", or "int" for long variables (whatis.exp already
+# has an XFAIL for "int" (Sun cc bug), so no need to fail it here).
+send "ptype struct t_struct\n"
+expect {
+    -re "type = struct t_struct \{.*
+    (unsigned |)char v_char_member;.*
+    (short|short int) v_short_member;.*
+    int v_int_member;.*
+    (long|long int|int) v_long_member;.*
+    float v_float_member;.*
+    double v_double_member;.*
+\}.*$prompt $"                      { pass "ptype structure" }
+    -re ".*$prompt $"  { fail "ptype structure" }
+    timeout            { fail "(timeout) ptype structure" }
+}
+
+# Test the equivalence between '.' and '->' for struct member references.
+
+if [gdb_test "ptype v_struct1.v_float_member"  "type = float"]<0 then {
+    gdb_exit
+    gdb_start
+    return -1
+}
+if [gdb_test "ptype v_struct1->v_float_member" "type = float"]<0 then {
+    gdb_exit
+    gdb_start
+    return -1
+}
+if [gdb_test "ptype v_t_struct_p.v_float_member"       "type = float"]<0 then {
+    gdb_exit
+    gdb_start
+    return -1
+}
+if [gdb_test "ptype v_t_struct_p->v_float_member"      "type = float"]<0 then {
+    gdb_exit
+    gdb_start
+    return -1
+}
+
+
+send "ptype struct link\n"
+expect {
+    -re "type = struct link \{.*
+    struct link \[*\]next;.*
+    struct link \[*(\]+linkfunc\[)(\]+;.*
+    struct t_struct stuff.1..2..3.;.*
+\}.*$prompt $"                      { pass "ptype linked list structure" }
+    -re ".*$prompt $"  { 
+
+       # IBM's xlc puts out bogus stabs--the stuff field is type 42,
+       # which isn't defined.
+
+       fail "ptype linked list structure (compiler bug in IBM's xlc)"
+    }
+    timeout            { fail "(timeout) ptype linked list structure" }
+}
+
+
+#
+# test ptype command with unions
+#
+send "ptype union t_union\n"
+expect {
+    -re "type = union t_union \{.*
+    (unsigned |)char v_char_member;.*
+    (short|short int) v_short_member;.*
+    int v_int_member;.*
+    (long|long int|int) v_long_member;.*
+    float v_float_member;.*
+    double v_double_member;.*
+\}.*$prompt $"                      { pass "ptype union" }
+    -re ".*$prompt $"  { fail "ptype union" }
+    timeout            { fail "(timeout) ptype union" }
+}
+
+
+send "ptype union tu_link\n"
+expect {
+    -re "type = union tu_link .*
+    struct link \[*\]next;.*
+    struct link \[(\*\]+linkfunc\[)(\]+;.*
+    struct t_struct stuff.1..2..3.;.*
+\}.*$prompt $"                      { pass "ptype linked list union" }
+    -re ".*$prompt $" {
+
+       # IBM's xlc puts out bogus stabs--the stuff field is type 42,
+       # which isn't defined.
+
+       fail "ptype linked list union (compiler bug in IBM's xlc)"
+    }
+    timeout            { fail "(timeout) ptype linked list union" }
+}
+
+
+#
+# test ptype command with enums
+#
+
+send "ptype primary\n"
+expect {
+    -re "type = enum .red, green, blue.*$prompt $"       { pass "ptype unnamed enumeration" }
+    -re ".*$prompt $"  { fail "ptype unnamed enumeration" }
+    timeout            { fail "(timeout) ptype unnamed enumeration" }
+}
+
+
+send "ptype enum colors\n"
+expect {
+    -re "type = enum colors \{yellow, purple, pink\}.*$prompt $"\
+       { pass "ptype named enumeration" }
+    -re ".*$prompt $"  { fail "ptype named enumeration" }
+    timeout            { fail "(timeout) ptype named enumeration" }
+}
+
+
+#
+# test ptype command with enums as typedef
+#
+send "ptype boolean\n"
+expect {
+    -re "type = enum \{FALSE, TRUE\}.*$prompt $"   { pass "ptype unnamed typedef'd enumeration" }
+    -re ".*$prompt $"  { fail "ptype unnamed typedef'd enumeration" }
+    timeout            { fail "(timeout) ptype unnamed typedef'd enumeration" }
+}
+
+# And check that whatis shows the name, not "enum {...}".
+
+# The problem with xlc is that the stabs look like
+#   :t51=eFALSE:0,TRUE:1,;
+#   boolean:t55=51
+#   v_boolean:G51
+# GDB's behavior is correct; the type which the variable is defined
+# as (51) doesn't have a name.  Only 55 has a name.
+
+gdb_test "whatis v_boolean" "type = boolean" \
+  "whatis unnamed typedef'd enum (compiler bug in IBM's xlc)"
+
+# Same thing with struct and union.
+gdb_test "ptype t_struct3" "type = struct \{.*
+ *double v_double_member;.*
+ *int v_int_member;.*\}" "printing typedef'd struct"
+
+gdb_test "ptype t_union3" "type = union \{.*
+ *double v_double_member;.*
+ *int v_int_member;.*\}" "printing typedef'd union"
+
+send "ptype enum bvals\n"
+expect {
+    -re "type = enum bvals \{false, true\}.*$prompt $"   { pass "ptype named typedef'd enumf'd enum" }
+    -re ".*$prompt $"  { fail "ptype named typedef'd enumeration" }
+    timeout            { fail "(timeout) ptype named typedef'd enumeration" }
+}
+
+
+#
+# test ptype command with out-of-order enum values
+#
+send "ptype enum misordered\n"
+expect {
+    -re "type = enum misordered \{two = 2, one = 1, zero = 0, three = 3\}.*$prompt $"\
+       { pass "ptype misordered enumeration" }
+    -re ".*$prompt $"  { fail "ptype misordered  enumeration" }
+    timeout            { fail "(timeout) ptype misordered enumeration" }
+}
+
+
+#
+# test ptype command with a named enum's value
+#
+send "ptype three\n"
+expect {
+    -re "type = enum misordered \{two = 2, one = 1, zero = 0, three = 3\}.*$prompt $"\
+       { pass "ptype named enumeration member" }
+    -re ".*$prompt $"  { fail "ptype named enumeration member" }
+    timeout            { fail "(timeout) ptype named enumeration member" }
+}
+
+
+send "ptype red\n"
+expect {
+    -re "type = enum \{red, green, blue\}.*$prompt $"\
+       { pass "ptype unnamed enumeration member" }
+    -re ".*$prompt $"  { fail "ptype unnamed enumeration member" }
+    timeout            { fail "(timeout) ptype unnamed enumeration member" }
+}
+
+
+#
+# test ptype command with basic C types
+#
+# I've commented most of this out because it duplicates tests in whatis.exp.
+# I've just left in a token test or 2 which is designed to test that ptype 
+# acts like whatis for basic types.  If it is thought to be necessary to
+# test both whatis and ptype for all the types, the tests should be
+# merged into whatis.exp, or else maintenance will be a royal pain -kingdon
+#setup_xfail "i960-*-*" 1821
+#setup_xfail "mips-idt-*" "mips-sgi-*" "a29k-*-*"
+#send "ptype v_char\n"
+#expect {
+#    -re "type = char.*$prompt $"      { pass "ptype char" }
+#    -re ".*$prompt $" { fail "ptype char" }
+#    timeout           { fail "(timeout) ptype char" }
+#}
+#
+#
+#setup_xfail "mips-*-*" "a29k-*-*"
+#send "ptype v_signed_char\n"
+#expect {
+#    -re "type = signed char.*$prompt $"       { pass "ptype signed char" }
+#    -re ".*$prompt $" { fail "ptype signed char" }
+#    timeout           { fail "(timeout) ptype signed char" }
+#}
+#
+#
+#send "ptype v_unsigned_char\n"
+#expect {
+#    -re "type = unsigned char.*$prompt $"     { pass "ptype unsigned char" }
+#    -re ".*$prompt $" { fail "ptype unsigned char" }
+#    timeout           { fail "(timeout) ptype unsigned char" }
+#}
+
+
+send "ptype v_short\n"
+expect {
+    -re "type = short(| int).*$prompt $"       { pass "ptype short" }
+    -re ".*$prompt $"  { fail "ptype short" }
+    timeout            { fail "(timeout) ptype short" }
+}
+
+
+#send "ptype v_signed_short\n"
+#expect {
+#    -re "type = short.*$prompt $"     { pass "ptype signed short" }
+#    -re ".*$prompt $" { fail "ptype signed short" }
+#    timeout           { fail "(timeout) ptype signed short" }
+#}
+#
+#
+#send "ptype v_unsigned_short\n"
+#expect {
+#    -re "type = unsigned short.*$prompt $"    { pass "ptype unsigned short" }
+#    -re ".*$prompt $" { fail "ptype unsigned short" }
+#    timeout           { fail "(timeout) ptype unsigned short" }
+#}
+
+
+send "ptype v_int\n"
+expect {
+    -re "type = int.*$prompt $"        { pass "ptype int" }
+    -re ".*$prompt $"  { fail "ptype int" }
+    timeout            { fail "(timeout) ptype int" }
+}
+
+
+#send "ptype v_signed_int\n"
+#expect {
+#    -re "type = int.*$prompt $"       { pass "ptype signed int" }
+#    -re ".*$prompt $" { fail "ptype signed int" }
+#    timeout           { fail "(timeout) ptype signed int" }
+#}
+#
+#
+#send "ptype v_unsigned_int\n"
+#expect {
+#    -re "type = unsigned int.*$prompt $"      { pass "ptype unsigned int" }
+#    -re ".*$prompt $" { fail "ptype unsigned int" }
+#    timeout           { fail "(timeout) ptype unsigned int" }
+#}
+#
+#
+#send "ptype v_long\n"
+#expect {
+#    -re "type = long.*$prompt $"      { pass "ptype long" }
+#    -re ".*$prompt $" { fail "ptype long" }
+#    timeout           { fail "(timeout) ptype long" }
+#}
+#
+#
+#send "ptype v_signed_long\n"
+#expect {
+#    -re "type = long.*$prompt $"      { pass "ptype signed long" }
+#    -re ".*$prompt $" { fail "ptype signed long" }
+#    timeout           { fail "(timeout) ptype signed long" }
+#}
+#
+#
+#send "ptype v_unsigned_long\n"
+#expect {
+#    -re "type = unsigned long.*$prompt $"     { pass "ptype unsigned long" }
+#    -re ".*$prompt $" { fail "ptype unsigned long" }
+#    timeout           { fail "(timeout) ptype unsigned long" }
+#}
+#
+#
+#send "ptype v_float\n"
+#expect {
+#    -re "type = float.*$prompt $"     { pass "ptype float" }
+#    -re ".*$prompt $" { fail "ptype float" }
+#    timeout           { fail "(timeout) ptype float" }
+#}
+#
+#
+#send "ptype v_double\n"
+#expect {
+#    -re "type = double.*$prompt $"    { pass "ptype double" }
+#    -re ".*$prompt $" { fail "ptype double" }
+#    timeout           { fail "(timeout) ptype double" }
+#}
+
+
+#
+# test ptype command with arrays
+#
+#setup_xfail "i960-*-*" 1821
+#setup_xfail "mips-idt-*" "mips-sgi-*" "a29k-*-*"
+#send "ptype v_char_array\n"
+#expect {
+#    -re "type = char .2..*$prompt $"  { pass "ptype char array" }
+#    -re ".*$prompt $" { fail "ptype char array" }
+#    timeout           { fail "(timeout) ptype char array" }
+#}
+#
+#
+#setup_xfail "mips-*-*" "a29k-*-*"
+#send "ptype v_signed_char_array\n"
+#expect {
+#    -re "type = (|signed )char .2..*$prompt $"        { pass "ptype signed char array" }
+#    -re ".*$prompt $" { fail "ptype signed char array" }
+#    timeout           { fail "(timeout) ptype signed char array" }
+#}
+#
+#
+#send "ptype v_unsigned_char_array\n"
+#expect {
+#    -re "type = unsigned char .2..*$prompt $" { pass "ptype unsigned char array" }
+#    -re ".*$prompt $" { fail "ptype unsigned char array" }
+#    timeout           { fail "(timeout) ptype unsigned char array" }
+#}
+#
+#
+#
+#send "ptype v_int_array\n"
+#expect {
+#    -re "type = int .2..*$prompt $"   { pass "ptype int array" }
+#    -re ".*$prompt $" { fail "ptype int array" }
+#    timeout           { fail "(timeout) ptype int array" }
+#}
+#
+#
+#send "ptype v_signed_int_array\n"
+#expect {
+#    -re "type = int .2..*$prompt $"   { pass "ptype signed int array" }
+#    -re ".*$prompt $" { fail "ptype signed int array" }
+#    timeout           { fail "(timeout) ptype signed int array" }
+#}
+#
+#
+#send "ptype v_unsigned_int_array\n"
+#expect {
+#    -re "type = unsigned int .2..*$prompt $"  { pass "ptype unsigned int array" }
+#    -re ".*$prompt $" { fail "ptype unsigned int array" }
+#    timeout           { fail "(timeout) ptype unsigned int array" }
+#}
+#
+#
+#send "ptype v_long_array\n"
+#expect {
+#    -re "type = (long|int|long int) .2..*$prompt $"   { 
+#      pass "ptype long array" }
+#    -re ".*$prompt $" { fail "ptype long array" }
+#    timeout           { fail "(timeout) ptype long array" }
+#}
+#
+#
+#send "ptype v_signed_long_array\n"
+#expect {
+#    -re "type = (long|int|long int) .2..*$prompt $"   { 
+#      pass "ptype signed long array" }
+#    -re ".*$prompt $" { fail "ptype signed long array" }
+#    timeout           { fail "(timeout) ptype signed long array" }
+#}
+#
+#
+#send "ptype v_unsigned_long_array\n"
+#expect {
+#    -re "type = unsigned long .2..*$prompt $" { pass "ptype unsigned long array" }
+#    -re ".*$prompt $" { fail "ptype unsigned long array" }
+#    timeout           { fail "(timeout) ptype unsigned long array" }
+#}
+#
+#
+#send "ptype v_float_array\n"
+#expect {
+#    -re "type = float .2..*$prompt $" { pass "ptype float array" }
+#    -re ".*$prompt $" { fail "ptype float array" }
+#    timeout           { fail "(timeout) ptype float array" }
+#}
+#
+#
+#send "ptype v_double_array\n"
+#expect {
+#    -re "type = double .2..*$prompt $"        { pass "ptype double array" }
+#    -re ".*$prompt $" { fail "ptype double array" }
+#    timeout           { fail "(timeout) ptype double array" }
+#}
+#
+#
+##
+## test ptype command with pointers
+##
+#setup_xfail "i960-*-*" 1821
+#setup_xfail "mips-idt-*" "mips-sgi-*" "a29k-*-*"
+#send "ptype v_char_pointer\n"
+#expect {
+#    -re "type = char \*.*$prompt $"   { pass "ptype char pointer" }
+#    -re ".*$prompt $" { fail "ptype char pointer" }
+#    timeout           { fail "(timeout) ptype char pointer" }
+#}
+#
+#
+#setup_xfail "mips-*-*" "a29k-*-*"
+#send "ptype v_signed_char_pointer\n"
+#expect {
+#    -re "type = (|signed )char \*.*$prompt $"
+#      { pass "ptype signed char pointer" }
+#    -re ".*$prompt $" { fail "ptype signed char pointer" }
+#    timeout           { fail "(timeout) ptype signed char pointer" }
+#}
+#
+#
+#send "ptype v_unsigned_char_pointer\n"
+#expect {
+#    -re "type = unsigned char \*.*$prompt $"  { pass "ptype unsigned char pointer" }
+#    -re ".*$prompt $" { fail "ptype unsigned char pointer" }
+#    timeout           { fail "(timeout) ptype unsigned char pointer" }
+#}
+#
+#
+#send "ptype v_short_pointer\n"
+#expect {
+#    -re "type = (short|short int) \*.*$prompt $"      { pass "ptype short pointer" }
+#    -re ".*$prompt $" { fail "ptype short pointer" }
+#    timeout           { fail "(timeout) ptype short pointer" }
+#}
+#
+#
+#send "ptype v_signed_short_pointer\n"
+#expect {
+#    -re "type = short \*.*$prompt $"  { pass "ptype signed short pointer" }
+#    -re ".*$prompt $" { fail "ptype signed short pointer" }
+#    timeout           { fail "(timeout) ptype signed short pointer" }
+#}
+#
+#
+#send "ptype v_unsigned_short_pointer\n"
+#expect {
+#    -re "type = unsigned short \*.*$prompt $" { pass "ptype unsigned short pointer" }
+#    -re ".*$prompt $" { fail "ptype unsigned short pointer" }
+#    timeout           { fail "(timeout) ptype unsigned short pointer" }
+#}
+#
+#
+#send "ptype v_int_pointer\n"
+#expect {
+#    -re "type = int \*.*$prompt $"    { pass "ptype int pointer" }
+#    -re ".*$prompt $" { fail "ptype int pointer" }
+#    timeout           { fail "(timeout) ptype int pointer" }
+#}
+#
+#
+#send "ptype v_signed_int_pointer\n"
+#expect {
+#    -re "type = int \*.*$prompt $"    { pass "ptype signed int pointer" }
+#    -re ".*$prompt $" { fail "ptype signed int pointer" }
+#    timeout           { fail "(timeout) ptype signed int pointer" }
+#}
+#
+#
+#send "ptype v_unsigned_int_pointer\n"
+#expect {
+#    -re "type = unsigned int \*.*$prompt $"   { pass "ptype unsigned int pointer" }
+#    -re ".*$prompt $" { fail "ptype unsigned int pointer" }
+#    timeout           { fail "(timeout) ptype unsigned int pointer" }
+#}
+#
+#
+#send "ptype v_long_pointer\n"
+#expect {
+#    -re "type = long \*.*$prompt $"   { pass "ptype long pointer" }
+#    -re ".*$prompt $" { fail "ptype long pointer" }
+#    timeout           { fail "(timeout) ptype long pointer" }
+#}
+#
+#
+#send "ptype v_signed_long_pointer\n"
+#expect {
+#    -re "type = long \*.*$prompt $"   { pass "ptype signed long pointer" }
+#    -re ".*$prompt $" { fail "ptype signed long pointer" }
+#    timeout           { fail "(timeout) ptype signed long pointer" }
+#}
+#
+#
+#send "ptype v_unsigned_long_pointer\n"
+#expect {
+#    -re "type = unsigned long \*.*$prompt $"  { pass "ptype unsigned long pointer" }
+#    -re ".*$prompt $" { fail "ptype unsigned long pointer" }
+#    timeout           { fail "(timeout) ptype unsigned long pointer" }
+#}
+#
+#
+#send "ptype v_float_pointer\n"
+#expect {
+#    -re "type = float \*.*$prompt $"  { pass "ptype float pointer" }
+#    -re ".*$prompt $" { fail "ptype float pointer" }
+#    timeout           { fail "(timeout) ptype float pointer" }
+#}
+#
+#
+#send "ptype v_double_pointer\n"
+#expect {
+#    -re "type = double \*.*$prompt $" { pass "ptype double pointer" }
+#    -re ".*$prompt $" { fail "ptype double pointer" }
+#    timeout           { fail "(timeout) ptype double pointer" }
+#}
+
+
+#
+# test ptype command with nested structure and union
+#
+send "ptype struct outer_struct\n"
+expect {
+    -re "type = struct outer_struct \{.*
+    int outer_int;.*
+    struct inner_struct inner_struct_instance;.*
+    union inner_union inner_union_instance;.*
+    (long|long int|int) outer_long;.*
+\}.*$prompt $"                { pass "ptype outer structure" }
+    -re ".*$prompt $"  { fail "ptype outer structure" }
+    timeout            { fail "(timeout) ptype outer structure" }
+}
+
+
+send "ptype struct inner_struct\n"
+expect {
+    -re "type = struct inner_struct \{.*
+    int inner_int;.*
+    (long|long int|int) inner_long;.*
+\}.*$prompt $"                { pass "ptype inner structure" }
+    -re ".*$prompt $"  { fail "ptype inner structure" }
+    timeout            { fail "(timeout) ptype inner structure" }
+}
+
+
+send "ptype union inner_union\n"
+expect {
+    -re "type = union inner_union \{.*
+    int inner_union_int;.*
+    (long|long int|int) inner_union_long;.*
+\}.*$prompt $"                { pass "ptype inner union" }
+    -re ".*$prompt $"  { fail "ptype inner union" }
+    timeout            { fail "(timeout) ptype inner union" }
+}
+
+
+send "ptype nested_su\n"
+expect {
+    -re "type = struct outer_struct \{.*
+    int outer_int;.*
+    struct inner_struct inner_struct_instance;.*
+    union inner_union inner_union_instance;.*
+    (long|long int|int) outer_long;.*
+\}.*$prompt $"                { pass "ptype nested structure" }
+    -re ".*$prompt $"  { fail "ptype nested structure" }
+    timeout            { fail "(timeout) ptype nested structure" }
+}
+
+
+send "ptype nested_su.outer_int\n"
+expect {
+    -re "type = int.*$prompt $"           { pass "ptype outer int" }
+    -re ".*$prompt $"  { fail "ptype outer int" }
+    timeout            { fail "(timeout) ptype outer int" }
+}
+
+
+send "ptype nested_su.inner_struct_instance\n"
+expect {
+    -re "type = struct inner_struct \{.*
+    int inner_int;.*
+    (long|long int|int) inner_long;.*
+\}.*$prompt $"                { pass "ptype nested structure" }
+    -re ".*$prompt $"  { fail "ptype nested structure" }
+    timeout            { fail "(timeout) ptype nested structure" }
+}
+
+
+send "ptype nested_su.inner_struct_instance.inner_int\n"
+expect {
+    -re "type = int.*$prompt $"           { pass "ptype inner int" }
+    -re ".*$prompt $"  { fail "ptype inner int" }
+    timeout            { fail "(timeout) ptype inner int" }
+}
+
+
+send "ptype nested_su.inner_union_instance\n"
+expect {
+    -re "type = union inner_union \{.*
+    int inner_union_int;.*
+    (long|long int|int) inner_union_long;.*
+\}.*$prompt $"                { pass "ptype nested union" }
+    -re ".*$prompt $"  { fail "ptype nested union" }
+    timeout            { fail "(timeout) ptype nested union" }
+}
+
+# Test printing type of string constants and array constants, but
+# requires a running process.  These call malloc, and can take a long
+# time to execute over a slow serial link, so increase the timeout.
+
+# UDI can't do this (PR 2416).  XFAIL is not suitable, because attempting
+# the operation causes a slow painful death rather than a nice simple failure.
+
+if ![istarget "*-*-udi*"] then {
+  if [runto main] then {
+    set timeout 120
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "ptype \\\"abc\\\""       "type = char \\\[4\\\]"
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "ptype {'a','b','c'}"     "type = char \\\[3\\\]"
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "ptype {0,1,2}"           "type = int \\\[3\\\]"
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "ptype {(long)0,(long)1,(long)2}"   "type = long \\\[3\\\]"
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "ptype {(float)0,(float)1,(float)2}" "type = float \\\[3\\\]"
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "ptype {{0,1,2},{3,4,5}}" "type = int \\\[2\\\]\\\[3\\\]"
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "ptype {4,5,6}\\\[2\\\]"  "type = int"
+    setup_xfail "a29k-*-udi" 2416
+    gdb_test "ptype *&{4,5,6}\\\[1\\\]"        "type = int"
+    set timeout 10
+    if [istarget "a29k-*-udi"] then {
+       # FIXME: If PR 2415 is fixed, this is not needed.
+       gdb_target_udi
+    }
+  }
+}
diff --git a/gdb/testsuite/gdb.base/radix.exp b/gdb/testsuite/gdb.base/radix.exp
new file mode 100644 (file)
index 0000000..ae288d0
--- /dev/null
@@ -0,0 +1,185 @@
+# Copyright (C) 1993 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-gdb@prep.ai.mit.edu
+
+# This file was written by Fred Fish. (fnf@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+proc test_input_radix_2 {} {
+    gdb_test "set radix" \
+       "Input and output radices now set to decimal 10, hex a, octal 12."
+    gdb_test "set input-radix 2" \
+       "Input radix now set to decimal 2, hex 2, octal 2."
+    gdb_test "show radix" \
+       "Input radix set to decimal 2, hex 2, octal 2.\r\nOutput radix set to decimal 10, hex a, octal 12."
+    gdb_test "p 010"           "8"
+    gdb_test "p 20."           "20"
+    gdb_test "p (int) 20."     "20"
+    gdb_test "p 0xf"           "15"
+    gdb_test "p 10"            "2"
+    gdb_test "p -101"          "-5"
+    gdb_test "p 101"           "5"
+    gdb_test "p 10101"         "21"
+    gdb_test "p 4"             "Invalid number \"4\""
+    gdb_test "p -2"            "Invalid number \"2\""
+}
+
+# Test input radix 3 (an non-typical radix)
+
+proc test_input_radix_3 {} {
+    gdb_test "set radix" \
+       "Input and output radices now set to decimal 10, hex a, octal 12."
+    gdb_test "set input-radix 3" \
+       "Input radix now set to decimal 3, hex 3, octal 3."
+    gdb_test "show radix" \
+       "Input radix set to decimal 3, hex 3, octal 3.\r\nOutput radix set to decimal 10, hex a, octal 12."
+    gdb_test "p 010"           "8"
+    gdb_test "p 20."           "20"
+    gdb_test "p (int) 20."     "20"
+    gdb_test "p 0xf"           "15"
+    gdb_test "p 10"            "3"
+    gdb_test "p 0"             "0"
+    gdb_test "p 1"             "1"
+    gdb_test "p 2"             "2"
+    gdb_test "p 10"            "3"
+    gdb_test "p 20"            "6"
+    gdb_test "p 100"           "9"
+    gdb_test "p -100"          "-9"
+    gdb_test "p 3"             "Invalid number \"3\"."
+    gdb_test "p 30"            "Invalid number \"30\"."
+}
+
+proc test_input_radix_8 {} {
+    gdb_test "set radix" \
+       "Input and output radices now set to decimal 10, hex a, octal 12."
+    gdb_test "set input-radix 8" \
+       "Input radix now set to decimal 8, hex 8, octal 10."
+    gdb_test "show radix" \
+       "Input radix set to decimal 8, hex 8, octal 10.\r\nOutput radix set to decimal 10, hex a, octal 12."
+    gdb_test "p 010"           "8"
+    gdb_test "p 20."           "20"
+    gdb_test "p (int) 20."     "20"
+    gdb_test "p 0xf"           "15"
+    gdb_test "p 10"            "8"
+    gdb_test "p 20"            "16"
+    gdb_test "p -20"           "-16"
+    gdb_test "p 100"           "64"
+    gdb_test "p 8"             "Invalid number \"8\"."
+    gdb_test "p -9"            "Invalid number \"9\"."
+}
+
+proc test_input_radix_10 {} {
+    gdb_test "set radix" \
+       "Input and output radices now set to decimal 10, hex a, octal 12."
+    gdb_test "set input-radix 10" \
+       "Input radix now set to decimal 10, hex a, octal 12."
+    gdb_test "show radix" \
+       "Input and output radices set to decimal 10, hex a, octal 12."
+    gdb_test "p 010"           "8"
+    gdb_test "p 20."           "20"
+    gdb_test "p (int) 20."     "20"
+    gdb_test "p 0xf"           "15"
+    gdb_test "p 10"            "10"
+    gdb_test "p -12"           "-12"
+}
+
+proc test_input_radix_16 {} {
+    gdb_test "set radix" \
+       "Input and output radices now set to decimal 10, hex a, octal 12."
+    gdb_test "set input-radix 16" \
+       "Input radix now set to decimal 16, hex 10, octal 20."
+    gdb_test "show radix" \
+       "Input radix set to decimal 16, hex 10, octal 20.\r\nOutput radix set to decimal 10, hex a, octal 12."
+    gdb_test "p 010"           "8"
+    gdb_test "p 20."           "20"
+    gdb_test "p (int) 20."     "20"
+    gdb_test "p 0xf"           "15"
+    gdb_test "p 10"            "16"
+    gdb_test "p 100"           "256"
+}
+
+proc test_output_radix_8 {} {
+    gdb_test "set radix" \
+       "Input and output radices now set to decimal 10, hex a, octal 12."
+    gdb_test "set output-radix 8" \
+       "Output radix now set to decimal 8, hex 8, octal 10."
+    gdb_test "show radix" \
+       "Input radix set to decimal 10, hex a, octal 12.\r\nOutput radix set to decimal 8, hex 8, octal 10."
+    gdb_test "p 010"           "010"
+    # FIXME:  If gdb can't handle float printing in different radices, it
+    # should at least warn once the first time that is attempted.
+    setup_xfail "*-*-*"
+    gdb_test "p 20."           "24"    "Float printing when output radix is 8"
+    gdb_test "p (int) 20."     "24"
+    gdb_test "p 0xf"           "17"
+    gdb_test "p 10"            "12"
+    gdb_test "p 100"           "144"
+}
+
+proc test_output_radix_10 {} {
+    gdb_test "set radix" \
+       "Input and output radices now set to decimal 10, hex a, octal 12."
+    gdb_test "set output-radix 10" \
+       "Output radix now set to decimal 10, hex a, octal 12."
+    gdb_test "show radix" \
+       "Input and output radices set to decimal 10, hex a, octal 12."
+    gdb_test "p 010"           "8"
+    gdb_test "p 20."           "20"
+    gdb_test "p (int) 20."     "20"
+    gdb_test "p 0xf"           "15"
+    gdb_test "p 10"            "10"
+    gdb_test "p 100"           "100"
+}
+
+proc test_output_radix_16 {} {
+    gdb_test "set radix" \
+       "Input and output radices now set to decimal 10, hex a, octal 12."
+    gdb_test "set output-radix 16" \
+       "Output radix now set to decimal 16, hex 10, octal 20."
+    gdb_test "show radix" \
+       "Input radix set to decimal 10, hex a, octal 12.\r\nOutput radix set to decimal 16, hex 10, octal 20."
+    gdb_test "p 010"           "8"
+    # FIXME:  If gdb can't handle float printing in different radices, it
+    # should at least warn once the first time that is attempted.
+    setup_xfail "*-*-*"
+    gdb_test "p 20."           "14"    "Float printing when output radix is 16"
+    gdb_test "p (int) 20."     "14"
+    gdb_test "p 0xf"           "f"
+    gdb_test "p 10"            "a"
+    gdb_test "p 100"           "64"
+}
+
+# Start with a fresh gdb.
+
+gdb_exit
+gdb_start
+
+test_input_radix_2
+test_input_radix_3
+test_input_radix_8
+test_input_radix_10
+test_input_radix_16
+test_output_radix_8
+test_output_radix_10
+test_output_radix_16
diff --git a/gdb/testsuite/gdb.base/recurse.c b/gdb/testsuite/gdb.base/recurse.c
new file mode 100644 (file)
index 0000000..6ae93a5
--- /dev/null
@@ -0,0 +1,21 @@
+/* Trivial code used to test watchpoints in recursive code and 
+   auto-deletion of watchpoints as they go out of scope.  */
+
+static int 
+recurse (a)
+     int a;
+{
+  int b = 0;
+
+  if (a == 1)
+    return 1;
+
+  b = a;
+  b *= recurse (a - 1);
+  return b;
+}
+
+main()
+{
+  recurse (10);
+}
diff --git a/gdb/testsuite/gdb.base/recurse.exp b/gdb/testsuite/gdb.base/recurse.exp
new file mode 100644 (file)
index 0000000..1bacdf4
--- /dev/null
@@ -0,0 +1,159 @@
+# Copyright (C) 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Jeff Law. (law@cs.utah.edu)
+
+if $tracelevel then {
+    strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+set binfile "recurse"
+set srcfile $binfile.c
+
+if ![file exists $objdir/$subdir/$binfile] then {
+    perror "$objdir/$subdir/$binfile does not exist."
+    return 0
+}
+
+
+# Start with a fresh gdb.
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $objdir/$subdir/$binfile
+
+# For now we only run this on PAs running BSD.
+if {[file exists $objdir/$subdir/$binfile] && [istarget "hppa*-*-bsd*"]} then {
+
+    # Preserve the old timeout, and set a new one that should be
+    # sufficient to avoid timing out during this test.
+
+    set timeoutsave $timeout
+    set timeout 60
+
+    if [runto recurse] then {
+       gdb_test "watch b" ".*\[Ww\]atchpoint \[0-9]*: b"
+
+       # Continue until initial set of b.
+       send "cont\n"
+       expect {
+           -re "Continuing.*Watchpoint.*, b.*Old value = 0.*New value = 10.*$prompt $" { pass "watchpoint hit, first time" }
+           -re ".*$prompt $" { fail "missed first watchpoint" ; return }
+           timeout { fail "missed first watchpoint (timeout)" ; return }
+       }
+
+       # Continue inward for a few iterations
+       gdb_test "continue" "Breakpoint.* recurse \[(\]+a=9\[)\]+"
+       gdb_test "continue" "Breakpoint.* recurse \[(\]+a=8\[)\]+"
+       gdb_test "continue" "Breakpoint.* recurse \[(\]+a=7\[)\]+"
+       gdb_test "continue" "Breakpoint.* recurse \[(\]+a=6\[)\]+"
+       gdb_test "continue" "Breakpoint.* recurse \[(\]+a=5\[)\]+"
+
+       # Put a watchpoint on another instance of b
+       gdb_test "watch b" ".*\[Ww\]atchpoint \[0-9]*: b"
+
+       # Continue until initial set of b (second instance).
+       send "cont\n"
+       expect {
+           -re "Continuing.*Watchpoint.*, b.*Old value = 0.*New value = 5.*$prompt $" { pass "watchpoint hit (second instance)" }
+           -re ".*$prompt $" {
+               fail "missed watchpoint (second instance)"
+               return
+           }
+           timeout {
+               fail "missed watchpoint (second instance) (timeout)"
+               return
+           }
+       }
+
+       # Continue inward for a few iterations
+       gdb_test "continue" "Breakpoint.* recurse \[(\]+a=4\[)\]+"
+       gdb_test "continue" "Breakpoint.* recurse \[(\]+a=3\[)\]+"
+       gdb_test "continue" "Breakpoint.* recurse \[(\]+a=2\[)\]+"
+       gdb_test "continue" "Breakpoint.* recurse \[(\]+a=1\[)\]+"
+
+       # Continue until second set of b (second instance).
+       send "cont\n"
+       expect {
+           -re "Continuing.*Watchpoint.*, b.*Old value = 5.*New value = 120.*return.*$prompt $" { pass "watchpoint hit, second time (second instance)" }
+           -re ".*$prompt $" {
+               fail "missed watchpoint, second time (second instance)"
+               return
+           }
+           timeout {
+               fail "missed watchpoint, second time (second instance)(timeout)"
+               return
+           }
+       }
+
+       # Continue again.  We should have a watchpoint go out of scope now
+       send "cont\n"
+       expect {
+           -re "Continuing.*Watchpoint.*deleted.*recurse \[(\]+a=6\[)\]+ .*$prompt $" {pass "watchpoint deleted when leaving scope (second instance)" }
+           -re ".*prompt $" {
+               fail "watchpoint not deleted when leaving scope (second instance)"
+               return
+           }
+           timeout {
+               fail "watchpoint not deleted when leaving scope (second instance) (timeout)"
+               return
+           }
+       }
+
+       # Continue until second set of b (first instance).
+       send "cont\n"
+       expect {
+           -re "Continuing.*Watchpoint.*b.*Old value = 10.*New value = 3628800.*return.*$prompt $" { pass "watchpoint hit, second time" }
+           -re ".*$prompt $" {
+               fail "missed watchpoint, second time)"
+               return
+           }
+           timeout {
+               fail "missed watchpoint, second time (timeout)"
+               return
+           }
+       }
+
+       # Continue again.  We should have a watchpoint go out of scope now
+       send "cont\n"
+       expect {
+           -re "Continuing.*Watchpoint.*deleted.*main \[(\]+\[)\]+ .*$prompt $" {pass "watchpoint deleted when leaving scope" }
+           -re ".*prompt $" {
+               fail "watchpoint not deleted when leaving scope"
+               return
+           }
+           timeout {
+               fail "watchpoint not deleted when leaving scope (timeout)"
+               return
+           }
+       }
+    }
+
+    # Restore the preserved old timeout value.
+    set timeout $timeoutsave
+}
+
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+}
diff --git a/gdb/testsuite/gdb.base/return.c b/gdb/testsuite/gdb.base/return.c
new file mode 100644 (file)
index 0000000..73eee61
--- /dev/null
@@ -0,0 +1,26 @@
+/*  Test "return" command.  */
+
+func1 ()
+{
+  printf("in func1\n");
+}
+
+int
+func2 ()
+{
+  return -5;
+}
+
+double
+func3 ()
+{
+  return -5.0;
+}
+
+main ()
+{
+  func1 ();
+  printf("in main after func1\n");
+  printf("func2 = %d\n", func2 ());
+  printf("func3 = %f\n", func3 ());
+}
diff --git a/gdb/testsuite/gdb.base/run.c b/gdb/testsuite/gdb.base/run.c
new file mode 100644 (file)
index 0000000..eb17bf3
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ *     This simple classical example of recursion is useful for
+ *     testing stack backtraces and such.
+ */
+
+#ifdef vxworks
+#  include <vxWorks.h>
+#  include <stdioLib.h>
+
+/* VxWorks does not supply atoi.  */
+static int
+atoi (z)
+     char *z;
+{
+  int i = 0;
+
+  while (*z >= '0' && *z <= '9')
+    i = i * 10 + (*z++ - '0');
+  return i;
+}
+
+/* I don't know of any way to pass an array to VxWorks.  This function
+   can be called directly from gdb.  */
+
+vxmain (arg)
+char *arg;
+{
+  char *argv[2];
+
+  argv[0] = "";
+  argv[1] = arg;
+  main (2, argv, (char **) 0);
+}
+
+#else /* ! vxworks */
+#  include <stdio.h>
+#endif /* ! vxworks */
+
+main (argc, argv, envp)
+int argc;
+char *argv[], **envp;
+{
+    if (argc != 2) {
+       printf ("usage:  factorial <number>\n");
+       return 1;
+    } else {
+       printf ("%d\n", factorial (atoi (argv[1])));
+    }
+    return 0;
+}
+
+int factorial (value)
+int value;
+{
+    if (value > 1) {
+       value *= factorial (value - 1);
+    }
+    return (value);
+}
diff --git a/gdb/testsuite/gdb.base/scope.exp b/gdb/testsuite/gdb.base/scope.exp
new file mode 100644 (file)
index 0000000..d1ba89e
--- /dev/null
@@ -0,0 +1,1134 @@
+# Copyright (C) 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Fred Fish. (fnf@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+set binfile "scope"
+set srcfile $binfile.c
+
+if ![file exists $objdir/$subdir/$binfile] then {
+    perror "$objdir/$subdir/$binfile does not exist."
+    return 0
+}
+
+# Test locating various things when stopped just inside main, after
+# running init().  To prevent cascading of errors, we report the
+# first one and quit.  If all pass, then we print the pass results.
+
+proc test_at_main {} {
+    global prompt
+    global decimal
+    global det_file
+    global srcdir
+    global subdir
+
+    set passcount 0
+
+    # skip past init.  There may be a call to __main at the start of
+    # main, so the first next may only get us to the init call.
+    send "next\n"
+    expect {
+       -re "$decimal.*foo \[)(\]+;\r\n$prompt $" {}
+       -re "$decimal.*init \[)(\]+;\r\n$prompt $"\
+               { send "next\n" ; exp_continue }
+       -re "$prompt $" { fail "next over init() in main" ; return }
+       timeout { fail "(timeout) next over init() in main" ; return }
+    }
+
+    # Print scope0.c::filelocal, which is 1
+
+    send "print filelocal\n"
+    expect {
+       -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print filelocal" ; return }
+       timeout {
+           fail "(timeout) print filelocal" ; return
+       }
+    }
+
+    # The RS/6000 does not seem to be handle print 'file'::var.
+    setup_xfail "rs6000-*-*"
+    # This used to work, but is now broken for some reason.
+    setup_xfail "*-*-*"
+    send "print 'scope0.c'::filelocal\n"
+    expect {
+       -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope0.c'::filelocal" ; return }
+       timeout {
+           fail "(timeout) print 'scope0.c'::filelocal" ; return
+       }
+    }
+
+    # Print scope0.c::filelocal_bss, which is 101
+
+    send "print filelocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { print filelocal_bss" ; return }
+       timeout {
+           fail "(timeout) print filelocal_bss" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope0.c'::filelocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
+       timeout {
+           fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
+       }
+    }
+
+    # Print scope0.c::filelocal_ro, which is 201
+
+    send "print filelocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print filelocal_ro" ; return }
+       timeout {
+           fail "(timeout) print filelocal_ro" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope0.c'::filelocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
+       timeout {
+           fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
+       }
+    }
+
+    # Print scope1.c::filelocal, which is 2
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::filelocal\n"
+    expect {
+       -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::filelocal" ; return
+       }
+    }
+
+    # Print scope1.c::filelocal_bss, which is 102
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::filelocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
+       }
+    }
+
+    # Print scope1.c::filelocal_ro, which is 202
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::filelocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
+           exp_continue
+       }
+       -re "$prompt " {fail "print 'scope1.c'::filelocal_ro" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
+       }
+    }
+
+    # Print scope1.c::foo::funclocal, which is 3
+
+    setup_xfail "mips-*-*" 1843
+    send "print foo::funclocal\n"
+    expect {
+       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print foo::funclocal" ; return }
+       timeout {
+           fail "(timeout) print foo::funclocal" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::foo::funclocal\n"
+    expect {
+       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
+       }
+    }
+
+    # Print scope1.c::foo::funclocal_ro, which is 203
+
+    send "print foo::funclocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
+       timeout {
+           fail "(timeout) print foo::funclocal_ro" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::foo::funclocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
+       }
+    }
+
+    # Print scope1.c::bar::funclocal, which is 4
+
+    send "print bar::funclocal\n"
+    expect {
+       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print bar::funclocal" ; return }
+       timeout {
+           fail "(timeout) print bar::funclocal" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::bar::funclocal\n"
+    expect {
+       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
+       timeout {
+           fail "print 'scope1.c'::bar::funclocal" ; return
+       }
+    }
+
+    clear_xfail "*-*-*"
+    pass "$passcount correct scope resolutions from main()"
+}
+
+proc test_at_foo {} {
+    global prompt
+    global decimal
+    global det_file
+    global srcdir
+    global subdir
+
+    set passcount 0
+
+    send "next\n"
+    expect {
+       -re ".*bar \[)(\]+;\r\n$prompt $" {}
+       -re "$prompt $" { fail "continue to foo()" ; return }
+       timeout { fail "(timeout) continue to foo()" ; return }
+    }
+
+    # Print scope0.c::filelocal, which is 1
+
+    setup_xfail "rs6000-*-*"
+    # This used to work, but is now broken for some reason.
+    setup_xfail "*-*-*"
+    send "print 'scope0.c'::filelocal\n"
+    expect {
+       -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope0.c'::filelocal" ; return }
+       timeout {
+           fail "(timeout) print 'scope0.c'::filelocal" ; return
+       }
+    }
+
+   # Print scope0.c::filelocal_bss, which is 101
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope0.c'::filelocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
+       timeout {
+           fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
+       }
+    }
+
+   # Print scope0.c::filelocal_ro, which is 201
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope0.c'::filelocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
+       timeout {
+           fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
+       }
+    }
+
+    # Print scope1.c::filelocal, which is 2
+
+    send "print filelocal\n"
+    expect {
+       -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print filelocal" ; return }
+       timeout {
+           fail "(timeout) print filelocal" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::filelocal\n"
+    expect {
+       -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::filelocal" ; return
+       }
+    }
+
+    # Print scope1.c::filelocal_bss, which is 102
+
+    send "print filelocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print filelocal_bss" ; return }
+       timeout {
+           fail "(timeout) print filelocal_bss" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::filelocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
+       }
+    }
+
+    # Print scope1.c::filelocal_ro, which is 202
+
+    send "print filelocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print filelocal_ro" ; return }
+       timeout {
+           fail "(timeout) print filelocal_ro" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::filelocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
+       }
+    }
+
+    # Print scope1.c::foo::funclocal, which is 3
+
+    send "print funclocal\n"
+    expect {
+       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print funclocal" ; return }
+       timeout {
+           fail "(timeout) print funclocal" ; return
+       }
+    }
+
+    setup_xfail "mips-*-*" 1843
+    send "print foo::funclocal\n"
+    expect {
+       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print foo::funclocal" ; return }
+       timeout {
+           fail "(timeout) print foo::funclocal" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::foo::funclocal\n"
+    expect {
+       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
+       }
+    }
+
+    # Print scope1.c::foo::funclocal_bss, which is 103
+
+    send "print funclocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print funclocal_bss" ; return }
+       timeout {
+           fail "(timeout) print funclocal_bss" ; return
+       }
+    }
+
+    send "print foo::funclocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
+       timeout {
+           fail "(timeout) print foo::funclocal_bss" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::foo::funclocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
+       }
+    }
+
+    # Print scope1.c::foo::funclocal_ro, which is 203
+
+    send "print funclocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print funclocal_ro" ; return }
+       timeout {
+           fail "(timeout) print funclocal_ro" ; return
+       }
+    }
+
+    send "print foo::funclocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
+       timeout {
+           fail "(timeout) print foo::funclocal_ro" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::foo::funclocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
+       }
+    }
+
+    # Print scope1.c::bar::funclocal, which is 4
+
+    send "print bar::funclocal\n"
+    expect {
+       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print bar::funclocal" ; return }
+       timeout {
+           fail "(timeout) print bar::funclocal" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::bar::funclocal\n"
+    expect {
+       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
+       }
+    }
+
+    clear_xfail "*-*-*"
+    pass "$passcount correct scope resolutions from foo()"
+}
+
+proc test_at_bar {} {
+    global prompt
+    global decimal
+    global det_file
+    global srcdir
+    global subdir
+
+    set passcount 0
+
+    send "next\n"
+    expect {
+       -re ".*$prompt $" {}
+       timeout { fail "next in bar()" ; return }
+    }
+
+    # Print scope0.c::filelocal, which is 1
+
+    setup_xfail "rs6000-*-*"
+    # This used to work, but is now broken for some reason.
+    setup_xfail "*-*-*"
+    send "print 'scope0.c'::filelocal\n"
+    expect {
+       -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope0.c'::filelocal" ; return }
+       timeout {
+           fail "(timeout) print 'scope0.c'::filelocal" ; return
+       }
+    }
+
+   # Print scope0.c::filelocal_bss, which is 101
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope0.c'::filelocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
+       timeout {
+           fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
+       }
+    }
+
+   # Print scope0.c::filelocal_ro, which is 201
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope0.c'::filelocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
+       timeout {
+           fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
+       }
+    }
+
+    # Print scope1.c::filelocal, which is 2
+
+    send "print filelocal\n"
+    expect {
+       -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print filelocal" ; return }
+       timeout {
+           fail "(timeout) print filelocal" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::filelocal\n"
+    expect {
+       -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::filelocal" ; return
+       }
+    }
+
+    # Print scope1.c::filelocal_bss, which is 102
+
+    send "print filelocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print filelocal_bss" ; return }
+       timeout {
+           fail "(timeout) print filelocal_bss" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::filelocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
+       }
+    }
+
+    # Print scope1.c::filelocal_ro, which is 202
+
+    send "print filelocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print filelocal_ro" ; return }
+       timeout {
+           fail "(timeout) print filelocal_ro" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::filelocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
+       }
+    }
+
+    # Print scope1.c::foo::funclocal, which is 3
+
+    setup_xfail "mips-*-*" 1843
+    send "print foo::funclocal\n"
+    expect {
+       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print foo::funclocal" ; return }
+       timeout {
+           fail "(timeout) print foo::funclocal" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::foo::funclocal\n"
+    expect {
+       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
+       }
+    }
+
+    # Print scope1.c::foo::funclocal_bss, which is 103
+
+    send "print foo::funclocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
+       timeout {
+           fail "(timeout) print foo::funclocal_bss" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::foo::funclocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
+       }
+    }
+
+    # Print scope1.c::foo::funclocal_ro, which is 203
+
+    send "print foo::funclocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
+       timeout {
+           fail "(timeout) print foo::funclocal_ro" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::foo::funclocal_ro\n"
+    expect {
+       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
+       }
+    }
+
+    # Print scope1.c::bar::funclocal, which is 4
+
+    send "print funclocal\n"
+    expect {
+       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print funclocal" ; return }
+       timeout {
+           fail "(timeout) print funclocal" ; return
+       }
+    }
+
+    send "print bar::funclocal\n"
+    expect {
+       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print bar::funclocal" ; return }
+       timeout {
+           fail "(timeout) print bar::funclocal" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::bar::funclocal\n"
+    expect {
+       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
+       }
+    }
+
+    # Print scope1.c::bar::funclocal_bss, which is 104
+
+    send "print funclocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 104\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print funclocal_bss" ; return }
+       timeout {
+           fail "(timeout) print funclocal_bss" ; return
+       }
+    }
+
+    send "print bar::funclocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 104\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "print bar::funclocal_bss" ; return }
+       timeout {
+           fail "(timeout) print bar::funclocal_bss" ; return
+       }
+    }
+
+    setup_xfail "rs6000-*-*"
+    send "print 'scope1.c'::bar::funclocal_bss\n"
+    expect {
+       -re "\\\$$decimal = 104\r\n$prompt $" { incr passcount }
+       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
+           send "print '$srcdir/$subdir/scope1.c'::bar::funclocal_bss\n"
+           exp_continue
+       }
+       -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal_bss" ; return }
+       timeout {
+           fail "(timeout) print 'scope1.c'::bar::funclocal_bss" ; return
+       }
+    }
+
+    clear_xfail "*-*-*"
+    pass "$passcount correct scope resolutions from bar()"
+}
+
+# FIXME:  This test was originally part of some local scope resolution
+# tests.  It probably belongs somewhere else now.
+
+proc test_at_autovars {} {
+    global prompt
+    global decimal
+    global hex
+    global srcfile
+
+    # Test symbol table lookup with 100 local (auto) variables.
+
+    send "break marker1\n" ; expect -re ".*$prompt $"
+
+    send "cont\n"
+    expect {
+       -re "Break.* marker1 \[)(\]+ at .*:$decimal.*$prompt $" {
+           send "up\n"
+           expect {
+               -re ".*$prompt $" {}
+               timeout { fail "up from marker1" ; return }
+           }
+       }
+       -re "$prompt $" { fail "continue to marker1" ; return }
+       timeout { fail "(timeout) continue to marker1" ; return }
+    }
+
+    set count 0
+    while {$count < 100} {
+       send "print i$count\n"
+       expect {
+           -re ".* = $count\r\n$prompt $" {}
+           -re "$prompt $" {
+               fail "bad value for auto variable i$count"; return
+           }
+           timeout {
+               fail "(timeout) bad value for auto variable i$count"; return
+           }
+       }
+       set count [expr $count+1]
+    }
+    clear_xfail "*-*-*"
+    pass "$count auto variables correctly initialized"
+
+    # Test that block variable sorting is not screwing us.
+    gdb_test "frame" "#.*autovars \[(\]+bcd=5, abc=6\[)\]+" "args in correct order"
+}
+
+proc test_at_localscopes {} {
+    global prompt
+    global decimal
+    global hex
+    global srcfile
+
+    set passcount 0
+
+    send "break marker2\n" ; expect -re ".*$prompt $"
+    send "break marker3\n" ; expect -re ".*$prompt $"
+    send "break marker4\n" ; expect -re ".*$prompt $"
+
+    send "cont\n"
+    expect {
+       -re "Break.* marker2 \[)(\]+ at .*:$decimal.*$prompt $" {
+           send "up\n"
+           expect {
+               -re ".*$prompt $" {}
+               timeout { fail "up from marker2" ; return }
+           }
+       }
+       -re "$prompt $" { fail "continue to marker2" ; return }
+       timeout { fail "(timeout) continue to marker2" ; return }
+    }
+
+    # Should be at first (outermost) scope.  Check values.
+
+    send "print localval\n"
+    expect {
+       -re ".* = 10\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "bad value for localval, outer scope" ; return }
+       default { 
+           fail "(timeout) bad value for localval, outer scope" ; return
+       }
+    }
+    send "print localval1\n"
+    expect {
+       -re ".* = 11\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "bad value for localval1" ; return }
+       timeout { fail "(timeout) bad value for localval1" ; return }
+    }
+    send "print localval2\n"
+    expect {
+       -re "No symbol \"localval2\" in current context.\r\n$prompt $" {
+           incr passcount
+       }
+       -re "$prompt $" { fail "bad value for localval2" ; return }
+       timeout { fail "(timeout) bad value for localval2" ; return }
+    }
+    send "print localval3\n"
+    expect {
+       -re "No symbol \"localval3\" in current context.\r\n$prompt $" {
+           incr passcount
+       }
+       -re "$prompt $" { fail "bad value for localval3" ; return }
+       timeout { fail "(timeout) bad value for localval3" ; return }
+    }
+
+    send "cont\n"
+    expect {
+       -re "Break.* marker3 \[)(\]+ at .*:$decimal.*$prompt $" {
+           send "up\n"
+           expect {
+               -re ".*$prompt $" {}
+               timeout { fail "up from marker3" ; return }
+           }
+       }
+       -re "$prompt $" { fail "continue to marker3" ; return }
+       timeout { fail "(timeout) continue to marker3" ; return }
+    }
+
+    # Should be at next (first nested) scope.  Check values.
+
+    send "print localval\n"
+    expect {
+       -re ".* = 20\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { 
+           fail "bad value for localval, first nested scope" ; return
+       }
+       timeout { 
+           fail "(timeout) bad value for localval, first nested scope" ; 
+           return
+       }
+    }
+    send "print localval1\n"
+    expect {
+       -re ".* = 11\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "bad value for localval1" ; return }
+       timeout { fail "(timeout) bad value for localval1" ; return }
+    }
+    send "print localval2\n"
+    expect {
+       -re ".* = 12\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "bad value for localval2" ; return }
+       timeout { fail "(timeout) bad value for localval2" ; return }
+    }
+    send "print localval3\n"
+    expect {
+       -re "No symbol \"localval3\" in current context.\r\n$prompt $" {
+           incr passcount
+       }
+       -re "$prompt $" { fail "bad value for localval3" ; return }
+       timeout { fail "(timeout) bad value for localval3" ; return }
+    }
+
+    # This test will only fail if the file was compiled by gcc, but
+    # there's no way to check that.
+    setup_xfail "mips-*-*" 1868
+    setup_xfail "a29k-*-udi" 2423
+    send "cont\n"
+    expect {
+       -re "Break.* marker4.*at .*:$decimal.*$prompt $" {
+           send "up\n"
+           expect {
+               -re ".*$prompt $" {}
+               timeout { fail "up from marker4" ; return }
+           }
+       }
+       -re "$prompt $" { fail "continue to marker4" ; return }
+       timeout { fail "(timeout) continue to marker4" ; return }
+    }
+
+    send "print localval\n"
+    expect {
+       -re ".* = 30\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { 
+           fail "bad value for localval, innermost scope" ; return
+       }
+       timeout { 
+           fail "(timeout) bad value for localval, innermost scope" ; return 
+       }
+    }
+    send "print localval1\n"
+    expect {
+       -re ".* = 11\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "bad value for localval1" ; return }
+       timeout { fail "(timeout) bad value for localval1" ; return }
+    }
+    send "print localval2\n"
+    expect {
+       -re ".* = 12\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "bad value for localval2" ; return }
+       timeout { fail "(timeout) bad value for localval2" ; return }
+    }
+    send "print localval3\n"
+    expect {
+       -re ".* = 13\r\n$prompt $" { incr passcount }
+       -re "$prompt $" { fail "bad value for localval3" ; return }
+       timeout { fail "(timeout) bad value for localval3" ; return }
+    }
+
+    clear_xfail "*-*-*"
+    pass "$passcount correct scope resolutions from localscopes()"
+}
+
+# Start with a fresh gdb.
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $objdir/$subdir/$binfile
+
+if [istarget "*-*-vxworks"] {
+    set timeout 120
+}
+
+# Test that variables in various segments print out correctly before
+# the program is run.  
+
+# AIX--sections get mapped to the same address so we can't get the right one.
+setup_xfail "rs6000-*-*"
+
+gdb_test "print 'scope0.c'::filelocal_ro" "= 201"
+
+# gdb currently cannot access bss memory on some targets if the inferior
+# is not running.
+send "print 'scope0.c'::filelocal_bss\n"
+expect {
+    -re "= 0.*$prompt $" {
+       pass "print 'scope0.c'::filelocal_bss"
+    }
+    -re "Cannot access memory.*$prompt $" {
+       setup_xfail "*-*-*"
+       fail "print 'scope0.c'::filelocal_bss"
+    }
+    -re ".*$prompt $" {
+       fail "print 'scope0.c'::filelocal_bss"
+    }
+    default {
+       fail "print 'scope0.c'::filelocal_bss"
+    }
+}
+
+# AIX--sections get mapped to the same address so we can't get the right one.
+setup_xfail "rs6000-*-*"
+
+gdb_test "print 'scope0.c'::filelocal" "= 1"
+
+if [runto main] then { test_at_main }
+if [istarget "mips-idt-*"] then {
+    # Restart because IDT/SIM runs out of file descriptors.
+    gdb_exit
+    gdb_start
+    gdb_reinitialize_dir $srcdir/$subdir
+    gdb_load $objdir/$subdir/$binfile
+}
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+    gdb_load $objdir/$subdir/$binfile
+}
+if [runto foo] then { test_at_foo }
+if [istarget "mips-idt-*"] then {
+    # Restart because IDT/SIM runs out of file descriptors.
+    gdb_exit
+    gdb_start
+    gdb_reinitialize_dir $srcdir/$subdir
+    gdb_load $objdir/$subdir/$binfile
+}
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+    gdb_load $objdir/$subdir/$binfile
+}
+if [runto bar] then { test_at_bar }
+if [istarget "mips-idt-*"] then {
+    # Restart because IDT/SIM runs out of file descriptors.
+    gdb_exit
+    gdb_start
+    gdb_reinitialize_dir $srcdir/$subdir
+    gdb_load $objdir/$subdir/$binfile
+}
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+    gdb_load $objdir/$subdir/$binfile
+}
+if [runto localscopes] then { test_at_localscopes }
+if [istarget "mips-idt-*"] then {
+    # Restart because IDT/SIM runs out of file descriptors.
+    gdb_exit
+    gdb_start
+    gdb_reinitialize_dir $srcdir/$subdir
+    gdb_load $objdir/$subdir/$binfile
+}
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+    gdb_load $objdir/$subdir/$binfile
+}
+if [runto autovars] then { test_at_autovars }
+
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+}
+
+if [istarget "*-*-vxworks"] {
+    set timeout 120
+}
diff --git a/gdb/testsuite/gdb.base/scope0.c b/gdb/testsuite/gdb.base/scope0.c
new file mode 100644 (file)
index 0000000..85af2e5
--- /dev/null
@@ -0,0 +1,172 @@
+static int filelocal = 1;      /* In Data section */
+static int filelocal_bss;      /* In BSS section */
+#ifndef __STDC__
+#define        const   /**/
+#endif
+static const int filelocal_ro = 201;   /* In Read-Only Data section */
+
+main ()
+{
+  init ();
+  foo ();
+  autovars (5, 6);
+  localscopes (0);
+}
+
+/* On some systems, such as AIX, unreferenced variables are deleted
+   from the executable.  */
+usestatics ()
+{
+  useit (filelocal);
+  useit (filelocal_bss);
+  useit (filelocal_ro);
+}
+
+init ()
+{
+  filelocal_bss = 101;
+  init1 ();
+}
+
+/* This is to derail optimizer in localscopes.
+   Return 1 + 2 + . . . + N.  */
+int
+sum_upto (n)
+     int n;
+{
+  int i;
+  int retval = 0;
+
+  for (i = 1; i <= n; ++i)
+    retval += i;
+  return retval;
+}
+
+int
+useit (val)
+{
+    static int usedval;
+
+    usedval = val;
+    return val + sum_upto (0);
+}
+
+int
+autovars (bcd, abc)
+     int bcd;
+     int abc;
+{
+    int  i0 =  useit (0),  i1 =  useit (1),  i2 =  useit (2);
+    int  i3 =  useit (3),  i4 =  useit (4),  i5 =  useit (5);
+    int  i6 =  useit (6),  i7 =  useit (7),  i8 =  useit (8);
+    int  i9 =  useit (9), i10 = useit (10), i11 = useit (11);
+    int i12 = useit (12), i13 = useit (13), i14 = useit (14);
+    int i15 = useit (15), i16 = useit (16), i17 = useit (17);
+    int i18 = useit (18), i19 = useit (19), i20 = useit (20);
+    int i21 = useit (21), i22 = useit (22), i23 = useit (23);
+    int i24 = useit (24), i25 = useit (25), i26 = useit (26);
+    int i27 = useit (27), i28 = useit (28), i29 = useit (29);
+    int i30 = useit (30), i31 = useit (31), i32 = useit (32);
+    int i33 = useit (33), i34 = useit (34), i35 = useit (35);
+    int i36 = useit (36), i37 = useit (37), i38 = useit (38);
+    int i39 = useit (39), i40 = useit (40), i41 = useit (41);
+    int i42 = useit (42), i43 = useit (43), i44 = useit (44);
+    int i45 = useit (45), i46 = useit (46), i47 = useit (47);
+    int i48 = useit (48), i49 = useit (49), i50 = useit (50);
+    int i51 = useit (51), i52 = useit (52), i53 = useit (53);
+    int i54 = useit (54), i55 = useit (55), i56 = useit (56);
+    int i57 = useit (57), i58 = useit (58), i59 = useit (59);
+    int i60 = useit (60), i61 = useit (61), i62 = useit (62);
+    int i63 = useit (63), i64 = useit (64), i65 = useit (65);
+    int i66 = useit (66), i67 = useit (67), i68 = useit (68);
+    int i69 = useit (69), i70 = useit (70), i71 = useit (71);
+    int i72 = useit (72), i73 = useit (73), i74 = useit (74);
+    int i75 = useit (75), i76 = useit (76), i77 = useit (77);
+    int i78 = useit (78), i79 = useit (79), i80 = useit (80);
+    int i81 = useit (81), i82 = useit (82), i83 = useit (83);
+    int i84 = useit (84), i85 = useit (85), i86 = useit (86);
+    int i87 = useit (87), i88 = useit (88), i89 = useit (89);
+    int i90 = useit (90), i91 = useit (91), i92 = useit (92);
+    int i93 = useit (93), i94 = useit (94), i95 = useit (95);
+    int i96 = useit (96), i97 = useit (97), i98 = useit (98);
+    int i99 = useit (99);
+
+    /* Use all 100 of the local variables to derail agressive optimizers.  */
+
+    useit ( i0); useit ( i1); useit ( i2); useit ( i3); useit ( i4);
+    useit ( i5); useit ( i6); useit ( i7); useit ( i8); useit ( i9);
+    useit (i10); useit (i11); useit (i12); useit (i13); useit (i14);
+    useit (i15); useit (i16); useit (i17); useit (i18); useit (i19);
+    useit (i20); useit (i21); useit (i22); useit (i23); useit (i24);
+    useit (i25); useit (i26); useit (i27); useit (i28); useit (i29);
+    useit (i30); useit (i31); useit (i32); useit (i33); useit (i34);
+    useit (i35); useit (i36); useit (i37); useit (i38); useit (i39);
+    useit (i40); useit (i41); useit (i42); useit (i43); useit (i44);
+    useit (i45); useit (i46); useit (i47); useit (i48); useit (i49);
+    useit (i50); useit (i51); useit (i52); useit (i53); useit (i54);
+    useit (i55); useit (i56); useit (i57); useit (i58); useit (i59);
+    useit (i60); useit (i61); useit (i62); useit (i63); useit (i64);
+    useit (i65); useit (i66); useit (i67); useit (i68); useit (i69);
+    useit (i70); useit (i71); useit (i72); useit (i73); useit (i74);
+    useit (i75); useit (i76); useit (i77); useit (i78); useit (i79);
+    useit (i80); useit (i81); useit (i82); useit (i83); useit (i84);
+    useit (i85); useit (i86); useit (i87); useit (i88); useit (i89);
+    useit (i90); useit (i91); useit (i92); useit (i93); useit (i94);
+    useit (i95); useit (i96); useit (i97); useit (i98); useit (i99);
+
+    useit (abc); useit (bcd);
+
+    marker1 ();
+    return i0 + i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10
+      + i11 + i12 + i13 + i14 + i15 + i16 + i17 + i18 + i19 + i20
+      + i21 + i22 + i23 + i24 + i25 + i26 + i27 + i28 + i29 + i30
+      + i31 + i32 + i33 + i34 + i35 + i36 + i37 + i38 + i39 + i40
+      + i41 + i42 + i43 + i44 + i45 + i46 + i47 + i48 + i49 + i50
+      + i51 + i52 + i53 + i54 + i55 + i56 + i57 + i58 + i59 + i60
+      + i61 + i62 + i63 + i64 + i65 + i66 + i67 + i68 + i69 + i70
+      + i71 + i72 + i73 + i74 + i75 + i76 + i77 + i78 + i79 + i80
+      + i81 + i82 + i83 + i84 + i85 + i86 + i87 + i88 + i89 + i90
+      + i91 + i92 + i93 + i94 + i95 + i96 + i97 + i98 + i99 + abc + bcd;
+}
+
+int
+localscopes (x)
+     int x;
+{
+    int localval;
+    int retval;
+    int i;
+
+    localval = 0;
+    useit (localval);
+
+    {
+       int localval = x + 4 + sum_upto (3); /* 10 */
+       int localval1 = x + 5 + sum_upto (3); /* 11 */
+
+       useit (localval);
+       useit (localval1);
+       marker2 ();
+       {
+           int localval = localval1 + 3 + sum_upto (3); /* 20 */
+           int localval2 = localval1 + sum_upto (1); /* 12 */
+           useit (localval);
+           useit (localval2);
+           marker3 ();
+           {
+               int localval = localval2 + 3 + sum_upto (5); /* 30 */
+               int localval3 = localval2 + sum_upto (1); /* 13 */
+               useit (localval);
+               useit (localval3);
+               marker4 ();
+               retval = x + localval1 + localval2 + localval3;
+           }
+       }
+    }
+    return retval;
+}
+
+marker1 () {}
+marker2 () {}
+marker3 () {}
+marker4 () {}
diff --git a/gdb/testsuite/gdb.base/scope1.c b/gdb/testsuite/gdb.base/scope1.c
new file mode 100644 (file)
index 0000000..cccad6f
--- /dev/null
@@ -0,0 +1,45 @@
+static int filelocal = 2;      /* In Data section */
+static int filelocal_bss;      /* In BSS section */
+#ifndef __STDC__
+#define        const   /**/
+#endif
+static const int filelocal_ro = 202;   /* In Read-Only Data section */
+
+foo ()
+{
+  static int funclocal = 3;    /* In Data section */
+  static int funclocal_bss;    /* In BSS section */
+  static const int funclocal_ro = 203; /* RO Data */
+  static const int funclocal_ro_bss;   /* RO Data */
+
+  funclocal_bss = 103;
+  bar ();
+}
+
+bar ()
+{
+  static int funclocal = 4;    /* In data section */
+  static int funclocal_bss;    /* In BSS section */
+  funclocal_bss = 104;
+}
+
+init1 ()
+{
+  filelocal_bss = 102;
+}
+
+/* On some systems, such as AIX, unreferenced variables are deleted
+   from the executable.  */
+usestatics1 ()
+{
+  useit1 (filelocal);
+  useit1 (filelocal_bss);
+  useit1 (filelocal_ro);
+}
+
+useit1 (val)
+{
+    static int usedval;
+
+    usedval = val;
+}
diff --git a/gdb/testsuite/gdb.base/setvar.c b/gdb/testsuite/gdb.base/setvar.c
new file mode 100644 (file)
index 0000000..ee98b6f
--- /dev/null
@@ -0,0 +1,248 @@
+main (argc, argv, envp)
+     int argc;
+     char **argv;
+     char **envp;
+{
+    extern void dummy();
+    dummy();
+}
+
+/* We put main() right up front so its line number doesn't keep changing.  */
+
+/*
+ *     Test file with lots of different types, for testing the
+ *     "whatis" command.
+ */
+
+/*
+ *     First the basic C types.
+ */
+
+#if !defined (__STDC__) && !defined (_AIX)
+#define signed  /**/
+#endif
+
+char           v_char;
+signed char    v_signed_char;
+unsigned char  v_unsigned_char;
+
+short          v_short;
+signed short   v_signed_short;
+unsigned short v_unsigned_short;
+
+int            v_int;
+signed int     v_signed_int;
+unsigned int   v_unsigned_int;
+
+long           v_long;
+signed long    v_signed_long;
+unsigned long  v_unsigned_long;
+
+float          v_float;
+double         v_double;
+
+/*
+ *     Now some derived types, which are arrays, functions-returning,
+ *     pointers, structures, unions, and enumerations.
+ */
+
+/**** arrays *******/
+
+char           v_char_array[2];
+signed char    v_signed_char_array[2];
+unsigned char  v_unsigned_char_array[2];
+
+short          v_short_array[2];
+signed short   v_signed_short_array[2];
+unsigned short v_unsigned_short_array[2];
+
+int            v_int_array[2];
+signed int     v_signed_int_array[2];
+unsigned int   v_unsigned_int_array[2];
+
+long           v_long_array[2];
+signed long    v_signed_long_array[2];
+unsigned long  v_unsigned_long_array[2];
+
+float          v_float_array[2];
+double         v_double_array[2];
+
+/**** pointers *******/
+
+char           *v_char_pointer;
+signed char    *v_signed_char_pointer;
+unsigned char  *v_unsigned_char_pointer;
+
+short          *v_short_pointer;
+signed short   *v_signed_short_pointer;
+unsigned short *v_unsigned_short_pointer;
+
+int            *v_int_pointer;
+signed int     *v_signed_int_pointer;
+unsigned int   *v_unsigned_int_pointer;
+
+long           *v_long_pointer;
+signed long    *v_signed_long_pointer;
+unsigned long  *v_unsigned_long_pointer;
+
+float          *v_float_pointer;
+double         *v_double_pointer;
+
+/**** structs *******/
+
+struct t_struct {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_struct1;
+
+struct {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_struct2;
+
+/**** unions *******/
+
+union t_union {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_union;
+
+union {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_union2;
+
+/*** Functions returning type ********/
+
+char           v_char_func () { return(0); }
+signed char    v_signed_char_func () { return (0); }
+unsigned char  v_unsigned_char_func () { return (0); }
+
+short          v_short_func () { return (0); }
+signed short   v_signed_short_func () { return (0); }
+unsigned short v_unsigned_short_func () { return (0); }
+
+int            v_int_func () { return (0); }
+signed int     v_signed_int_func () { return (0); }
+unsigned int   v_unsigned_int_func () { return (0); }
+
+long           v_long_func () { return (0); }
+signed long    v_signed_long_func () { return (0); }
+unsigned long  v_unsigned_long_func () { return (0); }
+
+float          v_float_func () { return (0.0); }
+double         v_double_func () { return (0.0); }
+
+/**** Some misc more complicated things *******/
+
+struct link {
+       struct link *next;
+#ifdef __STDC__
+       struct link *(*linkfunc) (struct link *this, int flags);
+#else
+       struct link *(*linkfunc) ();
+#endif
+       struct t_struct stuff[1][2][3];
+} *s_link;
+
+union tu_link {
+       struct link *next;
+#ifdef __STDC__
+       struct link *(*linkfunc) (struct link *this, int flags);
+#else
+       struct link *(*linkfunc) ();
+#endif
+       struct t_struct stuff[1][2][3];
+} u_link;
+
+/**** Enumerations *******/
+
+enum colors {red, green, blue} color;
+enum cars {chevy, ford, porsche} clunker;
+
+void dummy()
+{
+  /* Some linkers (e.g. on AIX) remove unreferenced variables,
+     so make sure to reference them. */
+  v_char = 0;
+  v_signed_char = 1;
+  v_unsigned_char = 2;
+
+  v_short = 3;
+  v_signed_short = 4;
+  v_unsigned_short = 5;    
+
+  v_int = 6;
+  v_signed_int = 7;
+  v_unsigned_int = 8;    
+
+  v_long = 9;
+  v_signed_long = 10;
+  v_unsigned_long = 11;    
+  
+  v_float = 100.0;
+  v_double = 200.0;
+
+
+  v_char_array[0] = v_char;
+  v_signed_char_array[0] = v_signed_char;
+  v_unsigned_char_array[0] = v_unsigned_char;
+
+  v_short_array[0] = v_short;
+  v_signed_short_array[0] = v_signed_short;
+  v_unsigned_short_array[0] = v_unsigned_short;
+
+  v_int_array[0] = v_int;
+  v_signed_int_array[0] = v_signed_int;
+  v_unsigned_int_array[0] = v_unsigned_int;
+
+  v_long_array[0] = v_long;
+  v_signed_long_array[0] = v_signed_long;
+  v_unsigned_long_array[0] = v_unsigned_long;
+
+  v_float_array[0] = v_float;
+  v_double_array[0] = v_double;
+
+  v_char_pointer = &v_char;
+  v_signed_char_pointer = &v_signed_char;
+  v_unsigned_char_pointer = &v_unsigned_char;
+
+  v_short_pointer = &v_short;
+  v_signed_short_pointer = &v_signed_short;
+  v_unsigned_short_pointer = &v_unsigned_short;
+
+  v_int_pointer = &v_int;
+  v_signed_int_pointer = &v_signed_int;
+  v_unsigned_int_pointer = &v_unsigned_int;
+
+  v_long_pointer = &v_long;
+  v_signed_long_pointer = &v_signed_long;
+  v_unsigned_long_pointer = &v_unsigned_long;
+
+  v_float_pointer = &v_float;
+  v_double_pointer = &v_double;
+
+  color = red;
+  clunker = porsche;
+
+  u_link.next = s_link;
+
+  v_struct2.v_int_member = v_struct1.v_int_member;
+  v_union2.v_short_member = v_union.v_short_member;
+}
diff --git a/gdb/testsuite/gdb.base/setvar.exp b/gdb/testsuite/gdb.base/setvar.exp
new file mode 100644 (file)
index 0000000..3bdb8f4
--- /dev/null
@@ -0,0 +1,1889 @@
+#   Copyright (C) 1988, 1990, 1991, 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Rob Savoye. (rob@cygnus.com)
+
+if $tracelevel then {
+       strace $tracelevel
+       }
+
+#
+# test running programs
+#
+set prms_id 0
+set bug_id 0
+
+set binfile "setvar"
+
+if ![file exists $objdir/$subdir/$binfile] then {
+    perror "$objdir/$subdir/$binfile does not exist."
+    return 0
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $objdir/$subdir/$binfile
+
+#
+# set it up at a breakpoint so we canplay with the variable values
+#
+send "set print sevenbit-strings\n" ; expect -re "$prompt $"
+
+if ![runto main] then {
+    perror "couldn't run to breakpoint"
+    continue
+}
+
+# Determine expected output for unsigned long variables,
+# the output varies with sizeof (unsigned long).
+
+set ulong_minus_1 4294967295
+set ulong_minus_456 4294966840
+send "print sizeof (unsigned long)\n"
+expect {
+    -re ".\[0-9\]* = 4.*$prompt $" {}
+    -re ".\[0-9\]* = 8.*$prompt $" {
+       set ulong_minus_1 18446744073709551615
+       set ulong_minus_456 18446744073709551160
+    }
+    -re ".*$prompt $" {
+        fail "getting sizeof unsigned long"
+    }
+    default    { fail "(timeout) getting sizeof unsigned long" }
+}
+
+#
+# test "set variable" for type "char"
+#
+# Because bare char types can be either signed or unsigned, we just test the
+# range of values that are common to both (0-127).
+#    
+send "set variable v_char=0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_char\n"
+       expect {
+           -re ".\[0-9\]* = 0 \'.000\'.*$prompt $"       { pass "set variable char=0" }
+           -re "$prompt $"                      { fail "set variable char=0" }
+           timeout                              { fail "(timeout) set variable char=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable char=0" }
+    timeout                                      { fail "(timeout) set variable char=0" }
+}                         
+
+
+send "set variable v_char=1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_char\n"
+       expect {
+           -re ".\[0-9\]* = 1 \'.001\'.*$prompt $"       { pass "set variable char=1" }
+           -re "$prompt $"                      { fail "set variable char=1" }
+           timeout                              { fail "(timeout) set variable char=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable char=1" }
+    timeout                                      { fail "(timeout) set variable char=1" }
+}                         
+
+
+send "set variable v_char=27\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_char\n"
+       expect {
+           -re ".\[0-9\]* = 27 \'.e\'.*$prompt $"       { pass "set variable char=27 (Esc)" }
+           -re "$prompt $"                      { fail "set variable char=27 (Esc)" }
+           timeout                              { fail "(timeout) set variable char=27 (Esc)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable char=27 (Esc)" }
+    timeout                                      { fail "(timeout) set variable char=27 (Esc)" }
+}                         
+
+
+send "set variable v_char=32\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_char\n"
+       expect {
+           -re ".\[0-9\]* = 32 \' \'.*$prompt $"       { pass "set variable char=32 (SPC)" }
+           -re "$prompt $"                      { fail "set variable char=32 (SPC)" }
+           timeout                              { fail "(timeout) set variable char=32 (SPC)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable char=32 (SPC)" }
+    timeout                                      { fail "(timeout) set variable char=32 (SPC)" }
+}                         
+
+
+send "set variable v_char=65\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_char\n"
+       expect {
+           -re ".\[0-9\]* = 65 \'A\'.*$prompt $"       { pass "set variable char=65 ('A')" }
+           -re "$prompt $"                      { fail "set variable char=65 ('A')" }
+           timeout                              { fail "(timeout) set variable char=65 ('A')" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable char=65 ('A')" }
+    timeout                                      { fail "(timeout) set variable char=65 ('A')" }
+}                         
+
+
+send "set variable v_char=97\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_char\n"
+       expect {
+           -re ".\[0-9\]* = 97 \'a\'.*$prompt $"       { pass "set variable char=97 ('a')" }
+           -re "$prompt $"                      { fail "set variable char=97 ('a')" }
+           timeout                              { fail "(timeout) set variable char=97 ('a')" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable char=97 ('a')" }
+    timeout                                      { fail "(timeout) set variable char=97 ('a')" }
+}                         
+
+
+send "set variable v_char=126\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_char\n"
+       expect {
+           -re ".\[0-9\]* = 126 \'~\'.*$prompt $"       { pass "set variable char=126 ('~')" }
+           -re "$prompt $"                      { fail "set variable char=126 ('~')" }
+           timeout                              { fail "(timeout) set variable char=126 ('~')" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable char=126 ('~')" }
+    timeout                                      { fail "(timeout) set variable char=126 ('~')" }
+}                         
+
+
+send "set variable v_char=127\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_char\n"
+       expect {
+           -re ".\[0-9\]* = 127 \'.177\'.*$prompt $"       { pass "set variable char=127 (8-bit)" }
+           -re "$prompt $"                      { fail "set variable char=127 (8-bit)" }
+           timeout                              { fail "(timeout) set variable char=127 (8-bit)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable char=127 (8-bit)" }
+    timeout                                      { fail "(timeout) set variable char=127 (8-bit)" }
+}                         
+
+
+#
+# test "set variable" for type "signed char"
+#    
+send "set variable v_char=0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_char\n"
+       expect {
+           -re ".\[0-9\]* = 0 \'.000\'.*$prompt $"       { pass "set variable signed char=0" }
+           -re "$prompt $"                      { fail "set variable signed char=0" }
+           timeout                              { fail "(timeout) set variable signed char=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed char=0" }
+    timeout                                      { fail "(timeout) set variable signed char=0" }
+}                         
+
+
+send "set variable v_signed_char=1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_char\n"
+       expect {
+           -re ".\[0-9\]* = 1 \'.001\'.*$prompt $"       { pass "set variable signed char=1" }
+           -re "$prompt $"                      { fail "set variable signed char=1" }
+           timeout                              { fail "(timeout) set variable signed char=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed char=1" }
+    timeout                                      { fail "(timeout) set variable signed char=1" }
+}                         
+
+
+send "set variable v_signed_char=27\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_char\n"
+       expect {
+           -re ".\[0-9\]* = 27 \'.e\'.*$prompt $"       { pass "set variable signed char=27 (Esc)" }
+           -re "$prompt $"                      { fail "set variable signed char=27 (Esc)" }
+           timeout                              { fail "(timeout) set variable signed char=27 (Esc)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed char=27 (Esc)" }
+    timeout                                      { fail "(timeout) set variable signed char=27 (Esc)" }
+}                         
+
+
+send "set variable v_signed_char=32\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_char\n"
+       expect {
+           -re ".\[0-9\]* = 32 \' \'.*$prompt $"       { pass "set variable signed char=32 (SPC)" }
+           -re "$prompt $"                      { fail "set variable signed char=32 (SPC)" }
+           timeout                              { fail "(timeout) set variable signed char=32 (SPC)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed char=32 (SPC)" }
+    timeout                                      { fail "(timeout) set variable signed char=32 (SPC)" }
+}                         
+
+
+send "set variable v_signed_char=65\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_char\n"
+       expect {
+           -re ".\[0-9\]* = 65 \'A\'.*$prompt $"       { pass "set variable signed char=65 ('A')" }
+           -re "$prompt $"                      { fail "set variable signed char=65 ('A')" }
+           timeout                              { fail "(timeout) set variable signed char=65 ('A')" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed char=65 ('A')" }
+    timeout                                      { fail "(timeout) set variable signed char=65 ('A')" }
+}                         
+
+
+send "set variable v_signed_char=97\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_char\n"
+       expect {
+           -re ".\[0-9\]* = 97 \'a\'.*$prompt $"       { pass "set variable signed char=97 ('a')" }
+           -re "$prompt $"                      { fail "set variable signed char=97 ('a')" }
+           timeout                              { fail "(timeout) set variable signed char=97 ('a')" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed char=97 ('a')" }
+    timeout                                      { fail "(timeout) set variable signed char=97 ('a')" }
+}                         
+
+
+send "set variable v_signed_char=126\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_char\n"
+       expect {
+           -re ".\[0-9\]* = 126 \'~\'.*$prompt $"       { pass "set variable signed char=126 ('~')" }
+           -re "$prompt $"                      { fail "set variable signed char=126 ('~')" }
+           timeout                              { fail "(timeout) set variable signed char=126 ('~')" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed char=126 ('~')" }
+    timeout                                      { fail "(timeout) set variable signed char=126 ('~')" }
+}                         
+
+
+send "set variable v_signed_char=127\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_char\n"
+       expect {
+           -re ".\[0-9\]* = 127 \'.177\'.*$prompt $"       { pass "set variable signed char=127 (8-bit)" }
+           -re "$prompt $"                      { fail "set variable signed char=127 (8-bit)" }
+           timeout                              { fail "(timeout) set variable signed char=127 (8-bit)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed char=127 (8-bit)" }
+    timeout                                      { fail "(timeout) set variable signed char=127 (8-bit)" }
+}                         
+
+
+send "set variable v_signed_char=-1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_char\n"
+       expect {
+           -re ".\[0-9\]* = -1 \'.377\'.*$prompt $"       { pass "set variable signed char=-1 (-1)" }
+           -re "$prompt $"                      { fail "set variable signed char=-1 (minus)" }
+           timeout                              { fail "(timeout) set variable signed char=-1 (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed char=-1 (minus)" }
+    timeout                                      { fail "(timeout) set variable signed char=-1 (minus)" }
+}                         
+
+
+send "set variable v_signed_char=0xFF\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_char\n"
+       expect {
+           -re ".\[0-9\]* = -1 \'.377\'.*$prompt $"       { pass "set variable signed char=0xFF (0xFF)" }
+           -re "$prompt $"                      { fail "set variable signed char=0xFF (hex)" }
+           timeout                              { fail "(timeout) set variable signed char=0xFF (hex)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed char=0xFF (hex)" }
+    timeout                                      { fail "(timeout) set variable signed char=0xFF (hex)" }
+}                         
+
+
+#
+# test "set variable" for type "unsigned char"
+#
+send "set variable v_unsigned_char=0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_char\n"
+       expect {
+           -re ".\[0-9\]* = 0 \'.000\'.*$prompt $"       { pass "set variable unsigned char=0" }
+           -re "$prompt $"                      { fail "set variable unsigned char=0" }
+           timeout                              { fail "(timeout) set variable unsigned char=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned char=0" }
+    timeout                                      { fail "(timeout) set variable unsigned char=0" }
+}                         
+
+
+send "set variable v_unsigned_char=1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_char\n"
+       expect {
+           -re ".\[0-9\]* = 1 \'.001\'.*$prompt $"       { pass "set variable unsigned char=1" }
+           -re "$prompt $"                      { fail "set variable unsigned char=1" }
+           timeout                              { fail "(timeout) set variable unsigned char=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned char=1" }
+    timeout                                      { fail "(timeout) set variable unsigned char=1" }
+}                         
+
+
+send "set variable v_unsigned_char=27\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_char\n"
+       expect {
+           -re ".\[0-9\]* = 27 \'.e\'.*$prompt $"       { pass "set variable unsigned char=27 (Esc)" }
+           -re "$prompt $"                      { fail "set variable unsigned char=27 (Esc)" }
+           timeout                              { fail "(timeout) set variable unsigned char=27 (Esc)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned char=27 (Esc)" }
+    timeout                                      { fail "(timeout) set variable unsigned char=27 (Esc)" }
+}                         
+
+
+send "set variable v_unsigned_char=32\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_char\n"
+       expect {
+           -re ".\[0-9\]* = 32 \' \'.*$prompt $"       { pass "set variable unsigned char=32 (SPC)" }
+           -re "$prompt $"                      { fail "set variable unsigned char=32 (SPC)" }
+           timeout                              { fail "(timeout) set variable unsigned char=32 (SPC)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned char=32 (SPC)" }
+    timeout                                      { fail "(timeout) set variable unsigned char=32 (SPC)" }
+}                         
+
+
+send "set variable v_unsigned_char=65\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_char\n"
+       expect {
+           -re ".\[0-9\]* = 65 \'A\'.*$prompt $"       { pass "set variable unsigned char=65 ('A')" }
+           -re "$prompt $"                      { fail "set variable unsigned char=65 ('A')" }
+           timeout                              { fail "(timeout) set variable unsigned char=65 ('A')" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned char=65 ('A')" }
+    timeout                                      { fail "(timeout) set variable unsigned char=65 ('A')" }
+}                         
+
+
+send "set variable v_unsigned_char=97\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_char\n"
+       expect {
+           -re ".\[0-9\]* = 97 \'a\'.*$prompt $"       { pass "set variable unsigned char=97 ('a')" }
+           -re "$prompt $"                      { fail "set variable unsigned char=97 ('a')" }
+           timeout                              { fail "(timeout) set variable unsigned char=97 ('a')" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned char=97 ('a')" }
+    timeout                                      { fail "(timeout) set variable unsigned char=97 ('a')" }
+}                         
+
+
+send "set variable v_unsigned_char=126\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_char\n"
+       expect {
+           -re ".\[0-9\]* = 126 \'~\'.*$prompt $"       { pass "set variable unsigned char=126 ('~')" }
+           -re "$prompt $"                      { fail "set variable unsigned char=126 ('~')" }
+           timeout                              { fail "(timeout) set variable unsigned char=126 ('~')" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned char=126 ('~')" }
+    timeout                                      { fail "(timeout) set variable unsigned char=126 ('~')" }
+}                         
+
+
+send "set variable v_unsigned_char=~0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_char\n"
+       expect {
+           -re ".\[0-9\]* = 255 \'.377\'.*$prompt $"       { pass "set variable unsigned char=255 (8-bit)" }
+           -re "$prompt $"                      { fail "set variable unsigned char=255 (8-bit)" }
+           timeout                              { fail "(timeout) set variable unsigned char=255 (8-bit)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned char=255 (8-bit)" }
+    timeout                                      { fail "(timeout) set variable unsigned char=255 (8-bit)" }
+}                         
+
+
+#
+# test "set variable" for type "short"
+#
+send "set variable v_short=0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_short\n"
+       expect {
+           -re ".\[0-9\]* = 0.*$prompt $"       { pass "set variable short=0" }
+           -re "$prompt $"                      { fail "set variable short=0" }
+           timeout                              { fail "(timeout) set variable short=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable short=0" }
+    timeout                                      { fail "(timeout) set variable short=0" }
+}                         
+
+
+send "set variable v_short=1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_short\n"
+       expect {
+           -re ".\[0-9\]* = 1.*$prompt $"       { pass "set variable short=1" }
+           -re "$prompt $"                      { fail "set variable short=1" }
+           timeout                              { fail "(timeout) set variable short=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable short=1" }
+    timeout                                      { fail "(timeout) set variable short=1" }
+}                         
+
+
+send "set variable v_short=-1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_short\n"
+       expect {
+           -re ".\[0-9\]* = -1.*$prompt $"       { pass "set variable short=-1 (minus)" }
+           -re "$prompt $"                      { fail "set variable short=-1 (minus)" }
+           timeout                              { fail "(timeout) set variable signed short=-1 (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable short=-1 (minus)" }
+    timeout                                      { fail "(timeout) set variable short=-1 (minus)" }
+}                         
+
+
+#
+# test "set variable" for type "signed short"
+#
+send "set variable v_signed_short=0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_short\n"
+       expect {
+           -re ".\[0-9\]* = 0.*$prompt $"       { pass "set variable signed short=0" }
+           -re "$prompt $"                      { fail "set variable signed short=0" }
+           timeout                              { fail "(timeout) set variable signed short=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed short=0" }
+    timeout                                      { fail "(timeout) set variable signed short=0" }
+}                         
+
+
+send "set variable v_signed_short=1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_short\n"
+       expect {
+           -re ".\[0-9\]* = 1.*$prompt $"       { pass "set variable signed short=1" }
+           -re "$prompt $"                      { fail "set variable signed short=1" }
+           timeout                              { fail "(timeout) set variable signed short=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed short=1" }
+    timeout                                      { fail "(timeout) set variable signed short=1" }
+}                         
+
+
+send "set variable v_signed_short=-1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_short\n"
+       expect {
+           -re ".\[0-9\]* = -1.*$prompt $"       { pass "set variable signed short=-1 (minus)" }
+           -re "$prompt $"                      { fail "set variable signed short=-1 (minus)" }
+           timeout                              { fail "(timeout) set variable signed short=-1 (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed short=-1 (minus)" }
+    timeout                                      { fail "(timeout) set variable signed short=-1 (minus)" }
+}                         
+
+
+#
+# test "set variable" for type "unsigned short"
+#
+send "set variable v_unsigned_short=0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_short\n"
+       expect {
+           -re ".\[0-9\]* = 0.*$prompt $"       { pass "set variable unsigned short=0" }
+           -re "$prompt $"                      { fail "set variable unsigned short=0" }
+           timeout                              { fail "(timeout) set variable unsigned short=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned short=0" }
+    timeout                                      { fail "(timeout) set variable unsigned short=0" }
+}                         
+
+
+send "set variable v_unsigned_short=1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_short\n"
+       expect {
+           -re ".\[0-9\]* = 1.*$prompt $"       { pass "set variable unsigned short=1" }
+           -re "$prompt $"                      { fail "set variable unsigned short=1" }
+           timeout                              { fail "(timeout) set variable unsigned short=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned short=1" }
+    timeout                                      { fail "(timeout) set variable unsigned short=1" }
+}                         
+
+
+send "set variable v_unsigned_short=~0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_short\n"
+       expect {
+           -re ".\[0-9\]* = 65535.*$prompt $"       { pass "set variable unsigned short=~0 (minus)" }
+           -re "$prompt $"                      { fail "set variable unsigned short=~0 (minus)" }
+           timeout                              { fail "(timeout)  set variable unsigned short=~0 (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned short=~0 (minus)" }
+    timeout                                      { fail "(timeout) set variable unsigned short=~0 (minus)" }
+}                         
+
+
+#
+# test "set variable" for type "int"
+#
+send "set variable v_int=0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_int\n"
+       expect {
+           -re ".\[0-9\]* = 0.*$prompt $"       { pass "set variable int=0" }
+           -re "$prompt $"                      { fail "set variable int=0" }
+           timeout                              { fail "(timeout) set variable int=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable int=0" }
+    timeout                                      { fail "(timeout) set variable int=0" }
+}                         
+
+
+send "set variable v_int=1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_int\n"
+       expect {
+           -re ".\[0-9\]* = 1.*$prompt $"       { pass "set variable int=1" }
+           -re "$prompt $"                      { fail "set variable int=1" }
+           timeout                              { fail "(timeout) set variable int=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable int=1" }
+    timeout                                      { fail "(timeout) set variable int=1" }
+}                         
+
+
+send "set variable v_int=-1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_int\n"
+       expect {
+           -re ".\[0-9\]* = -1.*$prompt $"       { pass "set variable int=-1 (minus)" }
+           -re "$prompt $"                      { fail "set variable int=-1 (minus)" }
+           timeout                              { fail "(timeout) set variable signed int=-1 (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable int=-1 (minus)" }
+    timeout                                      { fail "(timeout) set variable int=-1 (minus)" }
+}                         
+
+
+#
+# test "set variable" for type "signed int"
+#
+send "set variable v_signed_int=0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_int\n"
+       expect {
+           -re ".\[0-9\]* = 0.*$prompt $"       { pass "set variable signed int=0" }
+           -re "$prompt $"                      { fail "set variable signed int=0" }
+           timeout                              { fail "(timeout) set variable signed int=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed int=0" }
+    timeout                                      { fail "(timeout) set variable signed int=0" }
+}                         
+
+
+send "set variable v_signed_int=1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_int\n"
+       expect {
+           -re ".\[0-9\]* = 1.*$prompt $"       { pass "set variable signed int=1" }
+           -re "$prompt $"                      { fail "set variable signed int=1" }
+           timeout                              { fail "(timeout) set variable signed int=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed int=1" }
+    timeout                                      { fail "(timeout) set variable signed int=1" }
+}                         
+
+
+send "set variable v_signed_int=-1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_int\n"
+       expect {
+           -re ".\[0-9\]* = -1.*$prompt $"       { pass "set variable signed int=-1 (minus)" }
+           -re "$prompt $"                      { fail "set variable signed int=-1 (minus)" }
+           timeout                              { fail "(timeout) set variable signed int=-1 (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed int=-1 (minus)" }
+    timeout                                      { fail "(timeout) set variable signed int=-1 (minus)" }
+}                         
+
+
+#
+# test "set variable" for type "unsigned int"
+#
+send "set variable v_unsigned_int=0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_int\n"
+       expect {
+           -re ".\[0-9\]* = 0.*$prompt $"       { pass "set variable unsigned int=0" }
+           -re "$prompt $"                      { fail "set variable unsigned int=0" }
+           timeout                              { fail "(timeout) set variable unsigned int=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned int=0" }
+    timeout                                      { fail "(timeout) set variable unsigned int=0" }
+}                         
+
+
+send "set variable v_unsigned_int=1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_int\n"
+       expect {
+           -re ".\[0-9\]* = 1.*$prompt $"       { pass "set variable unsigned int=1" }
+           -re "$prompt $"                      { fail "set variable unsigned int=1" }
+           timeout                              { fail "(timeout) set variable unsigned int=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned int=1" }
+    timeout                                      { fail "(timeout) set variable unsigned int=1" }
+}                         
+
+
+send "set variable v_unsigned_int=~0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_int\n"
+       expect {
+           -re ".\[0-9\]* = 4294967295.*$prompt $"       { pass "set variable unsigned int=~0 (minus)" }
+           -re "$prompt $"                      { fail "set variable unsigned int=~0 (minus)" }
+           timeout                              { fail "(timeout) set variable unsigned int=~0 (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned int=~0 (minus)" }
+    timeout                                      { fail "(timeout) set variable unsigned int=~0 (minus)" }
+}                         
+
+
+#
+# test "set variable" for type "long"
+#
+send "set variable v_long=0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_long\n"
+       expect {
+           -re ".\[0-9\]* = 0.*$prompt $"       { pass "set variable long=0" }
+           -re "$prompt $"                      { fail "set variable long=0" }
+           timeout                              { fail "(timeout) set variable long=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable long=0" }
+    timeout                                      { fail "(timeout) set variable long=0" }
+}                         
+
+
+send "set variable v_long=1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_long\n"
+       expect {
+           -re ".\[0-9\]* = 1.*$prompt $"       { pass "set variable long=1" }
+           -re "$prompt $"                      { fail "set variable long=1" }
+           timeout                              { fail "(timeout) set variable long=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable long=1" }
+    timeout                                      { fail "(timeout) set variable long=1" }
+}                         
+
+
+send "set variable v_long=-1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_long\n"
+       expect {
+           -re ".\[0-9\]* = -1.*$prompt $"       { pass "set variable long=-1 (minus)" }
+           -re "$prompt $"                      { fail "set variable long=-1 (minus)" }
+           timeout                              { fail "(timeout) set variable signed long=-1 (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable long=-1 (minus)" }
+    timeout                                      { fail "(timeout) set variable long=-1 (minus)" }
+}                         
+
+
+#
+# test "set variable" for type "signed long"
+#
+send "set variable v_signed_long=0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_long\n"
+       expect {
+           -re ".\[0-9\]* = 0.*$prompt $"       { pass "set variable signed long=0" }
+           -re "$prompt $"                      { fail "set variable signed long=0" }
+           timeout                              { fail "(timeout) set variable signed long=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed long=0" }
+    timeout                                      { fail "(timeout) set variable signed long=0" }
+}                         
+
+
+send "set variable v_signed_long=1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_long\n"
+       expect {
+           -re ".\[0-9\]* = 1.*$prompt $"       { pass "set variable signed long=1" }
+           -re "$prompt $"                      { fail "set variable signed long=1" }
+           timeout                              { fail "(timeout) set variable signed long=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed long=1" }
+    timeout                                      { fail "(timeout) set variable signed long=1" }
+}                         
+
+
+send "set variable v_signed_long=-1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_signed_long\n"
+       expect {
+           -re ".\[0-9\]* = -1.*$prompt $"       { pass "set variable signed long=-1 (minus)" }
+           -re "$prompt $"                      { fail "set variable signed long=-1 (minus)" }
+           timeout                              { fail "(timeout) set variable signed long=-1 (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed long=-1 (minus)" }
+    timeout                                      { fail "(timeout) set variable signed long=-1 (minus)" }
+}                         
+
+
+#
+# test "set variable" for type "unsigned long"
+#
+send "set variable v_unsigned_long=0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_long\n"
+       expect {
+           -re ".\[0-9\]* = 0.*$prompt $"       { pass "set variable unsigned long=0" }
+           -re "$prompt $"                      { fail "set variable unsigned long=0" }
+           timeout                              { fail "(timeout) set variable unsigned long=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned long=0" }
+    timeout                                      { fail "(timeout) set variable unsigned long=0" }
+}                         
+
+
+send "set variable v_unsigned_long=1\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_long\n"
+       expect {
+           -re ".\[0-9\]* = 1.*$prompt $"       { pass "set variable unsigned long=1" }
+           -re "$prompt $"                      { fail "set variable unsigned long=1" }
+           timeout                              { fail "(timeout) set variable unsigned long=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned long=1" }
+    timeout                                      { fail "(timeout) set variable unsigned long=1" }
+}                         
+
+
+send "set variable v_unsigned_long=~0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_long\n"
+       expect {
+           -re ".\[0-9\]* = $ulong_minus_1.*$prompt $"       { pass "set variable unsigned long=~0 (minus)" }
+           -re "$prompt $"                      { fail "set variable unsigned long=~0 (minus)" }
+           timeout                              { fail "(timeout) set variable unsigned long=~0 (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned long=~0 (minus)" }
+    timeout                                      { fail "(timeout) set variable unsigned long=~0 (minus)" }
+}                         
+
+
+#
+# test "set variable" for type "float"
+#
+send "set variable v_float=0.0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_float\n"
+       expect {
+           -re ".\[0-9\]* = 0.*$prompt $"       { pass "set variable float=0" }
+           -re "$prompt $"                      { fail "set variable float=0" }
+           timeout                              { fail "(timeout) set variable float=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable float=0" }
+    timeout                                      { fail "(timeout) set variable float=0" }
+}                         
+
+
+send "set variable v_float=1.0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_float\n"
+       expect {
+           -re ".\[0-9\]* = 1.*$prompt $"       { pass "set variable float=1" }
+           -re "$prompt $"                      { fail "set variable float=1" }
+           timeout                              { fail "(timeout) set variable float=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable float=1" }
+    timeout                                      { fail "(timeout) set variable float=1" }
+}                         
+
+
+send "set variable v_float=-1.0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_float\n"
+       expect {
+           -re ".\[0-9\]* = -1.*$prompt $"       { pass "set variable float=-1 (minus)" }
+           -re "$prompt $"                      { fail "set variable float=-1 (minus)" }
+           timeout                              { fail "(timeout) set variable signed float=-1 (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable float=-1 (minus)" }
+    timeout                                      { fail "(timeout) set variable float=-1 (minus)" }
+}                         
+
+
+#
+# test "set variable" for type "double"
+#
+send "set variable v_double=0.0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_double\n"
+       expect {
+           -re ".\[0-9\]* = 0.*$prompt $"       { pass "set variable double=0" }
+           -re "$prompt $"                      { fail "set variable double=0" }
+           timeout                              { fail "(timeout) set variable double=0" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable double=0" }
+    timeout                                      { fail "(timeout) set variable double=0" }
+}                         
+
+
+send "set variable v_double=1.0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_double\n"
+       expect {
+           -re ".\[0-9\]* = 1.*$prompt $"       { pass "set variable double=1" }
+           -re "$prompt $"                      { fail "set variable double=1" }
+           timeout                              { fail "(timeout) set variable double=1" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable double=1" }
+    timeout                                      { fail "(timeout) set variable double=1" }
+}                         
+
+
+send "set variable v_double=-1.0\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_double\n"
+       expect {
+           -re "print.*.\[0-9\]* = -1.*$prompt $"       { pass "set variable double=-1 (minus)" }
+           -re "$prompt $"                      { fail "set variable double=-1 (minus)" }
+           timeout                              { fail "(timeout) set variable double=-1 (minus)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable double=-1 (minus)" }
+    timeout                                      { fail "(timeout) set variable double=-1 (minus)" }
+}                         
+
+
+#
+# test "set variable" for "char array[2]"
+#
+send "set variable v_char_array\[0\]='h'\n"
+expect -re "$prompt $"
+send "set variable v_char_array\[1\]='i'\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_char_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\"hi\".*$prompt $"       { pass "set variable char array=\"hi\" (string)" }
+           -re "$prompt $"                      { fail "set variable char array=\"hi\" (string)" }
+           timeout                              { fail "(timeout) set variable char array=\"hi\" (string)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable char array=\"hi\" (string)" }
+    timeout                                      { fail "(timeout) set variable char array=\"hi\" (string)" }
+}                         
+
+
+#
+# test "set variable" for "signed char array[2]"
+#
+send "set variable v_signed_char_array\[0\]='h'\n"
+expect -re "$prompt $"
+send "set variable v_signed_char_array\[1\]='i'\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_signed_char_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\"hi\".*$prompt $"       { pass "set variable signed char array=\"hi\" (string)" }
+           -re "$prompt $"                      { fail "set variable signed char array=\"hi\" (string)" }
+           timeout                              { fail "(timeout) set variable signed char array=\"hi\" (string)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed char array=\"hi\" (string)" }
+    timeout                                      { fail "(timeout) set variable signed char array=\"hi\" (string)" }
+}                         
+
+
+#
+# test "set variable" for "unsigned char array[2]"
+#
+send "set variable v_unsigned_char_array\[0\]='h'\n"
+expect -re "$prompt $"
+send "set variable v_unsigned_char_array\[1\]='i'\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_unsigned_char_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\"hi\".*$prompt $"       { pass "set variable unsigned char array=\"hi\" (string)" }
+           -re "$prompt $"                      { fail "set variable unsigned char array=\"hi\" (string)" }
+           timeout                              { fail "(timeout) set variable unsigned char array=\"hi\" (string)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned char array=\"hi\" (string)" }
+    timeout                                      { fail "(timeout) set variable unsigned char array=\"hi\" (string)" }
+}                         
+
+
+#
+# test "set variable" for "short array[2]"
+#
+send "set variable v_short_array\[0\]=123\n"
+expect -re "$prompt $"
+send "set variable v_short_array\[1\]=-456\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_short_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $"       { pass "set variable short array" }
+           -re "$prompt $"                      { fail "set variable short array" }
+           timeout                              { fail "(timeout) set variable short array" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable short array" }
+    timeout                                      { fail "(timeout) set variable short array" }
+}                         
+
+
+#
+# test "set variable" for "signed short array[2]"
+#
+send "set variable v_signed_short_array\[0\]=123\n"
+expect -re "$prompt $"
+send "set variable v_signed_short_array\[1\]=-456\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_signed_short_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $"       { pass "set variable signed short array" }
+           -re "$prompt $"                      { fail "set variable signed short array" }
+           timeout                              { fail "(timeout) set variable signed short array" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed short array" }
+    timeout                                      { fail "(timeout) set variable signed short array" }
+}                         
+
+
+#
+# test "set variable" for "unsigned short array[2]"
+#
+send "set variable v_unsigned_short_array\[0\]=123\n"
+expect -re "$prompt $"
+send "set variable v_unsigned_short_array\[1\]=-456\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_unsigned_short_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*65080\}.*$prompt $"       { pass "set variable unsigned short array" }
+           -re "$prompt $"                      { fail "set variable unsigned short array" }
+           timeout                              { fail "(timeout) set variable unsigned short array" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned short array" }
+    timeout                                      { fail "(timeout) set variable unsigned short array" }
+}                         
+
+
+#
+# test "set variable" for "int array[2]"
+#
+send "set variable v_int_array\[0\]=123\n"
+expect -re "$prompt $"
+send "set variable v_int_array\[1\]=-456\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_int_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $"       { pass "set variable int array" }
+           -re "$prompt $"                      { fail "set variable int array" }
+           timeout                              { fail "(timeout) set variable int array" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable int array" }
+    timeout                                      { fail "(timeout) set variable int array" }
+}                         
+
+
+#
+# test "set variable" for "signed int array[2]"
+#
+send "set variable v_signed_int_array\[0\]=123\n"
+expect -re "$prompt $"
+send "set variable v_signed_int_array\[1\]=-456\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_signed_int_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $"       { pass "set variable signed int array" }
+           -re "$prompt $"                      { fail "set variable signed int array" }
+           timeout                              { fail "(timeout) set variable signed int array" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed int array" }
+    timeout                                      { fail "(timeout) set variable signed int array" }
+}                         
+
+
+
+#
+# test "set variable" for "unsigned int array[2]"
+#
+send "set variable v_unsigned_int_array\[0\]=123\n"
+expect -re "$prompt $"
+send "set variable v_unsigned_int_array\[1\]=-456\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_unsigned_int_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*4294966840\}.*$prompt $"       { pass "set variable unsigned int array" }
+           -re "$prompt $"                      { fail "set variable unsigned int array" }
+           timeout                              { fail "(timeout) set variable unsigned int array" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned int array" }
+    timeout                                      { fail "(timeout) set variable unsigned int array" }
+}                         
+
+
+#
+# test "set variable" for "long array[2]"
+#
+send "set variable v_long_array\[0\]=123\n"
+expect -re "$prompt $"
+send "set variable v_long_array\[1\]=-456\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_long_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $"       { pass "set variable long array" }
+           -re "$prompt $"                      { fail "set variable long array" }
+           timeout                              { fail "(timeout) set variable long array" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable long array" }
+    timeout                                      { fail "(timeout) set variable long array" }
+}                         
+
+
+#
+# test "set variable" for "signed long array[2]"
+#
+send "set variable v_signed_long_array\[0\]=123\n"
+expect -re "$prompt $"
+send "set variable v_signed_long_array\[1\]=-456\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_signed_long_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $"       { pass "set variable signed long array" }
+           -re "$prompt $"                      { fail "set variable signed long array" }
+           timeout                              { fail "(timeout) set variable signed long array" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable signed long array" }
+    timeout                                      { fail "(timeout) set variable signed long array" }
+}                         
+
+
+
+#
+# test "set variable" for "unsigned long array[2]"
+#
+send "set variable v_unsigned_long_array\[0\]=123\n"
+expect -re "$prompt $"
+send "set variable v_unsigned_long_array\[1\]=-456\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_unsigned_long_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*$ulong_minus_456\}.*$prompt $"       { pass "set variable unsigned long array" }
+           -re "$prompt $"                      { fail "set variable unsigned long array" }
+           timeout                              { fail "(timeout) set variable unsigned long array" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable unsigned long array" }
+    timeout                                      { fail "(timeout) set variable unsigned long array" }
+}                         
+
+
+#
+# test "set variable" for "float array[2]"
+#
+send "set variable v_float_array\[0\]=123.0\n"
+expect -re "$prompt $"
+send "set variable v_float_array\[1\]=-456.0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_float_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $"       { pass "set variable float array" }
+           -re "$prompt $"                      { fail "set variable float array" }
+           timeout                              { fail "(timeout) set variable float array" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable float array" }
+    timeout                                      { fail "(timeout) set variable float array" }
+}                         
+
+
+#
+# test "set variable" for "double array[2]"
+#
+send "set variable v_double_array\[0\]=123.0\n"
+expect -re "$prompt $"
+send "set variable v_double_array\[1\]=-456.0\n"
+expect {
+    -re "$prompt $"\
+       {
+       send "print v_double_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $"       { pass "set variable double array" }
+           -re "$prompt $"                      { fail "set variable double array" }
+           timeout                              { fail "(timeout) set variable double array" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable double array" }
+    timeout                                      { fail "(timeout) set variable double array" }
+}                         
+
+
+#
+# test "set variable" for type "char *"
+#
+send "set v_char_pointer=v_char_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_char_pointer)='h'\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_char_pointer+1)='i'\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_char_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\"hi\".*$prompt $" {
+               send "print *(v_char_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 105 \'i\'.*$prompt $"    { pass "set variable char pointer=\"hi\" (string)" }
+                   -re "$prompt $"                              { fail "set variable char pointer=\"hi\" (string)" }
+                   timeout                              { fail "(timeout) set variable char pointer=\"hi\" (string)" }
+
+               }
+           }
+           -re "$prompt $"                              { fail "set variable char pointer=\"hi\" (string)" }
+           timeout                              { fail "(timeout) set variable char pointer=\"hi\" (string)" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable char pointer=\"hi\" (string)" }
+    timeout                                      { fail "(timeout) set variable char pointer=\"hi\" (string)" }
+}                         
+
+
+#
+# test "set variable" for type "signed char *"
+#
+send "set v_signed_char_pointer=v_signed_char_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_signed_char_pointer)='h'\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_signed_char_pointer+1)='i'\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_char_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\"hi\".*$prompt $" {
+               send "print *(v_signed_char_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 105 \'i\'.*$prompt $"    { pass "set variable signed char pointer=\"hi\" (string)" }
+                   -re "$prompt $"                { fail "set variable signed char pointer=\"hi\" (string)" }
+                   timeout                              { fail "(timeout) set variable signed char pointer=\"hi\" (string)" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable signed char pointer=\"hi\" (string)" }
+           timeout                              { fail "(timeout) set variable signed char pointer=\"hi\" (string)" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable signed char pointer=\"hi\" (string)" }
+    timeout                                      { fail "(timeout) set variable signed char pointer=\"hi\" (string)" }
+}                         
+
+
+#
+# test "set variable" for type "unsigned char *"
+#
+send "set v_unsigned_char_pointer=v_unsigned_char_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_unsigned_char_pointer)='h'\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_unsigned_char_pointer+1)='i'\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_char_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\"hi\".*$prompt $" {
+               send "print *(v_unsigned_char_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 105 \'i\'.*$prompt $"    { pass "set variable unsigned char pointer=\"hi\" (string)" }
+                   -re "$prompt $"                { fail "set variable unsigned char pointer=\"hi\" (string)" }
+                   timeout                              { fail "(timeout) set variable unsigned char pointer=\"hi\" (string)" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable unsigned char pointer=\"hi\" (string)" }
+           timeout                              { fail "(timeout) set variable unsigned char pointer=\"hi\" (string)" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable unsigned char pointer=\"hi\" (string)" }
+    timeout                                      { fail "(timeout) set variable unsigned char pointer=\"hi\" (string)" }
+}                         
+
+
+#
+# test "set variable" for type "short *"
+#
+send "set v_short_pointer=v_short_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_short_pointer)=123\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_short_pointer+1)=-456\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_short_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $" {
+               send "print *(v_short_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = -456.*$prompt $"    { pass "set variable short pointer" }
+                   -re "$prompt $"                      { fail "set variable short pointer" }
+                   timeout                              { fail "(timeout) set variable short pointer" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable short pointer" }
+           timeout                              { fail "(timeout) set variable short pointer" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable short pointer" }
+    timeout                                      { fail "(timeout) set variable short pointer" }
+}                         
+
+
+#
+# test "set variable" for type "signed short *"
+#
+send "set v_signed_short_pointer=v_signed_short_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_signed_short_pointer)=123\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_signed_short_pointer+1)=-456\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_short_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $" {
+               send "print *(v_signed_short_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]*.*=.*-456.*$prompt $"    { pass "set variable signed short pointer" }
+                   -re "$prompt $"                { fail "set variable signed short pointer (FIXME)" }
+                   timeout                              { fail "(timeout) set variable signed short pointer (FIXME)" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable signed short pointer (FIXME)" }
+           timeout                              { fail "(timeout) set variable signed short pointer (FIXME)" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable signed short pointer (FIXME)" }
+    timeout                                      { fail "(timeout) set variable signed short pointer (FIXME)" }
+}                         
+
+
+#
+# test "set variable" for type "unsigned short *"
+#
+send "set v_unsigned_short_pointer=v_unsigned_short_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_unsigned_short_pointer)=123\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_unsigned_short_pointer+1)=-456\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_short_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*65080\}.*$prompt $" {
+               send "print *(v_unsigned_short_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 65080.*$prompt $"    { pass "set variable unsigned short pointer" }
+                   -re "$prompt $"                { fail "set variable unsigned short pointer (FIXME)" }
+                   timeout                              { fail "(timeout) set variable unsigned short pointer (FIXME)" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable unsigned short pointer (FIXME)" }
+           timeout                              { fail "(timeout) set variable unsigned short pointer (FIXME)" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable unsigned short pointer (FIXME)" }
+    timeout                                      { fail "(timeout) set variable unsigned short pointer (FIXME)" }
+}                         
+
+
+#
+# test "set variable" for type "int *"
+#
+send "set v_int_pointer=v_int_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_int_pointer)=123\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_int_pointer+1)=-456\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_int_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $" {
+               send "print *(v_int_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = -456.*$prompt $"    { pass "set variable int pointer" }
+                   -re "$prompt $"                { fail "set variable int pointer" }
+                   timeout                              { fail "(timeout) set variable int pointer" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable int pointer" }
+           timeout                              { fail "(timeout) set variable int pointer" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable int pointer" }
+     timeout                                      { fail "(timeout) set variable int pointer" }
+}                         
+
+
+#
+# test "set variable" for type "signed int *"
+#
+send "set v_signed_int_pointer=v_signed_int_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_signed_int_pointer)=123\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_signed_int_pointer+1)=-456\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_int_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $" {
+               send "print *(v_signed_int_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = -456.*$prompt $"    { pass "set variable signed int pointer" }
+                   -re "$prompt $"                { fail "set variable signed int pointer" }
+                   timeout                              { fail "(timeout) set variable signed int pointer" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable signed int pointer" }
+           timeout                              { fail "(timeout) set variable signed int pointer" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable signed int pointer" }
+       timeout                                      { fail "(timeout) set variable signed int pointer" }
+}                         
+
+
+#
+# test "set variable" for type "unsigned int *"
+#
+send "set v_unsigned_int_pointer=v_unsigned_int_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_unsigned_int_pointer)=123\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_unsigned_int_pointer+1)=-456\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_int_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*4294966840\}.*$prompt $" {
+               send "print *(v_unsigned_int_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = 4294966840.*$prompt $"    { pass "set variable unsigned int pointer" }
+                   -re "$prompt $"                { fail "set variable unsigned int pointer" }
+                   timeout                              { fail "(timeout) set variable unsigned int pointer" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable unsigned int pointer" }
+           timeout                              { fail "(timeout) set variable unsigned int pointer" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable unsigned int pointer" }
+    timeout                                      { fail "(timeout) set variable unsigned int pointer" }
+}                         
+
+
+#
+# test "set variable" for type "long *"
+#
+send "set v_long_pointer=v_long_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_long_pointer)=123\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_long_pointer+1)=-456\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_long_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $" {
+               send "print *(v_long_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = -456.*$prompt $"    { pass "set variable long pointer" }
+                   -re "$prompt $"                { fail "set variable long pointer" }
+                   timeout                              { fail "(timeout) set variable long pointer" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable long pointer" }
+           timeout                              { fail "(timeout) set variable long pointer" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable long pointer" }
+     timeout                                      { fail "(timeout) set variable long pointer" }
+}                         
+
+
+#
+# test "set variable" for type "signed long *"
+#
+send "set v_signed_long_pointer=v_signed_long_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_signed_long_pointer)=123\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_signed_long_pointer+1)=-456\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_signed_long_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $" {
+               send "print *(v_signed_long_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = -456.*$prompt $"    { pass "set variable signed long pointer" }
+                   -re "$prompt $"                { fail "set variable signed long pointer" }
+                   timeout                              { fail "(timeout) set variable signed long pointer" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable signed long pointer" }
+           timeout                              { fail "(timeout) set variable signed long pointer" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable signed long pointer" }
+       timeout                                      { fail "(timeout) set variable signed long pointer" }
+}                         
+
+
+#
+# test "set variable" for type "unsigned long *"
+#
+send "set v_unsigned_long_pointer=v_unsigned_long_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_unsigned_long_pointer)=123\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_unsigned_long_pointer+1)=-456\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_unsigned_long_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*$ulong_minus_456\}.*$prompt $" {
+               send "print *(v_unsigned_long_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = $ulong_minus_456.*$prompt $"    { pass "set variable unsigned long pointer" }
+                   -re "$prompt $"                { fail "set variable unsigned long pointer" }
+                   timeout                              { fail "(timeout) set variable unsigned long pointer" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable unsigned long pointer" }
+           timeout                              { fail "(timeout) set variable unsigned long pointer" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable unsigned long pointer" }
+    timeout                                      { fail "(timeout) set variable unsigned long pointer" }
+}                         
+
+
+#
+# test "set variable" for type "float *"
+#
+send "set v_float_pointer=v_float_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_float_pointer)=123.0\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_float_pointer+1)=-456.0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_float_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $" {
+               send "print *(v_float_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = -456.*$prompt $"    { pass "set variable float pointer" }
+                   -re "$prompt $"                { fail "set variable float pointer" }
+                   timeout                              { fail "(timeout) set variable float pointer" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable float pointer" }
+           timeout                              { fail "(timeout) set variable float pointer" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable float pointer" }
+     timeout                                      { fail "(timeout) set variable float pointer" }
+}                         
+
+
+#
+# test "set variable" for type "double *"
+#
+send "set v_double_pointer=v_double_array\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_double_pointer)=123.0\n"
+expect -re "set.*$prompt $"
+send "set variable *(v_double_pointer+1)=-456.0\n"
+expect {
+    -re "set.*$prompt $" {
+       send "print v_double_array\n"
+       expect {
+           -re "print.*.\[0-9\]* =.*\{123,.*-456\}.*$prompt $" {
+               send "print *(v_double_pointer+1)\n"
+               expect {
+                   -re "print.*.\[0-9\]* = -456.*$prompt $"    { pass "set variable double pointer" }
+                   -re "$prompt $"                { fail "set variable double pointer" }
+                   timeout                              { fail "(timeout) set variable double pointer" }
+
+               }
+           }
+           -re "$prompt $"                { fail "set variable double pointer" }
+           timeout                              { fail "(timeout) set variable double pointer" }
+       }
+    }
+    -re "$prompt $"                { fail "set variable double pointer" }
+     timeout                                      { fail "(timeout) set variable double pointer" }
+}                         
+
+
+#
+# test "set variable" for struct members
+#
+send "set variable v_struct1.v_char_member='h'\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_struct1.v_char_member\n"
+       expect {
+           -re "print.*.\[0-9\]* = 104 \'h\'.*$prompt $"       { pass "set variable structure char member" }
+           -re "$prompt $"                      { fail "set variable structure char member" }
+           timeout                              { fail "(timeout) set variable structure char member" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable structure char member" }
+    timeout                                      { fail "(timeout) set variable structure char member" }
+}                         
+
+
+send "set variable v_struct1.v_short_member=1\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_struct1.v_short_member\n"
+       expect {
+           -re "print.*.\[0-9\]* = 1.*$prompt $"       { pass "set variable structure short member" }
+           -re "$prompt $"                      { fail "set variable structure short member" }
+           timeout                              { fail "(timeout) set variable structure short member" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable structure short member" }
+    timeout                                      { fail "(timeout) set variable structure short member" }
+}                         
+
+
+send "set variable v_struct1.v_int_member=2\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_struct1.v_int_member\n"
+       expect {
+           -re "print.*.\[0-9\]* = 2.*$prompt $"       { pass "set variable structure int member" }
+           -re "$prompt $"                      { fail "set variable structure int member" }
+           timeout                              { fail "(timeout) set variable structure int member" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable structure int member" }
+    timeout                                      { fail "(timeout) set variable structure int member" }
+}                         
+
+
+send "set variable v_struct1.v_long_member=3\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_struct1.v_long_member\n"
+       expect {
+           -re "print.*.\[0-9\]* = 3.*$prompt $"       { pass "set variable structure long member" }
+           -re "$prompt $"                      { fail "set variable structure long member" }
+           timeout                              { fail "(timeout) set variable structure long member" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable structure long member" }
+    timeout                                      { fail "(timeout) set variable structure long member" }
+}                         
+
+
+send "set variable v_struct1.v_float_member=4.0\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_struct1.v_float_member\n"
+       expect {
+           -re "print.*.\[0-9\]* = 4.*$prompt $"       { pass "set variable structure float member" }
+           -re "$prompt $"                      { fail "set variable structure float member" }
+           timeout                              { fail "(timeout) set variable structure float member" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable structure float member" }
+    timeout                                      { fail "(timeout) set variable structure float member" }
+}                         
+
+
+send "set variable v_struct1.v_double_member=5.0\n"
+expect {
+    -re "set.*$prompt $"\
+       {
+       send "print v_struct1.v_double_member\n"
+       expect {
+           -re "print.*.\[0-9\]* = 5.*$prompt $"       { pass "set variable structure double member" }
+           -re "$prompt $"                      { fail "set variable structure double member" }
+           timeout                              { fail "(timeout) set variable structure double member" }
+       }
+    }
+    -re "$prompt $"                              { fail "set variable structure double member" }
+    timeout                                      { fail "(timeout) set variable structure double member" }
+}                         
+
+
+
+send "print v_struct1\n"
+expect {
+    -re "print.*.\[0-9\]* = \{.*v_char_member = 104 \'h\',.*v_short_member = 1,.*v_int_member = 2,.*\
+v_long_member = 3,.*v_float_member = 4,.*v_double_member = 5.*\}.*$prompt $"\
+                                        { pass "set print structure" }
+    -re "$prompt $"                      { fail "set print structure" }
+    timeout                              { fail "(timeout) set print structure" }
+}
+
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+}
diff --git a/gdb/testsuite/gdb.base/sparc-aout.u b/gdb/testsuite/gdb.base/sparc-aout.u
new file mode 100644 (file)
index 0000000..8b4eef9
--- /dev/null
@@ -0,0 +1,732 @@
+begin 777 sparc-aout
+M@0,!"P  (    "          #YP  " @          "\$"  T .@0)(#H$25
+M*B "E *@!)0"0 H7   0U"+@H ,   C" &((@)   0*   0!    0   "@$ 
+M  !   @$ 0   $   -6<(Z @0  ( P$   !   @$ 0   )WCOV@O   (KA7B
+M*!$   B0$B(,0   2Y(0( "L$  (D@.@7$   $N4$" @@*(@(!*  $\!    
+MPA.@7H"@80L2@ !+ 0   .@#H&#" Z!DX@.@:*0%  &2!( 1+P  "*X5XDB0
+M$"  E! @!1<@  "6$N "F!  %D   #2:$"  IA  ") " !32 Z!DE! @!Q<@
+M  "6$N 2F!  %D   "N:$  4+P  "*X5XG01   (D!(B&T   ".2$"  JA  
+M",(#H&B D  ! H  "R\   BN%>)(D 3 $I(0 !&4$" '%R   )82X!*8$  5
+M0   %YH0( #" Z!PH 3  >8CH'SJ(Z" [".@A ,   C" &((PB.@B ,  !#"
+M &"@PB.@C ,   B"$&!DPB.@D) 0( &?Q   DA @?(''X B!Z   $(  !H(0
+M( 40@  $@A @1Q"   *"$" #D= @  J   0!    @</@" $   "0$" "D@7@
+M!-0%P ""$" $D= @ ) 0('^"$" !D= @    0  O=7-R+VQI8B]L9"YS;P O
+M9&5V+WIE<F\         &6-R=# Z(&YO("]U<W(O;&EB+VQD+G-O"@      
+M   F8W)T,#H@+W5S<B]L:6(O;&0N<V\@;6%P<&EN9R!F86EL=7)E"@      
+M !1C<G0P.B!N;R O9&5V+WIE<F\*      "=X[^0L! @ #"   &!Q^ (@>@ 
+M )WCOY"P$"  ,(   8''X B!Z   G>._D+ 0(  P@  !@<?@"('H  "=X[^0
+ML! @ #"   &!Q^ (@>@  )WCOY"P$"  ,(   8''X B!Z   G>._D+ 0(  P
+M@  !@<?@"('H  "=X[^0L! @ #"   &!Q^ (@>@  )WCOY"P$"  ,(   8''
+MX B!Z   G>._D+ 0(  P@  !@<?@"('H  "=X[^0L! @ #"   &!Q^ (@>@ 
+M )WCOY"P$"  ,(   8''X B!Z   G>._D+ 0(  P@  !@<?@"('H        
+MG>._D!$   C! B. ,(   8''X B!Z   G>._D!$  !#!&B"H,(   8''X B!
+MZ   0L@  )WCOWA   #D 0   !$  !# *B,0$0  $)(0( '2*B)8$0  $)(0
+M( +2*B%X$0  $)(0( /2,B$P$0  $)(0( 32,B$($0  $)(0( 72,B'@$0  
+M$)(0( ;2(B'($0  $)(0( ?2(B&@$0  $)(0( C2(B$ $0  $)(0( G2(B,(
+M$0  $)(0( K2(B)($0  $)(0( O2(B%@$0  $!,   C4 F.TU"(A*!$  ! 3
+M   0U!I@L-0Z(8@1   0$P  $-0*8Q#4*B&P$0  $!,  !#4"F)8U"HAF!$ 
+M ! 3   0U IA>-0J(.@1   0$P  $-0283#4,B)H$0  $!,  !#4$F$(U#(B
+M,!$  ! 3   0U!)AX-0R(5@1   0$P  $-0"8<C4(B% $0  $!,  !#4 F&@
+MU"(A.!$  ! 3   0U )A -0B(B@1   0$P  $-0"8PC4(B&H$0  $!,  !#4
+M F)(U"(AD!$  ! 3   0U )A8-0B(. 1   0$P  $-0"82C4(B)@$0  $!, 
+M !#4&F&(U#HA$!$  ! 5   0DA*C$-(B(/@1   0%0  $)(2HEC2(B#8$0  
+M$!4  !"2$J%XTB(AP!$  ! 5   0DA*A,-(B(7 1   0%0  $)(2H0C2(B%0
+M$0  $!4  !"2$J'@TB(C !$  ! 5   0DA*AR-(B(E 1   0%0  $)(2H:#2
+M(B(@$0  $!4  !"2$J$ TB(A2!$  ! 5   0DA*C"-(B(/ 1   0%0  $)(2
+MHDC2(B#0$0  $!4  !"2$J%@TB(AN!$  ! 5   0DA*A*-(B(6@1   0%0  
+M$)(2H8C2(B'8$0  $)(0( +2(B#($0  $)(0( +2(B(X$0  $)(0( '2(B'0
+M$0  $)(0( '2(B'H$0  $!,  !#4 F) U"(B<!$  ! 3   0U!)A(-0R(8"!
+MQ^ (@>@  )WCOY 1   0U (C(("BO_\2@  -DA(C(- "8 2 HB   H  "900
+M( "6 F $DA @ )("8 30 D +@*(@ !*___V4 J !DI*   2   H1   0HA(C
+M(*$J8 +0!  1G\(  * $/_R I"  -+___= $ !&!Q^ (@>@  )WCOY 1   0
+MT@(C'("B8  "@  )H!(C'- $  "?P@  H 0@!- $  " HB  $K__^P$    1
+M   )D!(BB$  !E62$"  @<?@"('H  "=X[^0$P  $- "8+R HB  $H  !) 0
+M( %____GT")@O(''X B!Z           0&P   26____Q   0'@   F6____
+MM   0(0   66____K   0)   $V6____3     4    6    2@          
+M    &     H    7    !    !D    )    50    T    A    (@   "T 
+M   G    1_____\         -@    #_____         $$         !@  
+M #X    "    %0    P    R    *@         K    ,P   "0    U    
+M!P   "0    !    (     ,    :    "    #@    +    ,     X    <
+M    #P   !L    0    )0   !$    =    $@   !X    3    'P   !0 
+M   Y    %0   "(    6    *P   !<   !&    &    ",    9    ,0  
+M !H    G    &P   "8    <    *    !T    J    '@   "D    ?    
+M/P   "    !!    (0   "P    C    +P   "4    N    )@         H
+M         "D    [    +    #8    M    -P   "X    T    +P   #T 
+M   P    .@   #$   !/    ,@         S    0@   #0         -0  
+M $4    W    /    #@   !     .0         Z         #L   !4    
+M/    %(    ]    0P   #X   !$    /P   $D   !     2    $(     
+M    0P        !$    30   $4   !*    1@   $P   !'    2P   $@ 
+M  !0    20   $X   !+    40   $P   !3    30        !.        
+M $\         4         !1         %(         4P          !0 '
+MC   ,[@    '!P &X0  0,@    ."0 %S   0R@    3!0 %#@  ("     9
+M 0 #8@         E 0 &X@         L!0 #?@  ([@    R!P %<@  0*  
+M   [!P '.0  0     !% 0 #H         !+!0  \P  (QP   !>!0 'KP  
+M(P@   !J"0 'SP  0,@   !S!0 "@P  (O0   "*"0 &]   0-    "A"0 #
+M^@  0-@   "X"0 '3P  0.    #/"0 $:0  0.@   #F"0 "K@  0/    #V
+M"0 (4@  0/@   $&"0 &@   00    $6"0  3   00@   $F"0  N0  01  
+M  $V"0 'Q@  02    $_"0 &R   02@   %("0 'F@  03    %1!0 $DP  
+M(U@   %E!0 ';P  (J0   %Y"0 " P  03@   &-!0  SP  (T0   &:!0 #
+MJP  (I    &G"0 &W0  04    &T!0 $I@  )TP   &\"0 (A   04@   '4
+M"0 &%   05    'L"0 %(P  05@   ($"0 $V0  06    (5"0 "]@  06@ 
+M  (F"0 &)@  07    (W"0 $9@  07@   )("0 '(   08    )2"0 %:P  
+M08@   )<!0 $Q0  (S    )Q!0 $=P  (N    *&"0  I0  09    *;"0 &
+M70  09@   *P!0 %)P  (X0   *^!0 %C0  (LP   +,"0 (1   0:    +:
+M"0 !NP  0:@   +H"0 '<P  0;    +V"0 'P@  0;@   ,/"0 $R   0<  
+M  ,H"0 '\   0<@   ,O"0 "^   0=    ,Z"0 '1   0=@   -,"0 !V@  
+M0>    ->"0 $G@  0>@   -G"0 '*P  0?    -R"0 '+   0@@   -]!0 #
+MF0  (VP   .3!0 &=0  (K@   .I"0 #S@  0B    ._"0 !"0  0B@   /5
+M"0  ;0  0C    /K"0 "=P  0C@   /W"0 '10  0D    /_!0 $G0  (YP 
+M  0."0 (80  0D@   0="0 %^@  0E    0L"0 '[@  0E@   0["0 !S0  
+M0F    1*"0 "F0  0F@   19"0 'A0  0G    1A"0 'K   0P    1["0 '
+MN0  0P@   2#"0 '1@  0Q    2+ 0 &=         24!P "F   0,    2F
+M"0 '<0  0Q@   2U"0 "TP  0R    3$!0 &>0  )P    37!0 &B0  )H@ 
+M  3J!P %H   0+A?971E>'0 7V5D871A %]E;F0 <W1A<G0 <W1A<G1?9FQO
+M870 7U]E>&ET %]M86EN %]E;G9I<F]N %]?1%E.04U)0P!?97AI= !?=E]S
+M:6=N961?:6YT7V9U;F, 7W9?:6YT7V9U;F, 7W!R:6UA<GD 7W9?=6YS:6=N
+M961?<VAO<G1?9G5N8P!?=E]S:6=N961?;&]N9U]P;VEN=&5R %]V7W-I9VYE
+M9%]C:&%R7W!O:6YT97( 7W9?=6YS:6=N961?;&]N9U]A<G)A>0!?=E]U;G-I
+M9VYE9%]C:&%R7V%R<F%Y %]V7VQO;F=?<&]I;G1E<@!?=E]C:&%R7W!O:6YT
+M97( 7W9?=6YS:6=N961?:6YT %]V7W-I9VYE9%]S:&]R= !?=E]D;W5B;&5?
+M87)R87D 7W9?=6YI;VX 7W9?9FQO870 7W9?<VAO<G0 7W9?<VEG;F5D7VQO
+M;F=?9G5N8P!?=E]S:6=N961?8VAA<E]F=6YC %]V7W-I9VYE9%]I;G1?87)R
+M87D 7W9?;&]N9U]F=6YC %]V7V-H87)?9G5N8P!?=E]I;G1?87)R87D 7U]?
+M;6%I;@!?=E]U;G-I9VYE9%]I;G1?<&]I;G1E<@!?=E]S:6=N961?<VAO<G1?
+M<&]I;G1E<@!?=E]U;G-I9VYE9%]S:&]R=%]A<G)A>0!?=E]U;G-I9VYE9%]L
+M;VYG %]V7V9L;V%T7W!O:6YT97( 7W9?<VAO<G1?<&]I;G1E<@!?=E]U;G-I
+M9VYE9%]C:&%R %]V7W5N:6]N,@!?=E]D;W5B;&4 7W9?=6YS:6=N961?:6YT
+M7V9U;F, 7W9?<VEG;F5D7W-H;W)T7V9U;F, 7W9?<VEG;F5D7VQO;F=?87)R
+M87D 7W9?<VEG;F5D7V-H87)?87)R87D 7W9?9FQO871?9G5N8P!?=E]S:&]R
+M=%]F=6YC %]V7W-I9VYE9%]I;G0 7W9?;&]N9U]A<G)A>0!?=E]C:&%R7V%R
+M<F%Y %]V7W5N<VEG;F5D7VQO;F=?<&]I;G1E<@!?=E]U;G-I9VYE9%]C:&%R
+M7W!O:6YT97( 7W9?:6YT %]S<&]R='-C87( 7W9?9&]U8FQE7W!O:6YT97( 
+M7W9?=6YS:6=N961?<VAO<G0 7V-L=6YK97( 7W9?<W1R=6-T,0!?=E]S=')U
+M8W0R %]V7W5N<VEG;F5D7VQO;F=?9G5N8P!?=E]U;G-I9VYE9%]C:&%R7V9U
+M;F, 7W9?<VEG;F5D7VEN=%]P;VEN=&5R %]V7W5N<VEG;F5D7VEN=%]A<G)A
+M>0!?=E]S:6=N961?<VAO<G1?87)R87D 7VYO;G!R:6UA<GD 7W-?;&EN:P!?
+M=E]D;W5B;&5?9G5N8P!?=E]S:6=N961?;&]N9P!?=E]I;G1?<&]I;G1E<@!?
+M=E]S:6=N961?8VAA<@!?=E]F;&]A=%]A<G)A>0!?=E]S:&]R=%]A<G)A>0!?
+M=5]L:6YK %]V7W5N<VEG;F5D7W-H;W)T7W!O:6YT97( 7W9?;&]N9P!?=E]C
+M:&%R %]O;E]E>&ET %]?97AI=%]D=6UM>5]D96-L %]?7T-43U)?3$E35%]?
+M %]?7T143U)?3$E35%]? %]?7V1O7V=L;V)A;%]C=&]R<P!?7U]D;U]G;&]B
+M86Q?9'1O<G, 7U]E>&ET7V1U;6UY7W)E9@       "]U<W(O;&]C86PO;&EB
+M+V=C8RUL:6(O<W5N-"\R+C$O.B]U<W(O;&]C86PO;&EB+P             3
+MD(       0 &     &,                                         
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M       #  ! #   0"0                                        3
+M@   $T@  $!<  ! 8   !W@   >H   *6          5   .2   !0   "  
+M    /   0  #    @<!@  $   "=X[^@?____ $   "=X[^@?___^0$   &=
+MX[^@?___]@$   *=X[^@?___\P$   ,                          $!I
+M          ! P                                               
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M          0&      !       X$       @(    !4$       BD    !T$
+M       BD    "QD       BD    %5D       BD    %V             
+M '^              )&              +B              -&         
+M     .^              0V              2>              4F     
+M         6R              8F              :6              ;> 
+M             <J              >*              >Z             
+M HB               !$  !Y   BD     !$  !Y   BE     !$  !Y   B
+MG    QHD       BD     !$  !Z   BI     !$  !Z   BJ     !$  !Z
+M   BL    RDD       BI     !$  ![   BN     !$  ![   BO     !$
+M  ![   BQ    T D       BN     !$  !]   BS     !$  !]   BT   
+M  !$  !]   BV    UDD       BS     !$  !^   BX     !$  !^   B
+MY     !$  !^   B[    VDD       BX     !$  !_   B]     !$  !_
+M   B^     !$  !_   C     X D       B]     !$  "!   C"     !$
+M  "!   C#     !$  "!   C%    YDD       C"     !$  ""   C'   
+M  !$  ""   C(     !$  ""   C*    Z<D       C'     !$  "#   C
+M,     !$  "#   C-     !$  "#   C/    [PD       C,     !$  "%
+M   C1     !$  "%   C2     !$  "%   C4    ],D       C1     !$
+M  "&   C6     !$  "&   C7     !$  "&   C9    ^(D       C6   
+M  !$  "'   C;     !$  "'   C<     !$  "'   C>    _@D       C
+M;     !$  ")   CA     !$  ")   CB     !$  ")   CE   !! D    
+M   CA     !$  "*   CG     !$  "*   CH     !$  "*   CK   !"$D
+M       CG   !#.             !)^             !-^             
+M!0:             !2*             !4"             !5R         
+M    !6F               !$  "R   CN     !$  "U   CQ     !$  "V
+M   CS     !$  "W   CV     !$  "Y   CY     !$  "Z   C\     !$
+M  "[   C_     !$  "]   D"     !$  "^   D%     !$  "_   D(   
+M  !$  #!   D+     !$  #"   D.     !$  ##   D1     !$  #%   D
+M4     !$  #&   D8     !$  #)   D<     !$  #*   D@     !$  #+
+M   DD     !$  #-   DH     !$  #.   DL     !$  #/   DP     !$
+M  #1   DT     !$  #2   DX     !$  #3   D\     !$  #5   E    
+M  !$  #6   E$     !$  #7   E(     !$  #9   E,     !$  #:   E
+M0     !$  #<   E4     !$  #=   E8     !$  #>   E<     !$  #@
+M   E@     !$  #A   ED     !$  #B   EH     !$  #D   EL     !$
+M  #E   EP     !$  #F   ET     !$  #H   EX     !$  #I   E\   
+M  !$  #J   F      !$  #L   F$     !$  #M   F(     !$  #O   F
+M,     !$  #P   F/     !$  #Q   F2     !$  #R   F5     !$  #T
+M   F8     !$  #V   F<     !$  #W   F@     !$  #W   F@   !98D
+M       CN   !9X@            !:@@            !;H@            
+M!<X@            !=D@            !>L@            !?\@        
+M    !@@@            !A@@            !BH@            !C0@    
+M        !D4@            !E@@            !F0@            !G$@
+M            !HP@            !J\@            !M0@            
+M!O @            !PD@            !RX@            !T@@        
+M    !U\@            !X(@            !YT@            ![4@    
+M        !]D@            !_8@            "!0@            ""H@
+M            "$@@            "&@@            "'\@            
+M")H@            "+H@            ",\@            ".@@        
+M    "08@            "1P@            "38@            "54@    
+M        "6T@            "88@            "90@            "B\@
+M            "CL@            "LX@            "MD@            
+M"N0@            "P@@            "Q<@            "S4@        
+M    "T,$       FB   "TP$       FB   "UL&      ! O   "VID    
+M   FB   "WUD       FB   "XF             "ZN             "[V 
+M            "^2             "_V             #!N             
+M##F             #%.             #'6             #)B         
+M    #+6             #-&             #..             #/:     
+M        #0Z             #1J             #6N             #7B 
+M            #8*             #8V             #;:             
+M#=R             #?$D       FB   #@<@            #AXD       G
+M    #C0D       G3   #C\$       G>   #D<$       G>   #E9D    
+M   G>   #FED       G>   #G6             #I>             #JF 
+M            #M"             #NF             #P>             
+M#R6             #S^             #V&             #X2         
+M    #Z&             #[V             #\^             #^*     
+M        #_J             $ :             $%>             $&2 
+M            $&Z             $'F             $**             
+M$,B             $-T@            $/$@            $0X@        
+M    $2 $       G>   $21D       G>     !$ /__   G>   $2L%  >,
+M   SN   $3('  ;A  ! R   $3D)  7,  !#*   $3X%  4.   @(   $40%
+M  -^   CN   $4H'  5R  ! H   $5,%  #S   C'   $68%  >O   C"   
+M$7()  ?/  ! R   $7L%  *#   B]   $9()  ;T  ! T   $:D)  /Z  ! 
+MV   $< )  =/  ! X   $=<)  1I  ! Z   $>X)  *N  ! \   $?X)  A2
+M  ! ^   $@X)  :   !!    $AX)  !,  !!"   $BX)  "Y  !!$   $CX)
+M  ?&  !!(   $D<)  ;(  !!*   $E )  >:  !!,   $ED%  23   C6   
+M$FT%  =O   BI   $H$)  (#  !!.   $I4%  #/   C1   $J(%  .K   B
+MD   $J\)  ;=  !!0   $KP%  2F   G3   $L0)  B$  !!2   $MP)  84
+M  !!4   $O0)  4C  !!6   $PP)  39  !!8   $QT)  +V  !!:   $RX)
+M  8F  !!<   $S\)  1F  !!>   $U )  <@  !!@   $UH)  5K  !!B   
+M$V0%  3%   C,   $WD%  1W   BX   $XX)  "E  !!D   $Z,)  9=  !!
+MF   $[@%  4G   CA   $\8%  6-   BS   $]0)  A$  !!H   $^()  &[
+M  !!J   $_ )  =S  !!L   $_X)  ?"  !!N   %!<)  3(  !!P   %# )
+M  ?P  !!R   %#<)  +X  !!T   %$()  =$  !!V   %%0)  ':  !!X   
+M%&8)  2>  !!Z   %&\)  <K  !!\   %'H)  <L  !""   %(4%  .9   C
+M;   %)L%  9U   BN   %+$)  /.  !"(   %,<)  $)  !"*   %-T)  !M
+M  !",   %/,)  )W  !".   %/\)  =%  !"0   %0<%  2=   CG   %18)
+M  AA  !"2   %24)  7Z  !"4   %30)  ?N  !"6   %4,)  '-  !"8   
+M%5()  *9  !":   %6$)  >%  !"<   %6D)  >L  !#    %8,)  >Y  !#
+M"   %8L)  =&  !#$   %9,'  *8  ! P   %:4)  =Q  !#&   %;0)  +3
+M  !#(   %<,%  9Y   G    %=8%  :)   FB   %>D'  6@  ! N   %?I?
+M7T193D%-24, 8W)T,"YO &=D8FUE+F\ 9V-C,E]C;VUP:6QE9"X +VAO;64O
+M9VYU+V=D8B]W;W)K+VYE=R]D979O+V=D8G1E<W0O=#$P+P!G9&)M92YC &EN
+M=#IT,3UR,3LM,C$T-S0X,S8T.#LR,30W-#@S-C0W.P!C:&%R.G0R/7(R.S [
+M,3(W.P!L;VYG(&EN=#IT,SUR,3LM,C$T-S0X,S8T.#LR,30W-#@S-C0W.P!U
+M;G-I9VYE9"!I;G0Z=#0]<C$[,#LM,3L ;&]N9R!U;G-I9VYE9"!I;G0Z=#4]
+M<C$[,#LM,3L <VAO<G0@:6YT.G0V/7(Q.RTS,C<V.#LS,C<V-SL ;&]N9R!L
+M;VYG(&EN=#IT-SUR,3LP.RTQ.P!S:&]R="!U;G-I9VYE9"!I;G0Z=#@]<C$[
+M,#LV-34S-3L ;&]N9R!L;VYG('5N<VEG;F5D(&EN=#IT.3UR,3LP.RTQ.P!S
+M:6=N960@8VAA<CIT,3 ]<C$[+3$R.#LQ,C<[ '5N<VEG;F5D(&-H87(Z=#$Q
+M/7(Q.S [,C4U.P!F;&]A=#IT,3(]<C$[-#LP.P!D;W5B;&4Z=#$S/7(Q.S@[
+M,#L ;&]N9R!D;W5B;&4Z=#$T/7(Q.S@[,#L =F]I9#IT,34],34 =%]S=')U
+M8W0Z5#$V/7,R-'9?8VAA<E]M96UB97(Z,BPP+#@[=E]S:&]R=%]M96UB97(Z
+M-BPQ-BPQ-CMV7VEN=%]M96UB97(Z,2PS,BPS,CMV7VQO;F=?;65M8F5R.C,L
+M-C0L,S([=E]F;&]A=%]M96UB97(Z,3(L.38L,S([=E]D;W5B;&5?;65M8F5R
+M.C$S+#$R."PV-#L[ '1?=6YI;VXZ5#$W/74X=E]C:&%R7VUE;6)E<CHR+# L
+M.#MV7W-H;W)T7VUE;6)E<CHV+# L,38[=E]I;G1?;65M8F5R.C$L,"PS,CMV
+M7VQO;F=?;65M8F5R.C,L,"PS,CMV7V9L;V%T7VUE;6)E<CHQ,BPP+#,R.W9?
+M9&]U8FQE7VUE;6)E<CHQ,RPP+#8T.SL =E]C:&%R7V9U;F,Z1C( =E]S:6=N
+M961?8VAA<E]F=6YC.D8Q, !V7W5N<VEG;F5D7V-H87)?9G5N8SI&,3$ =E]S
+M:&]R=%]F=6YC.D8V '9?<VEG;F5D7W-H;W)T7V9U;F,Z1C8 =E]U;G-I9VYE
+M9%]S:&]R=%]F=6YC.D8X '9?:6YT7V9U;F,Z1C$ =E]S:6=N961?:6YT7V9U
+M;F,Z1C$ =E]U;G-I9VYE9%]I;G1?9G5N8SI&- !V7VQO;F=?9G5N8SI&,P!V
+M7W-I9VYE9%]L;VYG7V9U;F,Z1C, =E]U;G-I9VYE9%]L;VYG7V9U;F,Z1C4 
+M=E]F;&]A=%]F=6YC.D8Q,@!V7V1O=6)L95]F=6YC.D8Q,P!L:6YK.E0Q.#US
+M,34R;F5X=#HQ.3TJ,3@L,"PS,CML:6YK9G5N8SHR,#TJ,C$]9C$Y+#,R+#,R
+M.W-T=69F.C(R/6%R,3LP.S [,C,]87(Q.S [,3LR-#UA<C$[,#LR.S$V+#8T
+M+#$Q-3([.P!T=5]L:6YK.E0R-3UU,30T;F5X=#HQ.2PP+#,R.VQI;FMF=6YC
+M.C(P+# L,S([<W1U9F8Z,C(L,"PQ,34R.SL 8V]L;W)S.E0R-CUE>65L;&]W
+M.C L<'5R<&QE.C$L<&EN:SHR+#L 8V%R<SI4,C<]96)M=SHP+'!O<G-C:&4Z
+M,2P[ &)O;VQE86XZ=#(X/65&04Q313HP+%12544Z,2P[ &)V86QS.E0R.3UE
+M9F%L<V4Z,"QT<G5E.C$L.P!B;V]L96%N,CIT,CD ;6ES;W)D97)E9#I4,S ]
+M971W;SHR+&]N93HQ+'IE<F\Z,"QT:')E93HS+#L ;6%I;CI&,0!V7V-H87(Z
+M1S( =E]S:6=N961?8VAA<CI',3  =E]U;G-I9VYE9%]C:&%R.D<Q,0!V7W-H
+M;W)T.D<V '9?<VEG;F5D7W-H;W)T.D<V '9?=6YS:6=N961?<VAO<G0Z1S@ 
+M=E]I;G0Z1S$ =E]S:6=N961?:6YT.D<Q '9?=6YS:6=N961?:6YT.D<T '9?
+M;&]N9SI',P!V7W-I9VYE9%]L;VYG.D<S '9?=6YS:6=N961?;&]N9SI'-0!V
+M7V9L;V%T.D<Q,@!V7V1O=6)L93I',3, =E]C:&%R7V%R<F%Y.D<S,3UA<C$[
+M,#LQ.S( =E]S:6=N961?8VAA<E]A<G)A>3I',S(]87(Q.S [,3LQ, !V7W5N
+M<VEG;F5D7V-H87)?87)R87DZ1S,S/6%R,3LP.S$[,3$ =E]S:&]R=%]A<G)A
+M>3I',S0]87(Q.S [,3LV '9?<VEG;F5D7W-H;W)T7V%R<F%Y.D<S- !V7W5N
+M<VEG;F5D7W-H;W)T7V%R<F%Y.D<S-3UA<C$[,#LQ.S@ =E]I;G1?87)R87DZ
+M1S,V/6%R,3LP.S$[,0!V7W-I9VYE9%]I;G1?87)R87DZ1S,V '9?=6YS:6=N
+M961?:6YT7V%R<F%Y.D<S-SUA<C$[,#LQ.S0 =E]L;VYG7V%R<F%Y.D<S.#UA
+M<C$[,#LQ.S, =E]S:6=N961?;&]N9U]A<G)A>3I',S@ =E]U;G-I9VYE9%]L
+M;VYG7V%R<F%Y.D<S.3UA<C$[,#LQ.S4 =E]F;&]A=%]A<G)A>3I'-# ]87(Q
+M.S [,3LQ,@!V7V1O=6)L95]A<G)A>3I'-#$]87(Q.S [,3LQ,P!V7V-H87)?
+M<&]I;G1E<CI'-#(]*C( =E]S:6=N961?8VAA<E]P;VEN=&5R.D<T,STJ,3  
+M=E]U;G-I9VYE9%]C:&%R7W!O:6YT97(Z1S0T/2HQ,0!V7W-H;W)T7W!O:6YT
+M97(Z1S0U/2HV '9?<VEG;F5D7W-H;W)T7W!O:6YT97(Z1S0U '9?=6YS:6=N
+M961?<VAO<G1?<&]I;G1E<CI'-#8]*C@ =E]I;G1?<&]I;G1E<CI'-#<]*C$ 
+M=E]S:6=N961?:6YT7W!O:6YT97(Z1S0W '9?=6YS:6=N961?:6YT7W!O:6YT
+M97(Z1S0X/2HT '9?;&]N9U]P;VEN=&5R.D<T.3TJ,P!V7W-I9VYE9%]L;VYG
+M7W!O:6YT97(Z1S0Y '9?=6YS:6=N961?;&]N9U]P;VEN=&5R.D<U,#TJ-0!V
+M7V9L;V%T7W!O:6YT97(Z1S4Q/2HQ,@!V7V1O=6)L95]P;VEN=&5R.D<U,CTJ
+M,3, =E]S=')U8W0Q.D<Q-@!V7W-T<G5C=#(Z1S4S/7,R-'9?8VAA<E]M96UB
+M97(Z,BPP+#@[=E]S:&]R=%]M96UB97(Z-BPQ-BPQ-CMV7VEN=%]M96UB97(Z
+M,2PS,BPS,CMV7VQO;F=?;65M8F5R.C,L-C0L,S([=E]F;&]A=%]M96UB97(Z
+M,3(L.38L,S([=E]D;W5B;&5?;65M8F5R.C$S+#$R."PV-#L[ '9?=6YI;VXZ
+M1S$W '9?=6YI;VXR.D<U-#UU.'9?8VAA<E]M96UB97(Z,BPP+#@[=E]S:&]R
+M=%]M96UB97(Z-BPP+#$V.W9?:6YT7VUE;6)E<CHQ+# L,S([=E]L;VYG7VUE
+M;6)E<CHS+# L,S([=E]F;&]A=%]M96UB97(Z,3(L,"PS,CMV7V1O=6)L95]M
+M96UB97(Z,3,L,"PV-#L[ '-?;&EN:SI',3D =5]L:6YK.D<R-0!P<FEM87)Y
+M.D<U-3UE<F5D.C L9W)E96XZ,2QB;'5E.C(L.P!N;VYP<FEM87)Y.D<R-@!C
+M;'5N:V5R.D<U-CUE8VAE=GDZ,"QF;W)D.C$L.P!S<&]R='-C87(Z1S(W %]?
+M;6%I;BYO &=C8S)?8V]M<&EL960N %]I;FET:6%L:7IE9"XP "]G;G4O9V-C
+M+V=C8S(O<W)C+P N+VQI8F=C8S(N8P!I;G0Z=#$]<C$[+3(Q-#<T.#,V-#@[
+M,C$T-S0X,S8T-SL 8VAA<CIT,CUR,CLP.S$R-SL ;&]N9R!I;G0Z=#,]<C$[
+M+3(Q-#<T.#,V-#@[,C$T-S0X,S8T-SL =6YS:6=N960@:6YT.G0T/7(Q.S [
+M+3$[ &QO;F<@=6YS:6=N960@:6YT.G0U/7(Q.S [+3$[ '-H;W)T(&EN=#IT
+M-CUR,3LM,S(W-C@[,S(W-C<[ &QO;F<@;&]N9R!I;G0Z=#<]<C$[,#LM,3L 
+M<VAO<G0@=6YS:6=N960@:6YT.G0X/7(Q.S [-C4U,S4[ &QO;F<@;&]N9R!U
+M;G-I9VYE9"!I;G0Z=#D]<C$[,#LM,3L <VEG;F5D(&-H87(Z=#$P/7(Q.RTQ
+M,C@[,3(W.P!U;G-I9VYE9"!C:&%R.G0Q,3UR,3LP.S(U-3L 9FQO870Z=#$R
+M/7(Q.S0[,#L 9&]U8FQE.G0Q,SUR,3LX.S [ &QO;F<@9&]U8FQE.G0Q-#UR
+M,3LX.S [ '9O:60Z=#$U/3$U ')E9U]C;&%S<SI4,38]94Y/7U)%1U,Z,"Q'
+M14Y%4D%,7U)%1U,Z,2Q&4%]214=3.C(L04Q,7U)%1U,Z,RQ,24U?4D5'7T-,
+M05-315,Z-"P[ '!T<F1I9F9?=#IT,0!S:7IE7W0Z=#$ =V-H87)?=#IT. !L
+M;VYG;&]N9SI4,3<]<SAH:6=H.C,L,"PS,CML;W<Z,RPS,BPS,CL[ &QO;F=?
+M;&]N9SIT,3@]=3AS.C$W+# L-C0[;&PZ-RPP+#8T.SL 9G5N8U]P='(Z=#$Y
+M/2HR,#UF,34 7U]D;U]G;&]B86Q?9'1O<G,Z1C$U %]E>&ET7V1U;6UY7W)E
+M9CI',C$]*C$ 7U]D;U]G;&]B86Q?8W1O<G,Z1C$U %]?;6%I;CI&,34 7V5X
+M:70N;P!G8V,R7V-O;7!I;&5D+@ O9VYU+V=C8R]G8V,R+W-R8R\ +B]L:6)G
+M8V,R+F, :6YT.G0Q/7(Q.RTR,30W-#@S-C0X.S(Q-#<T.#,V-#<[ &-H87(Z
+M=#(]<C([,#LQ,C<[ &QO;F<@:6YT.G0S/7(Q.RTR,30W-#@S-C0X.S(Q-#<T
+M.#,V-#<[ '5N<VEG;F5D(&EN=#IT-#UR,3LP.RTQ.P!L;VYG('5N<VEG;F5D
+M(&EN=#IT-3UR,3LP.RTQ.P!S:&]R="!I;G0Z=#8]<C$[+3,R-S8X.S,R-S8W
+M.P!L;VYG(&QO;F<@:6YT.G0W/7(Q.S [+3$[ '-H;W)T('5N<VEG;F5D(&EN
+M=#IT.#UR,3LP.S8U-3,U.P!L;VYG(&QO;F<@=6YS:6=N960@:6YT.G0Y/7(Q
+M.S [+3$[ '-I9VYE9"!C:&%R.G0Q,#UR,3LM,3(X.S$R-SL =6YS:6=N960@
+M8VAA<CIT,3$]<C$[,#LR-34[ &9L;V%T.G0Q,CUR,3LT.S [ &1O=6)L93IT
+M,3,]<C$[.#LP.P!L;VYG(&1O=6)L93IT,30]<C$[.#LP.P!V;VED.G0Q-3TQ
+M-0!R96=?8VQA<W,Z5#$V/65.3U]214=3.C L1T5.15)!3%]214=3.C$L1E!?
+M4D5'4SHR+$%,3%]214=3.C,L3$E-7U)%1U]#3$%34T53.C0L.P!P=')D:69F
+M7W0Z=#$ <VEZ95]T.G0Q '=C:&%R7W0Z=#@ ;&]N9VQO;F<Z5#$W/7,X:&EG
+M:#HS+# L,S([;&]W.C,L,S(L,S([.P!L;VYG7VQO;F<Z=#$X/74X<SHQ-RPP
+M+#8T.VQL.C<L,"PV-#L[ &9U;F-?<'1R.G0Q.3TJ,C ]9C$U %]E>&ET7V1U
+M;6UY7V1E8VPZ1S$ 7U]#5$]27TQ)4U1?7SI',C$]87(Q.S [,3LQ.0!?7T14
+M3U)?3$E35%]?.D<R,0 M;&< ;&EB9RYS %]E=&5X= !?961A=&$ 7V5N9 !S
+M=&%R= !?;6%I;@!?96YV:7)O;@!?=E]S:6=N961?:6YT7V9U;F, 7W9?:6YT
+M7V9U;F, 7W!R:6UA<GD 7W9?=6YS:6=N961?<VAO<G1?9G5N8P!?=E]S:6=N
+M961?;&]N9U]P;VEN=&5R %]V7W-I9VYE9%]C:&%R7W!O:6YT97( 7W9?=6YS
+M:6=N961?;&]N9U]A<G)A>0!?=E]U;G-I9VYE9%]C:&%R7V%R<F%Y %]V7VQO
+M;F=?<&]I;G1E<@!?=E]C:&%R7W!O:6YT97( 7W9?=6YS:6=N961?:6YT %]V
+M7W-I9VYE9%]S:&]R= !?=E]D;W5B;&5?87)R87D 7W9?=6YI;VX 7W9?9FQO
+M870 7W9?<VAO<G0 7W9?<VEG;F5D7VQO;F=?9G5N8P!?=E]S:6=N961?8VAA
+M<E]F=6YC %]V7W-I9VYE9%]I;G1?87)R87D 7W9?;&]N9U]F=6YC %]V7V-H
+M87)?9G5N8P!?=E]I;G1?87)R87D 7U]?;6%I;@!?=E]U;G-I9VYE9%]I;G1?
+M<&]I;G1E<@!?=E]S:6=N961?<VAO<G1?<&]I;G1E<@!?=E]U;G-I9VYE9%]S
+M:&]R=%]A<G)A>0!?=E]U;G-I9VYE9%]L;VYG %]V7V9L;V%T7W!O:6YT97( 
+M7W9?<VAO<G1?<&]I;G1E<@!?=E]U;G-I9VYE9%]C:&%R %]V7W5N:6]N,@!?
+M=E]D;W5B;&4 7W9?=6YS:6=N961?:6YT7V9U;F, 7W9?<VEG;F5D7W-H;W)T
+M7V9U;F, 7W9?<VEG;F5D7VQO;F=?87)R87D 7W9?<VEG;F5D7V-H87)?87)R
+M87D 7W9?9FQO871?9G5N8P!?=E]S:&]R=%]F=6YC %]V7W-I9VYE9%]I;G0 
+M7W9?;&]N9U]A<G)A>0!?=E]C:&%R7V%R<F%Y %]V7W5N<VEG;F5D7VQO;F=?
+M<&]I;G1E<@!?=E]U;G-I9VYE9%]C:&%R7W!O:6YT97( 7W9?:6YT %]S<&]R
+M='-C87( 7W9?9&]U8FQE7W!O:6YT97( 7W9?=6YS:6=N961?<VAO<G0 7V-L
+M=6YK97( 7W9?<W1R=6-T,0!?=E]S=')U8W0R %]V7W5N<VEG;F5D7VQO;F=?
+M9G5N8P!?=E]U;G-I9VYE9%]C:&%R7V9U;F, 7W9?<VEG;F5D7VEN=%]P;VEN
+M=&5R %]V7W5N<VEG;F5D7VEN=%]A<G)A>0!?=E]S:6=N961?<VAO<G1?87)R
+M87D 7VYO;G!R:6UA<GD 7W-?;&EN:P!?=E]D;W5B;&5?9G5N8P!?=E]S:6=N
+M961?;&]N9P!?=E]I;G1?<&]I;G1E<@!?=E]S:6=N961?8VAA<@!?=E]F;&]A
+M=%]A<G)A>0!?=E]S:&]R=%]A<G)A>0!?=5]L:6YK %]V7W5N<VEG;F5D7W-H
+M;W)T7W!O:6YT97( 7W9?;&]N9P!?=E]C:&%R %]?97AI=%]D=6UM>5]D96-L
+M %]?7T-43U)?3$E35%]? %]?7T143U)?3$E35%]? %]?7V1O7V=L;V)A;%]C
+M=&]R<P!?7U]D;U]G;&]B86Q?9'1O<G, 7U]E>&ET7V1U;6UY7W)E9@      
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+M                                                            
+(            
+end
diff --git a/gdb/testsuite/gdb.base/sparc-elf.u b/gdb/testsuite/gdb.base/sparc-elf.u
new file mode 100644 (file)
index 0000000..9320c0f
--- /dev/null
@@ -0,0 +1,336 @@
+begin 777 sparc-elf
+M?T5,1@$" 0             "  (    !  $/%    #0  #;0       T "  
+M!0 H !< $P    8    T  $ -         "@    H     4          P  
+M -0              !$         !          !    -  ! #0        3
+M=   $W0    %  $       $  !.H  (3J         #L   "M     <  0  
+M     @  % P  A0,         (@         !P     O=7-R+VQI8B]L9"YS
+M;RXQ         %,   !H    2P              .@   &(    W    5   
+M            4P   %\   !D    4    $    !*    5P   #8         
+M20   #,    M    /P   %X              "4    <    0P        !1
+M    *         !"         "0   !;    ,    #$    R    1P   $4 
+M  !.    8          C    +@   %@         /0              (   
+M $0   !<    2               +         !/              !6    
+M     &<   !:    60   &8         .P                   %T     
+M    +P        !E              !A                            
+M                                                            
+M                                                            
+M                                                (0          
+M                                    *@   "D                 
+M   9                                    'P                  
+M "8    ;         !T              !H    ^    00   "L    U    
+M           7                         "(              $P     
+M         $8    X    4@   #0   !-         #P                 
+M   G         %4              !@    >               Y    8P  
+M                          $ U      #   !       ! .@      P  
+M @       0/<      ,   ,       $*7      #   $       !#M@     
+M P  !0       0[D      ,   8       $/"      #   '       !#Q0 
+M     P  "        1-P      ,   D       $3@      #   *       "
+M$Z@      P  "P       A0       ,   P       (4#      #   -    
+M   "%)@      P  #@                ,   \                #   0
+M                 P  $0                ,  !(                #
+M   3                 P  %                 ,  !4             
+M   #   6     0 "%)@    ($0  #@    D  1-P     !(   D    /  (4
+MH     01   .    %@ "%*@   "0$0  #@   !T  A4X    !!$   X    T
+M  (5/     01   .    .@ "%4     !$0  #@   $@  A5$    !!$   X 
+M  !6  (52     @1   .    7P "%5     ($0  #@   '4  A58    "!$ 
+M  X   "*  (58     01   .    GP "%60    $$0  #@   *<  A5H    
+M!!$   X   "T  $09    !02   (    R0 !#X@    4$@  "    -4  A5P
+M    "!$   X   #>  (5>     01   .    Z  "%7P    "$0  #@   /X 
+M A5^     A$   X   $/  (5@     @1   .   !(P !#P@     $@  !P  
+M 2D  A6(     A$   X   $X  $/Q    !02   (   !10 "%8P    $$0  
+M#@   4T  A60     A$   X   %:  (5F    !@1   .   !9  "%;     8
+M$0  #@   6X  A7(    !!$   X   %U  (5S     01   .   !A  "%=  
+M   $$0  #@   9P  1!0    %!(   @   &O  (5U     01   .   !Q@ "
+M%=@    "$0  #@   <X  0_L    %!(   @   'D  (4#      1 /_Q   !
+M[0 !$*@   +($@  "    ?(  1.     !!$   H   '_  $0D    !@2   (
+M   "#0 "%=H    "$0  #@   B$  1 4    %!(   @   (S  (5W     01
+M   .   "0P "%>     $$0  #@   E(  A7H    $!$   X   )A  $/%   
+M '02   (   ":  "%)0     $0#_\0   F\  1 H    %!(   @   *#  (5
+M^     @1   .   "CP "%@     $$0  #@   I<  1!X    &!(   @   *D
+M  $0/    !02   (   "L  "%@0    ($0  #@   L,  A90    !"$   X 
+M  ++  (6#     01   .   "W  "%A     $$0  #@   O(  0_8    %!( 
+M  @   ,&  (6%     01   .   #%0 "%A@    $$0  #@   RT  0^P    
+M%!(   @   -"  (67      1 /_Q   #1P "%AP    $$0  #@   UX  A8@
+M    !!$   X   -L  (6)     $1   .   #?  "%B@    $$0  #@   XP 
+M A8L    !!$   X   .<  $3J      1 /_Q   #HP "%C     ($0  #@  
+M [$  A8X    !!$   X   /&  (4       1 /_Q   #W  !$      4$@  
+M"    ^<  0^<    %!(   @   /Z  (6/     01   .   $"  "%D     !
+M$0  #@  ! \  A9$    !!$   X   0:  (62     @1   .   $)P "$^0 
+M   0$@      !"P  A/8    6!(       0S  (3\     @2       $.0 "
+M%E     $$0  #@  !$(  A94    !!$   X   1;  (66     01   . '9?
+M=6YI;VX 7V9I;FD <U]L:6YK '5?;&EN:P!V7W-I9VYE9%]S:&]R=%]P;VEN
+M=&5R '9?:6YT '9?<VEG;F5D7V-H87( =E]I;G1?<&]I;G1E<@!V7V1O=6)L
+M90!V7W5N<VEG;F5D7VQO;F=?87)R87D =E]U;G-I9VYE9%]I;G1?87)R87D 
+M=E]S:6=N961?:6YT7W!O:6YT97( 8VQU;FME<@!V7W-I9VYE9%]I;G0 =E]U
+M;G-I9VYE9%]L;VYG7V9U;F, =E]C:&%R7V9U;F, =E]U;FEO;C( <W!O<G1S
+M8V%R '9?=6YS:6=N961?8VAA<E]A<G)A>0!V7W5N<VEG;F5D7W-H;W)T '9?
+M<VEG;F5D7VQO;F=?87)R87D 7VEN:70 =E]S:6=N961?<VAO<G0 =E]S:&]R
+M=%]F=6YC '9?9FQO870 =E]C:&%R7V%R<F%Y '9?<W1R=6-T,0!V7W-T<G5C
+M=#( =E]L;VYG '9?;&]N9U]P;VEN=&5R '9?=6YS:6=N961?;&]N9U]P;VEN
+M=&5R '9?<VEG;F5D7VQO;F=?9G5N8P!V7W5N<VEG;F5D7VEN=%]P;VEN=&5R
+M '9?<VAO<G0 =E]U;G-I9VYE9%]S:&]R=%]F=6YC %]$64Y!34E# &UA:6X 
+M7VQI8E]V97)S:6]N '9?9&]U8FQE7V9U;F, =E]S:6=N961?8VAA<E]A<G)A
+M>0!V7W-I9VYE9%]I;G1?9G5N8P!V7W5N<VEG;F5D7VQO;F< =E]U;G-I9VYE
+M9%]I;G0 =E]D;W5B;&5?87)R87D 7W-T87)T %]E9&%T80!V7W5N<VEG;F5D
+M7VEN=%]F=6YC '9?:6YT7V%R<F%Y '!R:6UA<GD =E]F;&]A=%]F=6YC '9?
+M;&]N9U]F=6YC '9?<VEG;F5D7VEN=%]A<G)A>0!E;G9I<F]N '9?9&]U8FQE
+M7W!O:6YT97( =E]S:6=N961?8VAA<E]P;VEN=&5R '9?<VEG;F5D7W-H;W)T
+M7V9U;F, =E]C:&%R7W!O:6YT97( =E]U;G-I9VYE9%]C:&%R7W!O:6YT97( 
+M=E]U;G-I9VYE9%]C:&%R7V9U;F, 7V5N9 !V7W5N<VEG;F5D7W-H;W)T7V%R
+M<F%Y '9?<VEG;F5D7VQO;F< =E]U;G-I9VYE9%]C:&%R '9?<VAO<G1?<&]I
+M;G1E<@!V7V9L;V%T7W!O:6YT97( 7V5T97AT '9?9FQO871?87)R87D =E]S
+M:6=N961?<VAO<G1?87)R87D 7T=,3T)!3%]/1D93151?5$%"3$5? '9?:6YT
+M7V9U;F, =E]S:6=N961?8VAA<E]F=6YC '9?<VAO<G1?87)R87D =E]C:&%R
+M &YO;G!R:6UA<GD =E]L;VYG7V%R<F%Y &5X:70 871E>&ET %]E>&ET %]E
+M;G9I<F]N '9?=6YS:6=N961?<VAO<G1?<&]I;G1E<@!V7W-I9VYE9%]L;VYG
+M7W!O:6YT97( ;&EB8RYS;RXQ     A90  !E$P       A/8  !C%0      
+M A/D  !B%0       A/P  !D%0    "=X[^@@<?@"('H  "\$"  X .@0*(#
+MH$2<(Z @@)   0*   20$  !0 !!*@$    1  !$D!(C<$  028!    ?___
+M\ $   "0$  0DA  $94L( *4 J $E 1 "A<  (66$N)0U"+  $   $X!    
+M0 !!&P$   !  $$< 0   )WCOY"P$"  ,(   8''X B!Z   G>._D+ 0(  P
+M@  !@<?@"('H  "=X[^0L! @ #"   &!Q^ (@>@  )WCOY"P$"  ,(   8''
+MX B!Z   G>._D+ 0(  P@  !@<?@"('H  "=X[^0L! @ #"   &!Q^ (@>@ 
+M )WCOY"P$"  ,(   8''X B!Z   G>._D+ 0(  P@  !@<?@"('H  "=X[^0
+ML! @ #"   &!Q^ (@>@  )WCOY"P$"  ,(   8''X B!Z   G>._D+ 0(  P
+M@  !@<?@"('H  "=X[^0L! @ #"   &!Q^ (@>@  )WCOY 1  !$P0(CB#" 
+M  &!Q^ (@>@  )WCOY 1  !$P1HCD#"   &!Q^ (@>@  )WCOY 1  "%P"HB
+M0!$  (62$" !TBHA0!$  (62$" "TBHB)!$  (62$" #TC(AV!$  (62$" $
+MTC(AB!$  (62$" %TC(A?A$  (62$" &TB(A/!$  (62$" 'TB(A:!$  (62
+M$" (TB(AX!$  (62$" )TB(AR!$  (62$" *TB(B(!$  (62$" +TB(AW!$ 
+M (43  !$U )CF-0B(8P1  "%$P  1-0:8Z#4.B%($0  A1,  (74"F) U"HA
+MD!$  (43  "%U IA0-0J(=H1  "%$P  A=0*8B34*B%\$0  A1,  (74$F'8
+MU#(B/!$  (43  "%U!)AB-0R(C@1  "%$P  A=0287[4,B(<$0  A1,  (74
+M F$\U"(A^!$  (43  "%U )A:-0B(@01  "%$P  A=0"8>#4(B%8$0  A1, 
+M (74 F'(U"(B2!$  (43  "%U )B(-0B(8 1  "%$P  A=0"8=S4(B%0$0  
+MA1,  (74 F&,U"(B,!$  (43  "%U!IA2-0Z(>@1  "%%0  A9(2HD#2(B(4
+M$0  A14  (62$J% TB(B$!$  (45  "%DA*B)-(B(A@1  "%%0  A9(2H=C2
+M(B(H$0  A14  (62$J&(TB(A.!$  (45  "%DA*A?M(B(E01  "%%0  A9(2
+MH3S2(B%$$0  A14  (62$J%HTB(A8!$  (45  "%DA*AX-(B(=01  "%%0  
+MA9(2H<C2(B',$0  A14  (62$J(@TB(B6!$  (45  "%DA*AW-(B(= 1  "%
+M%0  A9(2H8S2(B(L$0  A14  (62$J%(TB(B#!$  (62$" "TB(B !$  (62
+M$" "TB(B1!$  (62$" !TB(A>!$  (62$" !TB(A9!$  (43  "%U )@H-0B
+M(*@1  "%$P  A=028)C4,B%P@<?@"('H  "=X[^@@<?@"('H            
+M 0                          0L@       ! :0                  
+M                                                      ,  # P
+MO__S 0    ,  #PPO__P 0    ,  $@PO__M 0    $      A0,        
+M       !   $<0    P  0\(    #0 !$W     $  $ Z     4  0I<    
+M!@ ! ]P    *   $>P    L    0    %0         #  (3J     (    D
+M    %     <    7  $.Y     <  0[8    "    #     )    #       
+M                                   !           $ /_Q       !
+M -0      P   0       0#H      ,   (       $#W      #   #    
+M   !"EP      P  !        0[8      ,   4       $.Y      #   &
+M       !#P@      P  !P       0\4      ,   @       $3<      #
+M   )       !$X       P  "@       A.H      ,   L       (4    
+M   #   ,       "% P      P  #0       A28      ,   X         
+M       #   /                 P  $                 ,  !$     
+M           #   2                 P  $P                ,  !0 
+M               #   5                 P  %@    <           0 
+M__$    .           $ /_Q    &@          ! #_\0   "(         
+M  0 __$    I  (4F     @1   .    ,0 !$W      $@  "0   #<  A2@
+M    !!$   X    ^  (4J    ) 1   .    10 "%3@    $$0  #@   %P 
+M A4\    !!$   X   !B  (50     $1   .    <  "%40    $$0  #@  
+M 'X  A5(    "!$   X   "'  (54     @1   .    G0 "%5@    ($0  
+M#@   +(  A5@    !!$   X   #'  (59     01   .    SP "%6@    $
+M$0  #@   -P  1!D    %!(   @   #Q  $/B    !02   (    _0 "%7  
+M   ($0  #@   08  A5X    !!$   X   $0  (5?     (1   .   !)@ "
+M%7X    "$0  #@   3<  A6     "!$   X   %+  $/"      2   '   !
+M40 "%8@    "$0  #@   6   0_$    %!(   @   %M  (5C     01   .
+M   !=0 "%9     "$0  #@   8(  A68    &!$   X   &,  (5L    !@1
+M   .   !E@ "%<@    $$0  #@   9T  A7,    !!$   X   &L  (5T   
+M  01   .   !Q  !$%     4$@  "    =<  A74    !!$   X   'N  (5
+MV     (1   .   !]@ !#^P    4$@  "    @P  A0,     !$ __$   (5
+M  $0J    L@2   (   "&@ !$X     $$0  "@   B<  1"0    &!(   @ 
+M  (U  (5V@    (1   .   "20 !$!0    4$@  "    EL  A7<    !!$ 
+M  X   )K  (5X     01   .   ">@ "%>@    0$0  #@   HD  0\4    
+M=!(   @   *0  (4E      1 /_Q   "EP !$"@    4$@  "    JL  A7X
+M    "!$   X   *W  (6      01   .   "OP !$'@    8$@  "    LP 
+M 1 \    %!(   @   +8  (6!     @1   .   "ZP "%E     $(0  #@  
+M O,  A8,    !!$   X   ,$  (6$     01   .   #&@ !#]@    4$@  
+M"    RX  A84    !!$   X   ,]  (6&     01   .   #50 !#[     4
+M$@  "    VH  A9<     !$ __$   -O  (6'     01   .   #A@ "%B  
+M   $$0  #@   Y0  A8D     1$   X   .D  (6*     01   .   #M  "
+M%BP    $$0  #@   \0  1.H     !$ __$   /+  (6,     @1   .   #
+MV0 "%C@    $$0  #@   ^X  A0      !$ __$   0$  $0     !02   (
+M   $#P !#YP    4$@  "   !"(  A8\    !!$   X   0P  (60     $1
+M   .   $-P "%D0    $$0  #@  !$(  A9(    "!$   X   1/  (3Y   
+M ! 2       $5  "$]@   !8$@      !%L  A/P    "!(       1A  (6
+M4     01   .   $:@ "%E0    $$0  #@  !(,  A98    !!$   X 9V1B
+M;64 8W)T:2YS '9A;'5E<RU882YC &=D8FUE+F, 8W)T;BYS '9?=6YI;VX 
+M7V9I;FD <U]L:6YK '5?;&EN:P!V7W-I9VYE9%]S:&]R=%]P;VEN=&5R '9?
+M:6YT '9?<VEG;F5D7V-H87( =E]I;G1?<&]I;G1E<@!V7V1O=6)L90!V7W5N
+M<VEG;F5D7VQO;F=?87)R87D =E]U;G-I9VYE9%]I;G1?87)R87D =E]S:6=N
+M961?:6YT7W!O:6YT97( 8VQU;FME<@!V7W-I9VYE9%]I;G0 =E]U;G-I9VYE
+M9%]L;VYG7V9U;F, =E]C:&%R7V9U;F, =E]U;FEO;C( <W!O<G1S8V%R '9?
+M=6YS:6=N961?8VAA<E]A<G)A>0!V7W5N<VEG;F5D7W-H;W)T '9?<VEG;F5D
+M7VQO;F=?87)R87D 7VEN:70 =E]S:6=N961?<VAO<G0 =E]S:&]R=%]F=6YC
+M '9?9FQO870 =E]C:&%R7V%R<F%Y '9?<W1R=6-T,0!V7W-T<G5C=#( =E]L
+M;VYG '9?;&]N9U]P;VEN=&5R '9?=6YS:6=N961?;&]N9U]P;VEN=&5R '9?
+M<VEG;F5D7VQO;F=?9G5N8P!V7W5N<VEG;F5D7VEN=%]P;VEN=&5R '9?<VAO
+M<G0 =E]U;G-I9VYE9%]S:&]R=%]F=6YC %]$64Y!34E# &UA:6X 7VQI8E]V
+M97)S:6]N '9?9&]U8FQE7V9U;F, =E]S:6=N961?8VAA<E]A<G)A>0!V7W-I
+M9VYE9%]I;G1?9G5N8P!V7W5N<VEG;F5D7VQO;F< =E]U;G-I9VYE9%]I;G0 
+M=E]D;W5B;&5?87)R87D 7W-T87)T %]E9&%T80!V7W5N<VEG;F5D7VEN=%]F
+M=6YC '9?:6YT7V%R<F%Y '!R:6UA<GD =E]F;&]A=%]F=6YC '9?;&]N9U]F
+M=6YC '9?<VEG;F5D7VEN=%]A<G)A>0!E;G9I<F]N '9?9&]U8FQE7W!O:6YT
+M97( =E]S:6=N961?8VAA<E]P;VEN=&5R '9?<VEG;F5D7W-H;W)T7V9U;F, 
+M=E]C:&%R7W!O:6YT97( =E]U;G-I9VYE9%]C:&%R7W!O:6YT97( =E]U;G-I
+M9VYE9%]C:&%R7V9U;F, 7V5N9 !V7W5N<VEG;F5D7W-H;W)T7V%R<F%Y '9?
+M<VEG;F5D7VQO;F< =E]U;G-I9VYE9%]C:&%R '9?<VAO<G1?<&]I;G1E<@!V
+M7V9L;V%T7W!O:6YT97( 7V5T97AT '9?9FQO871?87)R87D =E]S:6=N961?
+M<VAO<G1?87)R87D 7T=,3T)!3%]/1D93151?5$%"3$5? '9?:6YT7V9U;F, 
+M=E]S:6=N961?8VAA<E]F=6YC '9?<VAO<G1?87)R87D =E]C:&%R &YO;G!R
+M:6UA<GD =E]L;VYG7V%R<F%Y &5X:70 871E>&ET %]E>&ET %]E;G9I<F]N
+M '9?=6YS:6=N961?<VAO<G1?<&]I;G1E<@!V7W-I9VYE9%]L;VYG7W!O:6YT
+M97(  '9A;'5E<RU882YC "]D:79E+W)E;&5A<V4O8BUS>7-I9FEX+W5S<B]S
+M<F,O;&EB+VQI8F,O '!O<G0O9V5N+W9A;'5E<RU882YC    6'0@.R!6/3(N
+M, !M86EN %]L:6)?=F5R<VEO;@ O=&UP "]U<W(O8V-S+VQI8B]V86QU97,M
+M6&$N;P  9V1B;64N8P O=&UP+P!G9&)M92YC &=C8S)?8V]M<&EL960N &EN
+M=#IT,3UR,3LM,C$T-S0X,S8T.#LR,30W-#@S-C0W.P!C:&%R.G0R/7(R.S [
+M,3(W.P!L;VYG(&EN=#IT,SUR,3LM,C$T-S0X,S8T.#LR,30W-#@S-C0W.P!U
+M;G-I9VYE9"!I;G0Z=#0]<C$[,#LM,3L ;&]N9R!U;G-I9VYE9"!I;G0Z=#4]
+M<C$[,#LM,3L <VAO<G0@:6YT.G0V/7(Q.RTS,C<V.#LS,C<V-SL ;&]N9R!L
+M;VYG(&EN=#IT-SUR,3LP.RTQ.P!S:&]R="!U;G-I9VYE9"!I;G0Z=#@]<C$[
+M,#LV-34S-3L ;&]N9R!L;VYG('5N<VEG;F5D(&EN=#IT.3UR,3LP.RTQ.P!S
+M:6=N960@8VAA<CIT,3 ]<C$[+3$R.#LQ,C<[ '5N<VEG;F5D(&-H87(Z=#$Q
+M/7(Q.S [,C4U.P!F;&]A=#IT,3(]<C$[-#LP.P!D;W5B;&4Z=#$S/7(Q.S@[
+M,#L ;&]N9R!D;W5B;&4Z=#$T/7(Q.S@[,#L =F]I9#IT,34],34 =%]S=')U
+M8W0Z5#$V/7,R-'9?8VAA<E]M96UB97(Z,BPP+#@[=E]S:&]R=%]M96UB97(Z
+M-BPQ-BPQ-CMV7VEN=%]M96UB97(Z,2PS,BPS,CMV7VQO;F=?;65M8F5R.C,L
+M-C0L,S([=E]F;&]A=%]M96UB97(Z,3(L.38L,S([=E]D;W5B;&5?;65M8F5R
+M.C$S+#$R."PV-#L[ '1?=6YI;VXZ5#$W/74X=E]C:&%R7VUE;6)E<CHR+# L
+M.#MV7W-H;W)T7VUE;6)E<CHV+# L,38[=E]I;G1?;65M8F5R.C$L,"PS,CMV
+M7VQO;F=?;65M8F5R.C,L,"PS,CMV7V9L;V%T7VUE;6)E<CHQ,BPP+#,R.W9?
+M9&]U8FQE7VUE;6)E<CHQ,RPP+#8T.SL =E]C:&%R7V9U;F,Z1C( =E]S:6=N
+M961?8VAA<E]F=6YC.D8Q, !V7W5N<VEG;F5D7V-H87)?9G5N8SI&,3$ =E]S
+M:&]R=%]F=6YC.D8V '9?<VEG;F5D7W-H;W)T7V9U;F,Z1C8 =E]U;G-I9VYE
+M9%]S:&]R=%]F=6YC.D8X '9?:6YT7V9U;F,Z1C$ =E]S:6=N961?:6YT7V9U
+M;F,Z1C$ =E]U;G-I9VYE9%]I;G1?9G5N8SI&- !V7VQO;F=?9G5N8SI&,P!V
+M7W-I9VYE9%]L;VYG7V9U;F,Z1C, =E]U;G-I9VYE9%]L;VYG7V9U;F,Z1C4 
+M=E]F;&]A=%]F=6YC.D8Q,@!V7V1O=6)L95]F=6YC.D8Q,P!L:6YK.E0Q.#US
+M,34R;F5X=#HQ.3TJ,3@L,"PS,CML:6YK9G5N8SHR,#TJ,C$]9C$Y+#,R+#,R
+M.W-T=69F.C(R/6%R,3LP.S [,C,]87(Q.S [,3LR-#UA<C$[,#LR.S$V+#8T
+M+#$Q-3([.P!T=5]L:6YK.E0R-3UU,30T;F5X=#HQ.2PP+#,R.VQI;FMF=6YC
+M.C(P+# L,S([<W1U9F8Z,C(L,"PQ,34R.SL 8V]L;W)S.E0R-CUE>65L;&]W
+M.C L<'5R<&QE.C$L<&EN:SHR+#L 8V%R<SI4,C<]96)M=SHP+'!O<G-C:&4Z
+M,2P[ &)O;VQE86XZ=#(X/65&04Q313HP+%12544Z,2P[ &)V86QS.E0R.3UE
+M9F%L<V4Z,"QT<G5E.C$L.P!B;V]L96%N,CIT,CD ;6ES;W)D97)E9#I4,S ]
+M971W;SHR+&]N93HQ+'IE<F\Z,"QT:')E93HS+#L ;6%I;CI&,0!V7V-H87(Z
+M1S( =E]S:6=N961?8VAA<CI',3  =E]U;G-I9VYE9%]C:&%R.D<Q,0!V7W-H
+M;W)T.D<V '9?<VEG;F5D7W-H;W)T.D<V '9?=6YS:6=N961?<VAO<G0Z1S@ 
+M=E]I;G0Z1S$ =E]S:6=N961?:6YT.D<Q '9?=6YS:6=N961?:6YT.D<T '9?
+M;&]N9SI',P!V7W-I9VYE9%]L;VYG.D<S '9?=6YS:6=N961?;&]N9SI'-0!V
+M7V9L;V%T.D<Q,@!V7V1O=6)L93I',3, =E]C:&%R7V%R<F%Y.D<S,3UA<C$[
+M,#LQ.S( =E]S:6=N961?8VAA<E]A<G)A>3I',S(]87(Q.S [,3LQ, !V7W5N
+M<VEG;F5D7V-H87)?87)R87DZ1S,S/6%R,3LP.S$[,3$ =E]S:&]R=%]A<G)A
+M>3I',S0]87(Q.S [,3LV '9?<VEG;F5D7W-H;W)T7V%R<F%Y.D<S- !V7W5N
+M<VEG;F5D7W-H;W)T7V%R<F%Y.D<S-3UA<C$[,#LQ.S@ =E]I;G1?87)R87DZ
+M1S,V/6%R,3LP.S$[,0!V7W-I9VYE9%]I;G1?87)R87DZ1S,V '9?=6YS:6=N
+M961?:6YT7V%R<F%Y.D<S-SUA<C$[,#LQ.S0 =E]L;VYG7V%R<F%Y.D<S.#UA
+M<C$[,#LQ.S, =E]S:6=N961?;&]N9U]A<G)A>3I',S@ =E]U;G-I9VYE9%]L
+M;VYG7V%R<F%Y.D<S.3UA<C$[,#LQ.S4 =E]F;&]A=%]A<G)A>3I'-# ]87(Q
+M.S [,3LQ,@!V7V1O=6)L95]A<G)A>3I'-#$]87(Q.S [,3LQ,P!V7V-H87)?
+M<&]I;G1E<CI'-#(]*C( =E]S:6=N961?8VAA<E]P;VEN=&5R.D<T,STJ,3  
+M=E]U;G-I9VYE9%]C:&%R7W!O:6YT97(Z1S0T/2HQ,0!V7W-H;W)T7W!O:6YT
+M97(Z1S0U/2HV '9?<VEG;F5D7W-H;W)T7W!O:6YT97(Z1S0U '9?=6YS:6=N
+M961?<VAO<G1?<&]I;G1E<CI'-#8]*C@ =E]I;G1?<&]I;G1E<CI'-#<]*C$ 
+M=E]S:6=N961?:6YT7W!O:6YT97(Z1S0W '9?=6YS:6=N961?:6YT7W!O:6YT
+M97(Z1S0X/2HT '9?;&]N9U]P;VEN=&5R.D<T.3TJ,P!V7W-I9VYE9%]L;VYG
+M7W!O:6YT97(Z1S0Y '9?=6YS:6=N961?;&]N9U]P;VEN=&5R.D<U,#TJ-0!V
+M7V9L;V%T7W!O:6YT97(Z1S4Q/2HQ,@!V7V1O=6)L95]P;VEN=&5R.D<U,CTJ
+M,3, =E]S=')U8W0Q.D<Q-@!V7W-T<G5C=#(Z1S4S/7,R-'9?8VAA<E]M96UB
+M97(Z,BPP+#@[=E]S:&]R=%]M96UB97(Z-BPQ-BPQ-CMV7VEN=%]M96UB97(Z
+M,2PS,BPS,CMV7VQO;F=?;65M8F5R.C,L-C0L,S([=E]F;&]A=%]M96UB97(Z
+M,3(L.38L,S([=E]D;W5B;&5?;65M8F5R.C$S+#$R."PV-#L[ '9?=6YI;VXZ
+M1S$W '9?=6YI;VXR.D<U-#UU.'9?8VAA<E]M96UB97(Z,BPP+#@[=E]S:&]R
+M=%]M96UB97(Z-BPP+#$V.W9?:6YT7VUE;6)E<CHQ+# L,S([=E]L;VYG7VUE
+M;6)E<CHS+# L,S([=E]F;&]A=%]M96UB97(Z,3(L,"PS,CMV7V1O=6)L95]M
+M96UB97(Z,3,L,"PV-#L[ '-?;&EN:SI',3D =5]L:6YK.D<R-0!P<FEM87)Y
+M.D<U-3UE<F5D.C L9W)E96XZ,2QB;'5E.C(L.P!N;VYP<FEM87)Y.D<R-@!C
+M;'5N:V5R.D<U-CUE8VAE=GDZ,"QF;W)D.C$L.P!S<&]R='-C87(Z1S(W   N
+M:6YT97)P "YH87-H "YD>6YS>6T +F1Y;G-T<@ N<F5L82YB<W, +G)E;&$N
+M<&QT "YI;FET "YT97AT "YF:6YI "YR;V1A=&$ +G!L=  N9V]T "YD>6YA
+M;6EC "YB<W, +G-Y;71A8@ N<W1R=&%B "YS=&%B+FEN9&5X<W1R "YS=&%B
+M<W1R "YS:'-T<G1A8@ N8V]M;65N=  N<W1A8BYI;F1E>  N<W1A8@  87,Z
+M($,@1&5V96QO<&UE;G0@4V5T(" H0T13*2!34$%20V]M<&EL97)S(#(N," Q
+M."!-87D@,3DY,@H  &%S.B!#($1E=F5L;W!M96YT(%-E=" @*$-$4RD@4U!!
+M4D-O;7!I;&5R<R R+C @,3@@36%Y(#$Y.3(*  ! *",I4W5N3U,@-2XP(&9C
+M<RX@($IU;F4@,3DY,@  87,Z($,@1&5V96QO<&UE;G0@4V5T(" H0T13*2!3
+M4$%20V]M<&EL97)S(#(N," Q."!-87D@,3DY,@H 1T-#.B H1TY5*2!C>6=N
+M=7,M,BXP+C(  &%S.B!#($1E=F5L;W!M96YT(%-E=" @*$-$4RD@4U!!4D-O
+M;7!I;&5R<R R+C @,3@@36%Y(#$Y.3(* &QD.B H4T=5*2!3=6Y/4R]35E(T
+M("A,2RTQ+C I          $    '    B0    UD             #=D   #
+M         &LX             ' X             $X\    *A=6!@   %DJ
+M             %X@              $   "\   +#     ED      $/B   
+M  ]D      $/B    !<\             ":              $B         
+M     %J              (&              )J              +B     
+M         -:              /"              1*              36 
+M             5*              6Z              8"             
+M 9.              :N              ;>              E&         
+M     N,D      $/B     !$  !Y          !$  !Y    !     !$  !Y
+M    #    O(D      $/G     !$  !Z          !$  !Z    !     !$
+M  !Z    #    PDD      $/L     !$  ![          !$  ![    !   
+M  !$  ![    #    R(D      $/Q     !$  !]          !$  !]    
+M!     !$  !]    #    S(D      $/V     !$  !^          !$  !^
+M    !     !$  !^    #    TDD      $/[     !$  !_          !$
+M  !_    !     !$  !_    #    V(D      $0      !$  "!        
+M  !$  "!    !     !$  "!    #    W D      $0%     !$  ""    
+M      !$  ""    !     !$  ""    #    X4D      $0*     !$  "#
+M          !$  "#    !     !$  "#    #    YPD      $0/     !$
+M  "%          !$  "%    !     !$  "%    #    ZLD      $04   
+M  !$  "&          !$  "&    !     !$  "&    #    \$D      $0
+M9     !$  "'          !$  "'    !     !$  "'    #    ]DD    
+M  $0>     !$  ")          !$  ")    !     !$  ")    $    ^HD
+M      $0D     !$  "*          !$  "*    !     !$  "*    $   
+M _R             !&B             !*B             !,^         
+M    !.N             !0F             !26             !3*     
+M        !5\D      $0J     !$  "R          !$  "U    !     !$
+M  "V    #     !$  "W    &     !$  "Y    )     !$  "Z    ,   
+M  !$  "[    /     !$  "]    2     !$  "^    5     !$  "_    
+M8     !$  #!    ;     !$  #"    >     !$  ##    A     !$  #%
+M    D     !$  #&    H     !$  #)    L     !$  #*    P     !$
+M  #+    T     !$  #-    X     !$  #.    \     !$  #/   !    
+M  !$  #1   !$     !$  #2   !(     !$  #3   !,     !$  #5   !
+M0     !$  #6   !4     !$  #7   !8     !$  #9   !<     !$  #:
+M   !@     !$  #<   !D     !$  #=   !H     !$  #>   !L     !$
+M  #@   !P     !$  #A   !T     !$  #B   !X     !$  #D   !\   
+M  !$  #E   "      !$  #F   "$     !$  #H   "(     !$  #I   "
+M,     !$  #J   "0     !$  #L   "4     !$  #M   "8     !$  #O
+M   "<     !$  #P   "?     !$  #Q   "B     !$  #R   "E     !$
+M  #T   "H     !$  #V   "L     !$  #W   "P     !$  #W   "P   
+M!6<@            !7$@            !8,@            !9<@        
+M    !:(@            !;0@            !<@@            !=$@    
+M        !>$@            !?,@            !?T@            !@X@
+M            !B$@            !BT@            !CH@            
+M!E4@            !G@@            !IT@            !KD@        
+M    !M(@            !O<@            !Q$@            !R@@    
+M        !TL@            !V8@            !WX@            !Z(@
+M            ![\@            !]T@            !_,@            
+M"!$@            "#$@            "$@@            "&,@        
+M    "(,@            ")@@            "+$@            ",\@    
+M        ".4@            "/\@            "1X@            "38@
+M            "4\@            "5T@            "?@@            
+M"@0@            "I<@            "J(@            "JT@        
+M    "M$@            "N @            "OX@                    
+M                                               !     0    ( 
+M 0#4    U    !$               $         "0    4    "  $ Z   
+M .@   +T     P         $    !     \    +     @ ! ]P   /<   &
+M@     0    7    !    !     7     P    (  0I<   *7   !'L     
+M          $         'P    0    "  $.V   #M@    ,     P    X 
+M   $    #    "D    $     @ !#N0   [D    )     ,    +    !   
+M  P    S     0    8  0\(   /"     P               0         
+M.0    $    &  $/%   #Q0   1<               $         #\    !
+M    !@ !$W   !-P    #               !         !%     0    ( 
+M 1.    3@    "@               @         30    $    '  (3J   
+M$Z@   !8               $    !    %(    !     P "%    !0     
+M#               !     0   !7    !@    ,  A0,   4#    (@    $
+M          0    (    8     @    #  (4F   %)@   '$            
+M   (         &4    "             !28   &T    !     <    !   
+M !    !M     P             ;:   !)D               $         
+M=0    ,             ( $   ")               !         (0    #
+M             ""*   +#                0        "-     P      
+M       KE@   +(               $         EP    $             
+M+$@   %)               !         *     !             "V4    
+M8               !     P   "L     0             M]   "-P     
+,          0    ,
+end
diff --git a/gdb/testsuite/gdb.base/term.exp b/gdb/testsuite/gdb.base/term.exp
new file mode 100644 (file)
index 0000000..84d60e3
--- /dev/null
@@ -0,0 +1,95 @@
+#   Copyright (C) 1988, 1990, 1991, 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Rob Savoye. (rob@cygnus.com)
+
+if $tracelevel then {
+    strace $tracelevel
+}
+
+# This only works for native, I think.
+if ![isnative] then {
+    warning "Term test case can't run on a target system."
+    continue
+}
+
+#
+# test running programs
+#
+set prms_id 0
+set bug_id 0
+
+set binfile "run"
+
+if ![file exists $objdir/$subdir/$binfile] then {
+    perror "$objdir/$subdir/$binfile does not exist."
+    return 0
+}
+
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $objdir/$subdir/$binfile
+
+# Test that GDB correctly identifies that it does not control a terminal.
+send "info terminal\n"
+expect {
+    -re "No saved terminal information..*$prompt $"\
+       { send "run 5\n"
+           expect {
+               -re "Starting program.*$binfile.*120.*Program exited normally..*$prompt $"\
+                   { send "info terminal\n"
+                       expect {
+                           -re "No saved terminal information..*$prompt $"\
+                               { pass "info terminal" }
+                           -re ".*$prompt $"   { fail "info terminal" }
+                           timeout             { fail "(timeout) info terminal" }
+                       }
+                   }
+               -re ".*$prompt $"       { fail "info terminal" }
+               timeout         { fail "(timeout) info terminal" }
+           }
+       }
+    -re ".*$prompt $"  { fail "info terminal" }
+    timeout            { fail "(timeout) info terminal" }
+}
+
+
+# In mid-execution
+send "break main\n"
+expect {
+    -re "Breakpoint.*at.* file .*, line.*$prompt $"\
+       { send "run 5\n"
+           expect {
+               -re "Starting program.*Breakpoint \[0-9\]+,.*main.*if .argc != 2.*$prompt $"\
+                   { send "info terminal\n"
+                       expect {
+                           -re "Inferior's terminal status .currently saved by GDB.:.*$prompt $"\
+                               { pass "info terminal at breakpoint" }
+                           -re ".*$prompt $"   { fail "info terminal at breakpoint" }
+                           timeout                     { fail "(timeout) info terminal at breakpoint" }
+                       }
+                   }
+               -re ".*$prompt $"       { fail "info terminal at breakpoint" }
+               timeout                 { fail "(timeout) info terminal at breakpoint" }
+           }
+       }
+    -re ".*$prompt $"  { fail "info terminal at breakpoint" }
+    timeout            { fail "(timeout) info terminal at breakpoint" }
+}
+
+
diff --git a/gdb/testsuite/gdb.base/twice.c b/gdb/testsuite/gdb.base/twice.c
new file mode 100644 (file)
index 0000000..dd12c06
--- /dev/null
@@ -0,0 +1,16 @@
+int nothing ()
+
+{
+    int x = 3 ;
+    return x ;
+}
+
+
+main ()
+
+{
+    int y ;
+    
+    y = nothing () ;
+    printf ("hello\n") ;
+}
diff --git a/gdb/testsuite/gdb.base/types.c b/gdb/testsuite/gdb.base/types.c
new file mode 100644 (file)
index 0000000..e22a68b
--- /dev/null
@@ -0,0 +1,247 @@
+/*
+ *     Test file with lots of different types.
+ */
+
+/*
+ *     First the basic C types.
+ */
+
+#ifndef __STDC__
+#define signed  /**/
+#endif
+
+char           v_char;
+signed char    v_signed_char;
+unsigned char  v_unsigned_char;
+
+short          v_short;
+signed short   v_signed_short;
+unsigned short v_unsigned_short;
+
+int            v_int;
+signed int     v_signed_int;
+unsigned int   v_unsigned_int;
+
+long           v_long;
+signed long    v_signed_long;
+unsigned long  v_unsigned_long;
+
+float          v_float;
+double         v_double;
+
+/*
+ *     Now some derived types, which are arrays, functions-returning,
+ *     pointers, structures, unions, and enumerations.
+ */
+
+/**** arrays *******/
+
+char           v_char_array[2];
+signed char    v_signed_char_array[2];
+unsigned char  v_unsigned_char_array[2];
+
+short          v_short_array[2];
+signed short   v_signed_short_array[2];
+unsigned short v_unsigned_short_array[2];
+
+int            v_int_array[2];
+signed int     v_signed_int_array[2];
+unsigned int   v_unsigned_int_array[2];
+
+long           v_long_array[2];
+signed long    v_signed_long_array[2];
+unsigned long  v_unsigned_long_array[2];
+
+float          v_float_array[2];
+double         v_double_array[2];
+
+/**** pointers *******/
+
+char           *v_char_pointer;
+signed char    *v_signed_char_pointer;
+unsigned char  *v_unsigned_char_pointer;
+
+short          *v_short_pointer;
+signed short   *v_signed_short_pointer;
+unsigned short *v_unsigned_short_pointer;
+
+int            *v_int_pointer;
+signed int     *v_signed_int_pointer;
+unsigned int   *v_unsigned_int_pointer;
+
+long           *v_long_pointer;
+signed long    *v_signed_long_pointer;
+unsigned long  *v_unsigned_long_pointer;
+
+float          *v_float_pointer;
+double         *v_double_pointer;
+
+/**** structs *******/
+
+struct t_struct {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_struct1;
+
+struct {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_struct2;
+
+/**** unions *******/
+
+union t_union {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_union;
+
+union {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_union2;
+
+/*** Functions returning type ********/
+
+char           v_char_func () { return(0); }
+signed char    v_signed_char_func () { return (0); }
+unsigned char  v_unsigned_char_func () { return (0); }
+
+short          v_short_func () { return (0); }
+signed short   v_signed_short_func () { return (0); }
+unsigned short v_unsigned_short_func () { return (0); }
+
+int            v_int_func () { return (0); }
+signed int     v_signed_int_func () { return (0); }
+unsigned int   v_unsigned_int_func () { return (0); }
+
+long           v_long_func () { return (0); }
+signed long    v_signed_long_func () { return (0); }
+unsigned long  v_unsigned_long_func () { return (0); }
+
+float          v_float_func () { return (0.0); }
+double         v_double_func () { return (0.0); }
+
+/**** Some misc more complicated things *******/
+
+struct link {
+       struct link *next;
+#ifdef __STDC__
+       struct link *(*linkfunc) (struct link *this, int flags);
+#else
+       struct link *(*linkfunc) ();
+#endif
+       struct t_struct stuff[1][2][3];
+} *s_link;
+
+union tu_link {
+       struct link *next;
+#ifdef __STDC__
+       struct link *(*linkfunc) (struct link *this, int flags);
+#else
+       struct link *(*linkfunc) ();
+#endif
+       struct t_struct stuff[1][2][3];
+} u_link;
+
+/**** Enumerations *******/
+
+enum {red, green, blue} primary;
+enum colors {yellow, purple, pink} nonprimary;
+
+enum {chevy, ford} clunker;
+enum cars {bmw, porsche} sportscar;
+
+typedef enum {FALSE, TRUE} boolean;
+typedef enum bvals {false, true} boolean2;
+
+enum misordered {two = 2, one = 1, zero = 0, three = 3};
+
+/***********/
+
+main ()
+{
+  /* Some linkers (e.g. on AIX) remove unreferenced variables,
+     so make sure to reference them. */
+  v_char = 0;
+  v_signed_char = 1;
+  v_unsigned_char = 2;
+
+  v_short = 3;
+  v_signed_short = 4;
+  v_unsigned_short = 5;    
+
+  v_int = 6;
+  v_signed_int = 7;
+  v_unsigned_int = 8;    
+
+  v_long = 9;
+  v_signed_long = 10;
+  v_unsigned_long = 11;    
+  
+  v_float = 100.0;
+  v_double = 200.0;
+
+
+  v_char_array[0] = v_char;
+  v_signed_char_array[0] = v_signed_char;
+  v_unsigned_char_array[0] = v_unsigned_char;
+
+  v_short_array[0] = v_short;
+  v_signed_short_array[0] = v_signed_short;
+  v_unsigned_short_array[0] = v_unsigned_short;
+
+  v_int_array[0] = v_int;
+  v_signed_int_array[0] = v_signed_int;
+  v_unsigned_int_array[0] = v_unsigned_int;
+
+  v_long_array[0] = v_long;
+  v_signed_long_array[0] = v_signed_long;
+  v_unsigned_long_array[0] = v_unsigned_long;
+
+  v_float_array[0] = v_float;
+  v_double_array[0] = v_double;
+
+  v_char_pointer = &v_char;
+  v_signed_char_pointer = &v_signed_char;
+  v_unsigned_char_pointer = &v_unsigned_char;
+
+  v_short_pointer = &v_short;
+  v_signed_short_pointer = &v_signed_short;
+  v_unsigned_short_pointer = &v_unsigned_short;
+
+  v_int_pointer = &v_int;
+  v_signed_int_pointer = &v_signed_int;
+  v_unsigned_int_pointer = &v_unsigned_int;
+
+  v_long_pointer = &v_long;
+  v_signed_long_pointer = &v_signed_long;
+  v_unsigned_long_pointer = &v_unsigned_long;
+
+  v_float_pointer = &v_float;
+  v_double_pointer = &v_double;
+
+  primary = blue;
+  nonprimary = pink;
+  sportscar = porsche;
+  clunker = ford;
+
+  u_link.next = s_link;
+
+  v_union2.v_short_member = v_union.v_short_member;
+}
diff --git a/gdb/testsuite/gdb.base/watchpoint.c b/gdb/testsuite/gdb.base/watchpoint.c
new file mode 100644 (file)
index 0000000..edb996d
--- /dev/null
@@ -0,0 +1,120 @@
+#include <stdio.h>
+#include <stdio.h>
+/*
+ *     Since using watchpoints can be very slow, we have to take some pains to
+ *     ensure that we don't run too long with them enabled or we run the risk
+ *     of having the test timeout.  To help avoid this, we insert some marker
+ *     functions in the execution stream so we can set breakpoints at known
+ *     locations, without worrying about invalidating line numbers by changing
+ *     this file.  We use null bodied functions are markers since gdb does
+ *     not support breakpoints at labeled text points at this time.
+ *
+ *     One place we need is a marker for when we start executing our tests
+ *     instructions rather than any process startup code, so we insert one
+ *     right after entering main().  Another is right before we finish, before
+ *     we start executing any process termination code.
+ *
+ *     Another problem we have to guard against, at least for the test
+ *     suite, is that we need to ensure that the line that causes the
+ *     watchpoint to be hit is still the current line when gdb notices
+ *     the hit.  Depending upon the specific code generated by the compiler,
+ *     the instruction after the one that triggers the hit may be part of
+ *     the same line or part of the next line.  Thus we ensure that there
+ *     are always some instructions to execute on the same line after the
+ *     code that should trigger the hit.
+ */
+
+int count = -1;
+int ival1 = -1;
+int ival2 = -1;
+int ival3 = -1;
+int ival4 = -1;
+char buf[10];
+struct foo
+{
+  int val;
+};
+struct foo struct1, struct2, *ptr1, *ptr2;
+
+int doread = 0;
+
+void marker1 ()
+{
+}
+
+void marker2 ()
+{
+}
+
+void marker4 ()
+{
+}
+
+void marker5 ()
+{
+}
+
+void
+func2 ()
+{
+}
+
+int
+func1 ()
+{
+  /* The point of this is that we will set a breakpoint at this call.
+
+     Then, if DECR_PC_AFTER_BREAK equals the size of a function call
+     instruction (true on a sun3 if this is gcc-compiled--FIXME we
+     should use asm() to make it work for any compiler, present or
+     future), then we will end up branching to the location just after
+     the breakpoint.  And we better not confuse that with hitting the
+     breakpoint.  */
+  func2 ();
+  return 73;
+}
+
+int main ()
+{
+  struct1.val = 1;
+  struct2.val = 2;
+  ptr1 = &struct1;
+  ptr2 = &struct2;
+  marker1 ();
+  func1 ();
+  for (count = 0; count < 4; count++) {
+    ival1 = count;
+    ival3 = count; ival4 = count;
+  }
+  ival1 = count; /* Outside loop */
+  ival2 = count;
+  ival3 = count; ival4 = count;
+  marker2 ();
+  if (doread)
+    read (0, &buf[0], 5);
+  marker4 ();
+
+  /* We have a watchpoint on ptr1->val.  It should be triggered if
+     ptr1's value changes.  */
+  ptr1 = ptr2;
+
+  /* This should not trigger the watchpoint.  If it does, then we
+     used the wrong value chain to re-insert the watchpoints or we
+     are not evaluating the watchpoint expression correctly.  */
+  struct1.val = 5;
+  marker5 ();
+  if (doread)
+    read (0, &buf[0], 5);
+  marker4 ();
+
+  /* We have a watchpoint on ptr1->val.  It should be triggered if
+     ptr1's value changes.  */
+  ptr1 = ptr2;
+
+  /* This should not trigger the watchpoint.  If it does, then we
+     used the wrong value chain to re-insert the watchpoints or we
+     are not evaluating the watchpoint expression correctly.  */
+  struct1.val = 5;
+  marker5 ();
+  return 0;
+}
diff --git a/gdb/testsuite/gdb.base/watchpoint.exp b/gdb/testsuite/gdb.base/watchpoint.exp
new file mode 100644 (file)
index 0000000..ddb3dae
--- /dev/null
@@ -0,0 +1,715 @@
+# Copyright (C) 1992 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-gdb@prep.ai.mit.edu
+
+# This file was written by Fred Fish. (fnf@cygnus.com)
+
+if $tracelevel then {
+    strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+set binfile "watchpoint"
+set srcfile $binfile.c
+
+if ![file exists $objdir/$subdir/$binfile] then {
+    perror "$objdir/$subdir/$binfile does not exist."
+    return 0
+}
+
+
+# Prepare for watchpoint tests by setting up two breakpoints and one
+# watchpoint.
+#
+# We use breakpoints at marker functions to get past all the startup code,
+# so we can get to the watchpoints in a reasonable amount of time from a
+# known starting point.
+#
+# For simplicity, so we always know how to reference specific breakpoints or
+# watchpoints by number, we expect a particular ordering and numbering of
+# each in the combined breakpoint/watchpoint table, as follows:
+#
+#      Number          What            Where
+#      1               Breakpoint      marker1()
+#      2               Breakpoint      marker2()
+#      3               Watchpoint      ival3
+
+proc initialize {} {
+    global prompt
+    global hex
+    global decimal
+    global srcfile
+
+    send "break marker1\n"
+    expect {
+       -re "Breakpoint 1 at $hex: file .*$srcfile, line $decimal.*$prompt $" {}
+       -re ".*$prompt $" { fail "set breakpoint at marker1" ; return 0 }
+       timeout { fail "set breakpoint at marker1 (timeout)" ; return 0 }
+    }
+
+    send "break marker2\n"
+    expect {
+       -re "Breakpoint 2 at $hex: file .*$srcfile, line $decimal.*$prompt $" {}
+       -re ".*$prompt $" { fail "set breakpoint at marker2" ; return 0 }
+       timeout { fail "set breakpoint at marker2 (timeout)" ; return 0 }
+    }
+
+    send "info break\n"
+    expect {
+       -re "1\[ \]*breakpoint.*marker1.*\r\n2\[ \]*breakpoint.*marker2.*\r\n$prompt $" { }
+       -re ".*$prompt $" { fail "breakpoints not setup right" ; return 0 }
+       timeout { fail "info break (timeout)" ; return 0 }
+    }
+
+    send "watch ival3\n"
+    expect {
+       -re ".*\[Ww\]atchpoint 3: ival3\r\n$prompt $" { pass "set watchpoint" }
+       -re ".*$prompt $" { fail "set watchpoint on ival3" ; return 0 }
+       timeout { fail "set watchpoint on ival3 (timeout)" ; return 0 }
+    }
+
+    # "info watch" is the same as "info break"
+
+    send "info watch\n"
+    expect {
+       -re "1\[ \]*breakpoint.*marker1.*\r\n2\[ \]*breakpoint.*marker2.*\r\n3\[ \]*.*watchpoint.*ival3\r\n$prompt $" {
+           pass "watchpoint found in watchpoint/breakpoint table"
+       }
+       -re ".*$prompt $" { fail "watchpoint/breakpoint not set" ; return 0 }
+       timeout { fail "info break (timeout)" ; return 0 }
+    }
+
+    # After installing the watchpoint, we disable it until we are ready
+    # to use it.  This allows the test program to run at full speed until
+    # we get to the first marker function.
+
+    send "disable 3\n"
+    expect {
+       -re "disable 3\r\n$prompt $" { pass "watchpoint disabled" }
+       -re ".*$prompt $" { fail "watchpoint not disabled" ; return 0 }
+       timeout { fail "watchpoint not disabled (timeout)" ; return 0 }
+    }
+
+    return 1
+}
+
+#
+# Test simple watchpoint.
+#
+
+proc test_simple_watchpoint {} {
+    global prompt
+    global hex
+    global decimal
+
+    # Ensure that the watchpoint is disabled when we startup.
+
+    send "disable 3\n"
+    expect {
+       -re "disable 3\r\n$prompt $" { }
+       -re ".*$prompt $" { fail "watchpoint not disabled" ; return 0 }
+       timeout { fail "watchpoint not disabled (timeout)" ; return 0 }
+    }
+
+    # Run until we get to the first marker function.
+
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.* \(y or n\) $" {
+           send "y\n"
+           exp_continue
+       }
+       -re "Starting program.*Breakpoint 1, marker1 .*$prompt $" {}
+       -re ".*$prompt $" { fail "run until marker1 function hit" ; return }
+       timeout { fail "run until marker1 function hit (timeout)" ; return }
+    }
+
+    # After reaching the marker function, enable the watchpoint.
+
+    send "enable 3\n"
+    expect {
+       -re "enable 3\r\n$prompt $" { pass "watchpoint enabled" }
+       -re ".*$prompt $" { fail "watchpoint not enabled" ; return }
+       timeout { fail "watchpoint not enabled (timeout)" ; return }
+    }
+
+    gdb_test "break func1" "Breakpoint.*at"
+    gdb_test "set \\\$func1_breakpoint_number = \\\$bpnum" ""
+
+    gdb_test "continue" "Continuing.*Breakpoint \[0-9\]*, func1" \
+       "continue to breakpoint at func1"
+
+    # Continue until the first change, from -1 to 0
+
+    send "cont\n"
+    expect {
+       -re "Continuing.*Watchpoint.*ival3.*Old value = -1.*New value = 0.*ival3 = count; ival4 = count;.*$prompt $" {
+           pass "watchpoint hit, first time"
+       }
+       -re "Continuing.*Watchpoint.*ival3.*Old value = -1.*New value = 0.*for .count = 0; count < 4; count\[+)\]+ \{.*$prompt $" {
+           # setup_xfail "m68*-*-sunos*" 1836
+           fail "missed first watchpoint"
+           return
+       }
+       -re "Continuing.*Breakpoint.*func1.*$prompt $" {
+           setup_xfail "m68*-*-*" 2597
+           fail "thought it hit breakpoint at func1 twice"
+           gdb_test "delete \\\$func1_breakpoint_number" ""
+           gdb_test "continue" "\
+Continuing.*Watchpoint.*ival3.*Old value = -1.*New value = 0.*ival3 = count;" \
+               "watchpoint hit, first time"
+       }
+       -re ".*$prompt $" { fail "missed first watchpoint" ; return }
+       timeout { fail "run to first watchpoint (timeout)" ; return }
+       eof { fail "run to first watchpoint (eof)" ; return }
+    }
+
+    gdb_test "delete \\\$func1_breakpoint_number" ""
+
+    # Continue until the next change, from 0 to 1.
+    
+    send "cont\n"
+    expect {
+       -re "Continuing.*Watchpoint.*ival3.*Old value = 0.*New value = 1.*ival3 = count; ival4 = count;.*$prompt $"     {
+           pass "watchpoint hit, second time"
+       }
+       -re ".*$prompt $" { fail "missed second watchpoint" ; return }
+       timeout { fail "run to second watchpoint (timeout)" ; return }
+    }
+    
+    # Continue until the next change, from 1 to 2.
+    
+    send "cont\n"
+    expect {
+       -re "Continuing.*Watchpoint.*ival3.*Old value = 1.*New value = 2.*ival3 = count; ival4 = count;.*$prompt $"     {
+           pass "watchpoint hit, third time"
+       }
+       -re ".*$prompt $" { fail "missed third watchpoint" ; return }
+       timeout { fail "run to third watchpoint (timeout)" ; return }
+    }
+    
+    # Continue until the next change, from 2 to 3.
+    
+    send "cont\n"
+    expect {
+       -re "Continuing.*Watchpoint.*ival3.*Old value = 2.*New value = 3.*ival3 = count; ival4 = count;.*$prompt $"     {
+           pass "watchpoint hit, fourth time"
+       }
+       -re ".*$prompt $" { fail "missed fourth watchpoint" ; return }
+       timeout { fail "run to fourth watchpoint (timeout)" ; return }
+    }
+    
+    # Continue until the next change, from 3 to 4.
+    # Note that this one is outside the loop.
+    
+    send "cont\n"
+    expect {
+       -re "Continuing.*Watchpoint.*ival3.*Old value = 3.*New value = 4.*ival3 = count; ival4 = count;.*$prompt $"     {
+           pass "watchpoint hit, fifth time"
+       }
+       -re ".*$prompt $" { fail "missed fifth watchpoint" ; return }
+       timeout { fail "run to fifth watchpoint (timeout)" ; return }
+    }
+    
+    # Continue until we hit the finishing marker function.
+    # Make sure we hit no more watchpoints.
+    
+    # This used to fail for a29k-amd-udi (PR 2421), but has been fixed.
+    send "cont\n"
+    expect {
+       -re "Continuing.*Breakpoint.*marker2 \(\).*$prompt $" { }
+       -re "Continuing.*Watchpoint.*ival3.*$prompt $" {
+           fail "hit a disabled watchpoint" ; return
+       }
+       -re ".*$prompt $" { fail "marker2 function missed" ; return }
+       timeout { fail "run to marker2 function (timeout)" ; return }
+    }
+    
+    # Disable the watchpoint so we run at full speed until we exit.
+
+    send "disable 3\n"
+    expect {
+       -re "disable 3\r\n$prompt $" { pass "watchpoint disabled" }
+       -re ".*$prompt $" { fail "watchpoint not disabled" ; return }
+       timeout { fail "watchpoint not disabled (timeout)" ; return }
+    }
+
+    # Run until process exits.
+    
+    send "cont\n"
+    expect {
+       -re "Continuing.*Program exited normally.*$prompt $" { }
+       -re ".*$prompt $" { fail "watchpoints not removed" ; return }
+       timeout { fail "looking for process exit (timeout)" }
+    }
+}
+
+# Test disabling watchpoints.
+
+proc test_disabling_watchpoints {} {
+    global prompt
+    global binfile
+    global srcfile
+    global decimal
+    global hex
+
+    # Ensure that the watchpoint is disabled when we startup.
+
+    send "disable 3\n"
+    expect {
+       -re "disable 3\r\n$prompt $" { }
+       -re ".*$prompt $" { fail "watchpoint not disabled" ; return 0 }
+       timeout { fail "watchpoint not disabled (timeout)" ; return 0 }
+    }
+
+    # Run until we get to the first marker function.
+
+    send "run\n"
+    expect {
+       -re "The program .* has been started already.* \(y or n\) $" {
+           send "y\n"
+           exp_continue
+       }
+       -re "Starting program.*Breakpoint 1, marker1 .*$prompt $" {}
+       -re ".*$prompt $" { fail "run until marker1 function hit" ; return }
+       timeout { fail "run until marker1 function hit (timeout)" ; return }
+    }
+
+    # After reaching the marker function, enable the watchpoint.
+
+    send "enable 3\n"
+    expect {
+       -re "enable 3\r\n$prompt $" { pass "watchpoint enabled" }
+       -re ".*$prompt $" { fail "watchpoint not enabled" ; return }
+       timeout { fail "watchpoint not enabled (timeout)" ; return }
+    }
+
+    # Continue until the first change, from -1 to 0
+    # Don't check the old value, because on VxWorks the variable value
+    # will not have been reinitialized.
+    send "cont\n"
+    expect {
+       -re "Continuing.*Watchpoint.*ival3.*Old value = .*New value = 0.*ival3 = count; ival4 = count;.*$prompt $" {
+           pass "watchpoint hit, first time"
+       }
+       -re "Continuing.*Watchpoint.*ival3.*Old value = .*New value = 0.*for .count = 0; count < 4; count\[+)]+ \{.*$prompt $" {
+           # setup_xfail "m68*-*-sunos*" 1836
+           fail "missed first watchpoint"
+           return
+       }
+       -re ".*$prompt $" { fail "missed first watchpoint" ; return }
+       timeout { fail "run to first watchpoint (timeout)" ; return }
+    }
+    
+    # Continue until the next change, from 0 to 1.
+
+    send "cont\n"
+    expect {
+       -re "Continuing.*Watchpoint.*ival3.*Old value = 0.*New value = 1.*ival3 = count; ival4 = count;.*$prompt $"     {
+           pass "watchpoint hit, second time"
+       }
+       -re ".*$prompt $" { fail "missed second watchpoint" ; return }
+       timeout { fail "run to second watchpoint (timeout)" ; return }
+    }
+    
+    # Disable the watchpoint but leave breakpoints
+
+    send "disable 3\n"
+    expect {
+       -re "disable 3\r\n$prompt $" { }
+       -re ".*$prompt $" { fail "watchpoint not disabled" ; return 0 }
+       timeout { fail "watchpoint not disabled (timeout)" ; return 0 }
+    }
+
+    # Check watchpoint list, looking for the entry that confirms the
+    # watchpoint is disabled.
+
+    send "info watchpoints\n"
+    expect {
+       -re "3\[ \]*.*watchpoint\[ \]*keep\[ \]*n\[ \]*ival3\r\n.*$prompt $" {
+           pass "watchpoint disabled in table"
+       }
+       -re ".*$prompt $" {
+           fail "disabled watchpoint not found in table"
+       }
+       timeout { fail "info watchpoints (timeout)" }
+    }
+
+    # Continue until we hit the finishing marker function.
+    # Make sure we hit no more watchpoints.
+
+    send "cont\n"
+    expect {
+       -re "Continuing.*Breakpoint.*marker2 \[)(\]+.*$prompt $" {
+           pass "disabled watchpoint skipped"
+       }
+       -re "Continuing.*Watchpoint.*ival3.*$prompt $" {
+           fail "hit a disabled watchpoint" ; return
+       }
+       -re ".*$prompt $" { fail "marker2 function missed" ; return }
+       timeout { fail "run to marker2 function (timeout)" ; return }
+    }
+    
+    send "cont\n"
+    expect {
+       -re "Continuing.*Program exited normally.*$prompt $" { }
+       -re ".*$prompt $" { fail "watchpoints not removed" ; return }
+       timeout { fail "looking for process exit (timeout)" }
+    }
+}
+
+# Test stepping and other mundane operations with watchpoints enabled
+proc test_stepping {} {
+    global prompt
+
+    if [runto marker1] then {
+       gdb_test "watch ival2" ".*\[Ww\]atchpoint \[0-9\]*: ival2"
+
+       # Well, let's not be too mundane.  It should be a *bit* of a challenge
+       gdb_test "break func2 if 0" "Breakpoint.*at"
+       gdb_test "p \\\$func2_breakpoint_number = \\\$bpnum" "="
+
+       # The HPPA has a problem here.
+       if [ istarget "hppa*-*-*" ] then {
+           # Don't actually try doing the call, if we do we can't continue.
+           setup_xfail "*-*-*"
+           fail "calling function with watchpoint enabled"
+       } else {
+           # The problem is that GDB confuses stepping through the call
+           # dummy with hitting the breakpoint at the end of the call dummy.
+           # Will be fixed once all architectures define 
+           # CALL_DUMMY_BREAKPOINT_OFFSET.
+           setup_xfail "*-*-*"
+           # This doesn't occur if the call dummy starts with a call,
+           # because we are out of the dummy by the first time the inferior
+           # stops.
+           clear_xfail "m68*-*-*"
+           clear_xfail "i*86*-*-*"
+           clear_xfail "vax-*-*"
+           # The following architectures define CALL_DUMMY_BREAKPOINT_OFFSET.
+           clear_xfail "alpha-*-*"
+           clear_xfail "mips*-*-*"
+           clear_xfail "sparc-*-*"
+           gdb_test "p func1 ()" "= 73" \
+               "calling function with watchpoint enabled"
+       }
+
+       # 
+       # "finish" brings us back to main.
+       # On some targets (e.g. alpha) gdb will stop from the finish in midline
+       # of the marker1 call. This is due to register restoring code on
+       # the alpha and might be caused by stack adjustment instructions
+       # on other targets. In this case we will step once more.
+       #
+       send "finish\n"
+       expect {
+           -re "Run.*exit from.*marker1.*main.* at" { }
+           default { fail "finish from marker1" ; return }
+       }
+       expect {
+           -re "marker1 \[)(\]+;.*$prompt $" {
+               send "step\n"
+               exp_continue
+           }
+           -re "func1 \[)(\]+;.*$prompt $" {
+               pass "finish from marker1"
+           }
+           -re ".*$prompt $" {
+               fail "finish from marker1"
+           }
+           default { fail "finish from marker1" ; return }
+       }
+
+       gdb_test "next" "for \[(\]+count = 0"
+
+       # Now test that "until" works.  It's a bit tricky to test
+       # "until", because compilers don't always arrange the code
+       # exactly the same way, and we might get slightly different
+       # sequences of statements.  But the following should be true
+       # (if not it is a compiler or a debugger bug): The user who
+       # does "until" at every statement of a loop should end up
+       # stepping through the loop once, and the debugger should not
+       # stop for any of the remaining iterations.
+
+       gdb_test "until" "ival1 = count"
+       gdb_test "until" "ival3 = count"
+       send "until\n"
+       expect {
+           -re "(for \[(\]+count = 0|\}).*$prompt $" {
+               gdb_test "until" "ival1 = count; /. Outside loop ./"
+           }
+           -re "ival1 = count; /. Outside loop ./.*$prompt $" {
+               pass "until out of loop"
+           }
+           -re ".*$prompt $" {
+               fail "until out of loop"
+           }
+           default { fail "until out of loop" ; return }
+       }
+
+       gdb_test "step" "ival2 = count"
+    }
+}
+
+# Test stepping and other mundane operations with watchpoints enabled
+proc test_watchpoint_triggered_in_syscall {} {
+    global prompt
+    global timeout
+
+    set saved_timeout $timeout 
+
+    # Run until we get to the first marker function.
+    set x 0
+    set y 0
+    set testname "Watch buffer passed to read syscall"
+    if [runto marker2] then {
+       gdb_test "watch buf\\\[0\\\]" ".*\[Ww\]atchpoint \[0-9\]*: buf"
+       gdb_test "watch buf\\\[1\\\]" ".*\[Ww\]atchpoint \[0-9\]*: buf"
+       gdb_test "watch buf\\\[2\\\]" ".*\[Ww\]atchpoint \[0-9\]*: buf"
+       gdb_test "watch buf\\\[3\\\]" ".*\[Ww\]atchpoint \[0-9\]*: buf"
+       gdb_test "watch buf\\\[4\\\]" ".*\[Ww\]atchpoint \[0-9\]*: buf"
+       gdb_test "break marker4" ".*Breakpoint.*"
+
+       send "set doread = 1\n"
+       expect {
+           -re ".*$prompt $" { }
+           timeout { fail "set doread" ; return }
+       }
+
+       # Sometimes our string never gets to GDB?!? dejagnu bug?  Whatever
+       # the cause we'll set a reasonably short timeout and resend our
+       # string again if we timeout.
+       set timeout 10
+       send "continue\n"
+       send "123\n"
+       expect {
+           -re ".*Watchpoint.*buf\\\[0\\\].*Old value = 0.*New value = 49\[^\n\]*\n" { set x [expr $x+1] ; exp_continue }
+           -re ".*Watchpoint.*buf\\\[1\\\].*Old value = 0.*New value = 50\[^\n\]*\n" { set x [expr $x+1] ; exp_continue }
+           -re ".*Watchpoint.*buf\\\[2\\\].*Old value = 0.*New value = 51\[^\n\]*\n" { set x [expr $x+1] ; exp_continue }
+           -re ".*Watchpoint.*buf\\\[3\\\].*Old value = 0.*New value = 10\[^\n\]*\n" { set x [expr $x+1] ; exp_continue }
+           -re ".*$prompt $" { }
+           timeout {
+               set timeout $saved_timeout
+               send "123\n"
+               exp_continue
+           }
+       }
+
+       # Restore the timeout value.
+        set timeout $saved_timeout
+
+       # Examine the values in buf to see how many watchpoints we
+       # should have printed.
+       send "print buf\[0\]\n"
+       expect {
+           -re ".*= 49.*$prompt $" { set y [expr $y+1] }
+           -re ".*= 0" { }
+           default { fail "bogus value in buf[0]" }
+           timeout { fail "retrieving contents of buf variable (timeout) }
+       }
+       send "print buf\[1\]\n"
+       expect {
+           -re ".*= 50.*$prompt $" { set y [expr $y+1] }
+           -re ".*= 0" { }
+           default { fail "bogus value in buf[1]" }
+           timeout { fail "retrieving contents of buf variable (timeout) }
+       }
+       send "print buf\[2\]\n"
+       expect {
+           -re ".*= 51.*$prompt $" { set y [expr $y+1] }
+           -re ".*= 0" { }
+           default { fail "bogus value in buf[2]" }
+           timeout { fail "retrieving contents of buf variable (timeout) }
+       }
+       send "print buf\[3\]\n"
+       expect {
+           -re ".*= 10.*$prompt $" { set y [expr $y+1] }
+           -re ".*= 0" { }
+           default { fail "bogus value in buf[3]" }
+           timeout { fail "retrieving contents of buf variable (timeout) }
+       }
+
+       # Did we find what we were looking for?  If not, flunk it.
+       if [expr $x==$y] then { pass $testname } else { fail "$testname: Only triggered $x watchpoints, expected $y."}
+
+       # Continue until we hit the finishing marker function.
+       # Make sure we hit no more watchpoints.
+
+       send "cont\n"
+       expect {
+           -re "Continuing.*Breakpoint.*marker4 \[)(\]+.*$prompt $" {
+               pass "disabled watchpoint skipped"
+           }
+           -re "Continuing.*Watchpoint.*$prompt $" {
+               fail "hit suprious watchpoint" ; return
+           }
+           -re ".*$prompt $" { fail "marker4 function missed" ; return }
+           timeout { fail "run to marker4 function (timeout)" ; return }
+       }
+    
+       # Disable everything so we can finish the program at full speed
+       send "disable\n"
+       expect {
+           -re ".*$prompt $" { }
+           timeout { fail "disabling breakpoints (timeout)" }
+       }
+
+       send "cont\n"
+       expect {
+           -re "Continuing.*Program exited normally.*$prompt $" { }
+           -re ".*$prompt $" { fail "watchpoints not removed" ; return }
+           timeout { fail "looking for process exit (timeout)" }
+       }
+    }
+}
+
+# Do a simple test of of watching through a pointer when the pointer
+# itself changes.  Should add some more complicated stuff here.
+
+proc test_complex_watchpoint {} {
+    global prompt
+
+    set testname "Test complex watchpoint"
+    if [runto marker4] then {
+       gdb_test "watch ptr1->val" ".*\[Ww\]atchpoint \[0-9\]*: ptr1->val"
+       gdb_test "break marker5" ".*Breakpoint.*"
+
+       send "cont\n"
+       expect {
+           -re "Continuing.*Watchpoint.*ptr1->val.*Old value = 1.*New value = 2.*$prompt $" { pass $testname }
+           default { fail $testname ; return }
+       }
+
+       # Continue until we hit the marker5 function.
+       # Make sure we hit no more watchpoints.
+
+       send "cont\n"
+       expect {
+           -re "Continuing.*Breakpoint.*marker5 \[)(\]+.*$prompt $" {
+               pass "did not trigger wrong watchpoint"
+           }
+           -re "Continuing.*Watchpoint.*$prompt $" {
+               fail "hit wrong watchpoint" ; return
+           }
+           -re ".*$prompt $" { fail "marker5 function missed" ; return }
+           timeout { fail "run to marker5 function (timeout)" ; return }
+       }
+
+       # Disable everything so we can finish the program at full speed
+       send "disable\n"
+       expect {
+           -re ".*$prompt $" { }
+           timeout { fail "disabling breakpoints (timeout)" }
+       }
+
+       send "cont\n"
+       expect {
+           -re "Continuing.*Program exited normally.*$prompt $" { }
+           -re ".*$prompt $" { fail "watchpoints not removed" ; return }
+           timeout { fail "looking for process exit (timeout)" }
+       }
+    }
+}
+
+# Start with a fresh gdb.
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load $objdir/$subdir/$binfile
+
+if [initialize] then {
+
+    # Preserve the old timeout, and set a new one that should be
+    # sufficient to step from marker1 to marker2 with watchpoints
+    # set anywhere.
+
+    set timeoutsave $timeout
+    set timeout 60
+
+    test_simple_watchpoint
+
+    # The IDT/sim monitor only has 8 (!) open files, of which it uses
+    # 4 (!).  So we have to make sure one program exits before
+    # starting another one.
+    if [istarget "mips-idt-*"] then {
+       gdb_exit
+       gdb_start
+       gdb_reinitialize_dir $srcdir/$subdir
+       gdb_load $objdir/$subdir/$binfile
+       initialize
+    }
+
+    if [istarget "a29k-*-udi"] then {
+       # FIXME: If PR 2415 is fixed, this is not needed.
+       gdb_target_udi
+       gdb_load $objdir/$subdir/$binfile
+    }
+
+    test_disabling_watchpoints
+
+    # See above.
+    if [istarget "mips-idt-*"] then {
+       gdb_exit
+       gdb_start
+       gdb_reinitialize_dir $srcdir/$subdir
+       gdb_load $objdir/$subdir/$binfile
+       initialize
+    }
+
+    test_stepping
+
+    # See above.
+    if [istarget "mips-idt-*"] then {
+       gdb_exit
+       gdb_start
+       gdb_reinitialize_dir $srcdir/$subdir
+       gdb_load $objdir/$subdir/$binfile
+       initialize
+    }
+
+    # This test hasn't been tested on anything but the PA.
+    if [istarget "hppa*-*-*"] then {
+       test_watchpoint_triggered_in_syscall
+    }
+
+    # See above.
+    if [istarget "mips-idt-*"] then {
+       gdb_exit
+       gdb_start
+       gdb_reinitialize_dir $srcdir/$subdir
+       gdb_load $objdir/$subdir/$binfile
+       initialize
+    }
+
+    # This test hasn't been tested on anything but the PA.
+    if [istarget "hppa*-*-*"] then {
+       test_complex_watchpoint
+    }
+
+    # Restore the preserved old timeout value.
+
+    set timeout $timeoutsave
+}
+
+if [istarget "a29k-*-udi"] then {
+    # FIXME: If PR 2415 is fixed, this is not needed.
+    gdb_target_udi
+}
diff --git a/gdb/testsuite/gdb.base/whatis-info.c b/gdb/testsuite/gdb.base/whatis-info.c
new file mode 100644 (file)
index 0000000..8744210
--- /dev/null
@@ -0,0 +1,15 @@
+/* This needs to be kept in sync with whatis.c.  If this proves to end up
+   being hairy, we could use a common header file.  */
+#if defined (__STDC__) || defined (_AIX)
+set signed_keyword_not_used 0
+#else
+set signed_keyword_not_used 1
+#endif
+
+#if defined (__GNUC__)
+set gcc_compiled __GNUC__
+#else
+set gcc_compiled 0
+#endif
+
+return 0
diff --git a/gdb/testsuite/gdb.base/whatis.c b/gdb/testsuite/gdb.base/whatis.c
new file mode 100644 (file)
index 0000000..ca50c06
--- /dev/null
@@ -0,0 +1,265 @@
+/*
+ *     Test file with lots of different types, for testing the
+ *     "whatis" command.
+ */
+
+/*
+ *     First the basic C types.
+ */
+
+#if !(defined (__STDC__) || defined (_AIX))
+#define signed  /**/
+#endif
+
+char           v_char;
+signed char    v_signed_char;
+unsigned char  v_unsigned_char;
+
+short          v_short;
+signed short   v_signed_short;
+unsigned short v_unsigned_short;
+
+int            v_int;
+signed int     v_signed_int;
+unsigned int   v_unsigned_int;
+
+long           v_long;
+signed long    v_signed_long;
+unsigned long  v_unsigned_long;
+
+float          v_float;
+double         v_double;
+
+/*
+ *     Now some derived types, which are arrays, functions-returning,
+ *     pointers, structures, unions, and enumerations.
+ */
+
+/**** arrays *******/
+
+char           v_char_array[2];
+signed char    v_signed_char_array[2];
+unsigned char  v_unsigned_char_array[2];
+
+short          v_short_array[2];
+signed short   v_signed_short_array[2];
+unsigned short v_unsigned_short_array[2];
+
+int            v_int_array[2];
+signed int     v_signed_int_array[2];
+unsigned int   v_unsigned_int_array[2];
+
+long           v_long_array[2];
+signed long    v_signed_long_array[2];
+unsigned long  v_unsigned_long_array[2];
+
+float          v_float_array[2];
+double         v_double_array[2];
+
+/**** pointers *******/
+
+/* Make sure they still print as pointer to foo even there is a typedef
+   for that type.  Test this not just for char *, which might be
+   a special case kludge in GDB (Unix system include files like to define
+   caddr_t), but for a variety of types.  */
+typedef char *char_addr;
+typedef unsigned short *ushort_addr;
+typedef signed long *slong_addr;
+
+char           *v_char_pointer;
+signed char    *v_signed_char_pointer;
+unsigned char  *v_unsigned_char_pointer;
+
+short          *v_short_pointer;
+signed short   *v_signed_short_pointer;
+unsigned short *v_unsigned_short_pointer;
+
+int            *v_int_pointer;
+signed int     *v_signed_int_pointer;
+unsigned int   *v_unsigned_int_pointer;
+
+long           *v_long_pointer;
+signed long    *v_signed_long_pointer;
+unsigned long  *v_unsigned_long_pointer;
+
+float          *v_float_pointer;
+double         *v_double_pointer;
+
+/**** structs *******/
+
+struct t_struct {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_struct1;
+
+struct {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_struct2;
+
+/**** unions *******/
+
+union t_union {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_union;
+
+union {
+    char       v_char_member;
+    short      v_short_member;
+    int                v_int_member;
+    long       v_long_member;
+    float      v_float_member;
+    double     v_double_member;
+} v_union2;
+
+/*** Functions returning type ********/
+
+char           v_char_func () { return(0); }
+signed char    v_signed_char_func () { return (0); }
+unsigned char  v_unsigned_char_func () { return (0); }
+
+short          v_short_func () { return (0); }
+signed short   v_signed_short_func () { return (0); }
+unsigned short v_unsigned_short_func () { return (0); }
+
+int            v_int_func () { return (0); }
+signed int     v_signed_int_func () { return (0); }
+unsigned int   v_unsigned_int_func () { return (0); }
+
+long           v_long_func () { return (0); }
+signed long    v_signed_long_func () { return (0); }
+unsigned long  v_unsigned_long_func () { return (0); }
+
+float          v_float_func () { return (0.0); }
+double         v_double_func () { return (0.0); }
+
+/**** Some misc more complicated things *******/
+
+struct link {
+       struct link *next;
+#ifdef __STDC__
+       struct link *(*linkfunc) (struct link *this, int flags);
+#else
+       struct link *(*linkfunc) ();
+#endif
+       struct t_struct stuff[1][2][3];
+} *s_link;
+
+union tu_link {
+       struct link *next;
+#ifdef __STDC__
+       struct link *(*linkfunc) (struct link *this, int flags);
+#else
+       struct link *(*linkfunc) ();
+#endif
+       struct t_struct stuff[1][2][3];
+} u_link;
+
+struct outer_struct {
+       int outer_int;
+       struct inner_struct {
+               int inner_int;
+               long inner_long;
+       }inner_struct_instance;
+       union inner_union {
+               int inner_union_int;
+               long inner_union_long;
+       }inner_union_instance;
+       long outer_long;
+} nested_su;
+
+/**** Enumerations *******/
+
+enum colors {red, green, blue} color;
+enum cars {chevy, ford, porsche} clunker;
+
+/***********/
+
+main ()
+{
+  /* Some linkers (e.g. on AIX) remove unreferenced variables,
+     so make sure to reference them. */
+  v_char = 0;
+  v_signed_char = 1;
+  v_unsigned_char = 2;
+
+  v_short = 3;
+  v_signed_short = 4;
+  v_unsigned_short = 5;    
+
+  v_int = 6;
+  v_signed_int = 7;
+  v_unsigned_int = 8;    
+
+  v_long = 9;
+  v_signed_long = 10;
+  v_unsigned_long = 11;    
+  
+  v_float = 100.0;
+  v_double = 200.0;
+
+
+  v_char_array[0] = v_char;
+  v_signed_char_array[0] = v_signed_char;
+  v_unsigned_char_array[0] = v_unsigned_char;
+
+  v_short_array[0] = v_short;
+  v_signed_short_array[0] = v_signed_short;
+  v_unsigned_short_array[0] = v_unsigned_short;
+
+  v_int_array[0] = v_int;
+  v_signed_int_array[0] = v_signed_int;
+  v_unsigned_int_array[0] = v_unsigned_int;
+
+  v_long_array[0] = v_long;
+  v_signed_long_array[0] = v_signed_long;
+  v_unsigned_long_array[0] = v_unsigned_long;
+
+  v_float_array[0] = v_float;
+  v_double_array[0] = v_double;
+
+  v_char_pointer = &v_char;
+  v_signed_char_pointer = &v_signed_char;
+  v_unsigned_char_pointer = &v_unsigned_char;
+
+  v_short_pointer = &v_short;
+  v_signed_short_pointer = &v_signed_short;
+  v_unsigned_short_pointer = &v_unsigned_short;
+
+  v_int_pointer = &v_int;
+  v_signed_int_pointer = &v_signed_int;
+  v_unsigned_int_pointer = &v_unsigned_int;
+
+  v_long_pointer = &v_long;
+  v_signed_long_pointer = &v_signed_long;
+  v_unsigned_long_pointer = &v_unsigned_long;
+
+  v_float_pointer = &v_float;
+  v_double_pointer = &v_double;
+
+  color = red;
+  clunker = porsche;
+
+  u_link.next = s_link;
+
+  v_union2.v_short_member = v_union.v_short_member;
+
+  v_struct1.v_char_member = 0;
+  v_struct2.v_char_member = 0;
+
+  nested_su.outer_int = 0;
+  return 0;
+}