From fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 8 Jul 2015 20:46:52 -0400 Subject: Initial commit --- doc/ports/notes.osf1 | 409 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 409 insertions(+) create mode 100644 doc/ports/notes.osf1 (limited to 'doc/ports/notes.osf1') diff --git a/doc/ports/notes.osf1 b/doc/ports/notes.osf1 new file mode 100644 index 00000000..09bb2399 --- /dev/null +++ b/doc/ports/notes.osf1 @@ -0,0 +1,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 . (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) -- cgit