diff options
Diffstat (limited to 'doc/notes.solaris')
-rw-r--r-- | doc/notes.solaris | 514 |
1 files changed, 514 insertions, 0 deletions
diff --git a/doc/notes.solaris b/doc/notes.solaris new file mode 100644 index 00000000..46a5fed2 --- /dev/null +++ b/doc/notes.solaris @@ -0,0 +1,514 @@ +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 <sys/siginfo.h> and <sys/ucontext.h>. + 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. |