Begin IRAF port to Solaris 2.3 Wed May 25 15:38:55 MST 1994 ---------------------------------------- bin.ssun + bin.ssun/IB.SSOL.SUN + bin.sf2c + bin.sf2c/IB.SSOL.F2C + noao/bin.ssun + noao/bin.ssun/IB.SSOL.SUN + noao/bin.sf2c + noao/bin.sf2c/IB.SSOL.F2C + Set up the Solaris platform (SSOL = Sun Solaris) and the two planned Solaris architectures, SUN (Sun unbundled compilers) and F2C (F2C and FSF compilers). (5/25) unix/hlib/irafuser.csh 1. Replaced the `mach` reference by something that will work on both SunOS and Solaris, using uname. 2. Modified to define either SUNOS or SOLARIS in HSI_CF, so that kernel code can support both systems. (5/25) unix/os/getproc.c Added a Solaris version of uid_executing(). This reads /proc and scans the process files to see if any belong to the given uid. (5/25) unix/hlib/irafuser.csh unix/os/mkpkg.sh 1. alloc.e would no longer link without linking against the library -ldl. Note that -ldl can only be linked dynamic (no -Bstatic). 2. Added a new definition HSI_LFLAGS to irafuser.csh and modified the mkpkg.sh in OS to use this to define the link flags for alloc.e. This will probably have to be done for other HSI executables as well. (5/25) unix/os/prwait.c Solaris defines the exit_status argument to wait() differently and the code had to be modified to allow for this. (5/27) unix/os/zfioks.c The select facility on Solaris uses fd_set, FD_SET, etc. and it was necessary to add #ifdef SOLARIS code to reflect this. (5/27) Fri Jun 24 14:23:32 MST 1994 ---------------------------------------- Resume port (elsewhere for the past month) unix/hlib/libc/kernel.h Added a definition PFV; PFI is now a pointer to function returning int, and PFV is a pointer to a function returning void. Also added a new definition SIGFUNC, which is whatever type signal() refers to on the local system. (6/24) unix/os/zfioks.c 1. Changed a number of PFI instances to SIGFUNC. 2. Changed the second two arguments to ks_onsig to type int*. These are not used and the actual type is different on Solaris than other systems. Probably the args should just be omitted but it may be more portable to define a couple of dummy args. 3. The second argument to bind() is type (struct sockaddr *) in Solaris, was (caddr_t) on other systems. (6/24) unix/os/zfiotx.c 1. Deleted the import_fset, which apparently isn't used and which contains a #define which conflicts with a Solaris one. 2. Changed a bunch of PFI instances to SIGFUNC. Added some (SIGFUNC) declarations to the signal handler arguments to signal(). 3. Replaced the two dummy arguments (same as item 2 above) in three instances of event handlers with dummy args declared (int *). (6/24) unix/os/zopdir.c Modified to use Solaris version of opendir/readdir. (6/24) unix/os/zoscmd.c Modified to use SIGFUNC instead of PFI, and to declare generic dummy arguments for an event handler. (6/24) unix/os/zshlib.c Fixed a syntax error on the last line, an extra ';' following a stubbed out function declaration. (6/24) unix/os/zwmsec.c 1. Modified to use signal instead of sigvec; the latter is BSD specifc. 2. sigpause() takes a signal number instead of a signal mask. Omitted sigblock, which is no longer needed since we aren't using a mask, and which doesn't exist on Solaris. Possibly this routine should be completely rewritten on Solaris, there may be better facilities for small timed delays. (6/24) unix/os/zxwhen.c 1. For Solaris we must include and . 2. fcancel macro modified to use the constant BUFSIZ. 3. The table of hardware exceptions was modified to omit all codes other than those for SIGFPE; the other codes (at least on Solaris) alias with the FPE codes, and aren't used anywhere in zxwhen anyway. Added Solaris SIGFPE codes. 4. Modified calling sequence of exception handler ex_handler to the form Solaris requires. Added a statement to get the hardware exception code out of the siginfo argument. 5. Replaced a number of PFI's by SIGFUNC's. (6/25) unix/os/zfiomt.c Modified signal handling code to use type SIGFUNC. (6/25) unix/os/zzstrt.c Made a few changes to get this code to compile, although the shared library support isn't expected to work at this point. (6/25) unix/hlib/irafuser.csh unix/os/zzstrt.c Added a new define SHLIB, used to conditionally compile zzstrt for shared library support. (6/25) unix/boot/bootlib/bootlib.h This file had a #ifdef UNIX in it, but this define is not defined anywhere. Modified to #ifdef VMS but assume unix otherwise. (6/25) unix/hlib/irafuser.csh Modified to define RANLIB as "echo ranlib" for Solaris. (6/25) unix/hlib/kernel.h Solaris doesn't have bcopy/bzero, so added a couple of #defines to kernel.h to map these functions onto the equivalent Solaris versions memmove/memset. (6/25) unix/os/zoscmd.c unix/os/zopdpr.c unix/os/zfiopr.c Replaced all calls to getdtablesize() by corresponding calls to getrlimit(). (6/25) unix/os/zfgcwd.c Replaced getwd() by getcwd(). (6/24) unix/boot/mkpkg/scanlib.c It was necessary to add an (int) cast to (int)fread(...) > 0 to avoid a warning message from the compiler, because fread has an odd type on Solaris. (6/25) unix/hlib/irafuser.csh Added -lsocket -lnsl (the Solaris socket emulation library) to the list of HSI host libraries used to link the HSI utilities. (6/25) unix/boot/spp/xc.c Made some minor changes to xc for Solaris - not clear yet what all will be needed. Most of it looks like it will work. Added a #ifdef conditional for the Solaris F77 libraries, taking the SunSoft compiler as the builtin default. Modified signal handling to use SIGFUNC to be more portable. (6/25) unix/boot/rmfiles/rmfiles.c Added an "extern char *vfn2osfn()" declaration. (6/25) unix/boot/spp/rpp/ratlibc/initst.c Added a #ifdef conditional to access the stdio streams on Solaris. (6/25) unix/gdev/sgidev/sgi2uapl.c unix/gdev/sgidev/sgi2uhpgl.c unix/gdev/sgidev/sgi2ueps.c 1. These files contained a number of cases where the file descriptor "out" was declared int where (FILE *) was intended. 2. Replaced an instance of gethostname() in sgi2uapl.c by a call to sysinfo(). (6/25) Sat Jun 25 23:26:24 MST 1994 ---------------------------------------- Completed first bootstrap. Try initial sysgen of core system. unix/boot/spp/xc.c Modified xc to automatically do a "-t" when linking. This disables linker warnings about different size commons. (6/26) unix/os/irafpath.c Added a case for Solaris/sparc. (6/26) mpkg as.ssol + bin.ssol + unix/setarch.sh unix/hlib/irafuser.csh For Solaris/sparc the HSI AS and BIN are as.ssol and bin.ssol. Hopefully it will be possible to use a single set of directories for both the ssun and sf2c binary architectures. (6/26) unix/hlib/install Added some code to set the platform architecture automatically for either SunOS or Solaris. On a Solaris system the suntools stuff is skipped. (6/26) unix/boot/bootlib/envinit.c Fixed a bug/typo in this code: "printf (stderr, ...)". (6/26) unix/boot/bootlib/vfn2osfn.c Several more cases of a null statement ";" at the end of this file. This happens in dummy function constructs like "foo(){};". (6/26) unix/hlib/mkpkg.inc Added cases for IRAFARCH=ssun and sf2c. (6/26) unix/hlib/mkpkg.sf.SSUN + unix/hlib/mkpkg.sf.SF2C + Added starter special file lists for the two Solaris architectures. (6/26) unix/as.ssol/zsvjmp.s This assembler source appears to assemble ok, but I had to remove the leading underscore from _zsvjmp_ as the SunSoft Fortran compiler doesn't use leading underscores. (6/26) Sun Jun 26 20:18:48 MST 1994 ---------------------------------------- Completed first core system sysgen: system starts up and runs, but a number of bugs are evident. unix/hlib/irafuser.csh HSI_XF now includes flags such as -/DSYSV -/DSOLARIS etc., so that mkpkg can be used to update HSI libraries such as OS. This is only a temporary solution, ideally XC should accept HSI_CF. (6/27) sys/fio/fdirname.x There was an actual bug in this file that showed up during testing of the new port. zfxdir (kfxdir) was being used incorrectly to test for the existence of host directory pathnames. (6/27) unix/os/zopdir.c The above testing also revealed a bug in this file. This was preventing commands such as "dir /" from working, due to a bug in the code which strips trailing slashes from directory names. (6/27) unix/os/zfiotx.c 1. Raw mode terminal i/o was not working properly on Solaris; output data was being lost when raw mode was entered, even though the ioctl used would (presumably) wait for the output to drain before changing the terminal mode. It is not clear what the connection might be, but this was fixed by deleting the iflag=0, i.e., not resetting the iflags, when entering raw mode. Evidently clearing one of the default input flags was the source of this problem, even though ICANON was disabled. Since ICANON is disabled we shouldn't need to change the iflags anyway, so it should be safe to omit this. In fact, it is probably safer to preserve all default terminal flags by default and change only those affecting raw i/o, but at present I will leave it fully setting the oflags and lflags, since this is working. 2. Solaris also provides the POSIX termios interface which is the recommended interface. This appears to be a simple front end to the termio ioctl interface. I decided to avoid this for the moment since the SYSV termio interface appears to be widely available. (6/27) Sun Jul 3 23:08:27 MST 1994 ---------------------------------------- Resume work on Solaris port. unix/as.ssol/enbint.s + unix/os/zzstrt.c unix/os/zxwhen.c After a bit more research got IEEE floating point exception handling working under Solaris. The new routine enbint.s is used to enable the exceptions. sigaction turned out to block SIGFPE when the handler was called and it proved necessary to add the SA_NODEFER flag to prevent this. (7/03) unix/os/zfioks.c unix/os/zfiond.c Fixed a couple bugs that were keeping networking from working. "RSH" was not being defined correctly in zfioks, and it was necessary to add FD_ZERO calls to zero the select fd arrays before calling FD_SET. (7/04) sys/imfort/tasks/ unix/hlib/fc.csh Tested FC on the imfort tasks. This worked without incident following minor changes to the fc.csh script. The only thing unusual is that an IEEE retrospective is printed when the task exits, indicating that the IEEE divzero,overflow,invalid exceptions were enabled. This is annoying but is not exactly a bug (ieee_retrospective is always called by Fortran programs, it just doesn't usually generate any output), so for the moment I don't see the need to change anything at present. (7/04) Build of ssun binaries for TABLES proceeded without incident. (7/04) unix/boot/bootlib/ossymlink.c This file used #ifdef BSDUNIX incorrectly, preventing the #ifdef-ed code from compiling on UNIX systems for which BSDUNIX was not set. Changed the statement to #ifndef VMS. (7/05) unix/shlib/zzzend.c Deleted ";" at the end (empty declaration). (7/10) unix/shlib/medit.c Added a #define for bcopy, which doesn't exist in Solaris. (7/10) unix/shlib/mkpkg Modified to avoid use of ranlib on Solaris platforms. (7/10) unix/boot/spp/mkxc.sh Modified to do the compile and link in separate steps. (7/14) unix/gdev/sgidev/sgi2uapl.c Modified to put "%!PS" in the Postscript file header. (7/19) dev/tapecap Added Solaris support. (7/20) unix/boot/spp/xc.c Added -lintl to the list of builtin host libraries. (7/23) unix/os/zfiotx.c Rather than leaving iflags unmodified when raw mode is entered, now clears several input processing flags, in particular CR is not mapped to NL. (7/23) unix/hlib/zzsetenv.def Changed the default printer device to "lw". (7/25) unix/shlib/Slib.c unix/shlib/edsym.c unix/shlib/elf.c + unix/shlib/medit.c unix/shlib/mkpkg unix/shlib/mkpkg.sh unix/shlib/mkshlib.csh.ssol + unix/shlib/zzzend.c unix/os/zzstrt.c There were many changes here, especially to mkshlib.csh, edsym.c, Slib,c, and zzend.c, to support IRAF shared libraries under Solaris. Most of the changes were made earlier but I did not keep detailed notes during development. The changes are not fully backwards compatible, so it will be necessary to configure separate shlib directories for SunOS and Solaris. (7/25) unix/hlib/mkpkg.inc A wfits problem was traced to a bug in the Fortran optimizer using SunSoft Fortran 2.0.1. Compiling -O2 avoids the problem. (7/29) unix/hlib/install The install script was modified earlier to just exit when it came to the gterm/imtool config stuff. Modified this to continue on with this, but to do only the X11 related configuration. This consists of making the /dev/imt fifos, installing the imtoolrc, and checking that termcap and graphcap are sufficiently up to date to contain xgterm and imtool entries. (7/30) unix/hlib/libc/kernel.h unix/os/zfiotx.c unix/os/zzstrt.c Replaced the terminal driver by a version which maintains a unique descriptor for every hardware terminal device, regardless of the file descriptor used to access the terminal. (8/02) dev/graphcap The xgterm graphcap entry now recognizes either CR or LF as the trailer code for a cursor read. (8/02) unix/boot/mkpkg/mkpkg Changed "cc" to "$(CC)". (8/17) unix/boot/spp/xc.c XC now supports multiple packages in PKGENV. (8/18) ----------------------------------------------------- Solaris 2.10.3 release *** apus upgraded to Solaris 2.4, SunSoft V3.0 compilers *** unix/os/zfiotx.c Installed the tty_reset bugfix. (9/17) unix/os/getproc.c This routine was omitting the "/proc" from pathnames of process files in the /proc directory, causing uid_executing to always return zero. (10/05) ----------------------------------------------------- Merged in V2.10.4 revisions from tucana. (4/22 1995) unix/hlib/mkpkg.sf.SSUN Added explicit $xc build commands to the special file list entries for C files. The default compile flags from mkpkg.inc would cause a warning when applied to C files, as CC doesn't understand -O2. (4/26) unix/shlib/mkshlib.ssol-sc2 unix/shlib/mkshlib.ssol-sc3 + Renamed mkshlib.csh.ssol to mkshlib.ssol-sc2. This is the version for the version 2x SunSoft compilers. Started a variant mkshlib.ssol-sc3 for the version 3x compilers. In this made various minor changes: 1) File header size increased from 0x74 to 0x78. 2) Compiler libraries and objects are now in /opt/SUNWspro/SC*/lib instead of /opt/SUNWspro/SC*. 3) There is a new library -lsunmath which follows -lF77. (4/26) unix/boot/spp/xc.c Modified to add the -lsunmath library if used with the Version 3 or greater SunSoft compilers. XC attempt to automatically distinguish Version 2 and Version 3 and do the right thing. (4/26) unix/hlib/mkpkg.inc Removed the -O2 switch from the standard compile flags in mkpkg.inc. This was put in for an older version of the compilers and probably isn't needed any longer. This also avoids the problem of passing -O2 to the C compiler when compiling C code. (4/26) ----------------------------------------------------- Completed a full bootstrap and sysgen of V2.10.4 Solaris/IRAF using Solaris 2.4 and the SunSoft V3 compilers. (4/26) unix/hlib/zzsetenv.def Updated "version" to 2.10.4EXPORT. (5/18) unix/hlib/spy.cl Rewrote spy.cl to work on both BSD and SYSV systems (SunOS and Solaris in the case of Solaris/IRAF). (5/19) unix/os/zgtime.c Modified for Solaris systems to use CLK_TCK (which does a runtime call to sysconf) to get the clock frequency, instead of the compile time kernel constant CLKFREQ. On our development system CLK_TCK is 100, rather than 60 which is the value compiled into the kernel. (5/19) unix/os/gmttolst.c In the internal routine get_timezone added a call to "tzset()" before accessing the external variable timezone. This is necessary to set the value of timezone in the first call after process startup. (5/19) unix/os/zoscmd.c This fix was made to resolve a problem where EMACS or VI would hang up when run from the CL and ctrl/g or ctrl/c was typed. Evidently this was due to the code in zoscmd.c which pretends to ignore interrupts while the child is executing, but in reality was catching interrupts and setting a flag then continuing to wait for the child process to terminate. Evidently on SysV systems, or at least on Solaris, the interrupt handler was causing the process to read from the terminal, and wait() was not being reentered folowing an interrupt causing both the parent and the child to read from the terminal at the same time. The fix was to modify zoscmd.c so that on SYSV systems the parent does not post any interrupt handler. (5/19) unix/os/zzstrt.c unix/shlib/mkpkg bin.ssun/S10_5.4.e + It appears that the system library libsocket.a in Solaris is incompatible between Solaris 2.3 and 2.4. Networking is broken if an IRAF executable linked under Solaris 2.3 is run on 2.4 and vice versa. Our workaround, at least for the moment, is to have different versions of the IRAF shared image for different versions of solaris. During startup an IRAF process will query the OS release number, e.g. 5.3 (Solaris 2.3) or 5.4 (Solaris 2.4) and map the corresponding shared image. A mkpkg in unix/shlib updates the version of the shared image corresponding to the OS release on which IRAF is currently running. The new shared image file names are S10_5.3.e for Solaris 2.3 and S10_5.4.e for Solaris 2.4. If the release dependent version is not found the system will automatically fall back to S10.e. (5/22) ----------------------------------------------------- Did another sysgen-relink and rebuilt the distribution files. (5/22) unix/boot/spp/xc.c Modified to compile only C and assembler files in the catch-all compile phase. Prevents compile attempts where the file list contains only object files. This was a problem under Solaris 2.5. (10/19) unix/shlib/mkshlib.ssol-sc3 Modified to suport the SC4.0 compilers under Solaris 2.5. There was a bug in the script if both SC3.0.1 and SC4.0 compilers were present in the same system. The link line was slightly different for the new compiler. (10/19) unix/shlib/mkshlib.ssol-sc3 - unix/shlib/mkshlib.ssol-sc34 + 1. Changed the name of this file to sc34 since it supports both the SC3 and SC4 compilers. Updated the comments accordingly. 2. I tried changing the page alignment for the shared image from 0x2000 (8K) to 0x4000 (16K). The intent was to support Sparc clones with 16K pages. It worked (at least on a Sun sparc), but would produce a bogus version match please relink error message on startup for old executables, due to relocation of the transfer vector. I had to set things back to 0x2000 as we can't afford to break old executables for a patch. (3/25 1996) unix/os/zmain.c Added a #ifdef SYSV conditional to allow for different calling sequences for setpgrp() on SYSV and BSD systems. (4/24) unix/os/zfinfo.c Commented out the setpwent/getpwent, they are not needed on Solaris and appear to cause an associated Solaris bug to crop up. (8/16) ------------------------------------------- V2.10.4 patch 2 released. (5/22 1996) TODO o Tue Nov 21 12:50:24 MST 1995 XC assumes /opt/SUNWspro in isv3(). o Thu Feb 1 11:54:17 MST 1996 Skip reports networking failure - AA05224 o Mon Mar 11 12:24:55 MST 1996 Modify zawset.c to use actual physical memory as determined by sysconf. o Mon Mar 11 12:25:10 MST 1996 Change SHLIB address from 0a000000 to 03c000000 to allow 1 Gb process data segment. This requires that all applications be relinked so cannot be done until V2.11.