diff options
author | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-07-19 05:00:13 +0000 |
---|---|---|
committer | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-07-19 05:00:13 +0000 |
commit | 56eec3c737e0f038711286c34175504fad3cd95c (patch) | |
tree | c8c3eda004199152186ec50e1b8b52fd7f8527ed /gdb/config | |
parent | bea80b013deed137522eac146fcc413a959166bf (diff) | |
download | gdb-56eec3c737e0f038711286c34175504fad3cd95c.zip gdb-56eec3c737e0f038711286c34175504fad3cd95c.tar.gz gdb-56eec3c737e0f038711286c34175504fad3cd95c.tar.bz2 |
* infptrace.c: Split out define of PT_KILL; Sequent defines PT_KILL
but not the others.
* symm-tdep.c: Remove exec_file_command.
[_SEQUENT_] (ptx_coff_regno_to_gdb, register_addr): New functions.
A few miscellaneous cleanups.
* symm-nat.c: Renamed from symm-xdep.c.
* All symmetry dependent files: Many changes.
Diffstat (limited to 'gdb/config')
-rw-r--r-- | gdb/config/i386/symmetry.mh | 2 | ||||
-rw-r--r-- | gdb/config/i386/symmetry.mt | 2 | ||||
-rw-r--r-- | gdb/config/i386/tm-i386v.h | 2 | ||||
-rw-r--r-- | gdb/config/i386/tm-symmetry.h | 317 | ||||
-rw-r--r-- | gdb/config/i386/xm-symmetry.h | 129 |
5 files changed, 177 insertions, 275 deletions
diff --git a/gdb/config/i386/symmetry.mh b/gdb/config/i386/symmetry.mh index e065464..a6e0911 100644 --- a/gdb/config/i386/symmetry.mh +++ b/gdb/config/i386/symmetry.mh @@ -1,3 +1,3 @@ # Host: Sequent Symmetry running Dynix 3.0, with Weitek 1167 or i387. -XDEPFILES= infptrace.o inftarg.o fork-child.o symm-xdep.o +XDEPFILES= infptrace.o inftarg.o fork-child.o symm-nat.o XM_FILE= xm-symmetry.h diff --git a/gdb/config/i386/symmetry.mt b/gdb/config/i386/symmetry.mt index e241993..dd7c790 100644 --- a/gdb/config/i386/symmetry.mt +++ b/gdb/config/i386/symmetry.mt @@ -1,3 +1,3 @@ # Target: Sequent Symmetry running Dynix 3.0, with Weitek 1167 or i387. -TDEPFILES= symm-tdep.o i386-pinsn.o +TDEPFILES= symm-tdep.o i386-pinsn.o i387-tdep.o TM_FILE= tm-symmetry.h diff --git a/gdb/config/i386/tm-i386v.h b/gdb/config/i386/tm-i386v.h index 66878e2..f80f519 100644 --- a/gdb/config/i386/tm-i386v.h +++ b/gdb/config/i386/tm-i386v.h @@ -225,7 +225,7 @@ i386_skip_prologue PARAMS ((int)); /* Return number of args passed to a frame. Can return -1, meaning no way to tell. */ -#define FRAME_NUM_ARGS(numargs, fi) (numargs) = i386_frame_num_args(fi) +#define FRAME_NUM_ARGS(numargs, fi) (numargs) = -1 #ifdef __STDC__ /* Forward decl's for prototypes */ struct frame_info; diff --git a/gdb/config/i386/tm-symmetry.h b/gdb/config/i386/tm-symmetry.h index 465e645..2d53d11 100644 --- a/gdb/config/i386/tm-symmetry.h +++ b/gdb/config/i386/tm-symmetry.h @@ -1,7 +1,7 @@ /* Target machine definitions for GDB on a Sequent Symmetry under dynix 3.0, with Weitek 1167 and i387 support. Copyright 1986, 1987, 1989, 1991, 1992, 1993 Free Software Foundation, Inc. - Symmetry version by Jay Vosburgh (uunet!sequent!fubar). + Symmetry version by Jay Vosburgh (fubar@sequent.com). This file is part of GDB. @@ -21,46 +21,21 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* I don't know if this will work for cross-debugging, even if you do get a copy of the right include file. */ +#ifdef _SEQUENT_ +/* ptx */ +#include <sys/reg.h> +#else +/* dynix */ #include <machine/reg.h> +#endif -#define TARGET_BYTE_ORDER LITTLE_ENDIAN - -/* Offset from address of function to start of its code. - Zero on most machines. */ - -#define FUNCTION_START_OFFSET 0 - -/* Advance PC across any function entry prologue instructions - to reach some "real" code. From m-i386.h */ - -#define SKIP_PROLOGUE(frompc) {(frompc) = i386_skip_prologue((frompc));} - -extern int -i386_skip_prologue PARAMS ((int)); - -/* Immediately after a function call, return the saved pc. - Can't always go through the frames for this because on some machines - the new frame is not set up until the new function executes - some instructions. */ - -#define SAVED_PC_AFTER_CALL(frame) \ - read_memory_integer(read_register(SP_REGNUM), 4) - -/* I don't know the real values for these. */ -#define TARGET_UPAGES UPAGES -#define TARGET_NBPG NBPG - -/* Address of end of stack space. */ - -#define STACK_END_ADDR (0x40000000 - (TARGET_UPAGES * TARGET_NBPG)) - -/* Stack grows downward. */ - -#define INNER_THAN < - -/* Sequence of bytes for breakpoint instruction. */ +#ifdef _SEQUENT_ +/* ptx, not dynix */ +#define SDB_REG_TO_REGNUM(value) ptx_coff_regno_to_gdb(value) +extern int ptx_coff_regno_to_gdb(); +#endif /* _SEQUENT_ */ -#define BREAKPOINT {0xcc} +#define START_INFERIOR_TRAPS_EXPECTED 2 /* Amount PC must be decremented by after a breakpoint. This is often the number of bytes in BREAKPOINT @@ -68,17 +43,15 @@ i386_skip_prologue PARAMS ((int)); #define DECR_PC_AFTER_BREAK 0 +#include "i386/tm-i386v.h" + /* Nonzero if instruction at PC is a return instruction. */ /* For Symmetry, this is really the 'leave' instruction, which */ /* is right before the ret */ +#undef #define ABOUT_TO_RETURN(pc) (read_memory_integer (pc, 1) == 0xc9) -/* Return 1 if P points to an invalid floating point value. -*/ - -#define INVALID_FLOAT(p, len) (0) - #if 0 --- this code can't be used unless we know we are running native, since it uses host specific ptrace calls. @@ -88,11 +61,8 @@ i386_skip_prologue PARAMS ((int)); #define FLOAT_INFO { i386_float_info(); } #endif -/* Say how long (ordinary) registers are. */ - -#define REGISTER_TYPE long - /* Number of machine registers */ +#undef NUM_REGS #define NUM_REGS 49 /* Initializer for an array of names of registers. @@ -104,6 +74,7 @@ i386_skip_prologue PARAMS ((int)); Also note that the st(0)...st(7) 387 registers are represented as st0...st7. */ +#undef REGISTER_NAMES #define REGISTER_NAMES { "eax", "edx", "ecx", "st0", "st1", \ "ebx", "esi", "edi", "st2", "st3", \ "st4", "st5", "st6", "st7", "esp", \ @@ -122,20 +93,146 @@ i386_skip_prologue PARAMS ((int)); 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. */ +#define EAX_REGNUM 0 +#define EDX_REGNUM 1 +#define ECX_REGNUM 2 +#define ST0_REGNUM 3 +#define ST1_REGNUM 4 +#define EBX_REGNUM 5 +#define ESI_REGNUM 6 +#define EDI_REGNUM 7 +#define ST2_REGNUM 8 +#define ST3_REGNUM 9 + +#define ST4_REGNUM 10 +#define ST5_REGNUM 11 +#define ST6_REGNUM 12 +#define ST7_REGNUM 13 + #define FP1_REGNUM 18 /* first 1167 register */ +/* Get %fp2 - %fp31 by addition, since they are contiguous */ + +#undef SP_REGNUM #define SP_REGNUM 14 /* Contains address of top of stack */ +#undef FP_REGNUM #define FP_REGNUM 15 /* Contains address of executing stack frame */ +#undef PC_REGNUM #define PC_REGNUM 16 /* Contains program counter */ +#undef PS_REGNUM #define PS_REGNUM 17 /* Contains processor status */ +#ifndef _SEQUENT_ +/* dynix, not ptx. For ptx, see register_addr in symm-tdep.c */ + +/* The magic numbers below are offsets into u_ar0 in the user struct. + * They live in <machine/reg.h>. Gdb calls this macro with blockend + * holding u.u_ar0 - KERNEL_U_ADDR. Only the registers listed are + * saved in the u area (along with a few others that aren't useful + * here. See <machine/reg.h>). + */ + +#define REGISTER_U_ADDR(addr, blockend, regno) \ +{ struct user foo; /* needed for finding fpu regs */ \ +switch (regno) { \ + case 0: \ + addr = blockend + EAX * sizeof(int); break; \ + case 1: \ + addr = blockend + EDX * sizeof(int); break; \ + case 2: \ + addr = blockend + ECX * sizeof(int); break; \ + case 3: /* st(0) */ \ + addr = blockend - \ + ((int)&foo.u_fpusave.fpu_stack[0][0] - (int)&foo); \ + break; \ + case 4: /* st(1) */ \ + addr = blockend - \ + ((int) &foo.u_fpusave.fpu_stack[1][0] - (int)&foo); \ + break; \ + case 5: \ + addr = blockend + EBX * sizeof(int); break; \ + case 6: \ + addr = blockend + ESI * sizeof(int); break; \ + case 7: \ + addr = blockend + EDI * sizeof(int); break; \ + case 8: /* st(2) */ \ + addr = blockend - \ + ((int) &foo.u_fpusave.fpu_stack[2][0] - (int)&foo); \ + break; \ + case 9: /* st(3) */ \ + addr = blockend - \ + ((int) &foo.u_fpusave.fpu_stack[3][0] - (int)&foo); \ + break; \ + case 10: /* st(4) */ \ + addr = blockend - \ + ((int) &foo.u_fpusave.fpu_stack[4][0] - (int)&foo); \ + break; \ + case 11: /* st(5) */ \ + addr = blockend - \ + ((int) &foo.u_fpusave.fpu_stack[5][0] - (int)&foo); \ + break; \ + case 12: /* st(6) */ \ + addr = blockend - \ + ((int) &foo.u_fpusave.fpu_stack[6][0] - (int)&foo); \ + break; \ + case 13: /* st(7) */ \ + addr = blockend - \ + ((int) &foo.u_fpusave.fpu_stack[7][0] - (int)&foo); \ + break; \ + case 14: \ + addr = blockend + ESP * sizeof(int); break; \ + case 15: \ + addr = blockend + EBP * sizeof(int); break; \ + case 16: \ + addr = blockend + EIP * sizeof(int); break; \ + case 17: \ + addr = blockend + FLAGS * sizeof(int); break; \ + case 18: /* fp1 */ \ + case 19: /* fp2 */ \ + case 20: /* fp3 */ \ + case 21: /* fp4 */ \ + case 22: /* fp5 */ \ + case 23: /* fp6 */ \ + case 24: /* fp7 */ \ + case 25: /* fp8 */ \ + case 26: /* fp9 */ \ + case 27: /* fp10 */ \ + case 28: /* fp11 */ \ + case 29: /* fp12 */ \ + case 30: /* fp13 */ \ + case 31: /* fp14 */ \ + case 32: /* fp15 */ \ + case 33: /* fp16 */ \ + case 34: /* fp17 */ \ + case 35: /* fp18 */ \ + case 36: /* fp19 */ \ + case 37: /* fp20 */ \ + case 38: /* fp21 */ \ + case 39: /* fp22 */ \ + case 40: /* fp23 */ \ + case 41: /* fp24 */ \ + case 42: /* fp25 */ \ + case 43: /* fp26 */ \ + case 44: /* fp27 */ \ + case 45: /* fp28 */ \ + case 46: /* fp29 */ \ + case 47: /* fp30 */ \ + case 48: /* fp31 */ \ + addr = blockend - \ + ((int) &foo.u_fpasave.fpa_regs[(regno)-18] - (int)&foo); \ + } \ +} +#endif /* _SEQUENT_ */ + /* Total amount of space needed to store our copies of the machine's register state, the array `registers'. */ /* 10 i386 registers, 8 i387 registers, and 31 Weitek 1167 registers */ +#undef REGISTER_BYTES #define REGISTER_BYTES ((10 * 4) + (8 * 10) + (31 * 4)) /* Index within `registers' of the first byte of the space for register N. */ +#undef REGISTER_BYTE #define REGISTER_BYTE(N) \ ((N < 3) ? (N * 4) : \ (N < 5) ? (((N - 2) * 10) + 2) : \ @@ -148,6 +245,7 @@ i386_skip_prologue PARAMS ((int)); * which are 80 bits each. */ +#undef REGISTER_RAW_SIZE #define REGISTER_RAW_SIZE(N) \ ((N < 3) ? 4 : \ (N < 5) ? 10 : \ @@ -155,22 +253,15 @@ i386_skip_prologue PARAMS ((int)); (N < 14) ? 10 : \ 4) -/* Number of bytes of storage in the program's representation - for register N. On the vax, all regs are 4 bytes. */ - -#define REGISTER_VIRTUAL_SIZE(N) 4 - /* Largest value REGISTER_RAW_SIZE can have. */ +#undef MAX_REGISTER_RAW_SIZE #define MAX_REGISTER_RAW_SIZE 10 -/* Largest value REGISTER_VIRTUAL_SIZE can have. */ - -#define MAX_REGISTER_VIRTUAL_SIZE 4 - /* Nonzero if register N requires conversion from raw format to virtual format. */ +#undef REGISTER_CONVERTIBLE #define REGISTER_CONVERTIBLE(N) \ ((N < 3) ? 0 : \ (N < 5) ? 1 : \ @@ -181,6 +272,7 @@ i386_skip_prologue PARAMS ((int)); /* Convert data from raw format for register REGNUM to virtual format for register REGNUM. */ +#undef REGISTER_CONVERT_TO_VIRTUAL #define REGISTER_CONVERT_TO_VIRTUAL(REGNUM,FROM,TO) \ ((REGNUM < 3) ? bcopy ((FROM), (TO), 4) : \ (REGNUM < 5) ? i387_to_double((FROM), (TO)) : \ @@ -194,6 +286,7 @@ i387_to_double PARAMS ((char *, char *)); /* Convert data from virtual format for register REGNUM to raw format for register REGNUM. */ +#undef REGISTER_CONVERT_TO_RAW #define REGISTER_CONVERT_TO_RAW(REGNUM,FROM,TO) \ ((REGNUM < 3) ? bcopy ((FROM), (TO), 4) : \ (REGNUM < 5) ? double_to_i387((FROM), (TO)) : \ @@ -207,6 +300,7 @@ double_to_i387 PARAMS ((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) \ ((N < 3) ? builtin_type_int : \ (N < 5) ? builtin_type_double : \ @@ -214,10 +308,13 @@ double_to_i387 PARAMS ((char *, char *)); (N < 14) ? builtin_type_double : \ builtin_type_int) -/* from m-i386.h */ +/* from m-i386.h (now known as tm-i386v.h). */ /* Store the address of the place in which to copy the structure the - subroutine will return. This is called from call_function. */ + subroutine will return. This is called from call_function. FIXME: + Why is it writing register 0? Is the symmetry different from tm-i386v.h, + or is it some sort of artifact? FIXME. */ +#undef STORE_STRUCT_RETURN #define STORE_STRUCT_RETURN(ADDR, SP) \ { (SP) -= sizeof (ADDR); \ write_memory ((SP), &(ADDR), sizeof (ADDR)); \ @@ -227,111 +324,13 @@ double_to_i387 PARAMS ((char *, char *)); 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) \ symmetry_extract_return_value(TYPE, REGBUF, VALBUF) -/* Write into appropriate registers a function return value - of type TYPE, given in virtual format. */ - -#define STORE_RETURN_VALUE(TYPE,VALBUF) \ - write_register_bytes (0, VALBUF, TYPE_LENGTH (TYPE)) - -/* Extract from an array REGBUF containing the (raw) register state - the address in which a function should return its structure value, - as a CORE_ADDR (or an expression that can be used as one). */ - -#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) (*(int *)(REGBUF)) - - -/* 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. - - However, if FRAME_CHAIN_VALID returns zero, - it means the given frame is the outermost one and has no caller. */ - -/* On Symmetry, %ebp points to caller's %ebp, and the return address - is right on top of that. */ - -#define FRAME_CHAIN(thisframe) \ - (!inside_entry_file ((thisframe)->pc) ? \ - read_memory_integer((thisframe)->frame, 4) :\ - 0) - -#define FRAME_CHAIN_VALID(chain, thisframe) \ - (chain != 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. */ -#define FRAMELESS_FUNCTION_INVOCATION(FI, FRAMELESS) \ - (FRAMELESS) = frameless_look_for_prologue(FI) - -#define FRAME_SAVED_PC(fi) (read_memory_integer((fi)->frame + 4, 4)) - -#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame) - -#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame) - -/* Return number of args passed to a frame. - Can return -1, meaning no way to tell. - - The weirdness in the "addl $imm8" case is due to gcc sometimes - issuing "addl $-int" after function call returns; this would - produce ridiculously huge arg counts. */ - -#define FRAME_NUM_ARGS(numargs, fi) \ -{ \ - int op = read_memory_integer(FRAME_SAVED_PC((fi)), 4); \ - int narg; \ - if ((op & 0xff) == 0x59) /* 0x59 'popl %ecx' */ \ - { \ - numargs = 1; \ - } \ - else if ((op & 0xffff) == 0xc483) /* 0xc483 'addl $imm8' */ \ - { \ - narg = ((op >> 16) & 0xff); \ - numargs = (narg >= 128) ? -1 : narg / 4; \ - } \ - else if ((op & 0xffff) == 0xc481) /* 0xc481 'addl $imm32' */ \ - { \ - narg = read_memory_integer(FRAME_SAVED_PC((fi))+2,4); \ - numargs = (narg < 0) ? -1 : narg / 4; \ - } \ - else \ - { \ - numargs = -1; \ - } \ -} - -/* Return number of bytes at start of arglist that are not really args. */ - -#define FRAME_ARGS_SKIP 8 - -/* Put here the code to store, into a struct frame_saved_regs, - the addresses of the saved registers of frame described by FRAME_INFO. - This includes special registers such as pc and fp saved in special - ways in the stack frame. sp is even more special: - the address we return for it IS the sp for the next frame. */ - -#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \ -{ i386_frame_find_saved_regs ((frame_info), &(frame_saved_regs)); } - -#ifdef __STDC__ /* Forward decl's for prototypes */ -struct frame_info; -struct frame_saved_regs; -#endif - -extern void -i386_frame_find_saved_regs PARAMS ((struct frame_info *, - struct frame_saved_regs *)); - -/* Things needed for making the inferior call functions. */ +/* Things needed for making the inferior call functions. FIXME: Merge + this with the main 386 stuff. */ #define PUSH_DUMMY_FRAME \ { CORE_ADDR sp = read_register (SP_REGNUM); \ diff --git a/gdb/config/i386/xm-symmetry.h b/gdb/config/i386/xm-symmetry.h index a18340a..a12c22e 100644 --- a/gdb/config/i386/xm-symmetry.h +++ b/gdb/config/i386/xm-symmetry.h @@ -1,6 +1,6 @@ -/* Definitions to make GDB run on a Sequent Symmetry under dynix 3.0, - with Weitek 1167 and i387 support. - Copyright 1986, 1987, 1989, 1992 Free Software Foundation, Inc. +/* Definitions to make GDB run on a Sequent Symmetry under + dynix 3.1 and ptx 1.3, with Weitek 1167 and i387 support. + Copyright 1986, 1987, 1989, 1992, 1993 Free Software Foundation, Inc. This file is part of GDB. @@ -18,129 +18,32 @@ 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. */ -/* Symmetry version by Jay Vosburgh (uunet!sequent!fubar) */ +/* Symmetry version by Jay Vosburgh (fubar@sequent.com) */ /* This machine doesn't have the siginterrupt call. */ #define NO_SIGINTERRUPT #define HAVE_WAIT_STRUCT -/* XPT_DEBUG doesn't work yet under Dynix 3.0.12, but UNDEBUG does... */ -/* #define PTRACE_ATTACH XPT_DEBUG -#define PTRACE_DETACH XPT_UNDEBUG -#define ATTACH_DETACH */ - -#define HOST_BYTE_ORDER LITTLE_ENDIAN +#ifdef _SEQUENT_ +/* ptx */ +#define HAVE_TERMIO +#define USG +#else +/* dynix */ /* Get rid of any system-imposed stack limit if possible. */ #define SET_STACK_LIMIT_HUGE -/* This is the amount to subtract from u.u_ar0 - to get the offset in the core file of the register values. */ - -#define KERNEL_U_ADDR (0x80000000 - (UPAGES * NBPG)) - -/* The magic numbers below are offsets into u_ar0 in the user struct. - They live in <machine/reg.h>. Gdb calls this macro with blockend - holding u.u_ar0 - KERNEL_U_ADDR. Only the registers listed are - saved in the u area (along with a few others that aren't useful - here. See <machine/reg.h>). */ - -#define REGISTER_U_ADDR(addr, blockend, regno) \ -{ struct user foo; /* needed for finding fpu regs */ \ -switch (regno) { \ - case 0: \ - addr = blockend + EAX * sizeof(int); break; \ - case 1: \ - addr = blockend + EDX * sizeof(int); break; \ - case 2: \ - addr = blockend + ECX * sizeof(int); break; \ - case 3: /* st(0) */ \ - addr = blockend - \ - ((int)&foo.u_fpusave.fpu_stack[0][0] - (int)&foo); \ - break; \ - case 4: /* st(1) */ \ - addr = blockend - \ - ((int) &foo.u_fpusave.fpu_stack[1][0] - (int)&foo); \ - break; \ - case 5: \ - addr = blockend + EBX * sizeof(int); break; \ - case 6: \ - addr = blockend + ESI * sizeof(int); break; \ - case 7: \ - addr = blockend + EDI * sizeof(int); break; \ - case 8: /* st(2) */ \ - addr = blockend - \ - ((int) &foo.u_fpusave.fpu_stack[2][0] - (int)&foo); \ - break; \ - case 9: /* st(3) */ \ - addr = blockend - \ - ((int) &foo.u_fpusave.fpu_stack[3][0] - (int)&foo); \ - break; \ - case 10: /* st(4) */ \ - addr = blockend - \ - ((int) &foo.u_fpusave.fpu_stack[4][0] - (int)&foo); \ - break; \ - case 11: /* st(5) */ \ - addr = blockend - \ - ((int) &foo.u_fpusave.fpu_stack[5][0] - (int)&foo); \ - break; \ - case 12: /* st(6) */ \ - addr = blockend - \ - ((int) &foo.u_fpusave.fpu_stack[6][0] - (int)&foo); \ - break; \ - case 13: /* st(7) */ \ - addr = blockend - \ - ((int) &foo.u_fpusave.fpu_stack[7][0] - (int)&foo); \ - break; \ - case 14: \ - addr = blockend + ESP * sizeof(int); break; \ - case 15: \ - addr = blockend + EBP * sizeof(int); break; \ - case 16: \ - addr = blockend + EIP * sizeof(int); break; \ - case 17: \ - addr = blockend + FLAGS * sizeof(int); break; \ - case 18: /* fp1 */ \ - case 19: /* fp2 */ \ - case 20: /* fp3 */ \ - case 21: /* fp4 */ \ - case 22: /* fp5 */ \ - case 23: /* fp6 */ \ - case 24: /* fp7 */ \ - case 25: /* fp8 */ \ - case 26: /* fp9 */ \ - case 27: /* fp10 */ \ - case 28: /* fp11 */ \ - case 29: /* fp12 */ \ - case 30: /* fp13 */ \ - case 31: /* fp14 */ \ - case 32: /* fp15 */ \ - case 33: /* fp16 */ \ - case 34: /* fp17 */ \ - case 35: /* fp18 */ \ - case 36: /* fp19 */ \ - case 37: /* fp20 */ \ - case 38: /* fp21 */ \ - case 39: /* fp22 */ \ - case 40: /* fp23 */ \ - case 41: /* fp24 */ \ - case 42: /* fp25 */ \ - case 43: /* fp26 */ \ - case 44: /* fp27 */ \ - case 45: /* fp28 */ \ - case 46: /* fp29 */ \ - case 47: /* fp30 */ \ - case 48: /* fp31 */ \ - addr = blockend - \ - ((int) &foo.u_fpasave.fpa_regs[(regno)-18] - (int)&foo); \ - } \ -} +#endif -/* Override copies of {fetch,store}_inferior_registers in infptrace.c. */ +/* XPT_DEBUG doesn't work yet under Dynix 3.0.12, but UNDEBUG does... */ +/* #define PTRACE_ATTACH XPT_DEBUG +#define PTRACE_DETACH XPT_UNDEBUG +#define ATTACH_DETACH */ -#define FETCH_INFERIOR_REGISTERS +#define HOST_BYTE_ORDER LITTLE_ENDIAN /* We must fetch all the regs before storing, since we store all at once. */ |