summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/Makefile.am4
-rw-r--r--client/mysqladmin.cc3
-rw-r--r--client/mysqlbinlog.cc1
-rw-r--r--configure.in74
-rw-r--r--extra/yassl/mySTL/list.hpp10
-rw-r--r--extra/yassl/src/Makefile.am2
-rw-r--r--extra/yassl/src/crypto_wrapper.cpp8
-rw-r--r--extra/yassl/src/yassl_imp.cpp25
-rw-r--r--extra/yassl/src/yassl_int.cpp18
-rw-r--r--extra/yassl/taocrypt/include/runtime.hpp28
-rw-r--r--extra/yassl/taocrypt/src/Makefile.am2
-rw-r--r--extra/yassl/taocrypt/src/integer.cpp9
-rw-r--r--extra/yassl/taocrypt/src/rsa.cpp19
-rw-r--r--include/my_global.h11
-rw-r--r--mysys/my_new.cc9
-rw-r--r--server-tools/instance-manager/command.cc3
-rw-r--r--sql/ha_blackhole.cc2
-rw-r--r--sql/ha_innodb.cc2
-rw-r--r--sql/item_func.cc6
-rw-r--r--sql/mysqld.cc1
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