X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=util%2Fincore;h=bb765b1966bd0bba1f14e4cabca072a41dcaf36f;hp=883f63ff563bec5e55859ca6787070fc822291c6;hb=4ec36aff2a3c221b640dafa56ac838312e6724f4;hpb=f7eb0ab9acf176519195576d7a7ff5b4e414eda7 diff --git a/util/incore b/util/incore index 883f63ff56..bb765b1966 100755 --- a/util/incore +++ b/util/incore @@ -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,11 +378,11 @@ $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 - = $exe->Lookup("FINGERPRINT_ascii_value") or die; + = $exe->Lookup("FINGERPRINT_ascii_value"); } if ($FIPS_text_startX && $FIPS_text_endX) { @@ -438,9 +439,12 @@ $fingerprint = FIPS_incore_fingerprint(); if ($legacy_mode) { print unpack("H*",$fingerprint); -} else { +} elsif (defined($FINGERPRINT_ascii_value)) { seek(FD,$FINGERPRINT_ascii_value->{st_offset},0) or die "$!"; print FD unpack("H*",$fingerprint) or die "$!"; +} else { + seek(FD,$FIPS_signature->{st_offset},0) or die "$!"; + print FD $fingerprint or die "$!"; } close (FD);