|
|
1.1 root 1: static char sccsid[] = "@(#)init.c 2.9";
2:
3: #include "cdb.h"
4: #include "macdefs.h"
5:
6: char *strrchr();
7:
8: export pFDR vrgFd; /* file descriptors */
9: export int vifdMac, vifd, vifdNil, vifdTemp;
10: export pPDR vrgPd; /* procedure descriptors */
11: export int vipdMac, vipd;
12: export ADRT vadrStart; /* AFTER initialization, BEFORE user's code */
13: export ADRT vadrMain; /* same as vadrStart for C, different for Pascal */
14:
15: static MODER amode;
16: export pMODER vmode;
17:
18:
19: /* I N I T A L L */
20:
21: local void InitAll()
22: {
23: /* setup the default display record */
24: vmode = &amode;
25: vmode->cnt = 1;
26: vmode->len = CBINT;
27: vmode->df = dfDecimal;
28: vmode->imap = 0;
29: vimap = 0; /* kludgey alternate map selector */
30:
31: /* break point table stuff */
32: vibpTemp = 0; /* we use as a stash for commands of temp bp's */
33: vibpMac = 1; /* we never explicitly assign to 0 */
34: vrgBp = (pBPR) malloc(vibpMax*cbBPR); /* allocate bp table */
35: vcbTot += vibpMax * cbBPR;
36:
37: /* random things */
38: vcaseMod = 040; /* start out with case INsensitive searches */
39: vdot = 0;
40: vfRecord = false;
41: vfnDecl = fnNil; /* the declarations file */
42: #ifdef ONYX
43: vcBadMax = 12; /* obscure - see IbpFSingle code in single.c */
44: #endif
45: #ifdef M68000
46: vcBadMax = 12; /* obscure - see IbpFSingle code in single.c */
47: #endif
48: #ifdef SUN
49: vcBadMax = 12; /* obscure - see IbpFSingle code in single.c */
50: #endif
51: #ifdef TAHOE
52: vcBadMax = 10; /* obscure - see IbpFSingle code in single.c */
53: #endif
54: #ifdef VAX
55: vcBadMax = 1000; /* obscure - see IbpFSingle code in single.c */
56: #endif
57:
58: InitSymfile(vsbSymfile);
59: #ifdef BSD41
60: InitSs();
61: #endif
62: InitCorefile(vsbCorefile);
63: InitTy(); /* variable typing stuff */
64: InitFdPd(); /* setup symbol stuff */
65: InitSpc(); /* init special (debugger resident) variables */
66: InitSa(); /* set default signal handling */
67: InitAssert(); /* assertions table */
68:
69: /* now this one is weird. If there IS a core file, you can look in
70: * u.u_ar0 and you will find, at least on the Onyx, 03742. But
71: * if you do NOT have a core file, and you need this for doing
72: * accesses into the live child process, how the hell are you
73: * going to find out??? I don't know!
74: */
75: v_ar0 = adrReg0; /* from macdefs.h */
76: if (vfnCore != fnNil) {
77: GetState(); /* to make process globals be correct */
78: #ifdef ONYX
79: vpc -= 2; /* so we have true address of error */
80: #endif
81: } /* if */
82:
83: #ifdef BSD41
84: vadrStart = AdrFLabel("program");
85: vadrMain = AdrFLabel("main");
86: if (vadrStart != adrNil) {
87: /* looks like Pascal */
88: OpenIpd(IpdFName("program"), true);
89: if (!vfPascal)
90: vadrStart = adrNil; /* filename did NOT end with '.p' */
91: else if (vadrMain == adrNil)
92: vadrMain = vadrStart;
93: }
94: if (vadrStart == adrNil) {
95: if (vadrMain != adrNil) {
96: /* not a Pascal program, maybe C? */
97: OpenIpd(IpdFName("main"), true);
98: }
99: else {
100: Panic("It's not C, it's not Pascal - what is it????");
101: }
102: }
103: #else
104: OpenIpd(IpdFName("main"), true);
105: #endif
106: vadrStart = AdrFIfdLn(vifd, viln);
107:
108: #ifdef VAX
109: vadrBreak = AdrFLabel("vadrBreak");
110: vadrCall = AdrFLabel("vadrCall");
111: #endif
112: #ifdef TAHOE
113: vadrBreak = AdrFLabel("vadrBreak");
114: vadrCall = AdrFLabel("vadrCall");
115: #else
116: vadrBreak = AdrFLabel("_end_");
117: #endif
118: } /* InitAll */
119:
120:
121: /* M I N */
122:
123: export int Min(x, y)
124: int x, y;
125: {
126: return((x<y) ? x : y);
127: } /* Min */
128:
129:
130: /* M A X */
131:
132: export int Max(x, y)
133: int x, y;
134: {
135: return((x>y) ? x : y);
136: } /* Max */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.