From 548b4763e1c3fb36517804a07f3823c8af6ee022 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Wed, 23 Feb 2011 15:03:43 +0000 Subject: [PATCH] Make -DOPENSSL_FIPSSYMS work under WIN32: run perl script when WIN32 assembly language files are created, add norunasm option to just translate and not run the assembler. --- util/fipsas.pl | 41 ++++++++++++++++++++++++++++++++--------- util/mk1mf.pl | 8 ++++++-- 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/util/fipsas.pl b/util/fipsas.pl index c6964e19cf..49cf564e5c 100644 --- a/util/fipsas.pl +++ b/util/fipsas.pl @@ -9,6 +9,14 @@ my @ARGS = @ARGV; my $top = shift @ARGS; my $target = shift @ARGS; +my $runasm = 1; + +if ($ARGS[0] eq "norunasm") + { + $runasm = 0; + shift @ARGS; + } + # HACK to disable operation if no OPENSSL_FIPSSYMS option. # will go away when tested more fully. @@ -16,12 +24,13 @@ my $enabled = 0; foreach (@ARGS) { $enabled = 1 if /-DOPENSSL_FIPSSYMS/ ; } -if ($enabled == 0) +if ($enabled == 0 && $runasm) { system @ARGS; exit $? } + # Open symbol rename file. open(IN, "$top/fips/fipssyms.h") || die "Can't open fipssyms.h"; @@ -53,18 +62,32 @@ while () { while (($from, $to) = each %edits) { - s/(\b)$from(\b)/$1$to$2/g; + s/(\b_*)$from(\b)/$1$to$2/g; } print OUT $_; } -# run assembler -system @ARGS; -my $rv = $?; +close OUT; + +if ($runasm) + { + # run assembler + system @ARGS; + + my $rv = $?; + + # restore target + unlink $target; + rename "tmptarg.s", $target; + + die "Error executing assembler!" if $rv != 0; + } +else + { + # Don't care about target + unlink "tmptarg.s"; + } + -# restore target -unlink $target; -rename "tmptarg.s", $target; -die "Error executing assembler!" if $rv != 0; diff --git a/util/mk1mf.pl b/util/mk1mf.pl index 7ace933a6b..cb104f8097 100755 --- a/util/mk1mf.pl +++ b/util/mk1mf.pl @@ -1163,10 +1163,14 @@ sub perlasm_compile_target { my($target,$source,$bname)=@_; my($ret); - $bname =~ s/(.*)\.[^\.]$/$1/; $ret ="\$(TMP_D)$o$bname.asm: $source\n"; - $ret.="\t\$(PERL) $source $asmtype \$(CFLAG) >\$\@\n\n"; + $ret.="\t\$(PERL) $source $asmtype \$(CFLAG) >\$\@\n"; + if ($cflags =~ /-DOPENSSL_FIPSSYMS/) + { + $ret .= "\t\$(PERL) util\\fipsas.pl . \$@ norunasm \$(CFLAG)\n"; + } + $ret .= "\n"; $ret.="$target: \$(TMP_D)$o$bname.asm\n"; $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm\n\n"; return($ret); -- 2.34.1