1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
|
Begin port to DECstation 3100. 23 July 1989.
Start with source only archive of VAX/Ultrix system.
[note - rsh/tar hung up mysteriously while loading files onto decstation,
[and had to be restarted].
--------------------------
unix/as.mips +
unix/bin.mips +
Created AS and BIN directories for Dec/MIPS. (7/23)
unix/as.mips/zsvjmp.s
Prepared a dummy version of zsvjmp for the moment. All this does is
set the output status value to zero. (prepared by using the compiler
to generate the assembler source for a small C program). (7/23)
unix/boot/spp/xc.c
It appears that for some reason, the MIPS C compiler or linker will
not accept a file with a .e extension as the output (-o) file.
Had to modify XC to output a .E file temporarily, which is renamed
to .e after the link. (7/23)
unix/mkpkg.sh
unix/os/mkpkg.sh
unix/shlib/mkpkg.sh
unix/boot/bootlib/mkpkg.sh
unix/boot/generic/mkpkg.sh
unix/boot/mkpkg/mkpkg.sh
unix/boot/rmbin/mkpkg.sh
unix/boot/rmfiles/mkpkg.sh
unix/boot/rtar/mkpkg.sh
unix/boot/spp/mkpkg.sh
unix/boot/spp/mkxc.sh
unix/boot/spp/rpp/mkpkg.sh
unix/boot/spp/xpp/mkpkg.sh
unix/boot/wtar/mkpkg.sh
unix/boot/xyacc/mkpkg.sh
unix/gdev/sgidev/mkpkg.sh
unix/bin.mips/fixnames +
Modified all the mkpkg.sh files to generate .E files. Added a
fixnames script to bin.mips to rename any .E files therein to .e,
and added code the the root mkpkg.sh to call fixnames at the
end of the bootstrap. (7/23)
unix/hlib/cl.csh
unix/hlib/mkiraf.csh
unix/hlib/install
unix/hlib/libc/iraf.h
1. Modified the iraf root pathnames in these files.
2. In the install, also deleted the entries for edsym.e to avoid
an error message during the install. (7/23)
unix/hlib/extern.pkg
Commented out the stsdas entries. (7/23)
unix/hlib/mkpkg.inc
unix/hlib/irafuser.csh
unix/hlib/mkpkg.sf.MIPS
Set MACH to MIPS. Added a case for machine type MIPS. Added an
empty special file list. (7/23)
unix/hlib/motd
Modified to say DECstation/IRAF. (7/23)
unix/os/zxwhen.c
Added a #ifdef mips section with some hardware exception codes for
the MIPS. (7/23)
--------------------
Start bootstrap. (7/23)
unix/hlib/irafuser.csh
Linking of RPP produced a "gp relocation out of range" error message.
It was necessary to compile with "-G 0" (no global variables indexed
by global pointer) in order to get this to go away. (7/23)
unix/boot/bootlib/mkpkg.sh
Modified to mv libboot.a to $hbin (../../bin) rather than $hlib,
since the libboot.a in $hlib is a symbolic link. (7/23)
--------------------
Start sysgen. (7/23)
unix/as/gkiprint.o +
unix/hlib/mkpkg.sf.MIPS
The file gkiprint.x would fail with a slew (like, 700) syntax and
other errors. There was nothing wrong with the code and the few
workarounds I tried had no effect. I finally managed to compile
the file by breaking it up into half a dozen pieces, compiling each
separately, and linking the resultant objects into a single large
object gkiprint.o. Since this bug will probably go away before long
I merely placed the manually generated object file in AS, and made
an entry in the special file list to use this object. (7/23)
unix/as/imsetr.f +
unix/hlib/mkpkg.sf.MIPS
In this case the file imsetr.f would cause the first pass of f77
to core dump (not an optimizer problem). I had to hack the fortran
code to workaround the bug, placing the hacked file in AS. The
offending statement was:
memi(im+33) = and (memi(+33) , not(1 ))
the following version is ok:
i = not(1)
memi(im+33) = and (memi(+33) , i)
The bug must have something to do with the bit intrinsics. (7/23)
unix/as/fseti.f + # FIO
unix/as/fmfcache.f + # FMIO
unix/as/fmlfbrd.f +
unix/as/fmlfbwr.f +
unix/as/fmlfcopy.f +
unix/as/fmlfundel.f +
unix/hlib/mkpkg.sf.MIPS
Modified to work around the same compiler bug as above. The NOT of
any compile time integer constant used in an expression seems to
always cause a core dump. (7/23)
unix/boot/spp/xc.c
unix/hlib/mkpkg.inc
1. In the first sysgen, x_images.e failed to link with a "gp relocation
out of range" type problem. Recompiling the IMAGES package libpkg.a
with -G 0 fixed the problem.
2. Passing this flag through XC, however, was not possible without
a code change to XC, as there was no way to pass two consecutive
arguments such as "-G 0". In order to support this XC was modified
to permit flags of the form "-/#flag", which are passed as "flag".
This is similar to "-/flag" which is passed as "-flag", except that
it allows flags with no "-" to be passed. Hokey, but backwards
compatible and it solves the problem. (7/23)
-----------------
Started sysgen of NOAO packages. (7/23)
noao/lib/database.o +
noao/lib/mkpkg.inc
noao/lib/mkpkg.sf.MIPS
The database.x file in DTOI would cause the compiler to become
terminally confused, as with gkiprint above. Manually constructed
the database.o object, placed the latter in noao$lib, and modified
the NOAO special file list to use this object rather than try to
compile the file. (7/24)
unix/hlib/config.h
unix/hlib/libc/spp.h
Set the size of the ZDOJMP jump buffer to 84 (83 ints for the jmp_buf
buffer plus 1 for the address of the status variable). (7/24)
unix/as.mips/zsvjmp.s
Wrote and installed the real zsvjmp.s. (7/24)
-------------------
Sysgen/relink with new zsvjmp.
Everything appears to work now. (7/24)
bin.mips
noao/bin.mips
Stripped the BINS to save disk space, as it appeared that the symbol
table information is unusually large on the decstation. (7/25)
Normal Stripped
core system bin 21.5 16.0
noao bin 18.0 12.3
------- --------
39.5 28.3
unix/as/zsvjmp.s
Modified slightly to eliminate a delay slot. This failed to work
at first and I eventually discovered that the reason was that the
*assembler* was modifying my assembler code, reordering the
instructions and inserting nop's in delay slots, producing invalid
code! I had to add a "noreorder" directive to get it to leave the
code alone. (7/25)
unix/os/zxwhen.c
As a first step in testing exception handling I tried the following
in the CL:
cl> = 5 / 0
This caused the CL to core dump on the uncaught signal SIGTRAP.
On all other unix systems thus far, integer divide by zero has been
mapped to SIGFPE, but on the MIPS it is a trap. Modified zxwhen.c
to map SIGTRAP onto the VOS exception class X_ARITH. (7/25)
unix/os/zzstrt.c
Added the following #ifdef mips code to zzstrt, to enable the overflow,
invalid, and divzero IEEE exceptions:
set_fpc_csr (get_fpc_csr() | 07000);
The {set|get}_fpc_csr() routines appear to be undocumented but I
found them anyhow by searching the symbol tables of the host libraries
in /usr/lib. (7/25)
[LATER] Well, enabling the IEEE exceptions works, but somehow this
is making the software misbehave in a way I do not yet understand
and do not have time to look into right now. Completely unrelated
things like "stty vt100", "imheader dev$pix" fail mysteriously with
the IEEE trap enable bits set in the FPU context and status register.
This doesn't make any sense and we will have to do without the IEEE
traps for now. Possibly this is due to a bug in the OS which will
go away in the next release.
unix/hlib/mkfloat.csh
The code in this script which lists the tar archive back with
"tar -tf", to verify that a good archive has been generated before
deleting the files, does not work on the DECstation. The problem
is that tar -tf produces different output here than on the other
systems; the directories are listed as files in addition to the files.
I had to change the
tar -tf
to
tar -tf | grep -v '/$'
to get things to work. (7/26)
unix/bin.mips
noao/bin.generic
bin.generic
Stripped all the executables (HSI, IRAF, NOAO).
Made IRAF and NOAO generic. (7/26)
Summary of various problems encountered.
-------------------
fortran compiler core dumps
c compiler core dumps
cannot -o to a .e file
rsh|tar hung once
NO ADB!!
dbx dies occasionally with internal error: stack overflow
2 user limit on logins - prevents even having two windows
open from Sun with a different rlogin session in each.
System is very fast single user; much slower if anything else
is running on the machine (memory too small?).
System crashed on first day of testing with 2 users busy doing things.
(there did not seem to be a system message file).
Some routines which use floating point produce different results on
the MIPS than on other systems. Examples thus far are the FITS
programs, and IMHISTOGRAM. No doubt more will be discovered.
IEEE exception handling is not working currently.
----------------
V2.8BETA system frozen and archived. (7/26)
----------------
Begin upgrade to V2.9ALPHA, 6 DEC 1989.
Working with newly arrived IRAF DECstation 3100!
Installed the V2.8ALPHA HSI.
Merged in all relevant V2.9 modifications to the HSI.
unix/boot/spp/xc.c
Changed the syntax "-/#foo" -> "foo" to "-//foo" -> "foo" for
escaping command line arguments to XC. (1/6)
----------------
Started a bootstap. (1/6)
mkpkg
Extended the mkpkg summary filter in the root mkpkg to filter out
the great number of "local variable iyy never used" warning messages
produced by the MIPS compiler. (1/6)
pkg/plot/t_graph.x
This file contained a routine im_projection equivalent to a routine
of the same name in file improject.x, resulting in two externals of
the same name in the package library. (1/7)
unix/boot/spp/xc.c
To avoid a circular reference problem in the DS3100 Fortran libraries,
which causes an undefined symbols "s_abort" problem when linking some
programs, added a second search of libF77 to the end of the XC host
library link list, after the -lm. (1/7)
|