Reorganized GDB tests - base
This commit is contained in:
parent
33268150cb
commit
ef44eed173
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
|
@ -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));
|
||||
}
|
|
@ -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:
|
|
@ -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 ();
|
||||
}
|
||||
|
|
@ -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" ""
|
|
@ -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
|
|
@ -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;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
/* 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 () {}
|
||||
|
||||
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. */
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,3 @@
|
|||
# Force static linking for nodebug
|
||||
LDFLAGS= -Wl,-a,archive
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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;
|
||||
}
|
|
@ -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 */
|
||||
}
|
|
@ -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++);
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
void
|
||||
bar (x)
|
||||
int x;
|
||||
{
|
||||
printf ("%d\n", x);
|
||||
}
|
||||
|
||||
static void
|
||||
unused ()
|
||||
{
|
||||
/* Not used for anything */
|
||||
}
|
|
@ -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
|
File diff suppressed because it is too large
Load Diff
|
@ -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
|
|
@ -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
|
|
@ -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);
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
#if defined (__GNUC__)
|
||||
set gcc_compiled __GNUC__
|
||||
#else
|
||||
set gcc_compiled 0
|
||||
#endif
|
|
@ -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
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
{
|
||||
}
|
|
@ -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;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -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);
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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 ());
|
||||
}
|
|
@ -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);
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -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 () {}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -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
|
|
@ -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
|
|
@ -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" }
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
int nothing ()
|
||||
|
||||
{
|
||||
int x = 3 ;
|
||||
return x ;
|
||||
}
|
||||
|
||||
|
||||
main ()
|
||||
|
||||
{
|
||||
int y ;
|
||||
|
||||
y = nothing () ;
|
||||
printf ("hello\n") ;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue