[openssl-users] FIPS compile issue with Perl on Windows

Tristan Leask Tristan.Leask at enghouse.com
Mon Apr 18 15:01:22 UTC 2016


Hi All,

I am currently trying to setup an automated build process for a cloned copy of the code.  I can run through the process manually by issuing all the commands required from a command line without issue.  If I then take all these commands and put them into a CI job using Jenkins, I then see the following type of error...
set ASM=ml64 /c /Cp /Cx /Zi
	perl crypto\modes\asm\ghash-x86_64.pl tmp32dll\ghash-x86_64.asm
	perl util\fipsas.pl . tmp32dll\ghash-x86_64.asm norunasm /MD /Ox -DOPENSSL_FIPSCANISTER -DOPENSSL_THREADS  -DDSO_WIN32 -W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DOPENSSL_USE_APPLINK -I. -DOPENSSL_NO_RC5 -DOPENSSL_NO_MD2 -DOPENSSL_NO_KRB5 -DOPENSSL_FIPS -DOPENSSL_NO_JPAKE -DOPENSSL_NO_STATIC_ENGINE
	ml64 /c /Cp /Cx /Zi /Fotmp32dll\ghash-x86_64.obj tmp32dll\ghash-x86_64.asm
 Assembling: tmp32dll\ghash-x86_64.asm
tmp32dll\ghash-x86_64.asm(868
tmp32dll\ghash-x86_64.asm(868) : error A2008:syntax errortmp32dll\ghash-x86_64.asm(1012)e
tmp32dll\ghash-x86_64.asm(1012) : fatal error A1010:unmatched block nesting : gcm_gMicrosoft (R) Macro Assembler (x64) Version 14.00.23026.0
Copyright (C) Microsoft Corporation.  All rights reserved.

NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\ml64.EXE"' : return code '0x1'

I have done some digging and I am sure I am running into the issue discussed here...
https://rt.openssl.org/Ticket/Display.html?id=2963&user=guest&pass=guest

This is to do with Perl not being able to flush the STDOUT pipe to disk fast enough before the ml compiler tries to pick the ASM file up.

In the link mentioned, it is talked about modifying the perl script to change how STDOUT works, however when you are compiling FIPS you aren't meant to modify the code shipped in the tarball, so how does one work around this issue apart from just compiling the code manually all the time?

I am running Visual Studio 2015 and ActivePerl-5.22.1.2201-MSWin32-x64-299574, and I am trying to compile openssl-1.0.2g and openssl-fips-2.0.12.

Thanks



More information about the openssl-users mailing list