It looks like the GCC compiler is broken for RDSEED on Cygwin and MinGW
(RDRAND gear is fine). Here's a test under Cygwin-X86. Cygwin-X64 produced
a similar error
g++ -DNDEBUG -g2 -O3 -maes -msse4 -msse3 -msse2 -mrdrnd -mrdseed -Wall
-march=native -c rdrand.cpp
rdrand.cpp: In function ‘int CryptoPP::GCC_RSI_GenerateBlock(byte*,
size_t, unsigned int)’:
rdrand.cpp:616:51: error: ‘__builtin_ia32_rdseed32_step’ was not
declared in this scope
if (__builtin_ia32_rdseed32_step((word32*)output))
^
rdrand.cpp:634:40: error: ‘__builtin_ia32_rdseed32_step’ was not
declared in this scope
if (__builtin_ia32_rdseed32_step(&val))
^
GNUmakefile:414: recipe for target 'rdrand.o' failed
make: *** [rdrand.o] Error 1
As far as I know, __builtin_ia32_rdseed{16|32|64}_step are the only
functions semi-documented by GCC. Confer,
https://gcc.gnu.org/onlinedocs/gcc/x86-Built-in-Functions.html. Everything
else is undocumented (counter examples are welcomed).
JPM wanted RDSEED, and I think we should provide it. We have to decide what
to do here.
I think the options are:
(1) Remove RDSEED completely until GCC provides full support
(2) Disable RDSEED for the Unix on Windows gear until GCC provides full
support
(3) Provide an ASM implementation that always "just works"
What is the course of action we should take?
Jeff
--
--
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.
---
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 [email protected].
For more options, visit https://groups.google.com/d/optout.