diff --git a/.README.in b/.README.in index 2d02fabf6..dd3f948c8 100644 --- a/.README.in +++ b/.README.in @@ -67,14 +67,12 @@ platform, if there is one: README.AIX RS/6000 systems running AIX README.FreeBSD The FreeBSD version of BSD Unix on Intel x86 README.HPUX HPPA systems running HPUX - README.IRIX-5 SGI IRIX version 5.x README.Linux Linux on Intel x86 and x86_64 README.Linux-Alpha Linux on DEC Alpha README.Linux-PPC Linux on PowerPC README.Linux-m68k Linux on Motorola 68000 README.MacOS Apple Mac systems running Mac OS X README.MS-Windows Microsoft Windows - README.OSF1 DEC Alpha systems running OSF/1 version 3.x README.Solaris Solaris (SunOS) on SPARC or Intel x86. The documentation sources are in the `doc' subdirectory. The installation diff --git a/Mmake.common.in b/Mmake.common.in index c40889110..14dce70f5 100644 --- a/Mmake.common.in +++ b/Mmake.common.in @@ -62,8 +62,6 @@ USE_DLLS = @USE_DLLS@ # Specify any special flags to pass to the C compiler when creating objects # for a shared library (e.g. -fpic or -fPIC for gcc). -# For Irix 5 and Alpha/OSF, position-independent code is the default, -# so leave this blank. CFLAGS_FOR_PIC = @CFLAGS_FOR_PIC@ # Specify EXT_FOR_PIC_OBJECTS as `pic_o' if any special $(PIC) flags are @@ -76,9 +74,6 @@ EXT_FOR_PIC_OBJECTS = @EXT_FOR_PIC_OBJECTS@ # This is only used if EXT_FOR_SHARED_LIB was defined as `so' above. # This command may reference $(SO_LOCATIONS_DIR). # -# LINK_SHARED_OBJ = ld -shared # for Irix 5 -# LINK_SHARED_OBJ = gcc -assert nodefinitions -# # for SunOS 4 (completely untested) # LINK_SHARED_OBJ = gcc -shared # for Solaris etc. LINK_SHARED_OBJ = @LINK_SHARED_OBJ@ diff --git a/NEWS b/NEWS index 43ac4b2dc..306f353a5 100644 --- a/NEWS +++ b/NEWS @@ -29,7 +29,9 @@ Changes to the Mercury standard library: Changes to the Mercury compiler: -* We have removed support for IRIX. +* We have removed legacy support for the following systems: + - IRIX + - OSF/1 Changes to the extras distribution: diff --git a/README.OSF1 b/README.OSF1 deleted file mode 100644 index e70422650..000000000 --- a/README.OSF1 +++ /dev/null @@ -1,36 +0,0 @@ -The sed utility supplied with DEC OSF/1 V3.2 has a fixed limit -which causes the Mercury autoconfiguration script to fail with a -message such as: -"sed: There are too many commands for the - s%@READLINE_LIBRARIES@%-lreadline -ltermcap%g function." -The work-around is to install GNU sed. - -The dynamic loader supplied with DEC OSF/1 V3.2 has a fixed limit which -causes dynamically linked executables to fail with a segmentation -violation before main() is entered, if the shared library path is too -long. The work-around is to ensure that you do not specify a long -directory name in the `--prefix' option to `configure' when installing -Mercury (up to 24 characters long is OK, but more than that may -cause the fixed limit to be exceeded), or to upgrade to a more -recent version of the OS. - -The dynamic loader supplied with DEC OSF/1 V3.2 fails to conform to the -semantics mandated by the ANSI/ISO C standard, and this breaks the -Mercury profiler. The symptom is that the profiler will abort with a -message such as "Software Error: map__lookup failed". The work-around -is to link the program that is being profiled statically, or to run the -program with the environment variable LD_BIND_NOW set to a non-null -value. - -For certain (rare) combinations of program and compilation options, the -dynamic loader supplied with DEC OSF/1 V3.2 will abort execution of the -compiled program with a message such as "/sbin/loader: Fatal Error: -lazy_text_resolve: symbol _entry_mercury__io__write_string_3_0 should -not have any relocation entry". We don't know the exact cause of this, -but we suspect that it is a bug in the dynamic loader. The work-around -is to link the program in question statically, or to run the program -with the environment variable LD_BIND_NOW set to a non-null value. - -Some versions of GNU strip do not work with Compaq Tru64 UNIX V5.1. -If you get a message like "bash: Cannot allocate space for bss" when -running a program, use the system's strip command, not GNU strip. diff --git a/configure.ac b/configure.ac index 5b6d86e53..ba0dff3dd 100644 --- a/configure.ac +++ b/configure.ac @@ -2457,11 +2457,6 @@ AC_SUBST(MR_DARWIN_SETJMP_WORKAROUND) # doesn't work with non-local gotos, since we jump directly into the # middle of a function. # -# For Irix 5, gcc labels don't work with shared libraries, -# so if we're using gcc labels, we need to use non-shared libraries, -# which means passing -non_shared and -mno-abicalls and also setting -# LIBRARY_PATH. -# # For x86, gcc global registers only work with -fno-builtin # and -fno-omit-frame-pointer. # @@ -3010,33 +3005,17 @@ esac #-----------------------------------------------------------------------------# -# Figure out which flavour of pthreads to use, since none of the -# implementations seem to be exactly the same -case "$host" in - alpha*-dec-osf*) - mercury_cv_use_digital_unix_threads=yes - ;; - - *) - mercury_cv_use_digital_unix_threads=no - ;; -esac - -if test $mercury_cv_use_digital_unix_threads = yes; then - AC_DEFINE(MR_DIGITAL_UNIX_PTHREADS) -fi - # Figure out what options we need to pass to the C compiler for multithreading. # We may need to pass different options to tell (a) the Mercury runtime and # library (b) the Boehm collector and (c) the C library that they need to be # thread-safe. # -# For Linux, Irix, Solaris, and HPUX, +# For Linux, Solaris, and HPUX, # the thread-enabled version of the Boehm # collector contains a reference to dlopen(), so # if threads are enabled, we need to link with the # appropriate extra library for that (-ldl on Linux -# and Solaris, -lrt on HPUX, and nothing on Irix). +# and Solaris and -lrt on HPUX). # XXX That should only be done if conservative GC # is enabled. # @@ -3127,16 +3106,6 @@ case "$host" in THREAD_LIBS="" ;; -### # The threads stuff on Digital Unix (OSF) is not yet enabled because -### # the Boehm garbage collector doesn't support threads on that platform -### # XXX probably we should enable it but report an error if you try to -### # use an *.par.gc* grade -### # XXX is this fixed in the Boehm collector now? -### *-osf*) -### CFLAGS_FOR_THREADS="" -### THREAD_LIBS="-lpthreads -lmach -lc_r" -### ;; - ### # The threads stuff on HPUX is not yet enabled because ### # we don't have an HPUX box to test it on. ### *hpux*) @@ -4415,35 +4384,6 @@ case "$host" in EXT_FOR_SHARED_LIB=so ;; - alpha*-dec-osf*) - AC_MSG_RESULT(yes) - if test "$GCC_PROG" != ""; then - # use gcc to link shared objects - LINK_SHARED_OBJ="$GCC_PROG -shared \ - -Wl,-O3,-update_registry,\$(SO_LOCATIONS_DIR)so_locations" - LINK_SHARED_OBJ_SH="gcc -shared \ - -Wl,-O3,-update_registry,\${SO_LOCATIONS_DIR}so_locations" - ERROR_UNDEFINED="-Wl,-error_unresolved" - EXE_RPATH_OPT="-Wl,-rpath," - SHLIB_RPATH_OPT="-Wl,-rpath," - else - # use cc to link shared objects - LINK_SHARED_OBJ="cc -shared \ - -update_registry \$(SO_LOCATIONS_DIR)so_locations" - LINK_SHARED_OBJ_SH="cc -shared \ - -update_registry \${SO_LOCATIONS_DIR}so_locations" - ERROR_UNDEFINED="-error_unresolved" - EXE_RPATH_OPT="-rpath " - SHLIB_RPATH_OPT="-rpath " - fi - EXE_RPATH_SEP=":" - SHLIB_RPATH_SEP=":" - EXT_FOR_SHARED_LIB=so - # -fpic not needed on Alpha/OSF, since it is the default - CFLAGS_FOR_PIC= - EXT_FOR_PIC_OBJECTS=o - EXT_FOR_LINK_WITH_PIC_OBJECTS=o - ;; *-cygwin*) # disabled for now, since it hasn't been tested # xxx_MSG_RESULT(yes) @@ -4695,13 +4635,6 @@ case "$FULLARCH" in ;; esac ;; - alpha*-dec-osf*) - case "$COMPILER" in - cc) - LD_STATIC_FLAGS=-non_shared - ;; - esac - ;; *-sun-solaris*) case "$COMPILER" in cc) diff --git a/runtime/mercury_conf.h.in b/runtime/mercury_conf.h.in index d8b8560df..ed97fbaa2 100644 --- a/runtime/mercury_conf.h.in +++ b/runtime/mercury_conf.h.in @@ -424,17 +424,12 @@ /* ** Configuration parameters for multithreaded execution support. ** -** MR_DIGITAL_UNIX_PTHREADS is used to distinguish places where -** Digital Unix doesn't conform to the letter of the Posix standard -** for Pthreads. -** ** MR_THREAD_LOCAL_STORAGE is defined if the thread-local storage extension ** is supported. That is, the compiler extends the C language with the ** `__thread' specifier. ** ** MR_PTHREADS_WIN32 is defined if we are using the pthreads-win32 library. */ -#undef MR_DIGITAL_UNIX_PTHREADS #undef MR_THREAD_LOCAL_STORAGE #undef MR_PTHREADS_WIN32 diff --git a/runtime/mercury_thread.h b/runtime/mercury_thread.h index 51965db3f..92df39da7 100644 --- a/runtime/mercury_thread.h +++ b/runtime/mercury_thread.h @@ -17,15 +17,9 @@ #include #include /* POSIX semaphores */ - #if defined(MR_DIGITAL_UNIX_PTHREADS) - #define MR_MUTEX_ATTR pthread_mutexattr_default - #define MR_COND_ATTR pthread_condattr_default - #define MR_THREAD_ATTR pthread_attr_default - #else - #define MR_MUTEX_ATTR NULL - #define MR_COND_ATTR NULL - #define MR_THREAD_ATTR NULL - #endif + #define MR_MUTEX_ATTR NULL + #define MR_COND_ATTR NULL + #define MR_THREAD_ATTR NULL typedef pthread_t MercuryThread; typedef pthread_key_t MercuryThreadKey; @@ -150,18 +144,8 @@ MR_null_thread(void); #define MR_OBTAIN_GLOBAL_LOCK(where) MR_LOCK(&MR_global_lock, (where)) #define MR_RELEASE_GLOBAL_LOCK(where) MR_UNLOCK(&MR_global_lock, (where)) - #if defined(MR_DIGITAL_UNIX_PTHREADS) - #define MR_GETSPECIFIC(key) \ - ({ \ - pthread_addr_t gstmp; \ - pthread_getspecific((key), &gstmp); \ - (void *) gstmp; \ - }) - #define MR_KEY_CREATE pthread_keycreate - #else - #define MR_GETSPECIFIC(key) pthread_getspecific((key)) - #define MR_KEY_CREATE pthread_key_create - #endif + #define MR_GETSPECIFIC(key) pthread_getspecific((key)) + #define MR_KEY_CREATE pthread_key_create typedef struct { void (*func)(void *); diff --git a/runtime/mercury_wrapper.c b/runtime/mercury_wrapper.c index 23856bbe9..f9c09ca86 100644 --- a/runtime/mercury_wrapper.c +++ b/runtime/mercury_wrapper.c @@ -407,10 +407,8 @@ MR_TypeStat MR_type_stat_c_compare; ** - The Mercury runtime finalization, namely mercury_runtime_terminate(), ** calls io__finalize_state/2 in the Mercury library. ** -** But, to enable Quickstart of shared libraries on Irix 5, -** and in general to avoid various other complications -** with shared libraries and/or Windows DLLs, -** we need to make sure that we don't have any undefined +** In general, to avoid various complications with shared libraries and/or +** Windows DLLs, we need to make sure that we don't have any undefined ** external references when building the shared libraries. ** Hence the statically linked init file saves the addresses of those ** procedures in the following global variables.