Re: Win 64a dynamic link library build was unsuccessful using beta6

2005-07-03 Thread Andy Polyakov

bss_file.obj : error LNK2001: unresolved external symbol OPENSSL_UplinkTable
b_dump.obj : error LNK2001: unresolved external symbol OPENSSL_UplinkTable

So as you adviced I tried the following:


perl ms/uplink.pl win64a  uplink.asm
ml64 -c uplink.asm
add it to APP_EX_OBJ in ntdll.mak file.


Still unsuccessful to compile:


It's called unsuccessful to link:-)


   Creating library out32dll\libeay32.lib and object out32dll\libeay32.exp
uplink.obj : error LNK2019: unresolved external symbol OPENSSL_Uplink


Oh! My fault! There is ms/uplink.c, which also needs to be compiled [and 
it should be compiled?] and linked, so that instructions should have been:


- perl ms/uplink.pl win64a  uptable.asm
- ml64 -c uptable.asm
- make sure *both* uplink.obj and uptable.obj are listed in APP_EX_OBJ 
in .mak file


A.
__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   [EMAIL PROTECTED]


Re: Error in July releases of Openssl 0.9.7

2005-07-03 Thread Andy Polyakov

The previews versions have an error.

They do not recognize Certs in Apache-SSL.  


The problems turns up in 20050701 .


Are you sure that not earlier? The closest change that might affect 
certificate look-ups is dated 23rd, to be specific 
http://cvs.openssl.org/chngview?cn=14114. The new code is buggy! As it 
is now dir variable can be used uninitialized and it appears to me 
there're couple of curly braces missing... This affects all branches! A.



__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   [EMAIL PROTECTED]


Re: Win 64a dynamic link library build was unsuccessful using beta6

2005-07-03 Thread Matyas Majzik
Hi!

First of all I figured it out that i should use SHLIB_EX_OBJ not
APP_EX_OBJ :))

Second if I add both uplink.obj and uptable.obj to SHLIB_EX_OBJ then I
cannot link libeay32.dll:

link /nologo /subsystem:console /opt:ref bufferoverflowU.lib
/dll /out:o
ut32dll\libeay32.dll /def:ms/LIBEAY32.def
@C:\DOCUME~1\admin\LOCALS~1\Temp\nm118
3.tmp
uplink.obj : error LNK2005: OPENSSL_UplinkTable already defined in
uptable.obj
uplink.obj : error LNK2005: $lazy1 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy2 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy3 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy4 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy5 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy6 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy7 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy8 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy9 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy10 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy11 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy12 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy13 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy14 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy15 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy16 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy17 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy18 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy19 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy20 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy21 already defined in uptable.obj
uplink.obj : error LNK2005: $lazy22 already defined in uptable.obj
ms/LIBEAY32.def(7) : warning LNK4017: DESCRIPTION statement not
supported for the target platform; ignored
   Creating library out32dll\libeay32.lib and object out32dll\libeay32.exp
out32dll\libeay32.dll : fatal error LNK1169: one or more multiply
defined symbol
s found
NMAKE : fatal error U1077: 'link' : return code '0x491'
Stop.


If I add only uptable.obj then it can create libeay32.dll successfully.
However I cannot link ssleay32.dll. So I figured it out that I do not
need uptable.obj to link ssleay32.dll so I rewrite the ntdll.mak file:
SHLIB_EX_OBJ_SSL=
SHLIB_EX_OBJ_CRYPTO=uptable.obj

and then I modified the end of the mak file to use these variables for
the dlls.

So finally successful to build on amd 64 both statically and
dynamically. Thanks a lot. All tests are also successful.

I summarize here what to modify in the mak files to build on AMD 64:
Remove:
SHLIB_EX_OBJ=

Add:
SHLIB_EX_OBJ_SSL=
SHLIB_EX_OBJ_CRYPTO=uptable.obj

Modify:
CFLAGS= to remove /WX option because of size_t conversations and I also
recommend to use /MT instead of /MD for the static link libraries in
nt.mak file.
LFLAGS=/nologo /subsystem:console /opt:ref bufferoverflowU.lib (so
remove /machine:I386 flag and add bufferoverflowU.lib)
Only in ntdll.mak: MLFLAGS= /nologo /subsystem:console /opt:ref
bufferoverflowU.lib /dll (so remove /machine:I386 flag and add
bufferoverflowU.lib) 

