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 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