OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall Root: /v/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-src Date: 23-May-2007 11:41:03 Branch: HEAD Handle: 2007052310410300 Modified files: openpkg-src/openssl openssl.patch openssl.spec Log: apply a temporary fix for the run-time problems when compiled with GCC 4.2.0 under 64-bit platforms Summary: Revision Changes Path 1.27 +311 -0 openpkg-src/openssl/openssl.patch 1.85 +1 -1 openpkg-src/openssl/openssl.spec ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-src/openssl/openssl.patch ============================================================================ $ cvs diff -u -r1.26 -r1.27 openssl.patch --- openpkg-src/openssl/openssl.patch 5 Mar 2007 12:38:17 -0000 1.26 +++ openpkg-src/openssl/openssl.patch 23 May 2007 09:41:03 -0000 1.27 @@ -104,3 +104,314 @@ if (pci) { PROXY_CERT_INFO_EXTENSION_free(pci); pci = NULL; } end: sk_CONF_VALUE_pop_free(vals, X509V3_conf_free); + +----------------------------------------------------------------------------- + +Temporary fix for OpenSSL to work under GCC 4.2 world order. This +especially fixes operations like "openssl genrsa" or "ssh-keygen" under +some 64-bit platforms like FreeBSD/amd64. The OpenSSL team is already +working on an official fix. -- rse 20070523 + +Derived from: http://dev.gentoo.org/~dirtyepic/patches/openssl-0.9.8e-gcc42.patch + +Index: crypto/asn1/a_d2i_fp.c +--- crypto/asn1/a_d2i_fp.c.orig 2005-05-09 02:27:32 +0200 ++++ crypto/asn1/a_d2i_fp.c 2007-05-23 11:35:26 +0200 +@@ -81,6 +81,7 @@ + BIO_free(b); + return(ret); + } ++const void * __attribute__((unused)) __ASN1_d2i_fp=(const void*)openssl_fcast(ASN1_d2i_fp); + #endif + + void *ASN1_d2i_bio(void *(*xnew)(void), d2i_of_void *d2i, BIO *in, void **x) +@@ -99,6 +100,7 @@ + if (b != NULL) BUF_MEM_free(b); + return(ret); + } ++const void * __attribute__((unused)) __ASN1_d2i_bio=(const void*)openssl_fcast(ASN1_d2i_bio); + + #endif + +Index: crypto/asn1/a_dup.c +--- crypto/asn1/a_dup.c.orig 2005-05-09 02:27:32 +0200 ++++ crypto/asn1/a_dup.c 2007-05-23 11:35:26 +0200 +@@ -82,6 +82,7 @@ + OPENSSL_free(b); + return(ret); + } ++const void * __attribute__((unused)) __ASN1_dup=(const void*)openssl_fcast(ASN1_dup); + + #endif + +Index: crypto/asn1/a_i2d_fp.c +--- crypto/asn1/a_i2d_fp.c.orig 2005-05-09 02:27:32 +0200 ++++ crypto/asn1/a_i2d_fp.c 2007-05-23 11:35:26 +0200 +@@ -79,6 +79,7 @@ + BIO_free(b); + return(ret); + } ++const void * __attribute__((unused)) __ASN1_i2d_fp=(const void*)openssl_fcast(ASN1_i2d_fp); + #endif + + int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x) +@@ -113,6 +114,7 @@ + OPENSSL_free(b); + return(ret); + } ++const void * __attribute__((unused)) __ASN1_i2d_bio=(const void*)openssl_fcast(ASN1_i2d_bio); + + #endif + +Index: crypto/asn1/asn1.h +--- crypto/asn1/asn1.h.orig 2006-02-19 14:45:22 +0100 ++++ crypto/asn1/asn1.h 2007-05-23 11:35:26 +0200 +@@ -902,23 +902,26 @@ + + /* Used to implement other functions */ + void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x); ++extern const void *__ASN1_dup; + #define ASN1_dup_of(type,i2d,d2i,x) \ +- ((type *(*)(I2D_OF(type),D2I_OF(type),type *))openssl_fcast(ASN1_dup))(i2d,d2i,x) ++ ((type *(*)(I2D_OF(type),D2I_OF(type),type *))__ASN1_dup)(i2d,d2i,x) + #define ASN1_dup_of_const(type,i2d,d2i,x) \ +- ((type *(*)(I2D_OF_const(type),D2I_OF(type),type *))openssl_fcast(ASN1_dup))(i2d,d2i,x) ++ ((type *(*)(I2D_OF_const(type),D2I_OF(type),type *))__ASN1_dup)(i2d,d2i,x) + + void *ASN1_item_dup(const ASN1_ITEM *it, void *x); + + #ifndef OPENSSL_NO_FP_API + void *ASN1_d2i_fp(void *(*xnew)(void), d2i_of_void *d2i, FILE *in, void **x); ++extern const void *__ASN1_d2i_fp; + #define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \ +- ((type *(*)(type *(*)(void),D2I_OF(type),FILE *,type **))openssl_fcast(ASN1_d2i_fp))(xnew,d2i,in,x) ++ ((type *(*)(type *(*)(void),D2I_OF(type),FILE *,type **))__ASN1_d2i_fp)(xnew,d2i,in,x) + void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); + int ASN1_i2d_fp(i2d_of_void *i2d,FILE *out,void *x); ++extern const void *__ASN1_i2d_fp; + #define ASN1_i2d_fp_of(type,i2d,out,x) \ +- ((int (*)(I2D_OF(type),FILE *,type *))openssl_fcast(ASN1_i2d_fp))(i2d,out,x) ++ ((int (*)(I2D_OF(type),FILE *,type *))__ASN1_i2d_fp)(i2d,out,x) + #define ASN1_i2d_fp_of_const(type,i2d,out,x) \ +- ((int (*)(I2D_OF_const(type),FILE *,type *))openssl_fcast(ASN1_i2d_fp))(i2d,out,x) ++ ((int (*)(I2D_OF_const(type),FILE *,type *))__ASN1_i2d_fp)(i2d,out,x) + int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); + int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags); + #endif +@@ -927,14 +930,16 @@ + + #ifndef OPENSSL_NO_BIO + void *ASN1_d2i_bio(void *(*xnew)(void), d2i_of_void *d2i, BIO *in, void **x); ++extern const void *__ASN1_d2i_bio; + #define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \ +- ((type *(*)(type *(*)(void),D2I_OF(type),BIO *,type **))openssl_fcast(ASN1_d2i_bio))(xnew,d2i,in,x) ++ ((type *(*)(type *(*)(void),D2I_OF(type),BIO *,type **))__ASN1_d2i_bio)(xnew,d2i,in,x) + void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); + int ASN1_i2d_bio(i2d_of_void *i2d,BIO *out, unsigned char *x); ++extern const void *__ASN1_i2d_bio; + #define ASN1_i2d_bio_of(type,i2d,out,x) \ +- ((int (*)(I2D_OF(type),BIO *,type *))openssl_fcast(ASN1_i2d_bio))(i2d,out,x) ++ ((int (*)(I2D_OF(type),BIO *,type *))__ASN1_i2d_bio)(i2d,out,x) + #define ASN1_i2d_bio_of_const(type,i2d,out,x) \ +- ((int (*)(I2D_OF_const(type),BIO *,const type *))openssl_fcast(ASN1_i2d_bio))(i2d,out,x) ++ ((int (*)(I2D_OF_const(type),BIO *,const type *))__ASN1_i2d_bio)(i2d,out,x) + int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); + int ASN1_UTCTIME_print(BIO *fp,ASN1_UTCTIME *a); + int ASN1_GENERALIZEDTIME_print(BIO *fp,ASN1_GENERALIZEDTIME *a); +@@ -977,8 +982,9 @@ + void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); + ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d, + ASN1_OCTET_STRING **oct); ++extern const void *__ASN1_pack_string; + #define ASN1_pack_string_of(type,obj,i2d,oct) \ +- ((ASN1_STRING *(*)(type *,I2D_OF(type),ASN1_OCTET_STRING **))openssl_fcast(ASN1_pack_string))(obj,i2d,oct) ++ ((ASN1_STRING *(*)(type *,I2D_OF(type),ASN1_OCTET_STRING **))__ASN1_pack_string)(obj,i2d,oct) + ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); + + void ASN1_STRING_set_default_mask(unsigned long mask); +Index: crypto/asn1/asn_pack.c +--- crypto/asn1/asn_pack.c.orig 2005-05-09 02:27:32 +0200 ++++ crypto/asn1/asn_pack.c 2007-05-23 11:35:26 +0200 +@@ -144,6 +144,7 @@ + i2d (obj, &p); + return octmp; + } ++const void * __attribute__((unused)) __ASN1_pack_string=(const void*)openssl_fcast(ASN1_pack_string); + + #endif + +Index: crypto/ocsp/ocsp.h +--- crypto/ocsp/ocsp.h.orig 2005-05-13 01:01:43 +0200 ++++ crypto/ocsp/ocsp.h 2007-05-23 11:35:26 +0200 +@@ -468,8 +468,9 @@ + + ASN1_STRING *ASN1_STRING_encode(ASN1_STRING *s, i2d_of_void *i2d, + void *data, STACK_OF(ASN1_OBJECT) *sk); ++extern const void *__ASN1_STRING_encode; + #define ASN1_STRING_encode_of(type,s,i2d,data,sk) \ +-((ASN1_STRING *(*)(ASN1_STRING *,I2D_OF(type),type *,STACK_OF(ASN1_OBJECT) *))openssl_fcast(ASN1_STRING_encode))(s,i2d,data,sk) ++((ASN1_STRING *(*)(ASN1_STRING *,I2D_OF(type),type *,STACK_OF(ASN1_OBJECT) *))__ASN1_STRING_encode)(s,i2d,data,sk) + + X509_EXTENSION *OCSP_crlID_new(char *url, long *n, char *tim); + +Index: crypto/ocsp/ocsp_ext.c +--- crypto/ocsp/ocsp_ext.c.orig 2005-03-31 15:57:53 +0200 ++++ crypto/ocsp/ocsp_ext.c 2007-05-23 11:35:26 +0200 +@@ -305,6 +305,7 @@ + if (b) OPENSSL_free(b); + return NULL; + } ++const void * __attribute__((unused)) __ASN1_STRING_encode=(const void*)openssl_fcast(ASN1_STRING_encode); + + /* Nonce handling functions */ + +Index: crypto/pem/pem.h +--- crypto/pem/pem.h.orig 2006-12-19 20:47:36 +0100 ++++ crypto/pem/pem.h 2007-05-23 11:35:26 +0200 +@@ -220,19 +220,19 @@ + #define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\ + { \ +-return(((type *(*)(D2I_OF(type),char *,FILE *,type **,pem_password_cb *,void *))openssl_fcast(PEM_ASN1_read))(d2i_##asn1, str,fp,x,cb,u)); \ ++return(((type *(*)(D2I_OF(type),char *,FILE *,type **,pem_password_cb *,void *))__PEM_ASN1_read)(d2i_##asn1, str,fp,x,cb,u)); \ + } + + #define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ + int PEM_write_##name(FILE *fp, type *x) \ + { \ +-return(((int (*)(I2D_OF(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write))(i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL)); \ ++return(((int (*)(I2D_OF(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))__PEM_ASN1_write)(i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL)); \ + } + + #define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ + int PEM_write_##name(FILE *fp, const type *x) \ + { \ +-return(((int (*)(I2D_OF_const(type),const char *,FILE *, const type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write))(i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL)); \ ++return(((int (*)(I2D_OF_const(type),const char *,FILE *, const type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))__PEM_ASN1_write)(i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL)); \ + } + + #define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ +@@ -240,7 +240,7 @@ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ +- return(((int (*)(I2D_OF(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write))(i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u)); \ ++ return(((int (*)(I2D_OF(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))__PEM_ASN1_write)(i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u)); \ + } + + #define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ +@@ -248,7 +248,7 @@ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ +- return(((int (*)(I2D_OF_const(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write))(i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u)); \ ++ return(((int (*)(I2D_OF_const(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))__PEM_ASN1_write)(i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u)); \ + } + + #endif +@@ -256,33 +256,33 @@ + #define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\ + { \ +-return(((type *(*)(D2I_OF(type),const char *,BIO *,type **,pem_password_cb *,void *))openssl_fcast(PEM_ASN1_read_bio))(d2i_##asn1, str,bp,x,cb,u)); \ ++return(((type *(*)(D2I_OF(type),const char *,BIO *,type **,pem_password_cb *,void *))__PEM_ASN1_read_bio)(d2i_##asn1, str,bp,x,cb,u)); \ + } + + #define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + int PEM_write_bio_##name(BIO *bp, type *x) \ + { \ +-return(((int (*)(I2D_OF(type),const char *,BIO *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write_bio))(i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL)); \ ++return(((int (*)(I2D_OF(type),const char *,BIO *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))__PEM_ASN1_write_bio)(i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL)); \ + } + + #define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + int PEM_write_bio_##name(BIO *bp, const type *x) \ + { \ +-return(((int (*)(I2D_OF_const(type),const char *,BIO *,const type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write_bio))(i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL)); \ ++return(((int (*)(I2D_OF_const(type),const char *,BIO *,const type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))__PEM_ASN1_write_bio)(i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL)); \ + } + + #define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ +- return(((int (*)(I2D_OF(type),const char *,BIO *,type *,const EVP_CIPHER *,unsigned char *,int,pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write_bio))(i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u)); \ ++ return(((int (*)(I2D_OF(type),const char *,BIO *,type *,const EVP_CIPHER *,unsigned char *,int,pem_password_cb *,void *))__PEM_ASN1_write_bio)(i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u)); \ + } + + #define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ +- return(((int (*)(I2D_OF_const(type),const char *,BIO *,type *,const EVP_CIPHER *,unsigned char *,int,pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write_bio))(i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u)); \ ++ return(((int (*)(I2D_OF_const(type),const char *,BIO *,type *,const EVP_CIPHER *,unsigned char *,int,pem_password_cb *,void *))__PEM_ASN1_write_bio)(i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u)); \ + } + + #define IMPLEMENT_PEM_write(name, type, str, asn1) \ +@@ -545,13 +545,15 @@ + pem_password_cb *cb, void *u); + void * PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, + void **x, pem_password_cb *cb, void *u); ++extern const void *__PEM_ASN1_read_bio; + #define PEM_ASN1_read_bio_of(type,d2i,name,bp,x,cb,u) \ +-((type *(*)(D2I_OF(type),const char *,BIO *,type **,pem_password_cb *,void *))openssl_fcast(PEM_ASN1_read_bio))(d2i,name,bp,x,cb,u) ++((type *(*)(D2I_OF(type),const char *,BIO *,type **,pem_password_cb *,void *))__PEM_ASN1_read_bio)(d2i,name,bp,x,cb,u) + int PEM_ASN1_write_bio(i2d_of_void *i2d,const char *name,BIO *bp,char *x, + const EVP_CIPHER *enc,unsigned char *kstr,int klen, + pem_password_cb *cb, void *u); ++extern const void *__PEM_ASN1_write_bio; + #define PEM_ASN1_write_bio_of(type,i2d,name,bp,x,enc,kstr,klen,cb,u) \ +- ((int (*)(I2D_OF(type),const char *,BIO *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))openssl_fcast(PEM_ASN1_write_bio))(i2d,name,bp,x,enc,kstr,klen,cb,u) ++ ((int (*)(I2D_OF(type),const char *,BIO *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))__PEM_ASN1_write_bio)(i2d,name,bp,x,enc,kstr,klen,cb,u) + + STACK_OF(X509_INFO) * PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u); + int PEM_X509_INFO_write_bio(BIO *bp,X509_INFO *xi, EVP_CIPHER *enc, +@@ -564,11 +566,13 @@ + int PEM_write(FILE *fp,char *name,char *hdr,unsigned char *data,long len); + void * PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); ++extern const void *__PEM_ASN1_read; + int PEM_ASN1_write(i2d_of_void *i2d,const char *name,FILE *fp, + char *x,const EVP_CIPHER *enc,unsigned char *kstr, + int klen,pem_password_cb *callback, void *u); + STACK_OF(X509_INFO) * PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); ++extern const void *__PEM_ASN1_write; + #endif + + int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type, +Index: crypto/pem/pem_lib.c +--- crypto/pem/pem_lib.c.orig 2007-02-21 14:48:49 +0100 ++++ crypto/pem/pem_lib.c 2007-05-23 11:35:26 +0200 +@@ -174,6 +174,7 @@ + BIO_free(b); + return(ret); + } ++const void * __attribute__((unused)) __PEM_ASN1_read=(const void*)openssl_fcast(PEM_ASN1_read); + #endif + + static int check_pem(const char *nm, const char *name) +@@ -277,6 +278,7 @@ + BIO_free(b); + return(ret); + } ++const void * __attribute__((unused)) __PEM_ASN1_write=(const void*)openssl_fcast(PEM_ASN1_write); + #endif + + int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, +@@ -381,6 +383,7 @@ + } + return(ret); + } ++const void * __attribute__((unused)) __PEM_ASN1_write_bio=(const void*)openssl_fcast(PEM_ASN1_write_bio); + + int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *plen, + pem_password_cb *callback,void *u) +Index: crypto/pem/pem_oth.c +--- crypto/pem/pem_oth.c.orig 2005-03-31 15:57:54 +0200 ++++ crypto/pem/pem_oth.c 2007-05-23 11:35:26 +0200 +@@ -84,3 +84,4 @@ + OPENSSL_free(data); + return(ret); + } ++const void * __attribute__((unused)) __PEM_ASN1_read_bio=(const void*)openssl_fcast(PEM_ASN1_read_bio); @@ . patch -p0 <<'@@ .' Index: openpkg-src/openssl/openssl.spec ============================================================================ $ cvs diff -u -r1.84 -r1.85 openssl.spec --- openpkg-src/openssl/openssl.spec 5 Mar 2007 12:38:18 -0000 1.84 +++ openpkg-src/openssl/openssl.spec 23 May 2007 09:41:03 -0000 1.85 @@ -33,7 +33,7 @@ Group: SSL License: BSD-style Version: 0.9.8e -Release: 20070305 +Release: 20070523 # package options %option with_zlib no @@ . ______________________________________________________________________ OpenPKG http://openpkg.org CVS Repository Commit List openpkg-cvs@openpkg.org