Modify the following to use SHLIB_EX_OBJ_SSL instead of SHLIB_EX_OBJ:
$(O_SSL): $(SSLOBJ)
$(LINK) $(MLFLAGS) /out:$(O_SSL) /def:ms/SSLEAY32.def @
  $(SHLIB_EX_OBJ_SSL) $(SSLOBJ)  $(L_CRYPTO) wsock32.lib gdi32.lib
advapi32.lib user32.lib


Modify the following to use SHLIB_EX_OBJ_CRYPTO instead of SHLIB_EX_OBJ:
$(O_CRYPTO): $(CRYPTOOBJ)
$(LINK) $(MLFLAGS) /out:$(O_CRYPTO) /def:ms/LIBEAY32.def @
  $(SHLIB_EX_OBJ_CRYPTO) $(CRYPTOOBJ)  wsock32.lib gdi32.lib
advapi32.lib user32.lib


So how to build on AMD 64 and Intel EM64T I summarize here:

1. perl Configure VC-WIN32
2. ms\do_ms 
3. perl ms/uplink.pl win64a  uptable.asm
4. ml64 -c uptable.asm
5. modify the mak files as above
6. nmake -f ms\ntdll.mak 
7. nmake -f ms\nt.mak 

I used the new platform SDK with 64 bit compiler and MSVC++.

I hope it helps others out.

Thank you for your help,

-- 
Matyas Majzik
__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   [EMAIL PROTECTED]


Re: Win 64a dynamic link library build was unsuccessful using beta6

2005-07-03 Thread Andy Polyakov

First of all I figured it out that i should use SHLIB_EX_OBJ not
APP_EX_OBJ :))


Keep in mind that the instructions were provided off the top of my head 
and not actually tested, which is why it's so bumpy. Bear with me:-)



Second if I add both uplink.obj and uptable.obj to SHLIB_EX_OBJ then I
cannot link libeay32.dll:

link /nologo /subsystem:console /opt:ref bufferoverflowU.lib
/dll /out:o
ut32dll\libeay32.dll /def:ms/LIBEAY32.def
@C:\DOCUME~1\admin\LOCALS~1\Temp\nm118
3.tmp
uplink.obj : error LNK2005: OPENSSL_UplinkTable already defined in
uptable.obj
uplink.obj : error LNK2005: $lazy1 already defined in uptable.obj


Did you recompile uplink.obj from uplink.c? I bet not, because 
uplink.obj [if recompiled from uplink.c] can't contain definitions of 
$lazyN.



If I add only uptable.obj then it can create libeay32.dll successfully.


Yes, but it does not mean that Applink is functional. You have to link 
both uplink.obj [compiled from .c] and uptable.obj [compiled from .asm].



However I cannot link ssleay32.dll. So I figured it out that I do not
need uptable.obj to link ssleay32.dll so I rewrite the ntdll.mak file:


That is correct.


So finally successful to build on amd 64 both statically and
dynamically. Thanks a lot. All tests are also successful.


Idea behind [up/app]link is to make it possible to use .dll with 
application compiled with different compiler flags [/M* ones to be 
specific]. Applink doesn't get engaged when application is compiled with 
same flag as .dll, such as test applications. In other words you've got 
*something* working, but it's *not* what *we* had in mind. So do give it 
another try:-) A.

__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   [EMAIL PROTECTED]


Re: Error in July releases of Openssl 0.9.7

2005-07-03 Thread Andy Polyakov

The previews versions have an error.

They do not recognize Certs in Apache-SSL. 
The problems turns up in 20050701 .


Are you sure that not earlier? The closest change that might affect 
certificate look-ups is dated 23rd, to be specific 
http://cvs.openssl.org/chngview?cn=14114. The new code is buggy! As it 
is now dir variable can be used uninitialized and it appears to me 
there're couple of curly braces missing... This affects all branches!


Verify http://cvs.openssl.org/chngview?cn=14203 or tomorrow snapshot as 
it becomes available. A.

__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   [EMAIL PROTECTED]


Re: Error in July releases of Openssl 0.9.7

