This is the mail archive of the gdb-patches@sourceware.cygnus.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

patch: convert gdbserver to autoconf, add netbsd/i386 support


Some time ago I submitted a patch that converted gdbserver to autoconf
with the following note.

    "While adding support for NetBSD systems to gdbserver, I noticed that
    gdbserver's configure.in had some significant errors in addition to
    still being Cygnus configure.

    The first problem was if ../config/${hostfile} was present, it would
    be linked to xm.h instead of ../config/${gdb_host_cpu}/${hostfile}.
    The same with targetfile and nativefile.

    GDB used to do the same thing three or four years back, but that was
    changed so processor specific headers could inherit from OS specific
    headers for those OS's that supported multiple architectures (at the
    time, lynxos and possibly svr4.  Now there is *bsd and linux as well).

    The second problem was that the names of the host, target, and native
    headers were extracted from the host and target makefile stub with awk
    and assumed that the variable definitions would have whitespace follow-
    ing the equals sign in the assignment.  This restriction was lifted for
    GDB years ago as well, so there is a some risk that *.mh and *.mt files
    that work fine with GDB won't work with gdbserver.

    And by the time I fixed the above issues, it seemed trivial enough to
    go the next step and convert everything to use autoconf.  The enclosed
    patch contains those changes."

My plan was to first do the autoconf conversion, and then submit a
follow up patch that added netbsd support.

Unfortunately, that patch had some problems, and although Stan and I
bounced around some email trying to get them resolved, it eventually
dropped to the bottom of our respective piles.

I picked up the pieces earlier in the week.  I did both the autoconf
conversion and the netbsd/i386 support together, which should ensure
that the end result will work this time.  Support for most of the
other netbsd ports will follow soon.

I used autoconf 2.12 to generate the gdbserver/configure script.  If
there's a more official version, feel free to re-generate it.

        --jtc


2000-02-10  J.T. Conklin  <jtc@redback.com>

	* config/i386/nbsd.mt (GDBSERVER_DEPFILES): Add low-nbsd.o
	* configure.tgt (i[3456]86-*-netbsd*): add gdbserver to
 	configdirs.
	* gdbserver/low-nbsd.c: New file.
	
	* gdbserver/Makefile.in: convert to autoconf.
	* gdbserver/configure.in: likewise.
	* gdbserver/configure: generate.


Index: gdb/gdb/configure.tgt
diff -c gdb/gdb/configure.tgt:1.13 gdb/gdb/configure.tgt:1.14
*** gdb/gdb/configure.tgt:1.13	Thu Feb 10 18:35:17 2000
--- gdb/gdb/configure.tgt	Thu Feb 10 18:35:17 2000
***************
*** 86,92 ****
  i[3456]86-*-aix*)	gdb_target=i386aix ;;
  i[3456]86-*-bsd*)	gdb_target=i386bsd ;;
  i[3456]86-*-freebsd*)	gdb_target=fbsd ;;
! i[3456]86-*-netbsd*)	gdb_target=nbsd ;;
  i[3456]86-*-os9k)	gdb_target=i386os9k ;;
  i[3456]86-*-go32*)	gdb_target=i386aout ;;
  i[3456]86-*-msdosdjgpp*) gdb_target=go32 ;;
--- 86,93 ----
  i[3456]86-*-aix*)	gdb_target=i386aix ;;
  i[3456]86-*-bsd*)	gdb_target=i386bsd ;;
  i[3456]86-*-freebsd*)	gdb_target=fbsd ;;
! i[3456]86-*-netbsd*)	gdb_target=nbsd 
! 		configdirs="${configdirs} gdbserver" ;;
  i[3456]86-*-os9k)	gdb_target=i386os9k ;;
  i[3456]86-*-go32*)	gdb_target=i386aout ;;
  i[3456]86-*-msdosdjgpp*) gdb_target=go32 ;;
Index: gdb/gdb/config/i386/nbsd.mt
diff -c gdb/gdb/config/i386/nbsd.mt:1.1.1.1 gdb/gdb/config/i386/nbsd.mt:1.2
*** gdb/gdb/config/i386/nbsd.mt:1.1.1.1	Wed May 19 10:39:05 1999
--- gdb/gdb/config/i386/nbsd.mt	Thu Feb 10 18:35:26 2000
***************
*** 1,3 ****
--- 1,5 ----
  # Target: Intel 386 running NetBSD
  TDEPFILES= i386-tdep.o i387-tdep.o solib.o
  TM_FILE= tm-nbsd.h
+ 
+ GDBSERVER_DEPFILES= low-nbsd.o
Index: gdb/gdb/gdbserver/Makefile.in
diff -c gdb/gdb/gdbserver/Makefile.in:1.1.1.3 gdb/gdb/gdbserver/Makefile.in:1.2
*** gdb/gdb/gdbserver/Makefile.in:1.1.1.3	Thu Nov 11 16:51:10 1999
--- gdb/gdb/gdbserver/Makefile.in	Thu Feb 10 18:35:36 2000
***************
*** 1,4 ****
! #Copyright 1989, 90, 91, 92, 93, 94, 95, 96, 1997
  #Free Software Foundation, Inc.
  
  # This file is part of GDB.
--- 1,4 ----
! #Copyright 1989, 90, 91, 92, 93, 94, 95, 96, 97, 99, 2000
  #Free Software Foundation, Inc.
  
  # This file is part of GDB.
***************
*** 17,32 ****
  # along with this program; if not, write to the Free Software
  # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  
! prefix = /usr/local
  
! program_transform_name =
! exec_prefix = $(prefix)
! bindir = $(exec_prefix)/bin
! libdir = $(exec_prefix)/lib
  tooldir = $(libdir)/$(target_alias)
  
! datadir = $(prefix)/share
! mandir = $(prefix)/man
  man1dir = $(mandir)/man1
  man2dir = $(mandir)/man2
  man3dir = $(mandir)/man3
--- 17,34 ----
  # along with this program; if not, write to the Free Software
  # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  
! prefix = @prefix@
! exec_prefix = @exec_prefix@
  
! host_alias = @host_alias@
! target_alias = @target_alias@
! program_transform_name = @program_transform_name@
! bindir = @bindir@
! libdir = @libdir@
  tooldir = $(libdir)/$(target_alias)
  
! datadir = @datadir@
! mandir = @mandir@
  man1dir = $(mandir)/man1
  man2dir = $(mandir)/man2
  man3dir = $(mandir)/man3
***************
*** 36,50 ****
  man7dir = $(mandir)/man7
  man8dir = $(mandir)/man8
  man9dir = $(mandir)/man9
! infodir = $(prefix)/info
  htmldir = $(prefix)/html
! includedir = $(prefix)/include
  
  SHELL = /bin/sh
  
! INSTALL = `cd $(srcdir)/../..;pwd`/install-sh -c
! INSTALL_PROGRAM = $(INSTALL)
! INSTALL_DATA = $(INSTALL)
  
  AR = ar
  AR_FLAGS = qv
--- 38,52 ----
  man7dir = $(mandir)/man7
  man8dir = $(mandir)/man8
  man9dir = $(mandir)/man9
! infodir = @infodir@
  htmldir = $(prefix)/html
! includedir = @includedir@
  
  SHELL = /bin/sh
  
! INSTALL = @INSTALL@
! INSTALL_PROGRAM = @INSTALL_PROGRAM@
! INSTALL_DATA = @INSTALL_DATA@
  
  AR = ar
  AR_FLAGS = qv
***************
*** 61,67 ****
  
  # Directory containing source files.  Don't clean up the spacing,
  # this exact string is matched for by the "configure" script.
! srcdir = .
  
  # It is also possible that you will need to add -I/usr/include/sys to the
  # CFLAGS section if your system doesn't have fcntl.h in /usr/include (which 
--- 63,70 ----
  
  # Directory containing source files.  Don't clean up the spacing,
  # this exact string is matched for by the "configure" script.
! srcdir = @srcdir@
! VPATH = @srcdir@
  
  # It is also possible that you will need to add -I/usr/include/sys to the
  # CFLAGS section if your system doesn't have fcntl.h in /usr/include (which 
***************
*** 117,130 ****
  LINTFLAGS= $(BFD_CFLAGS)
  
  # Host and target-dependent makefile fragments come in here.
