This should fix the missing SSIZE_MAX on GNU systems when -ansi is in effect (and posix is not available). Also see https://sourceware.org/ml/libc-hacker/2002-08/msg00031.html.
diff --git a/include/openssl/e_os2.h b/include/openssl/e_os2.h index bbd6116..73058c0 100644 --- a/include/openssl/e_os2.h +++ b/include/openssl/e_os2.h @@ -264,7 +264,15 @@ extern "C" { # ifndef ossl_ssize_t # define ossl_ssize_t ssize_t -# define OSSL_SSIZE_MAX SSIZE_MAX +# if defined(SSIZE_MAX) +# define OSSL_SSIZE_MAX SSIZE_MAX +# elif defined(_POSIX_SSIZE_MAX) +# define OSSL_SSIZE_MAX _POSIX_SSIZE_MAX +# elif (__WORDSIZE == 64) +# define OSSL_SSIZE_MAX LONG_MAX +# elif(__WORDSIZE == 32) +# define OSSL_SSIZE_MAX INT_MAX +# endif # endif # ifdef DEBUG_UNUSED > ------------------------------------------------------------------------- > Working from Master at 7793e17440539b71 on Ubuntu 14 machine. Also see > http://stackoverflow.com/questions/13870489/is-inline-asm-part-of-the-ansi-c-standard. > > $ ./config shared no-asm -ansi > ... > $ make -k > ... > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF > crypto/asn1/ameth_lib.d.tmp -MT crypto/asn1/ameth_lib.o -c -o > crypto/asn1/ameth_lib.o crypto/asn1/ameth_lib.c > crypto/asn1/ameth_lib.c: In function ‘EVP_PKEY_asn1_find_str’: > crypto/asn1/ameth_lib.c:217:13: warning: implicit declaration of > function ‘strncasecmp’ [-Wimplicit-function-declaration] > && (strncasecmp(ameth->pem_str, str, len) == 0)) > ^ > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF > crypto/bio/b_addr.d.tmp -MT crypto/bio/b_addr.o -c -o > crypto/bio/b_addr.o crypto/bio/b_addr.c > crypto/bio/b_addr.c: In function ‘BIO_lookup’: > crypto/bio/b_addr.c:770:17: warning: implicit declaration of function > ‘hstrerror’ [-Wimplicit-function-declaration] > ERR_add_error_data(1, hstrerror(h_errno)); > ^ > crypto/bio/b_addr.c:690:13: warning: unused variable ‘gai_ret’ > [-Wunused-variable] > int gai_ret = 0; > ^ > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF > crypto/bio/bss_bio.d.tmp -MT crypto/bio/bss_bio.o -c -o > crypto/bio/bss_bio.o crypto/bio/bss_bio.c > In file included from include/openssl/bio.h:61:0, > from crypto/bio/bss_bio.c:68: > crypto/bio/bss_bio.c: In function ‘bio_nread’: > include/openssl/e_os2.h:267:26: error: ‘SSIZE_MAX’ undeclared (first > use in this function) > # define OSSL_SSIZE_MAX SSIZE_MAX > ^ > crypto/bio/bss_bio.c:289:16: note: in expansion of macro ‘OSSL_SSIZE_MAX’ > if (num_ > OSSL_SSIZE_MAX) > ^ > include/openssl/e_os2.h:267:26: note: each undeclared identifier is > reported only once for each function it appears in > # define OSSL_SSIZE_MAX SSIZE_MAX > ^ > crypto/bio/bss_bio.c:289:16: note: in expansion of macro ‘OSSL_SSIZE_MAX’ > if (num_ > OSSL_SSIZE_MAX) > ^ > crypto/bio/bss_bio.c: In function ‘bio_nwrite’: > include/openssl/e_os2.h:267:26: error: ‘SSIZE_MAX’ undeclared (first > use in this function) > # define OSSL_SSIZE_MAX SSIZE_MAX > ^ > crypto/bio/bss_bio.c:445:16: note: in expansion of macro ‘OSSL_SSIZE_MAX’ > if (num_ > OSSL_SSIZE_MAX) > ^ > make: *** [crypto/bio/bss_bio.o] Error 1 > > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF > crypto/bio/bss_dgram.d.tmp -MT crypto/bio/bss_dgram.o -c -o > crypto/bio/bss_dgram.o crypto/bio/bss_dgram.c > In file included from /usr/include/netdb.h:27:0, > from ./e_os.h:443, > from crypto/bio/bio_lcl.h:2, > from crypto/bio/bss_dgram.c:62: > crypto/bio/bss_dgram.c: In function ‘dgram_get_mtu_overhead’: > crypto/bio/bss_dgram.c:433:20: error: ‘const struct in6_addr’ has no > member named ‘s6_addr32’ > && IN6_IS_ADDR_V4MAPPED(&tmp_addr)) > ^ > crypto/bio/bss_dgram.c:433:20: error: ‘const struct in6_addr’ has no > member named ‘s6_addr32’ > && IN6_IS_ADDR_V4MAPPED(&tmp_addr)) > ^ > crypto/bio/bss_dgram.c:433:20: error: ‘const struct in6_addr’ has no > member named ‘s6_addr32’ > && IN6_IS_ADDR_V4MAPPED(&tmp_addr)) > ^ > crypto/bio/bss_dgram.c: In function ‘dgram_ctrl’: > crypto/bio/bss_dgram.c:604:24: error: ‘const struct in6_addr’ has no > member named ‘s6_addr32’ > && IN6_IS_ADDR_V4MAPPED(&tmp_addr)) > ^ > crypto/bio/bss_dgram.c:604:24: error: ‘const struct in6_addr’ has no > member named ‘s6_addr32’ > && IN6_IS_ADDR_V4MAPPED(&tmp_addr)) > ^ > crypto/bio/bss_dgram.c:604:24: error: ‘const struct in6_addr’ has no > member named ‘s6_addr32’ > && IN6_IS_ADDR_V4MAPPED(&tmp_addr)) > ^ > make: *** [crypto/bio/bss_dgram.o] Error 1 > > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF > crypto/conf/conf_lib.d.tmp -MT crypto/conf/conf_lib.o -c -o > crypto/conf/conf_lib.o crypto/conf/conf_lib.c > crypto/conf/conf_lib.c: In function ‘OPENSSL_INIT_set_config_filename’: > crypto/conf/conf_lib.c:395:5: warning: implicit declaration of > function ‘strdup’ [-Wimplicit-function-declaration] > settings->config_name = config_file == NULL ? NULL : strdup(config_file); > ^ > crypto/conf/conf_lib.c:395:56: warning: pointer/integer type mismatch > in conditional expression [enabled by default] > settings->config_name = config_file == NULL ? NULL : strdup(config_file); > ^ > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF > crypto/conf/conf_sap.d.tmp -MT crypto/conf/conf_sap.o -c -o > crypto/conf/conf_sap.o crypto/conf/conf_sap.c > crypto/conf/conf_sap.c: In function ‘OPENSSL_config’: > crypto/conf/conf_sap.c:82:9: warning: implicit declaration of function > ‘strdup’ [-Wimplicit-function-declaration] > settings.config_name = strdup(config_name); > ^ > crypto/conf/conf_sap.c:82:30: warning: assignment makes pointer from > integer without a cast [enabled by default] > settings.config_name = strdup(config_name); > ^ > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF > crypto/engine/tb_asnmth.d.tmp -MT crypto/engine/tb_asnmth.o -c -o > crypto/engine/tb_asnmth.o crypto/engine/tb_asnmth.c > crypto/engine/tb_asnmth.c: In function ‘ENGINE_get_pkey_asn1_meth_str’: > crypto/engine/tb_asnmth.c:195:13: warning: implicit declaration of > function ‘strncasecmp’ [-Wimplicit-function-declaration] > && strncasecmp(ameth->pem_str, str, len) == 0) > ^ > > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF > crypto/rand/randfile.d.tmp -MT crypto/rand/randfile.o -c -o > crypto/rand/randfile.o crypto/rand/randfile.c > crypto/rand/randfile.c: In function ‘RAND_write_file’: > crypto/rand/randfile.c:222:13: warning: implicit declaration of > function ‘fdopen’ [-Wimplicit-function-declaration] > out = fdopen(fd, "wb"); > ^ > crypto/rand/randfile.c:222:17: warning: assignment makes pointer from > integer without a cast [enabled by default] > out = fdopen(fd, "wb"); > ^ > > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF > crypto/threads_pthread.d.tmp -MT crypto/threads_pthread.o -c -o > crypto/threads_pthread.o crypto/threads_pthread.c > In file included from crypto/threads_pthread.c:50:0: > crypto/threads_pthread.c: In function ‘CRYPTO_THREAD_lock_new’: > crypto/threads_pthread.c:57:49: error: ‘pthread_rwlock_t’ undeclared > (first use in this function) > CRYPTO_RWLOCK *lock = OPENSSL_zalloc(sizeof(pthread_rwlock_t)); > ^ > include/openssl/crypto.h:238:23: note: in definition of macro ‘OPENSSL_zalloc’ > CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) > ^ > crypto/threads_pthread.c:57:49: note: each undeclared identifier is > reported only once for each function it appears in > CRYPTO_RWLOCK *lock = OPENSSL_zalloc(sizeof(pthread_rwlock_t)); > ^ > include/openssl/crypto.h:238:23: note: in definition of macro ‘OPENSSL_zalloc’ > CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) > ^ > crypto/threads_pthread.c:61:5: warning: implicit declaration of > function ‘pthread_rwlock_init’ [-Wimplicit-function-declaration] > if (pthread_rwlock_init(lock, NULL) != 0) { > ^ > crypto/threads_pthread.c: In function ‘CRYPTO_THREAD_read_lock’: > crypto/threads_pthread.c:71:5: warning: implicit declaration of > function ‘pthread_rwlock_rdlock’ [-Wimplicit-function-declaration] > if (pthread_rwlock_rdlock(lock) != 0) > ^ > crypto/threads_pthread.c: In function ‘CRYPTO_THREAD_write_lock’: > crypto/threads_pthread.c:79:5: warning: implicit declaration of > function ‘pthread_rwlock_wrlock’ [-Wimplicit-function-declaration] > if (pthread_rwlock_wrlock(lock) != 0) > ^ > crypto/threads_pthread.c: In function ‘CRYPTO_THREAD_unlock’: > crypto/threads_pthread.c:87:5: warning: implicit declaration of > function ‘pthread_rwlock_unlock’ [-Wimplicit-function-declaration] > if (pthread_rwlock_unlock(lock) != 0) > ^ > crypto/threads_pthread.c: In function ‘CRYPTO_THREAD_lock_free’: > crypto/threads_pthread.c:98:5: warning: implicit declaration of > function ‘pthread_rwlock_destroy’ [-Wimplicit-function-declaration] > pthread_rwlock_destroy(lock); > ^ > make: *** [crypto/threads_pthread.o] Error 1 > > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF > crypto/ui/ui_openssl.d.tmp -MT crypto/ui/ui_openssl.o -c -o > crypto/ui/ui_openssl.o crypto/ui/ui_openssl.c > crypto/ui/ui_openssl.c:270:25: error: array type has incomplete element type > static struct sigaction savsig[NX509_SIG]; > ^ > crypto/ui/ui_openssl.c: In function ‘open_console’: > crypto/ui/ui_openssl.c:483:5: warning: implicit declaration of > function ‘fileno’ [-Wimplicit-function-declaration] > if (TTY_get(fileno(tty_in), &tty_orig) == -1) { > ^ > crypto/ui/ui_openssl.c: In function ‘pushsig’: > crypto/ui/ui_openssl.c:584:22: error: storage size of ‘sa’ isn’t known > struct sigaction sa; > ^ > crypto/ui/ui_openssl.c:612:9: warning: implicit declaration of > function ‘sigaction’ [-Wimplicit-function-declaration] > sigaction(i, &sa, &savsig[i]); > ^ > crypto/ui/ui_openssl.c:584:22: warning: unused variable ‘sa’ > [-Wunused-variable] > struct sigaction sa; > ^ > crypto/ui/ui_openssl.c: At top level: > crypto/ui/ui_openssl.c:270:25: warning: ‘savsig’ defined but not used > [-Wunused-variable] > static struct sigaction savsig[NX509_SIG]; > ^ > make: *** [crypto/ui/ui_openssl.o] Error 1 > > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF > crypto/x509v3/v3_ncons.d.tmp -MT crypto/x509v3/v3_ncons.o -c -o > crypto/x509v3/v3_ncons.o crypto/x509v3/v3_ncons.c > crypto/x509v3/v3_ncons.c: In function ‘nc_dns’: > crypto/x509v3/v3_ncons.c:392:5: warning: implicit declaration of > function ‘strcasecmp’ [-Wimplicit-function-declaration] > if (strcasecmp(baseptr, dnsptr)) > ^ > crypto/x509v3/v3_ncons.c: In function ‘nc_uri’: > crypto/x509v3/v3_ncons.c:472:13: warning: implicit declaration of > function ‘strncasecmp’ [-Wimplicit-function-declaration] > if (strncasecmp(p, baseptr, base->length) == 0) > ^ > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -Icrypto/include -MMD -MF > crypto/x509v3/v3_utl.d.tmp -MT crypto/x509v3/v3_utl.o -c -o > crypto/x509v3/v3_utl.o crypto/x509v3/v3_utl.c > crypto/x509v3/v3_utl.c: In function ‘wildcard_match’: > crypto/x509v3/v3_utl.c:774:9: warning: implicit declaration of > function ‘strncasecmp’ [-Wimplicit-function-declaration] > subject_len >= 4 && strncasecmp((char *)subject, "xn--", 4) == 0) > ^ > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -MMD -MF ssl/bio_ssl.d.tmp -MT > ssl/bio_ssl.o -c -o ssl/bio_ssl.o ssl/bio_ssl.c > In file included from ssl/bio_ssl.c:65:0: > ssl/ssl_locl.h:1494:20: error: field ‘next_timeout’ has incomplete type > struct timeval next_timeout; > ^ > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -MMD -MF ssl/d1_lib.d.tmp -MT > ssl/d1_lib.o -c -o ssl/d1_lib.o ssl/d1_lib.c > In file included from ssl/d1_lib.c:63:0: > ssl/ssl_locl.h:1494:20: error: field ‘next_timeout’ has incomplete type > struct timeval next_timeout; > ^ > make: *** [ssl/d1_lib.o] Error 1 > > > gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_THREADS > -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC > -DOPENSSLDIR="\"/usr/local/ssl\"" > -DENGINESDIR="\"/usr/local/lib/engines\"" -Wall -O3 -pthread -m64 > -DL_ENDIAN -ansi -fPIC -Iinclude -I. -MMD -MF ssl/ssl_conf.d.tmp -MT > ssl/ssl_conf.o -c -o ssl/ssl_conf.o ssl/ssl_conf.c > In file included from ssl/ssl_conf.c:59:0: > ssl/ssl_locl.h:1494:20: error: field ‘next_timeout’ has incomplete type > struct timeval next_timeout; > ^ > ssl/ssl_conf.c: In function ‘ssl_match_option’: > ssl/ssl_conf.c:194:16: warning: implicit declaration of function > ‘strncasecmp’ [-Wimplicit-function-declaration] > || strncasecmp(tbl->name, name, namelen)) > ^ > ... > > > > ------------------------------------------------------------------------- > http://rt.openssl.org/Ticket/Display.html?id=4480&user=guest&pass=guest -- Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4480 Please log in as guest with password guest if prompted -- openssl-dev mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev