The hash implementation casts the input pointer to uint64_t* and directly reads
from this, which may cause unaligned accesses. Use memcpy() instead so this code
will not crash with SIGBUS on sparc.

--- a/Python/pyhash.c	2017-11-29 10:21:20.283094068 +0100
+++ b/Python/pyhash.c	2017-11-29 10:24:26.733087813 +0100
@@ -369,7 +369,7 @@
     uint64_t k0 = _le64toh(_Py_HashSecret.siphash.k0);
     uint64_t k1 = _le64toh(_Py_HashSecret.siphash.k1);
     uint64_t b = (uint64_t)src_sz << 56;
-    const uint64_t *in = (uint64_t*)src;
+    const uint8_t *in = (uint8_t*)src;
 
     uint64_t v0 = k0 ^ 0x736f6d6570736575ULL;
     uint64_t v1 = k1 ^ 0x646f72616e646f6dULL;
@@ -378,11 +378,13 @@
 
     uint64_t t;
     uint8_t *pt;
-    uint8_t *m;
+    const uint8_t *m;
 
     while (src_sz >= 8) {
-        uint64_t mi = _le64toh(*in);
-        in += 1;
-        src_sz -= 8;
+        uint64_t mi;
+        memcpy(&mi, in, sizeof(mi));
+        mi = _le64toh(mi);
+        in += sizeof(mi);
+        src_sz -= sizeof(mi);
         v3 ^= mi;
         DOUBLE_ROUND(v0,v1,v2,v3);
@@ -391,7 +393,7 @@
 
     t = 0;
     pt = (uint8_t *)&t;
-    m = (uint8_t *)in;
+    m = in;
     switch (src_sz) {
         case 7: pt[6] = m[6]; /* fall through */
         case 6: pt[5] = m[5]; /* fall through */
