Running on iOS

30 views
Skip to first unread message

pdoh...@cipherloc.net

unread,
Feb 20, 2017, 2:19:52 PM2/20/17
to Crypto++ Users
I am back again with an issue on iOS that only seems to be affecting devices and not the simulator.  I did not have access to a device until this point so it went unnoticed.  I can build the library with no compiler issues but when I try to run it on a device(this one is arm64 architecture) I get an error of unreferenced symbols on two functions out of the bench object file.  The functions are BenchmarkAll2(double,double) and GlobalRNG().  We are running with version 5.6.5 of cryptopp on xcode 8 in an objective c program.  Any ideas or possible a hint as to where we should look would be much appreciated.

Patrick

pdoh...@cipherloc.net

unread,
Feb 20, 2017, 2:36:02 PM2/20/17
to Crypto++ Users
I meant to put undefined symbols not unreferenced

Jeffrey Walton

unread,
Feb 20, 2017, 2:40:34 PM2/20/17
to Crypto++ Users


On Monday, February 20, 2017 at 2:19:52 PM UTC-5, pdoh...@cipherloc.net wrote:
I am back again with an issue on iOS that only seems to be affecting devices and not the simulator.  I did not have access to a device until this point so it went unnoticed.  I can build the library with no compiler issues but when I try to run it on a device(this one is arm64 architecture) I get an error of unreferenced symbols on two functions out of the bench object file.  The functions are BenchmarkAll2(double,double) and GlobalRNG().  We are running with version 5.6.5 of cryptopp on xcode 8 in an objective c program.  Any ideas or possible a hint as to where we should look would be much appreciated.

It sounds like you are including test files in your library build. The library should *not* include:

* validate.h
* bench.h

* test.cpp
* bench1.cpp, bench2.cpp
* validat0.cpp validat1.cpp validat2.cpp validat3.cpp
* datatest.cpp
* regtest.cpp
* fipsalgt.cpp
* dlltest.cpp
 
I've been meaning to investigate moving them into a Test namespace (CryptoPP::Test). We've got a major change coming up for the next release, so now would be a good time to do it.

If interested in more of the details, GlobalRNG() is declared in validate.h, and it is defined in test.cpp. It is used by the validation and test routines. The output artifact for validation and test is cryptest.exe.

Jeff

Jeffrey Walton

unread,
Feb 20, 2017, 2:57:49 PM2/20/17
to Crypto++ Users
I'm not getting any hits after building the library for iOS and arm64:

hilbert:cryptopp$ nm libcryptopp.a | c++filt | grep GlobalRNG
hilbert:cryptopp$ nm libcryptopp.a | c++filt | grep BenchmarkAll2
hilbert:cryptopp$

Also, the 'make sources' recipe gives you lists of source files. It
does not list header files, though:

hilbert:cryptopp$ make sources
Library sources: cryptlib.cpp cpu.cpp integer.cpp 3way.cpp adler32.cpp
algebra.cpp algparam.cpp arc4.cpp asn.cpp authenc.cpp base32.cpp
base64.cpp basecode.cpp bfinit.cpp blake2.cpp blowfish.cpp
blumshub.cpp camellia.cpp cast.cpp casts.cpp cbcmac.cpp ccm.cpp
chacha.cpp channels.cpp cmac.cpp crc.cpp default.cpp des.cpp dessp.cpp
dh.cpp dh2.cpp dll.cpp dsa.cpp eax.cpp ec2n.cpp eccrypto.cpp ecp.cpp
elgamal.cpp emsa2.cpp eprecomp.cpp esign.cpp files.cpp filters.cpp
fips140.cpp fipstest.cpp gcm.cpp gf256.cpp gf2_32.cpp gf2n.cpp
gfpcrypt.cpp gost.cpp gzip.cpp hex.cpp hmac.cpp hrtimer.cpp ida.cpp
idea.cpp iterhash.cpp keccak.cpp luc.cpp mars.cpp marss.cpp md2.cpp
md4.cpp md5.cpp misc.cpp modes.cpp mqueue.cpp mqv.cpp nbtheory.cpp
network.cpp oaep.cpp osrng.cpp panama.cpp pkcspad.cpp poly1305.cpp
polynomi.cpp pssr.cpp pubkey.cpp queue.cpp rabin.cpp randpool.cpp
rc2.cpp rc5.cpp rc6.cpp rdrand.cpp rdtables.cpp rijndael.cpp
ripemd.cpp rng.cpp rsa.cpp rw.cpp safer.cpp salsa.cpp seal.cpp
seed.cpp serpent.cpp sha.cpp sha3.cpp shacal2.cpp shark.cpp
sharkbox.cpp skipjack.cpp socketft.cpp sosemanuk.cpp square.cpp
squaretb.cpp strciphr.cpp tea.cpp tftables.cpp tiger.cpp tigertab.cpp
trdlocal.cpp ttmac.cpp twofish.cpp vmac.cpp wait.cpp wake.cpp
whrlpool.cpp xtr.cpp xtrcrypt.cpp zdeflate.cpp zinflate.cpp zlib.cpp

Test sources: test.cpp bench1.cpp bench2.cpp validat0.cpp validat1.cpp
validat2.cpp validat3.cpp datatest.cpp regtest.cpp fipsalgt.cpp
dlltest.cpp

Jeff

pdoh...@cipherloc.net

unread,
Mar 13, 2017, 3:07:21 PM3/13/17
to Crypto++ Users, nolo...@gmail.com
Apologies for replying so late.  Work got a bit busy.  I was able to solve this by removing bench.cpp from our folder for compiling.  It seems that it was left over after an update.

Patrick
Reply all
Reply to author
Forward
0 new messages