Make -DOPENSSL_FIPSSYMS work for assembly language builds.
authorDr. Stephen Henson <steve@openssl.org>
Thu, 17 Feb 2011 19:03:52 +0000 (19:03 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Thu, 17 Feb 2011 19:03:52 +0000 (19:03 +0000)
CHANGES
Makefile.fips
Makefile.org
util/fipsas.pl

diff --git a/CHANGES b/CHANGES
index 99172ad..e1cbe37 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,8 +6,9 @@
 
   *) Add experimental option FIPSSYMS to give all symbols in
      fipscanister.o and FIPS or fips prefix. This will avoid
-     conflicts with future versions of OpenSSL. Only works for
-     no-asm at present.
+     conflicts with future versions of OpenSSL. Add perl script
+     util/fipsas.pl to preprocess assembly language source files
+     and rename any affected symbols.
      [Steve Henson]
 
   *) Add selftest checks and algorithm block of non-fips algorithms in
index 2344a58..f8307cb 100644 (file)
@@ -78,7 +78,7 @@ LIBDIR=lib
 # dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC
 # gcc, then the driver will automatically translate it to -xarch=v8plus
 # and pass it down to assembler.
-AS=$(CC) -c
+#AS=$(CC) -c
 ASFLAG=$(CFLAG)
 
 # For x86 assembler: Set PROCESSOR to 386 if you want to support
@@ -205,7 +205,7 @@ CLEARENV=   TOP= && unset TOP $${LIB+LIB} $${LIBS+LIBS}     \
 
 BUILDENV=      PLATFORM='$(PLATFORM)' PROCESSOR='$(PROCESSOR)' \
                CC='$(CC)' CFLAG='$(CFLAG)'                     \
-               AS='$(CC)' ASFLAG='$(CFLAG) -c'                 \
+               ASFLAG='$(CFLAG) -c'                    \
                AR='$(AR)' NM='$(NM)' RANLIB='$(RANLIB)'        \
                CROSS_COMPILE='$(CROSS_COMPILE)'        \
                PERL='$(PERL)' ENGDIRS='$(ENGDIRS)'             \
@@ -367,6 +367,11 @@ build_crypto:
        else \
                ARX='${AR}' ; \
        fi ; export ARX ; \
+       if [ $(FIPSCANISTERINTERNAL) = "y" ]; then \
+               AS='$(PERL) $${TOP}/util/fipsas.pl $${TOP} $${<} $(CC)' ; \
+       else \
+               AS='$(CC) -c' ; \
+       fi ; export AS ; \
                dir=crypto; target=all; $(BUILD_ONE_CMD)
 build_ssl:
        @dir=ssl; target=all; $(BUILD_ONE_CMD)
index 09cb9a0..deaf792 100644 (file)
@@ -78,7 +78,7 @@ LIBDIR=lib
 # dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC
 # gcc, then the driver will automatically translate it to -xarch=v8plus
 # and pass it down to assembler.
-AS=$(CC) -c
+#AS=$(CC) -c
 ASFLAG=$(CFLAG)
 
 # For x86 assembler: Set PROCESSOR to 386 if you want to support
@@ -205,7 +205,7 @@ CLEARENV=   TOP= && unset TOP $${LIB+LIB} $${LIBS+LIBS}     \
 
 BUILDENV=      PLATFORM='$(PLATFORM)' PROCESSOR='$(PROCESSOR)' \
                CC='$(CC)' CFLAG='$(CFLAG)'                     \
-               AS='$(CC)' ASFLAG='$(CFLAG) -c'                 \
+               ASFLAG='$(CFLAG) -c'                    \
                AR='$(AR)' NM='$(NM)' RANLIB='$(RANLIB)'        \
                CROSS_COMPILE='$(CROSS_COMPILE)'        \
                PERL='$(PERL)' ENGDIRS='$(ENGDIRS)'             \
@@ -367,6 +367,11 @@ build_crypto:
        else \
                ARX='${AR}' ; \
        fi ; export ARX ; \
+       if [ $(FIPSCANISTERINTERNAL) = "y" ]; then \
+               AS='$(PERL) $${TOP}/util/fipsas.pl $${TOP} $${<} $(CC) -c' ; \
+       else \
+               AS='$(CC) -c' ; \
+       fi ; export AS ; \
                dir=crypto; target=all; $(BUILD_ONE_CMD)
 build_ssl:
        @dir=ssl; target=all; $(BUILD_ONE_CMD)
index cd8b8c0..c6964e1 100644 (file)
@@ -9,6 +9,19 @@ my @ARGS = @ARGV;
 my $top = shift @ARGS;
 my $target = shift @ARGS;
 
+# HACK to disable operation if no OPENSSL_FIPSSYMS option.
+# will go away when tested more fully.
+
+my $enabled = 0;
+
+foreach (@ARGS) { $enabled = 1 if /-DOPENSSL_FIPSSYMS/ ; }
+
+if ($enabled == 0)
+       {
+       system @ARGS;
+       exit $?
+       }
+
 # Open symbol rename file.
 open(IN, "$top/fips/fipssyms.h") || die "Can't open fipssyms.h";