Circumnavigate Digital UNIX 4.0D miniperl core dump
Jarkko Hietaniemi [Mon, 10 May 1999 18:21:43 +0000 (18:21 +0000)]
(due to QAR 56761) (the bug has been fixed in 4.0E or better)

p4raw-id: //depot/cfgperl@3384

INSTALL
hints/dec_osf.sh

diff --git a/INSTALL b/INSTALL
index 6ba5b37..af34147 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1293,14 +1293,6 @@ ones (which ones these are depends on your system and applications)
 with "ipcrm -s SEMAPHORE_ID_HERE" or configure more semaphores to your
 system.
 
-=item miniperl coredumps in Digital UNIX 4.0D
-
-In Digital UNIX 4.0D /bin/ld has a bug that may cause the resulting
-executable (here, miniperl) dump core if shared libraries are being
-used (here, libperl.so).  A workaround is to change the -O4 in the
-ld flags to be -O0.  The solution is either to ask for a patch to
-"QAR 56761", or to upgrade to 4.0E or better.
-
 =item Miscellaneous
 
 Some additional things that have been reported for either perl4 or perl5:
index 4ab535d..fd7f479 100644 (file)
@@ -149,10 +149,19 @@ case "`uname -r`" in
 *)            if $test "X$optimize" = "X$undef"; then
                       lddlflags="$lddlflags -msym"
               else
-                      lddlflags="$lddlflags $optimize -msym"
+                 case "`sizer -v`" in
+                 *4.0D*)
+                     # QAR 56761: -O4 + .so may produce broken code,
+                     # fixed in 4.0E or better.
+                     ;;
+                 *)    
+                      lddlflags="$lddlflags $optimize"
+                     ;;
+                 esac
+                 # -msym: If using a sufficiently recent /sbin/loader,
+                 # keep the module symbols with the modules.
+                  lddlflags="$lddlflags -msym"
               fi
-               # -msym: If using a sufficiently recent /sbin/loader,
-               # keep the module symbols with the modules.
                ;;
 esac
 # Yes, the above loses if gcc does not use the system linker.