2005-07-03 Thread The Doctor
On Sun, Jul 03, 2005 at 03:34:09PM +0200, Andy Polyakov wrote:
 The previews versions have an error.
 
 They do not recognize Certs in Apache-SSL. 
 The problems turns up in 20050701 .
 
 Are you sure that not earlier? The closest change that might affect 
 certificate look-ups is dated 23rd, to be specific 
 http://cvs.openssl.org/chngview?cn=14114. The new code is buggy! As it 
 is now dir variable can be used uninitialized and it appears to me 
 there're couple of curly braces missing... This affects all branches!


20050630 has no problem.  This appears on 20050701 and later.
 
 Verify http://cvs.openssl.org/chngview?cn=14203 or tomorrow snapshot as 
 it becomes available. A.
 __
 OpenSSL Project http://www.openssl.org
 Development Mailing List   openssl-dev@openssl.org
 Automated List Manager   [EMAIL PROTECTED]

-- 
Member - Liberal International  
This is [EMAIL PROTECTED]   Ici [EMAIL PROTECTED]
God Queen and country! Beware Anti-Christ rising!
Canada Day 1 July, USA Day 4 July - PARTY ON!
__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   [EMAIL PROTECTED]


Re: Win 64a dynamic link library build was unsuccessful using beta6

2005-07-03 Thread Matyas Majzik
Hi again!

 Well, no multiple $lazyN is improvement, isn't it? The above error 
 message doesn't make sense though. uplink.obj complains about symbol 
 being already defined in itself... H-m-m-m... I have to ponder over 
 this...

Thanks. But i have made some progress... see later in this mail.

 Stop saying it works properly. It links, it passes the test, but it's 
 missing the functionality. A.

Well, functionality which I don't need. It still works properly for my
purposes. I can link all my applications to these dlls so functionality
for my needs are enough :)) Also I always prefer static libraries. I
only do these things and spend time on it to help you and others to make
openssl is the best.


So I have done more research on this anomaly. I inspected the temporary
file which used to link the dll in the following command:

  link /nologo /subsystem:console /opt:ref bufferoverflowU.lib /dll
/out:out32dll\libeay32.dll /def:ms/LIBEAY32.def
@C:\DOCUME~1\admin\LOCALS~1\Temp\nm1659.tmp

So nm1659.tmp contains the following:
  uptable.obj uplink.obj tmp32dll\uplink.obj tmp32dll\cryptlib.obj 
