In message <[EMAIL PROTECTED]> on Fri, 15 Nov 2002 13:23:57 
+0100, Corinna Vinschen <[EMAIL PROTECTED]> said:

vinschen> First, there's a build problem which only affects Windows systems due
vinschen> to the way DLLs are searched for.  In contrast to Unixy systems, shared
vinschen> libs are search in $PATH.  Therefore I propose the following patch to
vinschen> test/Makefile:

Ah, thanks, I'll fix that (but only for Cygwin.  I don't want library
directories to be added to $PATH on a normal Unix system).

vinschen> 
vinschen> --- test/Makefile.ssl.orig    2002-11-15 12:20:59.000000000 +0100
vinschen> +++ test/Makefile.ssl 2002-11-15 12:15:52.000000000 +0100
vinschen> @@ -118,8 +118,8 @@ tests:    exe apps $(TESTS)
vinschen>  apps:
vinschen>       @(cd ..; $(MAKE) DIRS=apps all)
vinschen>  
vinschen> -SET_SO_PATHS=LIBPATH="`cd ..; pwd`"; LD_LIBRARY_PATH=$$LIBPATH; 
DYLD_LIBRARY_PATH=$$LIBPATH; SHLIB_PATH=$$LIBPATH; \
vinschen> -             export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH
vinschen> +SET_SO_PATHS=LIBPATH="`cd ..; pwd`"; LD_LIBRARY_PATH=$$LIBPATH; 
DYLD_LIBRARY_PATH=$$LIBPATH; SHLIB_PATH=$$LIBPATH; PATH="$$LIBPATH:$$PATH" \
vinschen> +             export LD_LIBRARY_PATH DYLD_LIBRARY_PATH SHLIB_PATH LIBPATH 
PATH

You're missing a ; just before export...

vinschen>  
vinschen>  alltests: \
vinschen>       test_des test_idea test_sha test_md4 test_md5 test_hmac \
vinschen> 
vinschen>   
vinschen> But there's still another problem left then.  Three applications die
vinschen> with access violations, openssl, rc4test and bltest.
vinschen> 
vinschen> What I did then was, to build everything again.  But before, I
vinschen> removed my /usr/include/openssl directory which is (obviously) the
vinschen> directory present from a 0.9.6 installation.
vinschen> 
vinschen> Now everything worked fine.  That means, the problem here is that
vinschen> gcc (JFYI, Cygwin is now on version 3.2) searches the system include
vinschen> paths before searching the paths given with -I on the command line,
vinschen> iff the includes are bracketed using <...> instead of "...".
vinschen> 
vinschen> I can see two possible solutions to circumvent the problem:
vinschen> 
vinschen> Either prepend -I. -I- to all other -I options like
vinschen> 
vinschen>  gcc -I. -I- -I.. -I../include
vinschen> 
vinschen> according to the gcc documentation:
vinschen> 
vinschen>   `-I-'
vinschen>        Split the include path.  Any directories specified with `-I'
vinschen>        options before `-I-' are searched only for headers requested with
vinschen>        `#include "FILE"'; they are not searched for `#include <FILE>'.
vinschen>        If additional directories are specified with `-I' options after
vinschen>        the `-I-', those directories are searched for all `#include'
vinschen>        directives.
vinschen> 
vinschen>        In addition, `-I-' inhibits the use of the directory of the current
vinschen>        file directory as the first search directory for `#include "FILE"'.
vinschen> 
vinschen> or change all
vinschen> 
vinschen>  #include <openssl/...>
vinschen> 
vinschen> to
vinschen> 
vinschen>  #include "openssl/..."

I don't think that analysis is correct.  This is what the info for
gcc-3.2 has to say:

`-IDIR'
     Add the directory DIR to the head of the list of directories to be
     searched for header files.  This can be used to override a system
     header file, substituting your own version, since these
     directories are searched before the system header file
     directories.  However, you should not use this option to add
     directories that contain vendor-supplied system header files (use
     `-isystem' for that).  If you use more than one `-I' option, the
     directories are scanned in left-to-right order; the standard
     system directories come after.

     If a standard system include directory, or a directory specified
     with `-isystem', is also specified with `-I', the `-I' option will
     be ignored.  The directory will still be searched but as a system
     directory at its normal position in the system include chain.
     This is to ensure that GCC's procedure to fix buggy system headers
     and the ordering for the include_next directive are not
     inadvertantly changed.  If you really need to change the search
     order for system directories, use the `-nostdinc' and/or
     `-isystem' options.

However, since you $PATH might not be properly set (because of the
missing ;), it may be that running the tests actually use 0.9.6 DLLs.
I'm really surprised you didn't get more crashes in that case...

Had it been an include file error, you would probably not have been
able to build...

-- 
Richard Levitte   \ Spannvägen 38, II \ [EMAIL PROTECTED]
Redakteur@Stacken  \ S-168 35  BROMMA  \ T: +46-8-26 52 47
                    \      SWEDEN       \ or +46-708-26 53 44
Procurator Odiosus Ex Infernis                -- [EMAIL PROTECTED]
Member of the OpenSSL development team: http://www.openssl.org/

Unsolicited commercial email is subject to an archival fee of $400.
See <http://www.stacken.kth.se/~levitte/mail/> for more info.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to