Obsolete sun386i.
authorAndrew Cagney <cagney@redhat.com>
Wed, 11 Apr 2001 22:39:07 +0000 (22:39 +0000)
committerAndrew Cagney <cagney@redhat.com>
Wed, 11 Apr 2001 22:39:07 +0000 (22:39 +0000)
12 files changed:
gdb/ChangeLog
gdb/Makefile.in
gdb/NEWS
gdb/TODO
gdb/config/i386/nm-sun386.h
gdb/config/i386/sun386.mh
gdb/config/i386/sun386.mt
gdb/config/i386/tm-sun386.h
gdb/config/i386/xm-sun386.h
gdb/configure.host
gdb/configure.tgt
gdb/sun386-nat.c

index dc786c54a1fa270979e0d71e3f0b62786da0389c..be0097115e6ab39083b48342a5a20ad507dd6c17 100644 (file)
@@ -1,3 +1,19 @@
+2001-04-09  Andrew Cagney  <ac131313@redhat.com>
+
+       Obsolete i[3456]86-*-sunos* (aka Sun386) host and target.
+       * config/i386/sun386.mh: Obsolete.
+       * config/i386/sun386.mt: Obsolete.
+       * config/i386/xm-sun386.h: Obsolete.
+       * config/i386/tm-sun386.h: Obsolete.
+       * config/i386/nm-sun386.h: Obsolete.
+       * Makefile.in (ALLDEPFILES): Delete sun386-nat.c.
+       (sun386-nat.o): Target is obsolete.
+       * sun386-nat.c: Obsolete.
+       * configure.tgt (i[3456]86-*-sunos*): Obsolete.
+       * configure.host (i[3456]86-*-sunos*): Obsolete.
+       * NEWS: Update.
+       * TODO: Update.
+
 2001-04-10  J.T. Conklin  <jtc@redback.com>
 
        * maint.c: Fix typo in comment.
index f7abfd8553b66f7b47f138e9bd356d62e37cb0ce..5853a5e236b91a4c64ba2a1655b1d78ed5d7415b 100644 (file)
@@ -1163,7 +1163,7 @@ ALLDEPFILES = 29k-share/udi/udip2soc.c 29k-share/udi/udr.c \
        rs6000-nat.c rs6000-tdep.c \
        ser-go32.c ser-pipe.c ser-ocd.c ser-tcp.c \
        sh-tdep.c solib.c sparc-nat.c \
-       sparc-tdep.c sparcl-tdep.c sun3-nat.c sun386-nat.c \
+       sparc-tdep.c sparcl-tdep.c sun3-nat.c \
        symm-tdep.c symm-nat.c \
        vax-tdep.c \
        vx-share/xdr_ld.c vx-share/xdr_ptrace.c vx-share/xdr_rdb.c \
@@ -1938,7 +1938,7 @@ ax-gdb.o: ax-gdb.c $(defs_h) $(symtab_h) symfile.h $(gdbtypes_h) \
 
 sun3-nat.o: sun3-nat.c $(defs_h) $(gdbcore_h) $(inferior_h) $(regcache_h)
 
-sun386-nat.o: sun386-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(regcache_h)
+# OBSOLETE sun386-nat.o: sun386-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(regcache_h)
 
 symfile.o: symfile.c $(breakpoint_h) complaints.h $(defs_h) \
        $(expression_h) gdb-stabs.h $(gdbcmd_h) $(gdbcore_h) \
index 94bcf92f6e9f1d2fb3b444387d0e0f16ff9462e8..8f3404d0c7fde32ea0185d1959d618413d1f8f31 100644 (file)
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -24,6 +24,7 @@ Ultracomputer (29K) running Sym1              a29k-nyu-sym1 a29k-*-kern*
 PowerPC Solaris                                        powerpcle-*-solaris*
 PowerPC Windows NT                             powerpcle-*-cygwin32
 PowerPC Netware                                        powerpc-*-netware*
+SunOS 4.0.Xi on i386                           i[3456]86-*-sunos*
 
 stuff.c (Program to stuff files into a specially prepared space in kdb)
 kdb-start.c (Main loop for the standalone kernel debugger)
index b0fec2ae8c217ff2edb789c73c5f499d2153fa31..d4ec3b00041a971b4e9983432359668b88bd008d 100644 (file)
--- a/gdb/TODO
+++ b/gdb/TODO
@@ -200,7 +200,7 @@ Steps:
                  powerpcle-*-cygwin*   powerpc  cygwin   cygwin     yes
                  powerpc-*-netware*    powerpc  -        ppc-nw     yes
                  w65-*-*               w65      -        w65        yes
-                 i[3456]86-*-sunos*    i386     sun386   sun386
+                 i[3456]86-*-sunos*    i386     sun386   sun386     yes
 
                (DONE)
 
index f3a5ea043ecb96935797bfbfe159ccde6c0d427d..887ce69dd4f82acb26256b246bf00c7a589bae2e 100644 (file)
@@ -1,30 +1,30 @@
-/* Native support for Sun 386i, for GDB, the GNU debugger.
-   Copyright 1986, 1987, 1989, 1992, 1996 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#include "regcache.h"
-
-/* Do implement the attach and detach commands.  */
-
-#define ATTACH_DETACH
-
-/* Override copies of {fetch,store}_inferior_registers in infptrace.c.  */
-#define FETCH_INFERIOR_REGISTERS
-
-#define CHILD_PREPARE_TO_STORE() read_register_bytes (0, NULL, REGISTER_BYTES)
+/* OBSOLETE /* Native support for Sun 386i, for GDB, the GNU debugger. */
+/* OBSOLETE    Copyright 1986, 1987, 1989, 1992, 1996 Free Software Foundation, Inc. */
+/* OBSOLETE  */
+/* OBSOLETE    This file is part of GDB. */
+/* OBSOLETE  */
+/* OBSOLETE    This program is free software; you can redistribute it and/or modify */
+/* OBSOLETE    it under the terms of the GNU General Public License as published by */
+/* OBSOLETE    the Free Software Foundation; either version 2 of the License, or */
+/* OBSOLETE    (at your option) any later version. */
+/* OBSOLETE  */
+/* OBSOLETE    This program is distributed in the hope that it will be useful, */
+/* OBSOLETE    but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* OBSOLETE    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the */
+/* OBSOLETE    GNU General Public License for more details. */
+/* OBSOLETE  */
+/* OBSOLETE    You should have received a copy of the GNU General Public License */
+/* OBSOLETE    along with this program; if not, write to the Free Software */
+/* OBSOLETE    Foundation, Inc., 59 Temple Place - Suite 330, */
+/* OBSOLETE    Boston, MA 02111-1307, USA.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #include "regcache.h" */
+/* OBSOLETE  */
+/* OBSOLETE /* Do implement the attach and detach commands.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #define ATTACH_DETACH */
+/* OBSOLETE  */
+/* OBSOLETE /* Override copies of {fetch,store}_inferior_registers in infptrace.c.  */ */
+/* OBSOLETE #define FETCH_INFERIOR_REGISTERS */
+/* OBSOLETE  */
+/* OBSOLETE #define CHILD_PREPARE_TO_STORE() read_register_bytes (0, NULL, REGISTER_BYTES) */
index d2496610b173c4f08bfe058e8b87d1ee18a3af7c..f7b65d5cc7d119fee97bae36cf1fb88f84d7bc66 100644 (file)
@@ -1,5 +1,5 @@
-# Host: Sun 386i
-XDEPFILES= 
-XM_FILE= xm-sun386.h
-NAT_FILE= nm-sun386.h
-NATDEPFILES= infptrace.o inftarg.o fork-child.o sun386-nat.o
+# OBSOLETE # Host: Sun 386i
+# OBSOLETE XDEPFILES= 
+# OBSOLETE XM_FILE= xm-sun386.h
+# OBSOLETE NAT_FILE= nm-sun386.h
+# OBSOLETE NATDEPFILES= infptrace.o inftarg.o fork-child.o sun386-nat.o
index 2cbe3cdadf7077f41c711cb33732b87391d30100..2102be0ef30842912e83c4530401d637f63f6d7a 100644 (file)
@@ -1,3 +1,3 @@
-# Target: Sun 386i target configuration file.
-TDEPFILES= i386-tdep.o solib.o solib-svr4.o solib-legacy.o
-TM_FILE= tm-sun386.h
+# OBSOLETE # Target: Sun 386i target configuration file.
+# OBSOLETE TDEPFILES= i386-tdep.o solib.o solib-svr4.o solib-legacy.o
+# OBSOLETE TM_FILE= tm-sun386.h
index 01212af8362834e2f793d331e4b1c2ee840a9a1f..bc18f175f43d34cdc0fe3fdfb4c844747c01cf9c 100644 (file)
-/* Parameters for a Sun 386i target machine, for GDB, the GNU debugger.
-   Copyright 1986, 1987, 1991, 1992, 1993, 1994, 1995, 1999, 2000
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#if !defined (TM_SUN386_H)
-#define TM_SUN386_H 1
-
-#include "regcache.h"
-#include "i386/tm-i386.h"
-
-#ifndef sun386
-#define sun386
-#endif
-#define SUNOS4
-#define USE_MACHINE_REG_H
-
-/* Perhaps some day this will work even without the following #define */
-#define COFF_ENCAPSULATE
-
-#ifdef COFF_ENCAPSULATE
-/* Avoid conflicts between our include files and <sys/exec.h>
-   (maybe not needed anymore).  */
-#define _EXEC_
-#endif
-
-/* sun386 ptrace seems unable to change the frame pointer */
-#define PTRACE_FP_BUG
-
-/* Address of end of stack space.  */
-
-#define STACK_END_ADDR 0xfc000000
-
-/* Number of machine registers */
-
-#undef  NUM_REGS
-#define NUM_REGS 35
-
-/* Initializer for an array of names of registers.  There should be NUM_REGS
-   strings in this initializer.  The order of the first 8 registers must match
-   the compiler's numbering scheme (which is the same as the 386 scheme) also,
-   this table must match regmap in i386-pinsn.c. */
-
-#undef  REGISTER_NAMES
-#define REGISTER_NAMES { "gs", "fs", "es", "ds",               \
-                        "edi", "esi", "ebp", "esp",            \
-                        "ebx", "edx", "ecx", "eax",            \
-                        "retaddr", "trapnum", "errcode", "ip", \
-                        "cs", "ps", "sp", "ss",                \
-                        "fst0", "fst1", "fst2", "fst3",        \
-                        "fst4", "fst5", "fst6", "fst7",        \
-                        "fctrl", "fstat", "ftag", "fip",       \
-                        "fcs", "fopoff", "fopsel"              \
-                        }
-
-/* Register numbers of various important registers.
-   Note that some of these values are "real" register numbers,
-   and correspond to the general registers of the machine,
-   and some are "phony" register numbers which are too large
-   to be actual register numbers as far as the user is concerned
-   but do serve to get the desired values when passed to read_register.  */
-
-#undef  FP_REGNUM
-#define FP_REGNUM   6          /* (ebp) Contains address of executing stack frame */
-#undef  SP_REGNUM
-#define SP_REGNUM  18          /* (usp) Contains address of top of stack */
-#undef  PS_REGNUM
-#define PS_REGNUM  17          /* (ps)  Contains processor status */
-#undef  PC_REGNUM
-#define PC_REGNUM  15          /* (eip) Contains program counter */
-#undef  FP0_REGNUM
-#define FP0_REGNUM 20          /* Floating point register 0 */
-#undef  FPC_REGNUM
-#define FPC_REGNUM 28          /* 80387 control register */
-
-/* Total amount of space needed to store our copies of the machine's
-   register state, the array `registers'.  */
-
-#undef  REGISTER_BYTES
-#define REGISTER_BYTES (20*4+8*10+7*4)
-
-/* Index within `registers' of the first byte of the space for
-   register N.  */
-
-#undef  REGISTER_BYTE
-#define REGISTER_BYTE(N) \
- ((N) >= FPC_REGNUM ? (((N) - FPC_REGNUM) * 4) + 160   \
-  : (N) >= FP0_REGNUM ? (((N) - FP0_REGNUM) * 10) + 80 \
-  : (N) * 4)
-
-/* Number of bytes of storage in the actual machine representation
-   for register N.  */
-
-#undef  REGISTER_RAW_SIZE
-#define REGISTER_RAW_SIZE(N) (((unsigned)((N) - FP0_REGNUM)) < 8 ? 10 : 4)
-
-/* Number of bytes of storage in the program's representation
-   for register N. */
-
-#undef  REGISTER_VIRTUAL_SIZE
-#define REGISTER_VIRTUAL_SIZE(N) (((unsigned)((N) - FP0_REGNUM)) < 8 ? 8 : 4)
-
-/* Nonzero if register N requires conversion
-   from raw format to virtual format.  */
-
-#undef  REGISTER_CONVERTIBLE
-#define REGISTER_CONVERTIBLE(N) (((unsigned)((N) - FP0_REGNUM)) < 8)
-
-/* Convert data from raw format for register REGNUM in buffer FROM
-   to virtual format with type TYPE in buffer TO.  */
-
-#undef  REGISTER_CONVERT_TO_VIRTUAL
-#define REGISTER_CONVERT_TO_VIRTUAL(REGNUM,TYPE,FROM,TO) \
-{ \
-  double val; \
-  i387_to_double ((FROM), (char *)&val); \
-  store_floating ((TO), TYPE_LENGTH (TYPE), val); \
-}
-extern void i387_to_double (char *, char *);
-
-/* Convert data from virtual format with type TYPE in buffer FROM
-   to raw format for register REGNUM in buffer TO.  */
-
-#undef  REGISTER_CONVERT_TO_RAW
-#define REGISTER_CONVERT_TO_RAW(TYPE,REGNUM,FROM,TO) \
-{ \
-  double val = extract_floating ((FROM), TYPE_LENGTH (TYPE)); \
-  double_to_i387((char *)&val, (TO)); \
-}
-extern void double_to_i387 (char *, char *);
-
-/* Return the GDB type object for the "standard" data type
-   of data in register N.  */
-
-#undef  REGISTER_VIRTUAL_TYPE
-#define REGISTER_VIRTUAL_TYPE(N) \
- (((unsigned)((N) - FP0_REGNUM)) < 8 ? builtin_type_double : builtin_type_int)
-
-/* Extract from an array REGBUF containing the (raw) register state
-   a function return value of type TYPE, and copy that, in virtual format,
-   into VALBUF.  */
-
-#undef  EXTRACT_RETURN_VALUE
-#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
-  memcpy (VALBUF, REGBUF + REGISTER_BYTE (TYPE_CODE (TYPE) == TYPE_CODE_FLT ? FP0_REGNUM : 11), TYPE_LENGTH (TYPE))
-
-/* Write into appropriate registers a function return value
-   of type TYPE, given in virtual format.  */
-
-#undef  STORE_RETURN_VALUE
-#define STORE_RETURN_VALUE(TYPE,VALBUF) \
-  write_register_bytes (REGISTER_BYTE (TYPE_CODE (TYPE) == TYPE_CODE_FLT ? FP0_REGNUM : 11), VALBUF, TYPE_LENGTH (TYPE))
-
-/* Describe the pointer in each stack frame to the previous stack frame
-   (its caller).  */
-
-/* FRAME_CHAIN takes a frame's nominal address
-   and produces the frame's chain-pointer. */
-
-#undef  FRAME_CHAIN
-#define FRAME_CHAIN(thisframe) \
-  (!inside_entry_file ((thisframe)->pc) ? \
-   read_memory_integer ((thisframe)->frame, 4) :\
-   0)
-
-/* Define other aspects of the stack frame.  */
-
-/* A macro that tells us whether the function invocation represented
-   by FI does not have a frame on the stack associated with it.  If it
-   does not, FRAMELESS is set to 1, else 0.  */
-
-#undef  FRAMELESS_FUNCTION_INVOCATION
-#define FRAMELESS_FUNCTION_INVOCATION(FI) \
-     (frameless_look_for_prologue (FI))
-
-#undef  FRAME_SAVED_PC
-#define FRAME_SAVED_PC(FRAME) (read_memory_integer ((FRAME)->frame + 4, 4))
-
-/* Insert the specified number of args and function address
-   into a call sequence of the above form stored at DUMMYNAME.  */
-
-#undef  FIX_CALL_DUMMY
-#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p)   \
-{ \
-       *(int *)((char *)(dummyname) + 1) = (int)(fun) - (pc) - 5; \
-}
-
-#endif /* !defined (TM_SUN386_H) */
+/* OBSOLETE /* Parameters for a Sun 386i target machine, for GDB, the GNU debugger. */
+/* OBSOLETE    Copyright 1986, 1987, 1991, 1992, 1993, 1994, 1995, 1999, 2000 */
+/* OBSOLETE    Free Software Foundation, Inc. */
+/* OBSOLETE  */
+/* OBSOLETE    This file is part of GDB. */
+/* OBSOLETE  */
+/* OBSOLETE    This program is free software; you can redistribute it and/or modify */
+/* OBSOLETE    it under the terms of the GNU General Public License as published by */
+/* OBSOLETE    the Free Software Foundation; either version 2 of the License, or */
+/* OBSOLETE    (at your option) any later version. */
+/* OBSOLETE  */
+/* OBSOLETE    This program is distributed in the hope that it will be useful, */
+/* OBSOLETE    but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* OBSOLETE    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the */
+/* OBSOLETE    GNU General Public License for more details. */
+/* OBSOLETE  */
+/* OBSOLETE    You should have received a copy of the GNU General Public License */
+/* OBSOLETE    along with this program; if not, write to the Free Software */
+/* OBSOLETE    Foundation, Inc., 59 Temple Place - Suite 330, */
+/* OBSOLETE    Boston, MA 02111-1307, USA.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #if !defined (TM_SUN386_H) */
+/* OBSOLETE #define TM_SUN386_H 1 */
+/* OBSOLETE  */
+/* OBSOLETE #include "regcache.h" */
+/* OBSOLETE #include "i386/tm-i386.h" */
+/* OBSOLETE  */
+/* OBSOLETE #ifndef sun386 */
+/* OBSOLETE #define sun386 */
+/* OBSOLETE #endif */
+/* OBSOLETE #define SUNOS4 */
+/* OBSOLETE #define USE_MACHINE_REG_H */
+/* OBSOLETE  */
+/* OBSOLETE /* Perhaps some day this will work even without the following #define */ */
+/* OBSOLETE #define COFF_ENCAPSULATE */
+/* OBSOLETE  */
+/* OBSOLETE #ifdef COFF_ENCAPSULATE */
+/* OBSOLETE /* Avoid conflicts between our include files and <sys/exec.h> */
+/* OBSOLETE    (maybe not needed anymore).  */ */
+/* OBSOLETE #define _EXEC_ */
+/* OBSOLETE #endif */
+/* OBSOLETE  */
+/* OBSOLETE /* sun386 ptrace seems unable to change the frame pointer */ */
+/* OBSOLETE #define PTRACE_FP_BUG */
+/* OBSOLETE  */
+/* OBSOLETE /* Address of end of stack space.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #define STACK_END_ADDR 0xfc000000 */
+/* OBSOLETE  */
+/* OBSOLETE /* Number of machine registers */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  NUM_REGS */
+/* OBSOLETE #define NUM_REGS 35 */
+/* OBSOLETE  */
+/* OBSOLETE /* Initializer for an array of names of registers.  There should be NUM_REGS */
+/* OBSOLETE    strings in this initializer.  The order of the first 8 registers must match */
+/* OBSOLETE    the compiler's numbering scheme (which is the same as the 386 scheme) also, */
+/* OBSOLETE    this table must match regmap in i386-pinsn.c. */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  REGISTER_NAMES */
+/* OBSOLETE #define REGISTER_NAMES { "gs", "fs", "es", "ds",           \ */
+/* OBSOLETE                     "edi", "esi", "ebp", "esp",            \ */
+/* OBSOLETE                     "ebx", "edx", "ecx", "eax",            \ */
+/* OBSOLETE                     "retaddr", "trapnum", "errcode", "ip", \ */
+/* OBSOLETE                     "cs", "ps", "sp", "ss",                \ */
+/* OBSOLETE                     "fst0", "fst1", "fst2", "fst3",        \ */
+/* OBSOLETE                     "fst4", "fst5", "fst6", "fst7",        \ */
+/* OBSOLETE                     "fctrl", "fstat", "ftag", "fip",       \ */
+/* OBSOLETE                     "fcs", "fopoff", "fopsel"              \ */
+/* OBSOLETE                     } */
+/* OBSOLETE  */
+/* OBSOLETE /* Register numbers of various important registers. */
+/* OBSOLETE    Note that some of these values are "real" register numbers, */
+/* OBSOLETE    and correspond to the general registers of the machine, */
+/* OBSOLETE    and some are "phony" register numbers which are too large */
+/* OBSOLETE    to be actual register numbers as far as the user is concerned */
+/* OBSOLETE    but do serve to get the desired values when passed to read_register.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  FP_REGNUM */
+/* OBSOLETE #define FP_REGNUM   6              /* (ebp) Contains address of executing stack frame */ */
+/* OBSOLETE #undef  SP_REGNUM */
+/* OBSOLETE #define SP_REGNUM  18              /* (usp) Contains address of top of stack */ */
+/* OBSOLETE #undef  PS_REGNUM */
+/* OBSOLETE #define PS_REGNUM  17              /* (ps)  Contains processor status */ */
+/* OBSOLETE #undef  PC_REGNUM */
+/* OBSOLETE #define PC_REGNUM  15              /* (eip) Contains program counter */ */
+/* OBSOLETE #undef  FP0_REGNUM */
+/* OBSOLETE #define FP0_REGNUM 20              /* Floating point register 0 */ */
+/* OBSOLETE #undef  FPC_REGNUM */
+/* OBSOLETE #define FPC_REGNUM 28              /* 80387 control register */ */
+/* OBSOLETE  */
+/* OBSOLETE /* Total amount of space needed to store our copies of the machine's */
+/* OBSOLETE    register state, the array `registers'.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  REGISTER_BYTES */
+/* OBSOLETE #define REGISTER_BYTES (20*4+8*10+7*4) */
+/* OBSOLETE  */
+/* OBSOLETE /* Index within `registers' of the first byte of the space for */
+/* OBSOLETE    register N.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  REGISTER_BYTE */
+/* OBSOLETE #define REGISTER_BYTE(N) \ */
+/* OBSOLETE  ((N) >= FPC_REGNUM ? (((N) - FPC_REGNUM) * 4) + 160       \ */
+/* OBSOLETE   : (N) >= FP0_REGNUM ? (((N) - FP0_REGNUM) * 10) + 80     \ */
+/* OBSOLETE   : (N) * 4) */
+/* OBSOLETE  */
+/* OBSOLETE /* Number of bytes of storage in the actual machine representation */
+/* OBSOLETE    for register N.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  REGISTER_RAW_SIZE */
+/* OBSOLETE #define REGISTER_RAW_SIZE(N) (((unsigned)((N) - FP0_REGNUM)) < 8 ? 10 : 4) */
+/* OBSOLETE  */
+/* OBSOLETE /* Number of bytes of storage in the program's representation */
+/* OBSOLETE    for register N. */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  REGISTER_VIRTUAL_SIZE */
+/* OBSOLETE #define REGISTER_VIRTUAL_SIZE(N) (((unsigned)((N) - FP0_REGNUM)) < 8 ? 8 : 4) */
+/* OBSOLETE  */
+/* OBSOLETE /* Nonzero if register N requires conversion */
+/* OBSOLETE    from raw format to virtual format.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  REGISTER_CONVERTIBLE */
+/* OBSOLETE #define REGISTER_CONVERTIBLE(N) (((unsigned)((N) - FP0_REGNUM)) < 8) */
+/* OBSOLETE  */
+/* OBSOLETE /* Convert data from raw format for register REGNUM in buffer FROM */
+/* OBSOLETE    to virtual format with type TYPE in buffer TO.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  REGISTER_CONVERT_TO_VIRTUAL */
+/* OBSOLETE #define REGISTER_CONVERT_TO_VIRTUAL(REGNUM,TYPE,FROM,TO) \ */
+/* OBSOLETE { \ */
+/* OBSOLETE   double val; \ */
+/* OBSOLETE   i387_to_double ((FROM), (char *)&val); \ */
+/* OBSOLETE   store_floating ((TO), TYPE_LENGTH (TYPE), val); \ */
+/* OBSOLETE } */
+/* OBSOLETE extern void i387_to_double (char *, char *); */
+/* OBSOLETE  */
+/* OBSOLETE /* Convert data from virtual format with type TYPE in buffer FROM */
+/* OBSOLETE    to raw format for register REGNUM in buffer TO.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  REGISTER_CONVERT_TO_RAW */
+/* OBSOLETE #define REGISTER_CONVERT_TO_RAW(TYPE,REGNUM,FROM,TO) \ */
+/* OBSOLETE { \ */
+/* OBSOLETE   double val = extract_floating ((FROM), TYPE_LENGTH (TYPE)); \ */
+/* OBSOLETE   double_to_i387((char *)&val, (TO)); \ */
+/* OBSOLETE } */
+/* OBSOLETE extern void double_to_i387 (char *, char *); */
+/* OBSOLETE  */
+/* OBSOLETE /* Return the GDB type object for the "standard" data type */
+/* OBSOLETE    of data in register N.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  REGISTER_VIRTUAL_TYPE */
+/* OBSOLETE #define REGISTER_VIRTUAL_TYPE(N) \ */
+/* OBSOLETE  (((unsigned)((N) - FP0_REGNUM)) < 8 ? builtin_type_double : builtin_type_int) */
+/* OBSOLETE  */
+/* OBSOLETE /* Extract from an array REGBUF containing the (raw) register state */
+/* OBSOLETE    a function return value of type TYPE, and copy that, in virtual format, */
+/* OBSOLETE    into VALBUF.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  EXTRACT_RETURN_VALUE */
+/* OBSOLETE #define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \ */
+/* OBSOLETE   memcpy (VALBUF, REGBUF + REGISTER_BYTE (TYPE_CODE (TYPE) == TYPE_CODE_FLT ? FP0_REGNUM : 11), TYPE_LENGTH (TYPE)) */
+/* OBSOLETE  */
+/* OBSOLETE /* Write into appropriate registers a function return value */
+/* OBSOLETE    of type TYPE, given in virtual format.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  STORE_RETURN_VALUE */
+/* OBSOLETE #define STORE_RETURN_VALUE(TYPE,VALBUF) \ */
+/* OBSOLETE   write_register_bytes (REGISTER_BYTE (TYPE_CODE (TYPE) == TYPE_CODE_FLT ? FP0_REGNUM : 11), VALBUF, TYPE_LENGTH (TYPE)) */
+/* OBSOLETE  */
+/* OBSOLETE /* Describe the pointer in each stack frame to the previous stack frame */
+/* OBSOLETE    (its caller).  */ */
+/* OBSOLETE  */
+/* OBSOLETE /* FRAME_CHAIN takes a frame's nominal address */
+/* OBSOLETE    and produces the frame's chain-pointer. */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  FRAME_CHAIN */
+/* OBSOLETE #define FRAME_CHAIN(thisframe) \ */
+/* OBSOLETE   (!inside_entry_file ((thisframe)->pc) ? \ */
+/* OBSOLETE    read_memory_integer ((thisframe)->frame, 4) :\ */
+/* OBSOLETE    0) */
+/* OBSOLETE  */
+/* OBSOLETE /* Define other aspects of the stack frame.  */ */
+/* OBSOLETE  */
+/* OBSOLETE /* A macro that tells us whether the function invocation represented */
+/* OBSOLETE    by FI does not have a frame on the stack associated with it.  If it */
+/* OBSOLETE    does not, FRAMELESS is set to 1, else 0.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  FRAMELESS_FUNCTION_INVOCATION */
+/* OBSOLETE #define FRAMELESS_FUNCTION_INVOCATION(FI) \ */
+/* OBSOLETE      (frameless_look_for_prologue (FI)) */
+/* OBSOLETE  */
+/* OBSOLETE #undef  FRAME_SAVED_PC */
+/* OBSOLETE #define FRAME_SAVED_PC(FRAME) (read_memory_integer ((FRAME)->frame + 4, 4)) */
+/* OBSOLETE  */
+/* OBSOLETE /* Insert the specified number of args and function address */
+/* OBSOLETE    into a call sequence of the above form stored at DUMMYNAME.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #undef  FIX_CALL_DUMMY */
+/* OBSOLETE #define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p)   \ */
+/* OBSOLETE { \ */
+/* OBSOLETE    *(int *)((char *)(dummyname) + 1) = (int)(fun) - (pc) - 5; \ */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE #endif /* !defined (TM_SUN386_H) */ */
index a67adc53a5a2affec12adbb87a1229174c935cc0..0cd798b2fb12b966e1393784438a291277a5442f 100644 (file)
@@ -1,22 +1,22 @@
-/* Host support for Sun 386i, for GDB, the GNU debugger.
-   Copyright 1986, 1987, 1989, 1992, 1994, 1996
-   Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#define HOST_BYTE_ORDER LITTLE_ENDIAN
+/* OBSOLETE /* Host support for Sun 386i, for GDB, the GNU debugger. */
+/* OBSOLETE    Copyright 1986, 1987, 1989, 1992, 1994, 1996 */
+/* OBSOLETE    Free Software Foundation, Inc. */
+/* OBSOLETE  */
+/* OBSOLETE    This file is part of GDB. */
+/* OBSOLETE  */
+/* OBSOLETE    This program is free software; you can redistribute it and/or modify */
+/* OBSOLETE    it under the terms of the GNU General Public License as published by */
+/* OBSOLETE    the Free Software Foundation; either version 2 of the License, or */
+/* OBSOLETE    (at your option) any later version. */
+/* OBSOLETE  */
+/* OBSOLETE    This program is distributed in the hope that it will be useful, */
+/* OBSOLETE    but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* OBSOLETE    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the */
+/* OBSOLETE    GNU General Public License for more details. */
+/* OBSOLETE  */
+/* OBSOLETE    You should have received a copy of the GNU General Public License */
+/* OBSOLETE    along with this program; if not, write to the Free Software */
+/* OBSOLETE    Foundation, Inc., 59 Temple Place - Suite 330, */
+/* OBSOLETE    Boston, MA 02111-1307, USA.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #define HOST_BYTE_ORDER LITTLE_ENDIAN */
index 156852f2a23d3b883e25acb95d5dc4d0f3ddbe61..fcdd3d956d6189f1b37a656a7f6345d6cd7f9645 100644 (file)
@@ -68,7 +68,7 @@ i[3456]86-*-sco3.2v5*)        gdb_host=i386sco5 ;;
 i[3456]86-*-sco3.2v4*) gdb_host=i386sco4 ;;
 i[3456]86-*-sco*)      gdb_host=i386sco ;;
 i[3456]86-*-solaris*)  gdb_host=i386sol2 ;;
