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.

Reply via email to