From 674f79797c93c770d84aec295dd36cec87cb5f27 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Fri, 20 Apr 2007 20:30:08 +0000 Subject: [PATCH] - update from bero Changed files: openssl-gcc_4_2.patch -> 1.4 --- openssl-gcc_4_2.patch | 203 +++++++++++++++++++++++++++--------------- 1 file changed, 132 insertions(+), 71 deletions(-) diff --git a/openssl-gcc_4_2.patch b/openssl-gcc_4_2.patch index 1edc284..13a237b 100644 --- a/openssl-gcc_4_2.patch +++ b/openssl-gcc_4_2.patch @@ -1,47 +1,10 @@ -From: b...@arklinux.org (Bernhard Rosenkraenzer) -Newsgroups: mailing.openssl.dev -Subject: Re: OpenSSL breaks with gcc 4.2 -Date: Thu, 9 Nov 2006 01:56:49 +0800 (CST) -Organization: NCTU CSIE FreeBSD Server -Message-ID: - -On Tuesday, 7. November 2006 15:54, Dr. Stephen Henson wrote: -> On Tue, Nov 07, 2006, Bernhard Rosenkraenzer wrote: -> > gcc 4.2 no longer allows function casting - which is used rather heavily -> > by openssl. (To make things worse, it compiles but inserts abort() -> > statements resulting in app crashes). -> -> Ugh, I would've thought that flagging a compiliation error would make more -> sense rather that outputting bad code... - -Agreed... Unfortunately sometimes gcc developers' decisions make much sense -from the point of the compiler implementor than from that of someone actually -using it. - -> > Is there a fix to make OpenSSL compatible with gcc 4.2/4.3 yet? -> -> No there isn't yet, some technique will be needed to make this still work -> by tweaking some of the macros. Does casting a function to (void *) first -> then the function cast work? - -Yes, but only in a really really ugly way. -I've attached a patch that make it compile (and work), but I can't say I like -it. -I've tried all sorts of other things (like putting the void* cast directly -into the defines, or even adding a (char*) cast and running +1-1 type -arithmetics on it), but gcc's optimizer is too smart and throws it away, and -errors out just as if it wasn't there), but the attached patch is the only -quick fix that works. - -I hope someone can come up with a better idea... - ---- openssl-0.9.8d/crypto/asn1/asn1.h.ark 2006-11-08 19:03:36.000000000 +0100 -+++ openssl-0.9.8d/crypto/asn1/asn1.h 2006-11-08 19:32:10.000000000 +0100 +--- openssl-0.9.8e/crypto/asn1/asn1.h.gcc42~ 2006-02-19 14:45:22.000000000 +0100 ++++ openssl-0.9.8e/crypto/asn1/asn1.h 2007-03-04 12:35:59.000000000 +0100 @@ -902,23 +902,26 @@ /* Used to implement other functions */ void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x); -+static void * __attribute__((unused)) __ASN1_dup=(void *)openssl_fcast(ASN1_dup); ++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) @@ -53,13 +16,13 @@ I hope someone can come up with a better idea... #ifndef OPENSSL_NO_FP_API void *ASN1_d2i_fp(void *(*xnew)(void), d2i_of_void *d2i, FILE *in, void **x); -+static void * __attribute__((unused)) __ASN1_d2i_fp=(void *)openssl_fcast(ASN1_d2i_fp); ++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); -+static void * __attribute__((unused)) __ASN1_i2d_fp=(void *)openssl_fcast(ASN1_i2d_fp); ++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) @@ -73,13 +36,13 @@ I hope someone can come up with a better idea... #ifndef OPENSSL_NO_BIO void *ASN1_d2i_bio(void *(*xnew)(void), d2i_of_void *d2i, BIO *in, void **x); -+static void * __attribute__((unused)) __ASN1_d2i_bio=(void *)openssl_fcast(ASN1_d2i_bio); ++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); -+static void * __attribute__((unused)) __ASN1_i2d_bio=(void *)openssl_fcast(ASN1_i2d_bio); ++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) @@ -93,34 +56,33 @@ I hope someone can come up with a better idea... 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); -+static void * __attribute__((unused)) __ASN1_pack_string=(void *)openssl_fcast(ASN1_pack_string); ++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); ---- openssl-0.9.8d/crypto/ocsp/ocsp.h.ark 2006-11-08 19:28:48.000000000 +0100 -+++ openssl-0.9.8d/crypto/ocsp/ocsp.h 2006-11-08 19:29:47.000000000 +0100 +--- openssl-0.9.8e/crypto/ocsp/ocsp.h.gcc42~ 2005-05-13 01:01:43.000000000 +0200 ++++ openssl-0.9.8e/crypto/ocsp/ocsp.h 2007-03-04 12:35:59.000000000 +0100 @@ -468,8 +468,9 @@ ASN1_STRING *ASN1_STRING_encode(ASN1_STRING *s, i2d_of_void *i2d, void *data, STACK_OF(ASN1_OBJECT) *sk); -+static void * __attribute__((unused)) __ASN1_STRING_encode=(void *)openssl_fcast(ASN1_STRING_encode); ++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); ---- openssl-0.9.8d/crypto/pem/pem.h.ark 2006-11-08 19:09:51.000000000 +0100 -+++ openssl-0.9.8d/crypto/pem/pem.h 2006-11-08 19:43:45.000000000 +0100 -@@ -220,19 +220,22 @@ +--- openssl-0.9.8e/crypto/pem/pem.h.gcc42~ 2006-12-19 20:47:36.000000000 +0100 ++++ openssl-0.9.8e/crypto/pem/pem.h 2007-03-04 12:44:19.000000000 +0100 +@@ -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)); \ -+static void *__PEM_ASN1_read=(void *)openssl_fcast(PEM_ASN1_read); \ +return(((type *(*)(D2I_OF(type),char *,FILE *,type **,pem_password_cb *,void *))__PEM_ASN1_read)(d2i_##asn1, str,fp,x,cb,u)); \ } @@ -128,7 +90,6 @@ I hope someone can come up with a better idea... 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)); \ -+static void *__PEM_ASN1_write=(void *)openssl_fcast(PEM_ASN1_write); \ +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)); \ } @@ -136,37 +97,33 @@ I hope someone can come up with a better idea... 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)); \ -+static void *__PEM_ASN1_write=(void *)openssl_fcast(PEM_ASN1_write); \ +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 +243,8 @@ +@@ -240,7 +243,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)); \ -+ static void *__PEM_ASN1_write=(void *)openssl_fcast(PEM_ASN1_write); \ + 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 +252,8 @@ +@@ -248,7 +252,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)); \ -+ static void *__PEM_ASN1_write=(void *)openssl_fcast(PEM_ASN1_write); \ + 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 +261,38 @@ +@@ -256,33 +261,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)); \ -+static void *__PEM_ASN1_read_bio=(void *)openssl_fcast(PEM_ASN1_read_bio); \ +return(((type *(*)(D2I_OF(type),const char *,BIO *,type **,pem_password_cb *,void *))__PEM_ASN1_read_bio)(d2i_##asn1, str,bp,x,cb,u)); \ } @@ -174,7 +131,6 @@ I hope someone can come up with a better idea... 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)); \ -+static void *__PEM_ASN1_write_bio=(void *)openssl_fcast(PEM_ASN1_write_bio); \ +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)); \ } @@ -182,7 +138,6 @@ I hope someone can come up with a better idea... 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)); \ -+static void *__PEM_ASN1_write_bio=(void *)openssl_fcast(PEM_ASN1_write_bio); \ +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)); \ } @@ -191,7 +146,6 @@ I hope someone can come up with a better idea... 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)); \ -+ static void *__PEM_ASN1_write_bio=(void *)openssl_fcast(PEM_ASN1_write_bio); \ + 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)); \ } @@ -200,7 +154,6 @@ I hope someone can come up with a better idea... 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)); \ -+ static void *__PEM_ASN1_write_bio=(void *)openssl_fcast(PEM_ASN1_write_bio); \ + 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)); \ } @@ -209,22 +162,130 @@ I hope someone can come up with a better idea... 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); -+static void * __attribute__((unused)) __PEM_ASN1_read_bio=(void *)openssl_fcast(PEM_ASN1_read_bio); ++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); -+static void * __attribute__((unused)) __PEM_ASN1_write_bio=(void *)openssl_fcast(PEM_ASN1_write_bio); ++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, - -______________________________________________________________________ -OpenSSL Project http://www.openssl.org -Development Mailing List openssl-...@openssl.org -Automated List Manager majord...@openssl.org +@@ -566,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, +--- openssl-0.9.8e/crypto/asn1/a_d2i_fp.c.ark 2007-04-17 17:50:28.000000000 +0000 ++++ openssl-0.9.8e/crypto/asn1/a_d2i_fp.c 2007-04-17 19:17:24.000000000 +0000 +@@ -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 + +--- openssl-0.9.8e/crypto/asn1/a_dup.c.ark 2007-04-17 17:49:31.000000000 +0000 ++++ openssl-0.9.8e/crypto/asn1/a_dup.c 2007-04-17 17:49:59.000000000 +0000 +@@ -82,6 +82,7 @@ + OPENSSL_free(b); + return(ret); + } ++const void * __attribute__((unused)) __ASN1_dup=(const void*)openssl_fcast(ASN1_dup); + + #endif + +--- openssl-0.9.8e/crypto/asn1/a_i2d_fp.c.ark 2007-04-17 17:52:19.000000000 +0000 ++++ openssl-0.9.8e/crypto/asn1/a_i2d_fp.c 2007-04-17 19:19:29.000000000 +0000 +@@ -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 + +--- openssl-0.9.8e/crypto/asn1/asn_pack.c.ark 2007-04-17 19:18:35.000000000 +0000 ++++ openssl-0.9.8e/crypto/asn1/asn_pack.c 2007-04-17 19:19:20.000000000 +0000 +@@ -144,6 +144,7 @@ + i2d (obj, &p); + return octmp; + } ++const void * __attribute__((unused)) __ASN1_pack_string=(const void*)openssl_fcast(ASN1_pack_string); + + #endif + +--- openssl-0.9.8e/crypto/ocsp/ocsp_ext.c.ark 2007-04-17 19:20:35.000000000 +0000 ++++ openssl-0.9.8e/crypto/ocsp/ocsp_ext.c 2007-04-17 19:21:19.000000000 +0000 +@@ -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 */ + +--- openssl-0.9.8e/crypto/pem/pem_lib.c.ark 2007-04-17 19:21:44.000000000 +0000 ++++ openssl-0.9.8e/crypto/pem/pem_lib.c 2007-04-17 19:26:35.000000000 +0000 +@@ -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) +--- openssl-0.9.8e/crypto/pem/pem_oth.c.ark 2007-04-17 19:27:10.000000000 +0000 ++++ openssl-0.9.8e/crypto/pem/pem_oth.c 2007-04-17 19:30:00.000000000 +0000 +@@ -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); -- 2.43.0