Another thing - it pays to explicitly add "-maes -mpclmul" to CFLAGS and/or CXXFLAGS.
On Apr 26, 2014, at 16:42 , Frank Rehwinkel <[email protected]> wrote: > On Saturday, April 26, 2014 2:24:12 PM UTC-4, Jeffrey Walton wrote: > On Thursday, April 24, 2014 5:10:09 PM UTC-4, Frank Rehwinkel wrote: > Hi. I'm trying to get cryptopp562 built with the AES-NI instructions used in > rijndael.cpp on FreeBSD with either the 3.3 version of clang that comes with > FreeBSD 10.0 or with the 3.4 version built from ports but even just getting > the rijndael.cpp asm to compile with clang's internal assembler is a problem. > > The file compiles, and the entire test suite passes, when asm is disabled. > And a disabled asm is the default for now when CXX points to clang because > the GNUmakefile tries to read the assembler version by passing -v to it, but > the clang internal assembler doesn't accept -v as an option. So all three > version checks fail, and the three variables are set to 0. > > By adding -no-integrated-as to CXXFLAGS and also to the compiler lines that > test for the version number with EGREP, I'm able to get GAS210_OR_LATER and > GAS217_OR_LATER set to 1, but GAS219_OR_LATER is still 0 because the version > info returned by the external linker is > > GNU assembler version 2.17.50 [FreeBSD] 2007-07-03 (x86_64-unknown-freebsd) > using BFD version 2.17.50 [FreeBSD] 2007-07-03 > > > and it is this last version check that should pass, else AESNI is disabled as > I guess 2.19 of the assembler is needed. > > So I don't have an external assembler new enough. But I thought the clang > internal assembler should be new enough, so I hardwired the version test > variables to be true and let clang use its internal assembler.... > > It sounds like you are still using the old assembler. > > Open GNUmakefile, and add a line for AS. AS is a standard make variable (see > implicit variables at > https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html), > so GNU make should use your new assembler. > > Jeff > Thanks Jeff, > > That was it. FreeBSD 10.0 doesn't come with gcc nor a recent binutils. I > don't know a lot about the FreeBSD dependencies so I can't speak to why an > old version of 'as' was still in /usr/bin. But the most recent binutils > could still be built from ports and so after building it and once > /usr/local/bin was first in my PATH, I didn't even have to override AS in the > GNUmakefile. > > I did have to hack the makefile to get clang to use the external assembler > and config.h to get the build to follow the ASENI intrinsics path but after > that, it compiled and the selftest completely passed. And with objdump, it > looks like the aesni instructions made it into the binary. > > Thanks again. > > -- > -- > 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 > athttp://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 [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.
