]> granicus.if.org Git - openssl/commitdiff
linux-ppc: make it more robust [from HEAD].
authorAndy Polyakov <appro@openssl.org>
Sun, 21 Oct 2012 18:25:29 +0000 (18:25 +0000)
committerAndy Polyakov <appro@openssl.org>
Sun, 21 Oct 2012 18:25:29 +0000 (18:25 +0000)
config
crypto/ppccap.c

diff --git a/config b/config
index b7344d18e5ab997a53ec45a33b3284225c806432..9d1e36d99fa75ccab46a688e15a9df745474c9f0 100755 (executable)
--- a/config
+++ b/config
@@ -587,13 +587,20 @@ case "$GUESSOS" in
        fi
        ;;
   ppc64-*-linux2)
-       echo "WARNING! If you wish to build 64-bit library, then you have to"
-       echo "         invoke './Configure linux-ppc64' *manually*."
-       if [ "$TEST" = "false" -a -t 1 ]; then
-           echo "         You have about 5 seconds to press Ctrl-C to abort."
-           (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
+       if [ -z "$KERNEL_BITS" ]; then
+           echo "WARNING! If you wish to build 64-bit library, then you have to"
+           echo "         invoke './Configure linux-ppc64' *manually*."
+           if [ "$TEST" = "false" -a -t 1 ]; then
+               echo "         You have about 5 seconds to press Ctrl-C to abort."
+               (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
+           fi
+       fi
+       if [ "$KERNEL_BITS" = "64" ]; then
+           OUT="linux-ppc64"
+       else
+           OUT="linux-ppc"
+           (echo "__LP64__" | gcc -E -x c - 2>/dev/null | grep "^__LP64__" 2>&1 > /dev/null) || options="$options -m32"
        fi
-       OUT="linux-ppc"
        ;;
   ppc-*-linux2) OUT="linux-ppc" ;;
   mips64*-*-linux2)
index f71ba66aa38282fb2ec6884f791ee80083d0c73f..531f1b3be84005d74075e0445b198f42da13b87d 100644 (file)
@@ -4,6 +4,9 @@
 #include <setjmp.h>
 #include <signal.h>
 #include <unistd.h>
+#ifdef __linux
+#include <sys/utsname.h>
+#endif
 #include <crypto.h>
 #include <openssl/bn.h>
 
@@ -102,6 +105,10 @@ void OPENSSL_cpuid_setup(void)
 
        if (sizeof(size_t)==4)
                {
+#ifdef __linux
+               struct utsname uts;
+               if (uname(&uts)==0 && strcmp(uts.machine,"ppc64")==0)
+#endif
                if (sigsetjmp(ill_jmp,1) == 0)
                        {
                        OPENSSL_ppc64_probe();