-i[3456]86-*-sunos*)    gdb_host=sun386 ;;
+# OBSOLETE i[3456]86-*-sunos*) gdb_host=sun386 ;;
 i[3456]86-*-sysv3.2*)  gdb_host=i386v32 ;;
 i[3456]86-*-sysv32*)   gdb_host=i386v32 ;;
 i[3456]86-*-sysv4.2*)  gdb_host=i386v42mp ;;
index fed08107bd3a6ad8c2c671115e1b281facc6a921..121c19b2a483572e54257183d5017564072ec6c4 100644 (file)
@@ -101,7 +101,7 @@ i[3456]86-*-msdosdjgpp*) gdb_target=go32 ;;
 i[3456]86-*-lynxos*)   gdb_target=i386lynx
                configdirs="${configdirs} gdbserver" ;;
 i[3456]86-*-solaris*)  gdb_target=i386sol2 ;;
-i[3456]86-*-sunos*)    gdb_target=sun386 ;;
+# OBSOLETE i[3456]86-*-sunos*) gdb_target=sun386 ;;
 i[3456]86-*-sysv4.2*)  gdb_target=i386v42mp ;;
 i[3456]86-*-sysv4*)    gdb_target=i386v4 ;;
 i[3456]86-*-sysv5*)    gdb_target=i386v42mp ;;
