Commit 38bae7ba authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

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.
parent d47691ec
Loading
Loading
Loading
Loading

util/fipsas.pl

0 → 100644
+57 −0
Original line number Diff line number Diff line

# 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;