[m-rev.] for review: drop support for OSF/1

Julien Fischer jfischer at opturion.com
Mon Jun 16 15:05:09 AEST 2014

Drop support for OSF/1.

 	Drop support for OSF/1.

 	Delete more IRIX stuff.

 	Delete workarounds required when using the Digital Unix pthreads

 	Delete stuff for IRIX.

 	Delete this file.

 	Delete the pointers to the readme files for IRIX and OSF/1.

 	Announce the dropping of support for OSF/1.


diff --git a/.README.in b/.README.in
index 2d02fab..dd3f948 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 c408891..14dce70 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.

  # Specify EXT_FOR_PIC_OBJECTS as `pic_o' if any special $(PIC) flags are
  # 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.

diff --git a/NEWS b/NEWS
index 43ac4b2..306f353 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 e704226..0000000
+++ /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
-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 5b6d86e..ba0dff3 100644
--- a/configure.ac
+++ b/configure.ac
  # 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
  # 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
-        ;;
-if test $mercury_cv_use_digital_unix_threads = yes; then
  # 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

-### # 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*)
-###     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

-    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=
-        ;;
          # disabled for now, since it hasn't been tested
          # xxx_MSG_RESULT(yes)
@@ -4695,13 +4635,6 @@ case "$FULLARCH" in
-    alpha*-dec-osf*)
-        case "$COMPILER" in
-            cc)
-                LD_STATIC_FLAGS=-non_shared
-                ;;
-        esac
-        ;;
          case "$COMPILER" in
diff --git a/runtime/mercury_conf.h.in b/runtime/mercury_conf.h.in
index d8b8560..ed97fba 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_PTHREADS_WIN32

diff --git a/runtime/mercury_thread.h b/runtime/mercury_thread.h
index 51965db..92df39d 100644
--- a/runtime/mercury_thread.h
+++ b/runtime/mercury_thread.h
@@ -17,15 +17,9 @@
    #include <pthread.h>
    #include <semaphore.h> /* POSIX semaphores */

-    #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))

-    #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 23856bb..f9c09ca 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.

More information about the reviews mailing list