! ####
  # End of host and target-dependent makefile fragments
  
  # All source files that go into linking GDB remote server.
  
! SFILES = $(srcdir)/low-lynx.c $(srcdir)/low-sparc.c $(srcdir)/low-sun3.c \
! 	 $(srcdir)/low-hppabsd.c \
! 	 $(srcdir)/utils.c $(srcdir)/server.c $(srcdir)/remote-utils.c
  
  DEPFILES = $(GDBSERVER_DEPFILES)
  
--- 120,135 ----
  LINTFLAGS= $(BFD_CFLAGS)
  
  # Host and target-dependent makefile fragments come in here.
! @host_makefile_frag@
! @target_makefile_frag@
  # End of host and target-dependent makefile fragments
  
  # All source files that go into linking GDB remote server.
  
! SFILES = $(srcdir)/low-hppabsd.c $(srcdir)/low-linux.c $(srcdir)/low-lynx.c \
! 	 $(srcdir)/low-nbsd.c $(srcdir)/low-sim.c $(srcdir)/low-sparc.c \
! 	 $(srcdir)/low-sun3.c $(srcdir)/utils.c $(srcdir)/server.c \
! 	 $(srcdir)/remote-utils.c
  
  DEPFILES = $(GDBSERVER_DEPFILES)
  
***************
*** 175,184 ****
  	${CC-LD} $(GLOBAL_CFLAGS) $(LDFLAGS) -o gdbreplay gdbreplay.o \
  	  $(XM_CLIBS)
  
- config.status:
- 	@echo "You must configure gdbserver.  Look at the README file for details."
- 	@false
- 
  # Put the proper machine-specific files first, so M-. on a machine
  # specific routine gets the one for the correct machine.
  # The xyzzy stuff below deals with empty DEPFILES
--- 180,185 ----
***************
*** 196,202 ****
  
  clean:
  	rm -f *.o ${ADD_FILES} *~
! 	rm -f gdbserver core make.log
  
  distclean: clean
  	rm -f nm.h tm.h xm.h config.status
--- 197,203 ----
  
  clean:
  	rm -f *.o ${ADD_FILES} *~
! 	rm -f gdbserver gdbreplay core make.log
  
  distclean: clean
  	rm -f nm.h tm.h xm.h config.status
***************
*** 208,216 ****
  
  STAGESTUFF=${OBS} ${TSOBS} ${NTSOBS} ${ADD_FILES} init.c init.o version.c gdb
  
! Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) $(target_makefile_frag)
  	$(SHELL) ./config.status
  
  force:
  
  version.c: Makefile
--- 209,220 ----
  
  STAGESTUFF=${OBS} ${TSOBS} ${NTSOBS} ${ADD_FILES} init.c init.o version.c gdb
  
! Makefile: Makefile.in config.status @frags@
  	$(SHELL) ./config.status
  
+ config.status: configure
+ 	$(SHELL) ./config.status --recheck
+ 
  force:
  
  version.c: Makefile
***************
*** 236,241 ****
--- 240,246 ----
  remote-utils.o : ${srcdir}/remote-utils.c ${srcdir}/server.h
  low-linux.o : ${srcdir}/low-linux.c ${srcdir}/server.h
  low-lynx.o : ${srcdir}/low-lynx.c ${srcdir}/server.h
+ low-nbsd.o : ${srcdir}/low-nbsd.c ${srcdir}/server.h
  low-sim.o : ${srcdir}/low-sim.c ${srcdir}/server.h
  low-sparc.o : $(srcdir)/low-sparc.c $(srcdir)/server.h
  low-sun3.o : $(srcdir)/low-sun3.c $(srcdir)/server.h
