diff options
author | nobody <> | 1998-12-21 20:06:34 +0000 |
---|---|---|
committer | nobody <> | 1998-12-21 20:06:34 +0000 |
commit | 94228bd3ca403b6bad17f96e32db7b8cf2e870c6 (patch) | |
tree | c5c2deb54b366a5a36d119a4132689b3a939fd51 /gdb/remote.c | |
parent | be9485d5f52e873f1a66f55f34a70fda754fce1f (diff) | |
download | gdb-94228bd3ca403b6bad17f96e32db7b8cf2e870c6.zip gdb-94228bd3ca403b6bad17f96e32db7b8cf2e870c6.tar.gz gdb-94228bd3ca403b6bad17f96e32db7b8cf2e870c6.tar.bz2 |
This commit was manufactured by cvs2svn to create branch 'FSF'.
Sprout from master 1991-11-19 05:16:47 UTC Stu Grossman <grossman@cygnus> 'Initial revision'
Cherrypick from master 1998-12-21 20:06:33 UTC Elena Zannoni <ezannoni@kwikemart.cygnus.com> 'Initial revision':
readline/INSTALL
readline/bind.c
readline/config.h.in
readline/doc/Makefile.in
readline/examples/histexamp.c
readline/isearch.c
readline/parens.c
readline/search.c
readline/shell.c
readline/support/install.sh
readline/support/mkdirs
readline/tilde.c
readline/tilde.h
readline/xmalloc.c
Cherrypick from master 1991-05-21 19:55:06 UTC K. Richard Pixley <rich@cygnus> 'Initial revision':
readline/Makefile.in
readline/configure
readline/readline.c
Cherrypick from master 1994-01-16 03:39:57 UTC Per Bothner <per@bothner.com> ' Merge in changes from bash-1.13. The most obvious one is':
readline/complete.c
readline/display.c
readline/rldefs.h
Delete:
.Sanitize
DOC.Sanitize
DOC.configure
INSTALL
Makefile.in
README.configure
SUPPORTED
bfd/.Sanitize
bfd/COPYING
bfd/ChangeLog
bfd/Makefile
bfd/Makefile.in
bfd/TODO
bfd/VERSION
bfd/aout-encap.c
bfd/aout.c
bfd/aout32.c
bfd/aout64.c
bfd/aoutf1.h
bfd/aoutx.c
bfd/aoutx.h
bfd/archive.c
bfd/archures.c
bfd/archures.h
bfd/awkscan
bfd/awkscan-ip
bfd/awkscan-p
bfd/bfd-in.h
bfd/bfd.c
bfd/bfd.doc
bfd/bfd.doc.ps
bfd/bfd.texinfo
bfd/blins-p
bfd/bout.c
bfd/cache.c
bfd/coff-a29k.c
bfd/coff-code.h
bfd/coff-i386.c
bfd/coff-i960.c
bfd/coff-m68k.c
bfd/coff-m88k.c
bfd/coff-mips.c
bfd/coff-rs6000.c
bfd/coffcode.h
bfd/coffish.h
bfd/coffswap.c
bfd/config.sub
bfd/configure
bfd/configure.in
bfd/core.c
bfd/cplus-dem.c
bfd/cpu-a29k.c
bfd/cpu-h8300.c
bfd/cpu-i386.c
bfd/cpu-i960.c
bfd/cpu-m88k.c
bfd/cpu-rs6000.c
bfd/cpu-vax.c
bfd/ctor.c
bfd/demo64.c
bfd/doc/.Sanitize
bfd/doc/Makefile
bfd/doc/Makefile.in
bfd/doc/awkscan
bfd/doc/awkscan-ip
bfd/doc/awkscan-p
bfd/doc/bfd.info
bfd/doc/bfd.texinfo
bfd/doc/bfdinfo
bfd/doc/blins-p
bfd/doc/configure.in
bfd/doc/exfil1-p
bfd/doc/exfil3-p
bfd/doc/exfilter
bfd/doc/exfilter-p
bfd/doc/exfiltst
bfd/doc/exmerge
bfd/doc/intobfd
bfd/doc/mergecom-p
bfd/doc/movecom-p
bfd/doc/scanit
bfd/doc/scanph
bfd/doc/sedscript
bfd/doc/sedscript-p
bfd/doc/startcom-p
bfd/doc/tolibbfd
bfd/doc/tolibcoff
bfd/doc/unPROTO
bfd/elf.c
bfd/exfilter
bfd/exmerge
bfd/filemode.c
bfd/format.c
bfd/host-aout.c
bfd/hosts/.Sanitize
bfd/hosts/amix.h
bfd/hosts/decstation.h
bfd/hosts/delta88.h
bfd/hosts/dgux.h
bfd/hosts/dose.h
bfd/hosts/h-m68kv.h
bfd/hosts/harris.h
bfd/hosts/hp9000.h
bfd/hosts/i386mach.h
bfd/hosts/i386v.h
bfd/hosts/irix3.h
bfd/hosts/rs6000.h
bfd/hosts/rtbsd.h
bfd/hosts/sparc-ll.h
bfd/hosts/sparc.h
bfd/hosts/sun3.h
bfd/hosts/tahoe.h
bfd/hosts/ultra3.h
bfd/hosts/vaxbsd.h
bfd/hosts/vaxult.h
bfd/howto.c
bfd/i386aout.c
bfd/ieee.c
bfd/init.c
bfd/intobfd
bfd/libaout.h
bfd/libbfd-in.h
bfd/libbfd.c
bfd/libbfd.h
bfd/libcoff.h
bfd/libieee.h
bfd/liboasys.h
bfd/mergecom-p
bfd/misc.c
bfd/misc.h
bfd/movecom-p
bfd/newsos3.c
bfd/oasys.c
bfd/obstack.c
bfd/obstack.h
bfd/opncls.c
bfd/reloc.c
bfd/scanit
bfd/scanph
bfd/section.c
bfd/sedscript
bfd/sedscript-p
bfd/srec.c
bfd/startcom-p
bfd/sunos.c
bfd/syms.c
bfd/targets.c
bfd/tolibbfd
bfd/tolibcoff
bfd/trad-core.c
bfd/trad-core.h
bfd/unPROTO
binutils/.Sanitize
binutils/ChangeLog
binutils/Makefile.in
binutils/README
binutils/TODO
binutils/alloca.c
binutils/am29k-pinsn.c
binutils/ar.1
binutils/ar.c
binutils/binutils.texi
binutils/binutils.texinfo
binutils/bucomm.c
binutils/config.sub
binutils/configure
binutils/configure.in
binutils/copy.c
binutils/cplus-dem.c
binutils/filemode.c
binutils/gmalloc.c
binutils/i960-pinsn.c
binutils/is-ranlib.c
binutils/is-strip.c
binutils/m68k-pinsn.c
binutils/maybe-ranlib.c
binutils/maybe-strip.c
binutils/nm.1
binutils/nm.c
binutils/not-ranlib.c
binutils/not-strip.c
binutils/objdump.1
binutils/objdump.c
binutils/ostrip.c
binutils/ranlib.1
binutils/ranlib.sh
binutils/size.1
binutils/size.c
binutils/sparc-pinsn.c
binutils/strip.1
binutils/strip.c
binutils/version.c
config.sub
config/.Sanitize
config/mh-delta88
config/mh-dgux
config/mh-sco
config/mh-svr4
config/mh-sysv
config/mt-a29k
config/mt-ebmon29k
configure
configure.in
gas/.Sanitize
gas/.gdbinit
gas/COPYING
gas/ChangeLog
gas/GNUmakefile-host
gas/Makefile-intel
gas/Makefile.generic
gas/Makefile.in
gas/Makefile.loic
gas/Makefile.old
gas/NOTES
gas/NOTES.config
gas/README
gas/README-vms-dbg
gas/README.coff
gas/README.rich
gas/VERSION
gas/a.out.gnu.h
gas/app.c
gas/as.c
gas/as.h
gas/atof-generic.c
gas/bignum-copy.c
gas/bignum.h
gas/cond.c
gas/config.sub
gas/config/.Sanitize
gas/config/a.out.h
gas/config/atof-ieee.c
gas/config/atof-vax.c
gas/config/coff.gnu.h
gas/config/cplus-dem.c
gas/config/ebmon29k.mt
gas/config/h8300.mt
gas/config/h8300hds.mt
gas/config/ho-a29k.h
gas/config/ho-ansi.h
gas/config/ho-cygnus.h
gas/config/ho-decstation.h
gas/config/ho-generic.h
gas/config/ho-hpux.h
gas/config/ho-i386.h
gas/config/ho-rs6000.h
gas/config/ho-sun3.h
gas/config/ho-sun386.h
gas/config/ho-sun4.h
gas/config/ho-sunos.h
gas/config/ho-sysv.h
gas/config/ho-vax.h
gas/config/m68k.mt
gas/config/mh-a29k
gas/config/mh-cygnus
gas/config/mh-i386
gas/config/mips.mt
gas/config/obj-aout.c
gas/config/obj-aout.h
gas/config/obj-bfd-sunos.c
gas/config/obj-bfd-sunos.h
gas/config/obj-bout.c
gas/config/obj-bout.h
gas/config/obj-coff.c
gas/config/obj-coff.h
gas/config/obj-generic.c
gas/config/obj-generic.h
gas/config/obj-ieee.c
gas/config/obj-ieee.h
gas/config/ranlib.h
gas/config/rs6000.mt
gas/config/signame.h
gas/config/stab.h
gas/config/tc-a29k.c
gas/config/tc-a29k.h
gas/config/tc-generic.c
gas/config/tc-generic.h
gas/config/tc-h8300.c
gas/config/tc-i386.c
gas/config/tc-i386.h
gas/config/tc-i860.c
gas/config/tc-i860.h
gas/config/tc-i960.c
gas/config/tc-i960.h
gas/config/tc-m68851.h
gas/config/tc-m68k.c
gas/config/tc-m68k.h
gas/config/tc-ns32k.c
gas/config/tc-ns32k.h
gas/config/tc-rs6000.c
gas/config/tc-rs6000.h
gas/config/tc-sparc.c
gas/config/tc-sparc.h
gas/config/tc-vax.c
gas/config/tc-vax.h
gas/config/te-dpx2.h
gas/config/te-generic.h
gas/config/te-ic960.h
gas/config/te-motor.h
gas/config/te-sco386.h
gas/config/te-sparc.h
gas/config/te-sun3.h
gas/config/te-sysv32.h
gas/config/te-unisoft.h
gas/config/tmake-sun3
gas/config/vax-inst.h
gas/config/vms/.Sanitize
gas/config/vms/objrecdef.h
gas/config/vms/vms-dbg.c
gas/config/vms/vms.c
gas/configure
gas/configure.in
gas/configure.was
gas/debug.c
gas/doc/Makefile
gas/doc/a29k-coff.m4
gas/doc/a29k.m4
gas/doc/all.m4
gas/doc/as.texinfo
gas/doc/gen.m4
gas/doc/i80386.m4
gas/doc/i960.m4
gas/doc/m680x0.m4
gas/doc/none.m4
gas/doc/pretex.m4
gas/doc/sparc.m4
gas/doc/vax.m4
gas/doc/vintage.m4
gas/expr.c
gas/expr.h
gas/flonum-const.c
gas/flonum-copy.c
gas/flonum-mult.c
gas/flonum.h
gas/frags.c
gas/frags.h
gas/hash.c
gas/hash.h
gas/hex-value.c
gas/input-file.c
gas/input-file.h
gas/input-scrub.c
gas/link.cmd
gas/make-gas.com
gas/messages.c
gas/obj.h
gas/objdump.c
gas/obsolete/gdb-blocks.c
gas/obsolete/gdb-file.c
gas/obsolete/gdb-lines.c
gas/obsolete/gdb-symbols.c
gas/obsolete/gdb.c
gas/output-file.c
gas/output-file.h
gas/read.c
gas/read.h
gas/strstr.c
gas/struc-symbol.h
gas/subsegs.c
gas/subsegs.h
gas/symbols.c
gas/symbols.h
gas/tc.h
gas/testscripts/doboth
gas/testscripts/doobjcmp
gas/testscripts/dostriptest
gas/testscripts/dotest
gas/testscripts/dounsortreloc
gas/testscripts/dounsortsymbols
gas/ver960.c
gas/version.c
gas/write.c
gas/write.h
gas/xmalloc.c
gas/xrealloc.c
gdb/.Sanitize
gdb/.gdbinit
gdb/Attic/Makefile.in
gdb/COPYING
gdb/ChangeLog
gdb/ChangeLog-3.x
gdb/Convex.notes
gdb/Makefile
gdb/Makefile.dist
gdb/Makefile.in
gdb/Makefile.sdir
gdb/Makefile.srcdir
gdb/Projects
gdb/README
gdb/TODO
gdb/WHATS.NEW
gdb/alldeps.mak
gdb/alloca.c
gdb/altos-xdep.c
gdb/am29k-opcode.h
gdb/am29k-pinsn.c
gdb/am29k-tdep.c
gdb/ansidecl.h
gdb/arm-convert.s
gdb/arm-opcode.h
gdb/arm-pinsn.c
gdb/arm-tdep.c
gdb/arm-xdep.c
gdb/blockframe.c
gdb/breakpoint.c
gdb/breakpoint.h
gdb/buildsym.c
gdb/buildsym.h
gdb/c-exp.y
gdb/coffread.c
gdb/command.c
gdb/command.h
gdb/config.gdb
gdb/config.status
gdb/config.sub
gdb/config/.Sanitize
gdb/config/3b1.mh
gdb/config/3b1.mt
gdb/config/a29k-kern.mt
gdb/config/a29k.mt
gdb/config/altos.mh
gdb/config/altos.mt
gdb/config/altosgas.mh
gdb/config/altosgas.mt
gdb/config/am29k
gdb/config/amix.mh
gdb/config/amix.mt
gdb/config/arm.mh
gdb/config/arm.mt
gdb/config/bigmips.mh
gdb/config/bigmips.mt
gdb/config/convex.mh
gdb/config/convex.mt
gdb/config/decstation.mh
gdb/config/decstation.mt
gdb/config/delta88.mh
gdb/config/delta88.mt
gdb/config/hp300bsd.mh
gdb/config/hp300bsd.mt
gdb/config/hp300hpux.mh
gdb/config/hp300hpux.mt
gdb/config/i386aout.mt
gdb/config/i386mach.mh
gdb/config/i386sco.mh
gdb/config/i386sco.mt
gdb/config/i386v-g.mh
gdb/config/i386v-g.mt
gdb/config/i386v.mh
gdb/config/i386v.mt
gdb/config/i386v32-g.mh
gdb/config/i386v32-g.mt
gdb/config/i386v32.mh
gdb/config/i386v32.mt
gdb/config/i960.mt
gdb/config/irix3.mh
gdb/config/irix3.mt
gdb/config/isi.mh
gdb/config/isi.mt
gdb/config/littlemips.mh
gdb/config/littlemips.mt
gdb/config/m88k.mh
gdb/config/m88k.mt
gdb/config/merlin.mh
gdb/config/merlin.mt
gdb/config/mh-vax
gdb/config/news.mh
gdb/config/news.mt
gdb/config/news1000.mh
gdb/config/news1000.mt
gdb/config/nindy960.mt
gdb/config/none.mh
gdb/config/none.mt
gdb/config/np1.mh
gdb/config/np1.mt
gdb/config/pn.mh
gdb/config/pn.mt
gdb/config/pyramid.mh
gdb/config/pyramid.mt
gdb/config/rs6000.mh
gdb/config/rs6000.mt
gdb/config/rtbsd.mh
gdb/config/sun2os3.mh
gdb/config/sun2os3.mt
gdb/config/sun2os4.mh
gdb/config/sun2os4.mt
gdb/config/sun3.mh
gdb/config/sun3.mt
gdb/config/sun386.mh
gdb/config/sun386.mt
gdb/config/sun3os3.mh
gdb/config/sun3os3.mt
gdb/config/sun3os4.mh
gdb/config/sun3os4.mt
gdb/config/sun4.mh
gdb/config/sun4.mt
gdb/config/sun4os3.mh
gdb/config/sun4os3.mt
gdb/config/sun4os4.mh
gdb/config/sun4os4.mt
gdb/config/symmetry.mh
gdb/config/symmetry.mt
gdb/config/tahoe.mh
gdb/config/tahoe.mt
gdb/config/ultra3.mh
gdb/config/ultra3.mt
gdb/config/umax.mh
gdb/config/umax.mt
gdb/config/vax.mt
gdb/config/vxworks68.mt
gdb/config/vxworks960.mt
gdb/configure
gdb/configure.in
gdb/convex-opcode.h
gdb/convex-pinsn.c
gdb/convex-tdep.c
gdb/convex-xdep.c
gdb/convx-opcode.h
gdb/copying.awk
gdb/copying.c
gdb/core.c
gdb/coredep.c
gdb/cplus-dem.c
gdb/createtags
gdb/dbxread.c
gdb/defs.h
gdb/depend
gdb/doc/.Sanitize
gdb/doc/Makefile
gdb/doc/Makefile.in
gdb/doc/all.m4
gdb/doc/amd29k.m4
gdb/doc/configure.in
gdb/doc/gdb.alter-m4
gdb/doc/gdb.bugs-m4
gdb/doc/gdb.canned-m4
gdb/doc/gdb.cmds-m4
gdb/doc/gdb.ctl-m4
gdb/doc/gdb.data-m4
gdb/doc/gdb.emacs-m4
gdb/doc/gdb.files-m4
gdb/doc/gdb.gpl-m4
gdb/doc/gdb.install-m4
gdb/doc/gdb.invoc-m4
gdb/doc/gdb.rdln-m4
gdb/doc/gdb.rename-m4
gdb/doc/gdb.run-m4
gdb/doc/gdb.sample-m4
gdb/doc/gdb.src-m4
gdb/doc/gdb.stack-m4
gdb/doc/gdb.stop-m4
gdb/doc/gdb.symb-m4
gdb/doc/gdb.texinfo
gdb/doc/gdb.tgts-m4
gdb/doc/gdb.top-m4
gdb/doc/gdbint.texinfo
gdb/doc/gdbinv-m.m4
gdb/doc/gdbinv-m.m4.in
gdb/doc/gdbinv-s.m4
gdb/doc/gdbinv-s.m4.in
gdb/doc/gen.m4
gdb/doc/i80386.m4
gdb/doc/i960.m4
gdb/doc/interim-gdb.texinfo
gdb/doc/interim-gdbinv-m.m4
gdb/doc/interim-gdbinv-s.m4
gdb/doc/m680x0.m4
gdb/doc/none.m4
gdb/doc/pretex.m4
gdb/doc/rc-cm.tex
gdb/doc/rc-ps.tex
gdb/doc/rc-pslong.tex
gdb/doc/rdl-apps.texi
gdb/doc/refcard.tex
gdb/doc/sparc.m4
gdb/doc/threecol.tex
gdb/doc/vax.m4
gdb/dwarfread.c
gdb/elfread.c
gdb/environ.c
gdb/environ.h
gdb/eval.c
gdb/exec.c
gdb/expprint.c
gdb/expread.tab.c
gdb/expread.y
gdb/expression.h
gdb/findvar.c
gdb/frame.h
gdb/gdb-int.texinfo
gdb/gdbcmd.h
gdb/gdbcore.h
gdb/getpagesize.h
gdb/gmalloc.c
gdb/gmalloc.h
gdb/gould-pinsn.c
gdb/gould-xdep.c
gdb/hp300hpux-xdep.c
gdb/hp300ux-xdep.c
gdb/i386-pinsn.c
gdb/i386-tdep.c
gdb/i386-xdep.c
gdb/i387-tdep.c
gdb/i960-pinsn.c
gdb/i960-tdep.c
gdb/ieee-float.c
gdb/ieee-float.h
gdb/infcmd.c
gdb/inferior.h
gdb/inflow.c
gdb/infptrace.c
gdb/infrun.c
gdb/infrun.hacked.c
gdb/inftarg.c
gdb/kdb-start.c
gdb/language.c
gdb/language.h
gdb/m2-exp.y
gdb/m68k-opcode.h
gdb/m68k-pinsn.c
gdb/m68k-stub.c
gdb/m68k-tdep.c
gdb/m88k-opcode.h
gdb/m88k-pinsn.c
gdb/m88k-tdep.c
gdb/m88k-xdep.c
gdb/mach386-xdep.c
gdb/main.c
gdb/mcheck.c
gdb/mem-break.c
gdb/minimon.h
gdb/mips-opcode.h
gdb/mips-pinsn.c
gdb/mips-tdep.c
gdb/mips-xdep.c
gdb/mipsread.c
gdb/mtrace.awk
gdb/mtrace.c
gdb/munch
gdb/news-xdep.c
gdb/nindy-tdep.c
gdb/np1-opcode.h
gdb/ns32k-opcode.h
gdb/ns32k-pinsn.c
gdb/obstack.c
gdb/obstack.h
gdb/param-no-tm.h
gdb/param.h
gdb/parse.c
gdb/parser-defs.h
gdb/pn-opcode.h
gdb/printcmd.c
gdb/procfs.c
gdb/putenv.c
gdb/pyr-opcode.h
gdb/pyr-pinsn.c
gdb/pyr-tdep.c
gdb/pyr-xdep.c
gdb/regex.c
gdb/regex.h
gdb/rem-m68k.shar
gdb/rem-multi.shar
gdb/remote-adapt.c
gdb/remote-eb.c
gdb/remote-mm.c
gdb/remote-multi.shar
gdb/remote-nindy.c
gdb/remote-sa.m68k.shar
gdb/remote-sa.sparc.c
gdb/remote-vx.68.c
gdb/remote-vx.c
gdb/remote.c
gdb/rs6000-pinsn.c
gdb/rs6000-tdep.c
gdb/rs6000-xdep.c
gdb/rs6k-opcode.def
gdb/rs6k-opcode.h
gdb/saber.suppress
gdb/signals.h
gdb/signame.c
gdb/signame.h
gdb/solib.c
gdb/source.c
gdb/sparc-opcode.h
gdb/sparc-pinsn.c
gdb/sparc-tdep.c
gdb/sparc-xdep.c
gdb/stab.def
gdb/stack.c
gdb/standalone.c
gdb/stddef.h
gdb/stdlib.h
gdb/stuff.c
gdb/sun3-xdep.c
gdb/sun386-xdep.c
gdb/symfile.c
gdb/symfile.h
gdb/symm-tdep.c
gdb/symm-xdep.c
gdb/symmetry-tdep.c
gdb/symmetry-xdep.c
gdb/symmisc.c
gdb/symtab.c
gdb/symtab.h
gdb/tahoe-opcode.h
gdb/tahoe-pinsn.c
gdb/target.c
gdb/target.h
gdb/tdesc.c
gdb/tdesc.h
gdb/terminal.h
gdb/tm-29k.h
gdb/tm-3b1.h
gdb/tm-68k.h
gdb/tm-altos.h
gdb/tm-altosgas.h
gdb/tm-amix.h
gdb/tm-arm.h
gdb/tm-bigmips.h
gdb/tm-convex.h
gdb/tm-delta88.h
gdb/tm-hp300bsd.h
gdb/tm-hp300hpux.h
gdb/tm-i386v-g.h
gdb/tm-i386v.h
gdb/tm-i960.h
gdb/tm-irix3.h
gdb/tm-isi.h
gdb/tm-m88k.h
gdb/tm-merlin.h
gdb/tm-mips.h
gdb/tm-news.h
gdb/tm-nindy960.h
gdb/tm-np1.h
gdb/tm-pn.h
gdb/tm-pyr.h
gdb/tm-rs6000.h
gdb/tm-sparc.h
gdb/tm-sun2.h
gdb/tm-sun2os4.h
gdb/tm-sun3.h
gdb/tm-sun386.h
gdb/tm-sun3os4.h
gdb/tm-sun4os4.h
gdb/tm-sunos.h
gdb/tm-svr4.h
gdb/tm-symmetry.h
gdb/tm-tahoe.h
gdb/tm-ultra3.h
gdb/tm-umax.h
gdb/tm-vax.h
gdb/tm-vx68.h
gdb/tm-vx960.h
gdb/tm-vxworks68.h
gdb/tm-vxworks960.h
gdb/ultra3-xdep.c
gdb/umax-xdep.c
gdb/utils.c
gdb/valarith.c
gdb/valops.c
gdb/valprint.c
gdb/value.h
gdb/values.c
gdb/vax-opcode.h
gdb/vax-pinsn.c
gdb/vx-share/.Sanitize
gdb/vx-share/dbgRpcLib.h
gdb/vx-share/ptrace.h
gdb/vx-share/reg.h
gdb/vx-share/vxTypes.h
gdb/vx-share/vxWorks.h
gdb/vx-share/wait.h
gdb/vx-share/xdr_ld.c
gdb/vx-share/xdr_ld.h
gdb/vx-share/xdr_ptrace.c
gdb/vx-share/xdr_ptrace.h
gdb/vx-share/xdr_rdb.c
gdb/vx-share/xdr_rdb.h
gdb/vx-share/xdr_regs.c
gdb/vx-share/xdr_regs.h
gdb/xcoffexec.c
gdb/xcoffread.c
gdb/xm-3b1.h
gdb/xm-altos.h
gdb/xm-amix.h
gdb/xm-arm.h
gdb/xm-bigmips.h
gdb/xm-convex.h
gdb/xm-delta88.h
gdb/xm-hp300bsd.h
gdb/xm-hp300hpux.h
gdb/xm-i386mach.h
gdb/xm-i386sco.h
gdb/xm-i386v.h
gdb/xm-i386v32.h
gdb/xm-irix3.h
gdb/xm-isi.h
gdb/xm-m68k.h
gdb/xm-m88k.h
gdb/xm-merlin.h
gdb/xm-mips.h
gdb/xm-news.h
gdb/xm-news1000.h
gdb/xm-np1.h
gdb/xm-pn.h
gdb/xm-pyr.h
gdb/xm-rs6000.h
gdb/xm-rtbsd.h
gdb/xm-sparc.h
gdb/xm-sun2.h
gdb/xm-sun3.h
gdb/xm-sun386.h
gdb/xm-sun3os4.h
gdb/xm-sun4os4.h
gdb/xm-svr4.h
gdb/xm-symmetry.h
gdb/xm-tahoe.h
gdb/xm-ultra3.h
gdb/xm-umax.h
gdb/xm-vax.h
gprof/Makefile
gprof/Makefile.in
gprof/arcs.c
gprof/config/mt-i386
gprof/config/mt-sparc
gprof/config/tmake-i386
gprof/config/tmake-sparc
gprof/configure
gprof/configure.in
gprof/dfn.c
gprof/gmon.h
gprof/gprof.1
gprof/gprof.c
gprof/gprof.callg
gprof/gprof.flat
gprof/gprof.h
gprof/hertz.c
gprof/i386.c
gprof/i386.h
gprof/lookup.c
gprof/pathnames.h
gprof/printgprof.c
gprof/printlist.c
gprof/sparc.c
gprof/sparc.h
gprof/t.c
gprof/tahoe.c
gprof/tahoe.h
gprof/vax.c
gprof/vax.h
include/.Sanitize
include/COPYING
include/ChangeLog
include/a.out.encap.h
include/a.out.host.h
include/a.out.hp.h
include/a.out.sun4.h
include/a.out.vax.h
include/a29k-opcode.h
include/aout64.h
include/ar.h
include/arm-opcode.h
include/bcs88kcoff.h
include/bfd.h
include/bout.h
include/coff-a29k.h
include/coff-i386.h
include/coff-i960.h
include/coff-m68k.h
include/coff-m88k.h
include/coff-mips.h
include/coff-rs6000.h
include/convx-opcode.h
include/dwarf.h
include/elf-common.h
include/elf-external.h
include/elf-internal.h
include/gdbm.h
include/getopt.h
include/h8300-opcode.h
include/i386-opcode.h
include/i860-opcode.h
include/i960-opcode.h
include/ieee.h
include/internalcoff.h
include/m68k-opcode.h
include/m88k-opcode.h
include/mips-opcode.h
include/np1-opcode.h
include/ns32k-opcode.h
include/oasys.h
include/obstack.h
include/pn-opcode.h
include/pyr-opcode.h
include/ranlib.h
include/reloc.h
include/sparc-opcode.h
include/stab.def
include/stab.gnu.h
include/sysdep.h
include/tahoe-opcode.h
include/vax-opcode.h
include/wait.h
install.texinfo
ld/.Sanitize
ld/ChangeLog
ld/Makefile
ld/Makefile.in
ld/README
ld/config.h
ld/config.sub
ld/config/.Sanitize
ld/config/coff-a29k.mt
ld/config/decstation.mh
ld/config/delta88.mh
ld/config/dgux.mh
ld/config/ebmon29k.mt
ld/config/h-i386v
ld/config/h-m68kv
ld/config/hmake-dec3100
ld/config/hmake-dgux
ld/config/hmake-rtbsd
ld/config/hmake-sun3
ld/config/hmake-sun4
ld/config/hmake-sun4-64
ld/config/i386-aout.mt
ld/config/i386v.mt
ld/config/m68k.mt
ld/config/m68kv.mt
ld/config/m88k-bcs.mt
ld/config/news.mh
ld/config/news.mt
ld/config/rtbsd.mh
ld/config/sparc-ll.mh
ld/config/sparc.mh
ld/config/sun3.mh
ld/config/sun4.mt
ld/config/tmake-coff-a29k
ld/config/tmake-m88k-bcs
ld/config/tmake-sun4
ld/configure
ld/configure.in
ld/ebmon29k.sc
ld/gld.1
ld/h8300hds.c
ld/h8300hds.sc
ld/i386aout.c
ld/i386aout.sc
ld/ld-emul.c
ld/ld-gld-Ur.script
ld/ld-gld-r.script
ld/ld-gld.c
ld/ld-gld.script
ld/ld-gld68k-Ur.script
ld/ld-gld68k-r.script
ld/ld-gld68k.c
ld/ld-gld68k.script
ld/ld-gld960.c
ld/ld-gld960.script
ld/ld-gldm88kbcs-Ur.script
ld/ld-gldm88kbcs-r.script
ld/ld-gldm88kbcs.c
ld/ld-gldm88kbcs.script
ld/ld-lnk960-r.script
ld/ld-lnk960.c
ld/ld-lnk960.script
ld/ld-vanilla.c
ld/ld.h
ld/ld.tex
ld/ld.texinfo
ld/ldemul.c
ld/ldexp.c
ld/ldexp.h
ld/ldfile.c
ld/ldfile.h
ld/ldgld.c
ld/ldgld.sc
ld/ldgld.script
ld/ldgld68k.c
ld/ldgld68k.sc
ld/ldgld68k.script
ld/ldgld68kUr.sc
ld/ldgld68kUr.script
ld/ldgld68kr.sc
ld/ldgld68kr.script
ld/ldgld960.c
ld/ldgld960.sc
ld/ldgld960.script
ld/ldgldUr.sc
ld/ldgldUr.script
ld/ldglda29k.c
ld/ldglda29k.sc
ld/ldglda29k.script
ld/ldglda29kUr.sc
ld/ldglda29kUr.script
ld/ldglda29kr.sc
ld/ldglda29kr.script
ld/ldgldi386v.c
ld/ldgldi386v.sc
ld/ldgldi386vUr.sc
ld/ldgldi386vr.sc
ld/ldgldm68kv.c
ld/ldgldm68kv.sc
ld/ldgldm68kvUr.sc
ld/ldgldm68kvr.sc
ld/ldgldm88kbcs.c
ld/ldgldm88kbcs.sc
ld/ldgldm88kbcs.script
ld/ldgldm88kbcsUr.sc
ld/ldgldm88kbcsUr.script
ld/ldgldm88kbcsr.sc
ld/ldgldm88kbcsr.script
ld/ldgldr.sc
ld/ldgldr.script
ld/ldgram.y
ld/ldindr.c
ld/ldindr.h
ld/ldlang.c
ld/ldlang.h
ld/ldlex.h
ld/ldlex.l
ld/ldlnk960.c
ld/ldlnk960.sc
ld/ldlnk960.script
ld/ldlnk960r.sc
ld/ldlnk960r.script
ld/ldm88k.c
ld/ldm88k.sc
ld/ldm88kUr.sc
ld/ldm88kr.sc
ld/ldmain.c
ld/ldmain.h
ld/ldmisc.c
ld/ldmisc.h
ld/ldsym.c
ld/ldsym.h
ld/ldtemplate
ld/ldvanilla.c
ld/ldver.c
ld/ldver.h
ld/ldwarn.c
ld/ldwarn.h
ld/ldwrite.c
ld/ldwrite.h
ld/mkscript.c
ld/news.sc
readline/.Sanitize
readline/ChangeLog
readline/config.sub
readline/configure.in
readline/doc/Makefile
readline/doc/texindex.c
readline/examples/Makefile
readline/history.texi
readline/history.texinfo
readline/inc-hist.texi
readline/inc-history.texinfo
readline/inc-read.texi
readline/inc-readline.texinfo
readline/readline.texi
readline/readline.texinfo
readline/sysdep-aix.h
readline/sysdep-norm.h
Diffstat (limited to 'gdb/remote.c')
-rw-r--r-- | gdb/remote.c | 854 |
1 files changed, 0 insertions, 854 deletions
diff --git a/gdb/remote.c b/gdb/remote.c deleted file mode 100644 index 8215243..0000000 --- a/gdb/remote.c +++ /dev/null @@ -1,854 +0,0 @@ -/* Memory-access and commands for inferior process, for GDB. - Copyright (C) 1988-1991 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 1, 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 GDB; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* Remote communication protocol. - All values are encoded in ascii hex digits. - - Request Packet - - read registers g - reply XX....X Each byte of register data - is described by two hex digits. - Registers are in the internal order - for GDB, and the bytes in a register - are in the same order the machine uses. - or ENN for an error. - - write regs GXX..XX Each byte of register data - is described by two hex digits. - reply OK for success - ENN for an error - - read mem mAA..AA,LLLL AA..AA is address, LLLL is length. - reply XX..XX XX..XX is mem contents - or ENN NN is errno - - write mem MAA..AA,LLLL:XX..XX - AA..AA is address, - LLLL is number of bytes, - XX..XX is data - reply OK for success - ENN for an error - - cont cAA..AA AA..AA is address to resume - If AA..AA is omitted, - resume at same address. - - step sAA..AA AA..AA is address to resume - If AA..AA is omitted, - resume at same address. - - last signal ? Reply the current reason for stopping. - This is the same reply as is generated - for step or cont : SAA where AA is the - signal number. - - There is no immediate reply to step or cont. - The reply comes when the machine stops. - It is SAA AA is the "signal number" - - kill req k -*/ - -#include <stdio.h> -#include <string.h> -#include <fcntl.h> -#include "defs.h" -#include "param.h" -#include "frame.h" -#include "inferior.h" -#include "target.h" -#include "wait.h" -#include "terminal.h" - -#ifdef USG -#include <sys/types.h> -#endif - -#include <signal.h> - -extern void add_syms_addr_command (); -extern struct value *call_function_by_hand(); -extern void start_remote (); - -extern struct target_ops remote_ops; /* Forward decl */ - -static int kiodebug; -static int timeout = 5; - -#if 0 -int icache; -#endif - -/* Descriptor for I/O to remote machine. Initialize it to -1 so that - remote_open knows that we don't have a file open when the program - starts. */ -int remote_desc = -1; - -#define PBUFSIZ 400 - -/* Maximum number of bytes to read/write at once. The value here - is chosen to fill up a packet (the headers account for the 32). */ -#define MAXBUFBYTES ((PBUFSIZ-32)/2) - -static void remote_send (); -static void putpkt (); -static void getpkt (); -#if 0 -static void dcache_flush (); -#endif - - -/* Called when SIGALRM signal sent due to alarm() timeout. */ -#ifndef HAVE_TERMIO -void -remote_timer () -{ - if (kiodebug) - printf ("remote_timer called\n"); - - alarm (timeout); -} -#endif - -/* Initialize remote connection */ - -void -remote_start() -{ -} - -/* Clean up connection to a remote debugger. */ - -/* ARGSUSED */ -void -remote_close (quitting) - int quitting; -{ - if (remote_desc >= 0) - close (remote_desc); - remote_desc = -1; -} - -/* Open a connection to a remote debugger. - NAME is the filename used for communication. */ - -void -remote_open (name, from_tty) - char *name; - int from_tty; -{ - TERMINAL sg; - - if (name == 0) - error ( -"To open a remote debug connection, you need to specify what serial\n\ -device is attached to the remote system (e.g. /dev/ttya)."); - - target_preopen (from_tty); - - remote_close (0); - -#if 0 - dcache_init (); -#endif - - remote_desc = open (name, O_RDWR); - if (remote_desc < 0) - perror_with_name (name); - - ioctl (remote_desc, TIOCGETP, &sg); -#ifdef HAVE_TERMIO - sg.c_cc[VMIN] = 0; /* read with timeout. */ - sg.c_cc[VTIME] = timeout * 10; - sg.c_lflag &= ~(ICANON | ECHO); -#else - sg.sg_flags = RAW; -#endif - ioctl (remote_desc, TIOCSETP, &sg); - - if (from_tty) - printf ("Remote debugging using %s\n", name); - push_target (&remote_ops); /* Switch to using remote target now */ - -#ifndef HAVE_TERMIO -#ifndef NO_SIGINTERRUPT - /* Cause SIGALRM's to make reads fail. */ - if (siginterrupt (SIGALRM, 1) != 0) - perror ("remote_open: error in siginterrupt"); -#endif - - /* Set up read timeout timer. */ - if ((void (*)()) signal (SIGALRM, remote_timer) == (void (*)()) -1) - perror ("remote_open: error in signal"); -#endif - - /* Ack any packet which the remote side has already sent. */ - write (remote_desc, "+", 1); - putpkt ("?"); /* initiate a query from remote machine */ - - start_remote (); /* Initialize gdb process mechanisms */ -} - -/* remote_detach() - takes a program previously attached to and detaches it. - We better not have left any breakpoints - in the program or it'll die when it hits one. - Close the open connection to the remote debugger. - Use this when you want to detach and do something else - with your gdb. */ - -static void -remote_detach (args, from_tty) - char *args; - int from_tty; -{ - if (args) - error ("Argument given to \"detach\" when remotely debugging."); - - pop_target (); - if (from_tty) - printf ("Ending remote debugging.\n"); -} - -/* Convert hex digit A to a number. */ - -static int -fromhex (a) - int a; -{ - if (a >= '0' && a <= '9') - return a - '0'; - else if (a >= 'a' && a <= 'f') - return a - 'a' + 10; - else - error ("Reply contains invalid hex digit"); - return -1; -} - -/* Convert number NIB to a hex digit. */ - -static int -tohex (nib) - int nib; -{ - if (nib < 10) - return '0'+nib; - else - return 'a'+nib-10; -} - -/* Tell the remote machine to resume. */ - -void -remote_resume (step, siggnal) - int step, siggnal; -{ - char buf[PBUFSIZ]; - - if (siggnal) - error ("Can't send signals to a remote system."); - -#if 0 - dcache_flush (); -#endif - - strcpy (buf, step ? "s": "c"); - - putpkt (buf); -} - -/* Wait until the remote machine stops, then return, - storing status in STATUS just as `wait' would. - Returns "pid" (though it's not clear what, if anything, that - means in the case of this target). */ - -int -remote_wait (status) - WAITTYPE *status; -{ - unsigned char buf[PBUFSIZ]; - - WSETEXIT ((*status), 0); - getpkt (buf); - if (buf[0] == 'E') - error ("Remote failure reply: %s", buf); - if (buf[0] != 'S') - error ("Invalid remote reply: %s", buf); - WSETSTOP ((*status), (((fromhex (buf[1])) << 4) + (fromhex (buf[2])))); - return 0; -} - -/* Read the remote registers into the block REGS. */ - -/* Currently we just read all the registers, so we don't use regno. */ -/* ARGSUSED */ -void -remote_fetch_registers (regno) - int regno; -{ - char buf[PBUFSIZ]; - int i; - char *p; - char regs[REGISTER_BYTES]; - - sprintf (buf, "g"); - remote_send (buf); - - /* Reply describes registers byte by byte, each byte encoded as two - hex characters. Suck them all up, then supply them to the - register cacheing/storage mechanism. */ - - p = buf; - for (i = 0; i < REGISTER_BYTES; i++) - { - if (p[0] == 0 || p[1] == 0) - error ("Remote reply is too short: %s", buf); - regs[i] = fromhex (p[0]) * 16 + fromhex (p[1]); - p += 2; - } - for (i = 0; i < NUM_REGS; i++) - supply_register (i, ®s[REGISTER_BYTE(i)]); -} - -/* Prepare to store registers. Since we send them all, we have to - read out the ones we don't want to change first. */ - -void -remote_prepare_to_store () -{ - remote_fetch_registers (-1); -} - -/* Store the remote registers from the contents of the block REGISTERS. - FIXME, eventually just store one register if that's all that is needed. */ - -/* ARGSUSED */ -int -remote_store_registers (regno) - int regno; -{ - char buf[PBUFSIZ]; - int i; - char *p; - - buf[0] = 'G'; - - /* Command describes registers byte by byte, - each byte encoded as two hex characters. */ - - p = buf + 1; - for (i = 0; i < REGISTER_BYTES; i++) - { - *p++ = tohex ((registers[i] >> 4) & 0xf); - *p++ = tohex (registers[i] & 0xf); - } - *p = '\0'; - - remote_send (buf); - return 0; -} - -#if 0 -/* Read a word from remote address ADDR and return it. - This goes through the data cache. */ - -int -remote_fetch_word (addr) - CORE_ADDR addr; -{ - if (icache) - { - extern CORE_ADDR text_start, text_end; - - if (addr >= text_start && addr < text_end) - { - int buffer; - xfer_core_file (addr, &buffer, sizeof (int)); - return buffer; - } - } - return dcache_fetch (addr); -} - -/* Write a word WORD into remote address ADDR. - This goes through the data cache. */ - -void -remote_store_word (addr, word) - CORE_ADDR addr; - int word; -{ - dcache_poke (addr, word); -} -#endif /* 0 */ - -/* Write memory data directly to the remote machine. - This does not inform the data cache; the data cache uses this. - MEMADDR is the address in the remote memory space. - MYADDR is the address of the buffer in our space. - LEN is the number of bytes. */ - -void -remote_write_bytes (memaddr, myaddr, len) - CORE_ADDR memaddr; - char *myaddr; - int len; -{ - char buf[PBUFSIZ]; - int i; - char *p; - - if (len > PBUFSIZ / 2 - 20) - abort (); - - sprintf (buf, "M%x,%x:", memaddr, len); - - /* Command describes registers byte by byte, - each byte encoded as two hex characters. */ - - p = buf + strlen (buf); - for (i = 0; i < len; i++) - { - *p++ = tohex ((myaddr[i] >> 4) & 0xf); - *p++ = tohex (myaddr[i] & 0xf); - } - *p = '\0'; - - remote_send (buf); -} - -/* Read memory data directly from the remote machine. - This does not use the data cache; the data cache uses this. - MEMADDR is the address in the remote memory space. - MYADDR is the address of the buffer in our space. - LEN is the number of bytes. */ - -void -remote_read_bytes (memaddr, myaddr, len) - CORE_ADDR memaddr; - char *myaddr; - int len; -{ - char buf[PBUFSIZ]; - int i; - char *p; - - if (len > PBUFSIZ / 2 - 1) - abort (); - - sprintf (buf, "m%x,%x", memaddr, len); - remote_send (buf); - - /* Reply describes registers byte by byte, - each byte encoded as two hex characters. */ - - p = buf; - for (i = 0; i < len; i++) - { - if (p[0] == 0 || p[1] == 0) - error ("Remote reply is too short: %s", buf); - myaddr[i] = fromhex (p[0]) * 16 + fromhex (p[1]); - p += 2; - } -} - -/* Read or write LEN bytes from inferior memory at MEMADDR, transferring - to or from debugger address MYADDR. Write to inferior if SHOULD_WRITE is - nonzero. Returns length of data written or read; 0 for error. */ - -int -remote_xfer_inferior_memory(memaddr, myaddr, len, should_write) - CORE_ADDR memaddr; - char *myaddr; - int len; - int should_write; -{ - int origlen = len; - int xfersize; - while (len > 0) - { - if (len > MAXBUFBYTES) - xfersize = MAXBUFBYTES; - else - xfersize = len; - - if (should_write) - remote_write_bytes(memaddr, myaddr, xfersize); - else - remote_read_bytes (memaddr, myaddr, xfersize); - memaddr += xfersize; - myaddr += xfersize; - len -= xfersize; - } - return origlen; /* no error possible */ -} - -void -remote_files_info () -{ - printf ("remote files info missing here. FIXME.\n"); -} - -/* - -A debug packet whose contents are <data> -is encapsulated for transmission in the form: - - $ <data> # CSUM1 CSUM2 - - <data> must be ASCII alphanumeric and cannot include characters - '$' or '#' - - CSUM1 and CSUM2 are ascii hex representation of an 8-bit - checksum of <data>, the most significant nibble is sent first. - the hex digits 0-9,a-f are used. - -Receiver responds with: - - + - if CSUM is correct and ready for next packet - - - if CSUM is incorrect - -*/ - -static int -readchar () -{ - char buf; - - buf = '\0'; -#ifdef HAVE_TERMIO - /* termio does the timeout for us. */ - read (remote_desc, &buf, 1); -#else - alarm (timeout); - read (remote_desc, &buf, 1); - alarm (0); -#endif - - return buf & 0x7f; -} - -/* Send the command in BUF to the remote machine, - and read the reply into BUF. - Report an error if we get an error reply. */ - -static void -remote_send (buf) - char *buf; -{ - - putpkt (buf); - getpkt (buf); - - if (buf[0] == 'E') - error ("Remote failure reply: %s", buf); -} - -/* Send a packet to the remote machine, with error checking. - The data of the packet is in BUF. */ - -static void -putpkt (buf) - char *buf; -{ - int i; - unsigned char csum = 0; - char buf2[500]; - int cnt = strlen (buf); - char ch; - char *p; - - /* Copy the packet into buffer BUF2, encapsulating it - and giving it a checksum. */ - - p = buf2; - *p++ = '$'; - - for (i = 0; i < cnt; i++) - { - csum += buf[i]; - *p++ = buf[i]; - } - *p++ = '#'; - *p++ = tohex ((csum >> 4) & 0xf); - *p++ = tohex (csum & 0xf); - - /* Send it over and over until we get a positive ack. */ - - do { - if (kiodebug) - { - *p = '\0'; - printf ("Sending packet: %s (%s)\n", buf2, buf); - } - write (remote_desc, buf2, p - buf2); - - /* read until either a timeout occurs (\0) or '+' is read */ - do { - ch = readchar (); - } while ((ch != '+') && (ch != '\0')); - } while (ch != '+'); -} - -/* Read a packet from the remote machine, with error checking, - and store it in BUF. */ - -static void -getpkt (buf) - char *buf; -{ - char *bp; - unsigned char csum; - int c; - unsigned char c1, c2; - -#if 0 - /* Sorry, this will cause all hell to break loose, i.e. we'll end - up in the command loop with an inferior, but (at least if this - happens in remote_wait or some such place) without a current_frame, - having set up prev_* in wait_for_inferior, etc. - - If it is necessary to have such an "emergency exit", seems like - the only plausible thing to do is to say the inferior died, and - make the user reattach if they want to. Perhaps with a prompt - asking for confirmation. */ - - /* allow immediate quit while reading from device, it could be hung */ - immediate_quit++; -#endif /* 0 */ - - while (1) - { - /* Force csum to be zero here because of possible error retry. */ - csum = 0; - - while ((c = readchar()) != '$'); - - bp = buf; - while (1) - { - c = readchar (); - if (c == '#') - break; - *bp++ = c; - csum += c; - } - *bp = 0; - - c1 = fromhex (readchar ()); - c2 = fromhex (readchar ()); - if ((csum & 0xff) == (c1 << 4) + c2) - break; - printf ("Bad checksum, sentsum=0x%x, csum=0x%x, buf=%s\n", - (c1 << 4) + c2, csum & 0xff, buf); - write (remote_desc, "-", 1); - } - -#if 0 - immediate_quit--; -#endif - - write (remote_desc, "+", 1); - - if (kiodebug) - fprintf (stderr,"Packet received :%s\n", buf); -} - -/* The data cache leads to incorrect results because it doesn't know about - volatile variables, thus making it impossible to debug functions which - use hardware registers. Therefore it is #if 0'd out. Effect on - performance is some, for backtraces of functions with a few - arguments each. For functions with many arguments, the stack - frames don't fit in the cache blocks, which makes the cache less - helpful. Disabling the cache is a big performance win for fetching - large structures, because the cache code fetched data in 16-byte - chunks. */ -#if 0 -/* The data cache records all the data read from the remote machine - since the last time it stopped. - - Each cache block holds 16 bytes of data - starting at a multiple-of-16 address. */ - -#define DCACHE_SIZE 64 /* Number of cache blocks */ - -struct dcache_block { - struct dcache_block *next, *last; - unsigned int addr; /* Address for which data is recorded. */ - int data[4]; -}; - -struct dcache_block dcache_free, dcache_valid; - -/* Free all the data cache blocks, thus discarding all cached data. */ - -static void -dcache_flush () -{ - register struct dcache_block *db; - - while ((db = dcache_valid.next) != &dcache_valid) - { - remque (db); - insque (db, &dcache_free); - } -} - -/* - * If addr is present in the dcache, return the address of the block - * containing it. - */ - -struct dcache_block * -dcache_hit (addr) -{ - register struct dcache_block *db; - - if (addr & 3) - abort (); - - /* Search all cache blocks for one that is at this address. */ - db = dcache_valid.next; - while (db != &dcache_valid) - { - if ((addr & 0xfffffff0) == db->addr) - return db; - db = db->next; - } - return NULL; -} - -/* Return the int data at address ADDR in dcache block DC. */ - -int -dcache_value (db, addr) - struct dcache_block *db; - unsigned int addr; -{ - if (addr & 3) - abort (); - return (db->data[(addr>>2)&3]); -} - -/* Get a free cache block, put it on the valid list, - and return its address. The caller should store into the block - the address and data that it describes. */ - -struct dcache_block * -dcache_alloc () -{ - register struct dcache_block *db; - - if ((db = dcache_free.next) == &dcache_free) - /* If we can't get one from the free list, take last valid */ - db = dcache_valid.last; - - remque (db); - insque (db, &dcache_valid); - return (db); -} - -/* Return the contents of the word at address ADDR in the remote machine, - using the data cache. */ - -int -dcache_fetch (addr) - CORE_ADDR addr; -{ - register struct dcache_block *db; - - db = dcache_hit (addr); - if (db == 0) - { - db = dcache_alloc (); - remote_read_bytes (addr & ~0xf, db->data, 16); - db->addr = addr & ~0xf; - } - return (dcache_value (db, addr)); -} - -/* Write the word at ADDR both in the data cache and in the remote machine. */ - -dcache_poke (addr, data) - CORE_ADDR addr; - int data; -{ - register struct dcache_block *db; - - /* First make sure the word is IN the cache. DB is its cache block. */ - db = dcache_hit (addr); - if (db == 0) - { - db = dcache_alloc (); - remote_read_bytes (addr & ~0xf, db->data, 16); - db->addr = addr & ~0xf; - } - - /* Modify the word in the cache. */ - db->data[(addr>>2)&3] = data; - - /* Send the changed word. */ - remote_write_bytes (addr, &data, 4); -} - -/* Initialize the data cache. */ - -dcache_init () -{ - register i; - register struct dcache_block *db; - - db = (struct dcache_block *) xmalloc (sizeof (struct dcache_block) * - DCACHE_SIZE); - dcache_free.next = dcache_free.last = &dcache_free; - dcache_valid.next = dcache_valid.last = &dcache_valid; - for (i=0;i<DCACHE_SIZE;i++,db++) - insque (db, &dcache_free); -} -#endif /* 0 */ - -/* Define the target subroutine names */ - -struct target_ops remote_ops = { - "remote", "Remote serial target in gdb-specific protocol", - "Use a remote computer via a serial line, using a gdb-specific protocol.\n\ -Specify the serial device it is connected to (e.g. /dev/ttya).", - remote_open, remote_close, - 0, remote_detach, remote_resume, remote_wait, /* attach */ - remote_fetch_registers, remote_store_registers, - remote_prepare_to_store, 0, 0, /* conv_from, conv_to */ - remote_xfer_inferior_memory, remote_files_info, - 0, 0, /* insert_breakpoint, remove_breakpoint, */ - 0, 0, 0, 0, 0, /* Terminal crud */ - 0, /* kill */ - 0, add_syms_addr_command, /* load */ - call_function_by_hand, - 0, /* lookup_symbol */ - 0, 0, /* create_inferior FIXME, mourn_inferior FIXME */ - process_stratum, 0, /* next */ - 1, 1, 1, 1, 1, /* all mem, mem, stack, regs, exec */ - OPS_MAGIC, /* Always the last thing */ -}; - -void -_initialize_remote () -{ - add_target (&remote_ops); -} |