index a6f9dfade0f399b51a4a847749aa5992f0c70f83..b0909f5151c484fff037263fd636db71e8f60576 100644 (file)
-/* Native support for Sun 386i's for GDB, the GNU debugger.
-   Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1995, 1999, 2000, 2001
-   Free Software Foundation, Inc.
-   Changes for sun386i by Jean Daniel Fekete (jdf@litp.univ-p6-7.fr),
-   C2V Paris, April 89.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-#include "defs.h"
-#include "frame.h"
-#include "inferior.h"
-#include "gdbcore.h"
-#include "regcache.h"
-
-#include <sys/param.h>
-#include <sys/dir.h>
-#include <sys/user.h>
-#include <signal.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-
-#include <sys/ptrace.h>
-#include <machine/reg.h>
-
-#include <sys/file.h>
-#include "gdb_stat.h"
-#include <sys/core.h>
-\f
-
-/* Machine-dependent code which would otherwise be in corefile.c */
-/* Work with core files, for GDB. */
-\f
-
-void
-core_file_command (char *filename, int from_tty)
-{
-  int val;
-
-  /* Discard all vestiges of any previous core file
-     and mark data and stack spaces as empty.  */
-
-  if (corefile)
-    xfree (corefile);
-  corefile = 0;
-
-  if (corechan >= 0)
-    close (corechan);
-  corechan = -1;
-
-  data_start = 0;
-  data_end = 0;
-  stack_start = STACK_END_ADDR;
-  stack_end = STACK_END_ADDR;
-
-  /* Now, if a new core file was specified, open it and digest it.  */
-
-  if (filename)
-    {
-      filename = tilde_expand (filename);
-      make_cleanup (xfree, filename);
-
-      if (have_inferior_p ())
-       error ("To look at a core file, you must kill the program with \"kill\".");
-      corechan = open (filename, O_RDONLY, 0);
-      if (corechan < 0)
-       perror_with_name (filename);
-
-      {
-       struct core corestr;
-
-       val = myread (corechan, &corestr, sizeof corestr);
-       if (val < 0)
-         perror_with_name (filename);
-       if (corestr.c_magic != CORE_MAGIC)
-         error ("\"%s\" does not appear to be a core dump file (magic 0x%x, expected 0x%x)",
-                filename, corestr.c_magic, (int) CORE_MAGIC);
-       else if (sizeof (struct core) != corestr.c_len)
-           error ("\"%s\" has an invalid struct core length (%d, expected %d)",
-                  filename, corestr.c_len, (int) sizeof (struct core));
-
-       data_start = exec_data_start;
-       data_end = data_start + corestr.c_dsize;
-       stack_start = stack_end - corestr.c_ssize;
-       data_offset = sizeof corestr;
-       stack_offset = sizeof corestr + corestr.c_dsize;
-
-       memcpy (registers, &corestr.c_regs, sizeof corestr.c_regs);
-
-       memcpy (&registers[REGISTER_BYTE (FP0_REGNUM)],
-               corestr.c_fpu.f_fpstatus.f_st,
-               sizeof corestr.c_fpu.f_fpstatus.f_st);
-       memcpy (&registers[REGISTER_BYTE (FPC_REGNUM)],
-               &corestr.c_fpu.f_fpstatus.f_ctrl,
-               sizeof corestr.c_fpu.f_fpstatus -
-               sizeof corestr.c_fpu.f_fpstatus.f_st);
-
-       /* the struct aouthdr of sun coff is not the struct exec stored
-          in the core file. */
-       memcpy (&core_aouthdr, &corestr.c_aouthdr, sizeof (struct exec));
-#ifndef COFF_ENCAPSULATE
-       core_aouthdr.magic = corestr.c_aouthdr.a_info;
-       core_aouthdr.vstamp = /*SUNVERSION */ 31252;
-#endif
-       printf_unfiltered ("Core file is from \"%s\".\n", corestr.c_cmdname);
-       if (corestr.c_signo > 0)
-         printf_unfiltered ("Program terminated with signal %d, %s.\n",
-                        corestr.c_signo, safe_strsignal (corestr.c_signo));
-      }
-      if (filename[0] == '/')
-       corefile = savestring (filename, strlen (filename));
-      else
-       {
-         corefile = concat (current_directory, "/", filename, NULL);
-       }
-
-      flush_cached_frames ();
-      select_frame (get_current_frame (), 0);
-
-      validate_files ();
-    }
-  else if (from_tty)
-    printf_unfiltered ("No core file now.\n");
-}
-
-i387_to_double (char *from, char *to)
-{
-  long *lp;
-  /* push extended mode on 387 stack, then pop in double mode
-
-   * first, set exception masks so no error is generated -
-   * number will be rounded to inf or 0, if necessary 
-   */
-  asm ("pushl %eax");          /* grab a stack slot */
-  asm ("fstcw (%esp)");                /* get 387 control word */
-  asm ("movl (%esp),%eax");    /* save old value */
-  asm ("orl $0x3f,%eax");      /* mask all exceptions */
-  asm ("pushl %eax");
-  asm ("fldcw (%esp)");                /* load new value into 387 */
-
-  asm ("movl 8(%ebp),%eax");
-  asm ("fldt (%eax)");         /* push extended number on 387 stack */
-  asm ("fwait");
-  asm ("movl 12(%ebp),%eax");
-  asm ("fstpl (%eax)");                /* pop double */
-  asm ("fwait");
-
-  asm ("popl %eax");           /* flush modified control word */
-  asm ("fnclex");              /* clear exceptions */
-  asm ("fldcw (%esp)");                /* restore original control word */
-  asm ("popl %eax");           /* flush saved copy */
-}
-
-double_to_i387 (char *from, char *to)
-{
-  /* push double mode on 387 stack, then pop in extended mode
-   * no errors are possible because every 64-bit pattern
-   * can be converted to an extended
-   */
-  asm ("movl 8(%ebp),%eax");
-  asm ("fldl (%eax)");
-  asm ("fwait");
-  asm ("movl 12(%ebp),%eax");
-  asm ("fstpt (%eax)");
-  asm ("fwait");
-}
-
-void
-fetch_inferior_registers (int regno)
-{
-  struct regs inferior_registers;
-  struct fp_state inferior_fp_registers;
-
-  registers_fetched ();
-
-  ptrace (PTRACE_GETREGS, inferior_pid,
-         (PTRACE_ARG3_TYPE) & inferior_registers);
-  ptrace (PTRACE_GETFPREGS, inferior_pid,
-         (PTRACE_ARG3_TYPE) & inferior_fp_registers);
-
-  memcpy (registers, &inferior_registers, sizeof inferior_registers);
-
-  memcpy (&registers[REGISTER_BYTE (FP0_REGNUM)], inferior_fp_registers.f_st,
-         sizeof inferior_fp_registers.f_st);
-  memcpy (&registers[REGISTER_BYTE (FPC_REGNUM)],
-         &inferior_fp_registers.f_ctrl,
-         sizeof inferior_fp_registers - sizeof inferior_fp_registers.f_st);
-}
-
-/* Store our register values back into the inferior.
-   If REGNO is -1, do this for all registers.
-   Otherwise, REGNO specifies which register (so we can save time).  */
-
-void
-store_inferior_registers (int regno)
-{
-  struct regs inferior_registers;
-  struct fp_state inferior_fp_registers;
-
-  memcpy (&inferior_registers, registers, 20 * 4);
-
-  memcpy (inferior_fp_registers.f_st,
-         &registers[REGISTER_BYTE (FP0_REGNUM)],
-         sizeof inferior_fp_registers.f_st);
-  memcpy (&inferior_fp_registers.f_ctrl,
-         &registers[REGISTER_BYTE (FPC_REGNUM)],
-         sizeof inferior_fp_registers - sizeof inferior_fp_registers.f_st);
-
-#ifdef PTRACE_FP_BUG
-  if (regno == FP_REGNUM || regno == -1)
-    /* Storing the frame pointer requires a gross hack, in which an
-       instruction that moves eax into ebp gets single-stepped.  */
-    {
-      int stack = inferior_registers.r_reg[SP_REGNUM];
-      int stuff = ptrace (PTRACE_PEEKDATA, inferior_pid,
-                         (PTRACE_ARG3_TYPE) stack);
-      int reg = inferior_registers.r_reg[EAX];
-      inferior_registers.r_reg[EAX] =
-       inferior_registers.r_reg[FP_REGNUM];
-      ptrace (PTRACE_SETREGS, inferior_pid,
-             (PTRACE_ARG3_TYPE) & inferior_registers);
-      ptrace (PTRACE_POKEDATA, inferior_pid, (PTRACE_ARG3_TYPE) stack,
-             0xc589);
-      ptrace (PTRACE_SINGLESTEP, inferior_pid, (PTRACE_ARG3_TYPE) stack,
-             0);
-      wait (0);
-      ptrace (PTRACE_POKEDATA, inferior_pid, (PTRACE_ARG3_TYPE) stack,
-             stuff);
-      inferior_registers.r_reg[EAX] = reg;
-    }
-#endif
-  ptrace (PTRACE_SETREGS, inferior_pid,
-         (PTRACE_ARG3_TYPE) & inferior_registers);
-  ptrace (PTRACE_SETFPREGS, inferior_pid,
-         (PTRACE_ARG3_TYPE) & inferior_fp_registers);
-}
+/* OBSOLETE /* Native support for Sun 386i's for GDB, the GNU debugger. */
+/* OBSOLETE    Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1995, 1999, 2000, 2001 */
+/* OBSOLETE    Free Software Foundation, Inc. */
+/* OBSOLETE    Changes for sun386i by Jean Daniel Fekete (jdf@litp.univ-p6-7.fr), */
+/* OBSOLETE    C2V Paris, April 89. */
+/* OBSOLETE  */
+/* OBSOLETE    This file is part of GDB. */
+/* OBSOLETE  */
+/* OBSOLETE    This program is free software; you can redistribute it and/or modify */
+/* OBSOLETE    it under the terms of the GNU General Public License as published by */
+/* OBSOLETE    the Free Software Foundation; either version 2 of the License, or */
+/* OBSOLETE    (at your option) any later version. */
+/* OBSOLETE  */
+/* OBSOLETE    This program is distributed in the hope that it will be useful, */
+/* OBSOLETE    but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* OBSOLETE    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the */
+/* OBSOLETE    GNU General Public License for more details. */
+/* OBSOLETE  */
+/* OBSOLETE    You should have received a copy of the GNU General Public License */
+/* OBSOLETE    along with this program; if not, write to the Free Software */
+/* OBSOLETE    Foundation, Inc., 59 Temple Place - Suite 330, */
+/* OBSOLETE    Boston, MA 02111-1307, USA.  */ */
+/* OBSOLETE  */
+/* OBSOLETE #include "defs.h" */
+/* OBSOLETE #include "frame.h" */
+/* OBSOLETE #include "inferior.h" */
+/* OBSOLETE #include "gdbcore.h" */
+/* OBSOLETE #include "regcache.h" */
+/* OBSOLETE  */
+/* OBSOLETE #include <sys/param.h> */
+/* OBSOLETE #include <sys/dir.h> */
+/* OBSOLETE #include <sys/user.h> */
+/* OBSOLETE #include <signal.h> */
+/* OBSOLETE #include <sys/ioctl.h> */
+/* OBSOLETE #include <fcntl.h> */
+/* OBSOLETE  */
+/* OBSOLETE #include <sys/ptrace.h> */
+/* OBSOLETE #include <machine/reg.h> */
+/* OBSOLETE  */
+/* OBSOLETE #include <sys/file.h> */
+/* OBSOLETE #include "gdb_stat.h" */
+/* OBSOLETE #include <sys/core.h> */
+/* OBSOLETE \f */
+/* OBSOLETE  */
+/* OBSOLETE /* Machine-dependent code which would otherwise be in corefile.c */ */
+/* OBSOLETE /* Work with core files, for GDB. */ */
+/* OBSOLETE \f */
+/* OBSOLETE  */
+/* OBSOLETE void */
+/* OBSOLETE core_file_command (char *filename, int from_tty) */
+/* OBSOLETE { */
+/* OBSOLETE   int val; */
+/* OBSOLETE  */
+/* OBSOLETE   /* Discard all vestiges of any previous core file */
+/* OBSOLETE      and mark data and stack spaces as empty.  */ */
+/* OBSOLETE  */
+/* OBSOLETE   if (corefile) */
+/* OBSOLETE     xfree (corefile); */
+/* OBSOLETE   corefile = 0; */
+/* OBSOLETE  */
+/* OBSOLETE   if (corechan >= 0) */
+/* OBSOLETE     close (corechan); */
+/* OBSOLETE   corechan = -1; */
+/* OBSOLETE  */
+/* OBSOLETE   data_start = 0; */
+/* OBSOLETE   data_end = 0; */
+/* OBSOLETE   stack_start = STACK_END_ADDR; */
+/* OBSOLETE   stack_end = STACK_END_ADDR; */
+/* OBSOLETE  */
+/* OBSOLETE   /* Now, if a new core file was specified, open it and digest it.  */ */
+/* OBSOLETE  */
+/* OBSOLETE   if (filename) */
+/* OBSOLETE     { */
+/* OBSOLETE       filename = tilde_expand (filename); */
+/* OBSOLETE       make_cleanup (xfree, filename); */
+/* OBSOLETE  */
+/* OBSOLETE       if (have_inferior_p ()) */
+/* OBSOLETE    error ("To look at a core file, you must kill the program with \"kill\"."); */
+/* OBSOLETE       corechan = open (filename, O_RDONLY, 0); */
+/* OBSOLETE       if (corechan < 0) */
+/* OBSOLETE    perror_with_name (filename); */
+/* OBSOLETE  */
+/* OBSOLETE       { */
+/* OBSOLETE    struct core corestr; */
+/* OBSOLETE  */
+/* OBSOLETE    val = myread (corechan, &corestr, sizeof corestr); */
+/* OBSOLETE    if (val < 0) */
+/* OBSOLETE      perror_with_name (filename); */
+/* OBSOLETE    if (corestr.c_magic != CORE_MAGIC) */
+/* OBSOLETE      error ("\"%s\" does not appear to be a core dump file (magic 0x%x, expected 0x%x)", */
+/* OBSOLETE             filename, corestr.c_magic, (int) CORE_MAGIC); */
+/* OBSOLETE    else if (sizeof (struct core) != corestr.c_len) */
+/* OBSOLETE        error ("\"%s\" has an invalid struct core length (%d, expected %d)", */
+/* OBSOLETE               filename, corestr.c_len, (int) sizeof (struct core)); */
+/* OBSOLETE  */
+/* OBSOLETE    data_start = exec_data_start; */
+/* OBSOLETE    data_end = data_start + corestr.c_dsize; */
+/* OBSOLETE    stack_start = stack_end - corestr.c_ssize; */
+/* OBSOLETE    data_offset = sizeof corestr; */
+/* OBSOLETE    stack_offset = sizeof corestr + corestr.c_dsize; */
+/* OBSOLETE  */
+/* OBSOLETE    memcpy (registers, &corestr.c_regs, sizeof corestr.c_regs); */
+/* OBSOLETE  */
+/* OBSOLETE    memcpy (&registers[REGISTER_BYTE (FP0_REGNUM)], */
+/* OBSOLETE            corestr.c_fpu.f_fpstatus.f_st, */
+/* OBSOLETE            sizeof corestr.c_fpu.f_fpstatus.f_st); */
+/* OBSOLETE    memcpy (&registers[REGISTER_BYTE (FPC_REGNUM)], */
+/* OBSOLETE            &corestr.c_fpu.f_fpstatus.f_ctrl, */
+/* OBSOLETE            sizeof corestr.c_fpu.f_fpstatus - */
+/* OBSOLETE            sizeof corestr.c_fpu.f_fpstatus.f_st); */
+/* OBSOLETE  */
+/* OBSOLETE    /* the struct aouthdr of sun coff is not the struct exec stored */
+/* OBSOLETE       in the core file. */ */
+/* OBSOLETE    memcpy (&core_aouthdr, &corestr.c_aouthdr, sizeof (struct exec)); */
+/* OBSOLETE #ifndef COFF_ENCAPSULATE */
+/* OBSOLETE    core_aouthdr.magic = corestr.c_aouthdr.a_info; */
+/* OBSOLETE    core_aouthdr.vstamp = /*SUNVERSION */ 31252; */
+/* OBSOLETE #endif */
+/* OBSOLETE    printf_unfiltered ("Core file is from \"%s\".\n", corestr.c_cmdname); */
+/* OBSOLETE    if (corestr.c_signo > 0) */
+/* OBSOLETE      printf_unfiltered ("Program terminated with signal %d, %s.\n", */
+/* OBSOLETE                     corestr.c_signo, safe_strsignal (corestr.c_signo)); */
+/* OBSOLETE       } */
+/* OBSOLETE       if (filename[0] == '/') */
+/* OBSOLETE    corefile = savestring (filename, strlen (filename)); */
+/* OBSOLETE       else */
+/* OBSOLETE    { */
+/* OBSOLETE      corefile = concat (current_directory, "/", filename, NULL); */
+/* OBSOLETE    } */
+/* OBSOLETE  */
+/* OBSOLETE       flush_cached_frames (); */
+/* OBSOLETE       select_frame (get_current_frame (), 0); */
+/* OBSOLETE  */
+/* OBSOLETE       validate_files (); */
+/* OBSOLETE     } */
+/* OBSOLETE   else if (from_tty) */
+/* OBSOLETE     printf_unfiltered ("No core file now.\n"); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE i387_to_double (char *from, char *to) */
+/* OBSOLETE { */
+/* OBSOLETE   long *lp; */
+/* OBSOLETE   /* push extended mode on 387 stack, then pop in double mode */
+/* OBSOLETE  */
+/* OBSOLETE    * first, set exception masks so no error is generated - */
+/* OBSOLETE    * number will be rounded to inf or 0, if necessary  */
+/* OBSOLETE    */ */
+/* OBSOLETE   asm ("pushl %eax");              /* grab a stack slot */ */
+/* OBSOLETE   asm ("fstcw (%esp)");            /* get 387 control word */ */
+/* OBSOLETE   asm ("movl (%esp),%eax");        /* save old value */ */
+/* OBSOLETE   asm ("orl $0x3f,%eax");  /* mask all exceptions */ */
+/* OBSOLETE   asm ("pushl %eax"); */
+/* OBSOLETE   asm ("fldcw (%esp)");            /* load new value into 387 */ */
+/* OBSOLETE  */
+/* OBSOLETE   asm ("movl 8(%ebp),%eax"); */
+/* OBSOLETE   asm ("fldt (%eax)");             /* push extended number on 387 stack */ */
+/* OBSOLETE   asm ("fwait"); */
+/* OBSOLETE   asm ("movl 12(%ebp),%eax"); */
+/* OBSOLETE   asm ("fstpl (%eax)");            /* pop double */ */
+/* OBSOLETE   asm ("fwait"); */
+/* OBSOLETE  */
+/* OBSOLETE   asm ("popl %eax");               /* flush modified control word */ */
+/* OBSOLETE   asm ("fnclex");          /* clear exceptions */ */
+/* OBSOLETE   asm ("fldcw (%esp)");            /* restore original control word */ */
+/* OBSOLETE   asm ("popl %eax");               /* flush saved copy */ */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE double_to_i387 (char *from, char *to) */
+/* OBSOLETE { */
+/* OBSOLETE   /* push double mode on 387 stack, then pop in extended mode */
+/* OBSOLETE    * no errors are possible because every 64-bit pattern */
+/* OBSOLETE    * can be converted to an extended */
+/* OBSOLETE    */ */
+/* OBSOLETE   asm ("movl 8(%ebp),%eax"); */
+/* OBSOLETE   asm ("fldl (%eax)"); */
+/* OBSOLETE   asm ("fwait"); */
+/* OBSOLETE   asm ("movl 12(%ebp),%eax"); */
+/* OBSOLETE   asm ("fstpt (%eax)"); */
+/* OBSOLETE   asm ("fwait"); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE void */
+/* OBSOLETE fetch_inferior_registers (int regno) */
+/* OBSOLETE { */
+/* OBSOLETE   struct regs inferior_registers; */
+/* OBSOLETE   struct fp_state inferior_fp_registers; */
+/* OBSOLETE  */
+/* OBSOLETE   registers_fetched (); */
+/* OBSOLETE  */
+/* OBSOLETE   ptrace (PTRACE_GETREGS, inferior_pid, */
+/* OBSOLETE      (PTRACE_ARG3_TYPE) & inferior_registers); */
+/* OBSOLETE   ptrace (PTRACE_GETFPREGS, inferior_pid, */
+/* OBSOLETE      (PTRACE_ARG3_TYPE) & inferior_fp_registers); */
+/* OBSOLETE  */
+/* OBSOLETE   memcpy (registers, &inferior_registers, sizeof inferior_registers); */
+/* OBSOLETE  */
+/* OBSOLETE   memcpy (&registers[REGISTER_BYTE (FP0_REGNUM)], inferior_fp_registers.f_st, */
+/* OBSOLETE      sizeof inferior_fp_registers.f_st); */
+/* OBSOLETE   memcpy (&registers[REGISTER_BYTE (FPC_REGNUM)], */
+/* OBSOLETE      &inferior_fp_registers.f_ctrl, */
+/* OBSOLETE      sizeof inferior_fp_registers - sizeof inferior_fp_registers.f_st); */
+/* OBSOLETE } */
+/* OBSOLETE  */
+/* OBSOLETE /* Store our register values back into the inferior. */
+/* OBSOLETE    If REGNO is -1, do this for all registers. */
+/* OBSOLETE    Otherwise, REGNO specifies which register (so we can save time).  */ */
+/* OBSOLETE  */
+/* OBSOLETE void */
+/* OBSOLETE store_inferior_registers (int regno) */
+/* OBSOLETE { */
+/* OBSOLETE   struct regs inferior_registers; */
+/* OBSOLETE   struct fp_state inferior_fp_registers; */
+/* OBSOLETE  */
+/* OBSOLETE   memcpy (&inferior_registers, registers, 20 * 4); */
+/* OBSOLETE  */
+/* OBSOLETE   memcpy (inferior_fp_registers.f_st, */
+/* OBSOLETE      &registers[REGISTER_BYTE (FP0_REGNUM)], */
+/* OBSOLETE      sizeof inferior_fp_registers.f_st); */
+/* OBSOLETE   memcpy (&inferior_fp_registers.f_ctrl, */
+/* OBSOLETE      &registers[REGISTER_BYTE (FPC_REGNUM)], */
+/* OBSOLETE      sizeof inferior_fp_registers - sizeof inferior_fp_registers.f_st); */
+/* OBSOLETE  */
+/* OBSOLETE #ifdef PTRACE_FP_BUG */
+/* OBSOLETE   if (regno == FP_REGNUM || regno == -1) */
+/* OBSOLETE     /* Storing the frame pointer requires a gross hack, in which an */
+/* OBSOLETE        instruction that moves eax into ebp gets single-stepped.  */ */
+/* OBSOLETE     { */
+/* OBSOLETE       int stack = inferior_registers.r_reg[SP_REGNUM]; */
+/* OBSOLETE       int stuff = ptrace (PTRACE_PEEKDATA, inferior_pid, */
+/* OBSOLETE                      (PTRACE_ARG3_TYPE) stack); */
+/* OBSOLETE       int reg = inferior_registers.r_reg[EAX]; */
+/* OBSOLETE       inferior_registers.r_reg[EAX] = */
+/* OBSOLETE    inferior_registers.r_reg[FP_REGNUM]; */
+/* OBSOLETE       ptrace (PTRACE_SETREGS, inferior_pid, */
+/* OBSOLETE          (PTRACE_ARG3_TYPE) & inferior_registers); */
+/* OBSOLETE       ptrace (PTRACE_POKEDATA, inferior_pid, (PTRACE_ARG3_TYPE) stack, */
+/* OBSOLETE          0xc589); */
+/* OBSOLETE       ptrace (PTRACE_SINGLESTEP, inferior_pid, (PTRACE_ARG3_TYPE) stack, */
+/* OBSOLETE          0); */
+/* OBSOLETE       wait (0); */
+/* OBSOLETE       ptrace (PTRACE_POKEDATA, inferior_pid, (PTRACE_ARG3_TYPE) stack, */
+/* OBSOLETE          stuff); */
+/* OBSOLETE       inferior_registers.r_reg[EAX] = reg; */
+/* OBSOLETE     } */
+/* OBSOLETE #endif */
+/* OBSOLETE   ptrace (PTRACE_SETREGS, inferior_pid, */
+/* OBSOLETE      (PTRACE_ARG3_TYPE) & inferior_registers); */
+/* OBSOLETE   ptrace (PTRACE_SETFPREGS, inferior_pid, */
+/* OBSOLETE      (PTRACE_ARG3_TYPE) & inferior_fp_registers); */
+/* OBSOLETE } */