Success Report for OpenSSL 1.0.0-beta2 on OpenVOS; minor gcc warnings explained

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Success Report for OpenSSL 1.0.0-beta2 on OpenVOS; minor gcc warnings explained

Green, Paul
Success Report for OpenSSL 1.0.0-beta2 on OpenVOS; minor gcc warnings explained

OpenSSL 1.0.0-beta2 builds and passes all of its self-tests on OpenVOS Release 17.0.1ap.  Note that this is a 32-bit, Big-Endian, Intel Xeon(r) implementation. (We have our own port of GCC that produces big-endian x86 code; write me for details).

The relevant lines in the Configure script are the "vos-gcc" and "debug-vos-gcc" lines.

Here are the parameter settings that I used.

Configuring for vos-gcc
    no-asm          [option]   OPENSSL_NO_ASM
    no-dso          [option]
    no-gmp          [default]  OPENSSL_NO_GMP (skip dir)
    no-hw           [option]   OPENSSL_NO_HW
    no-idea         [option]   OPENSSL_NO_IDEA (skip dir)
    no-jpake        [experimental] OPENSSL_NO_JPAKE (skip dir)
    no-krb5         [krb5-flavor not specified] OPENSSL_NO_KRB5
    no-mdc2         [default]  OPENSSL_NO_MDC2 (skip dir)
    no-rc5          [option]   OPENSSL_NO_RC5 (skip dir)
    no-rfc3779      [default]  OPENSSL_NO_RFC3779 (skip dir)
    no-shared       [option]
    no-store        [experimental] OPENSSL_NO_STORE (skip dir)
    no-threads      [option]
    no-zlib-dynamic [default]
IsMK1MF=0
CC            =gcc
CFLAG         =-DZLIB -O3 -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -DB_ENDIAN
EX_LIBS       =-Wl,-map -L/Languages/Green/test_ssl/2.1.p4be/zlib -lz
CPUID_OBJ     =mem_clr.o
BN_ASM        =bn_asm.o
DES_ENC       =des_enc.o fcrypt_b.o
AES_ENC       =aes_core.o aes_cbc.o
BF_ENC        =bf_enc.o
CAST_ENC      =c_enc.o
RC4_ENC       =rc4_enc.o rc4_skey.o
RC5_ENC       =rc5_enc.o
MD5_OBJ_ASM   =
SHA1_OBJ_ASM  =
RMD160_OBJ_ASM=
CMLL_ENC=     =camellia.o cmll_misc.o cmll_cbc.o
PROCESSOR     =
RANLIB        =/libraries/vos/17.0/p4be_compiler_pool.p4be/ranlib.pm
ARFLAGS       =
PERL          =perl.pm
THIRTY_TWO_BIT mode
BN_LLONG mode
RC4_CHUNK is undefined

We get a two types of compiler warnings:

tb_asnmth.c: In function `ENGINE_get_pkey_asn1_meth_str':
tb_asnmth.c:192: warning: implicit declaration of function `strncasecmp'
ameth_lib.c: In function `EVP_PKEY_asn1_find_str':
ameth_lib.c:232: warning: implicit declaration of function `strncasecmp'
v3_ncons.c: In function `nc_dns':
v3_ncons.c:404: warning: implicit declaration of function `strcasecmp'
v3_ncons.c: In function `nc_uri':
v3_ncons.c:490: warning: implicit declaration of function `strncasecmp'
ui_openssl.c:125:1: warning: "_POSIX_C_SOURCE" redefined
<command line>:2:1: warning: this is the location of the previous definition
ca.c: In function `make_revocation_str':
ca.c:2722: warning: implicit declaration of function `strcasecmp'
apps.c:112:1: warning: "_POSIX_C_SOURCE" redefined
<command line>:3:1: warning: this is the location of the previous definition

We declare the strcasecmp and strncasecmp functions in the <strings.h> header file, per POSIX, but apparently OpenSSL never includes it. Since the compiler's default prototype for str(n)casecmp is fine, I've ignored this error.

We require our users to define the _POSIX_C_SOURCE macro if they wish to use our POSIX libraries, so the compiler displays a warning message if it finds a duplicate definition of _POSIX_C_SOURCE.  This error could be eliminated by the following two changes.

        In openssl/crypto/ui/ui_openssl.c (line 125):

        Is:     #define _POSIX_C_SOURCE 1   *** see note below ***

        Change to:
                #ifndef _POSIX_C_SOURCE
                #define _POSIX_C_SOURCE 2
                #endif

        *** note *** I believe that "1" is not a valid value for the _POSIX_C_SOURCE macro.  The valid values are 2, 199309L, 199506L and 200112L.  Having said this, I think that most compilers will treat this as if no value had been specified.  Also note that this macro is supposed to be defined before the first header is included, and this source program violates that condition.  This is a more important restriction.  See http://www.opengroup.org/onlinepubs/009695399/xbd_chap02.html#tag_02_02_01.  If you want this program to be able to use any of the features that were added in the POSIX-1993, POSIX-1995, or POSIX-2001 standards, then you should use the appropriate, higher, value.

        In openssl/apps/apps.c (line 112):

        Is:     #define _POSIX_C_SOURCE 2

        Change to:
                #ifndef _POSIX_C_SOURCE
                #define _POSIX_C_SOURCE 2
                #endif

        *** This source program uses a valid value, and defines it before it includes the first header. Please give yourself a gold star.


Thanks
PG
--
Paul Green, Senior Technical Consultant, Stratus Technologies.
Voice: +1 978-461-7557; FAX: +1 978-461-3610; Mobile: +1 (978) 235-2451; AIM: PaulGreen