[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