tru64: poison stack, write protect string constants
Jarkko Hietaniemi [Sat, 12 Jan 2008 03:27:10 +0000 (05:27 +0200)]
Message-Id: <200801120127.m0C1RAZ6088857@kosh.hut.fi>

p4raw-id: //depot/perl@32966

hints/dec_osf.sh

index 4c18200..510537b 100644 (file)
@@ -518,6 +518,27 @@ case "$LD_LIBRARY_PATH" in
 * ) export LD_LIBRARY_PATH ;;
 esac
 
+# Enforce strict data.
+case "$isgcc" in
+gcc)   ;;
+*)     # -trapuv poisons uninitialized stack with
+       #  0xfff58005fff58005 which is as a pointer a segmentation fault and
+       #  as a floating point a signaling NaN.  As integers/longs that causes
+       #  no traps but at least it is not zero.
+       # -readonly_strings moves string constants into read-only section
+       #  which hopefully means that modifying them leads into segmentation
+       #  faults.
+       #
+       for i in -trapuv -readonly_strings
+       do
+               case "$ccflags" in
+               *$i*) ;;
+               *) ccflags="$ccflags $i" ;;
+               esac
+       done
+       ;;
+esac
+
 #
 # Unset temporary variables no more needed.
 #