diff options
-rw-r--r-- | client/Makefile.am | 4 | ||||
-rw-r--r-- | client/mysqladmin.cc | 3 | ||||
-rw-r--r-- | client/mysqlbinlog.cc | 1 | ||||
-rw-r--r-- | configure.in | 74 | ||||
-rw-r--r-- | extra/yassl/mySTL/list.hpp | 10 | ||||
-rw-r--r-- | extra/yassl/src/Makefile.am | 2 | ||||
-rw-r--r-- | extra/yassl/src/crypto_wrapper.cpp | 8 | ||||
-rw-r--r-- | extra/yassl/src/yassl_imp.cpp | 25 | ||||
-rw-r--r-- | extra/yassl/src/yassl_int.cpp | 18 | ||||
-rw-r--r-- | extra/yassl/taocrypt/include/runtime.hpp | 28 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/Makefile.am | 2 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/integer.cpp | 9 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/rsa.cpp | 19 | ||||
-rw-r--r-- | include/my_global.h | 11 | ||||
-rw-r--r-- | mysys/my_new.cc | 9 | ||||
-rw-r--r-- | server-tools/instance-manager/command.cc | 3 | ||||
-rw-r--r-- | sql/ha_blackhole.cc | 2 | ||||
-rw-r--r-- | sql/ha_innodb.cc | 2 | ||||
-rw-r--r-- | sql/item_func.cc | 6 | ||||
-rw-r--r-- | sql/mysqld.cc | 1 |
20 files changed, 136 insertions, 101 deletions
diff --git a/client/Makefile.am b/client/Makefile.am index 58dcebfd852..791da2760a5 100644 --- a/client/Makefile.am +++ b/client/Makefile.am @@ -30,10 +30,10 @@ noinst_HEADERS = sql_string.h completion_hash.h my_readline.h \ mysql_SOURCES = mysql.cc readline.cc sql_string.cc completion_hash.cc mysqladmin_SOURCES = mysqladmin.cc mysql_LDADD = @readline_link@ @TERMCAP_LIB@ $(LDADD) $(CXXLDFLAGS) -mysqlbinlog_LDADD = $(LDADD) $(CXXLDFLAGS) mysqltest_SOURCES= mysqltest.c $(top_srcdir)/mysys/my_getsystime.c mysqltest_LDADD = $(top_builddir)/regex/libregex.a $(LDADD) -mysqlbinlog_SOURCES = mysqlbinlog.cc $(top_srcdir)/mysys/mf_tempdir.c +mysqlbinlog_SOURCES = mysqlbinlog.cc $(top_srcdir)/mysys/mf_tempdir.c $(top_srcdir)/mysys/my_new.cc +mysqlbinlog_LDADD = $(LDADD) $(CXXLDFLAGS) mysqltestmanagerc_SOURCES = mysqlmanagerc.c mysqltestmanager_pwgen_SOURCES = mysqlmanager-pwgen.c sql_src=log_event.h mysql_priv.h log_event.cc my_decimal.h my_decimal.cc diff --git a/client/mysqladmin.cc b/client/mysqladmin.cc index 24fe14b6675..1eec9bc2555 100644 --- a/client/mysqladmin.cc +++ b/client/mysqladmin.cc @@ -1346,6 +1346,3 @@ static my_bool wait_pidfile(char *pidfile, time_t last_modified, } DBUG_RETURN(error); } -#ifdef __GNUC__ -FIX_GCC_LINKING_PROBLEM -#endif diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 59c90f59e8e..1a628bd08c7 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -1458,4 +1458,3 @@ int main(int argc, char** argv) #include "log_event.cc" #endif -FIX_GCC_LINKING_PROBLEM diff --git a/configure.in b/configure.in index 41f92788d7e..57f99c29410 100644 --- a/configure.in +++ b/configure.in @@ -294,7 +294,7 @@ case "$target_os" in AC_SYS_COMPILER_FLAG(-belf,sco_belf_option,CFLAGS,[],[ case "$LDFLAGS" in *-belf*) ;; - *) echo "Adding -belf option to ldflags." + *) AC_MSG_WARN([Adding -belf option to ldflags.]) LDFLAGS="$LDFLAGS -belf" ;; esac @@ -305,7 +305,7 @@ case "$target_os" in case "$LDFLAGS" in *-belf*) ;; *) - echo "Adding -belf option to ldflags." + AC_MSG_WARN([Adding -belf option to ldflags.]) LDFLAGS="$LDFLAGS -belf" ;; esac @@ -336,7 +336,6 @@ AC_SUBST(LD) AC_SUBST(INSTALL_SCRIPT) export CC CXX CFLAGS LD LDFLAGS AR -echo "GXX: $GXX" if test "$GXX" = "yes" then # mysqld requires -fno-implicit-templates. @@ -344,22 +343,29 @@ then # 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'` - echo "CXX: $CXX" - if echo $CXX | grep gcc > /dev/null 2>&1 - then - echo "Setting CXXFLAGS" - # 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 -DUSE_MYSYS_NEW -DDEFINE_CXA_PURE_VIRTUAL" - echo "Using MYSYS_NEW for static linking with gcc" - fi + 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") -# Any wariation of Linux +# Any variation of Linux if expr "$target_os" : "[[Ll]]inux.*" > /dev/null then MYSQLD_DEFAULT_SWITCHES="--skip-locking" @@ -937,7 +943,7 @@ case $SYSTEM_TYPE in *solaris2.7*) # Solaris 2.7 has a broken /usr/include/widec.h # Make a fixed copy in ./include - echo "Fixing broken include files for $SYSTEM_TYPE" + AC_MSG_WARN([Fixing broken include files for $SYSTEM_TYPE]) echo " - Creating local copy of widec.h" if test ! -d include then @@ -951,7 +957,7 @@ case $SYSTEM_TYPE in *solaris2.8*) # Solaris 2.8 has a broken /usr/include/widec.h # Make a fixed copy in ./include - echo "Fixing broken include files for $SYSTEM_TYPE" + AC_MSG_WARN([Fixing broken include files for $SYSTEM_TYPE]) echo " - Creating local copy of widec.h" if test ! -d include then @@ -963,7 +969,7 @@ case $SYSTEM_TYPE in CXXFLAGS="$CXXFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T" ;; *solaris2.5.1*) - echo "Enabling getpass() workaround for Solaris 2.5.1" + AC_MSG_WARN([Enabling getpass() workaround for Solaris 2.5.1]) CFLAGS="$CFLAGS -DHAVE_BROKEN_GETPASS -DSOLARIS -DHAVE_RWLOCK_T"; CXXFLAGS="$CXXFLAGS -DHAVE_RWLOCK_T -DSOLARIS" ;; @@ -972,26 +978,26 @@ case $SYSTEM_TYPE in CXXFLAGS="$CXXFLAGS -DHAVE_RWLOCK_T" ;; *SunOS*) - echo "Enabling getpass() workaround for SunOS" + AC_MSG_WARN([Enabling getpass() workaround for SunOS]) CFLAGS="$CFLAGS -DHAVE_BROKEN_GETPASS -DSOLARIS"; ;; *hpux10.20*) - echo "Enabling workarounds for hpux 10.20" + AC_MSG_WARN([Enabling workarounds for hpux 10.20]) CFLAGS="$CFLAGS -DHAVE_BROKEN_SNPRINTF -DSIGNALS_DONT_BREAK_READ -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHPUX10 -DSIGNAL_WITH_VIO_CLOSE -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT -DHAVE_POSIX1003_4a_MUTEX" CXXFLAGS="$CXXFLAGS -DHAVE_BROKEN_SNPRINTF -D_INCLUDE_LONGLONG -DSIGNALS_DONT_BREAK_READ -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHPUX10 -DSIGNAL_WITH_VIO_CLOSE -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT -DHAVE_POSIX1003_4a_MUTEX" if test "$with_named_thread" = "no" then - echo "Using --with-named-thread=-lpthread" + AC_MSG_WARN([Using --with-named-thread=-lpthread]) with_named_thread="-lcma" fi ;; *hpux11.*) - echo "Enabling workarounds for hpux 11" + AC_MSG_WARN([Enabling workarounds for hpux 11]) CFLAGS="$CFLAGS -DHPUX11 -DSNPRINTF_RETURN_TRUNC -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -DHAVE_BROKEN_GETPASS -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT" CXXFLAGS="$CXXFLAGS -DHPUX11 -DSNPRINTF_RETURN_TRUNC -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -D_INCLUDE_LONGLONG -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT" if test "$with_named_thread" = "no" then - echo "Using --with-named-thread=-lpthread" + AC_MSG_WARN([Using --with-named-thread=-lpthread]) with_named_thread="-lpthread" fi # Fixes for HPUX 11.0 compiler @@ -1047,7 +1053,7 @@ case $SYSTEM_TYPE in fi ;; *freebsd*) - echo "Adding fix for interrupted reads" + AC_MSG_WARN([Adding fix for interrupted reads]) OSVERSION=`sysctl -a | grep osreldate | awk '{ print $2 }'` if test "$OSVERSION" -gt "480100" && \ test "$OSVERSION" -lt "500000" || \ @@ -1060,13 +1066,13 @@ case $SYSTEM_TYPE in fi ;; *netbsd*) - echo "Adding flag -Dunix" + AC_MSG_WARN([Adding flag -Dunix]) CFLAGS="$CFLAGS -Dunix" CXXFLAGS="$CXXFLAGS -Dunix" OVERRIDE_MT_LD_ADD="\$(top_srcdir)/mit-pthreads/obj/libpthread.a" ;; *bsdi*) - echo "Adding fix for BSDI" + AC_MSG_WARN([Adding fix for BSDI]) CFLAGS="$CFLAGS -D__BSD__ -DHAVE_BROKEN_REALPATH" AC_DEFINE_UNQUOTED([SOCKOPT_OPTLEN_TYPE], [size_t], [Last argument to get/setsockopt]) @@ -1074,13 +1080,13 @@ case $SYSTEM_TYPE in *sgi-irix6*) if test "$with_named_thread" = "no" then - echo "Using --with-named-thread=-lpthread" + AC_MSG_WARN([Using --with-named-thread=-lpthread]) with_named_thread="-lpthread" fi CXXFLAGS="$CXXFLAGS -D_BOOL" ;; *aix4.3*) - echo "Adding defines for AIX" + AC_MSG_WARN([Adding defines for AIX]) CFLAGS="$CFLAGS -Wa,-many -DUNDEF_HAVE_INITGROUPS -DSIGNALS_DONT_BREAK_READ" CXXFLAGS="$CXXFLAGS -Wa,-many -DUNDEF_HAVE_INITGROUPS -DSIGNALS_DONT_BREAK_READ" ;; @@ -1088,11 +1094,11 @@ dnl Is this the right match for DEC OSF on alpha? *dec-osf*) if test "$ac_cv_prog_gcc" = "yes" && test "$host_cpu" = "alpha" then - echo "Adding defines for DEC OSF on alpha" + AC_MSG_WARN([Adding defines for DEC OSF on alpha]) CFLAGS="$CFLAGS -mieee" CXXFLAGS="$CXXFLAGS -mieee" fi - echo "Adding defines for OSF1" + AC_MSG_WARN([Adding defines for OSF1]) # gethostbyname_r is deprecated and doesn't work ok on OSF1 CFLAGS="$CFLAGS -DUNDEF_HAVE_GETHOSTBYNAME_R -DSNPRINTF_RETURN_TRUNC" CXXFLAGS="$CXXFLAGS -DUNDEF_HAVE_GETHOSTBYNAME_R -DSNPRINTF_RETURN_TRUNC" @@ -1379,7 +1385,7 @@ then CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; fi else - { echo "configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual." 1>&2; exit 1; }; + { AC_MSG_ERROR([configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual.]) }; fi else AC_MSG_RESULT("no") @@ -1425,7 +1431,7 @@ then fi AC_MSG_RESULT("yes") else - { echo "configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual." 1>&2; exit 1; }; + { AC_MSG_ERROR([configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual.]) }; fi else AC_MSG_RESULT("no") @@ -1468,7 +1474,7 @@ then fi AC_MSG_RESULT("yes") else - { echo "configure: error: Can't find thread libs on Caldera OpenUNIX 8. See the Installation chapter in the Reference Manual." 1>&2; exit 1; }; + { AC_MSG_ERROR([configure: error: Can't find thread libs on Caldera OpenUNIX 8. See the Installation chapter in the Reference Manual.]) }; fi else AC_MSG_RESULT("no") @@ -2239,7 +2245,7 @@ if test "$with_tools" = "yes" then if test "$THREAD_SAFE_CLIENT" = "no" then - echo "Warning: extra-tools disabled because --enable-thread-safe-client wasn't used" + AC_MSG_WARN([extra-tools disabled because --enable-thread-safe-client wasn't used]) else tools_dirs="tools" fi diff --git a/extra/yassl/mySTL/list.hpp b/extra/yassl/mySTL/list.hpp index 223ae5a0fe4..5bbec6ab7c6 100644 --- a/extra/yassl/mySTL/list.hpp +++ b/extra/yassl/mySTL/list.hpp @@ -91,18 +91,18 @@ public: { iterator tmp = *this; current_ = current_->next_; - return tmp; + return *this; } iterator& operator--(int) { iterator tmp = *this; current_ = current_->prev_; - return tmp; + return *this; } bool operator==(const iterator& other) const - { + { return current_ == other.current_; } @@ -237,8 +237,8 @@ void list<T>::pop_back() template<typename T> T list<T>::back() const { - if (back == 0) return 0; - return back->value_; + if (tail_ == 0) return 0; + return tail_->value_; } diff --git a/extra/yassl/src/Makefile.am b/extra/yassl/src/Makefile.am index e0b8110b65c..9dd8a09b00b 100644 --- a/extra/yassl/src/Makefile.am +++ b/extra/yassl/src/Makefile.am @@ -5,4 +5,4 @@ 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 -CXXFLAGS=`echo "@CXXFLAGS@" | sed 's/-fno-implicit-templates//'` +AM_CXXFLAGS=@USE_MYSYS_NEW@ diff --git a/extra/yassl/src/crypto_wrapper.cpp b/extra/yassl/src/crypto_wrapper.cpp index 72822430a51..c083c56f313 100644 --- a/extra/yassl/src/crypto_wrapper.cpp +++ b/extra/yassl/src/crypto_wrapper.cpp @@ -967,4 +967,12 @@ x509* PemToDer(const char* fname, CertType type) } // namespace +#ifdef __GNUC__ +template class TaoCrypt::HMAC<TaoCrypt::MD5>; +template class TaoCrypt::HMAC<TaoCrypt::SHA>; +template class TaoCrypt::HMAC<TaoCrypt::RIPEMD160>; +template class TaoCrypt::Mode_BASE<16>; +template class TaoCrypt::Mode_BASE<8>; +#endif + #endif // !USE_CRYPTOPP_LIB diff --git a/extra/yassl/src/yassl_imp.cpp b/extra/yassl/src/yassl_imp.cpp index 07310546b4c..ba2fbd8cc07 100644 --- a/extra/yassl/src/yassl_imp.cpp +++ b/extra/yassl/src/yassl_imp.cpp @@ -2089,5 +2089,28 @@ void InitClientKeyFactory(ClientKeyFactory& ckf) ckf.Register(fortezza_kea, CreateFortezzaClient); } - } // namespace + +#ifdef __GNUC__ +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* (*)()>*); +template mySTL::pair<int, yaSSL::HandShakeBase* (*)()>* mySTL::uninit_copy<mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*>(mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*); +template void mySTL::destroy<mySTL::pair<int, yaSSL::Message* (*)()>*>(mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*); +template void mySTL::destroy<mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*>(mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*); +template mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>* mySTL::uninit_copy<mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*); +template void mySTL::destroy<mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*); +template mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>* mySTL::uninit_copy<mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*); +template class mySTL::list<TaoCrypt::Signer*>; +template class mySTL::list<yaSSL::SSL_SESSION*>; +template class mySTL::list<yaSSL::input_buffer*>; +template class mySTL::list<yaSSL::output_buffer*>; +template class mySTL::list<yaSSL::x509*>; +template void mySTL::destroy<mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*); +template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<TaoCrypt::Signer*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<TaoCrypt::Signer*>::iterator, mySTL::list<TaoCrypt::Signer*>::iterator, yaSSL::del_ptr_zero); +template yaSSL::del_ptr_zero mySTL::for_each<mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::SSL_SESSION*>::iterator, mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::del_ptr_zero); +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 + diff --git a/extra/yassl/src/yassl_int.cpp b/extra/yassl/src/yassl_int.cpp index d481194d2d7..5f918b0a356 100644 --- a/extra/yassl/src/yassl_int.cpp +++ b/extra/yassl/src/yassl_int.cpp @@ -918,7 +918,7 @@ void SSL::setKeys() // local functors -namespace { +namespace yassl_int_cpp_local1 { struct SumData { uint total_; @@ -934,7 +934,7 @@ struct SumBuffer { }; } // namespace for locals - +using namespace yassl_int_cpp_local1; uint SSL::bufferedData() { @@ -942,7 +942,6 @@ uint SSL::bufferedData() SumData()).total_; } - // use input buffer to fill data void SSL::fillData(Data& data) { @@ -1377,7 +1376,7 @@ Sessions::~Sessions() } -namespace { // locals +namespace yassl_int_cpp_local2 { // locals typedef mySTL::list<SSL_SESSION*>::iterator iterator; @@ -1395,7 +1394,7 @@ struct sess_match { } // local namespace - +using namespace yassl_int_cpp_local2; // lookup session by id, return a copy if space provided SSL_SESSION* Sessions::lookup(const opaque* id, SSL_SESSION* copy) @@ -1965,7 +1964,10 @@ X509_NAME* X509::GetSubject() return &subject_; } - - - } // namespace + +#ifdef __GNUC__ +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 diff --git a/extra/yassl/taocrypt/include/runtime.hpp b/extra/yassl/taocrypt/include/runtime.hpp index 7159611e97b..5b9e13df644 100644 --- a/extra/yassl/taocrypt/include/runtime.hpp +++ b/extra/yassl/taocrypt/include/runtime.hpp @@ -25,7 +25,7 @@ -#if !defined(yaSSL_NEW_HPP) && defined(DEFINE_CXA_PURE_VIRTUAL) +#if !defined(yaSSL_NEW_HPP) && defined(USE_MYSYS_NEW) #define yaSSL_NEW_HPP @@ -54,38 +54,16 @@ static void operator delete[] (void* ptr) } -#ifdef __GNUC__ - extern "C" { +#include <assert.h> static int __cxa_pure_virtual() { // oops, pure virtual called! + assert("Pure virtual method called." == "Aborted"); return 0; } -// simple guards for now that aren't perfect -// does yaSSL need full locking for two Integer statics, -// the Factory, and Session list? -// could leak ~ 8 bytes if two threads try to initialize at same time -// gcc didn't implement until 3.4 - - -typedef long long __guard; - - -static int __cxa_guard_acquire(__guard* g) -{ - return !*(char*)g; -} - -static void __cxa_guard_release(__guard* g) -{ - *(char*)g = 1; -} - - } // extern "C" -#endif // __GNUC__ #endif // yaSSL_NEW_HPP diff --git a/extra/yassl/taocrypt/src/Makefile.am b/extra/yassl/taocrypt/src/Makefile.am index 5a32850a3d4..4bf901b76ea 100644 --- a/extra/yassl/taocrypt/src/Makefile.am +++ b/extra/yassl/taocrypt/src/Makefile.am @@ -5,4 +5,4 @@ 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 -CXXFLAGS=`echo "@CXXFLAGS@" | sed 's/-fno-implicit-templates//'` +AM_CXXFLAGS=@USE_MYSYS_NEW@ diff --git a/extra/yassl/taocrypt/src/integer.cpp b/extra/yassl/taocrypt/src/integer.cpp index 513bf3e6b20..20a968d78e3 100644 --- a/extra/yassl/taocrypt/src/integer.cpp +++ b/extra/yassl/taocrypt/src/integer.cpp @@ -4172,3 +4172,12 @@ Integer CRT(const Integer &xp, const Integer &p, const Integer &xq, } // 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 + + diff --git a/extra/yassl/taocrypt/src/rsa.cpp b/extra/yassl/taocrypt/src/rsa.cpp index fdc70d4a7cf..da8cd697a7c 100644 --- a/extra/yassl/taocrypt/src/rsa.cpp +++ b/extra/yassl/taocrypt/src/rsa.cpp @@ -213,3 +213,22 @@ word32 SSL_Decrypt(const RSA_PublicKey& key, const byte* sig, byte* plain) } // 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>*); +#endif + + diff --git a/include/my_global.h b/include/my_global.h index 74846fe1762..0353dc91fcf 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -230,17 +230,6 @@ C_MODE_END #define __LONG_MAX__ 2147483647 #endif -/* Fix problem when linking c++ programs with gcc 3.x */ -#ifdef DEFINE_CXA_PURE_VIRTUAL -#define FIX_GCC_LINKING_PROBLEM \ -C_MODE_START int __cxa_pure_virtual() {\ - DBUG_ASSERT("Pure virtual method called." == "Aborted");\ - return 0;\ -} C_MODE_END -#else -#define FIX_GCC_LINKING_PROBLEM -#endif - /* egcs 1.1.2 has a problem with memcpy on Alpha */ #if defined(__GNUC__) && defined(__alpha__) && ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) #define BAD_MEMCPY diff --git a/mysys/my_new.cc b/mysys/my_new.cc index 14423c3afd5..66f3a14eeb4 100644 --- a/mysys/my_new.cc +++ b/mysys/my_new.cc @@ -45,5 +45,14 @@ void operator delete[] (void *ptr) throw () free(ptr); } +C_MODE_START + +int __cxa_pure_virtual() { + assert("Pure virtual method called." == "Aborted"); + return 0; +} + +C_MODE_END + #endif /* USE_MYSYS_NEW */ diff --git a/server-tools/instance-manager/command.cc b/server-tools/instance-manager/command.cc index 818c4b0cae2..73dd49ef8b8 100644 --- a/server-tools/instance-manager/command.cc +++ b/server-tools/instance-manager/command.cc @@ -28,6 +28,3 @@ Command::Command(Instance_map *instance_map_arg) Command::~Command() {} -#ifdef __GNUC__ -FIX_GCC_LINKING_PROBLEM -#endif diff --git a/sql/ha_blackhole.cc b/sql/ha_blackhole.cc index d9aedbe751d..5467ab8a978 100644 --- a/sql/ha_blackhole.cc +++ b/sql/ha_blackhole.cc @@ -25,7 +25,7 @@ #include "ha_blackhole.h" -static const char *ha_black_hole_exts[] = { +static const char *ha_blackhole_exts[] = { NullS }; diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 4217b694f06..689a00058e9 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -1805,7 +1805,7 @@ try_again: goto try_again; } -#endif HAVE_REPLICATION +#endif // HAVE_REPLICATION return(0); } diff --git a/sql/item_func.cc b/sql/item_func.cc index 24a3f7927ae..9825de66477 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -2349,12 +2349,12 @@ longlong Item_func_find_in_set::val_int() } str_end= substr_end; } - else if (str_end - str_begin == 0 && - find_str_len == 0 && + else if (str_end - str_begin == 0 && + find_str_len == 0 && wc == (my_wc_t) separator) return (longlong) ++position; else - return (longlong) 0; + return LL(0); } } return 0; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 169c9e057b5..3bfa498e521 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -6989,5 +6989,4 @@ template class I_List_iterator<THD>; template class I_List<i_string>; template class I_List<i_string_pair>; template class I_List<NAMED_LIST>; -FIX_GCC_LINKING_PROBLEM #endif |