Xref: utzoo comp.sys.sgi:5145 comp.emacs:8788 Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!elroy.jpl.nasa.gov!ames!sgi!shinobu!odin!sgi.com!scotth From: scotth@corp.sgi.com (Scott Henry) Newsgroups: comp.sys.sgi,comp.emacs Subject: irix 3.3 patches to emacs 18.55 and epoch 3.2b Message-ID: Date: 31 Jul 90 13:28:01 GMT Sender: news@odin.corp.sgi.com Reply-To: scotth@sgi.com (Scott Henry) Distribution: comp Organization: Silicon Graphics Inc, Mountain View, CA Lines: 762 #!/bin/sh # to extract, remove the header and type "sh filename" if `test ! -s ./README-Irix3.3` then echo "writing ./README-Irix3.3" cat > ./README-Irix3.3 << '\Rogue\Monster\' This shar contains files that patch GNU emacs 18.55 and epoch 3.2b to compile and run under Irix release 3.3. To build either or both programs: 1) untar to make the directory tree(s). 2) unshar these files some${where} convenient. 3) cd ..../src 4) cp config.h-dist config.h be sure that you don't mix up the emacs/src and epoch/src patches. 5) patch < ${where}/irix3.3-?-src.diff 6) cd ../etc 7) patch < ${where}/irix3.3-etc.diff 8) cd .. 9) make The following files are included: README-Irix3.3 this file irix3.3-emacs-src.diff patches to emacs/dist-18.55/src files irix3.3-epoch-src.diff patches to epoch-3.2/src files irix3.3-etc.diff patches to ..../etc files (works for both epoch and emacs). The following files are patched: (these two are the same) emacs/src/unexmips.c a bug in 3.2 allowed the original code to work. epoch/src/unexmips.c this patch is backwards compatible to 3.2 (these two have one difference) emacs/src/s-irix3_3.h a new configuration file specifically for epoch/src/s-irix3_3.h irix release 3.3 (these two are different) emacs/src/config.h the config.h file that I use epoch/src/config.h (ditto) epoch/src/x11term.c epoch/src/x11fns.c epoch/src/Makefile it assumes the use of gcc etc/loadst.c some patches to enable getting the load average etc/Makefile and make loadst build. I hope that this is sufficient to allow the programs to be built and run succesfully. Neither Silicon Graphics nor I can make any warranty or claims of current or future support. scott henry \Rogue\Monster\ else echo "will not over write ./README-Irix3.3" fi if `test ! -s ./irix3.3-emacs-src.diff` then echo "writing ./irix3.3-emacs-src.diff" cat > ./irix3.3-emacs-src.diff << '\Rogue\Monster\' *** unexmips.c.orig Thu Jan 12 16:14:05 1989 --- unexmips.c Mon Jul 30 22:10:10 1990 *************** *** 255,261 **** rdata_section->s_size = data_start - DATA_START; data_section->s_vaddr = data_start; data_section->s_paddr = data_start; ! data_section->s_size = brk - DATA_START; data_section->s_scnptr = rdata_section->s_scnptr + rdata_section->s_size; vaddr = data_section->s_vaddr + data_section->s_size; scnptr = data_section->s_scnptr + data_section->s_size; --- 255,261 ---- rdata_section->s_size = data_start - DATA_START; data_section->s_vaddr = data_start; data_section->s_paddr = data_start; ! data_section->s_size = brk - data_start; data_section->s_scnptr = rdata_section->s_scnptr + rdata_section->s_size; vaddr = data_section->s_vaddr + data_section->s_size; scnptr = data_section->s_scnptr + data_section->s_size; *** s-irix3_3.h.orig Mon Jul 30 22:10:10 1990 --- s-irix3_3.h Mon Jul 30 23:04:30 1990 *************** *** 0 **** --- 1,202 ---- + /* Definitions file for GNU Emacs running on Silicon Graphics system 3.6. + Copyright (C) 1987 Free Software Foundation, Inc. + + This file is part of GNU Emacs. + + GNU Emacs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY. No author or distributor + accepts responsibility to anyone for the consequences of using it + or for whether it serves any particular purpose or works at all, + unless he says so in writing. Refer to the GNU Emacs General Public + License for full details. + + Everyone is granted permission to copy, modify and redistribute + GNU Emacs, but only under the conditions described in the + GNU Emacs General Public License. A copy of this license is + supposed to have been given to you along with GNU Emacs so you + can know your rights and responsibilities. It should be in a + file named COPYING. Among other things, the copyright notice + and this notice must be preserved on all copies. */ + + + /* + * Define symbols to identify the version of Unix this is. + * Define all the symbols that apply correctly. + */ + + #define USG + #define USG5 + #define IRIS + + /* SYSTEM_TYPE should indicate the kind of system you are using. + It sets the Lisp variable system-type. */ + + #define SYSTEM_TYPE "silicon-graphics-unix" + + /* nomultiplejobs should be defined if your system's shell + does not have "job control" (the ability to stop a program, + run some other program, then continue the first one). */ + + /* #define NOMULTIPLEJOBS */ + #undef NOMULTIPLEJOBS + + /* Default is to set interrupt_input to 0: don't do input buffering within Emacs */ + + /* #define INTERRUPT_INPUT */ + + /* Letter to use in finding device name of first pty, + if system supports pty's. 'a' means it is /dev/ptya0 */ + + #define FIRST_PTY_LETTER 'q' + + /* + * Define HAVE_TERMIO if the system provides sysV-style ioctls + * for terminal control. + */ + + #define HAVE_TERMIO + + /* + * Define HAVE_TIMEVAL if the system supports the BSD style clock values. + * Look in for a timeval structure. + */ + + #define HAVE_TIMEVAL + + /* `utime' system call doesn't understand timevals. */ + + #define IRIS_UTIME + + /* + * Define HAVE_SELECT if the system supports the `select' system call. + */ + + #define HAVE_SELECT + + /* + * Define HAVE_PTYS if the system supports pty devices. + */ + + #define HAVE_PTYS + + /* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */ + + #define HAVE_SOCKETS + + /* + * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate + * The 4.2 opendir, etc., library functions. + */ + + /* #define NONSYSTEM_DIR_LIBRARY */ + + /* Define this symbol if your system has the functions bcopy, etc. */ + + #define BSTRING + + /* subprocesses should be defined if you want to + have code for asynchronous subprocesses + (as used in M-x compile and M-x shell). + This is generally OS dependent, and not supported + under most USG systems. */ + + #define subprocesses + + /* If your system uses COFF (Common Object File Format) then define the + preprocessor symbol "COFF". */ + + /* #define COFF */ + + /* define MAIL_USE_FLOCK if the mailer uses flock + to interlock access to /usr/spool/mail/$USER. + The alternative is that a lock file named + /usr/spool/mail/$USER.lock. */ + + /* #define MAIL_USE_FLOCK */ + + /* Define CLASH_DETECTION if you want lock files to be written + so that Emacs can tell instantly when you try to modify + a file that someone else has modified in his Emacs. */ + + /* #define CLASH_DETECTION */ + + /* We use the Berkeley (and usg5.2.2) interface to nlist. */ + + #define NLIST_STRUCT + + /* The file containing the kernel's symbol table is called /vmunix. */ + + #define KERNEL_FILE "/unix" + + /* The symbol in the kernel where the load average is found + is named _avenrun. */ + + #define LDAV_SYMBOL "avenrun" + + + /* Special hacks needed to make Emacs run on this system. */ + + /* + * Make the sigsetmask function go away. Don't know what the + * ramifications of this are, but doesn't seem possible to + * emulate it properly anyway at this point. + */ + + #define sigsetmask(mask) /* Null expansion */ + #define sigblock(x) x + + /* pre-3.3 Irix defines SIGIO in signal.h, but doesn't implement it. */ + /* For some reason under Irix 3.3, SIGIO works under termcap driver but not + X11. Take your pick. SIGIO is supposed to be slightly faster. */ + /* #undef SIGIO */ + + #define C_SWITCH_MACHINE + + /* setjmp and longjmp can safely replace _setjmp and _longjmp, + but they will run slower. */ + + #define _setjmp setjmp + #define _longjmp longjmp + + /* On USG systems the system calls are interruptable by signals + that the user program has elected to catch. Thus the system call + must be retried in these cases. To handle this without massive + changes in the source code, we remap the standard system call names + to names for our own functions in sysdep.c that do the system call + with retries. */ + + #define read sys_read + #define open sys_open + #define write sys_write + + #define INTERRUPTABLE_OPEN + #define INTERRUPTABLE_IO + + /* On USG systems these have different names */ + + #define index strchr + #define rindex strrchr + + /* USG systems tend to put everything declared static + into the initialized data area, which becomes pure after dumping Emacs. + Foil this. Emacs carefully avoids static vars inside functions. */ + + /* #define static */ + + /* Compiler bug bites on many systems when default ADDR_CORRECT is used. */ + + #define ADDR_CORRECT(x) (int)((char *)(x) - (char*)0) + + /* some errno.h's don't actually allocate the variable itself */ + + #define NEED_ERRNO + + /* + * I want IPC to work (for emacsclient), so I will first try: + */ + #define HAVE_SYSVIPC + + /* + * Irix 3.3 defines this, and causes an infinite loop when trying to dump. + */ + #define HAVE_GETWD *** config.h-orig Thu Apr 21 01:18:33 1988 --- config.h Mon Jul 30 22:10:11 1990 *************** *** 24,30 **** See the file ../etc/MACHINES for a list of systems and the names of the s- files to use for them. See s-template.h for documentation on writing s- files. */ ! #include "s-bsd4-2.h" /* Include here a m- file that describes the machine and system you use. See the file ../etc/MACHINES for a list of machines and --- 24,30 ---- See the file ../etc/MACHINES for a list of systems and the names of the s- files to use for them. See s-template.h for documentation on writing s- files. */ ! #include "s-irix3_3.h" /* Include here a m- file that describes the machine and system you use. See the file ../etc/MACHINES for a list of machines and *************** *** 31,37 **** the names of the m- files to use for them. See m-template.h for info on what m- files should define. */ ! #include "m-vax.h" /* Load in the conversion definitions if this system needs them and the source file being compiled has not --- 31,37 ---- the names of the m- files to use for them. See m-template.h for info on what m- files should define. */ ! #include "m-iris4d.h" /* Load in the conversion definitions if this system needs them and the source file being compiled has not *************** *** 114,117 **** --- 114,129 ---- its priority. */ /* #define HIGHPRI */ + + /* we use Yellow Pages here, emacs doesn't understand "~/" without this */ + #undef LIB_STANDARD + #define LIB_STANDARD -lsun -lbsd -lc /usr/lib/crtn.o + + #define C_OPTIMIZE_SWITCH -O2 + #define C_DEBUG_SWITCH -O2 + + /* + * enable updating the environment passed to sub-shells + */ + #define MAINTAIN_ENVIRONMENT \Rogue\Monster\ else echo "will not over write ./irix3.3-emacs-src.diff" fi if `test ! -s ./irix3.3-epoch-src.diff` then echo "writing ./irix3.3-epoch-src.diff" cat > ./irix3.3-epoch-src.diff << '\Rogue\Monster\' *** unexmips.c.orig Mon Apr 23 14:45:03 1990 --- unexmips.c Tue Jul 31 10:01:43 1990 *************** *** 255,261 **** rdata_section->s_size = data_start - DATA_START; data_section->s_vaddr = data_start; data_section->s_paddr = data_start; ! data_section->s_size = brk - DATA_START; data_section->s_scnptr = rdata_section->s_scnptr + rdata_section->s_size; vaddr = data_section->s_vaddr + data_section->s_size; scnptr = data_section->s_scnptr + data_section->s_size; --- 255,261 ---- rdata_section->s_size = data_start - DATA_START; data_section->s_vaddr = data_start; data_section->s_paddr = data_start; ! data_section->s_size = brk - data_start; data_section->s_scnptr = rdata_section->s_scnptr + rdata_section->s_size; vaddr = data_section->s_vaddr + data_section->s_size; scnptr = data_section->s_scnptr + data_section->s_size; *** x11fns.c.~1~ Fri Jun 29 15:48:10 1990 --- x11fns.c Tue Jul 31 10:40:46 1990 *************** *** 33,39 **** #include "x11term.h" #include "dispextern.h" #include "termchar.h" ! #ifdef USG #include #else #include --- 33,39 ---- #include "x11term.h" #include "dispextern.h" #include "termchar.h" ! #if defined(USG) && ! defined(IRIS_4D) #include #else #include *** x11term.c.orig Sat Jun 30 15:33:02 1990 --- x11term.c Tue Jul 31 10:33:16 1990 *************** *** 38,44 **** #include "x11term.h" ! #if defined(USG) && ! defined(IBMRTAIX) && !defined(_386ix) #include #else #include --- 38,44 ---- #include "x11term.h" ! #if defined(USG) && ! defined(IBMRTAIX) && !defined(_386ix) && ! defined(IRIS_4D) #include #else #include *** config.h.orig Tue Jul 31 10:03:45 1990 --- config.h Tue Jul 31 11:22:24 1990 *************** *** 24,30 **** See the file ../etc/MACHINES for a list of systems and the names of the s- files to use for them. See s-template.h for documentation on writing s- files. */ ! #include "s-sunos4.h" /* Include here a m- file that describes the machine and system you use. See the file ../etc/MACHINES for a list of machines and --- 24,30 ---- See the file ../etc/MACHINES for a list of systems and the names of the s- files to use for them. See s-template.h for documentation on writing s- files. */ ! #include "s-irix3_3.h" /* Include here a m- file that describes the machine and system you use. See the file ../etc/MACHINES for a list of machines and *************** *** 31,37 **** the names of the m- files to use for them. See m-template.h for info on what m- files should define. */ ! #include "m-sun3.h" /* Load in the conversion definitions if this system needs them and the source file being compiled has not --- 31,37 ---- the names of the m- files to use for them. See m-template.h for info on what m- files should define. */ ! #include "m-iris4d.h" /* Load in the conversion definitions if this system needs them and the source file being compiled has not *************** *** 114,119 **** --- 114,131 ---- its priority. */ /* #define HIGHPRI */ + + /* we use Yellow Pages here, emacs doesn't understand "~/" without this */ + #undef LIB_STANDARD + #define LIB_STANDARD -lsun -lbsd -lc /usr/lib/crtn.o + + #define C_OPTIMIZE_SWITCH -O2 + #define C_DEBUG_SWITCH -O2 + + /* + * enable updating the environment passed to sub-shells + */ + #define MAINTAIN_ENVIRONMENT /* These are fixes to the gap moving code. The normal setup is to use while * loops to move the gap. bcopy() can't be used normally because the regions *** /dev/null Tue Jul 31 11:46:29 1990 --- s-irix3_3.h Tue Jul 31 11:22:15 1990 *************** *** 0 **** --- 1,202 ---- + /* Definitions file for GNU Emacs running on Silicon Graphics system 3.6. + Copyright (C) 1987 Free Software Foundation, Inc. + + This file is part of GNU Emacs. + + GNU Emacs is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY. No author or distributor + accepts responsibility to anyone for the consequences of using it + or for whether it serves any particular purpose or works at all, + unless he says so in writing. Refer to the GNU Emacs General Public + License for full details. + + Everyone is granted permission to copy, modify and redistribute + GNU Emacs, but only under the conditions described in the + GNU Emacs General Public License. A copy of this license is + supposed to have been given to you along with GNU Emacs so you + can know your rights and responsibilities. It should be in a + file named COPYING. Among other things, the copyright notice + and this notice must be preserved on all copies. */ + + + /* + * Define symbols to identify the version of Unix this is. + * Define all the symbols that apply correctly. + */ + + #define USG + #define USG5 + #define IRIS + + /* SYSTEM_TYPE should indicate the kind of system you are using. + It sets the Lisp variable system-type. */ + + #define SYSTEM_TYPE "silicon-graphics-unix" + + /* nomultiplejobs should be defined if your system's shell + does not have "job control" (the ability to stop a program, + run some other program, then continue the first one). */ + + /* #define NOMULTIPLEJOBS */ + #undef NOMULTIPLEJOBS + + /* Default is to set interrupt_input to 0: don't do input buffering within Emacs */ + + /* #define INTERRUPT_INPUT */ + + /* Letter to use in finding device name of first pty, + if system supports pty's. 'a' means it is /dev/ptya0 */ + + #define FIRST_PTY_LETTER 'q' + + /* + * Define HAVE_TERMIO if the system provides sysV-style ioctls + * for terminal control. + */ + + #define HAVE_TERMIO + + /* + * Define HAVE_TIMEVAL if the system supports the BSD style clock values. + * Look in for a timeval structure. + */ + + #define HAVE_TIMEVAL + + /* `utime' system call doesn't understand timevals. */ + + #define IRIS_UTIME + + /* + * Define HAVE_SELECT if the system supports the `select' system call. + */ + + #define HAVE_SELECT + + /* + * Define HAVE_PTYS if the system supports pty devices. + */ + + #define HAVE_PTYS + + /* Define HAVE_SOCKETS if system supports 4.2-compatible sockets. */ + + #define HAVE_SOCKETS + + /* + * Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate + * The 4.2 opendir, etc., library functions. + */ + + /* #define NONSYSTEM_DIR_LIBRARY */ + + /* Define this symbol if your system has the functions bcopy, etc. */ + + #define BSTRING + + /* subprocesses should be defined if you want to + have code for asynchronous subprocesses + (as used in M-x compile and M-x shell). + This is generally OS dependent, and not supported + under most USG systems. */ + + #define subprocesses + + /* If your system uses COFF (Common Object File Format) then define the + preprocessor symbol "COFF". */ + + /* #define COFF */ + + /* define MAIL_USE_FLOCK if the mailer uses flock + to interlock access to /usr/spool/mail/$USER. + The alternative is that a lock file named + /usr/spool/mail/$USER.lock. */ + + /* #define MAIL_USE_FLOCK */ + + /* Define CLASH_DETECTION if you want lock files to be written + so that Emacs can tell instantly when you try to modify + a file that someone else has modified in his Emacs. */ + + /* #define CLASH_DETECTION */ + + /* We use the Berkeley (and usg5.2.2) interface to nlist. */ + + #define NLIST_STRUCT + + /* The file containing the kernel's symbol table is called /vmunix. */ + + #define KERNEL_FILE "/unix" + + /* The symbol in the kernel where the load average is found + is named _avenrun. */ + + #define LDAV_SYMBOL "avenrun" + + + /* Special hacks needed to make Emacs run on this system. */ + + /* + * Make the sigsetmask function go away. Don't know what the + * ramifications of this are, but doesn't seem possible to + * emulate it properly anyway at this point. + */ + + #define sigsetmask(mask) /* Null expansion */ + #define sigblock(x) x + + /* pre-3.3 Irix defines SIGIO in signal.h, but doesn't implement it. */ + /* For some reason under Irix 3.3, SIGIO works under termcap driver but not + X11. Take your pick. SIGIO is supposed to be slightly faster. */ + #undef SIGIO + + #define C_SWITCH_MACHINE + + /* setjmp and longjmp can safely replace _setjmp and _longjmp, + but they will run slower. */ + + #define _setjmp setjmp + #define _longjmp longjmp + + /* On USG systems the system calls are interruptable by signals + that the user program has elected to catch. Thus the system call + must be retried in these cases. To handle this without massive + changes in the source code, we remap the standard system call names + to names for our own functions in sysdep.c that do the system call + with retries. */ + + #define read sys_read + #define open sys_open + #define write sys_write + + #define INTERRUPTABLE_OPEN + #define INTERRUPTABLE_IO + + /* On USG systems these have different names */ + + #define index strchr + #define rindex strrchr + + /* USG systems tend to put everything declared static + into the initialized data area, which becomes pure after dumping Emacs. + Foil this. Emacs carefully avoids static vars inside functions. */ + + /* #define static */ + + /* Compiler bug bites on many systems when default ADDR_CORRECT is used. */ + + #define ADDR_CORRECT(x) (int)((char *)(x) - (char*)0) + + /* some errno.h's don't actually allocate the variable itself */ + + #define NEED_ERRNO + + /* + * I want IPC to work (for emacsclient), so I will first try: + */ + #define HAVE_SYSVIPC + + /* + * Irix 3.3 defines this, and causes an infinite loop when trying to dump. + */ + #define HAVE_GETWD *** x11fns.c.orig Fri Jun 29 15:48:10 1990 --- x11fns.c Tue Jul 31 10:40:46 1990 *************** *** 33,39 **** #include "x11term.h" #include "dispextern.h" #include "termchar.h" ! #ifdef USG #include #else #include --- 33,39 ---- #include "x11term.h" #include "dispextern.h" #include "termchar.h" ! #if defined(USG) && ! defined(IRIS_4D) #include #else #include \Rogue\Monster\ else echo "will not over write ./irix3.3-epoch-src.diff" fi if `test ! -s ./irix3.3-etc.diff` then echo "writing ./irix3.3-etc.diff" cat > ./irix3.3-etc.diff << '\Rogue\Monster\' *** loadst.c.orig Tue Apr 18 18:24:59 1989 --- loadst.c Fri Jun 1 09:28:32 1990 *************** *** 219,225 **** --- 219,229 ---- #ifdef LOAD_AVE_TYPE load = load_average (kmem); if (load != (LOAD_AVE_TYPE) -1) + #ifdef sgi + printf("%.2f", (double)load / 1024.0); + #else /* sgi */ printf("%.2f", LOAD_AVE_CVT (load) / 100.0); + #endif /* sgi */ #endif /* LOAD_AVE_TYPE */ printf ("%s", *************** *** 335,342 **** --- 339,354 ---- { LOAD_AVE_TYPE avenrun[3]; avenrun[0] = 0; + #ifdef sgi + if (lseek(kmem, (long)nl[0].n_value & 0x7fffffff, 0) < 0) { + perror("lseek"); + exit(1); + } + (void) read(kmem, (char *)avenrun, sizeof(avenrun)); + #else /* sgi */ lseek (kmem, (long) nl[0].n_value, 0); read (kmem, avenrun, sizeof (avenrun)); + #endif /* sgi */ return avenrun[0]; } else *** Makefile.orig Sun Jul 30 17:54:45 1989 --- Makefile Tue Jul 31 09:30:24 1990 *************** *** 1,8 **** ! CFLAGS= -g # For Xenix. Needed for movemail # LOADLIBES= -lx # For Iris 4d. Needed for loadst. ! # LOADLIBES = -lmld EXECUTABLES = test-distrib etags ctags loadst make-docfile \ digest-doc sorted-doc movemail cvtmail fakemail yow env \ --- 1,8 ---- ! CFLAGS= -O2 # For Xenix. Needed for movemail # LOADLIBES= -lx # For Iris 4d. Needed for loadst. ! LOADLIBES = -lmld EXECUTABLES = test-distrib etags ctags loadst make-docfile \ digest-doc sorted-doc movemail cvtmail fakemail yow env \ \Rogue\Monster\ else echo "will not over write ./irix3.3-etc.diff" fi echo "Finished archive 1 of 1" exit -- Scott Henry / Traveller on Dragon Wings Information Services, / Help! My disclaimer is missing! Silicon Graphics, Inc / 'Under-achiever and proud of it!' -- Bart Simpson