mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
gcc 2.92 compatibility
config/ac-macros/misc.m4: better USE_MYSYS_NEW detection configure.in: better USE_MYSYS_NEW detection extra/yassl/src/Makefile.am: better USE_MYSYS_NEW detection extra/yassl/taocrypt/include/runtime.hpp: better USE_MYSYS_NEW detection
This commit is contained in:
@ -693,3 +693,20 @@ dnl ---------------------------------------------------------------------------
|
||||
dnl END OF MYSQL_CHECK_BIG_TABLES SECTION
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
dnl MYSQL_NEEDS_MYSYS_NEW
|
||||
AC_DEFUN([MYSQL_NEEDS_MYSYS_NEW],
|
||||
[AC_CACHE_CHECK([needs mysys_new helpers], mysql_use_mysys_new,
|
||||
[
|
||||
AC_LANG_PUSH(C++)
|
||||
AC_TRY_LINK([], [
|
||||
class A { public: int b; }; A *a=new A; a->b=10; delete a;
|
||||
], mysql_use_mysys_new=no, mysql_use_mysys_new=yes)
|
||||
AC_LANG_POP(C++)
|
||||
])
|
||||
if test "$mysql_use_mysys_new" = "yes"
|
||||
then
|
||||
AC_DEFINE([USE_MYSYS_NEW], [1], [Needs to use mysys_new helpers])
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
|
27
configure.in
27
configure.in
@ -336,32 +336,6 @@ AC_SUBST(LD)
|
||||
AC_SUBST(INSTALL_SCRIPT)
|
||||
|
||||
export CC CXX CFLAGS LD LDFLAGS AR
|
||||
if test "$GXX" = "yes"
|
||||
then
|
||||
# mysqld requires -fno-implicit-templates.
|
||||
# Disable exceptions as they seams to create problems with gcc and threads.
|
||||
# mysqld doesn't use run-time-type-checking, so we disable it.
|
||||
CXXFLAGS="$CXXFLAGS -fno-implicit-templates -fno-exceptions -fno-rtti"
|
||||
|
||||
CXX_VERNO=`echo $CXX_VERSION | sed -e 's/[[^0-9. ]]//g; s/^ *//g; s/ .*//g'`
|
||||
case "$CXX_VERNO" in
|
||||
3.*)
|
||||
USE_MYSYS_NEW="-DUSE_MYSYS_NEW" # yassl needs it
|
||||
if echo $CXX | grep gcc > /dev/null 2>&1
|
||||
then
|
||||
# If you are using 'gcc' 3.0 (not g++) to compile C++ programs on Linux,
|
||||
# we will gets some problems when linking static programs.
|
||||
# The following code is used to fix this problem.
|
||||
CXXFLAGS="$CXXFLAGS $USE_MYSYS_NEW"
|
||||
AC_MSG_WARN([Using MYSYS_NEW for static linking with gcc])
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
USE_MYSYS_NEW=""
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(USE_MYSYS_NEW)
|
||||
fi
|
||||
|
||||
# Avoid bug in fcntl on some versions of linux
|
||||
AC_MSG_CHECKING("if we should use 'skip-locking' as default for $target_os")
|
||||
@ -1730,6 +1704,7 @@ AC_TYPE_OFF_T
|
||||
AC_STRUCT_ST_RDEV
|
||||
AC_HEADER_TIME
|
||||
AC_STRUCT_TM
|
||||
MYSQL_NEEDS_MYSYS_NEW
|
||||
# AC_CHECK_SIZEOF return 0 when it does not find the size of a
|
||||
# type. We want a error instead.
|
||||
AC_CHECK_SIZEOF(char, 1)
|
||||
|
@ -5,4 +5,3 @@ libyassl_a_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \
|
||||
handshake.cpp lock.cpp log.cpp socket_wrapper.cpp ssl.cpp \
|
||||
timer.cpp yassl_imp.cpp yassl_error.cpp yassl_int.cpp
|
||||
EXTRA_DIST = ../include/*.hpp ../include/openssl/*.h
|
||||
AM_CXXFLAGS=@USE_MYSYS_NEW@
|
||||
|
@ -2092,6 +2092,7 @@ void InitClientKeyFactory(ClientKeyFactory& ckf)
|
||||
} // namespace
|
||||
|
||||
#ifdef __GNUC__
|
||||
namespace mySTL {
|
||||
template class mySTL::list<unsigned char*>;
|
||||
template yaSSL::del_ptr_zero mySTL::for_each(mySTL::list<unsigned char*>::iterator, mySTL::list<unsigned char*>::iterator, yaSSL::del_ptr_zero);
|
||||
template mySTL::pair<int, yaSSL::Message* (*)()>* mySTL::uninit_copy<mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*>(mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*);
|
||||
@ -2112,5 +2113,6 @@ template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::SSL_SESSION*>::i
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::input_buffer*>::iterator, mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::output_buffer*>::iterator, mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::x509*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::x509*>::iterator, mySTL::list<yaSSL::x509*>::iterator, yaSSL::del_ptr_zero);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1951,7 +1951,7 @@ char* X509_NAME::GetName()
|
||||
X509::X509(const char* i, size_t iSz, const char* s, size_t sSz)
|
||||
: issuer_(i, iSz), subject_(s, sSz)
|
||||
{}
|
||||
|
||||
|
||||
|
||||
X509_NAME* X509::GetIssuer()
|
||||
{
|
||||
@ -1967,7 +1967,9 @@ X509_NAME* X509::GetSubject()
|
||||
} // namespace
|
||||
|
||||
#ifdef __GNUC__
|
||||
namespace mySTL {
|
||||
template yaSSL::yassl_int_cpp_local1::SumData mySTL::for_each<mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumData>(mySTL::list<yaSSL::input_buffer*>::iterator, mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumData);
|
||||
template yaSSL::yassl_int_cpp_local1::SumBuffer mySTL::for_each<mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumBuffer>(mySTL::list<yaSSL::output_buffer*>::iterator, mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumBuffer);
|
||||
template mySTL::list<yaSSL::SSL_SESSION*>::iterator mySTL::find_if<mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::yassl_int_cpp_local2::sess_match>(mySTL::list<yaSSL::SSL_SESSION*>::iterator, mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::yassl_int_cpp_local2::sess_match);
|
||||
}
|
||||
#endif
|
||||
|
@ -25,10 +25,11 @@
|
||||
|
||||
|
||||
|
||||
#if !defined(yaSSL_NEW_HPP) && defined(USE_MYSYS_NEW)
|
||||
#if !defined(yaSSL_NEW_HPP) && defined(__GNUC__)
|
||||
|
||||
#define yaSSL_NEW_HPP
|
||||
|
||||
#if __GNUC__ > 2
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
@ -66,4 +67,6 @@ static int __cxa_pure_virtual()
|
||||
|
||||
} // extern "C"
|
||||
|
||||
#endif // yaSSL_NEW_HPP
|
||||
#endif // __GNUC__ > 2
|
||||
#endif // yaSSL_NEW_HPP && __GNUC__
|
||||
|
||||
|
@ -5,4 +5,3 @@ libtaocrypt_a_SOURCES = aes.cpp aestables.cpp algebra.cpp arc4.cpp asn.cpp \
|
||||
coding.cpp dh.cpp des.cpp dsa.cpp file.cpp hash.cpp integer.cpp \
|
||||
md2.cpp md5.cpp misc.cpp random.cpp ripemd.cpp rsa.cpp sha.cpp
|
||||
EXTRA_DIST = ../include/*.hpp
|
||||
AM_CXXFLAGS=@USE_MYSYS_NEW@
|
||||
|
@ -4168,16 +4168,13 @@ Integer CRT(const Integer &xp, const Integer &p, const Integer &xq,
|
||||
return p * (u * (xq-xp) % q) + xp;
|
||||
}
|
||||
|
||||
|
||||
#ifdef __GNUC__
|
||||
template Integer StringToInteger<char>(char const*);
|
||||
template Integer StringToInteger<wchar_t>(wchar_t const*);
|
||||
template class EuclideanDomainOf<Integer>;
|
||||
template class AbstractEuclideanDomain<Integer>;
|
||||
template unsigned int DivideThreeWordsByTwo<unsigned int, DWord>(unsigned int*, unsigned int, unsigned int, DWord*);
|
||||
#endif
|
||||
|
||||
} // namespace
|
||||
|
||||
#ifdef __GNUC__
|
||||
template TaoCrypt::Integer TaoCrypt::StringToInteger<char>(char const*);
|
||||
template TaoCrypt::Integer TaoCrypt::StringToInteger<wchar_t>(wchar_t const*);
|
||||
template class TaoCrypt::EuclideanDomainOf<TaoCrypt::Integer>;
|
||||
template class TaoCrypt::AbstractEuclideanDomain<TaoCrypt::Integer>;
|
||||
template unsigned int TaoCrypt::DivideThreeWordsByTwo<unsigned int, TaoCrypt::DWord>(unsigned int*, unsigned int, unsigned int, TaoCrypt::DWord*);
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -211,24 +211,28 @@ word32 SSL_Decrypt(const RSA_PublicKey& key, const byte* sig, byte* plain)
|
||||
lengths.PaddedBlockBitLength(), plain);
|
||||
}
|
||||
|
||||
#ifdef __GNUC__
|
||||
template AllocatorWithCleanup<unsigned char>::pointer StdReallocate<unsigned char, AllocatorWithCleanup<unsigned char> >(AllocatorWithCleanup<unsigned char>&, unsigned char*, AllocatorWithCleanup<unsigned char>::size_type, AllocatorWithCleanup<unsigned char>::size_type, bool);
|
||||
template AllocatorWithCleanup<unsigned int>::pointer StdReallocate<unsigned int, AllocatorWithCleanup<unsigned int> >(AllocatorWithCleanup<unsigned int>&, unsigned int*, AllocatorWithCleanup<unsigned int>::size_type, AllocatorWithCleanup<unsigned int>::size_type, bool);
|
||||
template class AbstractGroup<Integer>;
|
||||
template class AbstractRing<Integer>;
|
||||
template class RSA_Decryptor<RSA_BlockType2>;
|
||||
template class RSA_Encryptor<RSA_BlockType1>;
|
||||
template class RSA_Encryptor<RSA_BlockType2>;
|
||||
#endif
|
||||
|
||||
} // namespace
|
||||
|
||||
#ifdef __GNUC__
|
||||
template TaoCrypt::AllocatorWithCleanup<unsigned char>::pointer TaoCrypt::StdReallocate<unsigned char, TaoCrypt::AllocatorWithCleanup<unsigned char> >(TaoCrypt::AllocatorWithCleanup<unsigned char>&, unsigned char*, TaoCrypt::AllocatorWithCleanup<unsigned char>::size_type, TaoCrypt::AllocatorWithCleanup<unsigned char>::size_type, bool);
|
||||
template TaoCrypt::AllocatorWithCleanup<unsigned int>::pointer TaoCrypt::StdReallocate<unsigned int, TaoCrypt::AllocatorWithCleanup<unsigned int> >(TaoCrypt::AllocatorWithCleanup<unsigned int>&, unsigned int*, TaoCrypt::AllocatorWithCleanup<unsigned int>::size_type, TaoCrypt::AllocatorWithCleanup<unsigned int>::size_type, bool);
|
||||
template TaoCrypt::Integer* mySTL::uninit_copy<TaoCrypt::Integer*, TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*, TaoCrypt::Integer*);
|
||||
template TaoCrypt::Integer* mySTL::uninit_fill_n<TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer>(TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer const&);
|
||||
template TaoCrypt::WindowSlider* mySTL::uninit_copy<TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*>(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*);
|
||||
template class TaoCrypt::AbstractGroup<TaoCrypt::Integer>;
|
||||
template class TaoCrypt::AbstractRing<TaoCrypt::Integer>;
|
||||
template class TaoCrypt::RSA_Decryptor<TaoCrypt::RSA_BlockType2>;
|
||||
template class TaoCrypt::RSA_Encryptor<TaoCrypt::RSA_BlockType1>;
|
||||
template class TaoCrypt::RSA_Encryptor<TaoCrypt::RSA_BlockType2>;
|
||||
template mySTL::vector<TaoCrypt::Integer>* mySTL::uninit_fill_n<mySTL::vector<TaoCrypt::Integer>*, unsigned int, mySTL::vector<TaoCrypt::Integer> >(mySTL::vector<TaoCrypt::Integer>*, unsigned int, mySTL::vector<TaoCrypt::Integer> const&);
|
||||
template void mySTL::destroy<TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*);
|
||||
template void mySTL::destroy<TaoCrypt::WindowSlider*>(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*);
|
||||
template void mySTL::destroy<mySTL::vector<TaoCrypt::Integer>*>(mySTL::vector<TaoCrypt::Integer>*, mySTL::vector<TaoCrypt::Integer>*);
|
||||
namespace mySTL {
|
||||
template TaoCrypt::Integer* uninit_copy<TaoCrypt::Integer*, TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*, TaoCrypt::Integer*);
|
||||
template TaoCrypt::Integer* uninit_fill_n<TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer>(TaoCrypt::Integer*, unsigned int, TaoCrypt::Integer const&);
|
||||
template TaoCrypt::WindowSlider* uninit_copy<TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*>(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*);
|
||||
template vector<TaoCrypt::Integer>* uninit_fill_n<vector<TaoCrypt::Integer>*, unsigned int, vector<TaoCrypt::Integer> >(vector<TaoCrypt::Integer>*, unsigned int, vector<TaoCrypt::Integer> const&);
|
||||
template void destroy<TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*);
|
||||
template void destroy<TaoCrypt::WindowSlider*>(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*);
|
||||
template void destroy<vector<TaoCrypt::Integer>*>(vector<TaoCrypt::Integer>*, vector<TaoCrypt::Integer>*);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user