133 lines
5.4 KiB
C
133 lines
5.4 KiB
C
|
#ifndef h_raid
|
||
|
#define h_raid
|
||
|
/******************************************************************************
|
||
|
*
|
||
|
* definitions for the symbolic debugger
|
||
|
*
|
||
|
* Module %M% Version %I% Date %H%
|
||
|
*
|
||
|
* (c) Copyright 1998 Ardent Software Inc. - All Rights Reserved
|
||
|
* This is unpublished proprietary source code of Ardent Software Inc.
|
||
|
* The copyright notice above does not evidence any actual or intented
|
||
|
* publication of such source code.
|
||
|
*
|
||
|
*******************************************************************************
|
||
|
*
|
||
|
* Maintenence log - insert most recent change descriptions at top
|
||
|
*
|
||
|
* Date.... GTAR# WHO Description.........................................
|
||
|
* 10/14/98 23801 SAP Change copyrights.
|
||
|
* 06/05/98 19540 JSM Change BASIC, RAID and VLIST to use common SRCLEN
|
||
|
* definition for maximum source line length
|
||
|
* 06/01/94 7096 WLG Changed hex back to RAIDhex because hex is a macro
|
||
|
* 06/01/94 7096 WLG Added two elements to RAIDenv for watchpoint
|
||
|
* value setting. Also removed redundant "RAID" from
|
||
|
* elements in the RAIDenv structure for readability.
|
||
|
* 06/17/93 8357 JWT Changed RAID to stack debug environments between
|
||
|
* execute layers
|
||
|
* 04/29/91 8258 JWT remove 16 deep restriction on timings function
|
||
|
* 11/13/89 6143 JSM Added include of exesave.h
|
||
|
* 10/02/89 5579 JSM Moved define of RAIDmaxbp here from raid.c
|
||
|
* 07/25/88 - - Maintenence log purged at 5.2.1, see release 5.1.10.
|
||
|
*
|
||
|
*****************************************************************************/
|
||
|
|
||
|
#include "exesave.h"
|
||
|
|
||
|
EXTERN void RAIDtrap();
|
||
|
EXTERN int RAIDsymbol();
|
||
|
|
||
|
#define RAIDmaxbp 64
|
||
|
#define RAID_MMAX 7 /* The total number of variables allowed to */
|
||
|
/* be watched for modification during one */
|
||
|
/* raid session. (M command) */
|
||
|
|
||
|
/* Note - trace structure is no longer used for 'T' option of raid */
|
||
|
/* This was not removed because '#' option for timings still uses */
|
||
|
/* this old trace logic. 11/89 */
|
||
|
struct RAIDtrace
|
||
|
{ int t_slot;
|
||
|
int t_line;
|
||
|
};
|
||
|
|
||
|
struct RAIDenvironment
|
||
|
{
|
||
|
int flag;
|
||
|
int globalRAID_FLG; /* used only for stacking */
|
||
|
int mode;
|
||
|
int dom;
|
||
|
int dom2;
|
||
|
int failed;
|
||
|
int tracecnt; /* keeps track of trace history */
|
||
|
int proc_cnt;/* how many procedure names to break on*/
|
||
|
int proc_flag;/*Flags a break on a procedure name */
|
||
|
int bskip;/* global counter of how many times to skip */
|
||
|
int brks;
|
||
|
int watch_slot;/*used to save slot number for watchpoints */
|
||
|
int depth; /* add 1 per symbol table */
|
||
|
int lineno; /* the current source line */
|
||
|
int newline; /* the next source line to be executed */
|
||
|
int dspline; /* the current line displayed */
|
||
|
int curline; /* the current line */
|
||
|
int calline; /* will retain the source line number from */
|
||
|
/* where a subrountine is called from */
|
||
|
int Max_depth;
|
||
|
int mcnt;/*how many watchpoint variables */
|
||
|
int total;/* the total number of watchpoints variables */
|
||
|
int slot;/* keeps track of what subroutine presently in */
|
||
|
int last_slot; /* number of subroutines called */
|
||
|
int src_open;
|
||
|
int inx[RAID_MMAX];/*save symbols position in symbol table */
|
||
|
int ofst[RAID_MMAX];/*hold the offset from which a value o*/
|
||
|
/* an array can be calculated */
|
||
|
int RAIDx[RAID_MMAX];/* x a an nd y coordinates for watg */
|
||
|
int RAIDy[RAID_MMAX];
|
||
|
short RAIDhex,
|
||
|
nok;
|
||
|
PROGRAM **saveprog;
|
||
|
ushort **saveCode;
|
||
|
char *srcname;
|
||
|
struct RAIDtrace *ts;
|
||
|
ushort *bpnts[RAIDmaxbp+1];
|
||
|
PROGRAM *bpenv[RAIDmaxbp+1];
|
||
|
char *proc_name[RAIDmaxbp+1];
|
||
|
ushort *Code[RAIDmaxbp+1];
|
||
|
ushort *wspc; /* saves address of watchpoint */
|
||
|
DATUM *wsvn[RAID_MMAX]; /* saves addresses of watchpoints */
|
||
|
DATUM svMAT[RAID_MMAX]; /* saves value of array for
|
||
|
watchpoints*/
|
||
|
int watch_flag[RAID_MMAX]; /* Indicate watch on value if TRUE */
|
||
|
DATUM wvalue[RAID_MMAX]; /* saves value to watch for */
|
||
|
ushort bopcd[RAIDmaxbp+1];
|
||
|
STRING searchstr; /* last searched-for substring */
|
||
|
DATUM svDAT[RAID_MMAX]; /* saves current value of watchpoint */
|
||
|
MFILE fsrc;
|
||
|
char srcbuff[ SRCLEN ];
|
||
|
struct RAIDenvironment *prevRAIDenv;
|
||
|
};
|
||
|
|
||
|
EXTERN struct RAIDenvironment *RAIDenv;
|
||
|
|
||
|
#define MX_PATHNAME 1024
|
||
|
|
||
|
#define RAIDinit 0x0001 /* have we initialized */
|
||
|
#define RAIDstep 0x0002 /* we are single stepping */
|
||
|
#define RAIDcall 0x0004 /* calling external subroutine */
|
||
|
#define RAIDcrst 0x0008 /* restart after single step ... continue */
|
||
|
/* It's the automatic restart flag */
|
||
|
#define RAIDcskp 0x0010 /* counter for how many times to continue */
|
||
|
#define RAIDwstp 0x0020 /* step till variable changes */
|
||
|
#define RAIDsent 0x0040 /* trap on subroutine call */
|
||
|
#define RAIDlstp 0x0080 /* step till source line changes */
|
||
|
#define RAIDastp 0x0100 /* assembly language step */
|
||
|
#define RAIDSstp 0x0200 /* step over subroutine calls */
|
||
|
#define RAIDpcal 0x0400 /* break on procedure call names */
|
||
|
#define RAIDsrtn 0x0800 /* return from external subroutine */
|
||
|
#define RAIDnsee 0x1000 /* in -I subroutine */
|
||
|
#define RAIDverb 0x0001 /* verbose mode */
|
||
|
#define RAIDprof 0x0080 /* profiling mode (opcode counting) */
|
||
|
#define RAIDtime 0x0002 /* timing all the subroutines */
|
||
|
#define DAYsecs 14400 /* seconds in a day */
|
||
|
|
||
|
#endif /* end of raid.h */
|