Subject: | XS name colition on bn2sv"" |
eThe Net::SSLeay module is already using in XS the function name "bn2sv", resulting in compiling error, at least if you try to compile statically. (See attached linkerror.txt)
The following short patch fixes this issue:
--- failing/Crypt-OpenSSL-RSA-0.28/RSA.xs 2011-08-24 22:57:35.000000000 +0000
+++ working/Crypt-OpenSSL-RSA-0.28/RSA.xs 2017-12-23 20:44:17.182419988 +0000
@@ -136,7 +136,7 @@
}
}
-SV* bn2sv(BIGNUM* p_bn)
+SV* cor_bn2sv(BIGNUM* p_bn)
{
return p_bn != NULL
? sv_2mortal(newSViv((IV) BN_dup(p_bn)))
@@ -387,14 +387,14 @@
{
RSA* rsa;
rsa = p_rsa->rsa;
- XPUSHs(bn2sv(rsa->n));
- XPUSHs(bn2sv(rsa->e));
- XPUSHs(bn2sv(rsa->d));
- XPUSHs(bn2sv(rsa->p));
- XPUSHs(bn2sv(rsa->q));
- XPUSHs(bn2sv(rsa->dmp1));
- XPUSHs(bn2sv(rsa->dmq1));
- XPUSHs(bn2sv(rsa->iqmp));
+ XPUSHs(cor_bn2sv(rsa->n));
+ XPUSHs(cor_bn2sv(rsa->e));
+ XPUSHs(cor_bn2sv(rsa->d));
+ XPUSHs(cor_bn2sv(rsa->p));
+ XPUSHs(cor_bn2sv(rsa->q));
+ XPUSHs(cor_bn2sv(rsa->dmp1));
+ XPUSHs(cor_bn2sv(rsa->dmq1));
+ XPUSHs(cor_bn2sv(rsa->iqmp));
}
SV*
Subject: | linkerror.txt |
cc -ldl -L/usr/local/lib RSA.o -Os ./perlmain.o -o perl "blib/arch/auto/Crypt/OpenSSL/RSA/RSA.a" "/opt/lala2/perl/perl/lib/auto/threads/threads.a" "/opt/lala2/perl/perl/lib/auto/threads/shared/shared.a" "/opt/lala2/perl/perl/lib/auto/re/re.a" "/opt/lala2/perl/perl/lib/auto/mro/mro.a" "/opt/lala2/perl/perl/lib/auto/attributes/attributes.a" "/opt/lala2/perl/perl/lib/auto/arybase/arybase.a" "/opt/lala2/perl/perl/lib/auto/Unicode/Normalize/Normalize.a" "/opt/lala2/perl/perl/lib/auto/Unicode/Collate/Collate.a" "/opt/lala2/perl/perl/lib/auto/Time/Piece/Piece.a" "/opt/lala2/perl/perl/lib/auto/Time/HiRes/HiRes.a" "/opt/lala2/perl/perl/lib/auto/Tie/Hash/NamedCapture/NamedCapture.a" "/opt/lala2/perl/perl/lib/auto/Test/LeakTrace/LeakTrace.a" "/opt/lala2/perl/perl/lib/auto/Sys/Syslog/Syslog.a" "/opt/lala2/perl/perl/lib/auto/Sys/Hostname/Hostname.a" "/opt/lala2/perl/perl/lib/auto/Storable/Storable.a" "/opt/lala2/perl/perl/lib/auto/Socket/Socket.a" "/opt/lala2/perl/perl/lib/auto/SDBM_File/SDBM_File.a" "/opt/lala2/perl/perl/lib/auto/PerlIO/via/via.a" "/opt/lala2/perl/perl/lib/auto/PerlIO/scalar/scalar.a" "/opt/lala2/perl/perl/lib/auto/PerlIO/mmap/mmap.a" "/opt/lala2/perl/perl/lib/auto/PerlIO/encoding/encoding.a" "/opt/lala2/perl/perl/lib/auto/PPI/XS/XS.a" "/opt/lala2/perl/perl/lib/auto/POSIX/POSIX.a" "/opt/lala2/perl/perl/lib/auto/POE/Filter/SSL/SSL.a" "/opt/lala2/perl/perl/lib/auto/Opcode/Opcode.a" "/opt/lala2/perl/perl/lib/auto/Net/SSLeay/SSLeay.a" "/opt/lala2/perl/perl/lib/auto/Math/BigInt/FastCalc/FastCalc.a" "/opt/lala2/perl/perl/lib/auto/MIME/Base64/Base64.a" "/opt/lala2/perl/perl/lib/auto/List/Util/Util.a" "/opt/lala2/perl/perl/lib/auto/JSON/XS/XS.a" "/opt/lala2/perl/perl/lib/auto/IPC/SysV/SysV.a" "/opt/lala2/perl/perl/lib/auto/IO/Tty/Tty.a" "/opt/lala2/perl/perl/lib/auto/IO/IO.a" "/opt/lala2/perl/perl/lib/auto/I18N/Langinfo/Langinfo.a" "/opt/lala2/perl/perl/lib/auto/Hash/Util/Util.a" "/opt/lala2/perl/perl/lib/auto/Hash/Util/FieldHash/FieldHash.a" "/opt/lala2/perl/perl/lib/auto/HTML/Parser/Parser.a" "/opt/lala2/perl/perl/lib/auto/Filter/Util/Call/Call.a" "/opt/lala2/perl/perl/lib/auto/File/Glob/Glob.a" "/opt/lala2/perl/perl/lib/auto/File/DosGlob/DosGlob.a" "/opt/lala2/perl/perl/lib/auto/Fcntl/Fcntl.a" "/opt/lala2/perl/perl/lib/auto/Encode/Unicode/Unicode.a" "/opt/lala2/perl/perl/lib/auto/Encode/TW/TW.a" "/opt/lala2/perl/perl/lib/auto/Encode/Symbol/Symbol.a" "/opt/lala2/perl/perl/lib/auto/Encode/KR/KR.a" "/opt/lala2/perl/perl/lib/auto/Encode/JP/JP.a" "/opt/lala2/perl/perl/lib/auto/Encode/Encode.a" "/opt/lala2/perl/perl/lib/auto/Encode/EBCDIC/EBCDIC.a" "/opt/lala2/perl/perl/lib/auto/Encode/CN/CN.a" "/opt/lala2/perl/perl/lib/auto/Encode/Byte/Byte.a" "/opt/lala2/perl/perl/lib/auto/Digest/SHA3/SHA3.a" "/opt/lala2/perl/perl/lib/auto/Digest/SHA/SHA.a" "/opt/lala2/perl/perl/lib/auto/Digest/MD5/MD5.a" "/opt/lala2/perl/perl/lib/auto/Devel/Size/Size.a" "/opt/lala2/perl/perl/lib/auto/Devel/Peek/Peek.a" "/opt/lala2/perl/perl/lib/auto/Data/Dumper/Dumper.a" "/opt/lala2/perl/perl/lib/auto/Cwd/Cwd.a" "/opt/lala2/perl/perl/lib/auto/Crypt/Rijndael/Rijndael.a" "/opt/lala2/perl/perl/lib/auto/Crypt/OpenSSL/Random/Random.a" "/opt/lala2/perl/perl/lib/auto/Crypt/OpenSSL/Bignum/Bignum.a" "/opt/lala2/perl/perl/lib/auto/Compress/Raw/Zlib/Zlib.a" "/opt/lala2/perl/perl/lib/auto/Compress/Raw/Bzip2/Bzip2.a" "/opt/lala2/perl/perl/lib/auto/Clone/Clone.a" "/opt/lala2/perl/perl/lib/auto/B/B.a" "/opt/lala2/perl/perl/lib/CORE/libperl.a" `cat blib/arch/auto/Crypt/OpenSSL/RSA/extralibs.all` -lm -lcrypt
/opt/lala2/perl/perl/lib/auto/Net/SSLeay/SSLeay.a(SSLeay.o): In function `bn2sv':
/opt/lala2/perl/cpan/build/Net-SSLeay-1.82-1/SSLeay.xs:1633: multiple definition of `bn2sv'
RSA.o:/opt/lala2/perl/cpan/build/Crypt-OpenSSL-RSA-0.28-5/RSA.xs:143: first defined here
collect2: error: ld returned 1 exit status