|
|
Message-ID: <00fc01cd6428$85958310$90c08930$@net>
Date: Tue, 17 Jul 2012 09:29:06 -0500
From: "jfoug" <jfoug@....net>
To: <john-dev@...ts.openwall.com>
Subject: RE: New core (?) LM fails alignment
> On Tues, July 17, 2012 8:29 AM, Solar Designer wrote:
>On Sun, Jul 15, 2012 at 08:52:04PM +0200, magnum wrote:
>> I set Tavis' binary alignment to MEM_ALIGN_SIMD
>
>Jim mentioned that raw-sha1-ng was failing self-test in a certain build
>for that reason. Perhaps its binary() does not actually provide that
>alignment (I did not check)? We're currently specifying only one
>alignment - the same for what binary() provides and what binary_hash*()
>and cmp_*() expect. So if the latter expect MEM_ALIGN_SIMD, then
>binary() has to provide that. For binary() vs. binary_hash*() this is
>actually required in the loader. For binary() vs. cmp_*(), this is not
>strictly required, but the self-test currently assumes it. So the
>simplest fix is in those special cases to provide the alignment in
>binary(). I think there are very few cases of cmp_*() having greater
>alignment requirements than binary_hash*().
I think that 32 bit alignment requirement is what 'most' of the require
alignment bin_hash*() need. I think most of the cmp_*() also require this,
or less. There likely ARE exceptions.
Tavis' binary() return alignment is 4 bytes (and array us u_int32's). NOTE,
on my athon64 at home, that format cores. The alignment does not matter. I
used a static pointer, allocated to 16 byte alignment, and it still cores.
Old cygwin gcc. I simply comment that format out, on that machine, within
the john.c. This was the same gcc that when I tried to do this:
static union xx {
uint32_t u32[SHA1_DIGEST_WORDS];
__m128i junk;
} u;
uint32_t *result = u.u32;
also failed to align to 16 bytes (other GCC's aligned to 16 just fine, using
this construct). For this compiler, I instead used
static uint32_t *result = 0;
if (!result) result = mem_alloc_tiny(SHA1_DIGEST_WORDS*sizeof(uint32_t),
16);
This 'passed' the validation check for alignment, but still cores. That is
where I simply gave up, and commented john.c on that machine.
As for alignment 16, I do not think it is needed, and likely will only gain
a percent or 2, when benchmarking, and not when running for real. I think
align 4 is all that is needed.
Jim.
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.