diff --git a/extra/yassl/include/openssl/ssl.h b/extra/yassl/include/openssl/ssl.h
index 361918846fc0a5e9ce82bf081aa65a1dc37907ac..85f0771ca85f001d32668affa96edd6edf7d17cf 100644
--- a/extra/yassl/include/openssl/ssl.h
+++ b/extra/yassl/include/openssl/ssl.h
@@ -149,7 +149,7 @@ enum { /* X509 Constants */
     X509_V_ERR_CRL_SIGNATURE_FAILURE          = 10,
     X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = 11,
     X509_V_ERR_CRL_HAS_EXPIRED                = 12,
-    X509_V_ERR_CERT_REVOKED                   = 13,
+    X509_V_ERR_CERT_REVOKED                   = 13
 
 };
 
@@ -166,7 +166,7 @@ int           ERR_GET_REASON(int);
 
 enum {  /* ERR Constants */
     ERR_TXT_STRING = 1,
-    EVP_R_BAD_DECRYPT = 2,
+    EVP_R_BAD_DECRYPT = 2
 };
 
 
@@ -263,8 +263,8 @@ enum { /* ssl Constants */
     SSL_UNKNOWN         = -2,
     SSL_FATAL_ERROR     = -1,
     SSL_NORMAL_SHUTDOWN =  0,
-    SSL_ERROR_NONE      =  0,   // for most functions
-    SSL_FAILURE         =  0,   // for some functions
+    SSL_ERROR_NONE      =  0,   /* for most functions */
+    SSL_FAILURE         =  0,   /* for some functions */
     SSL_SUCCESS	        =  1,
 
     SSL_FILETYPE_ASN1    = 10,
@@ -320,7 +320,7 @@ enum { /* ssl Constants */
     SSL_ST_ACCEPT         = 94,
     SSL_CB_ALERT          = 95,
     SSL_CB_READ           = 96,
-    SSL_CB_HANDSHAKE_DONE = 97,
+    SSL_CB_HANDSHAKE_DONE = 97
 
 };
 
diff --git a/extra/yassl/include/yassl_error.hpp b/extra/yassl/include/yassl_error.hpp
index 4165eb24b66f16a61d577e0edd56ac7cede823ee..0b06a37a6352035ae92eb5916feeb8d33f7a8791 100644
--- a/extra/yassl/include/yassl_error.hpp
+++ b/extra/yassl/include/yassl_error.hpp
@@ -51,7 +51,7 @@ enum YasslError {
     verify_error        = 112,
     send_error          = 113,
     receive_error       = 114,
-    certificate_error   = 115,
+    certificate_error   = 115
 
     // 1000+ from TaoCrypt error.hpp
 
diff --git a/extra/yassl/include/yassl_types.hpp b/extra/yassl/include/yassl_types.hpp
index 70888f35c8156abebc5680933dcf4e078cb6c201..6359ad54aabc02dbdeaf3d16085066e633ffdedb 100644
--- a/extra/yassl/include/yassl_types.hpp
+++ b/extra/yassl/include/yassl_types.hpp
@@ -129,7 +129,7 @@ enum PublicValueEncoding { implicit_encoding, explicit_encoding };
 
 enum ConnectionEnd { server_end, client_end };
 
-enum AlertLevel { warning = 1, fatal = 2, };
+enum AlertLevel { warning = 1, fatal = 2 };
 
 
 
@@ -381,7 +381,7 @@ const char* const cipher_names[128] =
     "DES-CBC3-RMD", //  TLS_RSA_WITH_3DES_EDE_CBC_RMD160     = 124
     "AES128-RMD",   //  TLS_RSA_WITH_AES_128_CBC_RMD160      = 125
     "AES256-RMD",   //  TLS_RSA_WITH_AES_256_CBC_RMD160      = 126
-    null_str, // 127
+    null_str // 127
 };
 
 // fill with MD5 pad size since biggest required
diff --git a/extra/yassl/mySTL/helpers.hpp b/extra/yassl/mySTL/helpers.hpp
index 1b62d60cd2ef5e8aecb954e43fa18b4188c2e99e..fdb856d4db14212038b41341b8db8ea1f3554b9e 100644
--- a/extra/yassl/mySTL/helpers.hpp
+++ b/extra/yassl/mySTL/helpers.hpp
@@ -27,16 +27,28 @@
 #ifndef mySTL_HELPERS_HPP
 #define mySTL_HELPERS_HPP
 
-#include <cstdlib>
+#include <stdlib.h>
 
 
+#ifdef __IBMCPP__
+/*
+  Workaround the lack of operator new(size_t, void*)
+  in IBM VA CPP 6.0
+*/
+struct Dummy {};
+inline void *operator new(size_t size, Dummy *d) { return (void*) d; }
+typedef Dummy *yassl_pointer;
+#else
+typedef void *yassl_pointer;
+#endif
+
 namespace mySTL {
 
 
 template <typename T, typename T2>
 inline void construct(T* p, const T2& value)
 {
-    new (static_cast<void*>(p)) T(value);
+    new ((yassl_pointer) p) T(value);
 }
 
 
diff --git a/extra/yassl/src/dummy.cpp b/extra/yassl/src/dummy.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..19b7fe887cd60531dcbcfb894eb26af81ade01e2
--- /dev/null
+++ b/extra/yassl/src/dummy.cpp
@@ -0,0 +1,4 @@
+/*
+  To make libtool always use a C++ linker when compiling with yaSSL we need
+  to add a dummy C++ file to the source list.
+*/
diff --git a/extra/yassl/taocrypt/include/asn.hpp b/extra/yassl/taocrypt/include/asn.hpp
index 71633339a40a1e061b4a589949f8206607506dc4..974bbf4c86f5f27a62fc63340e81eba495984d32 100644
--- a/extra/yassl/taocrypt/include/asn.hpp
+++ b/extra/yassl/taocrypt/include/asn.hpp
@@ -79,7 +79,7 @@ enum ASNIdFlag
 
 enum DNTags
 {
-    COMMON_NAME         = 0x03,
+    COMMON_NAME         = 0x03
 };
 
 
@@ -92,7 +92,7 @@ enum Constants
     MAX_SEQ_SZ    =  5,    // enum(seq|con) + length(4)
     MAX_ALGO_SIZE =  9,
     MAX_DIGEST_SZ = 25,    // SHA + enum(Bit or Octet) + length(4)
-    DSA_SIG_SZ    = 40,
+    DSA_SIG_SZ    = 40
 };
 
 
diff --git a/vio/Makefile.am b/vio/Makefile.am
index 9c961025080f2f0ff8cb733e388ec5980977893f..22e706efe4cf154bc23d345efb2ab1ea2f8daa7d 100644
--- a/vio/Makefile.am
+++ b/vio/Makefile.am
@@ -19,15 +19,17 @@ LDADD=			@CLIENT_EXTRA_LDFLAGS@ $(openssl_libs)
 pkglib_LIBRARIES=	libvio.a
 noinst_PROGRAMS	=	test-ssl test-sslserver test-sslclient
 noinst_HEADERS=	vio_priv.h
-test_ssl_SOURCES=	test-ssl.c
+test_ssl_SOURCES=	test-ssl.c $(top_srcdir)/extra/yassl/src/dummy.cpp
 test_ssl_LDADD=   	@CLIENT_EXTRA_LDFLAGS@ ../dbug/libdbug.a libvio.a \
 			../mysys/libmysys.a ../strings/libmystrings.a \
 			$(openssl_libs)
-test_sslserver_SOURCES=   test-sslserver.c
+test_sslserver_SOURCES= test-sslserver.c \
+                        $(top_srcdir)/extra/yassl/src/dummy.cpp
 test_sslserver_LDADD=   @CLIENT_EXTRA_LDFLAGS@	../dbug/libdbug.a libvio.a \
 			../mysys/libmysys.a ../strings/libmystrings.a \
 			$(openssl_libs)
-test_sslclient_SOURCES=   test-sslclient.c
+test_sslclient_SOURCES= test-sslclient.c \
+                        $(top_srcdir)/extra/yassl/src/dummy.cpp
 test_sslclient_LDADD=   @CLIENT_EXTRA_LDFLAGS@	../dbug/libdbug.a libvio.a \
 			../mysys/libmysys.a ../strings/libmystrings.a \
 			$(openssl_libs)