[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.

configure.ac:
 	Drop support for OSF/1.

 	Delete more IRIX stuff.

configure.ac:
runtime/mercury_conf.h.in:
runtime/mercury_thread.h:
 	Delete workarounds required when using the Digital Unix pthreads
 	library.

Mmake.common.in:
runtime/mercury_wrapper.c:
 	Delete stuff for IRIX.

README.OSF1:
 	Delete this file.

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

NEWS:
 	Announce the dropping of support for OSF/1.

Julien.

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.
  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 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
--- 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 5b6d86e..ba0dff3 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 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_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 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 */

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