64bit bitfields and sun solaris 8

Matthieu Patou mat at samba.org
Fri Nov 5 02:43:58 MDT 2010


Hi Love,

So I'm coming back on the subject of the bitfields
On 22/10/2010 07:23, Love Hörnquist Åstrand wrote:
> 21 okt 2010 kl. 14.41 skrev Matthieu Patou:
>
>> So in most of the cases on most plateforms this will lead to the use of 64bitfields so far we have the pb only on sun sparc with sun studio (not with gcc).
My proposal it the following:
diff --git a/source4/heimdal/lib/hcrypto/sha512.c 
b/source4/heimdal/lib/hcrypto/sha512.c
index 18447b6..2352dec 100644
--- a/source4/heimdal/lib/hcrypto/sha512.c
+++ b/source4/heimdal/lib/hcrypto/sha512.c
@@ -158,11 +158,17 @@ swap_uint64_t (uint64_t t)
             ((temp & 0x0000ffff0000ffff) << 16);
  }
  #endif
-
+#if defined HAVE_BIG_BITFIELD
  struct x64{
      uint64_t a:64;
      uint64_t b:64;
  };
+#else
+struct x64{
+    uint64_t a;
+    uint64_t b;
+};
+#endif

  void
  SHA512_Update (SHA512_CTX *m, const void *v, size_t len)

> We really to figure out if we need bitfields at all, and if the byte swapping operations really make sense doing this way any more.
>
> Its really a performance optimization and should be treated as is, if it doesn't work, it should be taken out.
>
> Can we have this discussion on heimdal-discuss/and cross post, having it in two places will only confuse people.
So how do you propose to figure out to solve this problem ?
My understanding it that you are not sure that doing simply
struct x64 {
     uint64_t a;
     uint64_t b;
};
Will work always due to big endian/small endian issue and padding, am I 
right ?

When you talk about performance can you explain what the bitfields 
should bring ?

Cheers.
Matthieu.

-- 
Matthieu Patou
Samba Team        http://samba.org
Private repo      http://git.samba.org/?p=mat/samba.git;a=summary




More information about the samba-technical mailing list