Sean, It's not (just) your version of 'as' - new release of Crypto++ introduced an issue with rijndael.h file. Which can be worked around by adding -DCRYPTOPP_DISABLE_ASM flag to any code you compile with crypto++. I prefer modifying the .h file, removing this contingency, and Wei Dai agreed that it would be a a better solution (I think he's fixed it in SVN).
On Jul 10, 2009, at 13:48 , Sean McAllister wrote: > > It looks like make is passing -DCRYPTOPP_DISABLE_ASM to all the source > files, most likely because my version of 'as' is to low (1.38). > > > On Jul 10, 10:29 am, Sean McAllister <[email protected]> wrote: >> So I found some sample code on codeproject (Sample 3) relating the >> GCM >> functionality of crypto++ >> >> http://www.codeproject.com/KB/security/EncryptThenAuthenticate.aspx? >> d... >> >> I've got the crypto++ library compiled and I wrote a makefile for >> that >> sample that links against the crypto++ library: >> >> CC = g++ >> CCOPTS = -I../../cryptopp >> LDOPTS = -L../../cryptopp -lcryptopp >> >> all: example_3 >> >> stdafx.o: stdafx.cpp >> $(CC) $(CCOPTS) -c stdafx.cpp -o stdafx.o >> >> example_3: Sample.cpp stdafx.o stdafx.h >> $(CC) $(CCOPTS) $(LDOPTS) Sample.cpp -o example_3 stdafx.o >> >> clean: >> rm -rf example_3 *.o >> >> But when I go to do the final linking, I get this: >> >> Undefined symbols: >> "CryptoPP::Rijndael::Enc::AdvancedProcessBlocks(unsigned char >> const*, >> unsigned char const*, unsigned char*, unsigned long, unsigned int) >> const", >> referenced from: >> vtable for CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0, >> CryptoPP::Rijndael::Enc>in ccz7OlpQ.o >> vtable for >> CryptoPP >> ::ClonableImpl<CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0, >> CryptoPP::Rijndael::Enc>, CryptoPP::Rijndael::Enc>in ccz7OlpQ.o >> "non-virtual thunk to >> CryptoPP::Rijndael::Enc::AdvancedProcessBlocks(unsigned char const*, >> unsigned char const*, unsigned char*, unsigned long, unsigned int) >> const", >> referenced from: >> vtable for CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0, >> CryptoPP::Rijndael::Enc>in ccz7OlpQ.o >> vtable for >> CryptoPP >> ::ClonableImpl<CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0, >> CryptoPP::Rijndael::Enc>, CryptoPP::Rijndael::Enc>in ccz7OlpQ.o >> ld: symbol(s) not found >> >> Checking in rijndael.cpp I can see the function defintiion, but >> it's wrapper >> in an ifdef : >> >> #if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE || >> defined(CRYPTOPP_X64_MASM_AVAILABLE) >> >> Rijndae::Enc::AdvancedProcessBlocks >> #endif >> >> Which would seem to indicate those flags are false and undefined >> respectively. But the GCM encryptor/decryptor is still trying to use >> this function. >> >> Is this a bug or have I somehow mis-compiled (I just ran make -f >> GNUmakefile)? >> >> Here's my uname and gcc -v info >> >> uname: >> Darwin localhost 9.7.0 Darwin Kernel Version 9.7.0: Tue Mar 31 >> 22:52:17 PDT >> 2009; root:xnu-1228.12.14~1/RELEASE_I386 i386 i386 >> >> gcc -v >> >> Target: i686-apple-darwin9 >> Configured with: /var/tmp/gcc/gcc-5465~16/src/configure --disable- >> checking >> -enable-werror --prefix=/usr --mandir=/share/man >> --enable-languages=c,objc,c++,obj-c++ >> --program-transform-name=/^[cg][^.-]*$/s/$/-4.0/ >> --with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib >> --build=i686-apple-darwin9 --with-arch=apple --with-tune=generic >> --host=i686-apple-darwin9 --target=i686-apple-darwin9 >> Thread model: posix >> gcc version 4.0.1 (Apple Inc. build 5465) > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to [email protected]. More information about Crypto++ and this group is available at http://www.cryptopp.com. -~----------~----~----~----~------~----~------~--~---
