diff -up ./crypto/random/Random.c.ppc64 ./crypto/random/Random.c --- ./crypto/random/Random.c.ppc64 2016-12-05 00:06:42.586930523 -0500 +++ ./crypto/random/Random.c 2016-12-05 00:07:36.524592652 -0500 @@ -20,6 +20,7 @@ #include "util/Assert.h" #include "util/Base32.h" #include "util/Identity.h" +#include "util/Endian.h" #include #include @@ -163,10 +164,11 @@ void Random_addRandom(struct Random* ran static void stir(struct Random* rand) { + uint64_t nonce = Endian_hostToLittleEndian64(rand->nonce); crypto_stream_salsa20_xor((uint8_t*)rand->buff, (uint8_t*)rand->buff, BUFFSIZE, - (uint8_t*)&rand->nonce, + (uint8_t*)&nonce, (uint8_t*)rand->tempSeed); rand->nonce++; rand->nextByte = 0; diff -up ./util/ArchInfo.c.ppc64 ./util/ArchInfo.c --- ./util/ArchInfo.c.ppc64 2016-10-11 17:39:44.000000000 -0400 +++ ./util/ArchInfo.c 2016-12-05 00:05:56.482360588 -0500 @@ -98,8 +98,15 @@ gcc arch.c #error unknown endian #endif #elif defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) || defined(_ARCH_PPC64) - #define ARCH ArchInfo_AUDIT_ARCH_PPC64 - #define ARCHSTR "ppc64" + #if defined(Endian_BIG) + #define ARCH ArchInfo_AUDIT_ARCH_PPC64 + #define ARCHSTR "ppc64" + #elif defined(Endian_LITTLE) + #define ARCH ArchInfo_AUDIT_ARCH_PPC64LE + #define ARCHSTR "ppc64le" + #else + #error unknown endian + #endif #elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC) #define ARCH ArchInfo_AUDIT_ARCH_PPC #define ARCHSTR "ppc" @@ -145,6 +152,9 @@ gcc arch.c #else #error unknown bit width #endif +#elif defined(__s390x__) + #define ARCH ArchInfo_AUDIT_ARCH_S390X + #define ARCHSTR "s390x" #else #error architecture unknown #endif diff -up ./util/test/Endian_test.c.ppc64 ./util/test/Endian_test.c --- ./util/test/Endian_test.c.ppc64 2016-12-05 10:48:46.767433986 -0500 +++ ./util/test/Endian_test.c 2016-12-05 10:50:23.116623515 -0500 @@ -40,32 +40,32 @@ int main() Assert_true(c == Endian_bigEndianToHost16(sc)); Assert_true(c == Endian_hostToBigEndian16(sc)); Assert_true(c == Endian_hostToLittleEndian16(c)); - Assert_true(c == Endian_hostToLittleEndian16(c)); + Assert_true(c == Endian_littleEndianToHost16(c)); Assert_true(a == Endian_bigEndianToHost32(sa)); Assert_true(a == Endian_hostToBigEndian32(sa)); Assert_true(a == Endian_hostToLittleEndian32(a)); - Assert_true(a == Endian_hostToLittleEndian32(a)); + Assert_true(a == Endian_littleEndianToHost32(a)); Assert_true(b == Endian_bigEndianToHost64(sb)); Assert_true(b == Endian_hostToBigEndian64(sb)); Assert_true(b == Endian_hostToLittleEndian64(b)); - Assert_true(b == Endian_hostToLittleEndian64(b)); + Assert_true(b == Endian_littleEndianToHost64(b)); } else { Assert_true(c == Endian_bigEndianToHost16(c)); Assert_true(c == Endian_hostToBigEndian16(c)); Assert_true(c == Endian_hostToLittleEndian16(sc)); - Assert_true(c == Endian_hostToLittleEndian16(sc)); + Assert_true(c == Endian_littleEndianToHost16(sc)); Assert_true(a == Endian_bigEndianToHost32(a)); Assert_true(a == Endian_hostToBigEndian32(a)); Assert_true(a == Endian_hostToLittleEndian32(sa)); - Assert_true(a == Endian_hostToLittleEndian32(sa)); + Assert_true(a == Endian_littleEndianToHost32(sa)); Assert_true(b == Endian_bigEndianToHost64(b)); Assert_true(b == Endian_hostToBigEndian64(b)); Assert_true(b == Endian_hostToLittleEndian64(sb)); - Assert_true(b == Endian_hostToLittleEndian64(sb)); + Assert_true(b == Endian_littleEndianToHost64(sb)); } Assert_true(b == Endian_byteSwap64(sb));