On Mon, Dec 12, 2016 at 11:49 AM, <pdohe...@cipherloc.net> wrote: > So just as a sanity check, I decided to pull the cryptopp lib out by itself > and see if I could use that by itself to make sure that the changes I had > made before didn't mess with that library. It does not work however and I > get completely different errors. When trying to use cryptopp on its own, I > get missing symbols for CryptoPP::AlignedAllocate(unsgined long) and > CryptoPP::AlignedDeallocate(void*). AlignedAllocate is referenced from > AllocatorwithCleanup<unsigned char, true>::allocate(unsigned long, void > const*) and AlignedDeallocate is referenced from > AllocatorWithCleanup<unsigned char, true>::deallocate(void*, unsigned long). > The library is built for the right architecture I am testing on, I checked > this with lipo -info. I am also using objective C as the language for this > test if that makes a difference, although I do not think it does. Any ideas > on that one?
This happens when the library is built with non-SSE and non-NEON support. AlignedAllocate are AlignedDeallocate are used for 16-byte aligned allocations. The aligned data buffers are eventually sent to the SIMD (SSE) or ASIMD (ARM) coprocessors. Use of SSE and NEON can be disabled with -DCRYPTOPP_DISABLE_ASM, which means AlignedAllocate are AlignedDeallocate are not needed. I usually see it surface under MinGW32 because they {are|were} building Crypto++ with -DCRYPTOPP_DISABLE_ASM. Later, a user would come along and not include -DCRYPTOPP_DISABLE_ASM in their CXXFLAGS. So users wanted AlignedAllocate are AlignedDeallocate, but the library was shipped without them. When I use setenv-ios.sh to build the library from the latest sources, I get the symbol. The 'T' section is the text section, which means the symbols are present in the library. cryptopp-arm64$ xcrun -sdk iphoneos lipo -info libcryptopp.a input file libcryptopp.a is not a fat file Non-fat file: libcryptopp.a is architecture: arm64 cryptopp-arm64$ nm libcryptopp.a | c++filt | egrep '(AlignedAllocate|AlignedDeallocate)' | grep ' T ' 0000000000000400 T CryptoPP::AlignedAllocate(unsigned long) 0000000000000430 T CryptoPP::AlignedDeallocate(void*) I also performed the exercise for Crypto++ 5.6.4 and 5.6.5, and the symbols are present too. So its not like there are strings attached to get the symbols. It may be worth noting.... Crypto++ 5.6.3 and earlier used -DCRYPTOPP_DISABLE_ASM for Clang. It took Uri and I several months to get the compiler and integrated assembler issues worked out. We could not remove -DCRYPTOPP_DISABLE_ASM until 5.6.4. It sounds like (to me) the Xcode project is not quite right. Jeff -- -- You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to cryptopp-users-unsubscr...@googlegroups.com. More information about Crypto++ and this group is available at http://www.cryptopp.com. --- You received this message because you are subscribed to the Google Groups "Crypto++ Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to cryptopp-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.