Add conditional unit testing interface.
[openssl.git] / util / incore
index ee495ee352071c4bf7a80eb7bf63b5285d895528..e6e6ecfd8928158a3a7ffda3daae51c5f104795a 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env perl
 #
-# Copyrifgr (c) 2011 The OpenSSL Project.
+# Copyright (c) 2011 The OpenSSL Project.
 #
 # The script embeds fingerprint into ELF executable object, either
 # application binary or shared library.
@@ -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
@@ -370,17 +371,23 @@ $FIPS_rodata_start        = $exe->Lookup("FIPS_rodata_start")             or die;
 $FIPS_rodata_end       = $exe->Lookup("FIPS_rodata_end")               or die;
 $FIPS_signature                = $exe->Lookup("FIPS_signature")                or die;
 
-if (!$legacy_mode) {
-    $FIPS_text_start   = $exe->Lookup("FIPS_text_startX");
-    $FIPS_text_end     = $exe->Lookup("FIPS_text_endX");
+# new cross-compile support
+$FIPS_text_startX      = $exe->Lookup("FIPS_text_startX");
+$FIPS_text_endX                = $exe->Lookup("FIPS_text_endX");
 
-    if (!$FIPS_text_start || !$FIPS_text_end) {
+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
                        = $exe->Lookup("FINGERPRINT_ascii_value")       or die;
+
+}
+if ($FIPS_text_startX && $FIPS_text_endX) {
+    $FIPS_text_start = $FIPS_text_startX;
+    $FIPS_text_end   = $FIPS_text_endX;
 }
 
 sysopen(FD,@ARGV[$#ARGV],$legacy_mode?0:2) or die "$!";        # 2 is read/write