+/* "@(#)head.h 4.1 10/9/80" */
+#include <sys/vm.h>
+#define PAGSIZ (CLSIZE*NBPG)
#include <stdio.h>
-#include "bio.h"
+#include <setjmp.h>
+#include <sgtty.h>
+#include "old.h"
#include "defs.h"
/* input line decoding */
int scallf; /* set to 1 iff procedure call */
int reflag; /* set to 1 iff re */
int redir; /* set to 1 iff forward search */
+int colonflag; /* set to 1 iff colon typed */
+int ncolonflag; /* set to 1 iff colon typed after number */
+int percentflag; /* set to 1 iff percent symbol typed */
/* source file i/o */
char curfile[30]; /* name of file being edited */
int fline; /* line number in file */
-int maxfline; /* maximum line number in file, 0 if unknown */
-struct brbuf fiobuf; /* file descriptor */
-char fbuf[256]; /* current line from file */
+char fbuf[BUFSIZ]; /* current line from file */
char filework[128]; /* place to put filename */
-char *fp; /* pointer to it */
+char *fp; /* pointer to it */
+int nolines; /* set to 1 iff no lines in file */
+#ifdef FLEXNAMES
+off_t gstart; /* start of string table in a.out */
+char *strtab; /* string table from a.out * (in core!) */
+long ssiz; /* size of string table (for range checks) */
+#endif
/* returned by slookup */
+#ifndef FLEXNAMES
char sl_name[8];
-char sl_class, sl_type;
+#else
+char *sl_name;
+#endif
+char sl_class;
+short sl_type;
int sl_size, sl_addr;
int subflag;
+/* procedure call information */
+int scallx; /* procedure call in progress */
+ADDR fps, aps, pcs; /* old stack frame */
+BKPTR bkpts; /* old breakpoint */
+int flagss; /* and its flags */
+char dschar; /* '/' if value should be displayed */
+
/* symbol table info */
long ststart; /* offset of symbol table in a.out */
+#ifndef VMUNIX
struct brbuf sbuf; /* buffer for symbol table */
+#endif
long extstart; /* offset of first external in a.out */
/* address info */
ADDR dot; /* current address */
ADDR callpc, frame, argp; /* current stack frame */
-char *odesc; /* descriptor of last displayed variable */
+/* other */
+char odesc[10]; /* descriptor of last displayed variable */
+ADDR oaddr; /* address of last displayed variable */
char otype; /* type of last displayed variable */
char oclass; /* class of last displayed variable */
+char oincr; /* size of last displayed variable */
+struct sgttyb sdbttym, userttym;
+ /* tty modes for sdb and user */
+char oldargs[128];
+char prname[50]; /* print name used by outvar */
+jmp_buf env; /* environment for setjmp, longjmp */
+int debug; /* toggled by Y command */
+time_t symtime; /* modification time of symfil */
+char *symfil;
+char *corfil;
+ADDR exactaddr, lnfaddr; /* set by adrtolineno() */
+ADDR firstdata; /* lowest address of data */
#define STABMASK 0376
-
+#define WINDOW 10 /* window size for display commands */
+#define COMMANDS "\004\"+-=!/BCDMQRSTXabcdegklmpqrstwxzVXY"
+ /* each sdb command must appear here */
#define NUMARGS 16 /* number of args allowed in sub call */
#define SUBSTSP 512 /* length of space for sub args and strings */
#define WORDSIZE 4 /* wordsize in bytes on this machine */
+#define BIGNUM 0x7fffffff
+#define MAXADDR 1L<<30
+
struct filet {
+#ifndef FLEXNAMES
char sfilename[31]; /* source file name */
+#else
+ char *sfilename;
+#endif
char lineflag; /* set iff this is a '#line' file */
ADDR faddr; /* address in core */
long stf_offset; /* offset in a.out */
} *files, *badfile;
struct proct {
+#ifndef FLEXNAMES
char pname[8]; /* procedure name */
+#else
+ char *pname;
+#endif
ADDR paddr; /* address in core */
long st_offset; /* offset in a.out */
struct filet *sfptr; /* source file name pointer */
int lineno; /* line number in source file */
+ char entrypt; /* 1 iff a F77 entry */
} *procs, *badproc;
#define PROCINCR 20
#define FILEINCR 10
-#define MAXADDR 1L<<30
-#define varchar(x) ((x>='A' && x<='Z') || (x>='a' && x<='z') || x == '_' || x == '.' || x == '[' || x == ']' || x == '-' || x == '>')
+#define varchar(x) ((x>='A' && x<='Z') || (x>='a' && x<='z') || x == '_' || x == '.' || x == '[' || x == ']' || x == '-' || x == '>' || x == '*' || x == '?')
#define number(x) (x >= '0' && x <= '9')
-char *readline();
+char *readline(), readchar(), rdc();
char *cpname();
-char *cpall();
+char *cpstr(), *cpall();
char *sbrk();
char *typetodesc();
int octdigit(), decdigit(); hexdigit();
long readint(), rint();
long adrtostoffset();
long getval(), argvalue();
+long slookup(), globallookup();
ADDR varaddr(), dispvar();
-ADDR extaddr();
+ADDR extaddr(), formaddr(), stackreg();
struct proct *curproc();
struct proct *findproc();
-struct proct *adrtoproc();
+struct proct *adrtoprocp();
struct proct *initframe(), *nextframe();
struct filet *findfile(), *adrtofilep();
-
-#define WINDOW 10
-#define COMMANDS "\004+-=!/abcdemnpqrstwxz"
-int debug;