* NEWS: Mention the removal of NLM.
2006-03-29 Steve Ellcey <sje@cup.hp.com>
* Makefile.in (nlm): Remove target.
* configure.tgt (i[34567]86-*-netware*): Do not set build_nlm.
* configure.ac: Remove AC_CONFIG_SUBDIRS of nlm.
* configure: Regenerate.
* doc/gdb.texinfo: Remove gdbserve.nlm documentation.
* nlm: Remove directory.
+2006-03-29 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * NEWS: Mention the removal of NLM.
+
+2006-03-29 Steve Ellcey <sje@cup.hp.com>
+
+ * Makefile.in (nlm): Remove target.
+ * configure.tgt (i[34567]86-*-netware*): Do not set build_nlm.
+ * configure.ac: Remove AC_CONFIG_SUBDIRS of nlm.
+ * configure: Regenerate.
+ * doc/gdb.texinfo: Remove gdbserve.nlm documentation.
+ * nlm: Remove directory.
+
2006-03-29 Daniel Jacobowitz <dan@codesourcery.com>
* Makefile.in (utils.o): Update.
-o $(TUI)$(EXEEXT) tui-main.o libgdb.a \
$(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES)
-nlm: force
- rootme=`pwd`; export rootme; $(MAKE) $(TARGET_FLAGS_TO_PASS) DO=all DODIRS=nlm subdir_do
-
# Create a library of the gdb object files and build GDB by linking
# against that.
#
The ARM rdi-share module.
+The Netware NLM debug server.
+
*** Changes in GDB 6.4
* New native configurations
ac_subdirs_all="$ac_subdirs_all gdbtk"
ac_subdirs_all="$ac_subdirs_all multi-ice"
ac_subdirs_all="$ac_subdirs_all gdbserver"
-ac_subdirs_all="$ac_subdirs_all nlm"
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os SET_MAKE RANLIB ac_ct_RANLIB ALLOCA USE_NLS MSGFMT GMSGFMT XGETTEXT USE_INCLUDED_LIBINTL CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLDEPS INTLLIBS INTLOBJS POFILES POSUB INCLUDE_LOCALE_H GT_NO GT_YES MKINSTALLDIRS l localedir PACKAGE subdirs AWK INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S YACC AR ac_ct_AR DLLTOOL ac_ct_DLLTOOL WINDRES ac_ct_WINDRES MIG ac_ct_MIG CONFIG_LDFLAGS TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE WARN_CFLAGS WERROR_CFLAGS SER_HARDWIRE WIN32LIBS LIBGUI GUI_CFLAGS_X WIN32LDAPP TCL_VERSION TCL_MAJOR_VERSION TCL_MINOR_VERSION TCL_CC TCL_DEFS TCL_SHLIB_CFLAGS TCL_SHLIB_LD TCL_SHLIB_LD_LIBS TCL_SHLIB_SUFFIX TCL_DL_LIBS TCL_LD_FLAGS TCL_LD_SEARCH_FLAGS TCL_CC_SEARCH_FLAGS TCL_COMPAT_OBJS TCL_RANLIB TCL_BUILD_LIB_SPEC TCL_LIB_SPEC TCL_LIB_VERSIONS_OK TK_VERSION TK_DEFS TK_BUILD_INCLUDES TK_XINCLUDES TK_XLIBSW TK_BUILD_LIB_SPEC TK_LIB_SPEC TCLHDIR TKHDIR ITCLHDIR ITKHDIR ITCL_VERSION ITCL_DEFS ITCL_BUILD_INCLUDES ITCL_BUILD_LIB_SPEC ITCL_LIB_SPEC ITK_VERSION ITK_DEFS ITK_BUILD_INCLUDES ITK_BUILD_LIB_SPEC ITK_LIB_SPEC X_CFLAGS X_LDFLAGS X_LIBS TCL_DEPS TK_DEPS ITCLLIB ITCL_DEPS ITKLIB ITK_DEPS GDBTKLIBS GDBTK_CFLAGS GDBTK_SRC_DIR IGNORE_SIM IGNORE_SIM_OBS ENABLE_CFLAGS PROFILE_CFLAGS CONFIG_OBS CONFIG_DEPS CONFIG_SRCS CONFIG_ALL CONFIG_CLEAN CONFIG_INSTALL CONFIG_UNINSTALL target_subdir frags xm_h tm_h nm_h LIBICONV LIBOBJS LTLIBOBJS'
ac_subst_files='host_makefile_frag target_makefile_frag'
fi
fi
-# We configure the nlm subdirectory on netware targets, as instructed
-# by configure.tgt.
-if test "x$build_nlm" = xyes; then
-
-
-subdirs="$subdirs nlm"
-
-fi
-
# If hostfile (XM_FILE) and/or targetfile (DEPRECATED_TM_FILE) and/or
# nativefile (NAT_FILE) is not set in config/*/*.m[ht] files, we link
# to an empty version.
fi
fi
-# We configure the nlm subdirectory on netware targets, as instructed
-# by configure.tgt.
-if test "x$build_nlm" = xyes; then
- AC_CONFIG_SUBDIRS(nlm)
-fi
-
# If hostfile (XM_FILE) and/or targetfile (DEPRECATED_TM_FILE) and/or
# nativefile (NAT_FILE) is not set in config/*/*.m[ht] files, we link
# to an empty version.
build_gdbserver=yes
;;
i[34567]86-*-gnu*) gdb_target=i386gnu ;;
-i[34567]86-*-netware*) gdb_target=i386
- build_nlm=yes
- ;;
+i[34567]86-*-netware*) gdb_target=i386 ;;
i[34567]86-*-cygwin*) gdb_target=cygwin ;;
i[34567]86-*-*) gdb_target=i386 ;;
@menu
* Connecting:: Connecting to a remote target
* Server:: Using the gdbserver program
-* NetWare:: Using the gdbserve.nlm program
* Remote configuration:: Remote configuration
* remote stub:: Implementing a remote stub
@end menu
@end table
-@node NetWare
-@section Using the @code{gdbserve.nlm} program
-
-@kindex gdbserve.nlm
-@code{gdbserve.nlm} is a control program for NetWare systems, which
-allows you to connect your program with a remote @value{GDBN} via
-@code{target remote}.
-
-@value{GDBN} and @code{gdbserve.nlm} communicate via a serial line,
-using the standard @value{GDBN} remote serial protocol.
-
-@table @emph
-@item On the target machine,
-you need to have a copy of the program you want to debug.
-@code{gdbserve.nlm} does not need your program's symbol table, so you
-can strip the program if necessary to save space. @value{GDBN} on the
-host system does all the symbol handling.
-
-To use the server, you must tell it how to communicate with
-@value{GDBN}; the name of your program; and the arguments for your
-program. The syntax is:
-
-@smallexample
-load gdbserve [ BOARD=@var{board} ] [ PORT=@var{port} ]
- [ BAUD=@var{baud} ] @var{program} [ @var{args} @dots{} ]
-@end smallexample
-
-@var{board} and @var{port} specify the serial line; @var{baud} specifies
-the baud rate used by the connection. @var{port} and @var{node} default
-to 0, @var{baud} defaults to 9600@dmn{bps}.
-
-For example, to debug Emacs with the argument @samp{foo.txt}and
-communicate with @value{GDBN} over serial port number 2 or board 1
-using a 19200@dmn{bps} connection:
-
-@smallexample
-load gdbserve BOARD=1 PORT=2 BAUD=19200 emacs foo.txt
-@end smallexample
-
-@item
-On the @value{GDBN} host machine, connect to your target (@pxref{Connecting,,
-Connecting to a remote target}).
-
-@end table
-
@node Remote configuration
@section Remote configuration
+++ /dev/null
-#Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999
-#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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-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
-man4dir = $(mandir)/man4
-man5dir = $(mandir)/man5
-man6dir = $(mandir)/man6
-man7dir = $(mandir)/man7
-man8dir = $(mandir)/man8
-man9dir = $(mandir)/man9
-infodir = @infodir@
-htmldir = $(prefix)/html
-includedir = @includedir@
-
-SHELL = @SHELL@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-
-CC_FOR_TARGET = ` \
- if [ -f ../../gcc/xgcc ] ; then \
- echo ../../gcc/xgcc -B../../gcc/; \
- else \
- t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \
- fi`
-
-NLMCONV_FOR_TARGET = ` \
- if [ -f ../../binutils/nlmconv ] ; then \
- echo ../../binutils/nlmconv; \
- else \
- t='$(program_transform_name)'; echo nlmconv | sed -e '' $$t; \
- fi`
-
-# All the includes used for CFLAGS and for lint.
-INCLUDE_CFLAGS = -I. -I${srcdir}
-
-# CFLAGS is specifically reserved for setting from the command line
-# when running make. I.E. "make CFLAGS=-Wmissing-prototypes".
-CFLAGS = -g
-# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
-INTERNAL_CFLAGS = ${CFLAGS} ${INCLUDE_CFLAGS} ${USER_CFLAGS}
-LDFLAGS = $(CFLAGS)
-
-# Perhaps should come from parent Makefile
-VERSION = gdbserve-4.12
-DIST=gdb
-
-# target-dependent makefile fragment come in here.
-@target_makefile_frag@
-# End target-dependent makefile fragment
-
-# All source files that go into linking GDB remote server.
-
-DEPFILES = $(GDBSERVE_DEPFILES)
-
-SOURCES = $(ALLDEPFILES)
-TAGFILES = $(SOURCES) ${HFILES} ${ALLPARAM} ${POSSLIBS}
-
-# Prevent Sun make from putting in the machine type. Setting
-# TARGET_ARCH to nothing works for SunOS 3, 4.0, but not for 4.1.
-.c.o:
- ${CC_FOR_TARGET} -c ${INTERNAL_CFLAGS} $<
-
-.S.o:
- ${CC_FOR_TARGET} -c ${INTERNAL_CFLAGS} $<
-
-all: gdbserve.nlm
-
-# Traditionally "install" depends on "all". But it may be useful
-# not to; for example, if the user has made some trivial change to a
-# source file and doesn't care about rebuilding or just wants to save the
-# time it takes for make to check that all is up to date.
-# install-only is intended to address that need.
-install: all install-only
-install-only:
- $(INSTALL) gdbserve.nlm $(bindir)/gdbserve.nlm
-
-uninstall: force
- rm -f $(bindir)/gdbserve.nlm
-
-installcheck:
-check:
-info dvi:
-install-info:
-clean-info:
-html:
-install-html:
-
-gdbserve.nlm: gdbserve.O $(srcdir)/gdbserve.def
- ${NLMCONV_FOR_TARGET} -T $(srcdir)/gdbserve.def
-
-gdbserve.O: prelude.o gdbserve.o $(TDEPFILES)
- ${CC_FOR_TARGET} $(LDFLAGS) -r -o gdbserve.O prelude.o gdbserve.o ${TDEPFILES}
-
-# 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
-TAGS: ${TAGFILES}
- etags `find ${srcdir}/../config -name $(DEPRECATED_TM_FILE) -print` \
- `find ${srcdir}/../config -name ${XM_FILE} -print` \
- `find ${srcdir}/../config -name ${NAT_FILE} -print` \
- `for i in yzzy ${DEPFILES}; do \
- if [ x$$i != xyzzy ]; then \
- echo ${srcdir}/$$i | sed -e 's/\.o$$/\.c/' ; \
- fi; \
- done` \
- ${TAGFILES}
-tags: TAGS
-
-clean:
- rm -f *.o ${ADD_FILES} *~
- rm -f gdbserve.O gdbserve.nlm core make.log
-
-distclean: clean TAGS
- rm -f config.log config.cache config.status
- rm -f Makefile
-
-maintainer-clean realclean: clean
- rm -f TAGS
- rm -f config.log config.cache config.status
- rm -f Makefile
-
-Makefile: Makefile.in config.status @target_makefile_frag_path@
- $(SHELL) config.status
-
-config.status: configure
- $(SHELL) config.status --recheck
-
-force:
-
-# GNU Make has an annoying habit of putting *all* the Makefile variables
-# into the environment, unless you include this target as a circumvention.
-# Rumor is that this will be fixed (and this target can be removed)
-# in GNU Make 4.0.
-.NOEXPORT:
-
-# GNU Make 3.63 has a different problem: it keeps tacking command line
-# overrides onto the definition of $(MAKE). This variable setting
-# will remove them.
-MAKEOVERRIDES=
-
-# This is the end of "Makefile.in".
+++ /dev/null
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13
-# 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=
-sitefile=
-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=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# 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
- --site-file=FILE use FILE as the site file
- --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" ;;
-
- -site-file | --site-file | --site-fil | --site-fi | --site-f)
- ac_prev=sitefile ;;
- -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*)
- sitefile="$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.13"
- 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=gdbserve.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 "$sitefile"; then
- 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
-else
- CONFIG_SITE="$sitefile"
-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${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-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 `cd $srcdir;pwd`/../.. $srcdir/`cd $srcdir;pwd`/../..; 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 `cd $srcdir;pwd`/../.. $srcdir/`cd $srcdir;pwd`/../.." 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 ${CONFIG_SHELL-/bin/sh} $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:584: checking host system type" >&5
-
-host_alias=$host
-case "$host_alias" in
-NONE)
- case $nonopt in
- NONE)
- if host_alias=`${CONFIG_SHELL-/bin/sh} $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=`${CONFIG_SHELL-/bin/sh} $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:605: 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=`${CONFIG_SHELL-/bin/sh} $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:623: 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=`${CONFIG_SHELL-/bin/sh} $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}-
-
-if test "$program_transform_name" = s,x,x,; then
- program_transform_name=
-else
- # Double any \ or $. echo might interpret backslashes.
- cat <<\EOF_SED > conftestsed
-s,\\,\\\\,g; s,\$,$$,g
-EOF_SED
- program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
- rm -f conftestsed
-fi
-test "$program_prefix" != NONE &&
- program_transform_name="s,^,${program_prefix},; $program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
- program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
-
-# sed with no file args requires a program.
-test "$program_transform_name" = "" && program_transform_name="s,x,x,"
-
-
-# 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
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# 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:677: 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=":"
- 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.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall 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.
- :
- 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_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-# Map target cpu into the config cpu subdirectory name.
-# The default is $target_cpu.
-case "${target_cpu}" in
-alpha) gdb_target_cpu=alpha ;;
-c[12]) gdb_target_cpu=convex ;;
-hppa*) gdb_target_cpu=pa ;;
-i[34567]86) gdb_target_cpu=i386 ;;
-m68*) gdb_target_cpu=m68k ;;
-np1) gdb_target_cpu=gould ;;
-pn) gdb_target_cpu=gould ;;
-pyramid) gdb_target_cpu=pyr ;;
-sparc*) gdb_target_cpu=sparc ;;
-*) gdb_target_cpu=$target_cpu ;;
-esac
-
-target_makefile_frag=${srcdir}/../config/${gdb_target_cpu}/gdbserve.mt
-if ! -f ${target_makefile_frag} ; then
- { echo "configure: error: "*** GDBSERVE does not support target ${target}"" 1>&2; exit 1; }
-fi
-
-target_makefile_frag_path=$target_makefile_frag
-
-
-
-cpufile=`sed -n '
-s/CPU_FILE *= *\(^ *\)/\1/p
-' ${target_makefile_frag}
-
-files=
-links=
-rm -f cpu.h
-if "${cpufile}" != "" ; then
- files="${files} ${cpufile}.h"
- links="${links} cpu.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 | grep ac_space) 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.13"
- 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%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%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_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@target_makefile_frag_path@%$target_makefile_frag_path%g
-/@target_makefile_frag@/r $target_makefile_frag
-s%@target_makefile_frag@%%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
-
-
+++ /dev/null
-dnl Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.12.1)dnl
-AC_INIT(gdbserve.c)
-
-AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/../..)
-AC_CANONICAL_SYSTEM
-AC_ARG_PROGRAM
-
-AC_PROG_INSTALL
-
-# Map target cpu into the config cpu subdirectory name.
-# The default is $target_cpu.
-changequote(,)dnl
-case "${target_cpu}" in
-alpha) gdb_target_cpu=alpha ;;
-c[12]) gdb_target_cpu=convex ;;
-hppa*) gdb_target_cpu=pa ;;
-i[34567]86) gdb_target_cpu=i386 ;;
-m68*) gdb_target_cpu=m68k ;;
-np1) gdb_target_cpu=gould ;;
-pn) gdb_target_cpu=gould ;;
-pyramid) gdb_target_cpu=pyr ;;
-sparc*) gdb_target_cpu=sparc ;;
-*) gdb_target_cpu=$target_cpu ;;
-esac
-changequote([,])dnl
-
-target_makefile_frag=${srcdir}/../config/${gdb_target_cpu}/gdbserve.mt
-if [ ! -f ${target_makefile_frag} ]; then
- AC_MSG_ERROR("*** GDBSERVE does not support target ${target}")
-fi
-
-dnl We have to assign the same value to other variables because autoconf
-dnl doesn't provide a mechanism to substitute a replacement keyword with
-dnl arbitrary data or pathnames.
-dnl
-target_makefile_frag_path=$target_makefile_frag
-AC_SUBST(target_makefile_frag_path)
-AC_SUBST_FILE(target_makefile_frag)
-
-cpufile=`sed -n '
-s/CPU_FILE[ ]*=[ ]*\([^ ]*\)/\1/p
-' ${target_makefile_frag}
-
-files=
-links=
-rm -f cpu.h
-if [ "${cpufile}" != "" ]; then
- files="${files} ${cpufile}.h"
- links="${links} cpu.h"
-fi
-
-AC_LINK_FILES($files, $links)
-AC_OUTPUT(Makefile)
-
+++ /dev/null
-/* gdbserve.c -- NLM debugging stub for Novell NetWare.
-
- This is originally based on an m68k software stub written by Glenn
- Engel at HP, but has changed quite a bit. It was modified for the
- i386 by Jim Kingdon, Cygnus Support. It was modified to run under
- NetWare by Ian Lance Taylor, Cygnus Support.
-
- This code is intended to produce an NLM (a NetWare Loadable Module)
- to run under Novell NetWare. To create the NLM, compile this code
- into an object file using the NLM SDK on any i386 host, and use the
- nlmconv program (available in the GNU binutils) to transform the
- resulting object file into an NLM. */
-
-/****************************************************************************
-
- THIS SOFTWARE IS NOT COPYRIGHTED
-
- HP offers the following for use in the public domain. HP makes no
- warranty with regard to the software or it's performance and the
- user accepts the software "AS IS" with all faults.
-
- HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD
- TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-****************************************************************************/
-
-/****************************************************************************
- *
- * The following gdb commands are supported:
- *
- * command function Return value
- *
- * g return the value of the CPU registers hex data or ENN
- * G set the value of the CPU registers OK or ENN
- *
- * mAA..AA,LLLL Read LLLL bytes at address AA..AA hex data or ENN
- * MAA..AA,LLLL: Write LLLL bytes at address AA.AA OK or ENN
- *
- * c Resume at current address SNN ( signal NN)
- * cAA..AA Continue at address AA..AA SNN
- *
- * s Step one instruction SNN
- * sAA..AA Step one instruction from AA..AA SNN
- *
- * k kill
- *
- * ? What was the last sigval ? SNN (signal NN)
- *
- * All commands and responses are sent with a packet which includes a
- * checksum. A packet consists of
- *
- * $<packet info>#<checksum>.
- *
- * where
- * <packet info> :: <characters representing the command or response>
- * <checksum> :: < two hex digits computed as modulo 256 sum of <packetinfo>>
- *
- * When a packet is received, it is first acknowledged with either '+' or '-'.
- * '+' indicates a successful transfer. '-' indicates a failed transfer.
- *
- * Example:
- *
- * Host: Reply:
- * $m0,10#2a +$00010203040506070809101112131415#42
- *
- ****************************************************************************/
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <errno.h>
-#include <time.h>
-
-#ifdef __i386__
-#include <dfs.h>
-#include <conio.h>
-#include <advanced.h>
-#include <debugapi.h>
-#include <process.h>
-#else
-#include <nwtypes.h>
-#include <nwdfs.h>
-#include <nwconio.h>
-#include <nwadv.h>
-#include <nwdbgapi.h>
-#include <nwthread.h>
-#endif
-
-#include <aio.h>
-#include "cpu.h"
-
-
-/****************************************************/
-/* This information is from Novell. It is not in any of the standard
- NetWare header files. */
-
-struct DBG_LoadDefinitionStructure
-{
- void *reserved1[4];
- LONG reserved5;
- LONG LDCodeImageOffset;
- LONG LDCodeImageLength;
- LONG LDDataImageOffset;
- LONG LDDataImageLength;
- LONG LDUninitializedDataLength;
- LONG LDCustomDataOffset;
- LONG LDCustomDataSize;
- LONG reserved6[2];
- LONG (*LDInitializationProcedure)(void);
-};
-
-#define LO_NORMAL 0x0000
-#define LO_STARTUP 0x0001
-#define LO_PROTECT 0x0002
-#define LO_DEBUG 0x0004
-#define LO_AUTO_LOAD 0x0008
-
-/* Loader returned error codes */
-#define LOAD_COULD_NOT_FIND_FILE 1
-#define LOAD_ERROR_READING_FILE 2
-#define LOAD_NOT_NLM_FILE_FORMAT 3
-#define LOAD_WRONG_NLM_FILE_VERSION 4
-#define LOAD_REENTRANT_INITIALIZE_FAILURE 5
-#define LOAD_CAN_NOT_LOAD_MULTIPLE_COPIES 6
-#define LOAD_ALREADY_IN_PROGRESS 7
-#define LOAD_NOT_ENOUGH_MEMORY 8
-#define LOAD_INITIALIZE_FAILURE 9
-#define LOAD_INCONSISTENT_FILE_FORMAT 10
-#define LOAD_CAN_NOT_LOAD_AT_STARTUP 11
-#define LOAD_AUTO_LOAD_MODULES_NOT_LOADED 12
-#define LOAD_UNRESOLVED_EXTERNAL 13
-#define LOAD_PUBLIC_ALREADY_DEFINED 14
-/****************************************************/
-
-/* The main thread ID. */
-static int mainthread;
-
-/* An error message for the main thread to print. */
-static char *error_message;
-
-/* The AIO port handle. */
-static int AIOhandle;
-
-/* BUFMAX defines the maximum number of characters in inbound/outbound
- buffers. At least NUMREGBYTES*2 are needed for register packets */
-#define BUFMAX (REGISTER_BYTES * 2 + 16)
-
-/* remote_debug > 0 prints ill-formed commands in valid packets and
- checksum errors. */
-static int remote_debug = 1;
-
-static const char hexchars[] = "0123456789abcdef";
-
-unsigned char breakpoint_insn[] = BREAKPOINT;
-
-char *mem2hex (void *mem, char *buf, int count, int may_fault);
-char *hex2mem (char *buf, void *mem, int count, int may_fault);
-extern void set_step_traps (struct StackFrame *);
-extern void clear_step_traps (struct StackFrame *);
-
-static int __main() {};
-
-/* Read a character from the serial port. This must busy wait, but
- that's OK because we will be the only thread running anyhow. */
-
-static int
-getDebugChar (void)
-{
- int err;
- LONG got;
- unsigned char ret;
-
- do
- {
- err = AIOReadData (AIOhandle, (char *) &ret, 1, &got);
- if (err != 0)
- {
- error_message = "AIOReadData failed";
- ResumeThread (mainthread);
- return -1;
- }
- }
- while (got == 0);
-
- return ret;
-}
-
-/* Write a character to the serial port. Returns 0 on failure,
- non-zero on success. */
-
-static int
-putDebugChar (unsigned char c)
-{
- int err;
- LONG put;
-
- put = 0;
- while (put < 1)
- {
- err = AIOWriteData (AIOhandle, (char *) &c, 1, &put);
- if (err != 0)
- ConsolePrintf ("AIOWriteData: err = %d, put = %d\r\n", err, put);
- }
- return 1;
-}
-
-/* Turn a hex character into a number. */
-
-static int
-hex (char ch)
-{
- if ((ch >= 'a') && (ch <= 'f'))
- return (ch-'a'+10);
- if ((ch >= '0') && (ch <= '9'))
- return (ch-'0');
- if ((ch >= 'A') && (ch <= 'F'))
- return (ch-'A'+10);
- return (-1);
-}
-
-/* Scan for the sequence $<data>#<checksum>. Returns 0 on failure,
- non-zero on success. */
-
-static int
-getpacket (char *buffer)
-{
- unsigned char checksum;
- unsigned char xmitcsum;
- int i;
- int count;
- int ch;
-
- do
- {
- /* wait around for the start character, ignore all other characters */
- while ((ch = getDebugChar()) != '$')
- if (ch == -1)
- return 0;
- checksum = 0;
- xmitcsum = -1;
-
- count = 0;
-
- /* now, read until a # or end of buffer is found */
- while (count < BUFMAX)
- {
- ch = getDebugChar();
- if (ch == -1)
- return 0;
- if (ch == '#')
- break;
- checksum = checksum + ch;
- buffer[count] = ch;
- count = count + 1;
- }
- buffer[count] = 0;
-
- if (ch == '#')
- {
- ch = getDebugChar ();
- if (ch == -1)
- return 0;
- xmitcsum = hex(ch) << 4;
- ch = getDebugChar ();
- if (ch == -1)
- return 0;
- xmitcsum += hex(ch);
-
- if (checksum != xmitcsum)
- {
- if (remote_debug)
- ConsolePrintf ("bad checksum. My count = 0x%x, sent=0x%x. buf=%s\n",
- checksum,xmitcsum,buffer);
- /* failed checksum */
- if (! putDebugChar('-'))
- return 0;
- return 1;
- }
- else
- {
- /* successful transfer */
- if (! putDebugChar('+'))
- return 0;
- /* if a sequence char is present, reply the sequence ID */
- if (buffer[2] == ':')
- {
- if (! putDebugChar (buffer[0])
- || ! putDebugChar (buffer[1]))
- return 0;
- /* remove sequence chars from buffer */
- count = strlen(buffer);
- for (i=3; i <= count; i++)
- buffer[i-3] = buffer[i];
- }
- }
- }
- }
- while (checksum != xmitcsum);
-
- if (remote_debug)
- ConsolePrintf ("Received packet \"%s\"\r\n", buffer);
-
- return 1;
-}
-
-/* Send the packet in buffer. Returns 0 on failure, non-zero on
- success. */
-
-static int
-putpacket (char *buffer)
-{
- unsigned char checksum;
- int count;
- int ch;
-
- if (remote_debug)
- ConsolePrintf ("Sending packet \"%s\"\r\n", buffer);
-
- /* $<packet info>#<checksum>. */
- do
- {
- if (! putDebugChar('$'))
- return 0;
- checksum = 0;
- count = 0;
-
- while (ch=buffer[count])
- {
- if (! putDebugChar(ch))
- return 0;
- checksum += ch;
- count += 1;
- }
-
- if (! putDebugChar('#')
- || ! putDebugChar(hexchars[checksum >> 4])
- || ! putDebugChar(hexchars[checksum % 16]))
- return 0;
-
- ch = getDebugChar ();
- if (ch == -1)
- return 0;
- }
- while (ch != '+');
-
- return 1;
-}
-
-static char remcomInBuffer[BUFMAX];
-static char remcomOutBuffer[BUFMAX];
-static short error;
-
-static void
-debug_error (char *format, char *parm)
-{
- if (remote_debug)
- {
- ConsolePrintf (format, parm);
- ConsolePrintf ("\n");
- }
-}
-
-/* This is set if we could get a memory access fault. */
-static int mem_may_fault;
-
-/* Indicate to caller of mem2hex or hex2mem that there has been an
- error. */
-volatile int mem_err = 0;
-
-#ifndef ALTERNATE_MEM_FUNCS
-/* These are separate functions so that they are so short and sweet
- that the compiler won't save any registers (if there is a fault
- to mem_fault, they won't get restored, so there better not be any
- saved). */
-
-int
-get_char (char *addr)
-{
- return *addr;
-}
-
-void
-set_char (char *addr, int val)
-{
- *addr = val;
-}
-#endif /* ALTERNATE_MEM_FUNCS */
-
-/* convert the memory pointed to by mem into hex, placing result in buf */
-/* return a pointer to the last char put in buf (null) */
-/* If MAY_FAULT is non-zero, then we should set mem_err in response to
- a fault; if zero treat a fault like any other fault in the stub. */
-
-char *
-mem2hex (void *mem, char *buf, int count, int may_fault)
-{
- int i;
- unsigned char ch;
- char *ptr = mem;
-
- mem_may_fault = may_fault;
- for (i = 0; i < count; i++)
- {
- ch = get_char (ptr++);
- if (may_fault && mem_err)
- return (buf);
- *buf++ = hexchars[ch >> 4];
- *buf++ = hexchars[ch % 16];
- }
- *buf = 0;
- mem_may_fault = 0;
- return(buf);
-}
-
-/* convert the hex array pointed to by buf into binary to be placed in mem */
-/* return a pointer to the character AFTER the last byte written */
-
-char *
-hex2mem (char *buf, void *mem, int count, int may_fault)
-{
- int i;
- unsigned char ch;
- char *ptr = mem;
-
- mem_may_fault = may_fault;
- for (i=0;i<count;i++)
- {
- ch = hex(*buf++) << 4;
- ch = ch + hex(*buf++);
- set_char (ptr++, ch);
- if (may_fault && mem_err)
- return (ptr);
- }
- mem_may_fault = 0;
- return(mem);
-}
-
-/* This function takes the 386 exception vector and attempts to
- translate this number into a unix compatible signal value. */
-
-int
-computeSignal (int exceptionVector)
-{
- int sigval;
- switch (exceptionVector)
- {
- case 0 : sigval = 8; break; /* divide by zero */
- case 1 : sigval = 5; break; /* debug exception */
- case 3 : sigval = 5; break; /* breakpoint */
- case 4 : sigval = 16; break; /* into instruction (overflow) */
- case 5 : sigval = 16; break; /* bound instruction */
- case 6 : sigval = 4; break; /* Invalid opcode */
- case 7 : sigval = 8; break; /* coprocessor not available */
- case 8 : sigval = 7; break; /* double fault */
- case 9 : sigval = 11; break; /* coprocessor segment overrun */
- case 10 : sigval = 11; break; /* Invalid TSS */
- case 11 : sigval = 11; break; /* Segment not present */
- case 12 : sigval = 11; break; /* stack exception */
- case 13 : sigval = 11; break; /* general protection */
- case 14 : sigval = 11; break; /* page fault */
- case 16 : sigval = 7; break; /* coprocessor error */
- default:
- sigval = 7; /* "software generated"*/
- }
- return (sigval);
-}
-
-/**********************************************/
-/* WHILE WE FIND NICE HEX CHARS, BUILD AN INT */
-/* RETURN NUMBER OF CHARS PROCESSED */
-/**********************************************/
-static int
-hexToInt (char **ptr, int *intValue)
-{
- int numChars = 0;
- int hexValue;
-
- *intValue = 0;
-
- while (**ptr)
- {
- hexValue = hex(**ptr);
- if (hexValue >=0)
- {
- *intValue = (*intValue <<4) | hexValue;
- numChars ++;
- }
- else
- break;
-
- (*ptr)++;
- }
-
- return (numChars);
-}
-
-/* This function does all command processing for interfacing to gdb.
- It is called whenever an exception occurs in the module being
- debugged. */
-
-static LONG
-handle_exception (struct StackFrame *frame)
-{
- int addr, length;
- char *ptr;
- static struct DBG_LoadDefinitionStructure *ldinfo = 0;
- static unsigned char first_insn[BREAKPOINT_SIZE]; /* The first instruction in the program. */
-
-#if 0
- /* According to some documentation from Novell, the bell sometimes
- may be ringing at this point. This can be stopped on Netware 4
- systems by calling the undocumented StopBell() function. */
-
- StopBell ();
-#endif
-
- if (remote_debug)
- {
- ConsolePrintf ("vector=%d: %s, pc=%08x, thread=%08x\r\n",
- frame->ExceptionNumber,
- frame->ExceptionDescription,
- frame->ExceptionPC,
- GetThreadID ());
- }
-
- switch (frame->ExceptionNumber)
- {
- case START_NLM_EVENT:
- /* If the NLM just started, we record the module load information
- and the thread ID, and set a breakpoint at the first instruction
- in the program. */
-
- ldinfo = ((struct DBG_LoadDefinitionStructure *)
- frame->ExceptionErrorCode);
- memcpy (first_insn, ldinfo->LDInitializationProcedure,
- BREAKPOINT_SIZE);
- memcpy (ldinfo->LDInitializationProcedure, breakpoint_insn,
- BREAKPOINT_SIZE);
- flush_i_cache ();
- return RETURN_TO_PROGRAM;
-
- case ENTER_DEBUGGER_EVENT:
- case KEYBOARD_BREAK_EVENT:
- /* Pass some events on to the next debugger, in case it will handle
- them. */
- return RETURN_TO_NEXT_DEBUGGER;
-
- case 3: /* Breakpoint */
- /* After we've reached the initial breakpoint, reset it. */
- if (frame->ExceptionPC - DECR_PC_AFTER_BREAK == (LONG) ldinfo->LDInitializationProcedure
- && memcmp (ldinfo->LDInitializationProcedure, breakpoint_insn,
- BREAKPOINT_SIZE) == 0)
- {
- memcpy (ldinfo->LDInitializationProcedure, first_insn,
- BREAKPOINT_SIZE);
- frame->ExceptionPC -= DECR_PC_AFTER_BREAK;
- flush_i_cache ();
- }
- /* Normal breakpoints end up here */
- do_status (remcomOutBuffer, frame);
- break;
-
- default:
- /* At the moment, we don't care about most of the unusual NetWare
- exceptions. */
- if (frame->ExceptionNumber > 31)
- return RETURN_TO_PROGRAM;
-
- /* Most machine level exceptions end up here */
- do_status (remcomOutBuffer, frame);
- break;
-
- case 11: /* Segment not present */
- case 13: /* General protection */
- case 14: /* Page fault */
- /* If we get a GP fault, and mem_may_fault is set, and the
- instruction pointer is near set_char or get_char, then we caused
- the fault ourselves accessing an illegal memory location. */
- if (mem_may_fault
- && ((frame->ExceptionPC >= (long) &set_char
- && frame->ExceptionPC < (long) &set_char + 50)
- || (frame->ExceptionPC >= (long) &get_char
- && frame->ExceptionPC < (long) &get_char + 50)))
- {
- mem_err = 1;
- /* Point the instruction pointer at an assembly language stub
- which just returns from the function. */
-
- frame->ExceptionPC += 4; /* Skip the load or store */
-
- /* Keep going. This will act as though it returned from
- set_char or get_char. The calling routine will check
- mem_err, and do the right thing. */
- return RETURN_TO_PROGRAM;
- }
- /* Random mem fault, report it */
- do_status (remcomOutBuffer, frame);
- break;
-
- case TERMINATE_NLM_EVENT:
- /* There is no way to get the exit status. */
- sprintf (remcomOutBuffer, "W%02x", 0);
- break; /* We generate our own status */
- }
-
- /* FIXME: How do we know that this exception has anything to do with
- the program we are debugging? We can check whether the PC is in
- the range of the module we are debugging, but that doesn't help
- much since an error could occur in a library routine. */
-
- clear_step_traps (frame);
-
- if (! putpacket(remcomOutBuffer))
- return RETURN_TO_NEXT_DEBUGGER;
-
- if (frame->ExceptionNumber == TERMINATE_NLM_EVENT)
- {
- ResumeThread (mainthread);
- return RETURN_TO_PROGRAM;
- }
-
- while (1)
- {
- error = 0;
- remcomOutBuffer[0] = 0;
- if (! getpacket (remcomInBuffer))
- return RETURN_TO_NEXT_DEBUGGER;
- switch (remcomInBuffer[0])
- {
- case '?':
- do_status (remcomOutBuffer, frame);
- break;
- case 'd':
- remote_debug = !(remote_debug); /* toggle debug flag */
- break;
- case 'g':
- /* return the value of the CPU registers */
- frame_to_registers (frame, remcomOutBuffer);
- break;
- case 'G':
- /* set the value of the CPU registers - return OK */
- registers_to_frame (&remcomInBuffer[1], frame);
- strcpy(remcomOutBuffer,"OK");
- break;
-
- case 'm':
- /* mAA..AA,LLLL Read LLLL bytes at address AA..AA */
- /* TRY TO READ %x,%x. IF SUCCEED, SET PTR = 0 */
- ptr = &remcomInBuffer[1];
- if (hexToInt(&ptr,&addr))
- if (*(ptr++) == ',')
- if (hexToInt(&ptr,&length))
- {
- ptr = 0;
- mem_err = 0;
- mem2hex((char*) addr, remcomOutBuffer, length, 1);
- if (mem_err)
- {
- strcpy (remcomOutBuffer, "E03");
- debug_error ("memory fault");
- }
- }
-
- if (ptr)
- {
- strcpy(remcomOutBuffer,"E01");
- debug_error("malformed read memory command: %s",remcomInBuffer);
- }
- break;
-
- case 'M':
- /* MAA..AA,LLLL: Write LLLL bytes at address AA.AA return OK */
- /* TRY TO READ '%x,%x:'. IF SUCCEED, SET PTR = 0 */
- ptr = &remcomInBuffer[1];
- if (hexToInt(&ptr,&addr))
- if (*(ptr++) == ',')
- if (hexToInt(&ptr,&length))
- if (*(ptr++) == ':')
- {
- mem_err = 0;
- hex2mem(ptr, (char*) addr, length, 1);
-
- if (mem_err)
- {
- strcpy (remcomOutBuffer, "E03");
- debug_error ("memory fault");
- }
- else
- {
- strcpy(remcomOutBuffer,"OK");
- }
-
- ptr = 0;
- }
- if (ptr)
- {
- strcpy(remcomOutBuffer,"E02");
- debug_error("malformed write memory command: %s",remcomInBuffer);
- }
- break;
-
- case 'c':
- case 's':
- /* cAA..AA Continue at address AA..AA(optional) */
- /* sAA..AA Step one instruction from AA..AA(optional) */
- /* try to read optional parameter, pc unchanged if no parm */
- ptr = &remcomInBuffer[1];
- if (hexToInt(&ptr,&addr))
- {
-/* registers[PC_REGNUM].lo = addr;*/
- fprintf (stderr, "Setting PC to 0x%x\n", addr);
- while (1);
- }
-
- if (remcomInBuffer[0] == 's')
- set_step_traps (frame);
-
- flush_i_cache ();
- return RETURN_TO_PROGRAM;
-
- case 'k':
- /* kill the program */
- KillMe (ldinfo);
- ResumeThread (mainthread);
- return RETURN_TO_PROGRAM;
-
- case 'q': /* Query message */
- if (strcmp (&remcomInBuffer[1], "Offsets") == 0)
- {
- sprintf (remcomOutBuffer, "Text=%x;Data=%x;Bss=%x",
- ldinfo->LDCodeImageOffset,
- ldinfo->LDDataImageOffset,
- ldinfo->LDDataImageOffset + ldinfo->LDDataImageLength);
- }
- else
- sprintf (remcomOutBuffer, "E04, Unknown query %s", &remcomInBuffer[1]);
- break;
- }
-
- /* reply to the request */
- if (! putpacket(remcomOutBuffer))
- return RETURN_TO_NEXT_DEBUGGER;
- }
-}
-
-char *progname;
-
-struct bitRate {
- BYTE bitRate;
- const char *bitRateString;
-};
-
-struct bitRate bitRateTable[] =
-{
- { AIO_BAUD_50 , "50" },
- { AIO_BAUD_75 , "75" },
- { AIO_BAUD_110 , "110" },
- { AIO_BAUD_134p5 , "134.5" },
- { AIO_BAUD_150 , "150" },
- { AIO_BAUD_300 , "300" },
- { AIO_BAUD_600 , "600" },
- { AIO_BAUD_1200 , "1200" },
- { AIO_BAUD_1800 , "1800" },
- { AIO_BAUD_2000 , "2000" },
- { AIO_BAUD_2400 , "2400" },
- { AIO_BAUD_3600 , "3600" },
- { AIO_BAUD_4800 , "4800" },
- { AIO_BAUD_7200 , "7200" },
- { AIO_BAUD_9600 , "9600" },
- { AIO_BAUD_19200 , "19200" },
- { AIO_BAUD_38400 , "38400" },
- { AIO_BAUD_57600 , "57600" },
- { AIO_BAUD_115200, "115200" },
- { -1, NULL }
-};
-
-char dataBitsTable[] = "5678";
-
-char *stopBitsTable[] = { "1", "1.5", "2" };
-
-char parity[] = "NOEMS";
-
-/* Start up. The main thread opens the named serial I/O port, loads
- the named NLM module and then goes to sleep. The serial I/O port
- is named as a board number and a port number. It would be more DOS
- like to provide a menu of available serial ports, but I don't want
- to have to figure out how to do that. */
-
-int
-main (int argc, char **argv)
-{
- int hardware, board, port;
- BYTE bitRate;
- BYTE dataBits;
- BYTE stopBits;
- BYTE parityMode;
- LONG err;
- struct debuggerStructure s;
- int cmdindx;
- char *cmdlin;
- int i;
-
- /* set progname */
- progname = "gdbserve";
-
- /* set default serial line */
- hardware = -1;
- board = 0;
- port = 0;
-
- /* set default serial line characteristics */
- bitRate = AIO_BAUD_9600;
- dataBits = AIO_DATA_BITS_8;
- stopBits = AIO_STOP_BITS_1;
- parityMode = AIO_PARITY_NONE;
-
- cmdindx = 0;
- for (argc--, argv++; *argv; argc--, argv++)
- {
- char *bp;
- char *ep;
-
- if (strnicmp(*argv, "BAUD=", 5) == 0)
- {
- struct bitRate *brp;
-
- bp = *argv + 5;
- for (brp = bitRateTable; brp->bitRate != (BYTE) -1; brp++)
- {
- if (strcmp(brp->bitRateString, bp) == 0)
- {
- bitRate = brp->bitRate;
- break;
- }
- }
-
- if (brp->bitRateString == NULL)
- {
- fprintf(stderr, "%s: %s: unknown or unsupported bit rate",
- progname, bp);
- exit (1);
- }
- }
- else if (strnicmp(*argv, "BOARD=", 6) == 0)
- {
- bp = *argv + 6;
- board = strtol (bp, &ep, 0);
- if (ep == bp || *ep != '\0')
- {
- fprintf (stderr, "%s: %s: expected integer argument\n",
- progname, bp);
- exit(1);
- }
- }
-#if 1 /* FIXME: this option has been depricated */
- else if (strnicmp(*argv, "NODE=", 5) == 0)
- {
- bp = *argv + 5;
- board = strtol (bp, &ep, 0);
- if (ep == bp || *ep != '\0')
- {
- fprintf (stderr, "%s: %s: expected integer argument\n",
- progname, bp);
- exit(1);
- }
- }
-#endif
- else if (strnicmp(*argv, "PORT=", 5) == 0)
- {
- bp = *argv + 5;
- port = strtol (bp, &ep, 0);
- if (ep == bp || *ep != '\0')
- {
- fprintf (stderr, "%s: %s: expected integer argument\n",
- progname, bp);
- exit(1);
- }
- }
- else
- {
- break;
- }
-
- cmdindx++;
- }
-
- if (argc == 0)
- {
- fprintf (stderr,
- "Usage: load %s [options] program [arguments]\n", progname);
- exit (1);
- }
-
- err = AIOAcquirePort (&hardware, &board, &port, &AIOhandle);
- if (err != AIO_SUCCESS)
- {
- switch (err)
- {
- case AIO_PORT_NOT_AVAILABLE:
- fprintf (stderr, "Port not available\n");
- break;
-
- case AIO_BOARD_NUMBER_INVALID:
- case AIO_PORT_NUMBER_INVALID:
- fprintf (stderr, "No such port\n");
- break;
-
- default:
- fprintf (stderr, "Could not open port: %d\n", err);
- break;
- }
-
- exit (1);
- }
-
- err = AIOConfigurePort (AIOhandle, bitRate, dataBits, stopBits, parityMode,
- AIO_HARDWARE_FLOW_CONTROL_OFF);
-
- if (err == AIO_QUALIFIED_SUCCESS)
- {
- AIOPORTCONFIG portConfig;
-
- fprintf (stderr, "Port configuration changed!\n");
-
- portConfig.returnLength = sizeof(portConfig);
- AIOGetPortConfiguration (AIOhandle, &portConfig, NULL);
-
- fprintf (stderr,
- " Bit Rate: %s, Data Bits: %c, Stop Bits: %s, Parity: %c,\
- Flow:%s\n",
- bitRateTable[portConfig.bitRate].bitRateString,
- dataBitsTable[portConfig.dataBits],
- stopBitsTable[portConfig.stopBits],
- parity[portConfig.parityMode],
- portConfig.flowCtrlMode ? "ON" : "OFF");
- }
- else if (err != AIO_SUCCESS)
- {
- fprintf (stderr, "Could not configure port: %d\n", err);
- AIOReleasePort (AIOhandle);
- exit (1);
- }
-
- if (AIOSetExternalControl(AIOhandle, AIO_EXTERNAL_CONTROL,
- (AIO_EXTCTRL_DTR | AIO_EXTCTRL_RTS))
- != AIO_SUCCESS)
- {
- LONG extStatus, chgdExtStatus;
-
- fprintf (stderr, "Could not set desired port controls!\n");
- AIOGetExternalStatus (AIOhandle, &extStatus, &chgdExtStatus);
- fprintf (stderr, "Port controls now: %d, %d\n", extStatus,
- chgdExtStatus);
- }
-
- /* Register ourselves as an alternate debugger. */
- memset (&s, 0, sizeof s);
- s.DDSResourceTag = ((struct ResourceTagStructure *)
- AllocateResourceTag (GetNLMHandle (),
- (BYTE *)"gdbserver",
- DebuggerSignature));
- if (s.DDSResourceTag == 0)
- {
- fprintf (stderr, "AllocateResourceTag failed\n");
- AIOReleasePort (AIOhandle);
- exit (1);
- }
- s.DDSdebuggerEntry = handle_exception;
- s.DDSFlags = TSS_FRAME_BIT;
-
- err = RegisterDebuggerRTag (&s, AT_FIRST);
- if (err != 0)
- {
- fprintf (stderr, "RegisterDebuggerRTag failed\n");
- AIOReleasePort (AIOhandle);
- exit (1);
- }
-
- /* Get the command line we were invoked with, and advance it past
- our name and the board and port arguments. */
- cmdlin = getcmd ((char *) NULL);
- for (i = 0; i < cmdindx; i++)
- {
- while (! isspace (*cmdlin))
- ++cmdlin;
- while (isspace (*cmdlin))
- ++cmdlin;
- }
-
- /* In case GDB is started before us, ack any packets (presumably
- "$?#xx") sitting there. */
- if (! putDebugChar ('+'))
- {
- fprintf (stderr, "putDebugChar failed\n");
- UnRegisterDebugger (&s);
- AIOReleasePort (AIOhandle);
- exit (1);
- }
-
- mainthread = GetThreadID ();
-
- if (remote_debug > 0)
- ConsolePrintf ("About to call LoadModule with \"%s\" %08x\r\n",
- cmdlin, __GetScreenID (GetCurrentScreen()));
-
- /* Start up the module to be debugged. */
- err = LoadModule ((struct ScreenStruct *) __GetScreenID (GetCurrentScreen()),
- (BYTE *)cmdlin, LO_DEBUG);
- if (err != 0)
- {
- fprintf (stderr, "LoadModule failed: %d\n", err);
- UnRegisterDebugger (&s);
- AIOReleasePort (AIOhandle);
- exit (1);
- }
-
- /* Wait for the debugger to wake us up. */
- if (remote_debug > 0)
- ConsolePrintf ("Suspending main thread (%08x)\r\n", mainthread);
- SuspendThread (mainthread);
- if (remote_debug > 0)
- ConsolePrintf ("Resuming main thread (%08x)\r\n", mainthread);
-
- /* If we are woken up, print an optional error message, deregister
- ourselves and exit. */
- if (error_message != NULL)
- fprintf (stderr, "%s\n", error_message);
- UnRegisterDebugger (&s);
- AIOReleasePort (AIOhandle);
- exit (0);
-}
+++ /dev/null
-description "GDB debugger stub"
-version 1,2
-debug
-module clib
-screenname "System Console"
-input gdbserve.O
-output gdbserve.nlm
-start _Prelude
-exit _Stop
-import
- AllocateResourceTag
- ConsolePrintf
- GetCurrentScreen
- GetNLMHandle
- GetThreadID
- KillMe
- LoadModule
- ReadByteAltDebugger
- RegisterDebuggerRTag
- ResumeThread
- SuspendThread
- UnRegisterDebugger
- WriteByteAltDebugger
- _GetCLibNLMLibHandle
- _NWRegisterNLMLibraryUser
- _SetupArgv
- _StartNLM
- _TerminateNLM
- __GetScreenID
- __get_errno_ptr
- exit
- fprintf
- getcmd
- memcmp
- memcpy
- memset
- sprintf
- strcmp
- strcpy
- strlen
- strnicmp
- strtol
+++ /dev/null
-#include <dfs.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <time.h>
-#include <conio.h>
-#include <advanced.h>
-#include <debugapi.h>
-#include <process.h>
-#include <errno.h>
-#include "i386.h"
-
-extern char *mem2hex (void *mem, char *buf, int count, int may_fault);
-extern char *hex2mem (char *buf, void *mem, int count, int may_fault);
-extern int computeSignal (int exceptionVector);
-
-void
-flush_i_cache (void)
-{
-}
-
-/* Get the registers out of the frame information. */
-
-void
-frame_to_registers (struct StackFrame *frame, char *regs)
-{
- /* Copy EAX -> EDI */
- mem2hex (&frame->ExceptionEAX, ®s[0 * 4 * 2], 4 * 8, 0);
-
- /* Copy EIP & PS */
- mem2hex (&frame->ExceptionPC, ®s[8 * 4 * 2], 4 * 2, 0);
-
- /* Copy CS, SS, DS */
- mem2hex (&frame->ExceptionCS, ®s[10 * 4 * 2], 4 * 3, 0);
-
- /* Copy ES */
- mem2hex (&frame->ExceptionES, ®s[13 * 4 * 2], 4 * 1, 0);
-
- /* Copy FS & GS */
- mem2hex (&frame->ExceptionFS, ®s[14 * 4 * 2], 4 * 2, 0);
-}
-
-/* Put the registers back into the frame information. */
-
-void
-registers_to_frame (char *regs, struct StackFrame *frame)
-{
- /* Copy EAX -> EDI */
- hex2mem (®s[0 * 4 * 2], &frame->ExceptionEAX, 4 * 8, 0);
-
- /* Copy EIP & PS */
- hex2mem (®s[8 * 4 * 2], &frame->ExceptionPC, 4 * 2, 0);
-
- /* Copy CS, SS, DS */
- hex2mem (®s[10 * 4 * 2], &frame->ExceptionCS, 4 * 3, 0);
-
- /* Copy ES */
- hex2mem (®s[13 * 4 * 2], &frame->ExceptionES, 4 * 1, 0);
-
- /* Copy FS & GS */
- hex2mem (®s[14 * 4 * 2], &frame->ExceptionFS, 4 * 2, 0);
-}
-
-void
-set_step_traps (struct StackFrame *frame)
-{
- frame->ExceptionSystemFlags |= 0x100;
-}
-
-void
-clear_step_traps (struct StackFrame *frame)
-{
- frame->ExceptionSystemFlags &= ~0x100;
-}
-
-void
-do_status (char *ptr, struct StackFrame *frame)
-{
- int sigval;
-
- sigval = computeSignal (frame->ExceptionNumber);
-
- sprintf (ptr, "T%02x", sigval);
- ptr += 3;
-
- sprintf (ptr, "%02x:", PC_REGNUM);
- ptr = mem2hex (&frame->ExceptionPC, ptr + 3, 4, 0);
- *ptr++ = ';';
-
- sprintf (ptr, "%02x:", SP_REGNUM);
- ptr = mem2hex (&frame->ExceptionESP, ptr + 3, 4, 0);
- *ptr++ = ';';
-
- sprintf (ptr, "%02x:", DEPRECATED_FP_REGNUM);
- ptr = mem2hex (&frame->ExceptionEBP, ptr + 3, 4, 0);
- *ptr++ = ';';
-
- *ptr = '\000';
-}
+++ /dev/null
-/* Register values. All of these values *MUST* agree with tm.h */
-#define SP_REGNUM 4 /* Contains address of top of stack */
-#define PC_REGNUM 8 /* Contains program counter */
-#define DEPRECATED_FP_REGNUM 5 /* Virtual frame pointer */
-#define NUM_REGS 16 /* Number of machine registers */
-#define REGISTER_BYTES (NUM_REGS * 4) /* Total size of registers array */
-
-#define ExceptionPC ExceptionEIP
-#define DECR_PC_AFTER_BREAK 1 /* int 3 leaves PC pointing after insn */
-#define BREAKPOINT {0xcc}
-#define BREAKPOINT_SIZE (sizeof breakpoint_insn)
-
-#define StackFrame T_TSS_StackFrame
+++ /dev/null
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-#include <errno.h>
-
-#include <nwtypes.h>
-#include <nwdfs.h>
-#include <nwconio.h>
-#include <nwadv.h>
-#include <nwdbgapi.h>
-#include <nwthread.h>
-#include "ppc.h"
-
-extern char *mem2hex (void *mem, char *buf, int count, int may_fault);
-extern char *hex2mem (char *buf, void *mem, int count, int may_fault);
-extern int computeSignal (int exceptionVector);
-
-void
-flush_i_cache (void)
-{
-}
-
-/* Get the registers out of the frame information. */
-
-void
-frame_to_registers (struct StackFrame *frame, char *regs)
-{
- mem2hex (&frame->ExceptionState.CsavedRegs, ®s[GP0_REGNUM * 4 * 2], 4 * 32, 0);
-
- mem2hex (&frame->ExceptionState.CSavedFPRegs, ®s[FP0_REGNUM * 4 * 2], 4 * 32, 0);
-
- mem2hex (&frame->ExceptionPC, ®s[PC_REGNUM * 4 * 2], 4 * 1, 0);
-
- mem2hex (&frame->ExceptionState.u.SpecialRegistersEnumerated.CsavedSRR1, ®s[CR_REGNUM * 4 * 2], 4 * 1, 0);
- mem2hex (&frame->ExceptionState.u.SpecialRegistersEnumerated.CsavedLR, ®s[LR_REGNUM * 4 * 2], 4 * 1, 0);
- mem2hex (&frame->ExceptionState.u.SpecialRegistersEnumerated.CsavedCTR, ®s[CTR_REGNUM * 4 * 2], 4 * 1, 0);
- mem2hex (&frame->ExceptionState.u.SpecialRegistersEnumerated.CsavedXER, ®s[XER_REGNUM * 4 * 2], 4 * 1, 0);
- mem2hex (&frame->ExceptionState.u.SpecialRegistersEnumerated.CsavedMQ, ®s[MQ_REGNUM * 4 * 2], 4 * 1, 0);
-}
-
-/* Put the registers back into the frame information. */
-
-void
-registers_to_frame (char *regs, struct StackFrame *frame)
-{
- hex2mem (®s[GP0_REGNUM * 4 * 2], &frame->ExceptionState.CsavedRegs, 4 * 32, 0);
-
- hex2mem (®s[FP0_REGNUM * 4 * 2], &frame->ExceptionState.CSavedFPRegs, 4 * 32, 0);
-
- hex2mem (®s[PC_REGNUM * 4 * 2], &frame->ExceptionPC, 4 * 1, 0);
-
- hex2mem (®s[CR_REGNUM * 4 * 2], &frame->ExceptionState.u.SpecialRegistersEnumerated.CsavedSRR1, 4 * 1, 0);
- hex2mem (®s[LR_REGNUM * 4 * 2], &frame->ExceptionState.u.SpecialRegistersEnumerated.CsavedLR, 4 * 1, 0);
- hex2mem (®s[CTR_REGNUM * 4 * 2], &frame->ExceptionState.u.SpecialRegistersEnumerated.CsavedCTR, 4 * 1, 0);
- hex2mem (®s[XER_REGNUM * 4 * 2], &frame->ExceptionState.u.SpecialRegistersEnumerated.CsavedXER, 4 * 1, 0);
- hex2mem (®s[MQ_REGNUM * 4 * 2], &frame->ExceptionState.u.SpecialRegistersEnumerated.CsavedMQ, 4 * 1, 0);
-}
-
-
-extern volatile int mem_err;
-
-#ifdef ALTERNATE_MEM_FUNCS
-extern int ReadByteAltDebugger (char* addr, char *theByte);
-extern int WriteByteAltDebugger (char* addr, char theByte);
-int
-get_char (char *addr)
-{
- char c;
-
- if (!ReadByteAltDebugger (addr, &c))
- mem_err = 1;
-
- return c;
-}
-
-void
-set_char (char *addr, int val)
-{
- if (!WriteByteAltDebugger (addr, val))
- mem_err = 1;
-}
-#endif
-
-int
-mem_write (char *dst, char *src, int len)
-{
- while (len-- && !mem_err)
- set_char (dst++, *src++);
-
- return mem_err;
-}
-
-union inst
-{
- LONG l;
-
- struct
- {
- union
- {
- struct /* Unconditional branch */
- {
- unsigned opcode : 6; /* 18 */
- signed li : 24;
- unsigned aa : 1;
- unsigned lk : 1;
- } b;
- struct /* Conditional branch */
- {
- unsigned opcode : 6; /* 16 */
- unsigned bo : 5;
- unsigned bi : 5;
- signed bd : 14;
- unsigned aa : 1;
- unsigned lk : 1;
- } bc;
- struct /* Conditional branch to ctr or lr reg */
- {
- unsigned opcode : 6; /* 19 */
- unsigned bo : 5;
- unsigned bi : 5;
- unsigned type : 15; /* 528 = ctr, 16 = lr */
- unsigned lk : 1;
- } bclr;
- } variant;
- } inst;
-};
-
-static LONG saved_inst;
-static LONG *saved_inst_pc = 0;
-static LONG saved_target_inst;
-static LONG *saved_target_inst_pc = 0;
-
-void
-set_step_traps (struct StackFrame *frame)
-{
- union inst inst;
- LONG *target;
- int opcode;
- int ra, rb;
- LONG *pc = (LONG *)frame->ExceptionPC;
-
- inst.l = *pc++;
-
- opcode = inst.inst.variant.b.opcode;
-
- target = pc;
-
- switch (opcode)
- {
- case 18: /* Unconditional branch */
-
- if (inst.inst.variant.b.aa) /* Absolute? */
- target = 0;
- target += inst.inst.variant.b.li;
-
- break;
- case 16: /* Conditional branch */
-
- if (!inst.inst.variant.bc.aa) /* Absolute? */
- target = 0;
- target += inst.inst.variant.bc.bd;
-
- break;
- case 19: /* Cond. branch via ctr or lr reg */
- switch (inst.inst.variant.bclr.type)
- {
- case 528: /* ctr */
- target = (LONG *)frame->ExceptionState.u.SpecialRegistersEnumerated.CsavedCTR;
- break;
- case 16: /* lr */
- target = (LONG *)frame->ExceptionState.u.SpecialRegistersEnumerated.CsavedLR;
- break;
- }
- break;
- }
-
- saved_inst = *pc;
- mem_write (pc, breakpoint_insn, BREAKPOINT_SIZE);
- saved_inst_pc = pc;
-
- if (target != pc)
- {
- saved_target_inst = *target;
- mem_write (target, breakpoint_insn, BREAKPOINT_SIZE);
- saved_target_inst_pc = target;
- }
-}
-
-/* Remove step breakpoints. Returns non-zero if pc was at a step breakpoint,
- zero otherwise. This routine works even if there were no step breakpoints
- set. */
-
-int
-clear_step_traps (struct StackFrame *frame)
-{
- int retcode;
- LONG *pc = (LONG *)frame->ExceptionPC;
-
- if (saved_inst_pc == pc || saved_target_inst_pc == pc)
- retcode = 1;
- else
- retcode = 0;
-
- if (saved_inst_pc)
- {
- mem_write (saved_inst_pc, saved_inst, BREAKPOINT_SIZE);
- saved_inst_pc = 0;
- }
-
- if (saved_target_inst_pc)
- {
- mem_write (saved_target_inst_pc, saved_target_inst, BREAKPOINT_SIZE);
- saved_target_inst_pc = 0;
- }
-
- return retcode;
-}
-
-void
-do_status (char *ptr, struct StackFrame *frame)
-{
- int sigval;
-
- sigval = computeSignal (frame->ExceptionNumber);
-
- sprintf (ptr, "T%02x", sigval);
- ptr += 3;
-
- sprintf (ptr, "%02x:", PC_REGNUM);
- ptr = mem2hex (&frame->ExceptionPC, ptr + 3, 4, 0);
- *ptr++ = ';';
-
- sprintf (ptr, "%02x:", SP_REGNUM);
- ptr = mem2hex (&frame->ExceptionState.CsavedRegs[SP_REGNUM], ptr + 3, 4, 0);
- *ptr++ = ';';
-
- sprintf (ptr, "%02x:", LR_REGNUM);
- ptr = mem2hex (&frame->ExceptionState.CsavedRegs[LR_REGNUM], ptr + 3, 4, 0);
- *ptr++ = ';';
-
- *ptr = '\000';
-}
+++ /dev/null
-typedef long Long;
-
-/* The following enum is used to access the special registers in
- the saved machine state. */
-
-typedef enum
-{
- kDc_SavedPC = 0, /* really SRR0 */
- kDc_SavedMSR = 1, /* really SRR1 */
- kDc_SavedCR = 2,
- kDc_SavedLR = 3,
- kDc_SavedDSISR = 4,
- kDc_SavedDAR = 5,
- kDc_SavedXER = 6,
- kDc_SavedCTR = 7,
- kDc_SavedSDR1 = 8,
- kDc_SavedRTCU = 9,
- kDc_SavedRTCL = 10,
- kDc_SavedDEC = 11,
- kDc_SavedSR00 = 12, /* The Segement Registers are consecutive */
- kDc_SavedSR01 = 13, /* kDc_SavedSR00 + n is supported */
- kDc_SavedSR02 = 14,
- kDc_SavedSR03 = 15,
- kDc_SavedSR04 = 16,
- kDc_SavedSR05 = 17,
- kDc_SavedSR06 = 18,
- kDc_SavedSR07 = 19,
- kDc_SavedSR08 = 20,
- kDc_SavedSR09 = 21,
- kDc_SavedSR10 = 22,
- kDc_SavedSR11 = 23,
- kDc_SavedSR12 = 24,
- kDc_SavedSR13 = 25,
- kDc_SavedSR14 = 26,
- kDc_SavedSR15 = 27,
- kDc_SavedFPSCR = 29,
- kDc_SavedMQ = 30,
- kDc_SavedBAT0U = 31,
- kDc_SavedBAT0L = 32,
- kDc_SavedBAT1U = 33,
- kDc_SavedBAT1L = 34,
- kDc_SavedBAT2U = 35,
- kDc_SavedBAT2L = 36,
- kDc_SavedBAT3U = 37,
- kDc_SavedBAT3L = 38,
-
- kNumberSpecialRegisters = 39
-} Dc_SavedRegisterName;
-
-/* Access to floating points is not very easy. This allows the number to be
- accessed both as a floating number and as a pair of Longs. */
-
-typedef union
-{
- double asfloat; /* access the variable as a floating number */
- struct
- {
- Long high;
- Long low;
- }
- asLONG; /* access the variable as two Longs */
-} FloatingPoints;
-
-/* The following is the standard record for Saving a machine state */
-
-struct SavedMachineState
-{
- FloatingPoints CSavedFPRegs[32]; /* The floating point registers [0->31] */
- /* ***32bit assumption*** */
- Long CsavedRegs[32]; /* space to save the General Registers */
- /* These are saved 0->31 */
- Long CexReason;
- Long SavedDomainID;
- union
- { /* must be 8-byte aligned, so doubleFPSCR is 8-byte aligned */
- struct
- {
- Long CsavedSRR0; /* Index 0 - The saved PC */
- Long CsavedSRR1; /* 1 saved MSR */
- Long CsavedCR; /* 2 */
- Long CsavedLR; /* 3 */
- Long CsavedDSISR; /* 4 */
- Long CsavedDAR; /* 5 */
-
- Long CsavedXER; /* 6 */
- Long CsavedCTR; /* 7 */
- Long CsavedSDR1; /* 8 */
- Long CsavedRTCU; /* 9 */
- Long CsavedRTCL; /* 10 */
- Long CsavedDEC; /* 11 */
- Long CsavedSR0; /* 12 */
- Long CsavedSR1; /* 13 */
- Long CsavedSR2; /* 14 */
- Long CsavedSR3; /* 15 */
- Long CsavedSR4; /* 16 */
- Long CsavedSR5; /* 17 */
- Long CsavedSR6; /* 18 */
- Long CsavedSR7; /* 19 */
- Long CsavedSR8; /* 20 */
- Long CsavedSR9; /* 21 */
- Long CsavedSR10; /* 22 */
- Long CsavedSR11; /* 23 */
- Long CsavedSR12; /* 24 */
- Long CsavedSR13; /* 25 */
- Long CsavedSR14; /* 26 */
- Long CsavedSR15; /* 27 */
- /* CdoubleFPSCR must be double word aligned */
- Long CdoubleFPSCR; /* 28 this is the upper part of the store and has
- no meaning */
- Long CsavedFPSCR; /* 29 */
- Long CsavedMQ; /* 30 */
- Long CsavedBAT0U; /* 31 */
- Long CsavedBAT0L; /* 32 */
- Long CsavedBAT1U; /* 33 */
- Long CsavedBAT1L; /* 34 */
- Long CsavedBAT2U; /* 35 */
- Long CsavedBAT2L; /* 36 */
- Long CsavedBAT3U; /* 37 */
- Long CsavedBAT3L; /* 38 */
- }
- SpecialRegistersEnumerated;
-
- Long SpecialRegistersIndexed[kNumberSpecialRegisters];
- } u;
-
- Long Padding[3]; /* Needed for quad-word alignment */
-};
-
-struct StackFrame
-{
- LONG *ExceptionDomainID;
- /*ProcessorStructure*/ int *ExceptionProcessorID;
- BYTE *ExceptionDescription;
- LONG ExceptionFlags;
- LONG ExceptionErrorCode;
- LONG ExceptionNumber;
- struct SavedMachineState ExceptionState;
-};
-
-/* Register values. All of these values *MUST* agree with tm.h */
-#define GP0_REGNUM 0 /* GPR register 0 */
-#define SP_REGNUM 1 /* Contains address of top of stack */
-#define FP0_REGNUM 32 /* FPR (Floating point) register 0 */
-#define PC_REGNUM 64 /* Contains program counter */
-#define PS_REGNUM 65 /* Processor (or machine) status (%msr) */
-#define CR_REGNUM 66 /* Condition register */
-#define LR_REGNUM 67 /* Link register */
-#define CTR_REGNUM 68 /* Count register */
-#define XER_REGNUM 69 /* Fixed point exception registers */
-#define MQ_REGNUM 70 /* Multiply/quotient register */
-#define NUM_REGS 71 /* Number of machine registers */
-#define REGISTER_BYTES (420) /* Total size of registers array */
-
-#define ExceptionPC ExceptionState.u.SpecialRegistersEnumerated.CsavedSRR0
-#define DECR_PC_AFTER_BREAK 0 /* PPCs get this right! */
-#define BREAKPOINT {0x7d, 0x82, 0x10, 0x08}
-extern unsigned char breakpoint_insn[];
-#define BREAKPOINT_SIZE 4
-
-#if 0
-#define ALTERNATE_MEM_FUNCS /* We need our own get_char/set_char */
-#endif
-
-extern int get_char (char *addr);
-extern void set_char (char *addr, int val);
+++ /dev/null
-/*===========================================================================
-= Novell Standard C Library for NetWare Loadable Modules
-=
-= Unpublished Copyright (C) 1993 by Novell, Inc. All rights reserved.
-=
-= No part of this file may be duplicated, revised, translated, localized or
-= modified in any manner or compiled, linked or uploaded or downloaded to or
-= from any computer system without the prior written consent of Novell, Inc.
-==============================================================================
-= The object produced by compiling this file is for use by the client of this
-= library and is not linked in; Prelude.Obj is therefore one of the files to
-= be distributed with CLib.NLM and its headers.
-==============================================================================
-*/
-
-#include <stddef.h>
-#if defined(__netware__) && defined(__i386__)
-#define TERMINATE_BY_UNLOAD 5
-#else
-#include <nwpre.h>
-#endif
-/*#include "libhooks.h"*/
-
-extern int main (int, char **);
-
-static int NLMID;
-
-
-void _Stop( void )
-{
- _TerminateNLM(NLMID, NULL, TERMINATE_BY_UNLOAD);
-}
-
-int _cstart_( void )
-{
- return _SetupArgv(main);
-}
-
-int _Prelude
-(
- int NLMHandle,
- int initErrorScreenID,
- char *commandLine,
- char *loadDirectoryPath,
- int uninitializedDataLength,
- int NLMFileHandle,
- int (*readRoutineP)(),
- int customDataOffset,
- int customDataSize
-)
-{
- int rc;
-
- rc = _StartNLM(NLMHandle,
- initErrorScreenID,
- commandLine,
- loadDirectoryPath,
- uninitializedDataLength,
- NLMFileHandle,
- readRoutineP,
- customDataOffset,
- customDataSize,
- &NLMID,
- _cstart_);
-
- return rc;
-}