[cfe-dev] clang and Crypto++
Marshall Clow
mclow.lists at gmail.com
Wed Jan 5 09:06:57 PST 2011
After Doug fixed bug #7851 yesterday (thanks, Doug!), I decided to see if crypto++ <http://www.cryptopp.com/> would build with clang TOT.
Answer: No, it does not.
There are three problems:
1) the crypto++ sources make unqualified calls to member functions in base classes; clang flags this as an error.
> clang++ -DNDEBUG -g -O2 -arch x86_64 -arch i386 -DCRYPTOPP_DISABLE_ASM -pipe -c panama.cpp
> panama.cpp:425:2: error: use of undeclared identifier 'PadLastBlock'
> PadLastBlock(this->BLOCKSIZE, 0x01);
> ^
> this->
> panama.cpp:500:22: note: in instantiation of member function
> 'CryptoPP::Weak::PanamaHash<CryptoPP::EnumToType<CryptoPP::ByteOrder, 1>
>> ::TruncatedFinal' requested here
> template class Weak::PanamaHash<BigEndian>;
> ^
> In file included from panama.cpp:9:
> In file included from ./panama.h:5:
> ./iterhash.h:38:7: note: must qualify identifier to find this declaration in dependent
> base class
> void PadLastBlock(unsigned int lastBlockSize, byte padFirst=0x80);
> ^
> panama.cpp:425:2: error: no member named 'PadLastBlock' in
> 'CryptoPP::Weak::PanamaHash<LittleEndian>'
> PadLastBlock(this->BLOCKSIZE, 0x01);
> ^~~~~~~~~~~~
> panama.cpp:501:22: note: in instantiation of member function
> 'CryptoPP::Weak::PanamaHash<CryptoPP::EnumToType<CryptoPP::ByteOrder, 0>
>> ::TruncatedFinal' requested here
> template class Weak::PanamaHash<LittleEndian>;
> ^
> In file included from panama.cpp:9:
> In file included from ./panama.h:4:
> In file included from ./strciphr.h:31:
> In file included from ./seckey.h:9:
This is easy to fix in crypto++; just follow the fixit hint (and I have submitted these changes to the crypto++ project)
2) clang asserts when compiling vmac.cpp <http://llvm.org/bugs/show_bug.cgi?id=8913>
3) clang is much, much slower than gcc 4.2.1 when building crypto++.
On my 2007 MacPro:
gcc takes 8m40s to build.
clang (TOT this morning) takes much longer; there is one file - sha.cpp which takes over 30 minutes, if it ever does finish, but all the other files combined take more than 45 minutes.
I'm quite happy to provide the modified crypto++ distro in case anyone else is interested in pursuing this.
-- Marshall
More information about the cfe-dev
mailing list