Thread (70 messages) flat view 70 messages, 11 authors, 2016-12-18

RE: [PATCH v2 1/4] siphash: add cryptographically secure hashtable function

From: David Laight <hidden>
Date: 2016-12-15 15:41:56
Also in: lkml, netdev

From: Hannes Frederic Sowa
Sent: 15 December 2016 14:57
On 15.12.2016 14:56, David Laight wrote:
quoted
From: Hannes Frederic Sowa
quoted
Sent: 15 December 2016 12:50
On 15.12.2016 13:28, David Laight wrote:
quoted
From: Hannes Frederic Sowa
quoted
Sent: 15 December 2016 12:23
...
quoted
Hmm? Even the Intel ABI expects alignment of unsigned long long to be 8
bytes on 32 bit. Do you question that?
Yes.

The linux ABI for x86 (32 bit) only requires 32bit alignment for u64 (etc).
Hmm, u64 on 32 bit is unsigned long long and not unsigned long. Thus I
am actually not sure if the ABI would say anything about that (sorry
also for my wrong statement above).

Alignment requirement of unsigned long long on gcc with -m32 actually
seem to be 8.
It depends on the architecture.
For x86 it is definitely 4.
May I ask for a reference?
Ask anyone who has had to do compatibility layers to support 32bit
binaries on 64bit systems.
I couldn't see unsigned long long being
mentioned in the ia32 abi spec that I found. I agree that those accesses
might be synthetically assembled by gcc and for me the alignment of 4
would have seemed natural. But my gcc at least in 32 bit mode disagrees
with that.
Try (retyped):

echo 'struct { long a; long long b; } s; int bar { return sizeof s; }' >foo.c
gcc [-m32] -O2 -S foo.c; cat foo.s

And look at what is generated.
Right now ipv6 addresses have an alignment of 4. So we couldn't even
naturally pass them to siphash but would need to copy them around, which
I feel like a source of bugs.
That is more of a problem on systems that don't support misaligned accesses.
Reading the 64bit values with two explicit 32bit reads would work.
I think you can get gcc to do that by adding an aligned(4) attribute to the
structure member.

	David
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help