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
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
|
DEC Alpha OSF/1 V2.0 port. Begun 28 December 1994.
Based in part on the preliminary port done by Nelson Zarate of STScI.
Starting point is the Solaris/IRAF system at V2.10.3.
This platform is BSD-oriented with only partial SYSV support so we
will use the BSD code in the HSI.
--------------------------------------------------------------------------
unix/hlib/motd
Edited the motd to indicate that the system is DEC-ALPHA/IRAF,
alpha test version. (12/28)
unix/hlib/irafuser.csh
Edited this file sufficiently to allow it to be sourced during login.
1. Set MACH to "alpha" using `uname -m`.
2. Set HSI flags to define "OSF1" for compile time ifdefs. For the
moment set all other HSI compile and link flags to null.
3. Added some code to try to automatically determine $iraf if not
defined in the user's environment when the script is run. A list
of standard root directories are searched for; these can be links
to the actual location and it will still work. (12/28)
unix/hlib/libc/spp.h
1. Set LEN_JUMPBUF to 2*(84+1) for the Alpha (the 2 is because IRAF
uses type int for the array while OSF1 uses type long). (See also
hlib/config.h below).
2. Set XLONG to int (=32 bits) for this 64 bit machine.
3. Compiled osb/zzeps2.f and verified that the IEEE epsilons work.
4. OSF1 f77 evidently uses trailing underscores so it should not
be necessary to modify the Fortran/C name mappings. (12/28)
unix/hlib/libc/kernel.h
1. SIGFUNC is a pointer to void for OSF1.
2. OSF1 has bcopy but the manpage does not say whether it can handle
overlapping arrays, so we will use memmove/memset instead. (12/28)
unix/hlib/libc/setjmp.h
Comment out the #pragma unknown_control_flow, not support for OSF1
and there doesn't appear to be anything comparable. (12/28)
unix/os/getproc.c
Added an #ifdef OSF1 to cause the nlist-based code to be used. (12/28)
unix/os/irafpath.c
Added a #ifdef __alpha for the alpha architecture. (12/28)
unis/os/zfioks.c
Changed a number of #ifdef SOLARIS conditionals to #ifdef OSF1
where appropriate. (for example use the select macros, updated
typing for socket calls). (12/28)
unis/os/zfiond.c
Modified to use the socket macros as above. (12/28)
unix/os/zgcmdl.c
Modified similarly to the Ultrix version, using the external __Argv
to pick up the host argument list. (12/28)
unix/os/zopdir.c
1. Modified to use <dirent.h>. (12/28)
2. zopdir would pass back a pointer coerced to an int as the "file
descriptor" but this would fail on 64 bit systems where pointers
don't fit in 32 bits. Modified the routine to allocate a kernel
file descriptor for the directory and pass back a normal fd instead.
(12/29)
unix/os/zxwhen.c
Modified for OSF. OSF1 has sigaction, so this is used for handling
the floating point exceptions (as with Solaris). (12/28)
unix/os/zzstrt.c
Modified to call the OSF1 function ieee_set_fp_control to enable the
invalid, divide by zero, and overflow exceptions. (12/28)
unix/os/zdojmp.c
Had to modify to treat jmpbuf as pointer to long rather than to int,
in order to retrieve the quadword address of the status variable
from jmpbuf[0] and to correctly compute jmpbuf[1]. (12/28)
unix/as.alpha +
unix/as.alpha/zsvjmp.s +
Set up an AS directory for the alpha/osf HSI. Wrote an Alpha version
of zsvjmp. The trick with this one, which I missed at first, was
to set register 27 (pv) to the address of setjmp before branching
into it. The alpha procedure calling sequence assumes that the caller
of a procedure does this and it is required to set the global pointer
correctly for the procedure being executed.
The STScI version of zsvjmp (produced by technical support at DEC)
could not be used as it was just setjmp with the name changed.
The status argument used by zsvjmp was being ignored, and setjmp
was being called with the wrong jump buffer address. (12/28)
unix/hlib/mkpkg.inc
unix/hlib/mkpkg.sf.OSF1 +
Set up a basic mkpkg.inc for OSF1. (12/28)
unix/.../mkpkg.sh
The OSF1 compilers refuses to produce a file with the extension ".e",
so all the HSI mkpkg.sh files were modified to use .E instead. When
the executables are moved to $hbin the extension is changed to .e.
(12/28)
unix/os/prwait.c
Like Solaris, OSF1 wait() wants an int exit_status argument. (12/28)
unix/os/zgtime.c
time() is of type time_t in OSF1. (12/28)
unix/os/gmttolst.c
unix/boot/bootlib/ostime.c
These routines use ftime() which on OSF1 is only available in an
optional compatibility library. Added a #ifdef OSF1 case which
uses localtime() instead of ftime to compute the timezone in
seconds west of GMT. (12/28)
unix/hlib/irafuser.csh
1. Set the default optimization level for Fortran files to -O3, to
disable inter-procedural optimization which causes a warning when
compiling files for a library.
2. Added a -lots reference to HSI_F77LIBS, this library is evidently
used internally by the Fortran compiler. (12/28)
unix/boot/wtar/wtar.c
Fixed a bug in WTAR involving coercion of a pointer to an integer
(line 536, bp = ...). (12/28)
unix/boot/spp/xc.c
Modified for OSF1. The Solaris version pretty much works, about
all I had to modify was the list of Fortran libraries. Also set
the default optimization to -O3 for f77 (-O1 for cc) and set up to
produce a .E output executable which is renamed to the .e version
internally. (12/28)
---------------------------
Completed bootstrap. (12/28)
Attempted the first sysgen, numerous errors to be tracked down.
unix/boot/spp/xc.c
Modified XC to call f77 with "-warn nounreachable" when compiling
SPP generated Fortran files. Technically unreachable statements
occur naturally and harmlessly in some cases in SPP generated Fortran.
(for example in compile time conditionals). (12/29)
sys/gio/gks/gcas.x
Changed the procedure name from "gca" to "gcas". There is already
another procedure in the same library called "gca". "gcas" is
supposed to be the type short version. (12/29)
sys/gio/ncarutil/autograph/agrstr.f
Commented out statements number 901, 902: "no path to this statement".
These statements are never called as the code that calls them is also
commented out. (12/29)
sys/gio/ncarutil/autograph/agsave.f
Same thing, statement 901. (12/29)
sys/gio/ncarutil/conlib/consld.f
Commented out statement functions SCRTCH and IARVL. These are never
called and result in a warning message. (12/29)
sys/gio/ncarutil/conrec.f
Commented out three lines around line 1226. These lines were no
longer used because other code had been commented out, and were
resulting in a "Variable XX is used before it value has been
defined" warnings. (12/29)
sys/gio/nspp/sysint/encd.f
Commented out several lines that were no longer used and were causing
a "no path to this statement" warning. (12/29)
math/deboor/setdat2.f
math/deboor/setdat3.f
This library contains three files setdat.f, setdat2.f, setdat3.f
all of which contain a procedure "setdat", causing library conflicts.
These routines are not really part of the library anyway and are
only used to generate data for examples in DeBoor's book, but to
avoid the library conflicts I changed the names of the second and
third procedures to setdt2, setdt3. (12/29)
pkg/xtools/icfit/icdosetupd.x
Problem with mixed type real and double arguments in calls to
the min and max intrinsic functions for xmin, xmax. (12/29)
pkg/cl/bkg.c
pkg/cl/builtin.c
pkg/cl/compile.c
pkg/cl/config.h
pkg/cl/debug.c
pkg/cl/decl.c
pkg/cl/errs.c
pkg/cl/exec.c
pkg/cl/gram.c
pkg/cl/main.c
pkg/cl/mem.h
pkg/cl/modes.c
pkg/cl/opcodes.c
pkg/cl/opcodes.h
pkg/cl/operand.c
pkg/cl/param.c
pkg/cl/prcache.c
pkg/cl/scan.c
pkg/cl/stack.c
pkg/cl/task.c
The CL has long defined the dictionary and stack as arrays of
unsigned integer. This causes problems on a 64 bit machine like
the Alpha where integer and pointer are not the same size.
To avoid this problem a new type "memel" was defined in a typedef
in config.h. The CL code was modified as necessary to declare
all dictionary and stack storage and references using this new
type. (12/29)
pkg/cl/scan.c
The varargs code in this routine failed to compile on the Alpha,
which defines va_list as a structure rather than a variable.
This caused a (va_list) cast to fail. After studying this for
a while I couldn't find any way to safely and portably use varargs
to fake an argument list as an array. The solution adopted was
to just make a normal call to sscanf, putting the variable number
of arguments on the argument list in the normal fashion as v[0],
v[1], v[2], and so on. The current implementation imposes a
limit of at most 32 arguments for a CL scan operation. (12/29-30)
unix/as.alpha/ieee.gx
unix/as.alpha/ieeed.x
unix/as.alpha/ieeer.x
Installed the DEC little-endian versions of the IEEE conversion
routines. (12/29)
mkpkg
noao/mkpkg
Added an entry for the "alpha" architecture. (12/29)
unix/hlib/mkfloat.csh
1. Modified to look for .E files as well as .e files.
2. The script was failing because tar -tf would output file names
with a trailing space after the filename (surely a bug in OSF1 tar).
Had to add a filter to trim the whitespace.
3. Modified the script to treat the "generic" architecture specially,
avoiding any attempt to restore any binaries etc. (12/29)
sys/libc/zzdebug.c -> zztest.c
Renamed zzdebug.c zztest.c to avoid a name conflict with the zzdebug.x
in the same directory. (12/29)
unix/hlib/libc/stdio.h
In struct _iobuf, changed the type declarations from long and int
to XLONG and XINT. (12/29)
unix/hlib/config.h
Also set LEN_JUMPBUF here (see above). (12/29)
dev/hosts
Added an entry for "lyra" to the hosts table. (12/29)
---------------------------
Completed sysgen. Core system runs now but a few bugs are evident and remain
to be tracked down. (12/29)
dev/pix.imh
dev/pix.pix
dev/wpix.imh
Replaced these files with the little-endian versions from Ultrix/IRAF.
Having unreadable images was a major source of the "system" problems!
(12/30)
lib/helpdb.mip
noao/lib/helpdb.mip
The help system would not read these files... Had to rebuild them
to get things to work. Woops - I forgot to set the byte swap flags
in the HSI before building IRAF. (12/30)
unix/hlib/mach.h
Set all the SWAP variables to YES. Did a sysgen update. (12/30)
unix/hlib/install
Modified the install script for OSF1. (12/30)
unix/boot/spp/xc.c
unix/hlib/mkpkg.inc
Moved the "-taso" flag into XC. This is needed to compile all
iraf programs on the Alpha, and users shouldn't have to type it
when running XC standalone outside of mkpkg. (12/30)
---------------------------
Core system is up and running now with no serious bugs evident.
Built bin.alpha for TABLES package. The libraries built (all IRAF uses)
but the compiler core dumped trying to link the executables. Haven't
looked into it yet. Started a sysgen of NOAO.
noao/artdata/t_mk1dspec.x
Fixed two cases of MAX called with arguments of different types,
in this case the real constants 1. and 0. were being compared to a
type double expression. (12/30)
noao/mtlocal/cyber/pow.inc
noao/mtlocal/cyber/rrcopy/pow.inc -
noao/mtlocal/cyber/rrcopy/rcrbits.x
The include file pow.inc contained some very small real constants
in the E-38 or E-39 range, which caused compile time evaluation errors.
The offending values in the table were replaced by the value 0.0.
Probably other platforms that don't report this problem have been
underflowing to zero when evaluationg the these values. Deleted
the rrcopy of pow.inc and modified the include in rcrbits.x to
reference the version in the root directory instead. (12/30)
This program is pretty much obsolete and should probably be retired,
but it is easier to fix the compile time problems for now.
unix/hlib/mkpkg.sf.OSF1
Added cl$ytab.c to the list of special files for OSF1. This file
needs to be compiled with -Olimit 2048 to have enough table space
to optimize such a large file. (12/30)
unix/hlib/fc.csh
Modified for OSF1. The main change required was that the file
/usr/lib/cmplrs/fort/for_main.o must be explicitly included on the
link line in order to link the Fortran program. (12/30 1994)
---------------------------
Merged in latest 2.10.3 revisions from tucana. (2/16 1995)
dev/tapecap
Modified the Ultrix/IRAF tapecap to add support for OSF/1. Added
compressed and uncompressed DAT (TLZ06) unit 0, 1 entries. These
worked on the first try, although I did have to add an ":se" to
make appending work after readting to EOT. (3/01)
unix/as.alpha/ieee.gx
I did not actually modify this file for the problem noted below,
but wanted to record this oddity of the Alpha architecture. (3/01)
The inconsistency seen on the Alpha with the IEEE test files is not
due to the NaN values, which are handled correctly, but to the
special case negative zero (-0) value included in this test data.
For some reason the Alpha fp unit is generating an exception for an
operation comparing zero and negative zero. Other platforms have
not had a problem with this (although one wonders what the correct
result should be in this case). It does seem rather an odd problem
and it is not clear if it is worth worrying about. If necessary we
can modify our IEEE i/o routines to map such values to positive zero
but I don't know if it is worth it, unless we find out that such
values can occur in real world data.
---------------------------
Merged in latest 2.10.4 revisions from tucana. (4/20 1995)
unix/os/mkpkg.sh
Modified the OS boot mkpkg.sh to use as$zshlib.s rather than
os$zshlib.c. The mkpkg special file list was set up to do this, but
the wrong version was used when the system was bootstrapped. (4/21)
unix/hlib/mkpkg.sf.OSF1
Modified to compile as$zshlib.s without optimization, the default xc
flags produce a warning message when used to compile as$zshlib.s.
(4/21)
unix/os/zxwhen.c
This code was modified to use signal instead of signal plus sigaction.
I was having problems with signals not being caught resulting in
infinite loops. See the comments in the code. (5/03)
unix/os/zawset.c
Installed new version from tucana. (5/03)
unix/hlib/libc/kernel.h
Modified values of SZ_DEFWORKSET and SZ_MAXWORKSET to 8 Mb and 256 Mb
as was done on tucana for ZAWSET above. (5/03)
unix/hlib/zzsetenv.def
Default printer changed to "lp". (5/03)
unix/os/mkpkg.sh
Fixed a couple minor problems found in redoing the bootstrap.
1. Changed HSI_LIBS to HSI_OSLIBS for building zalloc.e, which doesn't
use the IRAF libraries.
2. The "set zsrc = ..." was incorrect for the Bourne shell, changed
to BS syntax. (5/03)
unix/os/zawset.c
This routine would not work properly on OSF/1 even though it should
according to the docs (behavior should be the same as on other
systems). Any attempt to set RLIMIT_RSS would fail, causing the
value 50 to be returned. Modified the code to merely comment out
the setrlimit. getrlimit still works and the routine will still
return an accurate indication of the physical memory available to a
process. Probably this problem with setrlimit() explains why the
"limit" command in the cshell doesn't work either. (5/09)
unix/hlib/spy.cl
Updated to use ps -ef instead of px -axu. (5/23)
sys/fio/fioclean.x
sys/fio/stropen.x
Two new internal routines str{set,get}mode were added to stropen.x.
These are used to set or query the file access mode as strored for
the string file, which represents these in a file-dependent way.
fio_cleanup was modified to force the access mode of a string file
to READ_ONLY before closing it during file cleanup, to prevent the
writing of the trailing EOS when closing a string file opened for
writing. The latter could cause a segmentation violation if the
string buffer was no longer in a mapped region of memory, as is
possible if the string file is still open (i.e. not closed normally)
following task termination when fio_cleanup is called. (6/06)
---------------------------
V2.10.4 release June 07 1995.
unix/hlib/install
Changed /etc/mknod to /usr/sbin/mknod. (6/21)
|