tmp32dll\mem.obj... (I don't include the whole file)

As you can see there is multiple uses of uplink.obj. That is the reason
- I think - why it worked for me without adding to SHLIB_EX_OBJ .

As I see uplink is automatically compiled and included by the make file
without need to be added to SHLIB_EX_OBJ.


Thanks for your time,

-- 
Matyas Majzik
__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   [EMAIL PROTECTED]


Re: Error in July releases of Openssl 0.9.7

2005-07-03 Thread Andy Polyakov

The previews versions have an error.

They do not recognize Certs in Apache-SSL. 
The problems turns up in 20050701 .


Are you sure that not earlier? The closest change that might affect 
certificate look-ups is dated 23rd, to be specific 
http://cvs.openssl.org/chngview?cn=14114. The new code is buggy! As it 
is now dir variable can be used uninitialized and it appears to me 
there're couple of curly braces missing... This affects all branches!


20050630 has no problem.  This appears on 20050701 and later.


There was only one commit to 0.9.7 between these two snapshots, 
http://cvs.openssl.org/chngview?cn=14189. So it's either that or that it 
indirectly affects the above mentioned bug [dir variable being used 
uninitialized with different values left in stack frame by another 
function].


Verify http://cvs.openssl.org/chngview?cn=14203 or tomorrow snapshot as 
it becomes available.


I'd still appreciate if you do this:-) A.
__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   [EMAIL PROTECTED]


Re: Win 64a dynamic link library build was unsuccessful using beta6

2005-07-03 Thread Andy Polyakov
Stop saying it works properly. It links, it passes the test, but it's 
missing the functionality.


Well, functionality which I don't need.


Sorry, bit for me it's either everything or nothing. In this particular 
context Applink is either there, ready to be used or not there [in which 
case I'd have to modify FAQ]. Also keep in mind that it's publicly 
archived list, meaning that context of discussion gets fuzzy when people 
start searching for keywords. Meaning that if you say something, it pays 
off to explicitly mention particular context, at least works for *my* 
purposes, as failure to do so might give wrong impression about *us*.



I
only do these things and spend time on it to help you and others to make
openssl is the best.


But don't take the above rant personally, as it's pretty much just a 
pedant's whine:-) As a matter of fact we are sincerely grateful for 
feedback and will to resolve problems *our* way. Thank you.



As you can see there is multiple uses of uplink.obj. That is the reason
- I think - why it worked for me without adding to SHLIB_EX_OBJ .


Right!


As I see uplink is automatically compiled and included by the make file
without need to be added to SHLIB_EX_OBJ.


So that adding uptable.obj is sufficient. A.
__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   [EMAIL PROTECTED]


Re: Error in July releases of Openssl 0.9.7

2005-07-03 Thread Doug Kaufman
7On Sun, 3 Jul 2005, Andy Polyakov wrote:

 Are you sure that not earlier? The closest change that might affect 
 certificate look-ups is dated 23rd, to be specific 
 http://cvs.openssl.org/chngview?cn=14114. The new code is buggy! As it 
 is now dir variable can be used uninitialized and it appears to me 
 there're couple of curly braces missing... This affects all branches! A.

I see the missing pair of curly braces. Sorry I missed that initially.
Thanks for fixing it before the final release of 0.9.8.
   Doug
-- 
Doug Kaufman
Internet: [EMAIL PROTECTED]

__
OpenSSL Project http://www.openssl.org
Development Mailing List   openssl-dev@openssl.org
Automated List Manager   [EMAIL PROTECTED]


Re: linux+mingw - create openssl for windows [u]

2005-07-03 Thread Andreas Jellinghaus [c]
On Monday 20 June 2005 18:48, Andy Polyakov wrote:
 - gaswin option is being phased out and should not be used;
 - can you confirm that just issuing 'make' right after 'perl Configure
 mingwx' doesn't work?
 - if you can confirm that it doesn't, can you show how does it fail?

 Point is that I'd rather see it cross-built by 'make' [which is known to
 work at least under cygwin], than by an extra script. In other words you
 should be able to get away with single extra mingwx line to ./Configure
 and patch for $exe_ext line... No extra scripts should be required...

so you want a Configure based approach, but still using mk1mf.pl,
or do you want native Configure / make / make install based system?

I guess the second option, so I tried implementing it. But I need some
help, as the openssl make system is quite complex, and I don't know
all nuances.

The attached diff should be a step in the right direction. but 
linking libcrypto.dll fails, as there are still references to:
libcrypto.exp:fake:(.edata+0x2964): undefined reference to 
`_ENGINE_load_ubsec'
libcrypto.exp:fake:(.edata+0x2f80): undefined reference to 
`_ENGINE_load_cswift'
...
even though I used 
-DOPENSSL_NO_HW.

the command that creates this problem is
i586-mingw32msvc-dllwrap --dllname libcrypto.dll \
--output-lib libcrypto.a \
--def ms/libeay32.def libcrypto.a \
-lwsock32 -lgdi32 

I guess it has to do with the definition files,
but as I don't know what those exactly do, I'm pretty much lost.

Regards, Andreas
diff -udrNP openssl-0.9.8-stable-SNAP-20050703.orig/Configure openssl-0.9.8-stable-SNAP-20050703/Configure
--- openssl-0.9.8-stable-SNAP-20050703.orig/Configure	2005-07-04 00:27:11.169168808 +0200
+++ openssl-0.9.8-stable-SNAP-20050703/Configure	2005-07-04 00:56:17.650663264 +0200
@@ -469,6 +469,7 @@
 
 # MinGW
 mingw, gcc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall -D_WIN32_WINNT=0x333:::MINGW32:-lwsock32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_coff_asm}:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin -shared:.dll.a,
+mingwx, i586-mingw32msvc-cc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall -D_WIN32_WINNT=0x333 -DOPENSSL_NO_HW:::MINGW32:-lwsock32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_coff_asm}:win32:mingw-shared:-D_WINDLL:-mno-cygwin -shared:.dll:i586-mingw32msvc-ranlib,
 
 # UWIN 
 UWIN, cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32,
