Am 25.10.2015 um 12:33 schrieb Jeffrey Walton:
> 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?
My "vote":
I'd vote for (3) if we can't make the intrinsics work. This will also
enable us to provide RDSEED ( / RDRAND) for older compiler versions
(pre- 4.6 and pre- 4.8)
If this is too much work, (2) may be an option.
We should avoid (1) if anyhow possible.
BR
JPM
>
> 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]
> <mailto:[email protected]>.
> For more options, visit https://groups.google.com/d/optout.
--
--
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.