>> With Visual Studio 10 x64, I get the following error at configure time: >> >> ... >> D:\build.ntx64vs10>perl ms\uplink-x86_64.pl masm 1>ms\uptable.asm >> D:\build.ntx64vs10>ml64 -c -Foms\uptable.obj ms\uptable.asm >> Assembling: ms\uptable.asm >> ms\uptable.asm(356) : error A2088:END directive required at end of file >> ms\uptable.asm(356) : fatal error A1010:unmatched block nesting : >> _lazy18 >> Microsoft (R) Macro Assembler (x64) Version 10.00.40219.01 >> Copyright (C) Microsoft Corporation. All rights reserved. >> D:\build.ntx64vs10>perl util\mk1mf.pl VC-WIN64A 1>ms\nt.mak >> ... > >Which Perl? There was somewhat similar failure reported in mixture of >different run-time environments like native Windows, MSYS, Cygwin. If >it's not "native" Perl like ActiveState, then switch to "native" one. >Otherwise it might be interference with antivirus, most likely Windows >Defender. If you at his point can run 'ml64 -c -Foms\uptable.obj >ms\uptable.asm' manually from command prompt, then switch off your >antivirus. The fact that it works with other compilers is >circumstantial, this kind of failure is about delicate timing.
I'm using: >perl -v This is perl 5, version 12, subversion 4 (v5.12.4) built for MSWin32-x86-multi-thread (with 9 registered patches, see perl -V for more detail) Copyright 1987-2010, Larry Wall Binary build 1205 [294981] provided by ActiveState http://www.ActiveState.com Built Jun 20 2011 18:35:25 I'm not running any antivirus software, including WIndows Defender (I explicitly disabled it). But your mention of "delicate timing" prompted me to look at the ms/uplink-x86_64.pl script more closely and I think I figured out the problem: buffering. It appears that, on windows at least, pipes do not always get flushed when they are closed. I verified this was happening by modifying ms/do_win64a.bat to run: :ml64 perl ms\uplink-x86_64.pl masm > ms\uptable.asm TYPE MS\UPTABLE.ASM ml64 -c -Foms\uptable.obj ms\uptable.asm and verified that indeed, the file was sometimes truncated. My proposed patch, with which I can no longer reproduce the problem: --- ms/uplink-x86_64.pl.~1~ 2008-12-19 02:17:29.000000000 -0800 +++ ms/uplink-x86_64.pl 2012-05-21 15:22:37.555669600 -0700 @@ -3,6 +3,8 @@ $output=shift; $0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; open STDOUT,"| $^X ${dir}../crypto/perlasm/x86_64-xlate.pl $output"; +# disable stdio buffering, which isn't always flushed to pipes. +$| = 1; push(@INC,"${dir}."); require "uplink-common.pl"; ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List openssl-dev@openssl.org Automated List Manager majord...@openssl.org