@@ -909,7 +910,7 @@
 
 $IsMK1MF=1 if ($target eq mingw  $^O ne cygwin);
 
-$exe_ext=.exe if ($target eq Cygwin || $target eq DJGPP || $target eq mingw);
+$exe_ext=.exe if ($target eq Cygwin || $target eq DJGPP || $target eq mingw || $target eq mingwx);
 $exe_ext=.pm  if ($target =~ /vos/);
 $openssldir=/usr/local/ssl if ($openssldir eq  and $prefix eq );
 $prefix=$openssldir if $prefix eq ;
diff -udrNP openssl-0.9.8-stable-SNAP-20050703.orig/Makefile.org openssl-0.9.8-stable-SNAP-20050703/Makefile.org
--- openssl-0.9.8-stable-SNAP-20050703.orig/Makefile.org	2005-07-04 00:27:11.182166832 +0200
+++ openssl-0.9.8-stable-SNAP-20050703/Makefile.org	2005-07-04 00:27:21.282631328 +0200
@@ -496,7 +496,7 @@
 	@pod2man=`cd util; ./pod2mantest $(PERL)`; \
 	here=`pwd`; \
 	filecase=; \
-	if [ $(PLATFORM) = DJGPP -o $(PLATFORM) = Cygwin -o $(PLATFORM) = mingw ]; then \
+	if [ $(PLATFORM) = DJGPP -o $(PLATFORM) = Cygwin -o $(PLATFORM) = mingw -o $(PLATFORM) = mingwx ]; then \
 		filecase=-i; \
 	fi; \
 	set -e; for i in doc/apps/*.pod; do \
diff -udrNP openssl-0.9.8-stable-SNAP-20050703.orig/Makefile.shared openssl-0.9.8-stable-SNAP-20050703/Makefile.shared
--- openssl-0.9.8-stable-SNAP-20050703.orig/Makefile.shared	2005-07-04 00:27:11.182166832 +0200
+++ openssl-0.9.8-stable-SNAP-20050703/Makefile.shared	2005-07-04 00:37:31.029935648 +0200
@@ -258,6 +258,55 @@
 link_app.cygwin:
 	$(LINK_APP)
 
+link_o.mingw:
+	@ $(CALC_VERSIONS); \
+	INHIBIT_SYMLINKS=yes; \
+	SHLIB=$(LIBNAME)eay32; \
+	SHLIB_SUFFIX=.dll; \
+	LIBVERSION=$(LIBVERSION); \
+	SHLIB_SOVER=${LIBVERSION:+-$(LIBVERSION)}; \
+	ALLSYMSFLAGS='-Wl,--whole-archive'; \
+	NOALLSYMSFLAGS='-Wl,--no-whole-archive'; \
+	SHAREDFLAGS=$(CFLAGS) $(SHARED_LDFLAGS) -o lib$(LIBNAME).dll; \
+	expr $(LIBNAME) : 'crypto'  /dev/null  ( \
+	perl util/mkdef.pl 32 libeay  ms/libeay32.def ; \
+	i586-mingw32msvc-dllwrap --dllname lib$(LIBNAME).dll \
+		--output-lib lib$(LIBNAME).a \
+		--def ms/libeay32.def lib$(LIBNAME).a \
+		-lwsock32 -lgdi32 ) || ( \
+	perl util/mkdef.pl 32 ssleay  ms/ssleay32.def ; \
+	i586-mingw32msvc-dllwrap --dllname lib$(LIBNAME).dll \
+		--output-lib lib$(LIBNAME).a \
+		--def ms/ssleay32.def lib$(LIBNAME).a \
+		-lwsock32 -lgdi32 ) 
+link_a.mingw:
+	@ $(CALC_VERSIONS); \
+	INHIBIT_SYMLINKS=yes; \
+	SHLIB=$(LIBNAME)eay32; \
+	SHLIB_SUFFIX=.dll; \
+	SHLIB_SOVER=-$(LIBVERSION); \
+	ALLSYMSFLAGS='-Wl,--whole-archive'; \
+	NOALLSYMSFLAGS='-Wl,--no-whole-archive