From: "Arpadffy Zoltan via RT" <[email protected]>
> I have tested 1.0.0d release on OpenVMS and found many warnings during th=
> e build with 64bits pointer size that produced many annoying warning mess=
> ages during linking against the library - like:
>
> Building The BNTEST Test Program.
> %ILINK-W-COMPWARN, compilation warnings
> module: DSO_VMS
> file: USRDSK:[ZAY.WORK.OPENSSL-100D.IA64.EXE.CRYPTO]LIBCRYPTO.OLB=
> ;1
You get the LINK warning bacause you didn't fix the compiler
warnings.
> Unfortunately the 64bit pointer size build on ALPHA has the very same fai=
> l.
> Compaq C V6.4-008 on OpenVMS Alpha V7.3-2
That's not _un_fortunate, that's _fortunate_. _Un_fortunate would be
if you got results on Alpha which differed from those on IA64.
> Compiling The o_dir.c File. (LIBRARY,LIB)
>
> (*ctx)->filespec_dsc.dsc$a_pointer =3D (*ctx)->filespec;
> ...........................................^
> %CC-W-MAYLOSEDATA2, In this statement, "(*ctx)->filespec" has a larger da=
> ta size
> than "short pointer to char". Assignment can result in data loss.
> at line number 121 in file USRDSK:[ZAY.WORK.OPENSSL-100D.CRYPTO]LPDIR_VMS=
> .C;1
Well, yeah. I'd expect a complaint every time you use a 32-bit
descriptor in a 64-bit-pointer environment. While I've never used one,
I assume that that's why 64-bit descriptors exist, and I'd guess that
you'll need to fix all the (VMS-specific) code which uses descriptors.
Knowing nothing, I'd assume that you'd need to add some
64-bit-descriptor declarations, contitional on __INITIAL_POINTER_SIZE
("if __INITIAL_POINTER_SIZE == 64", say). With any luck, the consumers
of these descriptors might accept either descriptor type.
> setvbuf(in, NULL, _IONBF, 0); /* don't do buffered reads */
> ..................^
> %CC-W-MAYLOSEDATA2, In this statement, "in" has a larger data size than "=
> short p
> ointer to short pointer to struct _iobuf". Assignment can result in data=
> loss.
> at line number 147 in file USRDSK:[ZAY.WORK.OPENSSL-100D.CRYPTO.RAND]RAND=
> FILE.C;
Apparently (<stdio,h>), setvbuf() is in the category of "functions
and declarations which do not support 64 bit pointers being passed (or
returned)." I'd guess that you'll need to disable that code on VMS, at
least when 64-bit pointers are used. (It may be unwise to have the
behavior on VMS depend on the pointer size, so it might be better to
disable it always on VMS.) Any such change should include a good
explanation in its comments.
------------------------------------------------------------------------
Steven M. Schweda sms@antinode-info
382 South Warwick Street (+1) 651-699-9818
Saint Paul MN 55105-2547
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [email protected]
Automated List Manager [email protected]