diff --git a/ChangeLog b/ChangeLog index 6aab71e6295b49b9241a00afbb0570b76ce0ae0c..015f3c085e0e729fca3f8ce7fce2271d883e8dbd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2013-04-11 Niels Möller <nisse@lysator.liu.se> + * ecc-mul-a.c (ecc_mul_a): Avoid using mp_bitcnt_t, for + compatibility with older GMP versions. + * ecc-mul-g.c (ecc_mul_g): Likewise. + * eccdata.c (ecc_mul_binary): Likewise. + * sec-modinv.c (sec_modinv): Likewise. + * x86_64/sha3-permute.asm: Go via memory for moves between general registers and xmm registers. diff --git a/ecc-mul-a.c b/ecc-mul-a.c index b23bdc5d904a59d218f937c06974418d6f285837..7a537bf6ba3b017e47ddd6f54eda19c804c842a0 100644 --- a/ecc-mul-a.c +++ b/ecc-mul-a.c @@ -122,8 +122,10 @@ ecc_mul_a (const struct ecc_curve *ecc, mp_limb_t *scratch_out = table + (3*ecc->size << ECC_MUL_A_WBITS); int is_zero = 0; - mp_bitcnt_t blocks = (ecc->bit_size + ECC_MUL_A_WBITS - 1) / ECC_MUL_A_WBITS; - mp_bitcnt_t bit_index = (blocks-1) * ECC_MUL_A_WBITS; + /* Avoid the mp_bitcnt_t type for compatibility with older GMP + versions. */ + unsigned blocks = (ecc->bit_size + ECC_MUL_A_WBITS - 1) / ECC_MUL_A_WBITS; + unsigned bit_index = (blocks-1) * ECC_MUL_A_WBITS; mp_size_t limb_index = bit_index / GMP_NUMB_BITS; unsigned shift = bit_index % GMP_NUMB_BITS; diff --git a/ecc-mul-g.c b/ecc-mul-g.c index d95e518d76c13654a5d72112ae048afafbe4e154..8e41c1106112bf57f073079cf02c52aa7500edc7 100644 --- a/ecc-mul-g.c +++ b/ecc-mul-g.c @@ -66,7 +66,9 @@ ecc_mul_g (const struct ecc_curve *ecc, mp_limb_t *r, for (j = 0; j * c < bit_rows; j++) { unsigned bits; - mp_bitcnt_t bit_index; + /* Avoid the mp_bitcnt_t type for compatibility with older GMP + versions. */ + unsigned bit_index; /* Extract c bits from n, stride k, starting at i + kcj, ending at i + k (cj + c - 1)*/ diff --git a/eccdata.c b/eccdata.c index 9cc24f1ac42e25a979950d8a300b28a667e1ae43..7431d79b4bcd602a1a4c2334d2f9727cdf9d7047 100644 --- a/eccdata.c +++ b/eccdata.c @@ -219,7 +219,9 @@ static void ecc_mul_binary (const struct ecc_curve *ecc, struct ecc_point *r, const mpz_t n, const struct ecc_point *p) { - mp_bitcnt_t k; + /* Avoid the mp_bitcnt_t type for compatibility with older GMP + versions. */ + unsigned k; assert (r != p); assert (mpz_sgn (n) > 0); diff --git a/sec-modinv.c b/sec-modinv.c index 0991a98c9155458da18ba21d5861b9eaa9729ad0..16b67384886e7eb93565473b79e43ec2b19b8d13 100644 --- a/sec-modinv.c +++ b/sec-modinv.c @@ -72,7 +72,9 @@ sec_modinv (mp_limb_t *vp, mp_limb_t *ap, mp_size_t n, #define dp (scratch + n) #define up (scratch + 2*n) - mp_bitcnt_t i; + /* Avoid the mp_bitcnt_t type for compatibility with older GMP + versions. */ + unsigned i; /* Maintain