From de54c5b749b3eefb75d420840c889533a58aa342 Mon Sep 17 00:00:00 2001 From: marha Date: Wed, 24 Jul 2013 14:25:51 +0200 Subject: 64-bit compilation now compiles and runs --- openssl/.gitignore | 4 ++++ openssl/crypto/cryptlib.c | 2 +- openssl/ms/.gitignore | 4 +++- openssl/ms/do_win64a.bat | 16 ++++++++-------- openssl/util/mk1mf.pl | 18 ++++++++++++++++++ openssl/util/pl/VC-32.pl | 14 +++++++++----- 6 files changed, 43 insertions(+), 15 deletions(-) mode change 100644 => 100755 openssl/ms/do_win64a.bat (limited to 'openssl') diff --git a/openssl/.gitignore b/openssl/.gitignore index 2e7f46437..b9ac127b1 100644 --- a/openssl/.gitignore +++ b/openssl/.gitignore @@ -5,3 +5,7 @@ out32_d tmp32 tmp32_d NUL +out64 +out64_d +tmp64 +tmp64_d diff --git a/openssl/crypto/cryptlib.c b/openssl/crypto/cryptlib.c index 304c6b706..da3949fa1 100644 --- a/openssl/crypto/cryptlib.c +++ b/openssl/crypto/cryptlib.c @@ -710,7 +710,7 @@ void OPENSSL_cpuid_setup(void) * was initialized already... This is to avoid interference * with cpuid snippets in ELF .init segment. */ - OPENSSL_ia32cap_P[0] = (unsigned int)vec|(1<<10); + OPENSSL_ia32cap_P[0] = (unsigned int)((vec|(1<<10))&0xffffffff); OPENSSL_ia32cap_P[1] = (unsigned int)(vec>>32); } #endif diff --git a/openssl/ms/.gitignore b/openssl/ms/.gitignore index 68bee1575..565a468cd 100644 --- a/openssl/ms/.gitignore +++ b/openssl/ms/.gitignore @@ -3,4 +3,6 @@ libeay32.def nt.mak ntdll.mak ssleay32.def -version32.rc \ No newline at end of file +version32.rc +uptable.asm +uptable.obj diff --git a/openssl/ms/do_win64a.bat b/openssl/ms/do_win64a.bat old mode 100644 new mode 100755 index ff8b19ccf..be87fffee --- a/openssl/ms/do_win64a.bat +++ b/openssl/ms/do_win64a.bat @@ -3,17 +3,17 @@ perl util\mkfiles.pl >MINFO cmd /c "nasm -f win64 -v" >NUL: 2>&1 if %errorlevel% neq 0 goto ml64 -perl ms\uplink-x86_64.pl nasm > ms\uptable.asm -nasm -f win64 -o ms\uptable.obj ms\uptable.asm +perl ms/uplink-x86_64.pl nasm > ms/uptable.asm +nasm -f win64 -o ms/uptable.obj ms/uptable.asm goto proceed :ml64 -perl ms\uplink-x86_64.pl masm > ms\uptable.asm -ml64 -c -Foms\uptable.obj ms\uptable.asm +perl ms/uplink-x86_64.pl masm > ms/uptable.asm +ml64 -c -Foms/uptable.obj ms/uptable.asm :proceed -perl util\mk1mf.pl VC-WIN64A >ms\nt.mak -perl util\mk1mf.pl dll VC-WIN64A >ms\ntdll.mak +perl util/mk1mf.pl VC-WIN64A >ms/nt.mak +perl util/mk1mf.pl dll VC-WIN64A >ms/ntdll.mak -perl util\mkdef.pl 32 libeay > ms\libeay32.def -perl util\mkdef.pl 32 ssleay > ms\ssleay32.def +perl util/mkdef.pl 32 libeay > ms/libeay32.def +perl util/mkdef.pl 32 ssleay > ms/ssleay32.def diff --git a/openssl/util/mk1mf.pl b/openssl/util/mk1mf.pl index 21e85539e..e7534c75e 100644 --- a/openssl/util/mk1mf.pl +++ b/openssl/util/mk1mf.pl @@ -486,6 +486,22 @@ $defs.= <<"EOF"; INSTALLTOP=$INSTALLTOP OPENSSLDIR=$OPENSSLDIR +!ifdef IS64 + +!ifdef DEBUG +# The output directory for everything intersting +OUT_D=out64_d +# The output directory for all the temporary muck +TMP_D=tmp64_d +!else +# The output directory for everything intersting +OUT_D=out64 +# The output directory for all the temporary muck +TMP_D=tmp64 +!endif + +!else + !ifdef DEBUG # The output directory for everything intersting OUT_D=out32_d @@ -498,6 +514,8 @@ OUT_D=out32 TMP_D=tmp32 !endif +!endif + # Set your compiler options PLATFORM=$platform CC=$bin_dir${cc} diff --git a/openssl/util/pl/VC-32.pl b/openssl/util/pl/VC-32.pl index e6e185e89..ed5fea90d 100755 --- a/openssl/util/pl/VC-32.pl +++ b/openssl/util/pl/VC-32.pl @@ -16,7 +16,7 @@ else $crypto="libeay32"; } -$o='\\'; +$o='/'; $cp='$(PERL) util/copy.pl'; $mkdir='$(PERL) util/mkdir-p.pl'; $rm='del /Q'; @@ -43,10 +43,10 @@ if ($FLAVOR =~ /WIN64/) # considered safe to ignore. # $base_cflags= " $mf_cflag"; - my $f = $shlib || $fips ?' /MD':' /MT'; + my $f = ' /MD'; $lib_cflag='/Zl' if (!$shlib); # remove /DEFAULTLIBs from static lib - $opt_cflags=$f.' /Ox'; - $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG'; + $opt_cflags=$f.' /O2 /Ob2 /Oi /Ox /Oy /Ot /GL /Gy /GF /Zi'; + $dbg_cflags=$f.'d /RTCc /RTC1 /Od /GS /GR /Gy /GF /Zi'; $lflags="/NOLOGO /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /LTCG:STATUS"; $lflagsd="/NOLOGO /SUBSYSTEM:CONSOLE"; @@ -244,7 +244,11 @@ if (!$no_asm) win32_import_asm($mf_wp_asm, "whrlpool", \$whirlpool_asm_obj, \$whirlpool_asm_src); win32_import_asm($mf_cpuid_asm, "", \$cpuid_asm_obj, \$cpuid_asm_src); $perl_asm = 1; - $cdflags.=" -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DAES_ASM -DBN_ASM -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_BN_ASM_MONT -DMD5_ASM -DSHA1_ASM -DRMD160_ASM"; + if ($FLAVOR =~ /WIN64A/) { + $cdflags.=" -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DAES_ASM -DBN_ASM -DOPENSSL_BN_ASM_MONT -DMD5_ASM -DSHA1_ASM -DRMD160_ASM"; + } else { + $cdflags.=" -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DAES_ASM -DBN_ASM -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_BN_ASM_MONT -DMD5_ASM -DSHA1_ASM -DRMD160_ASM"; + } } if ($shlib && $FLAVOR !~ /CE/) -- cgit v1.2.3