From 6ec7e4d36a85990132baf8b0166614f273e7b31d Mon Sep 17 00:00:00 2001 From: Stan Shebs Date: Thu, 16 Jun 1994 22:02:24 +0000 Subject: [PATCH] * configure.in: Improve sorting/formatting of hosts and targets. (i[34]86-*-mach3*, i[34]86-*-osf1mk*, mips-*-mach3*, m88*-*-mach3*, ns32k-*-mach3*): Recognize. * Makefile.in (gdb-stop): New target. * gdb-stop.c: New file, utility to gets attention of waiting GDBs in Mach 3. --- gdb/ChangeLog | 9 ++++ gdb/Makefile.in | 8 +++- gdb/configure.in | 74 +++++++++++++++---------------- gdb/gdb-stop.c | 110 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 164 insertions(+), 37 deletions(-) create mode 100644 gdb/gdb-stop.c diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7da13985111..05c18d20ea1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +Thu Jun 16 14:41:37 1994 Stan Shebs (shebs@andros.cygnus.com) + + * configure.in: Improve sorting/formatting of hosts and targets. + (i[34]86-*-mach3*, i[34]86-*-osf1mk*, mips-*-mach3*, + m88*-*-mach3*, ns32k-*-mach3*): Recognize. + * Makefile.in (gdb-stop): New target. + * gdb-stop.c: New file, utility to gets attention of waiting GDBs + in Mach 3. + Wed Jun 15 00:41:03 1994 Tom Lord (lord@rtl.cygnus.com) * top.c (gdb_init): Init current_directory in gdb_init. Probably diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 0590761f8d6..adad21dc642 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -1,4 +1,4 @@ -#Copyright 1989, 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. +# Copyright 1989, 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. # This file is part of GDB. @@ -587,6 +587,12 @@ saber_gdb: $(SFILES) $(DEPFILES) copying.c version.c echo "Load .c corresponding to:" $(DEPFILES) +# A Mach 3.0 program to force gdb back to command level + +gdb-stop: gdb-stop.o + ${CC-LD} $(GLOBAL_CFLAGS) $(LDFLAGS) -o gdb-stop \ + gdb-stop.o $(CLIBS) $(LOADLIBES) + # This is useful when debugging GDB, because some Unix's don't let you run GDB # on itself without copying the executable. So "make gdb1" will make # gdb and put a copy in gdb1, and you can run it with "gdb gdb1". diff --git a/gdb/configure.in b/gdb/configure.in index 2496eaf1c76..f4685386389 100644 --- a/gdb/configure.in +++ b/gdb/configure.in @@ -1,7 +1,13 @@ -configdirs="doc testsuite" +# This file is a shell script fragment that supplies the information +# necessary to tailor a template configure script into the configure +# script appropriate for this directory. For more information, check +# any existing configure script. + srcname="GDB" srctrigger=main.c +configdirs="doc testsuite" + # per-host: # Map host cpu into the config cpu subdirectory name. @@ -13,6 +19,7 @@ c[12]) gdb_host_cpu=convex ;; hppa*) gdb_host_cpu=pa ;; i[34]86) gdb_host_cpu=i386 ;; m68*) gdb_host_cpu=m68k ;; +m88*) gdb_host_cpu=m88k ;; np1) gdb_host_cpu=gould ;; pyramid) gdb_host_cpu=pyr ;; *) gdb_host_cpu=$host_cpu ;; @@ -32,25 +39,23 @@ arm-*-*) gdb_host=arm ;; c[12]-*-*) gdb_host=convex ;; hppa*-*-bsd*) gdb_host=hppabsd ;; -hppa*-*-hpux*) gdb_host=hppahpux ;; hppa*-*-hiux*) gdb_host=hppahpux ;; +hppa*-*-hpux*) gdb_host=hppahpux ;; hppa*-*-osf*) gdb_host=hppabsd ;; i[34]86-ncr-*) gdb_host=ncr3000 ;; -i[34]86-sequent-bsd*) gdb_host=symmetry ;; #dynix +i[34]86-sequent-bsd*) gdb_host=symmetry ;; # dynix i[34]86-sequent-sysv4*) gdb_host=ptx4 ;; i[34]86-sequent-sysv*) gdb_host=ptx ;; - i[34]86-*-aix*) gdb_host=i386aix ;; i[34]86-*-bsd*) gdb_host=i386bsd ;; i[34]86-*-netbsd*) gdb_host=i386bsd ;; -i[34]86-*-go32*) gdb_host=go32 ;; +i[34]86-*-go32*) gdb_host=go32 ;; i[34]86-*-linux*) gdb_host=linux ;; i[34]86-*-lynxos*) gdb_host=i386lynx ;; -# Obsolete I suspect -# i[34]86-*-mach) gdb_host=i386mach ;; -i[34]86-*-mach*) gdb_host=i386m3 ;; -i[34]86-*-osf1mk*) gdb_host=i386mk ;; +i[34]86-*-mach3*) gdb_host=mach3 ;; +i[34]86-*-mach*) gdb_host=i386mach ;; +i[34]86-*-osf1mk*) gdb_host=osf1mk ;; i[34]86-*-sco3.2v4*) gdb_host=i386sco4 ;; i[34]86-*-sco*) gdb_host=i386sco ;; i[34]86-*-solaris*) gdb_host=i386sol2 ;; @@ -85,24 +90,26 @@ m68*-sun-*) gdb_host=sun3os4 ;; m88*-motorola-sysv4*) gdb_host=delta88v4 ;; m88*-motorola-sysv*) gdb_host=delta88 ;; -# I suspect this is just used for DGUX +m88*-*-mach3*) gdb_host=mach3 ;; m88*-*-*) gdb_host=m88k ;; +mips-dec-mach3*) gdb_host=mach3 ;; mips-dec-*) gdb_host=decstation ;; mips-little-*) gdb_host=littlemips ;; mips-sgi-irix3*) gdb_host=irix3 ;; mips-sgi-irix4*) gdb_host=irix4 ;; mips-sgi-irix5*) gdb_host=irix5 ;; mips-sony-*) gdb_host=news-mips ;; +mips-*-mach3*) gdb_host=mach3 ;; mips-*-sysv4*) gdb_host=mipsv4 ;; mips-*-sysv*) gdb_host=riscos ;; mips-*-riscos*) gdb_host=riscos ;; -mips-*-mach*) gdb_host=mipsm3 ;; none-*-*) gdb_host=none ;; np1-*-*) gdb_host=np1 ;; +ns32k-*-mach3*) gdb_host=mach3 ;; ns32k-umax-*) gdb_host=umax ;; ns32k-utek-sysv*) gdb_host=merlin ;; @@ -149,14 +156,13 @@ c[12]) gdb_target_cpu=convex ;; hppa*) gdb_target_cpu=pa ;; i[34]86) gdb_target_cpu=i386 ;; m68*) gdb_target_cpu=m68k ;; -m8*) gdb_target_cpu=m88k ;; +m88*) gdb_target_cpu=m88k ;; mips*) gdb_target_cpu=mips ;; np1) gdb_target_cpu=gould ;; pn) gdb_target_cpu=gould ;; pyramid) gdb_target_cpu=pyr ;; sparclite*) gdb_target_cpu=sparc - configdirs="${configdirs} sparclite" - ;; + configdirs="${configdirs} sparclite" ;; sparc*) gdb_target_cpu=sparc ;; *) gdb_target_cpu=$target_cpu ;; @@ -177,8 +183,8 @@ a29k-*-udi*) gdb_target=a29k-udi ;; alpha-*-osf*) gdb_target=alpha-osf1 ;; alpha-*-netware*) gdb_target=alpha-nw - configdirs="${configdirs} nlm" - ;; + configdirs="${configdirs} nlm" ;; + arm-*-*) gdb_target=arm ;; c1-*-*) gdb_target=convex ;; @@ -198,19 +204,16 @@ i[34]86-sequent-bsd*) gdb_target=symmetry ;; i[34]86-sequent-sysv4*) gdb_target=ptx4 ;; i[34]86-sequent-sysv*) gdb_target=ptx ;; i[34]86-ncr-*) gdb_target=ncr3000 ;; - i[34]86-*-aout*) gdb_target=i386aout ;; i[34]86-*-coff*) gdb_target=i386v ;; i[34]86-*-elf*) gdb_target=i386v ;; - i[34]86-*-aix*) gdb_target=i386aix ;; i[34]86-*-bsd*) gdb_target=i386bsd ;; i[34]86-*-netbsd*) gdb_target=i386bsd ;; i[34]86-*-os9k) gdb_target=i386os9k ;; i[34]86-*-go32*) gdb_target=i386aout ;; i[34]86-*-lynxos*) gdb_target=i386lynx - configdirs="${configdirs} gdbserver" - ;; + configdirs="${configdirs} gdbserver" ;; i[34]86-*-solaris*) gdb_target=i386sol2 ;; i[34]86-*-sunos*) gdb_target=sun386 ;; i[34]86-*-sysv4*) gdb_target=i386v4 ;; @@ -218,7 +221,8 @@ i[34]86-*-sco*) gdb_target=i386v ;; i[34]86-*-sysv*) gdb_target=i386v ;; i[34]86-*-linux*) gdb_target=linux ;; i[34]86-*-isc*) gdb_target=i386v ;; -i[34]86-*-mach*) gdb_target=i386m3 ;; +i[34]86-*-mach3*) gdb_target=mach3 ;; +i[34]86-*-mach*) gdb_target=i386mach ;; i[34]86-*-netware*) gdb_target=i386nw ;; i[34]86-*-osf1mk*) gdb_target=i386mk ;; @@ -232,43 +236,41 @@ i960-*-vxworks*) gdb_target=vxworks960 ;; m68000-*-sunos3*) gdb_target=sun2os3 ;; m68000-*-sunos4*) gdb_target=sun2os4 ;; -m68*-cbm-sysv4*) gdb_target=amix ;; -m68*-bull-sysv*) gdb_target=dpx2 ;; -m68*-hp-bsd*) gdb_target=hp300bsd ;; -m68*-hp-hpux*) gdb_target=hp300hpux ;; - m68*-altos-*) gdb_target=altos ;; m68*-apollo*-bsd*) gdb_target=apollo68b ;; m68*-att-*) gdb_target=3b1 ;; +m68*-bull-sysv*) gdb_target=dpx2 ;; +m68*-cbm-sysv4*) gdb_target=amix ;; m68*-cisco*-*) gdb_target=cisco ;; m68*-ericsson-*) gdb_target=es1800 ;; +m68*-hp-bsd*) gdb_target=hp300bsd ;; +m68*-hp-hpux*) gdb_target=hp300hpux ;; m68*-isi-*) gdb_target=isi ;; m68*-motorola-*) gdb_target=delta68 ;; m68*-netx-*) gdb_target=vxworks68 ;; m68*-sony-*) gdb_target=news ;; m68*-tandem-*) gdb_target=st2000 ;; - m68*-rom68k-*) gdb_target=monitor ;; m68*-*bug-*) gdb_target=monitor ;; m68*-monitor-*) gdb_target=monitor ;; - m68*-*-aout*) gdb_target=monitor ;; m68*-*-coff*) gdb_target=monitor ;; m68*-*-elf*) gdb_target=monitor ;; m68*-*-lynxos*) gdb_target=m68klynx - configdirs="${configdirs} gdbserver" - ;; + configdirs="${configdirs} gdbserver" ;; m68*-*-os68k*) gdb_target=os68k ;; m68*-*-sunos3*) gdb_target=sun3os3 ;; m68*-*-sunos4*) gdb_target=sun3os4 ;; m68*-*-vxworks*) gdb_target=vxworks68 ;; m88*-motorola-sysv4*) gdb_target=delta88v4 ;; +m88*-*-mach3*) gdb_target=mach3 ;; m88*-motorola-*) gdb_target=delta88 ;; m88*-*-*) gdb_target=m88k ;; mips64*-big-*) gdb_target=bigmips64 ;; mips*-big-*) gdb_target=bigmips ;; +mips*-dec-mach3*) gdb_target=mach3 ;; mips*-dec-*) gdb_target=decstation ;; mips64*el-*-ecoff*) gdb_target=idtl64 ;; mips64*-idt-ecoff*) gdb_target=idt64 ;; @@ -282,15 +284,16 @@ mips*-little-*) gdb_target=littlemips ;; mips*-sgi-irix5*) gdb_target=irix5 ;; mips*-sgi-*) gdb_target=irix3 ;; mips*-sony-*) gdb_target=bigmips ;; +mips*-*-mach3*) gdb_target=mach3 ;; mips*-*-sysv4*) gdb_target=mipsv4 ;; mips*-*-sysv*) gdb_target=bigmips ;; mips*-*-riscos*) gdb_target=bigmips ;; -mips*-*-mach*) gdb_target=mipsm3 ;; none-*-*) gdb_target=none ;; np1-*-*) gdb_target=np1 ;; +ns32k-*-mach3*) gdb_target=mach3 ;; ns32k-utek-sysv*) gdb_target=merlin ;; ns32k-utek-*) gdb_target=umax ;; @@ -305,22 +308,21 @@ sparc-*-aout*) gdb_target=sparc-em ;; sparc-*-coff*) gdb_target=sparc-em ;; sparc-*-elf*) gdb_target=sparc-em ;; sparc-*-lynxos*) gdb_target=sparclynx - configdirs="${configdirs} gdbserver" - ;; + configdirs="${configdirs} gdbserver" ;; sparc-*-solaris2*) gdb_target=sun4sol2 ;; sparc-*-sunos4*) gdb_target=sun4os4 ;; sparc-*-vxworks*) gdb_target=vxsparc ;; sparc-*-*) gdb_target=sun4os4 ;; sparclite*-*-*) gdb_target=sparclite ;; -# start-sanitize-v9 -sparc64-*-*) gdb_target_cpu=sparc gdb_target=sp64 ;; -# end-sanitize-v9 +sparc64-*-*) gdb_target=sp64 ;; tahoe-*-*) gdb_target=tahoe ;; + vax-*-*) gdb_target=vax ;; z8k-*-sim*) gdb_target=z8ksim ;; z8k-*-coff*) gdb_target=z8ksim ;; + esac if [ ! -f ${srcdir}/config/${gdb_target_cpu}/${gdb_target}.mt ]; then diff --git a/gdb/gdb-stop.c b/gdb/gdb-stop.c new file mode 100644 index 00000000000..abb3d696d3e --- /dev/null +++ b/gdb/gdb-stop.c @@ -0,0 +1,110 @@ +/* A client to make GDB return to command level in Mach 3. + Copyright (C) 1992, 1993 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* Authors: Jukka Virtanen and Peter Stout . + + A simple client to make GDB (versions 4.4 and later) on Mach 3 return + to the command level when it is waiting for the inferior to stop. + + Actions: Lookup the send right to the GDB message port from the + NetMsgServer. + + Send an asynchronous message with msgh_id + GDB_MESSAGE_ID_STOP to that port. + */ + +#include + +#include "defs.h" + +#include +#include +#include +#include +#include + +void +main (argc, argv) + int argc; + char **argv; +{ + kern_return_t kr; + mach_msg_header_t msg; + mach_port_t gdb_port; + char *host; + char *name; + + if (argc == 1) + argv[argc++] = GDB_DEF_NAME; + + if (argc != 2) + { + fprintf (stderr, "Usage : %s \n", argv[0]); + exit (1); + } + + /* Allow the user to specify a remote host. */ + host = strchr (argv[1], '@'); + if (host) + *(host++) = '\0'; + else + host = (char *) ""; + + name = malloc (strlen (argv[1]) + sizeof(GDB_NAME_PREFIX)); + if (name == NULL) + { + fprintf (stderr, "Unable to allocate memory for name."); + exit (1); + } + + strcpy (name, GDB_NAME_PREFIX); + strcat (name, argv[1]); + + /* Look up the GDB service port. For convenience, add the + GDB_NAME_PREFIX the argument before looking up the name. + For backwards compatibility, do it without. */ + + kr = netname_look_up (name_server_port, host, name, &gdb_port); + if (kr == NETNAME_NOT_CHECKED_IN) + kr = netname_look_up (name_server_port, host, argv[1], &gdb_port); + if (kr != KERN_SUCCESS) + { + fprintf (stderr, "Unable to lookup the GDB service port: %s.\n", + mach_error_string(kr)); + exit(1); + } + + /* Code generated by mig stub generator, with minor cleanups :-) + + simpleroutine stop_inferior(gdb_port : mach_port_t); */ + + msg.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_COPY_SEND, 0); + msg.msgh_remote_port = gdb_port; + msg.msgh_local_port = MACH_PORT_NULL; + msg.msgh_size = sizeof(msg); + msg.msgh_seqno = 0; + msg.msgh_id = GDB_MESSAGE_ID_STOP; + + kr = mach_msg_send (&msg); + if (kr != KERN_SUCCESS) + fprintf (stderr, "Message not sent, return code %d : %s\n", kr, + mach_error_string (kr)); + + exit (kr != KERN_SUCCESS); +} -- 2.30.2