Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cryptest: armv7l: undefined references for NEON, PMULL, and DetectArmFeatures #480

Closed
anonimal opened this issue Aug 30, 2017 · 3 comments
Closed

Comments

@anonimal
Copy link
Contributor

On two of our machines:

cryptest-result_armv7l-rev2.txt

processor       : 0
model name      : ARMv7 Processor rev 2 (v7l)
BogoMIPS        : 50.00
Features        : half thumb fastmult vfp edsp thumbee vfpv3 tls idiva idivt vfpd32 lpae 
CPU implementer : 0x56
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0x584
CPU revision    : 2

cryptest-result_armv7l-rev4.txt

processor       : 0
model name      : ARMv7 Processor rev 4 (v7l)
BogoMIPS        : 50.52
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 4

Possibly related to monero-project/kovri#699?

@noloader
Copy link
Collaborator

noloader commented Aug 30, 2017

undefined reference to `CryptoPP::g_hasPMULL'

ARMv8-a PMULL was missing a guard. It was added at Commit b2693c4327c8.

undefined reference to `CryptoPP::DetectArmFeatures()'

undefined reference to `CryptoPP::g_ArmDetectionDone'

undefined reference to `CryptoPP::g_hasNEON'

The second problem is, cpu.cpp was not being compiled for ARMv7-a. That caused DetectArmFeatures, g_ArmDetectionDone, g_hasNEON and friends to go missing. It looks like something got knocked loose in the makefile regarding IS_ARM32. It was cleared at Commit c079abdbc073.


By the way, if you need an ARMv8 machine, then you can (1) buy one or (2) use the GCC compile farm. For (1) LeMaker HiKey and Pine64 are good choices. They are inexpensive dev-boards with the optional Crypto. The HiKey cost me about $150 USD, but the Pine64 cost me about $69 USD. Be aware RPI3's are ARMv8, but they lack the optional Crypto. Avoid RPI3 for testing.

For (2), you should sign up for a GCC Compile Farm account. Hosts gcc113.fsffrance.org through gcc118.fsffrance.org are ARMv8. GCC113-GCC116 lack the optional Crypto. GCC117 and GCC118 have the optional Crypto. They are as fast as a modern desktop.

If you decide for the compile farm account, then it takes 6 to 9 months to get approved. The admins seem to batch requests and approve a group of them at once. I believe Marcel and Uri are waiting for approval.

@anonimal
Copy link
Contributor Author

By the way, if you need an ARMv8 machine

Thanks for the info! We have an ARMv8 machine in our arsenal but it's currently offline/being swapped out. Another ARMV8 would be good to have regardless.

b2693c4
c079abd

Fixed! Thank you @noloader.

cryptest-result_armv7l-rev2.txt
cryptest-result_armv7l-rev4.txt

@anonimal
Copy link
Contributor Author

JFTR: @noloader and I have resolved this internally. Thanks again, @noloader.

Repository owner deleted a comment from anonimal Aug 31, 2017
Repository owner deleted a comment from anonimal Aug 31, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants