Commit 6bc8689c authored by Paul Eggert's avatar Paul Eggert

Remove support for IRIX

The IRIX port wasn’t really working anyway, and the code was
getting in the way of other changes (e.g., getaddrinfo fixes).
IRIX’s supplier dropped support for IRIX in 2013.
* admin/CPP-DEFINES:
* (opsys):
* doc/lispref/os.texi (System Environment):
* lisp/find-dired.el (find-grep-options):
* lisp/lpr.el (lpr-lp-system):
* lisp/ls-lisp.el (ls-lisp-emulation):
* lisp/mail/rmail.el (rmail-spool-directory):
* lisp/net/net-utils.el (ping-program-options):
* lisp/progmodes/gud.el (gud-irix-p, gud-dbx-use-stopformat-p):
* lisp/progmodes/ps-mode.el (ps-mode-print-function):
* src/conf_post.h [IRIX6_5]:
* src/emacs.c (Vsystem_type):
* src/filelock.c (get_boot_time_1):
* src/process.c (process_send_signal):
* src/unexelf.c (unexec):
Omit IRIX-specific code and/or documentation.
Remove.  All uses removed.
* etc/NEWS: Document the change.
parent 7882dc62
......@@ -13,7 +13,6 @@ CYGWIN Compiling the Cygwin port.
__CYGWIN__ Ditto
MSDOS Compiling the MS-DOS port.
__MSDOS__ Ditto.
__DJGPP_MINOR__ Minor version number of the DJGPP library; used only in msdos.c and dosfns.c.
......@@ -378,7 +377,6 @@ NSIG
......@@ -615,12 +615,7 @@ case "${canonical}" in
* ) unported=yes ;;
## Use fink packages if available.
## FIXME find a better way to do this:
## if test -d /sw/include && test -d /sw/lib; then
## GCC_TEST_OPTIONS="-I/sw/include -L/sw/lib"
## fi
## FIXME: Find a way to use Fink if available (Bug#11507).
## Chromium Native Client
......@@ -656,16 +651,6 @@ case "${canonical}" in
## Silicon Graphics machines
## Iris 4D
mips-sgi-irix6.5 )
# Without defining _LANGUAGE_C, things get masked out in the headers
# so that, for instance, grepping for 'free' in stdlib.h fails and
# AC_HEADER_STD_C fails. (MIPSPro compilers, Irix 6.5.3m).
## Suns
*-sun-solaris* \
| i[3456]86-*-solaris2* | i[3456]86-*-sunos5* \
......@@ -782,8 +767,6 @@ AM_PROG_CC_C_O
if test x$GCC = xyes; then
dnl This is used in lib/ to use nt/, the
......@@ -1233,7 +1216,6 @@ fi
dnl We need -znocombreloc if we're using a relatively recent GNU ld.
dnl If we can link with the flag, it shouldn't do any harm anyhow.
dnl (Don't use '-z nocombreloc' as -z takes no arg on Irix.)
dnl Treat GCC specially since it just gives a non-fatal 'unrecognized option'
dnl if not built to support GNU ld.
......@@ -1462,7 +1444,7 @@ LIBS=$OLD_LIBS
dnl Current possibilities handled by sed (aix4-2 -> aix,
dnl gnu-linux -> gnu/linux, etc.):
dnl gnu, gnu/linux, gnu/kfreebsd, aix, cygwin, darwin, hpux, irix.
dnl gnu, gnu/linux, gnu/kfreebsd, aix, cygwin, darwin, hpux.
dnl And special cases: berkeley-unix, usg-unix-v, ms-dos, windows-nt.
SYSTEM_TYPE=`echo $opsys | sed -e 's/[[0-9]].*//' -e 's|-|/|'`
......@@ -2199,7 +2181,7 @@ fi
case "$opsys" in
cygwin|mingw32|irix6-5) use_mmap_for_buffers=yes ;;
cygwin|mingw32) use_mmap_for_buffers=yes ;;
......@@ -3776,7 +3758,7 @@ mail_lock=no
case "$opsys" in
aix4-2) mail_lock="lockf" ;;
gnu|freebsd|dragonfly|netbsd|openbsd|darwin|irix6-5) mail_lock="flock" ;;
gnu|freebsd|dragonfly|netbsd|openbsd|darwin) mail_lock="flock" ;;
## On GNU/Linux systems, both methods are used by various mail programs.
## I assume most people are using newer mailers that have heard of flock.
......@@ -4286,7 +4268,7 @@ esac
case $opsys in
irix6-5 | sol2* | unixware )
sol2* | unixware )
dnl Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
dnl instead, there's a system variable _sys_nsig. Unfortunately, we
dnl need the constant to dimension an array. So wire in the appropriate
......@@ -4300,7 +4282,7 @@ emacs_broken_SIGIO=no
case $opsys in
dnl SIGIO exists, but the feature doesn't work in the way Emacs needs.
dnl See eg <>.
hpux* | irix6-5 | nacl | openbsd | sol2* | unixware )
hpux* | nacl | openbsd | sol2* | unixware )
......@@ -4408,7 +4390,7 @@ dnl generated in the Makefile generated by 'xmkmf'. If we don't define
dnl NARROWPROTO, we will see the wrong function prototypes for X functions
dnl taking float or double parameters.
case $opsys in
AC_DEFINE(NARROWPROTO, 1, [Define if system's imake configuration
file defines 'NeedWidePrototypes' as 'NO'.])
......@@ -4416,7 +4398,6 @@ esac
dnl Used in process.c, this must be a loop, even if it only runs once.
dnl (Except on SGI; see below. Take that, clarity and consistency!)
AH_TEMPLATE(PTY_ITERATION, [How to iterate over PTYs.])
dnl Only used if !PTY_ITERATION. Iterate from FIRST_PTY_LETTER to z,
dnl trying suffixes 0-16.
......@@ -4479,27 +4460,6 @@ case $opsys in
AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);])
irix6-5 )
dnl It looks like this cannot be right, because it is not a loop.
dnl However, process.c actually does this:
dnl # ifndef __sgi
dnl continue;
dnl # else
dnl return -1;
dnl # endif
dnl which presumably makes it OK, since irix == sgi (?).
dnl FIXME it seems like this special treatment is unnecessary?
dnl Why can't irix use a single-trip loop like eg cygwin?
dnl Not used, because PTY_ITERATION is defined.
AC_DEFINE(PTY_OPEN, [ { struct sigaction ocstat, cstat; struct stat stb; char * name; sigemptyset(&cstat.sa_mask); cstat.sa_handler = SIG_DFL; cstat.sa_flags = 0; sigaction(SIGCHLD, &cstat, &ocstat); name = _getpty (&fd, O_RDWR | O_NDELAY, 0600, 0); sigaction(SIGCHLD, &ocstat, (struct sigaction *)0); if (name == 0) return -1; if (fd < 0) return -1; if (fstat (fd, &stb) < 0) return -1; strcpy (pty_name, name); }])
dnl No need to get the pty name at all.
dnl No need to use sprintf to get the tty name--we get that from _getpty.
sol2* )
dnl On SysVr4, grantpt(3) forks a subprocess, so do not use
dnl O_CLOEXEC when opening the pty, and keep the SIGCHLD handler
......@@ -4534,8 +4494,7 @@ AH_TEMPLATE(SIGNALS_VIA_CHARACTERS, [Make process_send_signal work by
case $opsys in
dnl Perry Smith <> says this is correct for AIX.
dnl says this is needed for IRIX.
aix4-2 | cygwin | gnu | irix6-5 | dragonfly | freebsd | netbsd | openbsd | darwin )
aix4-2 | cygwin | gnu | dragonfly | freebsd | netbsd | openbsd | darwin )
......@@ -4615,8 +4574,7 @@ if test x$GCC = xyes; then
case $opsys in
dnl irix: Tested on Irix 6.5. SCM worked on earlier versions.
aix* | dragonfly | freebsd | netbsd | openbsd | irix6-5 | sol2* )
aix* | dragonfly | freebsd | netbsd | openbsd | sol2* )
......@@ -4720,12 +4678,6 @@ case $opsys in
AC_DEFINE(HPUX, [], [Define if the system is HPUX.])
AC_DEFINE(IRIX6_5, [], [Define if the system is IRIX.])
AC_DEFINE(WINDOWSNT, 1, [Define if compiling for native MS Windows.])
......@@ -4799,11 +4751,6 @@ case $opsys in
reopen it in the child.])
AC_DEFINE(PREFER_VSUSP, 1, [Define if process_send_signal should
use VSUSP instead of VSWTCH.])
AC_DEFINE(_STRUCTURED_PROC, 1, [Needed for system_process_attributes
on Solaris.])
......@@ -899,9 +899,6 @@ A GNU (glibc-based) system with a FreeBSD kernel.
@item hpux
Hewlett-Packard HPUX operating system.
@item irix
Silicon Graphics Irix system.
@item nacl
Google Native Client (@acronym{NaCl}) sandboxing system.
......@@ -105,12 +105,10 @@ the list at the end of this file.
Emacs versions later than 24.4 will not compile on Irix by default.
(Note that SGI stopped supporting Irix in December 2013.)
You should be able to work around the problem either by porting the
Emacs undumping code to GCC under Irix, or by configuring --with-wide-int.
Older versions of Emacs 24 (and 23?) also had problems on Irix.
It *may* be possible to build Emacs <= 24.4 on Irix 6.5 with an old
version (3.1) of gcc. Newer versions of gcc may not work.
See <>.
See <>.
* Obsolete platforms
......@@ -34,6 +34,9 @@ emacs-version and erc-cmd-SV functions, and the leave the following
variables nil: emacs-build-system, emacs-build-time,
** Emacs no longer works on IRIX. We expect that Emacs users are not
affected by this, as SGI stopped supporting IRIX in December 2013.
* Startup Changes in Emacs 25.2
......@@ -544,26 +544,6 @@ Other systems allow to set LD_RUN_PATH in a similar way, but before
Emacs is linked. With LD_RUN_PATH set, the linker will include a
specified run-time search path in the executable.
On some systems, Emacs can crash due to problems with dynamic
linking. Specifically, on SGI Irix 6.5, crashes were reported with
backtraces like this:
(dbx) where
0 strcmp(0xf49239d, 0x4031184, 0x40302b4, 0x12, 0xf0000000, 0xf4923aa, 0x0, 0x492ddb2) ["/xlv22/ficus-jan23/work/irix/lib/libc/libc_n32_M3_ns/strings/strcmp.s":35, 0xfb7e480]
1 general_find_symbol(0xf49239d, 0x0, 0x0, 0x0, 0xf0000000, 0xf4923aa, 0x0, 0x492ddb2)
["/comp2/mtibuild/v73/workarea/v7.3/rld/rld.c":2140, 0xfb65a98]
2 resolve_symbol(0xf49239d, 0x4031184, 0x0, 0xfbdd438, 0x0, 0xf4923aa, 0x0, 0x492ddb2)
["/comp2/mtibuild/v73/workarea/v7.3/rld/rld.c":1947, 0xfb657e4]
3 lazy_text_resolve(0xd18, 0x1a3, 0x40302b4, 0x12, 0xf0000000, 0xf4923aa, 0x0, 0x492ddb2)
["/comp2/mtibuild/v73/workarea/v7.3/rld/rld.c":997, 0xfb64d44]
4 _rld_text_resolve(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
["/comp2/mtibuild/v73/workarea/v7.3/rld/rld_bridge.s":175, 0xfb6032c]
('rld' is the dynamic linker.) We don't know why this
happens, but setting the environment variable LD_BIND_NOW to 1 (which
forces the dynamic linker to bind all shared objects early on) seems
to work around the problem.
Please refer to the documentation of your dynamic linker for details.
*** When you run Ispell from Emacs, it reports a "misalignment" error.
......@@ -1931,14 +1911,6 @@ This seems to be a GCC optimization bug that occurs for GCC 4.1.2 (-g
and -g -O2) and GCC 4.2.3 (-g -O and -g -O2). You can fix this by
compiling with GCC 4.2.3 or CC 5.7, with no optimizations.
** Irix
*** Irix: Trouble using ptys, or running out of ptys.
The program mkpts (which may be in '/usr/adm' or '/usr/sbin') needs to
be set-UID to root, or non-root programs like Emacs will not be able
to allocate ptys reliably.
* Runtime problems specific to MS-Windows
** Emacs on Windows 9X requires UNICOWS.DLL
......@@ -97,7 +97,7 @@ them for `find-ls-option'."
(defcustom find-grep-options
(if (or (eq system-type 'berkeley-unix)
(string-match "solaris2\\|irix" system-configuration))
(string-match "solaris2" system-configuration))
"-s" "-q")
"Option to grep to be as silent as possible.
On Berkeley systems, this is `-s'; on Posix, and with GNU grep, `-q' does it.
......@@ -36,7 +36,7 @@
(defvar lpr-lp-system
(memq system-type '(usg-unix-v hpux irix))
(memq system-type '(usg-unix-v hpux))
"Non-nil if running on a system type that uses the \"lp\" command.")
......@@ -72,7 +72,7 @@
(defcustom ls-lisp-emulation
(cond ;; ((eq system-type 'windows-nt) 'MS-Windows)
((memq system-type '(hpux usg-unix-v irix berkeley-unix))
((memq system-type '(hpux usg-unix-v berkeley-unix))
'UNIX)) ; very similar to GNU
;; Anything else defaults to nil, meaning GNU.
"Platform to emulate: GNU (default), MacOS, MS-Windows, UNIX.
......@@ -163,7 +163,7 @@ its character representation and its display representation.")
(put 'rmail-spool-directory 'standard-value
'((cond ((file-exists-p "/var/mail") "/var/mail/")
((file-exists-p "/var/spool/mail") "/var/spool/mail/")
((memq system-type '(hpux usg-unix-v irix)) "/usr/mail/")
((memq system-type '(hpux usg-unix-v)) "/usr/mail/")
(t "/usr/spool/mail/"))))
......@@ -176,7 +176,7 @@ its character representation and its display representation.")
;; Many GNU/Linux systems use this name.
((file-exists-p "/var/spool/mail") "/var/spool/mail/")
((memq system-type '(hpux usg-unix-v irix)) "/usr/mail/")
((memq system-type '(hpux usg-unix-v)) "/usr/mail/")
(t "/usr/spool/mail/")))
"Name of directory used by system mailer for delivering new mail.
Its name should end with a slash."
......@@ -79,7 +79,7 @@
;; On GNU/Linux and Irix, the system's ping program seems to send packets
;; indefinitely unless told otherwise
(defcustom ping-program-options
(and (memq system-type '(gnu/linux irix))
(and (eq system-type 'gnu/linux)
(list "-c" "4"))
"Options for the ping program.
These options can be used to limit how many ICMP packets are emitted."
......@@ -1182,36 +1182,30 @@ containing the executable being debugged."
;; correct line number, but life's too short.
;; (Dave Love) can be blamed for this
(defvar gud-irix-p
(and (string-match "^mips-[^-]*-irix" system-configuration)
(not (string-match "irix[6-9]\\.[1-9]" system-configuration)))
(defvar gud-irix-p nil
"Non-nil to assume the interface appropriate for IRIX dbx.
This works in IRIX 4, 5 and 6, but `gud-dbx-use-stopformat-p' provides
a better solution in 6.1 upwards.")
(defvar gud-dbx-use-stopformat-p
(string-match "irix[6-9]\\.[1-9]" system-configuration)
(defvar gud-dbx-use-stopformat-p nil
"Non-nil to use the dbx feature present at least from Irix 6.1
whereby $stopformat=1 produces an output format compatible with
;; [Irix dbx seems to be a moving target. The dbx output changed
;; [Irix dbx seemed to be a moving target. The dbx output changed
;; subtly sometime between OS v4.0.5 and v5.2 so that, for instance,
;; the output from `up' is no longer spotted by gud (and it's probably
;; not distinctive enough to try to match it -- use C-<, C->
;; exclusively) . For 5.3 and 6.0, the $curline variable changed to
;; `long long'(why?!), so the printf stuff needed changing. The line
;; number was cast to `long' as a compromise between the new `long
;; long' and the original `int'. This is reported not to work in 6.2,
;; long' and the original `int'. This was reported not to work in 6.2,
;; so it's changed back to int -- don't make your sources too long.
;; From Irix6.1 (but not 6.0?) dbx supports an undocumented feature
;; From Irix6.1 (but not 6.0?) dbx supported an undocumented feature
;; whereby `set $stopformat=1' reportedly produces output compatible
;; with `gud-dbx-marker-filter', which we prefer.
;; The process filter is also somewhat
;; unreliable, sometimes not spotting the markers; I don't know
;; whether there's anything that can be done about that. It would be
;; much better if SGI could be persuaded to (re?)instate the MIPS
;; -emacs flag for gdb-like output (which ought to be possible as most
;; of the communication I've had over it has been from]
;; whether there's anything that can be done about that.]
;; this filter is influenced by the xdb one rather than the gdb one
(defun gud-irixdbx-marker-filter (string)
......@@ -113,7 +113,7 @@ When the figure is finished these values should be replaced."
(defcustom ps-mode-print-function
(lambda ()
(let ((lpr-switches nil)
(lpr-command (if (memq system-type '(usg-unix-v hpux irix))
(lpr-command (if (memq system-type '(usg-unix-v hpux))
"lp" "lpr")))
"Lisp function to print current buffer as PostScript."
......@@ -117,14 +117,6 @@ typedef bool bool_bf;
#undef HAVE_RINT
#endif /* HPUX */
#ifdef IRIX6_5
#ifdef emacs
char *_getpty();
#define INET6 /* Needed for struct sockaddr_in6. */
#undef HAVE_GETADDRINFO /* IRIX has getaddrinfo but not struct addrinfo. */
#endif /* IRIX6_5 */
#ifdef MSDOS
#ifndef __DJGPP__
You lose; /* Emacs for DOS must be compiled with DJGPP */
......@@ -2419,8 +2419,8 @@ Special values:
`ms-dos' compiled as an MS-DOS application.
`windows-nt' compiled as a native W32 application.
`cygwin' compiled using the Cygwin library.
Anything else (in Emacs 24.1, the possibilities are: aix, berkeley-unix,
hpux, irix, usg-unix-v) indicates some sort of Unix system. */);
Anything else (in Emacs 26, the possibilities are: aix, berkeley-unix,
hpux, usg-unix-v) indicates some sort of Unix system. */);
Vsystem_type = intern_c_string (SYSTEM_TYPE);
/* See for the possible SYSTEM_TYPEs. */
......@@ -253,14 +253,7 @@ get_boot_time_1 (const char *filename, bool newest)
struct utmp ut, *utp;
if (filename)
/* On some versions of IRIX, opening a nonexistent file name
is likely to crash in the utmp routines. */
if (faccessat (AT_FDCWD, filename, R_OK, AT_EACCESS) != 0)
utmpname (filename);
utmpname (filename);
setutent ();
......@@ -6464,7 +6464,7 @@ process_send_signal (Lisp_Object process, int signo, Lisp_Object current_group,
#if defined (VSWTCH) && !defined (PREFER_VSUSP)
#ifdef VSWTCH
sig_char = &t.c_cc[VSWTCH];
sig_char = &t.c_cc[VSUSP];
......@@ -461,29 +461,6 @@ unexec (const char *new_name, const char *old_name)
|| !strcmp (old_section_names + new_shdr->sh_name, ".sdata")
|| !strcmp (old_section_names + new_shdr->sh_name, ".lit4")
|| !strcmp (old_section_names + new_shdr->sh_name, ".lit8")
/* The conditional bit below was in Oliva's original code
(1999-08-25) and seems to have been dropped by mistake
subsequently. It prevents a crash at startup under X in
`IRIX64 6.5 6.5.17m', whether compiled on that release or
an earlier one. It causes no trouble on the other ELF
platforms I could test (Irix 6.5.15m, Solaris 8, Debian
Potato x86, Debian Woody SPARC); however, it's reported
to cause crashes under some version of GNU/Linux. It's
not yet clear what's changed in that Irix version to
cause the problem, or why the fix sometimes fails under
GNU/Linux. There's probably no good reason to have
something Irix-specific here, but this will have to do
for now. IRIX6_5 is the most specific macro we have to
test. -- fx 2002-10-01
The issue _looks_ as though it's gone away on 6.5.18m,
but maybe it's still lurking, to be triggered by some
change in the binary. It appears to concern the dynamic
loader, but I never got anywhere with an SGI support call
seeking clues. -- fx 2002-11-29. */
#ifdef IRIX6_5
|| !strcmp (old_section_names + new_shdr->sh_name, ".got")
|| !strcmp (old_section_names + new_shdr->sh_name, ".sdata1")
|| !strcmp (old_section_names + new_shdr->sh_name, ".data1"))
src = (caddr_t) old_shdr->sh_addr;
......@@ -665,9 +642,6 @@ unexec (const char *new_name, const char *old_name)
|| !strcmp (old_section_names + shdr->sh_name, ".sdata")
|| !strcmp (old_section_names + shdr->sh_name, ".lit4")
|| !strcmp (old_section_names + shdr->sh_name, ".lit8")
#ifdef IRIX6_5 /* see above */
|| !strcmp (old_section_names + shdr->sh_name, ".got")
|| !strcmp (old_section_names + shdr->sh_name, ".sdata1")
|| !strcmp (old_section_names + shdr->sh_name, ".data1"))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment