diff options
author | unknown <svoj@mysql.com> | 2005-07-01 20:00:59 +0500 |
---|---|---|
committer | unknown <svoj@mysql.com> | 2005-07-01 20:00:59 +0500 |
commit | 672dffcaf24332626cd3abe8f4366c7c66382d43 (patch) | |
tree | 50a170b168a3f21cd4cf1e5a5c1cebfa3b8f1cdd /extra/yassl | |
parent | 6c8d397588722dece2803370409d4776d5ffb461 (diff) | |
download | mariadb-git-672dffcaf24332626cd3abe8f4366c7c66382d43.tar.gz |
WL#2286 - Compile MySQL w/YASSL support
Merge with latest yaSSL. It includes fix for bigendian/littleendian
problem (fixes func_encrypt test failure). Our trees are in sync now.
extra/yassl/include/yassl_types.hpp:
Merge with latest yaSSL.
extra/yassl/src/Makefile.am:
Merge with latest yaSSL.
extra/yassl/src/buffer.cpp:
Merge with latest yaSSL.
extra/yassl/src/cert_wrapper.cpp:
Merge with latest yaSSL.
extra/yassl/src/lock.cpp:
Merge with latest yaSSL.
extra/yassl/src/log.cpp:
Merge with latest yaSSL.
extra/yassl/src/socket_wrapper.cpp:
Merge with latest yaSSL.
extra/yassl/src/template_instnt.cpp:
Merge with latest yaSSL.
extra/yassl/src/timer.cpp:
Merge with latest yaSSL.
extra/yassl/src/yassl_error.cpp:
Merge with latest yaSSL.
extra/yassl/src/yassl_int.cpp:
Merge with latest yaSSL.
extra/yassl/taocrypt/include/types.hpp:
Merge with latest yaSSL.
extra/yassl/taocrypt/src/Makefile.am:
Merge with latest yaSSL.
extra/yassl/taocrypt/src/aestables.cpp:
Merge with latest yaSSL.
extra/yassl/taocrypt/src/algebra.cpp:
Merge with latest yaSSL.
extra/yassl/taocrypt/src/arc4.cpp:
Merge with latest yaSSL.
extra/yassl/taocrypt/src/coding.cpp:
Merge with latest yaSSL.
extra/yassl/taocrypt/src/file.cpp:
Merge with latest yaSSL.
extra/yassl/taocrypt/src/integer.cpp:
Merge with latest yaSSL.
extra/yassl/taocrypt/src/misc.cpp:
Merge with latest yaSSL.
extra/yassl/taocrypt/src/random.cpp:
Merge with latest yaSSL.
extra/yassl/taocrypt/src/template_instnt.cpp:
Merge with latest yaSSL.
Diffstat (limited to 'extra/yassl')
-rw-r--r-- | extra/yassl/include/yassl_types.hpp | 3 | ||||
-rw-r--r-- | extra/yassl/src/Makefile.am | 1 | ||||
-rw-r--r-- | extra/yassl/src/buffer.cpp | 1 | ||||
-rw-r--r-- | extra/yassl/src/cert_wrapper.cpp | 1 | ||||
-rw-r--r-- | extra/yassl/src/lock.cpp | 1 | ||||
-rw-r--r-- | extra/yassl/src/log.cpp | 2 | ||||
-rw-r--r-- | extra/yassl/src/socket_wrapper.cpp | 1 | ||||
-rw-r--r-- | extra/yassl/src/template_instnt.cpp | 32 | ||||
-rw-r--r-- | extra/yassl/src/timer.cpp | 1 | ||||
-rw-r--r-- | extra/yassl/src/yassl_error.cpp | 1 | ||||
-rw-r--r-- | extra/yassl/src/yassl_int.cpp | 34 | ||||
-rw-r--r-- | extra/yassl/taocrypt/include/types.hpp | 38 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/Makefile.am | 1 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/aestables.cpp | 1 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/algebra.cpp | 2 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/arc4.cpp | 1 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/coding.cpp | 1 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/file.cpp | 1 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/integer.cpp | 6 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/misc.cpp | 27 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/random.cpp | 1 | ||||
-rw-r--r-- | extra/yassl/taocrypt/src/template_instnt.cpp | 30 |
22 files changed, 139 insertions, 48 deletions
diff --git a/extra/yassl/include/yassl_types.hpp b/extra/yassl/include/yassl_types.hpp index 01b82d95039..ec9e6fb7ceb 100644 --- a/extra/yassl/include/yassl_types.hpp +++ b/extra/yassl/include/yassl_types.hpp @@ -445,7 +445,7 @@ const opaque master_label[MASTER_LABEL_SZ + 1] = "master secret"; const opaque key_label [KEY_LABEL_SZ + 1] = "key expansion"; -} // namespace +} // naemspace #if __GNUC__ == 2 && __GNUC_MINOR__ <= 96 /* @@ -456,4 +456,5 @@ const opaque key_label [KEY_LABEL_SZ + 1] = "key expansion"; using yaSSL::byte; #endif + #endif // yaSSL_TYPES_HPP diff --git a/extra/yassl/src/Makefile.am b/extra/yassl/src/Makefile.am index 1f5f1ee7a4e..4ebb9a2d862 100644 --- a/extra/yassl/src/Makefile.am +++ b/extra/yassl/src/Makefile.am @@ -5,3 +5,4 @@ libyassl_a_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \ handshake.cpp lock.cpp log.cpp socket_wrapper.cpp ssl.cpp \ template_instnt.cpp timer.cpp yassl_imp.cpp yassl_error.cpp yassl_int.cpp EXTRA_DIST = ../include/*.hpp ../include/openssl/*.h +AM_CXXFLAGS = -DYASSL_PURE_C diff --git a/extra/yassl/src/buffer.cpp b/extra/yassl/src/buffer.cpp index 1da0827ac4e..56d355bea80 100644 --- a/extra/yassl/src/buffer.cpp +++ b/extra/yassl/src/buffer.cpp @@ -25,6 +25,7 @@ */ #include <string.h> // memcpy +#include "runtime.hpp" #include "buffer.hpp" #include "yassl_types.hpp" diff --git a/extra/yassl/src/cert_wrapper.cpp b/extra/yassl/src/cert_wrapper.cpp index 7a8c7dfe253..a775c366a92 100644 --- a/extra/yassl/src/cert_wrapper.cpp +++ b/extra/yassl/src/cert_wrapper.cpp @@ -24,6 +24,7 @@ * */ +#include "runtime.hpp" #include "cert_wrapper.hpp" #include "yassl_int.hpp" diff --git a/extra/yassl/src/lock.cpp b/extra/yassl/src/lock.cpp index 8a0b66ead42..4827d396e81 100644 --- a/extra/yassl/src/lock.cpp +++ b/extra/yassl/src/lock.cpp @@ -22,6 +22,7 @@ /* Locking functions */ +#include "runtime.hpp" #include "lock.hpp" diff --git a/extra/yassl/src/log.cpp b/extra/yassl/src/log.cpp index 38633cd1210..8ab351ee2b1 100644 --- a/extra/yassl/src/log.cpp +++ b/extra/yassl/src/log.cpp @@ -22,6 +22,8 @@ /* Debug logging functions */ + +#include "runtime.hpp" #include "log.hpp" #ifdef YASSL_LOG diff --git a/extra/yassl/src/socket_wrapper.cpp b/extra/yassl/src/socket_wrapper.cpp index 00f9c8d170c..2252dfafdc5 100644 --- a/extra/yassl/src/socket_wrapper.cpp +++ b/extra/yassl/src/socket_wrapper.cpp @@ -26,6 +26,7 @@ */ +#include "runtime.hpp" #include "socket_wrapper.hpp" #ifndef _WIN32 diff --git a/extra/yassl/src/template_instnt.cpp b/extra/yassl/src/template_instnt.cpp index 5cf4f8c39f8..5ee57e76aed 100644 --- a/extra/yassl/src/template_instnt.cpp +++ b/extra/yassl/src/template_instnt.cpp @@ -1,3 +1,29 @@ +/* template_instnt.cpp + * + * Copyright (C) 2003 Sawtooth Consulting Ltd. + * + * This file is part of yaSSL. + * + * yaSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * yaSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + + +/* Explicit template instantiation requests + */ + + #include "runtime.hpp" #include "handshake.hpp" #include "yassl_int.hpp" @@ -15,7 +41,7 @@ template class HMAC<MD5>; template class HMAC<SHA>; template class HMAC<RIPEMD160>; } -#endif +#endif // USE_CRYPTOPP_LIB namespace mySTL { template class list<unsigned char*>; @@ -64,4 +90,6 @@ template void ysDelete<Message>(Message*); template void ysArrayDelete<unsigned char>(unsigned char*); template void ysArrayDelete<char>(char*); } -#endif + +#endif // HAVE_EXPLICIT_TEMPLATE_INSTANTIATION + diff --git a/extra/yassl/src/timer.cpp b/extra/yassl/src/timer.cpp index cfa1319ae80..4fe0d3aa4f9 100644 --- a/extra/yassl/src/timer.cpp +++ b/extra/yassl/src/timer.cpp @@ -23,6 +23,7 @@ * */ +#include "runtime.hpp" #include "timer.hpp" namespace yaSSL { diff --git a/extra/yassl/src/yassl_error.cpp b/extra/yassl/src/yassl_error.cpp index 6ae5a9f6663..c53aef2068d 100644 --- a/extra/yassl/src/yassl_error.cpp +++ b/extra/yassl/src/yassl_error.cpp @@ -23,6 +23,7 @@ /* yaSSL error implements and an exception class */ +#include "runtime.hpp" #include "yassl_error.hpp" namespace yaSSL { diff --git a/extra/yassl/src/yassl_int.cpp b/extra/yassl/src/yassl_int.cpp index e9c1ed53816..740618ce701 100644 --- a/extra/yassl/src/yassl_int.cpp +++ b/extra/yassl/src/yassl_int.cpp @@ -33,28 +33,36 @@ void* operator new(size_t sz, yaSSL::new_t) { +#ifdef YASSL_PURE_C void* ptr = malloc(sz ? sz : 1); if (!ptr) abort(); return ptr; +#else + return ::operator new(sz); +#endif } -void* operator new[](size_t sz, yaSSL::new_t) -{ - void* ptr = malloc(sz ? sz : 1); - if (!ptr) abort(); - - return ptr; -} void operator delete(void* ptr, yaSSL::new_t) { +#ifdef YASSL_PURE_C if (ptr) free(ptr); +#else + ::operator delete(ptr); +#endif +} + + +void* operator new[](size_t sz, yaSSL::new_t nt) +{ + return ::operator new(sz, nt); } -void operator delete[](void* ptr, yaSSL::new_t) + +void operator delete[](void* ptr, yaSSL::new_t nt) { - if (ptr) free(ptr); + ::operator delete(ptr, nt); } @@ -923,7 +931,7 @@ void SSL::setKeys() // local functors -namespace yassl_int_cpp_local1 { +namespace yassl_int_cpp_local1 { // for explicit templates struct SumData { uint total_; @@ -1385,7 +1393,8 @@ Sessions::~Sessions() } -namespace yassl_int_cpp_local2 { // locals +// locals +namespace yassl_int_cpp_local2 { // for explicit templates typedef mySTL::list<SSL_SESSION*>::iterator iterator; @@ -1974,6 +1983,8 @@ X509_NAME* X509::GetSubject() return &subject_; } + + } // namespace #ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION @@ -1983,3 +1994,4 @@ template yaSSL::yassl_int_cpp_local1::SumBuffer for_each<mySTL::list<yaSSL::outp template mySTL::list<yaSSL::SSL_SESSION*>::iterator 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/types.hpp b/extra/yassl/taocrypt/include/types.hpp index 18961cf4d6f..92164eaaab4 100644 --- a/extra/yassl/taocrypt/include/types.hpp +++ b/extra/yassl/taocrypt/include/types.hpp @@ -31,10 +31,8 @@ namespace TaoCrypt { -// define this if running on a big-endian CPU -#if !defined(LITTLE_ENDIAN_ORDER) && (defined(__BIG_ENDIAN__) || \ - defined(__sparc) || defined(__sparc__) || defined(__hppa__) || \ - defined(__mips__) || (defined(__MWERKS__) && !defined(__INTEL__))) + +#if defined(WORDS_BIGENDIAN) || (defined(__MWERKS__) && !defined(__INTEL__)) #define BIG_ENDIAN_ORDER #endif @@ -47,34 +45,28 @@ typedef unsigned char byte; typedef unsigned short word16; typedef unsigned int word32; -#if defined(__GNUC__) || defined(__MWERKS__) || defined(_LONGLONG_TYPE) - #define WORD64_AVAILABLE - #define WORD64_IS_DISTINCT_TYPE - typedef unsigned long long word64; - #define W64LIT(x) x##LL -#elif defined(_MSC_VER) || defined(__BCPLUSPLUS__) +#if defined(_MSC_VER) || defined(__BCPLUSPLUS__) #define WORD64_AVAILABLE #define WORD64_IS_DISTINCT_TYPE typedef unsigned __int64 word64; - #define W64LIT(x) x##ui64 -#elif defined(__DECCXX) +#elif SIZEOF_LONG == 8 #define WORD64_AVAILABLE typedef unsigned long word64; +#elif SIZEOF_LONG_LONG == 8 + #define WORD64_AVAILABLE + #define WORD64_IS_DISTINCT_TYPE + typedef unsigned long long word64; #endif -// define largest word type -#ifdef WORD64_AVAILABLE - typedef word64 lword; -#else - typedef word32 lword; -#endif +// compilers we've found 64-bit multiply insructions for +#if defined(__GNUC__) || defined(_MSC_VER) || defined(__DECCXX) + #define HAVE_64_MULTIPLY +#endif -// TODO: FIXME, add asm multiply for x86_64 on Solaris and remove !__sun -#if defined(__alpha__) || (defined(__ia64__) && !defined(__INTEL_COMPILER)) || \ - defined(_ARCH_PPC64) || defined(__mips64) || \ - (defined(__x86_64__) && !defined(__sun)) +#if defined(HAVE_64_MULTIPLY) && (defined(__alpha__) || defined(__ia64__) \ + || defined(_ARCH_PPC64) || defined(__mips64) || defined(__x86_64__)) // These platforms have 64-bit CPU registers. Unfortunately most C++ compilers // don't allow any way to access the 64-bit by 64-bit multiply instruction // without using assembly, so in order to use word64 as word, the assembly @@ -84,7 +76,7 @@ typedef unsigned int word32; #else #define TAOCRYPT_NATIVE_DWORD_AVAILABLE #ifdef WORD64_AVAILABLE - #define TAOCRYPT_SLOW_WORD64 + #define TAOCRYPT_SLOW_WORD64 typedef word16 hword; typedef word32 word; typedef word64 dword; diff --git a/extra/yassl/taocrypt/src/Makefile.am b/extra/yassl/taocrypt/src/Makefile.am index 4005be94fb2..5bf45074a98 100644 --- a/extra/yassl/taocrypt/src/Makefile.am +++ b/extra/yassl/taocrypt/src/Makefile.am @@ -6,3 +6,4 @@ libtaocrypt_a_SOURCES = aes.cpp aestables.cpp algebra.cpp arc4.cpp asn.cpp \ md2.cpp md5.cpp misc.cpp random.cpp ripemd.cpp rsa.cpp sha.cpp \ template_instnt.cpp EXTRA_DIST = ../include/*.hpp +AM_CXXFLAGS = -DYASSL_PURE_C diff --git a/extra/yassl/taocrypt/src/aestables.cpp b/extra/yassl/taocrypt/src/aestables.cpp index 5a125dfd44d..7ba25bc9ffb 100644 --- a/extra/yassl/taocrypt/src/aestables.cpp +++ b/extra/yassl/taocrypt/src/aestables.cpp @@ -21,6 +21,7 @@ /* based on Wei Dai's aestables.cpp from CryptoPP */ +#include "runtime.hpp" #include "aes.hpp" diff --git a/extra/yassl/taocrypt/src/algebra.cpp b/extra/yassl/taocrypt/src/algebra.cpp index e0472f2fc76..45bbcfa662a 100644 --- a/extra/yassl/taocrypt/src/algebra.cpp +++ b/extra/yassl/taocrypt/src/algebra.cpp @@ -319,9 +319,11 @@ void AbstractRing::SimultaneousExponentiate(Integer *results, } // namespace + #ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION namespace mySTL { template TaoCrypt::WindowSlider* uninit_copy<TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*>(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*); template void destroy<TaoCrypt::WindowSlider*>(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*); } #endif + diff --git a/extra/yassl/taocrypt/src/arc4.cpp b/extra/yassl/taocrypt/src/arc4.cpp index bbd77cd822c..1e521b48f0c 100644 --- a/extra/yassl/taocrypt/src/arc4.cpp +++ b/extra/yassl/taocrypt/src/arc4.cpp @@ -21,6 +21,7 @@ /* based on Wei Dai's arc4.cpp from CryptoPP */ +#include "runtime.hpp" #include "arc4.hpp" diff --git a/extra/yassl/taocrypt/src/coding.cpp b/extra/yassl/taocrypt/src/coding.cpp index 6514ed4d46d..944a47c288e 100644 --- a/extra/yassl/taocrypt/src/coding.cpp +++ b/extra/yassl/taocrypt/src/coding.cpp @@ -22,6 +22,7 @@ /* coding.cpp implements hex and base64 encoding/decoing */ +#include "runtime.hpp" #include "coding.hpp" #include "file.hpp" diff --git a/extra/yassl/taocrypt/src/file.cpp b/extra/yassl/taocrypt/src/file.cpp index 75df80608ae..4d48b9e7bca 100644 --- a/extra/yassl/taocrypt/src/file.cpp +++ b/extra/yassl/taocrypt/src/file.cpp @@ -22,6 +22,7 @@ /* file.cpp implements File Sources and Sinks */ +#include "runtime.hpp" #include "file.hpp" diff --git a/extra/yassl/taocrypt/src/integer.cpp b/extra/yassl/taocrypt/src/integer.cpp index 460b2d31426..71324b04b92 100644 --- a/extra/yassl/taocrypt/src/integer.cpp +++ b/extra/yassl/taocrypt/src/integer.cpp @@ -35,8 +35,9 @@ #endif -#if defined(_MSC_VER) && defined(_WIN64) && \ - !defined(__INTEL_COMPILER) // 64 bit X overflow intrinsic +// 64bit multiply overflow intrinsic +#if defined(_MSC_VER) && defined(_WIN64) && !defined(__INTEL_COMPILER) && \ + !defined(TAOCRYPT_NATIVE_DWORD_AVAILABLE) #ifdef __ia64__ #define myUMULH __UMULH #elif __x86_64__ @@ -3957,6 +3958,7 @@ Integer CRT(const Integer &xp, const Integer &p, const Integer &xq, return p * (u * (xq-xp) % q) + xp; } + #ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION #ifndef TAOCRYPT_NATIVE_DWORD_AVAILABLE template hword DivideThreeWordsByTwo<hword, Word>(hword*, hword, hword, Word*); diff --git a/extra/yassl/taocrypt/src/misc.cpp b/extra/yassl/taocrypt/src/misc.cpp index 6a801a9995a..ef051332098 100644 --- a/extra/yassl/taocrypt/src/misc.cpp +++ b/extra/yassl/taocrypt/src/misc.cpp @@ -22,34 +22,43 @@ /* based on Wei Dai's misc.cpp from CryptoPP */ +#include "runtime.hpp" #include "misc.hpp" #include <new> // for NewHandler void* operator new(size_t sz, TaoCrypt::new_t) { +#ifdef YASSL_PURE_C void* ptr = malloc(sz ? sz : 1); if (!ptr) abort(); return ptr; +#else + return ::operator new(sz); +#endif } -void* operator new[](size_t sz, TaoCrypt::new_t) -{ - void* ptr = malloc(sz ? sz : 1); - if (!ptr) abort(); - - return ptr; -} void operator delete(void* ptr, TaoCrypt::new_t) { +#ifdef YASSL_PURE_C if (ptr) free(ptr); +#else + ::operator delete(ptr); +#endif } -void operator delete[](void* ptr, TaoCrypt::new_t) + +void* operator new[](size_t sz, TaoCrypt::new_t nt) { - if (ptr) free(ptr); + return ::operator new(sz, nt); +} + + +void operator delete[](void* ptr, TaoCrypt::new_t nt) +{ + ::operator delete(ptr, nt); } diff --git a/extra/yassl/taocrypt/src/random.cpp b/extra/yassl/taocrypt/src/random.cpp index 69fb180720a..e1e6416eb00 100644 --- a/extra/yassl/taocrypt/src/random.cpp +++ b/extra/yassl/taocrypt/src/random.cpp @@ -24,6 +24,7 @@ specific seed, switch to /dev/random for more security but may block */ +#include "runtime.hpp" #include "random.hpp" #if defined(_WIN32) diff --git a/extra/yassl/taocrypt/src/template_instnt.cpp b/extra/yassl/taocrypt/src/template_instnt.cpp index 28994282669..9a3c12badfc 100644 --- a/extra/yassl/taocrypt/src/template_instnt.cpp +++ b/extra/yassl/taocrypt/src/template_instnt.cpp @@ -1,3 +1,29 @@ +/* template_instnt.cpp + * + * Copyright (C) 2003 Sawtooth Consulting Ltd. + * + * This file is part of yaSSL. + * + * yaSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * yaSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + + +/* Explicit template instantiation requests + */ + + #include "integer.hpp" #include "rsa.hpp" #include "algebra.hpp" @@ -6,9 +32,11 @@ #ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION namespace TaoCrypt { + #if defined(SSE2_INTRINSICS_AVAILABLE) template AlignedAllocator<unsigned int>::pointer StdReallocate<unsigned int, AlignedAllocator<unsigned int> >(AlignedAllocator<unsigned int>&, unsigned int*, AlignedAllocator<unsigned int>::size_type, AlignedAllocator<unsigned int>::size_type, bool); #endif + template class RSA_Decryptor<RSA_BlockType2>; template class RSA_Encryptor<RSA_BlockType1>; template class RSA_Encryptor<RSA_BlockType2>; @@ -17,10 +45,12 @@ template void tcArrayDelete<byte>(byte*); template AllocatorWithCleanup<byte>::pointer StdReallocate<byte, AllocatorWithCleanup<byte> >(AllocatorWithCleanup<byte>&, byte*, AllocatorWithCleanup<byte>::size_type, AllocatorWithCleanup<byte>::size_type, bool); template void tcArrayDelete<word>(word*); template AllocatorWithCleanup<word>::pointer StdReallocate<word, AllocatorWithCleanup<word> >(AllocatorWithCleanup<word>&, word*, AllocatorWithCleanup<word>::size_type, AllocatorWithCleanup<word>::size_type, bool); + #ifndef TAOCRYPT_SLOW_WORD64 // defined when word != word32 template void tcArrayDelete<word32>(word32*); template AllocatorWithCleanup<word32>::pointer StdReallocate<word32, AllocatorWithCleanup<word32> >(AllocatorWithCleanup<word32>&, word32*, AllocatorWithCleanup<word32>::size_type, AllocatorWithCleanup<word32>::size_type, bool); #endif + template void tcArrayDelete<char>(char*); } |