Experimental perl script to edit assembly language source files,
call the assembler, then restore original file. This makes OPENSSL_FIPSSYMS work for assembly language builds.
This commit is contained in:
parent
d47691ecfe
commit
38bae7baa5
57
util/fipsas.pl
Normal file
57
util/fipsas.pl
Normal file
@ -0,0 +1,57 @@
|
||||
|
||||
# FIPS assembly language preprocessor
|
||||
# Renames all symbols in the file to
|
||||
# their modified fips versions.
|
||||
|
||||
|
||||
my @ARGS = @ARGV;
|
||||
|
||||
my $top = shift @ARGS;
|
||||
my $target = shift @ARGS;
|
||||
|
||||
# Open symbol rename file.
|
||||
open(IN, "$top/fips/fipssyms.h") || die "Can't open fipssyms.h";
|
||||
|
||||
# Skip to assembler symbols
|
||||
while (<IN>)
|
||||
{
|
||||
last if (/assembler/)
|
||||
}
|
||||
|
||||
# Store all renames.
|
||||
while (<IN>)
|
||||
{
|
||||
if (/^#define\s+(\w+)\s+(\w+)\b/)
|
||||
{
|
||||
$edits{$1} = $2;
|
||||
}
|
||||
}
|
||||
|
||||
my ($from, $to);
|
||||
|
||||
#rename target temporarily
|
||||
rename($target, "tmptarg.s") || die "Can't rename $target\n";
|
||||
|
||||
#edit target
|
||||
open IN,"tmptarg.s";
|
||||
open OUT, ">$target";
|
||||
|
||||
while (<IN>)
|
||||
{
|
||||
while (($from, $to) = each %edits)
|
||||
{
|
||||
s/(\b)$from(\b)/$1$to$2/g;
|
||||
}
|
||||
print OUT $_;
|
||||
}
|
||||
# run assembler
|
||||
system @ARGS;
|
||||
|
||||
my $rv = $?;
|
||||
|
||||
# restore target
|
||||
unlink $target;
|
||||
rename "tmptarg.s", $target;
|
||||
|
||||
die "Error executing assembler!" if $rv != 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user