diff options
Diffstat (limited to 'dev-libs/libgcrypt/files/libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch')
-rw-r--r-- | dev-libs/libgcrypt/files/libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/dev-libs/libgcrypt/files/libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch b/dev-libs/libgcrypt/files/libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch deleted file mode 100644 index 875c22370082..000000000000 --- a/dev-libs/libgcrypt/files/libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch +++ /dev/null @@ -1,141 +0,0 @@ -Broken in https://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=commitdiff;h=8d404a629167d67ed56e45de3e65d1e0b7cdeb24;hp=3b34bd6e178614d6021ee7d1140646f7c8ed7519 -https://dev.gnupg.org/T5277 -https://bugs.gentoo.org/767859 - -This is a revert of that commit, as suggested by upstream in the linked bug. -diff --git a/random/rand-internal.h b/random/rand-internal.h -index 34221569..d99c6671 100644 ---- a/random/rand-internal.h -+++ b/random/rand-internal.h -@@ -141,7 +141,7 @@ void _gcry_rndhw_poll_fast (void (*add)(const void*, size_t, - enum random_origins origin); - size_t _gcry_rndhw_poll_slow (void (*add)(const void*, size_t, - enum random_origins), -- enum random_origins origin, size_t req_length); -+ enum random_origins origin); - - - -diff --git a/random/rndhw.c b/random/rndhw.c -index 3cf9acc3..2829382c 100644 ---- a/random/rndhw.c -+++ b/random/rndhw.c -@@ -198,33 +198,24 @@ _gcry_rndhw_poll_fast (void (*add)(const void*, size_t, enum random_origins), - - - /* Read 64 bytes from a hardware RNG and return the number of bytes -- actually read. However hardware source is let account only -- for up to 50% (or 25% for RDRAND) of the requested bytes. */ -+ actually read. */ - size_t - _gcry_rndhw_poll_slow (void (*add)(const void*, size_t, enum random_origins), -- enum random_origins origin, size_t req_length) -+ enum random_origins origin) - { - size_t nbytes = 0; - - (void)add; - (void)origin; - -- req_length /= 2; /* Up to 50%. */ -- - #ifdef USE_DRNG - if ((_gcry_get_hw_features () & HWF_INTEL_RDRAND)) -- { -- req_length /= 2; /* Up to 25%. */ -- nbytes += poll_drng (add, origin, 0); -- } -+ nbytes += poll_drng (add, origin, 0); - #endif - #ifdef USE_PADLOCK - if ((_gcry_get_hw_features () & HWF_PADLOCK_RNG)) - nbytes += poll_padlock (add, origin, 0); - #endif - -- if (nbytes > req_length) -- nbytes = req_length; -- - return nbytes; - } -diff --git a/random/rndlinux.c b/random/rndlinux.c -index a22db177..f378a549 100644 ---- a/random/rndlinux.c -+++ b/random/rndlinux.c -@@ -190,10 +190,19 @@ _gcry_rndlinux_gather_random (void (*add)(const void*, size_t, - } - - -- /* First read from a hardware source. Note that _gcry_rndhw_poll_slow lets -- it account only for up to 50% (or 25% for RDRAND) of the requested -- bytes. */ -- n_hw = _gcry_rndhw_poll_slow (add, origin, length); -+ /* First read from a hardware source. However let it account only -+ for up to 50% (or 25% for RDRAND) of the requested bytes. */ -+ n_hw = _gcry_rndhw_poll_slow (add, origin); -+ if ((_gcry_get_hw_features () & HWF_INTEL_RDRAND)) -+ { -+ if (n_hw > length/4) -+ n_hw = length/4; -+ } -+ else -+ { -+ if (n_hw > length/2) -+ n_hw = length/2; -+ } - if (length > 1) - length -= n_hw; - -diff --git a/src/g10lib.h b/src/g10lib.h -index 243997eb..cba2e237 100644 ---- a/src/g10lib.h -+++ b/src/g10lib.h -@@ -217,8 +217,6 @@ char **_gcry_strtokenize (const char *string, const char *delim); - - - /*-- src/hwfeatures.c --*/ --#if defined(HAVE_CPU_ARCH_X86) -- - #define HWF_PADLOCK_RNG (1 << 0) - #define HWF_PADLOCK_AES (1 << 1) - #define HWF_PADLOCK_SHA (1 << 2) -@@ -238,28 +236,20 @@ char **_gcry_strtokenize (const char *string, const char *delim); - #define HWF_INTEL_RDTSC (1 << 15) - #define HWF_INTEL_SHAEXT (1 << 16) - --#elif defined(HAVE_CPU_ARCH_ARM) -- --#define HWF_ARM_NEON (1 << 0) --#define HWF_ARM_AES (1 << 1) --#define HWF_ARM_SHA1 (1 << 2) --#define HWF_ARM_SHA2 (1 << 3) --#define HWF_ARM_PMULL (1 << 4) -- --#elif defined(HAVE_CPU_ARCH_PPC) -+#define HWF_ARM_NEON (1 << 17) -+#define HWF_ARM_AES (1 << 18) -+#define HWF_ARM_SHA1 (1 << 19) -+#define HWF_ARM_SHA2 (1 << 20) -+#define HWF_ARM_PMULL (1 << 21) - --#define HWF_PPC_VCRYPTO (1 << 0) --#define HWF_PPC_ARCH_3_00 (1 << 1) --#define HWF_PPC_ARCH_2_07 (1 << 2) -+#define HWF_PPC_VCRYPTO (1 << 22) -+#define HWF_PPC_ARCH_3_00 (1 << 23) -+#define HWF_PPC_ARCH_2_07 (1 << 24) - --#elif defined(HAVE_CPU_ARCH_S390X) -- --#define HWF_S390X_MSA (1 << 0) --#define HWF_S390X_MSA_4 (1 << 1) --#define HWF_S390X_MSA_8 (1 << 2) --#define HWF_S390X_VX (1 << 3) -- --#endif -+#define HWF_S390X_MSA (1 << 25) -+#define HWF_S390X_MSA_4 (1 << 26) -+#define HWF_S390X_MSA_8 (1 << 27) -+#define HWF_S390X_VX (1 << 28) - - gpg_err_code_t _gcry_disable_hw_feature (const char *name); - void _gcry_detect_hw_features (void); |