Index: gdb/gdb/gdbserver/configure
diff -c /dev/null gdb/gdb/gdbserver/configure:1.1
*** /dev/null	Thu Feb 10 18:35:36 2000
--- gdb/gdb/gdbserver/configure	Thu Feb 10 18:35:36 2000
***************
*** 0 ****
--- 1,1078 ----
+ #! /bin/sh
+ 
+ # Guess values for system-dependent variables and create Makefiles.
+ # Generated automatically using autoconf version 2.12 
+ # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+ #
+ # This configure script is free software; the Free Software Foundation
+ # gives unlimited permission to copy, distribute and modify it.
+ 
+ # Defaults:
+ ac_help=
+ ac_default_prefix=/usr/local
+ # Any additions from configure.in:
+ 
+ # Initialize some variables set by options.
+ # The variables have the same names as the options, with
+ # dashes changed to underlines.
+ build=NONE
+ cache_file=./config.cache
+ exec_prefix=NONE
+ host=NONE
+ no_create=
+ nonopt=NONE
+ no_recursion=
+ prefix=NONE
+ program_prefix=NONE
+ program_suffix=NONE
+ program_transform_name=s,x,x,
+ silent=
+ site=
+ srcdir=
+ target=NONE
+ verbose=
+ x_includes=NONE
+ x_libraries=NONE
+ bindir='${exec_prefix}/bin'
+ sbindir='${exec_prefix}/sbin'
+ libexecdir='${exec_prefix}/libexec'
+ datadir='${prefix}/share'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
+ libdir='${exec_prefix}/lib'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+ infodir='${prefix}/info'
+ mandir='${prefix}/man'
+ 
+ # Initialize some other variables.
+ subdirs=
+ MFLAGS= MAKEFLAGS=
+ # Maximum number of lines to put in a shell here document.
+ ac_max_here_lines=12
+ 
+ ac_prev=
+ for ac_option
+ do
+ 
+   # If the previous option needs an argument, assign it.
+   if test -n "$ac_prev"; then
+     eval "$ac_prev=\$ac_option"
+     ac_prev=
+     continue
+   fi
+ 
+   case "$ac_option" in
+   -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+   *) ac_optarg= ;;
+   esac
+ 
+   # Accept the important Cygnus configure options, so we can diagnose typos.
+ 
+   case "$ac_option" in
+ 
+   -bindir | --bindir | --bindi | --bind | --bin | --bi)
+     ac_prev=bindir ;;
+   -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+     bindir="$ac_optarg" ;;
+ 
+   -build | --build | --buil | --bui | --bu)
+     ac_prev=build ;;
+   -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+     build="$ac_optarg" ;;
+ 
+   -cache-file | --cache-file | --cache-fil | --cache-fi \
+   | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+     ac_prev=cache_file ;;
+   -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+   | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+     cache_file="$ac_optarg" ;;
+ 
+   -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+     ac_prev=datadir ;;
+   -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+   | --da=*)
+     datadir="$ac_optarg" ;;
+ 
+   -disable-* | --disable-*)
+     ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+     # Reject names that are not valid shell variable names.
+     if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+       { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+     fi
+     ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+     eval "enable_${ac_feature}=no" ;;
+ 
+   -enable-* | --enable-*)
+     ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+     # Reject names that are not valid shell variable names.
+     if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+       { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+     fi
+     ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+     case "$ac_option" in
+       *=*) ;;
+       *) ac_optarg=yes ;;
+     esac
+     eval "enable_${ac_feature}='$ac_optarg'" ;;
+ 
+   -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+   | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+   | --exec | --exe | --ex)
+     ac_prev=exec_prefix ;;
+   -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+   | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+   | --exec=* | --exe=* | --ex=*)
+     exec_prefix="$ac_optarg" ;;
+ 
+   -gas | --gas | --ga | --g)
+     # Obsolete; use --with-gas.
+     with_gas=yes ;;
+ 
+   -help | --help | --hel | --he)
+     # Omit some internal or obsolete options to make the list less imposing.
+     # This message is too long to be a string in the A/UX 3.1 sh.
+     cat << EOF
+ Usage: configure [options] [host]
+ Options: [defaults in brackets after descriptions]
+ Configuration:
+   --cache-file=FILE       cache test results in FILE
+   --help                  print this message
+   --no-create             do not create output files
+   --quiet, --silent       do not print \`checking...' messages
+   --version               print the version of autoconf that created configure
+ Directory and file names:
+   --prefix=PREFIX         install architecture-independent files in PREFIX
+                           [$ac_default_prefix]
+   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                           [same as prefix]
+   --bindir=DIR            user executables in DIR [EPREFIX/bin]
+   --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
+   --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
+   --datadir=DIR           read-only architecture-independent data in DIR
+                           [PREFIX/share]
+   --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
+   --sharedstatedir=DIR    modifiable architecture-independent data in DIR
+                           [PREFIX/com]
+   --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
+   --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
+   --includedir=DIR        C header files in DIR [PREFIX/include]
+   --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
+   --infodir=DIR           info documentation in DIR [PREFIX/info]
+   --mandir=DIR            man documentation in DIR [PREFIX/man]
+   --srcdir=DIR            find the sources in DIR [configure dir or ..]
+   --program-prefix=PREFIX prepend PREFIX to installed program names
+   --program-suffix=SUFFIX append SUFFIX to installed program names
+   --program-transform-name=PROGRAM
+                           run sed PROGRAM on installed program names
+ EOF
+     cat << EOF
+ Host type:
+   --build=BUILD           configure for building on BUILD [BUILD=HOST]
+   --host=HOST             configure for HOST [guessed]
+   --target=TARGET         configure for TARGET [TARGET=HOST]
+ Features and packages:
+   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+   --x-includes=DIR        X include files are in DIR
+   --x-libraries=DIR       X library files are in DIR
+ EOF
+     if test -n "$ac_help"; then
+       echo "--enable and --with options recognized:$ac_help"
+     fi
+     exit 0 ;;
+ 
+   -host | --host | --hos | --ho)
+     ac_prev=host ;;
+   -host=* | --host=* | --hos=* | --ho=*)
+     host="$ac_optarg" ;;
+ 
+   -includedir | --includedir | --includedi | --included | --include \
+   | --includ | --inclu | --incl | --inc)
+     ac_prev=includedir ;;
+   -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+   | --includ=* | --inclu=* | --incl=* | --inc=*)
+     includedir="$ac_optarg" ;;
+ 
+   -infodir | --infodir | --infodi | --infod | --info | --inf)
+     ac_prev=infodir ;;
+   -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+     infodir="$ac_optarg" ;;
+ 
+   -libdir | --libdir | --libdi | --libd)
+     ac_prev=libdir ;;
+   -libdir=* | --libdir=* | --libdi=* | --libd=*)
+     libdir="$ac_optarg" ;;
+ 
+   -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+   | --libexe | --libex | --libe)
+     ac_prev=libexecdir ;;
+   -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+   | --libexe=* | --libex=* | --libe=*)
+     libexecdir="$ac_optarg" ;;
+ 
+   -localstatedir | --localstatedir | --localstatedi | --localstated \
+   | --localstate | --localstat | --localsta | --localst \
+   | --locals | --local | --loca | --loc | --lo)
+     ac_prev=localstatedir ;;
+   -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+   | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+   | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+     localstatedir="$ac_optarg" ;;
+ 
+   -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+     ac_prev=mandir ;;
+   -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+     mandir="$ac_optarg" ;;
+ 
+   -nfp | --nfp | --nf)
+     # Obsolete; use --without-fp.
+     with_fp=no ;;
+ 
+   -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+   | --no-cr | --no-c)
+     no_create=yes ;;
+ 
+   -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+   | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+     no_recursion=yes ;;
+ 
+   -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+   | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+   | --oldin | --oldi | --old | --ol | --o)
+     ac_prev=oldincludedir ;;
+   -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+   | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+   | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+     oldincludedir="$ac_optarg" ;;
+ 
+   -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+     ac_prev=prefix ;;
+   -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+     prefix="$ac_optarg" ;;
+ 
+   -program-prefix | --program-prefix | --program-prefi | --program-pref \
+   | --program-pre | --program-pr | --program-p)
+     ac_prev=program_prefix ;;
+   -program-prefix=* | --program-prefix=* | --program-prefi=* \
+   | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+     program_prefix="$ac_optarg" ;;
+ 
+   -program-suffix | --program-suffix | --program-suffi | --program-suff \
+   | --program-suf | --program-su | --program-s)
+     ac_prev=program_suffix ;;
+   -program-suffix=* | --program-suffix=* | --program-suffi=* \
+   | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+     program_suffix="$ac_optarg" ;;
+ 
+   -program-transform-name | --program-transform-name \
+   | --program-transform-nam | --program-transform-na \
+   | --program-transform-n | --program-transform- \
+   | --program-transform | --program-transfor \
+   | --program-transfo | --program-transf \
+   | --program-trans | --program-tran \
+   | --progr-tra | --program-tr | --program-t)
+     ac_prev=program_transform_name ;;
+   -program-transform-name=* | --program-transform-name=* \
+   | --program-transform-nam=* | --program-transform-na=* \
+   | --program-transform-n=* | --program-transform-=* \
+   | --program-transform=* | --program-transfor=* \
+   | --program-transfo=* | --program-transf=* \
+   | --program-trans=* | --program-tran=* \
+   | --progr-tra=* | --program-tr=* | --program-t=*)
+     program_transform_name="$ac_optarg" ;;
+ 
+   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+   | -silent | --silent | --silen | --sile | --sil)
+     silent=yes ;;
+ 
+   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+     ac_prev=sbindir ;;
+   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+   | --sbi=* | --sb=*)
+     sbindir="$ac_optarg" ;;
+ 
+   -sharedstatedir | --sharedstatedir | --sharedstatedi \
+   | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+   | --sharedst | --shareds | --shared | --share | --shar \
+   | --sha | --sh)
+     ac_prev=sharedstatedir ;;
+   -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+   | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+   | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+   | --sha=* | --sh=*)
+     sharedstatedir="$ac_optarg" ;;
+ 
+   -site | --site | --sit)
+     ac_prev=site ;;
+   -site=* | --site=* | --sit=*)
+     site="$ac_optarg" ;;
+ 
+   -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+     ac_prev=srcdir ;;
+   -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+     srcdir="$ac_optarg" ;;
+ 
+   -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+   | --syscon | --sysco | --sysc | --sys | --sy)
+     ac_prev=sysconfdir ;;
+   -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+   | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+     sysconfdir="$ac_optarg" ;;
+ 
+   -target | --target | --targe | --targ | --tar | --ta | --t)
+     ac_prev=target ;;
+   -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+     target="$ac_optarg" ;;
+ 
+   -v | -verbose | --verbose | --verbos | --verbo | --verb)
+     verbose=yes ;;
+ 
+   -version | --version | --versio | --versi | --vers)
+     echo "configure generated by autoconf version 2.12"
+     exit 0 ;;
+ 
+   -with-* | --with-*)
+     ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+     # Reject names that are not valid shell variable names.
+     if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+       { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+     fi
+     ac_package=`echo $ac_package| sed 's/-/_/g'`
+     case "$ac_option" in
+       *=*) ;;
+       *) ac_optarg=yes ;;
+     esac
+     eval "with_${ac_package}='$ac_optarg'" ;;
+ 
+   -without-* | --without-*)
+     ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+     # Reject names that are not valid shell variable names.
+     if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+       { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+     fi
+     ac_package=`echo $ac_package| sed 's/-/_/g'`
+     eval "with_${ac_package}=no" ;;
+ 
+   --x)
+     # Obsolete; use --with-x.
+     with_x=yes ;;
+ 
+   -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+   | --x-incl | --x-inc | --x-in | --x-i)
+     ac_prev=x_includes ;;
+   -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+   | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+     x_includes="$ac_optarg" ;;
+ 
+   -x-libraries | --x-libraries | --x-librarie | --x-librari \
+   | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+     ac_prev=x_libraries ;;
+   -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+     x_libraries="$ac_optarg" ;;
+ 
+   -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+     ;;
+ 
+   *)
+     if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+       echo "configure: warning: $ac_option: invalid host type" 1>&2
+     fi
+     if test "x$nonopt" != xNONE; then
+       { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+     fi
+     nonopt="$ac_option"
+     ;;
+ 
+   esac
+ done
+ 
+ if test -n "$ac_prev"; then
+   { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+ fi
+ 
+ trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+ 
+ # File descriptor usage:
+ # 0 standard input
+ # 1 file creation
+ # 2 errors and warnings
+ # 3 some systems may open it to /dev/tty
+ # 4 used on the Kubota Titan
+ # 6 checking for... messages and results
+ # 5 compiler messages saved in config.log
+ if test "$silent" = yes; then
+   exec 6>/dev/null
+ else
+   exec 6>&1
+ fi
+ exec 5>./config.log
+ 
+ echo "\
+ This file contains any messages produced by compilers while
+ running configure, to aid debugging if configure makes a mistake.
+ " 1>&5
+ 
+ # Strip out --no-create and --no-recursion so they do not pile up.
+ # Also quote any args containing shell metacharacters.
+ ac_configure_args=
+ for ac_arg
+ do
+   case "$ac_arg" in
+   -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+   | --no-cr | --no-c) ;;
+   -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+   | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+   *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+   ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+   *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+   esac
+ done
+ 
+ # NLS nuisances.
+ # Only set these to C if already set.  These must not be set unconditionally
+ # because not all systems understand e.g. LANG=C (notably SCO).
+ # Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+ # Non-C LC_CTYPE values break the ctype check.
+ if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+ if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+ if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+ if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
+ 
+ # confdefs.h avoids OS command line length limits that DEFS can exceed.
+ rm -rf conftest* confdefs.h
+ # AIX cpp loses on an empty file, so make sure it contains at least a newline.
+ echo > confdefs.h
+ 
+ # A filename unique to this package, relative to the directory that
+ # configure is in, which we can look for to find out if srcdir is correct.
+ ac_unique_file=server.c
+ 
+ # Find the source files, if location was not specified.
+ if test -z "$srcdir"; then
+   ac_srcdir_defaulted=yes
+   # Try the directory containing this script, then its parent.
+   ac_prog=$0
+   ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+   test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+   srcdir=$ac_confdir
+   if test ! -r $srcdir/$ac_unique_file; then
+     srcdir=..
+   fi
+ else
+   ac_srcdir_defaulted=no
+ fi
+ if test ! -r $srcdir/$ac_unique_file; then
+   if test "$ac_srcdir_defaulted" = yes; then
+     { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+   else
+     { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+   fi
+ fi
+ srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+ 
+ # Prefer explicitly selected file to automatically selected ones.
+ if test -z "$CONFIG_SITE"; then
+   if test "x$prefix" != xNONE; then
+     CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+   else
+     CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+   fi
+ fi
+ for ac_site_file in $CONFIG_SITE; do
+   if test -r "$ac_site_file"; then
+     echo "loading site script $ac_site_file"
+     . "$ac_site_file"
+   fi
+ done
+ 
+ if test -r "$cache_file"; then
+   echo "loading cache $cache_file"
+   . $cache_file
+ else
+   echo "creating cache $cache_file"
+   > $cache_file
+ fi
+ 
+ ac_ext=c
+ # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ ac_cpp='$CPP $CPPFLAGS'
+ ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ cross_compiling=$ac_cv_prog_cc_cross
+ 
+ if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+   # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+   if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+     ac_n= ac_c='
+ ' ac_t='	'
+   else
+     ac_n=-n ac_c= ac_t=
+   fi
+ else
+   ac_n= ac_c='\c' ac_t=
+ fi
+ 
+ 
+ 
+ ac_aux_dir=
+ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+   if test -f $ac_dir/install-sh; then
+     ac_aux_dir=$ac_dir
+     ac_install_sh="$ac_aux_dir/install-sh -c"
+     break
+   elif test -f $ac_dir/install.sh; then
+     ac_aux_dir=$ac_dir
+     ac_install_sh="$ac_aux_dir/install.sh -c"
+     break
+   fi
+ done
+ if test -z "$ac_aux_dir"; then
+   { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+ fi
+ ac_config_guess=$ac_aux_dir/config.guess
+ ac_config_sub=$ac_aux_dir/config.sub
+ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
+ 
+ 
+ # Do some error checking and defaulting for the host and target type.
+ # The inputs are:
+ #    configure --host=HOST --target=TARGET --build=BUILD NONOPT
+ #
+ # The rules are:
+ # 1. You are not allowed to specify --host, --target, and nonopt at the
+ #    same time.
+ # 2. Host defaults to nonopt.
+ # 3. If nonopt is not specified, then host defaults to the current host,
+ #    as determined by config.guess.
+ # 4. Target and build default to nonopt.
+ # 5. If nonopt is not specified, then target and build default to host.
+ 
+ # The aliases save the names the user supplied, while $host etc.
+ # will get canonicalized.
+ case $host---$target---$nonopt in
+ NONE---*---* | *---NONE---* | *---*---NONE) ;;
+ *) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
+ esac
+ 
+ 
+ # Make sure we can run config.sub.
+ if $ac_config_sub sun4 >/dev/null 2>&1; then :
+ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
+ fi
+ 
+ echo $ac_n "checking host system type""... $ac_c" 1>&6
+ echo "configure:570: checking host system type" >&5
+ 
+ host_alias=$host
+ case "$host_alias" in
+ NONE)
+   case $nonopt in
+   NONE)
+     if host_alias=`$ac_config_guess`; then :
+     else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+     fi ;;
+   *) host_alias=$nonopt ;;
+   esac ;;
+ esac
+ 
+ host=`$ac_config_sub $host_alias`
+ host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+ host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+ echo "$ac_t""$host" 1>&6
+ 
+ echo $ac_n "checking target system type""... $ac_c" 1>&6
+ echo "configure:591: checking target system type" >&5
+ 
+ target_alias=$target
+ case "$target_alias" in
+ NONE)
+   case $nonopt in
+   NONE) target_alias=$host_alias ;;
+   *) target_alias=$nonopt ;;
+   esac ;;
+ esac
+ 
+ target=`$ac_config_sub $target_alias`
+ target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+ target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+ echo "$ac_t""$target" 1>&6
+ 
+ echo $ac_n "checking build system type""... $ac_c" 1>&6
+ echo "configure:609: checking build system type" >&5
+ 
+ build_alias=$build
+ case "$build_alias" in
+ NONE)
+   case $nonopt in
+   NONE) build_alias=$host_alias ;;
+   *) build_alias=$nonopt ;;
+   esac ;;
+ esac
+ 
+ build=`$ac_config_sub $build_alias`
+ build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+ build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+ build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+ echo "$ac_t""$build" 1>&6
+ 
+ test "$host_alias" != "$target_alias" &&
+   test "$program_prefix$program_suffix$program_transform_name" = \
+     NONENONEs,x,x, &&
+   program_prefix=${target_alias}-
+ 
+ # Find a good install program.  We prefer a C program (faster),
+ # so one script is as good as another.  But avoid the broken or
+ # incompatible versions:
+ # SysV /etc/install, /usr/sbin/install
+ # SunOS /usr/etc/install
+ # IRIX /sbin/install
+ # AIX /bin/install
+ # AFS /usr/afsws/bin/install, which mishandles nonexistent args
+ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+ # ./install, which can be erroneously created by make from ./install.sh.
+ echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
+ echo "configure:642: checking for a BSD compatible install" >&5
+ if test -z "$INSTALL"; then
+ if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
+   echo $ac_n "(cached) $ac_c" 1>&6
+ else
+     IFS="${IFS= 	}"; ac_save_IFS="$IFS"; IFS="${IFS}:"
+   for ac_dir in $PATH; do
+     # Account for people who put trailing slashes in PATH elements.
+     case "$ac_dir/" in
+     /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
+     *)
+       # OSF1 and SCO ODT 3.0 have their own names for install.
+       for ac_prog in ginstall installbsd scoinst install; do
+         if test -f $ac_dir/$ac_prog; then
+ 	  if test $ac_prog = install &&
+             grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
+ 	    # AIX install.  It has an incompatible calling convention.
+ 	    # OSF/1 installbsd also uses dspmsg, but is usable.
+ 	    :
+ 	  else
+ 	    ac_cv_path_install="$ac_dir/$ac_prog -c"
+ 	    break 2
+ 	  fi
+ 	fi
+       done
+       ;;
+     esac
+   done
+   IFS="$ac_save_IFS"
+ 
+ fi
+   if test "${ac_cv_path_install+set}" = set; then
+     INSTALL="$ac_cv_path_install"
+   else
+     # As a last resort, use the slow shell script.  We don't cache a
+     # path for INSTALL within a source directory, because that will
+     # break other packages using the cache if that directory is
+     # removed, or if the path is relative.
+     INSTALL="$ac_install_sh"
+   fi
+ fi
+ echo "$ac_t""$INSTALL" 1>&6
+ 
+ # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+ # It thinks the first close brace ends the variable substitution.
+ test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+ 
+ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+ 
+ 
+ . ${srcdir}/../configure.host
+ 
+ . ${srcdir}/../configure.tgt
+ 
+ frags=
+ host_makefile_frag=${srcdir}/../config/${gdb_host_cpu}/${gdb_host}.mh
+ if test ! -f ${host_makefile_frag}; then
+ 	{ echo "configure: error: "*** GDB remote does not support host ${host}"" 1>&2; exit 1; }
+ fi
+ frags="$frags $host_makefile_frag"
+ 
+ target_makefile_frag=${srcdir}/../config/${gdb_target_cpu}/${gdb_target}.mt
+ if test ! -f ${target_makefile_frag}; then
+ 	{ echo "configure: error: "*** GDB remote does not support target ${target}"" 1>&2; exit 1; }
+ fi
+ frags="$frags $target_makefile_frag"
+ 
+ 
+ 
+ 
+ 
+ hostfile=`sed -n '
+ s/XM_FILE[	 ]*=[	 ]*\([^	 ]*\)/\1/p
+ ' ${host_makefile_frag}`
+ 
+ targetfile=`sed -n '
+ s/TM_FILE[	 ]*=[	 ]*\([^	 ]*\)/\1/p
+ ' ${target_makefile_frag}`
+ 
+ if test "${target}" = "${host}"; then
+ nativefile=`sed -n '
+ s/NAT_FILE[	 ]*=[	 ]*\([^	 ]*\)/\1/p
+ ' ${host_makefile_frag}`
+ fi
+ 
+ # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
+ # (NAT_FILE) is not set in the ?config/* file, we don't make the
+ # corresponding links.  But we have to remove the xm.h files and tm.h
+ # files anyway, e.g. when switching from "configure host" to
+ # "configure none".
+ 
+ files=
+ links=
+ rm -f xm.h
+ rm -f ser-hardwire.c
+ if test "${hostfile}" != ""; then
+ 	files="${files} ../config/${gdb_host_cpu}/${hostfile}"
+ 	links="${links} xm.h"
+ fi
+ rm -f tm.h
+ if test "${targetfile}" != ""; then
+ 	files="${files} ../config/${gdb_target_cpu}/${targetfile}"
+ 	links="${links} tm.h"
+ fi
+ rm -f nm.h
+ if test "${nativefile}" != ""; then
+ 	files="${files} ../config/${gdb_host_cpu}/${nativefile}"
+ 	links="${links} nm.h"
+ # temporary scaffolding until all hosts have the host/target/native
+ # split in place.
+ else
+ 	files="${files} ../config/nm-empty.h"
+ 	links="${links} nm.h"
+ fi
+ 
+ 
+ trap '' 1 2 15
+ cat > confcache <<\EOF
+ # This file is a shell script that caches the results of configure
+ # tests run on this system so they can be shared between configure
+ # scripts and configure runs.  It is not useful on other systems.
+ # If it contains results you don't want to keep, you may remove or edit it.
+ #
+ # By default, configure uses ./config.cache as the cache file,
+ # creating it if it does not exist already.  You can give configure
+ # the --cache-file=FILE option to use a different cache file; that is
+ # what configure does when it calls configure scripts in
+ # subdirectories, so they share the cache.
+ # Giving --cache-file=/dev/null disables caching, for debugging configure.
+ # config.status only pays attention to the cache file if you give it the
+ # --recheck option to rerun configure.
+ #
+ EOF
+ # The following way of writing the cache mishandles newlines in values,
+ # but we know of no workaround that is simple, portable, and efficient.
+ # So, don't put newlines in cache variables' values.
+ # Ultrix sh set writes to stderr and can't be redirected directly,
+ # and sets the high bit in the cache file unless we assign to the vars.
+ (set) 2>&1 |
+   case `(ac_space=' '; set) 2>&1` in
+   *ac_space=\ *)
+     # `set' does not quote correctly, so add quotes (double-quote substitution
+     # turns \\\\ into \\, and sed turns \\ into \).
+     sed -n \
+       -e "s/'/'\\\\''/g" \
+       -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+     ;;
+   *)
+     # `set' quotes correctly as required by POSIX, so do not add quotes.
+     sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+     ;;
+   esac >> confcache
+ if cmp -s $cache_file confcache; then
+   :
+ else
+   if test -w $cache_file; then
+     echo "updating cache $cache_file"
+     cat confcache > $cache_file
+   else
+     echo "not updating unwritable cache $cache_file"
+   fi
+ fi
+ rm -f confcache
+ 
+ trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+ 
+ test "x$prefix" = xNONE && prefix=$ac_default_prefix
+ # Let make expand exec_prefix.
+ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+ 
+ # Any assignment to VPATH causes Sun make to only execute
+ # the first set of double-colon rules, so remove it if not needed.
+ # If there is a colon in the path, we need to keep it.
+ if test "x$srcdir" = x.; then
+   ac_vpsub='/^[ 	]*VPATH[ 	]*=[^:]*$/d'
+ fi
+ 
+ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+ 
+ # Transform confdefs.h into DEFS.
+ # Protect against shell expansion while executing Makefile rules.
+ # Protect against Makefile macro expansion.
+ cat > conftest.defs <<\EOF
+ s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
+ s%[ 	`~#$^&*(){}\\|;'"<>?]%\\&%g
+ s%\[%\\&%g
+ s%\]%\\&%g
+ s%\$%$$%g
+ EOF
+ DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
+ rm -f conftest.defs
+ 
+ 
+ # Without the "./", some shells look in PATH for config.status.
+ : ${CONFIG_STATUS=./config.status}
+ 
+ echo creating $CONFIG_STATUS
+ rm -f $CONFIG_STATUS
+ cat > $CONFIG_STATUS <<EOF
+ #! /bin/sh
+ # Generated automatically by configure.
+ # Run this file to recreate the current configuration.
+ # This directory was configured as follows,
+ # on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+ #
+ # $0 $ac_configure_args
+ #
+ # Compiler output produced by configure, useful for debugging
+ # configure, is in ./config.log if it exists.
+ 
+ ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+ for ac_option
+ do
+   case "\$ac_option" in
+   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+     echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+     exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+   -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+     echo "$CONFIG_STATUS generated by autoconf version 2.12"
+     exit 0 ;;
+   -help | --help | --hel | --he | --h)
+     echo "\$ac_cs_usage"; exit 0 ;;
+   *) echo "\$ac_cs_usage"; exit 1 ;;
+   esac
+ done
+ 
+ ac_given_srcdir=$srcdir
+ ac_given_INSTALL="$INSTALL"
+ 
+ trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+ EOF
+ cat >> $CONFIG_STATUS <<EOF
+ 
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
+  s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
+ $ac_vpsub
+ $extrasub
+ s%@CFLAGS@%$CFLAGS%g
+ s%@CPPFLAGS@%$CPPFLAGS%g
+ s%@CXXFLAGS@%$CXXFLAGS%g
+ s%@DEFS@%$DEFS%g
+ s%@LDFLAGS@%$LDFLAGS%g
+ s%@LIBS@%$LIBS%g
+ s%@exec_prefix@%$exec_prefix%g
+ s%@prefix@%$prefix%g
+ s%@program_transform_name@%$program_transform_name%g
+ s%@bindir@%$bindir%g
+ s%@sbindir@%$sbindir%g
+ s%@libexecdir@%$libexecdir%g
+ s%@datadir@%$datadir%g
+ s%@sysconfdir@%$sysconfdir%g
+ s%@sharedstatedir@%$sharedstatedir%g
+ s%@localstatedir@%$localstatedir%g
+ s%@libdir@%$libdir%g
+ s%@includedir@%$includedir%g
+ s%@oldincludedir@%$oldincludedir%g
+ s%@infodir@%$infodir%g
+ s%@mandir@%$mandir%g
+ s%@host@%$host%g
+ s%@host_alias@%$host_alias%g
+ s%@host_cpu@%$host_cpu%g
+ s%@host_vendor@%$host_vendor%g
+ s%@host_os@%$host_os%g
+ s%@target@%$target%g
+ s%@target_alias@%$target_alias%g
+ s%@target_cpu@%$target_cpu%g
+ s%@target_vendor@%$target_vendor%g
+ s%@target_os@%$target_os%g
+ s%@build@%$build%g
+ s%@build_alias@%$build_alias%g
+ s%@build_cpu@%$build_cpu%g
+ s%@build_vendor@%$build_vendor%g
+ s%@build_os@%$build_os%g
+ s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
+ s%@INSTALL_DATA@%$INSTALL_DATA%g
+ /@host_makefile_frag@/r $host_makefile_frag
+ s%@host_makefile_frag@%%g
+ /@target_makefile_frag@/r $target_makefile_frag
+ s%@target_makefile_frag@%%g
+ s%@frags@%$frags%g
+ 
+ CEOF
+ EOF
+ 
+ cat >> $CONFIG_STATUS <<\EOF
+ 
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ ac_file=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=""
+ while $ac_more_lines; do
+   if test $ac_beg -gt 1; then
+     sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+   else
+     sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+   fi
+   if test ! -s conftest.s$ac_file; then
+     ac_more_lines=false
+     rm -f conftest.s$ac_file
+   else
+     if test -z "$ac_sed_cmds"; then
+       ac_sed_cmds="sed -f conftest.s$ac_file"
+     else
+       ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+     fi
+     ac_file=`expr $ac_file + 1`
+     ac_beg=$ac_end
+     ac_end=`expr $ac_end + $ac_max_sed_cmds`
+   fi
+ done
+ if test -z "$ac_sed_cmds"; then
+   ac_sed_cmds=cat
+ fi
+ EOF
+ 
+ cat >> $CONFIG_STATUS <<EOF
+ 
+ CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
+ EOF
+ cat >> $CONFIG_STATUS <<\EOF
+ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+   # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+   case "$ac_file" in
+   *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+        ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+   *) ac_file_in="${ac_file}.in" ;;
+   esac
+ 
+   # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+ 
+   # Remove last slash and all that follows it.  Not all systems have dirname.
+   ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+   if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+     # The file is in a subdirectory.
+     test ! -d "$ac_dir" && mkdir "$ac_dir"
+     ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+     # A "../" for each directory in $ac_dir_suffix.
+     ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+   else
+     ac_dir_suffix= ac_dots=
+   fi
+ 
+   case "$ac_given_srcdir" in
+   .)  srcdir=.
+       if test -z "$ac_dots"; then top_srcdir=.
+       else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+   /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+   *) # Relative path.
+     srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+     top_srcdir="$ac_dots$ac_given_srcdir" ;;
+   esac
+ 
+   case "$ac_given_INSTALL" in
+   [/$]*) INSTALL="$ac_given_INSTALL" ;;
+   *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
+   esac
+ 
+   echo creating "$ac_file"
+   rm -f "$ac_file"
+   configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+   case "$ac_file" in
+   *Makefile*) ac_comsub="1i\\
+ # $configure_input" ;;
+   *) ac_comsub= ;;
+   esac
+ 
+   ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+   sed -e "$ac_comsub
+ s%@configure_input@%$configure_input%g
+ s%@srcdir@%$srcdir%g
+ s%@top_srcdir@%$top_srcdir%g
+ s%@INSTALL@%$INSTALL%g
+ " $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+ fi; done
+ rm -f conftest.s*
+ 
+ EOF
+ 
+ cat >> $CONFIG_STATUS <<EOF
+ ac_sources="$files"
+ ac_dests="$links"
+ EOF
+ 
+ cat >> $CONFIG_STATUS <<\EOF
+ srcdir=$ac_given_srcdir
+ while test -n "$ac_sources"; do
+   set $ac_dests; ac_dest=$1; shift; ac_dests=$*
+   set $ac_sources; ac_source=$1; shift; ac_sources=$*
+ 
+   echo "linking $srcdir/$ac_source to $ac_dest"
+ 
+   if test ! -r $srcdir/$ac_source; then
+     { echo "configure: error: $srcdir/$ac_source: File not found" 1>&2; exit 1; }
+   fi
+   rm -f $ac_dest
+ 
+   # Make relative symlinks.
+   # Remove last slash and all that follows it.  Not all systems have dirname.
+   ac_dest_dir=`echo $ac_dest|sed 's%/[^/][^/]*$%%'`
+   if test "$ac_dest_dir" != "$ac_dest" && test "$ac_dest_dir" != .; then
+     # The dest file is in a subdirectory.
+     test ! -d "$ac_dest_dir" && mkdir "$ac_dest_dir"
+     ac_dest_dir_suffix="/`echo $ac_dest_dir|sed 's%^\./%%'`"
+     # A "../" for each directory in $ac_dest_dir_suffix.
+     ac_dots=`echo $ac_dest_dir_suffix|sed 's%/[^/]*%../%g'`
+   else
+     ac_dest_dir_suffix= ac_dots=
+   fi
+ 
+   case "$srcdir" in
+   [/$]*) ac_rel_source="$srcdir/$ac_source" ;;
+   *) ac_rel_source="$ac_dots$srcdir/$ac_source" ;;
+   esac
+ 
+   # Make a symlink if possible; otherwise try a hard link.
+   if ln -s $ac_rel_source $ac_dest 2>/dev/null ||
+     ln $srcdir/$ac_source $ac_dest; then :
+   else
+     { echo "configure: error: can not link $ac_dest to $srcdir/$ac_source" 1>&2; exit 1; }
+   fi
+ done
+ EOF
+ cat >> $CONFIG_STATUS <<EOF
+ 
+ EOF
+ cat >> $CONFIG_STATUS <<\EOF
+ 
+ exit 0
+ EOF
+ chmod +x $CONFIG_STATUS
+ rm -fr confdefs* $ac_clean_files
+ test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+ 
Index: gdb/gdb/gdbserver/configure.in
diff -c gdb/gdb/gdbserver/configure.in:1.1.1.1 gdb/gdb/gdbserver/configure.in:1.2
*** gdb/gdb/gdbserver/configure.in:1.1.1.1	Wed May 19 10:39:36 1999
--- gdb/gdb/gdbserver/configure.in	Thu Feb 10 18:35:36 2000
***************
*** 1,46 ****
! srcname="Remote GDB server"
! srctrigger=server.c
! gdb_serial_driver=../ser-unix.c
  
! # per-host:
  
! . ${srcdir}/../configure.host
! 
! echo "gdbserver/configure.in: host is $host, target is $target"
  
! if [ ! -f ${srcdir}/../config/${gdb_host_cpu}/${gdb_host}.mh ]; then
! 	echo '***' "GDB remote does not support host ${host}" 1>&2
! 	exit 1
! fi
  
! #  We really shouldn't depend on there being a space after XM_FILE= ...
! hostfile=`awk '$1 == "XM_FILE=" { print $2 }' <${srcdir}/../config/${gdb_host_cpu}/${gdb_host}.mh`
! 
! # per-target:
  
  . ${srcdir}/../configure.tgt
  
! echo "gdbserver/configure.in: host_cpu is $host_cpu, target_cpu is $target_cpu"
! 
! if [ ! -f ${srcdir}/../config/${gdb_target_cpu}/${gdb_target}.mt ]; then
! 	echo '***' "GDB remote does not support target ${target}" 1>&2
! 	exit 1
! fi
! 
! if [ -z "${removing}" ] ; then
! 	cat ${srcdir}/../config/${gdb_host_cpu}/${gdb_host}.mh ${srcdir}/../config/${gdb_target_cpu}/${gdb_target}.mt | awk '$1 == "#msg" {
! 		print substr($0,6)}'
  fi
! 
! #  We really shouldn't depend on there being a space after TM_FILE= ...
! targetfile=`awk '$1 == "TM_FILE=" { print $2 }' <${srcdir}/../config/${gdb_target_cpu}/${gdb_target}.mt`
! 
! if [ "${target}" = "${host}" ] ; then
! 	nativefile=`awk '$1 == "NAT_FILE=" { print $2 }' <${srcdir}/../config/${gdb_host_cpu}/${gdb_host}.mh`
! fi
! 
! host_makefile_frag=../config/${gdb_host_cpu}/${gdb_host}.mh
! target_makefile_frag=../config/${gdb_target_cpu}/${gdb_target}.mt
  
  # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
  # (NAT_FILE) is not set in the ?config/* file, we don't make the
--- 1,65 ----
! dnl Autoconf configure script for GDB server.
! dnl Copyright 2000 Free Software Foundation, Inc.
! dnl
! dnl This file is part of GDB.
! dnl
! dnl This program is free software; you can redistribute it and/or modify
! dnl it under the terms of the GNU General Public License as published by
! dnl the Free Software Foundation; either version 2 of the License, or
! dnl (at your option) any later version.
! dnl
! dnl This program is distributed in the hope that it will be useful,
! dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
! dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
! dnl GNU General Public License for more details.
! dnl
! dnl You should have received a copy of the GNU General Public License
! dnl along with this program; if not, write to the Free Software
! dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  
! dnl Process this file with autoconf to produce a configure script.
  
! AC_INIT(server.c)
  
! AC_CANONICAL_SYSTEM
! AC_PROG_INSTALL
  
! . ${srcdir}/../configure.host
  
  . ${srcdir}/../configure.tgt
  
! frags=
! host_makefile_frag=${srcdir}/../config/${gdb_host_cpu}/${gdb_host}.mh
! if test ! -f ${host_makefile_frag}; then
! 	AC_MSG_ERROR("*** GDB remote does not support host ${host}")
! fi
! frags="$frags $host_makefile_frag"
! 
! target_makefile_frag=${srcdir}/../config/${gdb_target_cpu}/${gdb_target}.mt
! if test ! -f ${target_makefile_frag}; then
! 	AC_MSG_ERROR("*** GDB remote does not support target ${target}")
! fi
! frags="$frags $target_makefile_frag"
! 
! AC_SUBST_FILE(host_makefile_frag)
! AC_SUBST_FILE(target_makefile_frag)
! AC_SUBST(frags)
! 
! changequote(,)dnl
! hostfile=`sed -n '
! s/XM_FILE[	 ]*=[	 ]*\([^	 ]*\)/\1/p
! ' ${host_makefile_frag}`
! 
! targetfile=`sed -n '
! s/TM_FILE[	 ]*=[	 ]*\([^	 ]*\)/\1/p
! ' ${target_makefile_frag}`
! 
! if test "${target}" = "${host}"; then
! nativefile=`sed -n '
! s/NAT_FILE[	 ]*=[	 ]*\([^	 ]*\)/\1/p
! ' ${host_makefile_frag}`
  fi
! changequote([,])dnl
  
  # If hostfile (XM_FILE) and/or targetfile (TM_FILE) and/or nativefile
  # (NAT_FILE) is not set in the ?config/* file, we don't make the
***************
*** 52,84 ****
  links=
  rm -f xm.h
  rm -f ser-hardwire.c
! if [ "${hostfile}" != "" ]; then
! 	if [ -f ${srcdir}/../config/${hostfile} ]; then
! 		files="${files} ../config/${hostfile}"
! 	else
! 		files="${files} ../config/${gdb_host_cpu}/${hostfile}"
! 	fi
  	links="${links} xm.h"
- 
- #	files="${files} ${gdb_serial_driver}"
- #	links="${links} ser-hardwire.c"
  fi
  rm -f tm.h
! if [ "${targetfile}" != "" ]; then
! 	if [ -f ${srcdir}/../config/${targetfile} ]; then
! 		files="${files} ../config/${targetfile}"
! 	else
! 		files="${files} ../config/${gdb_target_cpu}/${targetfile}"
! 	fi
  	links="${links} tm.h"
  fi
  rm -f nm.h
! if [ "${nativefile}" != "" ]; then
! 	if [ -f ${srcdir}/../config/${nativefile} ]; then
! 		files="${files} ../config/${nativefile}"
! 	else
! 		files="${files} ../config/${gdb_host_cpu}/${nativefile}"
! 	fi
  	links="${links} nm.h"
  # temporary scaffolding until all hosts have the host/target/native
  # split in place.
--- 71,88 ----
  links=
  rm -f xm.h
  rm -f ser-hardwire.c
! if test "${hostfile}" != ""; then
! 	files="${files} ../config/${gdb_host_cpu}/${hostfile}"
  	links="${links} xm.h"
  fi
  rm -f tm.h
! if test "${targetfile}" != ""; then
! 	files="${files} ../config/${gdb_target_cpu}/${targetfile}"
  	links="${links} tm.h"
  fi
  rm -f nm.h
! if test "${nativefile}" != ""; then
! 	files="${files} ../config/${gdb_host_cpu}/${nativefile}"
  	links="${links} nm.h"
  # temporary scaffolding until all hosts have the host/target/native
  # split in place.
***************
*** 86,100 ****
  	files="${files} ../config/nm-empty.h"
  	links="${links} nm.h"
  fi
  
! if [ ${target_cpu} = "sparclite" ]; then
! 	configdirs="${configdirs} sparclite"
! fi
! 
! # post-target:
! 
! if [ "${nativefile}" = "" ] ; then
! 	sed -e '/^NATDEPFILES= /s//# NATDEPFILES= /' \
! 		< Makefile > Makefile.tem
! 	mv -f Makefile.tem Makefile
! fi
--- 90,95 ----
  	files="${files} ../config/nm-empty.h"
  	links="${links} nm.h"
  fi
+ AC_LINK_FILES($files, $links)
  
! AC_OUTPUT(Makefile)
Index: gdb/gdb/gdbserver/low-nbsd.c
diff -c /dev/null gdb/gdb/gdbserver/low-nbsd.c:1.2
*** /dev/null	Thu Feb 10 18:35:36 2000
--- gdb/gdb/gdbserver/low-nbsd.c	Thu Feb 10 18:35:36 2000
***************
*** 0 ****
--- 1,320 ----
+ /* Low level interface to ptrace, for the remote server for GDB.
+    Copyright (C) 1986, 1987, 1993, 2000 Free Software Foundation, Inc.
+ 
+ This file is part of GDB.
+ 
+ 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+ 
+ #include "defs.h"
+ #include <sys/types.h>
+ #include <sys/wait.h>
+ #include "frame.h"
+ #include "inferior.h"
+ 
+ #include <stdio.h>
+ #include <errno.h>
+ 
+ /***************Begin MY defs*********************/
+ int quit_flag = 0;
+ static char my_registers[REGISTER_BYTES];
+ char *registers = my_registers;
+ 
+ /* Index within `registers' of the first byte of the space for
+    register N.  */
+ 
+ char buf2[MAX_REGISTER_RAW_SIZE];
+ /***************End MY defs*********************/
+ 
+ #include <sys/ptrace.h>
+ #include <machine/reg.h>
+ 
+ extern int sys_nerr;
+ // extern char **sys_errlist;
+ extern char **environ;
+ extern int inferior_pid;
+ void quit (), perror_with_name ();
+ 
+ #ifdef TM_I386_H
+ /* i386_register_raw_size[i] is the number of bytes of storage in the
+    actual machine representation for register i.  */
+ int i386_register_raw_size[MAX_NUM_REGS] = {
+    4,  4,  4,  4,
+    4,  4,  4,  4,
+    4,  4,  4,  4,  
+    4,  4,  4,  4,
+   10, 10, 10, 10, 
+   10, 10, 10, 10,
+    4,  4,  4,  4,
+    4,  4,  4,  4, 
+   16, 16, 16, 16,
+   16, 16, 16, 16, 
+   4
+ }; 
+    
+ int i386_register_byte[MAX_NUM_REGS];
+ 
+ static void       
+ initialize_arch()
+ {
+   /* Initialize the table saying where each register starts in the
+      register file.  */
+   {
+     int i, offset;
+ 
+     offset = 0;
+     for (i = 0; i < MAX_NUM_REGS; i++)
+       {
+         i386_register_byte[i] = offset;
+         offset += i386_register_raw_size[i];
+       }
+   }   
+ }       
+ 
+ #endif
+ 
+ 
+ /* Start an inferior process and returns its pid.
+    ALLARGS is a vector of program-name and args.
+    ENV is the environment vector to pass.  */
+ 
+ int
+ create_inferior (program, allargs)
+      char *program;
+      char **allargs;
+ {
+   int pid;
+ 
+   pid = fork ();
+   if (pid < 0)
+     perror_with_name ("fork");
+ 
+   if (pid == 0)
+     {
+       ptrace (PT_TRACE_ME, 0, 0, 0);
+ 
+       execv (program, allargs);
+ 
+       fprintf (stderr, "Cannot exec %s: %s.\n", program,
+ 	       errno < sys_nerr ? sys_errlist[errno] : "unknown error");
+       fflush (stderr);
+       _exit (0177);
+     }
+ 
+   return pid;
+ }
+ 
+ /* Kill the inferior process.  Make us have no inferior.  */
+ 
+ void
+ kill_inferior ()
+ {
+   if (inferior_pid == 0)
+     return;
+   ptrace (PT_KILL, inferior_pid, 0, 0);
+   wait (0);
+   /*************inferior_died ();****VK**************/
+ }
+ 
+ /* Return nonzero if the given thread is still alive.  */
+ int
+ mythread_alive (pid)
+      int pid;
+ {
+   return 1;
+ }
+ 
+ /* Wait for process, returns status */
+ 
+ unsigned char
+ mywait (status)
+      char *status;
+ {
+   int pid;
+   int w;
+ 
+   pid = wait (&w);
+   if (pid != inferior_pid)
+     perror_with_name ("wait");
+ 
+   if (WIFEXITED (w))
+     {
+       fprintf (stderr, "\nChild exited with retcode = %x \n", WEXITSTATUS (w));
+       *status = 'W';
+       return ((unsigned char) WEXITSTATUS (w));
+     }
+   else if (!WIFSTOPPED (w))
+     {
+       fprintf (stderr, "\nChild terminated with signal = %x \n", WTERMSIG (w));
+       *status = 'X';
+       return ((unsigned char) WTERMSIG (w));
+     }
+ 
+   fetch_inferior_registers (0);
+ 
+   *status = 'T';
+   return ((unsigned char) WSTOPSIG (w));
+ }
+ 
+ /* Resume execution of the inferior process.
+    If STEP is nonzero, single-step it.
+    If SIGNAL is nonzero, give it that signal.  */
+ 
+ void
+ myresume (step, signal)
+      int step;
+      int signal;
+ {
+   errno = 0;
+   ptrace (step ? PT_STEP : PT_CONTINUE, inferior_pid, 
+ 	  (PTRACE_ARG3_TYPE) 1, signal);
+   if (errno)
+     perror_with_name ("ptrace");
+ }
+ 
+ /* Fetch one or more registers from the inferior.  REGNO == -1 to get
+    them all.  We actually fetch more than requested, when convenient,
+    marking them as valid so we won't fetch them again.  */
+ 
+ void
+ fetch_inferior_registers (ignored)
+      int ignored;
+ {
+   struct reg inferior_registers;
+   struct fpreg inferior_fp_registers;
+ 
+   ptrace (PT_GETREGS, inferior_pid,
+ 	  (PTRACE_ARG3_TYPE) &inferior_registers, 0);
+   memcpy (&registers[REGISTER_BYTE(0)], &inferior_registers, 
+ 	  sizeof(inferior_registers));
+ 
+ #if 0 /* def FP0_REGNUM */
+   ptrace (PT_GETFPREGS, inferior_pid,
+ 	  (PTRACE_ARG3_TYPE) &inferior_fp_registers, 0);
+   memcpy (&registers[REGISTER_BYTE(FP0_REGNUM)], &inferior_fp_registers,
+ 	  sizeof(inferior_fp_registers));
+ #endif
+ }
+ 
+ /* Store our register values back into the inferior.
+    If REGNO is -1, do this for all registers.
+    Otherwise, REGNO specifies which register (so we can save time).  */
+ 
+ void
+ store_inferior_registers (ignored)
+      int ignored;
+ {
+   struct reg inferior_registers;
+   struct fpreg inferior_fp_registers;
+ 
+   memcpy (&inferior_registers, &registers[REGISTER_BYTE(0)], 
+ 	  sizeof(inferior_registers));
+   ptrace (PT_SETREGS, inferior_pid,
+ 	  (PTRACE_ARG3_TYPE) &inferior_registers, 0);
+ 
+ #if 0 /* def FP0_REGNUM */
+   memcpy (&inferior_fp_registers, &registers[REGISTER_BYTE (FP0_REGNUM)],
+ 	  sizeof (inferior_fp_registers));
+   ptrace (PT_SETFPREGS, inferior_pid,
+ 	  (PTRACE_ARG3_TYPE) &inferior_fp_registers, 0);
+ #endif
+ }
+ 
+ /* NOTE! I tried using PTRACE_READDATA, etc., to read and write memory
+    in the NEW_SUN_PTRACE case.
+    It ought to be straightforward.  But it appears that writing did
+    not write the data that I specified.  I cannot understand where
+    it got the data that it actually did write.  */
+ 
+ /* Copy LEN bytes from inferior's memory starting at MEMADDR
+    to debugger memory starting at MYADDR.  */
+ 
+ read_inferior_memory (memaddr, myaddr, len)
+      CORE_ADDR memaddr;
+      char *myaddr;
+      int len;
+ {
+   register int i;
+   /* Round starting address down to longword boundary.  */
+   register CORE_ADDR addr = memaddr & -sizeof (int);
+   /* Round ending address up; get number of longwords that makes.  */
+   register int count
+   = (((memaddr + len) - addr) + sizeof (int) - 1) / sizeof (int);
+   /* Allocate buffer of that many longwords.  */
+   register int *buffer = (int *) alloca (count * sizeof (int));
+ 
+   /* Read all the longwords */
+   for (i = 0; i < count; i++, addr += sizeof (int))
+     {
+       buffer[i] = ptrace (PT_READ_D, inferior_pid, (PTRACE_ARG3_TYPE) addr, 0);
+     }
+ 
+   /* Copy appropriate bytes out of the buffer.  */
+   memcpy (myaddr, (char *) buffer + (memaddr & (sizeof (int) - 1)), len);
+ }
+ 
+ /* Copy LEN bytes of data from debugger memory at MYADDR
+    to inferior's memory at MEMADDR.
+    On failure (cannot write the inferior)
+    returns the value of errno.  */
+ 
+ int
+ write_inferior_memory (memaddr, myaddr, len)
+      CORE_ADDR memaddr;
+      char *myaddr;
+      int len;
+ {
+   register int i;
+   /* Round starting address down to longword boundary.  */
+   register CORE_ADDR addr = memaddr & -sizeof (int);
+   /* Round ending address up; get number of longwords that makes.  */
+   register int count
+   = (((memaddr + len) - addr) + sizeof (int) - 1) / sizeof (int);
+   /* Allocate buffer of that many longwords.  */
+   register int *buffer = (int *) alloca (count * sizeof (int));
+   extern int errno;
+ 
+   /* Fill start and end extra bytes of buffer with existing memory data.  */
+ 
+   buffer[0] = ptrace (PT_READ_D, inferior_pid, (PTRACE_ARG3_TYPE) addr, 0);
+ 
+   if (count > 1)
+     {
+       buffer[count - 1]
+ 	= ptrace (PT_READ_D, inferior_pid,
+ 		  (PTRACE_ARG3_TYPE) addr + (count - 1) * sizeof (int), 0);
+     }
+ 
+   /* Copy data to be written over corresponding part of buffer */
+ 
+   memcpy ((char *) buffer + (memaddr & (sizeof (int) - 1)), myaddr, len);
+ 
+   /* Write the entire buffer.  */
+ 
+   for (i = 0; i < count; i++, addr += sizeof (int))
+     {
+       errno = 0;
+       ptrace (PT_WRITE_D, inferior_pid, (PTRACE_ARG3_TYPE) addr, buffer[i]);
+       if (errno)
+ 	return errno;
+     }
+ 
+   return 0;
+ }
+ 
+ void 
+ initialize_low ()
+ {
+   initialize_arch ();
+ }


-- 
J.T. Conklin
RedBack Networks

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]