fipsld, incore: switch to new cross-compile support.
authorAndy Polyakov <appro@openssl.org>
Sun, 6 Nov 2011 23:22:58 +0000 (23:22 +0000)
committerAndy Polyakov <appro@openssl.org>
Sun, 6 Nov 2011 23:22:58 +0000 (23:22 +0000)
fips/fipsld
util/incore

index 6184e20..62565fd 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh -e
 #
-# Copyright (c) 2005-2007 The OpenSSL Project.
+# Copyright (c) 2005-2011 The OpenSSL Project.
 #
 # Depending on output file name, the script either embeds fingerprint
 # into libcrypto.so or static application. "Static" refers to static
@@ -127,12 +127,15 @@ lib*|*.dll)       # must be linking a shared lib...
                "${PREMAIN_C}" \
                ${_WL_PREMAIN} "$@"
 
-       # generate signature...
-       if [ -z "${FIPS_SIG}" ]; then
-               SIG=`"${PREMAIN_DSO}" "${TARGET}"`
-       else
-               SIG=`"${FIPS_SIG}" -dso "${TARGET}"`
+       if [ "x${FIPS_SIG}" != "x" ]; then
+               # embed signature
+               "${FIPS_SIG}" "${TARGET}"
+               [ $? -ne 42 ] && exit $?
        fi
+
+       # generate signature...
+       SIG=`"${PREMAIN_DSO}" "${TARGET}"`
+
        /bin/rm -f "${TARGET}"
        if [ -z "${SIG}" ]; then
           echo "unable to collect signature"; exit 1
@@ -172,12 +175,15 @@ lib*|*.dll)       # must be linking a shared lib...
                "${PREMAIN_C}" \
                ${_WL_PREMAIN} "$@"
 
-       # generate signature...
-       if [ -z "${FIPS_SIG}" ]; then
-               SIG=`"${TARGET}"`
-       else
-               SIG=`"${FIPS_SIG}" -exe "${TARGET}"`
+       if [ "x${FIPS_SIG}" != "x" ]; then
+               # embed signature
+               "${FIPS_SIG}" "${TARGET}"
+               [ $? -ne 42 ] && exit $?
        fi
+
+       # generate signature...
+       SIG=`"${TARGET}"`
+
        /bin/rm -f "${TARGET}"
        if [ -z "${SIG}" ]; then
           echo "unable to collect signature"; exit 1
index 883f63f..e6e6ecf 100755 (executable)
@@ -34,6 +34,7 @@
        @e_ident{magic,class,data,version,osabi,abiver,pad}=
                unpack("a4C*",$elf);
 
+       $!=42;          # signal fipsld to revert to two-step link
        die "not ELF file" if ($e_ident{magic} ne chr(0177)."ELF");
 
        my $elf_bits   = $e_ident{class}*32;    # 32 or 64
@@ -377,7 +378,7 @@ $FIPS_text_endX             = $exe->Lookup("FIPS_text_endX");
 if (!$legacy_mode) {
     if (!$FIPS_text_startX || !$FIPS_text_endX) {
        print STDERR "@ARGV[$#ARGV] is not cross-compiler aware.\n";
-       exit(1);
+       exit(42);       # signal fipsld to revert to two-step link
     }
 
     $FINGERPRINT_ascii_value