diff options
-rw-r--r-- | etc/=MACHINES | 341 | ||||
-rw-r--r-- | src/callproc.c | 90 |
2 files changed, 254 insertions, 177 deletions
diff --git a/etc/=MACHINES b/etc/=MACHINES index 01eebd5a2ee..377872976fe 100644 --- a/etc/=MACHINES +++ b/etc/=MACHINES @@ -1,19 +1,26 @@ This is a list of the status of GNU Emacs on various machines and systems. -Last updated 27 December 1990. +Last updated 4 March 1991. + +For each system and machine, we give the `-opsystem' and `-machine' +options you should pass to config.emacs to prepare to build Emacs for +that system/machine. + +These options tell Emacs which machine- and system-descriptive files +to include. For each `-machine=MACHNAME' option, there exists a file +`src/m/MACHNAME.h', and for each `-opsystem=OSNAME' option, there +exists a file `src/s/OSNAME.h'. Systems: - For each type of system, the name of the appropriate s- header file - is given. -Berkeley 4.1 (s-bsd4-1.h) +Berkeley 4.1 (-opsystem=bsd4-1) Works on vaxes. -Berkeley 4.2 (s-bsd4-2.h) +Berkeley 4.2 (-opsystem=bsd4-2) Works on several machines. -Berkeley 4.3 (s-bsd4-3.h) +Berkeley 4.3 (-opsystem=bsd4-3) Works, on Vaxes at least. @@ -21,27 +28,27 @@ Microport See under "Intel 386". -System V rel 0 (s-usg5-0.h) +System V rel 0 (-opsystem=usg5-0) Works, on Vaxes and 3bxxx's. There are some problems in 18.37 due to shortnames/cccp problems: use the emacs 17 cpp if you have it. -System V rel 2 (s-usg5-2.h) +System V rel 2 (-opsystem=usg5-2) Works on various machines. On some (maybe all) machines the library -lPW exists and contains a version of `alloca'. On these machines, to use it, put #define HAVE_ALLOCA #define LIB_STANDARD -lPW -lc - in the m-...h file for the machine. + in the src/m/MACHINENAME.h file for the machine. If you find that the character Meta-DEL makes Emacs crash, find where function init_sys_modes in sysdep.c sets sg.c_cc[VQUIT] and make it store 7 there. I have as yet no evidence of whether this problem, known in HP-UX, exists in other system V versions. -System V rel 2.2 (s-usg5-2-2.h) +System V rel 2.2 (-opsystem=usg5-2-2) In 5.2.2 AT&T undid, incompatibly, their previous incompatible change to the way the nlist library is called. A different s- file @@ -54,7 +61,7 @@ System V rel 2.2 (s-usg5-2-2.h) NO_REMAP. It is not yet known whether this applies to all machines running 5.2.2. -System V rel 3 (s-usg5-3.h) +System V rel 3 (-opsystem=usg5-3) Some versions of this system support ptys and BSD-style sockets. On such systems, you should define HAVE_PTYS and HAVE_SOCKETS in config.h. @@ -62,7 +69,7 @@ System V rel 3 (s-usg5-3.h) If you want to link Emacs with shared libraries, define USG_SHARED_LIBRARIES. -System V rel 4 (s-usg5-4.h) +System V rel 4 (-opsystem=usg5-4) Supported, including shared libraries for ELF, but ptys do not work because TIOCGPGRP fails to work on ptys. @@ -75,7 +82,7 @@ System V rel 4 (s-usg5-4.h) The standard C preprocessor generate xmakefile incorrectly. However, /lib/cpp will work, so use `make CPP=/lib/cpp'. -Ultrix (s-bsd4-2.h) +Ultrix (-opsystem=bsd4-2) DEC's Ultrix OS is essentially Berkeley 4.2. It does not correctly implement certain features of 4.3. @@ -96,11 +103,11 @@ Ultrix (s-bsd4-2.h) The problem is said to be gone in UWS version 2.1. -Uniplus 5.2 (s-unipl5-2.h) +Uniplus 5.2 (-opsystem=unipl5-2) Works, on Dual machines at least. -VMS (s-vms.h) +VMS (-opsystem=vms) Works except for certain features (directory listing, dired, sending and receiving mail) that use synchronous subprocesses. @@ -114,34 +121,37 @@ VMS (s-vms.h) Xenix Should work in 18.50, but you will need to edit the files - etc/Makefile and src/ymakefile + lib-src/Makefile and src/ymakefile (see the comments that mention "Xenix" for what to change.) Compiling Emacs with -O is said not to work. If you want Emacs to work with Smail (installed as /usr/bin/smail) then add the line #define SMAIL to config.h. - The file etc/XENIX suggests some useful things to do to Xenix + The file share-lib/XENIX suggests some useful things to do to Xenix to make the Emacs meta key work. Machines: - For each type of machine, the names of the m- and s- header files - are given. -Alliant (m-alliant4.h or m-alliant.h or m-alliant1.h; s-bsd4-2.h) +Alliant (-machine=alliant4, -machine=alliant or -machine=alliant1; + -opsystem=bsd4-2) 18.52 works on system version 4. Previous Emacs versions were known to work on previous system versions. - Use m-alliant1.h on version 1 of their operating system - and use m-alliant.h on version 2 or 3. - Use m-alliant4.h on version 4. + Use -machine=alliant1 on version 1 of their operating system + and use -machine=alliant on version 2 or 3. + Use -machine=alliant4 on version 4. + +Alliant FX/2800 (-machine=alliant-2800; -opsystem=bsd4-3) + + Known to work with 18.58 and OS version 2.2, compiler version 1.3. -Altos 3068 (m-altos.h; s-usg5-2.h) +Altos 3068 (-machine=altos; -opsystem=usg5-2) 18.52 is said to work, provided you don't compile unexec.c with -O. -Amdahl UTS (m-amdahl.h; s-usg5-2-2.h) +Amdahl UTS (-machine=amdahl; -opsystem=usg5-2-2) Small changes for 18.38 were merged in 18.39. It is mostly working, but at last report a bug sometimes causes Emacs to @@ -154,21 +164,21 @@ Amdahl UTS (m-amdahl.h; s-usg5-2-2.h) even worth trying to use it. Success was obtained with the uts native C compiler on uts version 5.2.5. -Apollo running Domain (m-apollo.h; s-bsd4-2.h) +Apollo running Domain (-machine=apollo; -opsystem=bsd4-2) 18.52 works, to some extent. Code for dumping Emacs has been written, but we cannot distribute it yet. There are reports of bugs in cc -O on this system. - In etc/Makefile, don't expect emacsclient and emacsserver to + In lib-src/Makefile, don't expect emacsclient and emacsserver to compile. You might want to remove them from your makefile. Supposedly something in dired.c runs into a compiler bug. - Paraphrasing the statement should avoid the problem. - I havenot yet received word as to the exact statement this is. + Paraphrasing the statement should avoid the problem. I have not yet + received word as to the exact statement this is. -AT&T 3b2, 3b5, 3b15, 3b20 (m-att3b.h; s-usg5-2-2.h) +AT&T 3b2, 3b5, 3b15, 3b20 (-machine=att3b; -opsystem=usg5-2-2) Emacs will probably not work with certain kernel constants too small. @@ -189,17 +199,18 @@ AT&T 3b2, 3b5, 3b15, 3b20 (m-att3b.h; s-usg5-2-2.h) The MAXMEM may also prevent Emacs from running. The file 3B-MAXMEM in this directory explains how to increase MAXMEM. -AT&T 7300 or 3b1 (m-7300.h; s-usg5-2-2.h) +AT&T 7300 or 3b1 (-machine=7300; -opsystem=usg5-2-2) - 18.52 seems to work. If you have strange troubles with dumping Emacs, - delete the last few lines from m-7300.h and recompile. These lines - are supposed to produce a sharable executable. + 18.52 seems to work. If you have strange troubles with dumping + Emacs, delete the last few lines from -machine=7300 and recompile. + These lines are supposed to produce a sharable executable. - m-7300.h defines SHORTNAMES because operating system versions + -machine=7300 defines SHORTNAMES because operating system versions older than 3.5 did not support long symbol names. Version 3.5 does - support them, so you can remove the #define SHORTNAMES in that version. + support them, so you can remove the #define SHORTNAMES in that + version. -Bull sps7 (m-sps7.h; s-usg5-2.h) +Bull sps7 (-machine=sps7; -opsystem=usg5-2) Changes partially merged in version 19, but some fixes are probably required. @@ -207,59 +218,66 @@ CCI 5/32, 6/32 See "Tahoe". -Celerity (m-celerity.h; s-bsd4-2.h) +Celerity (-machine=celerity; -opsystem=bsd4-2) Version 18.49 works. -Clipper (m-clipper.h; ???) +Clipper (-machine=clipper; ???) Version 19 has support for some brand of clipper system. Note that the Orion 105 is also a clipper, but some system-related parameters are different. -Convex (m-convex.h; s-bsd4-3.h) +Convex (-machine=convex; -opsystem=bsd4-3) 18.53 is supposed to work. -Cubix QBx/386 (m-intel386.h; s-usg5-3.h) +Cubix QBx/386 (-machine=intel386; -opsystem=usg5-3) Changes merged in 19.1. Systems before 2/A/0 may fail to compile etags.c due to a compiler bug. -Cydra 5 (m-cydra5.h; s-usg5-3.h) +Cydra 5 (-machine=cydra5; -opsystem=usg5-3) 18.51 worked in one version of their operating system but stopped working in a newer version. This has not been fixed. -DECstation (m-pmax.h; s-bsd4-2.h) +DECstation (-machine=pmax; -opsystem=bsd4-2) Works, as of 18.55. See under Ultrix for problems using X windows on Ultrix. Note that this is a MIPS machine. + For Ultrix versions prior to 4.0, you may need to delete + the definition of START_FILES from src/m/pmax.h. -Delta (m-delta.h; s-usg5-3.h) +Motorola Delta 147 (-machine=delta; -opsystem=usg5-3) Motorola Delta boxes running System V/68 release 3. (tested on sys1147 with SVR3V5). Changes merged in 19.1. -Dual running System V (m-dual.h; s-usg5-2.h) +Motorola Delta 187 (-machine=delta88k; -opsystem=usg5-3) + + Machine support added in version 19. + HAVE_X_MENU does not work due to lack of insque. + +Dual running System V (-machine=dual; -opsystem=usg5-2) As of 17.46, this works except for a few changes needed in unexec.c. -Dual running Uniplus (m-dual.h; s-unipl5-2.h) +Dual running Uniplus (-machine=dual; -opsystem=unipl5-2) Works, as of 17.51. -Elxsi 6400 (m-elxsi; s-usg5-2.h) +Elxsi 6400 (-machine=elxsi; -opsystem=usg5-2) Changes for 12.0 release are in 19.1. Dumping should work now. -Encore machine (m-ns16000.h; s-umax.h) +Encore machine (-machine=ns16000; -opsystem=umax) This machine bizarrely uses 4.2BSD modified to use the COFF format for object files. Works (as of 18.40). For the APC processor you - must enable two lines at the end of s-umax.h, which are commented + must enable two lines at the end of src/s/umax.h, which are commented out in the file as distributed. WARNING: If you compile Emacs with the "-O" compiler switch, you @@ -269,36 +287,37 @@ Encore machine (m-ns16000.h; s-umax.h) A kernel bug in some system versions causes input characters to be lost occasionally. -GEC 93 (m-gec93.h; s-usg5-2.h?) +GEC 93 (-machine=gec93; -opsystem=usg5-2?) Changes are partially merged in version 18, but certainly require more work. -Gould Power Node (m-gould.h; s-bsd4-2.h or s-bsd4-3.h) +Gould Power Node (-machine=gould; -opsystem=bsd4-2 or -opsystem=bsd4-3) 18.36 worked on versions 1.2 and 2.0 of the operating system. - On UTX/32 2.0, use s-bsd4-3.h. + On UTX/32 2.0, use -opsystem=bsd4-3. - On UTX/32 1.2 and UTX/32S 1.0, use s-bsd4-2.h and note that compiling - etc/sorted-doc tickles a compiler bug: remove the -g flag to cc in the - makefile. + On UTX/32 1.2 and UTX/32S 1.0, use -opsystem=bsd4-2 and note that + compiling lib-src/sorted-doc tickles a compiler bug: remove the -g + flag to cc in the makefile. UTX/32 1.3 has a bug in the bcopy library routine. Fix it by - #undef BSTRING in m-gould.h. + #undef BSTRING in -machine=gould. Version 19 incorporates support for releases 2.1 and later of UTX/32. A site running a pre-release of 2.1 should #define RELEASE2_1 in config.h. -Gould NP1 (m-gould-np1.h; s-bsd4-3.h) +Gould NP1 (-machine=gould-np1; -opsystem=bsd4-3) Version 19 supposedly works. -Honeywell XPS100 (m-xps100.h; s-usg5-2.h) +Honeywell XPS100 (-machine=xps100; -opsystem=usg5-2) Config file added in version 19. -HP 9000 series 200 or 300 (m-hp9000s300.h; s-hpux.h or s-bsd4-3.h) +HP 9000 series 200 or 300 (-machine=hp9000s300; + -opsystem=hpux or -opsystem=bsd4-3) Version 18 works. These machines are 68000-series CPUs running HP-UX @@ -328,9 +347,9 @@ HP 9000 series 200 or 300 (m-hp9000s300.h; s-hpux.h or s-bsd4-3.h) that include the `netunam' system call. This is refered to as Network Services (NS/9000) in HP literature. -HP 9000 series 300 running BSD 4.3 (m-hp300bsd.h; s-bsd4-3.h) +HP 9000 series 300 running BSD 4.3 (-machine=hp300bsd; -opsystem=bsd4-3) - Version 18.55 works. + Version 19.1 works. HP 9000 series 500: not supported. @@ -338,18 +357,18 @@ HP 9000 series 500: not supported. which relocates data in memory during execution of a program, and support for it would be difficult to implement. -HP 9000 series 800 (Spectrum) (m-hp9000s800.h; s-hpux.h) +HP 9000 series 800 (Spectrum) (-machine=hp9000s800; -opsystem=hpux) These files support HP's Precision Architecture machines running HP-UX. It has been moderately tested on the Series 840. -High Level Hardware Orion (m-orion.h; s-bsd4-2.h) +High Level Hardware Orion (-machine=orion; -opsystem=bsd4-2) This is the original microprogrammed hardware. - m- file ought to work. + Machine description file ought to work. -High Level Hardware Orion 1/05 (m-orion105.h; s-bsd4-2.h) +High Level Hardware Orion 1/05 (-machine=orion105; -opsystem=bsd4-2) Changes merged in 18.52. This is the one with the Clipper cpu. Note that systems which lack NFS need LOAD_AVE_TYPE changed to `double'. @@ -357,12 +376,16 @@ High Level Hardware Orion 1/05 (m-orion105.h; s-bsd4-2.h) C compiler has a bug; it loops compiling eval.c. Compile it by hand without optimization. -IBM PS/2 (m-ibmps2-aix.h; s-usg5-2-2.h) +IBM PS/2 (-machine=ibmps2-aix; -opsystem=usg5-2-2 or -opsystem=usg5-3) Changes merged in version 19. You may need to copy /usr/lib/samples/hft/hftctl.c to the Emacs src directory. -IBM RS/6000 (m-ibmrs6000.h; s-aix3-1.h) + Use -opsystem=usg5-3 on AIX 1.2. + -opsystem=usg5-2-2 should work on either AIX 1.1 or 1.2, but may not + work with certain new X window managers, and may be suboptimal. + +IBM RS/6000 (-machine=ibmrs6000; -opsystem=aix3-1) Changes merged in version 19. @@ -372,10 +395,12 @@ IBM RS/6000 (m-ibmrs6000.h; s-aix3-1.h) but every few days or weeks it changes to a new steady state. When this happens, the dumped Emacs data file becomes invalid. -IBM RT/PC (m-ibmrt.h or m-ibmrt-aix.h; s-bsd4-2.h or s-usg5-2-2.h) +IBM RT/PC (-machine=ibmrt or -machine=ibmrt-aix; + -opsystem=bsd4-2 or -opsystem=usg5-2-2) 18.52 works on both operating systems. - Use s-bsd-4-2.h for the 4.2-like system and s-usg5-2-2.h for AIX. + Use -opsystem=bsd4-2 for the 4.2-like system and -opsystem=usg5-2-2 + for AIX. On BSD, if you have trouble, try compiling with a different compiler. @@ -385,7 +410,8 @@ IBM RT/PC (m-ibmrt.h or m-ibmrt-aix.h; s-bsd4-2.h or s-usg5-2-2.h) window.c must not be compiled with -O on AIX. -Integrated Solutions `Optimum V' (m-isi-ov.h; s-bsd4-2.h or s-bsd4-3.h) +Integrated Solutions `Optimum V' (-machine=isi-ov; + -opsystem=bsd4-2 or -opsystem=bsd4-3) 18.52 said to work on some sort of ISI machine. Version 18.45 worked (running on a Optimum V (VME bus, 68020) @@ -397,14 +423,19 @@ Integrated Solutions `Optimum V' (m-isi-ov.h; s-bsd4-2.h or s-bsd4-3.h) Compilation with -O is rumored to break something. On recent system versions, you may need to undefine the macro UMAX - in etc/loadst.c and src/getpagesize.h. They stupidly defined this + in lib-src/loadst.c and src/getpagesize.h. They stupidly defined this in a system header file, which confuses Emacs (which thinks that UMAX indicates the Umax operating system). -Intel 80386 (m-intel386.h or m-is386.h; s-bsd4-2.h, s-usg5-2-2.h, s-usg5-3.h, - s-386-ix.h, s-esix.h or s-xenix.h) +Intel 386 (-machine=intel386 or -machine=is386; + -opsystem=bsd4-2, usg5-2-2, usg5-3, isc2-2, 386-ix, + esix, or xenix) + + 18.58 should support a wide variety of operating systems. + Use -opsystem=isc2-2 for Interactive 386/ix version 2.2. + Use -opsystem=386ix for prior versions. + Use -opsystem=esix for Esix. It isn't clear what to do on an SCO system. - Changes merged in 18.50 for all three operating systems. If you are using Xenix, see notes above under Xenix. Some sysV.3 systems seem to have bugs in `opendir'; @@ -437,20 +468,20 @@ Intel 80386 (m-intel386.h or m-is386.h; s-bsd4-2.h, s-usg5-2-2.h, s-usg5-3.h, but define `struct tc' instead; add `#define tchars tc' to config.h to solve this problem. - The file m-is386.h is used for an Integrated Solutions 386 machine. + The file -machine=is386 is used for an Integrated Solutions 386 machine. It may also be correct for Microport systems. -Iris 2500 (m-irist.h; s-iris3-5.h or s-iris3-6.h) +Iris 2500 (-machine=irist; -opsystem=iris3-5 or -opsystem=iris3-6) - Version 18 said to work; use s-irist3-5.h for system version 2.5 - and s-iris3-6.h for system version 3.6. + Version 18 said to work; use -opsystem=irist3-5 for system version 2.5 + and -opsystem=iris3-6 for system version 3.6. -Iris 2500 Turbo (m-irist.h; s-iris3-5.h or s-iris3-6.h) +Iris 2500 Turbo (-machine=irist; -opsystem=iris3-5 or -opsystem=iris3-6) - 18.49 works. Use s-iris3-6.h for system versions 3.6 and up. + 18.49 works. Use -opsystem=iris3-6 for system versions 3.6 and up. Note that the 3030 is the same machine as this. -Iris 4D (m-iris4d.h; s-iris3-6.h or s-irix3-3.h) +Iris 4D (-machine=iris4d; -opsystem=irix3-3) 18.56 is known to work on 4D series machines with Irix 3.3 or later. @@ -459,12 +490,15 @@ Iris 4D (m-iris4d.h; s-iris3-6.h or s-irix3-3.h) RANLIB=true - Someone says that with the yellow pages you must change two definitions - in m-iris4d.h as follows: + Someone said that with the yellow pages you must change two definitions + in -machine=iris4d as follows: #define LIBS_MACHINE -lsun -lbsd -lPW -lmld #define C_SWITCH_MACHINE -I/usr/include/sun -I/usr/include/bsd + jg@bambi.esd.sgi.com says this isn't true anymore, + but the info might as well be here just in case. + Macintosh We are boycotting Apple because of Apple's efforts to take away @@ -475,7 +509,7 @@ Macintosh See the file APPLE in this directory for more information. -Masscomp (m-masscomp.h; s-rtu.h) +Masscomp (-machine=masscomp; -opsystem=rtu) 18.36 worked on a 5500DP running RTU v3.1a and compiler version 3.2 with minor fixes that are included in 18.37. However, bizarre behavior @@ -488,73 +522,74 @@ Masscomp (m-masscomp.h; s-rtu.h) to take the time to install the numerous workarounds required to compensate for this bug; go complain to Masscomp. - For RTU version 3.1, define FIRST_PTY_LETTER to be 'p' in s-rtu.h + For RTU version 3.1, define FIRST_PTY_LETTER to be 'p' in src/s/rtu.h (or #undef and redefine it in config.h) so that ptys will be used. GNU Emacs is said to have no chance of compiling on RTU versions prior to v3.0. -Megatest (m-mega68.h; s-bsd4-2.h) +Megatest (-machine=mega68; -opsystem=bsd4-2) Emacs 15 worked; do not have any reports about Emacs 16 or 17 but any new bugs are probably not difficult. -Mips (m-mips.h or m-mips4.h; s-usg5-2-2.h, s-bsd4-3.h) +Mips (-machine=mips or -machine=mips4; -opsystem=usg5-2-2, -opsystem=bsd4-3) Changes merged in 18.39. Some fixes in 18.56. - Use m-mips4.h for RISCOS version 4; use s-bsd4-3.h with the BSD world. + Use -machine=mips4 for RISCOS version 4; use -opsystem=bsd4-3 with + the BSD world. -Motorola Delta (m-delta.h; s-usg5-3.h) +Motorola Delta (-machine=delta; -opsystem=usg5-3) - m- file added in version 18.56. + Machine support added in version 18.56. -National Semiconductor 32000 (m-ns32000.h; s-usg5-2.h) +National Semiconductor 32000 (-machine=ns32000; -opsystem=usg5-2) This is for a complete machine from National Semiconductor, running Genix. Changes merged in version 19. -NCR Tower 32 running System V release 2 (m-tower32.h; s-usg5-2-2.h) +NCR Tower 32 running System V release 2 (-machine=tower32; -opsystem=usg5-2-2) Works as of 17.56. If you change src/ymakefile so that CFLAGS includes C_OPTIMIZE_SWITCH rather than C_DEBUG_SWITCH, check out the comments - in src/m-tower32.h about this. + in src/m/tower32.h about this. There is a report that compilation with -O did not work with 18.54. -NCR Tower 32 running System V release 3 (m-tower32v3.h; s-usg5-3.h) +NCR Tower 32 running System V release 3 (-machine=tower32v3; -opsystem=usg5-3) Works as of 18.56. If you change src/ymakefile so that CFLAGS includes C_OPTIMIZE_SWITCH rather than C_DEBUG_SWITCH, and do not use gcc, check - out the comments in src/m-tower32v3.h about this. + out the comments in src/m/tower32v3.h about this. -Nixdorf Targon 31 (m-targon31.h; s-usg5-2-2.h) +Nixdorf Targon 31 (-machine=targon31; -opsystem=usg5-2-2) - m- file for version 17 is included in 18 + Machine description file for version 17 is included in 18 but whether it works is not known. src/unexec.c bombs if compiled with -O. Note that the "Targon 35" is really a Pyramid. -Nu (TI or LMI) (m-nu.h; s-usg5-2.h) +Nu (TI or LMI) (-machine=nu; -opsystem=usg5-2) Version 18 is believed to work. -Plexus (m-plexus.h; s-usg5-2.h) +Plexus (-machine=plexus; -opsystem=usg5-2) Works as of 17.56. -Pmax (DEC Mips) (m-pmax.h; s-bsd4-2.h) +Pmax (DEC Mips) (-machine=pmax; -opsystem=bsd4-2) See under DECstation, above. -Prime EXL (m-intel386.h; s-usg5-3.h) +Prime EXL (-machine=intel386; -opsystem=usg5-3) Minor changes merged in 19.1. -Pyramid (m-pyramid.h; s-bsd4-2.h) +Pyramid (-machine=pyramid; -opsystem=bsd4-2) In OSx 4.0, it seems necessary to add the following two lines - to m-pyramid.h: + to src/m/pyramid.h: #define _longjmp longjmp #define _setjmp setjmp @@ -565,26 +600,29 @@ Pyramid (m-pyramid.h; s-bsd4-2.h) Some versions of the pyramid compiler get fatal errors when the -gx compiler switch is used; if this - happens to you, change src/m-pyramid.h to define + happens to you, change src/m/pyramid.h to define C_DEBUG_SWITCH with an empty definition. Some old system versions may require you to define PYRAMID_OLD in when alloca.s is preprocessed, in order to define _longjmp and _setjmp. -Sequent Balance (m-sequent.h; s-bsd4-2.h, or s-bsd4-3.h on newer systems) +Sequent Balance (-machine=sequent; + -opsystem=bsd4-2, or -opsystem=bsd4-3 on newer systems) Emacs 18.51 should work on system version 3.0. 18.52 is said to work. - Delete some lines at the end of m-sequent.h for earlier system versions. + Delete some lines at the end of src/m/sequent.h for earlier system + versions. -Sequent Symmetry (m-symmetry.h; s-bsd4-3.h) +Sequent Symmetry (-machine=symmetry; -opsystem=bsd4-3) Emacs 19 should work. -SONY News (m-news.h; s-bsd4-2.h, or s-bsd4-3.h for system release 3) +SONY News (-machine=news; + -opsystem=bsd4-2, or -opsystem=bsd4-3 for system release 3) 18.52 should work. -SONY News 3000 series (RISC NEWS) (m-news-risc.h; s-bsd4-3.h) +SONY News 3000 series (RISC NEWS) (-machine=news-risc; -opsystem=bsd4-3) Works, as of 18.56. Note that this is a MIPS architecture machine. @@ -592,24 +630,26 @@ Stardent 1500 or 3000 See Titan. -Stride (m-stride.h; s-usg5-2.h) +Stride (-machine=stride; -opsystem=usg5-2) Works (most recent news for 18.30) on their release 2.0. - For release 2.2, see the end of m-stride.h. + For release 2.2, see the end of src/m/stride.h. It may be possible to run on their V.1 system but changes in the s- file would be needed. -Sun 1, 2 and 3 (m-sun1.h, m-sun2.h, m-sun3.h; s-bsd4-2.h or s-sunos4.h) +Sun 1, 2 and 3 (-machine=sun1, -machine=sun2, -machine=sun3; + -opsystem=bsd4-2, sunos4-0, or sunos4-1) - There are three m- files for different versions of SunOS. + There are three machine files for different versions of SunOS. All are derived from Berkeley 4.2. Emacs 17 has run on all of them. - Whether you should use m-sun1.h, m-sun2.h or m-sun3.h depends - on the VERSION OF THE OPERATING SYSTEM you have. - You will need to use m-sun3.h on Sun 2's running SunOS release 3. + Whether you should use -machine=sun1, -machine=sun2 or -machine=sun3 + depends on the VERSION OF THE OPERATING SYSTEM you have. + You will need to use -machine=sun3 on Sun 2's running SunOS release 3. - For SunOS release 4 on a Sun 3, use m-sun3.h and s-sunos4.h. - See the file etc/SUNBUG for how to solve problems caused by bugs in - the "export" version of SunOS 4. + For SunOS release 4 on a Sun 3, use -machine=sun3 and + -opsystem=sunos4-0 or -opsystem=sunos4-1. + See the file share-lib/SUNBUG for how to solve problems caused by + bugs in the "export" version of SunOS 4. If you have trouble using open-network-stream, get the distribution of `bind' (the BSD name-server), build libresolv.a, @@ -618,7 +658,7 @@ Sun 1, 2 and 3 (m-sun1.h, m-sun2.h, m-sun3.h; s-bsd4-2.h or s-sunos4.h) If you want to use SunWindows, define HAVE_SUN_WINDOWS in config.h to enable a special interface called `emacstool'. - The definition must *precede* the #include "m-sun3.h". + The definition must *precede* the #include "machine.h". System version 3.2 is required for this facility to work. We recommend that you instead use the X window system, which @@ -627,7 +667,7 @@ Sun 1, 2 and 3 (m-sun1.h, m-sun2.h, m-sun3.h; s-bsd4-2.h or s-sunos4.h) If you are compiling for X windows, and the X window library was compiled to use the 68881, then you must edit config.h according - the comments at the end of m-sun3.h. + the comments at the end of -machine=sun3. Note that Emacs on a Sun is not really as big as it looks. As dumped, it includes around 200k of zeros between the @@ -638,82 +678,97 @@ Sun 1, 2 and 3 (m-sun1.h, m-sun2.h, m-sun3.h; s-bsd4-2.h or s-sunos4.h) To build a single Emacs that will run on Sun 2 and Sun 3 HARDWARE, just build it on the Sun 2. -Sun 4 (m-sparc.h; s-bsd4-2.h or s-sunos4.h) +Sun 4 (-machine=sparc; + -opsystem=bsd4-2, -opsystem=sunos4-0, -opsystem=sunos4-1) Changes merged in 18.50. Some people say optimizing compilation does not work; some say that -O2 (whatever that is) works perhaps with a small change. - Use s-sunos4.h for operating system version 4. - See the file etc/SUNBUG for how to solve problems caused by bugs in - the "export" version of SunOS 4. + Use -opsystem=sunos4-0 for operating system version 4.0, and + -opsystem=sunos4-1 for later versions. + See the file share-lib/SUNBUG for how to solve problems caused by + bugs in the "export" version of SunOS 4. -Sun Roadrunner (m-sun386.h; s-sunos4.h) +Sun Roadrunner (-machine=sun386; -opsystem=sunos4-0 or -opsystem=sunos4-1) Changes merged in 18.51. -Tahoe (m-tahoe.h; s-bsd4-2.h or s-bsd4-3.h) +Tadpole 68K (-machine=tad68k; -opsystem=usg5-3) + + Changes merged in 19.1. + + You may need to edit Makefile to change the variables LIBDIR and + BINDIR from /usr/local to /usr/contrib. + + To give movemail access to /usr/mail, you may need to execute + + chmod 2755 etc/movemail; chgrp mail etc/movemail + +Tahoe (-machine=tahoe; -opsystem=bsd4-2 or -opsystem=bsd4-3) 18.52 known to work on some Tahoes, but a compiler bug intervenes on others. Some Emacs versions have worked in Unisys 1r4 (not in 1r3) and CCI I.21. - If you have trouble compiling etc/loadst.c, turn off the definition - of DKSTAT_HEADER_FILE in m-tahoe.h. + If you have trouble compiling lib-src/loadst.c, turn off the definition + of DKSTAT_HEADER_FILE in -machine=tahoe. -Tandem Integrity S2 (m-tandem-s2.h; s-usg5-3.h) +Tandem Integrity S2 (-machine=tandem-s2; -opsystem=usg5-3) Changes merged in 18.56 but subprocess support is turned off. You will probably want to see if you can make subprocesses work. - You must edit etc/Makefile to define LOADLIBES = -mld. + You must edit lib-src/Makefile to define LOADLIBES = -mld. -Tektronix 16000 box (6130?) (m-ns16000.h; s-bsd4-2.h) +Tektronix 16000 box (6130?) (-machine=ns16000; -opsystem=bsd4-2) Emacs 17.61 worked. -Tektronix 4300 (m-tex4300.h; s-bsd4-3.h) +Tektronix 4300 (-machine=tek4300; -opsystem=bsd4-3) Emacs 18.51 should work. -Titan P2 or P3 (m-titan.h; s-usg5-3.h) +Titan P2 or P3 (-machine=titan; -opsystem=usg5-3) Changes probably merged in version 19. -Ustation E30 (SS5E) (m-ustation.h; s-unipl5-2.h). +Ustation E30 (SS5E) (-machine=ustation; -opsystem=unipl5-2). Changes merged in 18.52; don't know whether they work. -Vax running Berkeley Unix (m-vax.h; s-bsd4-1.h, s-bsd4-2.h or s-bsd4-3.h) +Vax running Berkeley Unix (-machine=vax; + -opsystem=bsd4-1, bsd4-2 or bsd4-3) Works. -Vax running Ultrix (m-vax.h; s-bsd4-2.h) +Vax running Ultrix (-machine=vax; -opsystem=bsd4-2) Works. See under Ultrix for problems using X windows on Ultrix. -Vax running System V rel 2 (m-vax.h; s-usg5-2.h) +Vax running System V rel 2 (-machine=vax; -opsystem=usg5-2) 18.27 Works. -Vax running System V rel 0 (m-vax.h; s-usg5-0.h) +Vax running System V rel 0 (-machine=vax; -opsystem=usg5-0) Works as of 18.36. -Vax running VMS (m-vax.h; s-vms.h but on VMS they are m_vax.h and s_vms.h) +Vax running VMS (-machine=vax; -opsystem=vms + but on VMS they are m_vax.h and s_vms.h) 18.36 believed to work. Addition of features is necessary to make this Emacs version more usable. -Whitechapel MG1 (m-mg1.h, s-?) +Whitechapel MG1 (-machine=mg1, s-?) May work. Supposedly no changes were needed except the m- file. I do not know what Unix version runs on them. -Wicat (m-wicat.h; s-usg5-2.h) +Wicat (-machine=wicat; -opsystem=usg5-2) Changes merged as of 18.6; whether they work is unknown. - See comments in m-wicat.h for things you should change + See comments in src/m/wicat.h for things you should change depending on the system and compiler version you have. Local variables: diff --git a/src/callproc.c b/src/callproc.c index e033a8bf018..e9374aabe13 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -19,6 +19,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #include <signal.h> +#include <errno.h> #include "config.h" @@ -104,7 +105,7 @@ If you quit, the process is killed with SIGKILL.") int nargs; register Lisp_Object *args; { - Lisp_Object display, buffer, path; + Lisp_Object display, infile, buffer, path, current_dir; int fd[2]; int filefd; register int pid; @@ -118,23 +119,27 @@ If you quit, the process is killed with SIGKILL.") #endif CHECK_STRING (args[0], 0); - if (nargs <= 1 || NILP (args[1])) - args[1] = build_string ("/dev/null"); + if (nargs >= 2 && ! NILP (args[1])) + { + infile = Fexpand_file_name (args[1], current_buffer->directory); + CHECK_STRING (infile, 1); + } else - args[1] = Fexpand_file_name (args[1], current_buffer->directory); - - CHECK_STRING (args[1], 1); + infile = build_string ("/dev/null"); { register Lisp_Object tem; - buffer = tem = args[2]; - if (nargs <= 2) + if (nargs < 3) buffer = Qnil; - else if (!(EQ (tem, Qnil) || EQ (tem, Qt) - || XFASTINT (tem) == 0)) + else { - buffer = Fget_buffer (tem); - CHECK_BUFFER (buffer, 2); + buffer = tem = args[2]; + if (!(EQ (tem, Qnil) || EQ (tem, Qt) + || XFASTINT (tem) == 0)) + { + buffer = Fget_buffer (tem); + CHECK_BUFFER (buffer, 2); + } } } @@ -152,10 +157,10 @@ If you quit, the process is killed with SIGKILL.") new_argv[i - 3] = 0; } - filefd = open (XSTRING (args[1])->data, O_RDONLY, 0); + filefd = open (XSTRING (infile)->data, O_RDONLY, 0); if (filefd < 0) { - report_file_error ("Opening process input file", Fcons (args[1], Qnil)); + report_file_error ("Opening process input file", Fcons (infile, Qnil)); } /* Search for program; barf if not found. */ openp (Vexec_path, args[0], "", &path, 1); @@ -177,6 +182,14 @@ If you quit, the process is killed with SIGKILL.") #endif } + /* Make sure that the child will be able to chdir to the current + buffer's current directory. We can't just have the child check + for an error when it does the chdir, since it's in a vfork. */ + current_dir = expand_and_dir_to_file (current_buffer->directory, Qnil); + if (NILP (Ffile_accessible_directory_p (current_dir))) + report_file_error ("Setting current directory", + Fcons (current_buffer->directory, Qnil)); + { /* child_setup must clobber environ in systems with true vfork. Protect it from permanent change. */ @@ -204,7 +217,7 @@ If you quit, the process is killed with SIGKILL.") #else setpgrp (pid, pid); #endif /* USG */ - child_setup (filefd, fd1, fd1, new_argv, env, 0); + child_setup (filefd, fd1, fd1, new_argv, env, 0, current_dir); } #if 0 @@ -338,13 +351,19 @@ If you quit, the process is killed with SIGKILL.") ENV is the environment for the subprocess. SET_PGRP is nonzero if we should put the subprocess into a separate - process group. */ + process group. + + CURRENT_DIR is an elisp string giving the path of the current + directory the subprocess should have. Since we can't really signal + a decent error from within the child, this should be verified as an + executable directory by the parent. */ -child_setup (in, out, err, new_argv, env, set_pgrp) +child_setup (in, out, err, new_argv, env, set_pgrp, current_dir) int in, out, err; register char **new_argv; char **env; int set_pgrp; + Lisp_Object current_dir; { register int pid = getpid(); @@ -361,21 +380,24 @@ child_setup (in, out, err, new_argv, env, set_pgrp) the superior's static variables as if the superior had done alloca and will be cleaned up in the usual way. */ - if (XTYPE (current_buffer->directory) == Lisp_String) - { - register unsigned char *temp; - register int i; - - i = XSTRING (current_buffer->directory)->size; - temp = (unsigned char *) alloca (i + 2); - bcopy (XSTRING (current_buffer->directory)->data, temp, i); - if (temp[i - 1] != '/') temp[i++] = '/'; - temp[i] = 0; - /* Switch to that directory, and report any error. */ - if (chdir (temp) < 0) - report_file_error ("In chdir", - Fcons (current_buffer->directory, Qnil)); - } + { + register unsigned char *temp; + register int i; + + i = XSTRING (current_dir)->size; + temp = (unsigned char *) alloca (i + 2); + bcopy (XSTRING (current_dir)->data, temp, i); + if (temp[i - 1] != '/') temp[i++] = '/'; + temp[i] = 0; + + /* We can't signal an Elisp error here; we're in a vfork. Since + the callers check the current directory before forking, this + should only return an error if the directory's permissions + are changed between the check and this chdir, but we should + at least check. */ + if (chdir (temp) < 0) + exit (errno); + } /* Set `env' to a vector of the strings in Vprocess_environment. */ { @@ -435,7 +457,7 @@ getenv_internal (var, varlen, value, valuelen) char *var; int varlen; char **value; - int **valuelen; + int *valuelen; { Lisp_Object scan; @@ -448,7 +470,7 @@ getenv_internal (var, varlen, value, valuelen) && XSTRING (entry)->data[varlen] == '=' && ! bcmp (XSTRING (entry)->data, var, varlen)) { - *value = XSTRING (entry)->data + (varlen + 1); + *value = (char *) XSTRING (entry)->data + (varlen + 1); *valuelen = XSTRING (entry)->size - (varlen + 1); return 1; } |