diff options
author | Sam James <sam@gentoo.org> | 2021-01-29 20:43:14 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2021-01-29 20:45:50 +0000 |
commit | c31ae3b3a3df3277b878f88de17d508bde370aee (patch) | |
tree | 2adc36cd07e5b314c091a8d7076a283ea12273fc /dev-libs/libgcrypt | |
parent | kde-plasma/bluedevil: remove unused patch(es) (diff) | |
download | gentoo-c31ae3b3a3df3277b878f88de17d508bde370aee.tar.gz gentoo-c31ae3b3a3df3277b878f88de17d508bde370aee.tar.bz2 gentoo-c31ae3b3a3df3277b878f88de17d508bde370aee.zip |
dev-libs/libgcrypt: fix USE=-asm build
Closes: https://bugs.gentoo.org/767859
Package-Manager: Portage-3.0.14, Repoman-3.0.2
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-libs/libgcrypt')
-rw-r--r-- | dev-libs/libgcrypt/files/libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch | 141 | ||||
-rw-r--r-- | dev-libs/libgcrypt/libgcrypt-1.9.1-r1.ebuild (renamed from dev-libs/libgcrypt/libgcrypt-1.9.1.ebuild) | 1 |
2 files changed, 142 insertions, 0 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 new file mode 100644 index 000000000000..875c22370082 --- /dev/null +++ b/dev-libs/libgcrypt/files/libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch @@ -0,0 +1,141 @@ +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); diff --git a/dev-libs/libgcrypt/libgcrypt-1.9.1.ebuild b/dev-libs/libgcrypt/libgcrypt-1.9.1-r1.ebuild index a40209631d48..952a5816824a 100644 --- a/dev-libs/libgcrypt/libgcrypt-1.9.1.ebuild +++ b/dev-libs/libgcrypt/libgcrypt-1.9.1-r1.ebuild @@ -21,6 +21,7 @@ BDEPEND="doc? ( virtual/texi2dvi )" PATCHES=( "${FILESDIR}"/${PN}-1.6.1-uscore.patch "${FILESDIR}"/${PN}-multilib-syspath.patch + "${FILESDIR}"/${PN}-1.9.1-fix-no-asm-on-amd64-x86.patch ) MULTILIB_CHOST_TOOLS=( |