diff options
-rw-r--r-- | doc/log.txt | 3 | ||||
-rw-r--r-- | src/alloc/secmem.h | 31 | ||||
-rw-r--r-- | src/build-data/cc/clang.txt | 42 |
3 files changed, 66 insertions, 10 deletions
diff --git a/doc/log.txt b/doc/log.txt index 01b29354a..80338c337 100644 --- a/doc/log.txt +++ b/doc/log.txt @@ -1,9 +1,12 @@ * 1.8.9, ????-??-?? + - Avoid possible timing attack against OAEP decoding + - Fix problem in semcem.h preventing build under Clang or GCC 3.4 - Fix bug that prevented creation of DSA groups under 1024 bits - Fix crash in GMP_Engine if library is shutdown and reinitialized - Work around problem with recent binutils in x86-64 SHA-1 - Add Win32 installer support + - Add support for the Clang compiler * 1.8.8, 2009-11-03 - Alter Skein-512 to match the tweaked 1.2 specification diff --git a/src/alloc/secmem.h b/src/alloc/secmem.h index d64a376ca..a5c1362ce 100644 --- a/src/alloc/secmem.h +++ b/src/alloc/secmem.h @@ -301,6 +301,10 @@ template<typename T> class MemoryVector : public MemoryRegion<T> { public: + using MemoryRegion<T>::set; + using MemoryRegion<T>::init; + using MemoryRegion<T>::append; + /** * Copy the contents of another buffer into this buffer. * @param in the buffer to copy the contents from @@ -314,7 +318,7 @@ class MemoryVector : public MemoryRegion<T> * @param n the length of the buffer to create. */ - MemoryVector(u32bit n = 0) { MemoryRegion<T>::init(false, n); } + MemoryVector(u32bit n = 0) { init(false, n); } /** * Create a buffer with the specified contents. @@ -323,13 +327,13 @@ class MemoryVector : public MemoryRegion<T> * @param n the size of the arry in */ MemoryVector(const T in[], u32bit n) - { MemoryRegion<T>::init(false); set(in, n); } + { init(false); set(in, n); } /** * Copy constructor. */ MemoryVector(const MemoryRegion<T>& in) - { MemoryRegion<T>::init(false); set(in); } + { init(false); set(in); } /** * Create a buffer whose content is the concatenation of two other @@ -338,7 +342,7 @@ class MemoryVector : public MemoryRegion<T> * @param in2 the contents to be appended to in1 */ MemoryVector(const MemoryRegion<T>& in1, const MemoryRegion<T>& in2) - { MemoryRegion<T>::init(false); set(in1); append(in2); } + { init(false); set(in1); append(in2); } }; /** @@ -353,6 +357,10 @@ template<typename T> class SecureVector : public MemoryRegion<T> { public: + using MemoryRegion<T>::set; + using MemoryRegion<T>::init; + using MemoryRegion<T>::append; + /** * Copy the contents of another buffer into this buffer. * @param in the buffer to copy the contents from @@ -366,7 +374,7 @@ class SecureVector : public MemoryRegion<T> * @param n the length of the buffer to create. */ - SecureVector(u32bit n = 0) { MemoryRegion<T>::init(true, n); } + SecureVector(u32bit n = 0) { init(true, n); } /** * Create a buffer with the specified contents. @@ -375,7 +383,7 @@ class SecureVector : public MemoryRegion<T> * @param n the size of the array in */ SecureVector(const T in[], u32bit n) - { MemoryRegion<T>::init(true); set(in, n); } + { init(true); set(in, n); } /** * Create a buffer with contents specified contents. @@ -383,7 +391,7 @@ class SecureVector : public MemoryRegion<T> * copied into the newly created buffer. */ SecureVector(const MemoryRegion<T>& in) - { MemoryRegion<T>::init(true); set(in); } + { init(true); set(in); } /** * Create a buffer whose content is the concatenation of two other @@ -392,7 +400,7 @@ class SecureVector : public MemoryRegion<T> * @param in2 the contents to be appended to in1 */ SecureVector(const MemoryRegion<T>& in1, const MemoryRegion<T>& in2) - { MemoryRegion<T>::init(true); set(in1); append(in2); } + { init(true); set(in1); append(in2); } }; /** @@ -407,6 +415,9 @@ template<typename T, u32bit L> class SecureBuffer : public MemoryRegion<T> { public: + using MemoryRegion<T>::set; + using MemoryRegion<T>::init; + /** * Copy the contents of another buffer into this buffer. * @param in the buffer to copy the contents from @@ -418,7 +429,7 @@ class SecureBuffer : public MemoryRegion<T> /** * Create a buffer of the length L. */ - SecureBuffer() { MemoryRegion<T>::init(true, L); } + SecureBuffer() { init(true, L); } /** * Create a buffer of size L with the specified contents. @@ -427,7 +438,7 @@ class SecureBuffer : public MemoryRegion<T> * @param n the size of the array in */ SecureBuffer(const T in[], u32bit n) - { MemoryRegion<T>::init(true, L); copy(in, n); } + { init(true, L); copy(in, n); } private: SecureBuffer<T, L>& operator=(const MemoryRegion<T>& in) { if(this != &in) set(in); return (*this); } diff --git a/src/build-data/cc/clang.txt b/src/build-data/cc/clang.txt new file mode 100644 index 000000000..e79893beb --- /dev/null +++ b/src/build-data/cc/clang.txt @@ -0,0 +1,42 @@ +# Largely copied from the gcc config + +binary_name clang + +compile_option "-c " +output_to_option "-o " +add_include_dir_option -I +add_lib_dir_option -L +add_lib_option -l + +lang_flags "-D_REENTRANT -ansi -Wno-long-long" +warning_flags "-W -Wall" + +makefile_style unix + +lib_opt_flags "-O2" +check_opt_flags "-O2" +shared_flags "-fPIC" +debug_flags -g +no_debug_flags "-finline-functions" + +<so_link_flags> +# The default works for GNU ld and several other Unix linkers +default -> "$(CXX) -shared -fPIC -Wl,-soname,$(SONAME)" +</so_link_flags> + +<mach_abi_linking> +amd64 -> "-m64" +mips64 -> "-mabi=64" +s390 -> "-m31" +s390x -> "-m64" +sparc32 -> "-m32 -mno-app-regs" +sparc64 -> "-m64 -mno-app-regs" +ppc64 -> "-m64" + +# This should probably be used on most/all targets, but the docs are incomplete +openbsd -> "-pthread" +freebsd -> "-pthread" +dragonfly -> "-pthread" +netbsd -> "-pthread -D_NETBSD_SOURCE" +qnx -> "-fexceptions -D_QNX_SOURCE" +</mach_abi_linking> |