Commit c5aac62c authored by svoj@mysql.com's avatar svoj@mysql.com

Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.0

into mysql.com:/home/svoj/devel/mysql/yassl-mysql-5.0
parents a4028c0f 841b232d
......@@ -31,7 +31,7 @@ namespace yaSSL {
#ifdef MULTI_THREADED
#ifdef WIN32
#ifdef _WIN32
#include <windows.h>
class Mutex {
......@@ -50,7 +50,7 @@ namespace yaSSL {
~Lock();
};
};
#else // WIN32
#else // _WIN32
#include <pthread.h>
class Mutex {
......@@ -71,7 +71,7 @@ namespace yaSSL {
};
};
#endif // WIN32
#endif // _WIN32
#else // MULTI_THREADED (WE'RE SINGLE)
class Mutex {
......
......@@ -31,7 +31,7 @@
#include <assert.h>
#ifdef WIN32
#ifdef _WIN32
#include <winsock2.h>
#else
#include <sys/time.h>
......@@ -47,7 +47,7 @@ namespace yaSSL {
typedef unsigned int uint;
#ifdef WIN32
#ifdef _WIN32
typedef SOCKET socket_t;
#else
typedef int socket_t;
......
......@@ -31,32 +31,39 @@
#include <new> // placement new
#ifdef __IBMCPP__
/*
Workaround for the lack of operator new(size_t, void*)
in IBM VA C++ 6.0
*/
struct Dummy {};
inline void *operator new(size_t size, Dummy *d) { return (void*) d; }
typedef Dummy *yassl_pointer;
struct Dummy {};
inline void* operator new(size_t size, Dummy* d)
{
return static_cast<void*>(d);
}
typedef Dummy* yassl_pointer;
#else
typedef void *yassl_pointer;
typedef void* yassl_pointer;
#endif
namespace mySTL {
template <typename T, typename T2>
inline void construct(T* p, const T2& value)
{
new ((yassl_pointer) p) T(value);
new (reinterpret_cast<yassl_pointer>(p)) T(value);
}
template <typename T>
inline void construct(T* p)
{
new (static_cast<void*>(p)) T();
new (reinterpret_cast<yassl_pointer>(p)) T();
}
......
......@@ -29,7 +29,7 @@ namespace yaSSL {
#ifdef MULTI_THREADED
#ifdef WIN32
#ifdef _WIN32
Mutex::Mutex()
{
......@@ -54,7 +54,7 @@ namespace yaSSL {
LeaveCriticalSection(&mutex_.cs_);
}
#else // WIN32
#else // _WIN32
Mutex::Mutex()
{
......@@ -80,7 +80,7 @@ namespace yaSSL {
}
#endif // WIN32
#endif // _WIN32
#endif // MULTI_THREADED
......
......@@ -78,7 +78,7 @@ namespace yaSSL {
}
#if defined(WIN32) || defined(__MACH__) || defined(__hpux__)
#if defined(_WIN32) || defined(__MACH__) || defined(__hpux__)
typedef int socklen_t;
#endif
......
......@@ -28,7 +28,7 @@
#include "socket_wrapper.hpp"
#ifndef WIN32
#ifndef _WIN32
#include <errno.h>
#include <netdb.h>
#include <unistd.h>
......@@ -36,19 +36,19 @@
#include <netinet/in.h>
#include <sys/ioctl.h>
#include <string.h>
#endif // WIN32
#endif // _WIN32
#ifdef __sun
#include <sys/filio.h>
#endif
#ifdef WIN32
#ifdef _WIN32
const int SOCKET_EINVAL = WSAEINVAL;
const int SOCKET_EWOULDBLOCK = WSAEWOULDBLOCK;
#else
const int SOCKET_EINVAL = EINVAL;
const int SOCKET_EWOULDBLOCK = EWOULDBLOCK;
#endif // WIN32
#endif // _WIN32
namespace yaSSL {
......@@ -80,7 +80,7 @@ Socket::~Socket()
void Socket::closeSocket()
{
if (socket_ != INVALID_SOCKET) {
#ifdef WIN32
#ifdef _WIN32
closesocket(socket_);
#else
close(socket_);
......@@ -94,7 +94,7 @@ uint Socket::get_ready() const
{
unsigned long ready = 0;
#ifdef WIN32
#ifdef _WIN32
ioctlsocket(socket_, FIONREAD, &ready);
#else
ioctl(socket_, FIONREAD, &ready);
......@@ -145,7 +145,7 @@ void Socket::shutDown(int how)
int Socket::get_lastError()
{
#ifdef WIN32
#ifdef _WIN32
return WSAGetLastError();
#else
return errno;
......@@ -155,7 +155,7 @@ int Socket::get_lastError()
void Socket::set_lastError(int errorCode)
{
#ifdef WIN32
#ifdef _WIN32
WSASetLastError(errorCode);
#else
errno = errorCode;
......
......@@ -32,11 +32,11 @@
/* see man pages for function descriptions */
#include "runtime.hpp"
#include "openssl/ssl.h"
#include "handshake.hpp"
#include "yassl_int.hpp"
#include <stdio.h>
#include "runtime.hpp"
namespace yaSSL {
......
......@@ -27,7 +27,7 @@
namespace yaSSL {
#ifdef WIN32
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
......@@ -54,7 +54,7 @@ namespace yaSSL {
return static_cast<uint>(timer());
}
#else // WIN32
#else // _WIN32
#include <sys/time.h>
......@@ -77,5 +77,5 @@ namespace yaSSL {
}
#endif // WIN32
#endif // _WIN32
} // namespace yaSSL
......@@ -30,14 +30,9 @@
#include "types.hpp"
#include "type_traits.hpp"
/*
namespace GCC_ABI {
extern "C" int __cxa_pure_virtual();
} */
namespace TaoCrypt {
// using GCC_ABI::__cxa_pure_virtual;
namespace TaoCrypt {
// library allocation
struct new_t {}; // TaoCrypt New type
......@@ -75,7 +70,7 @@ void tcArrayDelete(T* ptr)
// to resolve compiler generated operator delete on base classes with
// virtual destructors, make sure doesn't get called
// virtual destructors (when on stack), make sure doesn't get called
class virtual_base {
public:
static void operator delete(void*) { assert(0); }
......@@ -742,8 +737,6 @@ unsigned int BytePrecision(unsigned long value);
unsigned int BitPrecision(unsigned long);
unsigned long Crop(unsigned long value, unsigned int size);
void CallNewHandler();
} // namespace
......
......@@ -42,7 +42,7 @@ public:
void GenerateSeed(byte*, word32 sz);
Error GetError() const { return error_; }
private:
#if defined(WIN32)
#if defined(_WIN32)
#if defined(_WIN64)
typedef unsigned __int64 ProviderHandle;
// type HCRYPTPROV, avoid #include <windows.h>
......
......@@ -81,8 +81,6 @@ typedef unsigned int word32;
#define TAOCRYPT_NATIVE_DWORD_AVAILABLE
#ifdef WORD64_AVAILABLE
#define TAOCRYPT_SLOW_WORD64
// define this if your CPU is not64-bit to use alternative code
// that avoids word64
typedef word16 hword;
typedef word32 word;
typedef word64 dword;
......
......@@ -22,7 +22,6 @@
/* asn.cpp implements ASN1 BER, PublicKey, and x509v3 decoding
*/
#include "runtime.hpp"
#include "asn.hpp"
#include "file.hpp"
......
......@@ -23,6 +23,7 @@
/* based on Wei Dai's integer.cpp from CryptoPP */
#include "runtime.hpp"
#include "integer.hpp"
#include "modarith.hpp"
#include "asn.hpp"
......@@ -34,6 +35,21 @@
#endif
#if defined(_MSC_VER) && defined(_WIN64) // 64 bit X overflow intrinsic
#ifdef __ia64__
#define myUMULH __UMULH
#elif __x86_64__
#define myUMULH __umulh
#else
#error unknown 64bit windows
#endif
extern "C" word myUMULH(word, word);
#pragma intrinsic (myUMULH)
#endif
#ifdef SSE2_INTRINSICS_AVAILABLE
#ifdef __GNUC__
#include <xmmintrin.h>
......@@ -73,16 +89,15 @@ CPP_TYPENAME AllocatorBase<T>::pointer AlignedAllocator<T>::allocate(
{
void* p;
#ifdef TAOCRYPT_MM_MALLOC_AVAILABLE
while (!(p = _mm_malloc(sizeof(T)*n, 16)))
p = _mm_malloc(sizeof(T)*n, 16);
#elif defined(TAOCRYPT_MEMALIGN_AVAILABLE)
while (!(p = memalign(16, sizeof(T)*n)))
p = memalign(16, sizeof(T)*n);
#elif defined(TAOCRYPT_MALLOC_ALIGNMENT_IS_16)
while (!(p = malloc(sizeof(T)*n)))
p = malloc(sizeof(T)*n);
#else
while (!(p = (byte *)malloc(sizeof(T)*n + 8)))
p = (byte *)malloc(sizeof(T)*n + 8);
// assume malloc alignment is at least 8
#endif
CallNewHandler();
#ifdef TAOCRYPT_NO_ALIGNED_ALLOC
assert(m_pBlock == 0);
......@@ -156,8 +171,14 @@ DWord() {}
static DWord Multiply(word a, word b)
{
DWord r;
#ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
r.whole_ = (dword)a * b;
#elif defined(_MSC_VER)
r.halfs_.low = a*b;
r.halfs_.high = myUMULH(a,b);
#elif defined(__alpha__)
r.halfs_.low = a*b;
#ifdef __GNUC__
......@@ -166,22 +187,27 @@ DWord() {}
#elif defined(__DECCXX)
r.halfs_.high = asm("umulh %a0, %a1, %v0", a, b);
#else
#error can not implement multiply overflow
#error unknown alpha compiler
#endif
#elif defined(__ia64__)
r.halfs_.low = a*b;
__asm__("xmpy.hu %0=%1,%2" : "=f" (r.halfs_.high)
: "f" (a), "f" (b));
#elif defined(_ARCH_PPC64)
r.halfs_.low = a*b;
__asm__("mulhdu %0,%1,%2" : "=r" (r.halfs_.high)
: "r" (a), "r" (b) : "cc");
#elif defined(__x86_64__)
__asm__("mulq %3" : "=d" (r.halfs_.high), "=a" (r.halfs_.low) :
"a" (a), "rm" (b) : "cc");
#elif defined(__mips64)
__asm__("dmultu %2,%3" : "=h" (r.halfs_.high), "=l" (r.halfs_.low)
: "r" (a), "r" (b));
#elif defined(_M_IX86)
// for testing
word64 t = (word64)a * b;
......@@ -190,6 +216,7 @@ DWord() {}
#else
#error can not implement DWord
#endif
return r;
}
......@@ -3936,5 +3963,6 @@ template hword DivideThreeWordsByTwo<hword, Word>(hword*, hword, hword, Word*);
template word DivideThreeWordsByTwo<word, DWord>(word*, word, word, DWord*);
#endif
} // namespace
......@@ -64,10 +64,6 @@ void* operator new[](size_t sz);
void operator delete[](void* ptr);
*/
/* namespace GCC_ABI {
extern "C" int __cxa_pure_virtual() { assert(0); return 0; }
} */
namespace TaoCrypt {
......@@ -135,17 +131,5 @@ unsigned long Crop(unsigned long value, unsigned int size)
}
#if !(defined(_MSC_VER) && (_MSC_VER < 1300)) && \
!(defined(__HP_aCC) && (__HP_aCC <= 36300))
using std::new_handler;
using std::set_new_handler;
#endif
void CallNewHandler()
{
abort();
}
} // namespace
......@@ -26,7 +26,7 @@
#include "random.hpp"
#if defined(WIN32)
#if defined(_WIN32)
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include <wincrypt.h>
......@@ -34,7 +34,7 @@
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
#endif // WIN32
#endif // _WIN32
namespace TaoCrypt {
......@@ -64,7 +64,7 @@ byte RandomNumberGenerator::GenerateByte()
}
#if defined(WIN32)
#if defined(_WIN32)
OS_Seed::OS_Seed()
{
......@@ -87,7 +87,7 @@ void OS_Seed::GenerateSeed(byte* output, word32 sz)
}
#else // WIN32
#else // _WIN32
OS_Seed::OS_Seed()
......@@ -122,7 +122,7 @@ void OS_Seed::GenerateSeed(byte* output, word32 sz)
}
}
#endif // WIN32
#endif // _WIN32
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment