1 |
commit: c31ae3b3a3df3277b878f88de17d508bde370aee |
2 |
Author: Sam James <sam <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Jan 29 20:43:14 2021 +0000 |
4 |
Commit: Sam James <sam <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Jan 29 20:45:50 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c31ae3b3 |
7 |
|
8 |
dev-libs/libgcrypt: fix USE=-asm build |
9 |
|
10 |
Closes: https://bugs.gentoo.org/767859 |
11 |
Package-Manager: Portage-3.0.14, Repoman-3.0.2 |
12 |
Signed-off-by: Sam James <sam <AT> gentoo.org> |
13 |
|
14 |
.../libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch | 141 +++++++++++++++++++++ |
15 |
...rypt-1.9.1.ebuild => libgcrypt-1.9.1-r1.ebuild} | 1 + |
16 |
2 files changed, 142 insertions(+) |
17 |
|
18 |
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 |
19 |
new file mode 100644 |
20 |
index 00000000000..875c2237008 |
21 |
--- /dev/null |
22 |
+++ b/dev-libs/libgcrypt/files/libgcrypt-1.9.1-fix-no-asm-on-amd64-x86.patch |
23 |
@@ -0,0 +1,141 @@ |
24 |
+Broken in https://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=commitdiff;h=8d404a629167d67ed56e45de3e65d1e0b7cdeb24;hp=3b34bd6e178614d6021ee7d1140646f7c8ed7519 |
25 |
+https://dev.gnupg.org/T5277 |
26 |
+https://bugs.gentoo.org/767859 |
27 |
+ |
28 |
+This is a revert of that commit, as suggested by upstream in the linked bug. |
29 |
+diff --git a/random/rand-internal.h b/random/rand-internal.h |
30 |
+index 34221569..d99c6671 100644 |
31 |
+--- a/random/rand-internal.h |
32 |
++++ b/random/rand-internal.h |
33 |
+@@ -141,7 +141,7 @@ void _gcry_rndhw_poll_fast (void (*add)(const void*, size_t, |
34 |
+ enum random_origins origin); |
35 |
+ size_t _gcry_rndhw_poll_slow (void (*add)(const void*, size_t, |
36 |
+ enum random_origins), |
37 |
+- enum random_origins origin, size_t req_length); |
38 |
++ enum random_origins origin); |
39 |
+ |
40 |
+ |
41 |
+ |
42 |
+diff --git a/random/rndhw.c b/random/rndhw.c |
43 |
+index 3cf9acc3..2829382c 100644 |
44 |
+--- a/random/rndhw.c |
45 |
++++ b/random/rndhw.c |
46 |
+@@ -198,33 +198,24 @@ _gcry_rndhw_poll_fast (void (*add)(const void*, size_t, enum random_origins), |
47 |
+ |
48 |
+ |
49 |
+ /* Read 64 bytes from a hardware RNG and return the number of bytes |
50 |
+- actually read. However hardware source is let account only |
51 |
+- for up to 50% (or 25% for RDRAND) of the requested bytes. */ |
52 |
++ actually read. */ |
53 |
+ size_t |
54 |
+ _gcry_rndhw_poll_slow (void (*add)(const void*, size_t, enum random_origins), |
55 |
+- enum random_origins origin, size_t req_length) |
56 |
++ enum random_origins origin) |
57 |
+ { |
58 |
+ size_t nbytes = 0; |
59 |
+ |
60 |
+ (void)add; |
61 |
+ (void)origin; |
62 |
+ |
63 |
+- req_length /= 2; /* Up to 50%. */ |
64 |
+- |
65 |
+ #ifdef USE_DRNG |
66 |
+ if ((_gcry_get_hw_features () & HWF_INTEL_RDRAND)) |
67 |
+- { |
68 |
+- req_length /= 2; /* Up to 25%. */ |
69 |
+- nbytes += poll_drng (add, origin, 0); |
70 |
+- } |
71 |
++ nbytes += poll_drng (add, origin, 0); |
72 |
+ #endif |
73 |
+ #ifdef USE_PADLOCK |
74 |
+ if ((_gcry_get_hw_features () & HWF_PADLOCK_RNG)) |
75 |
+ nbytes += poll_padlock (add, origin, 0); |
76 |
+ #endif |
77 |
+ |
78 |
+- if (nbytes > req_length) |
79 |
+- nbytes = req_length; |
80 |
+- |
81 |
+ return nbytes; |
82 |
+ } |
83 |
+diff --git a/random/rndlinux.c b/random/rndlinux.c |
84 |
+index a22db177..f378a549 100644 |
85 |
+--- a/random/rndlinux.c |
86 |
++++ b/random/rndlinux.c |
87 |
+@@ -190,10 +190,19 @@ _gcry_rndlinux_gather_random (void (*add)(const void*, size_t, |
88 |
+ } |
89 |
+ |
90 |
+ |
91 |
+- /* First read from a hardware source. Note that _gcry_rndhw_poll_slow lets |
92 |
+- it account only for up to 50% (or 25% for RDRAND) of the requested |
93 |
+- bytes. */ |
94 |
+- n_hw = _gcry_rndhw_poll_slow (add, origin, length); |
95 |
++ /* First read from a hardware source. However let it account only |
96 |
++ for up to 50% (or 25% for RDRAND) of the requested bytes. */ |
97 |
++ n_hw = _gcry_rndhw_poll_slow (add, origin); |
98 |
++ if ((_gcry_get_hw_features () & HWF_INTEL_RDRAND)) |
99 |
++ { |
100 |
++ if (n_hw > length/4) |
101 |
++ n_hw = length/4; |
102 |
++ } |
103 |
++ else |
104 |
++ { |
105 |
++ if (n_hw > length/2) |
106 |
++ n_hw = length/2; |
107 |
++ } |
108 |
+ if (length > 1) |
109 |
+ length -= n_hw; |
110 |
+ |
111 |
+diff --git a/src/g10lib.h b/src/g10lib.h |
112 |
+index 243997eb..cba2e237 100644 |
113 |
+--- a/src/g10lib.h |
114 |
++++ b/src/g10lib.h |
115 |
+@@ -217,8 +217,6 @@ char **_gcry_strtokenize (const char *string, const char *delim); |
116 |
+ |
117 |
+ |
118 |
+ /*-- src/hwfeatures.c --*/ |
119 |
+-#if defined(HAVE_CPU_ARCH_X86) |
120 |
+- |
121 |
+ #define HWF_PADLOCK_RNG (1 << 0) |
122 |
+ #define HWF_PADLOCK_AES (1 << 1) |
123 |
+ #define HWF_PADLOCK_SHA (1 << 2) |
124 |
+@@ -238,28 +236,20 @@ char **_gcry_strtokenize (const char *string, const char *delim); |
125 |
+ #define HWF_INTEL_RDTSC (1 << 15) |
126 |
+ #define HWF_INTEL_SHAEXT (1 << 16) |
127 |
+ |
128 |
+-#elif defined(HAVE_CPU_ARCH_ARM) |
129 |
+- |
130 |
+-#define HWF_ARM_NEON (1 << 0) |
131 |
+-#define HWF_ARM_AES (1 << 1) |
132 |
+-#define HWF_ARM_SHA1 (1 << 2) |
133 |
+-#define HWF_ARM_SHA2 (1 << 3) |
134 |
+-#define HWF_ARM_PMULL (1 << 4) |
135 |
+- |
136 |
+-#elif defined(HAVE_CPU_ARCH_PPC) |
137 |
++#define HWF_ARM_NEON (1 << 17) |
138 |
++#define HWF_ARM_AES (1 << 18) |
139 |
++#define HWF_ARM_SHA1 (1 << 19) |
140 |
++#define HWF_ARM_SHA2 (1 << 20) |
141 |
++#define HWF_ARM_PMULL (1 << 21) |
142 |
+ |
143 |
+-#define HWF_PPC_VCRYPTO (1 << 0) |
144 |
+-#define HWF_PPC_ARCH_3_00 (1 << 1) |
145 |
+-#define HWF_PPC_ARCH_2_07 (1 << 2) |
146 |
++#define HWF_PPC_VCRYPTO (1 << 22) |
147 |
++#define HWF_PPC_ARCH_3_00 (1 << 23) |
148 |
++#define HWF_PPC_ARCH_2_07 (1 << 24) |
149 |
+ |
150 |
+-#elif defined(HAVE_CPU_ARCH_S390X) |
151 |
+- |
152 |
+-#define HWF_S390X_MSA (1 << 0) |
153 |
+-#define HWF_S390X_MSA_4 (1 << 1) |
154 |
+-#define HWF_S390X_MSA_8 (1 << 2) |
155 |
+-#define HWF_S390X_VX (1 << 3) |
156 |
+- |
157 |
+-#endif |
158 |
++#define HWF_S390X_MSA (1 << 25) |
159 |
++#define HWF_S390X_MSA_4 (1 << 26) |
160 |
++#define HWF_S390X_MSA_8 (1 << 27) |
161 |
++#define HWF_S390X_VX (1 << 28) |
162 |
+ |
163 |
+ gpg_err_code_t _gcry_disable_hw_feature (const char *name); |
164 |
+ void _gcry_detect_hw_features (void); |
165 |
|
166 |
diff --git a/dev-libs/libgcrypt/libgcrypt-1.9.1.ebuild b/dev-libs/libgcrypt/libgcrypt-1.9.1-r1.ebuild |
167 |
similarity index 98% |
168 |
rename from dev-libs/libgcrypt/libgcrypt-1.9.1.ebuild |
169 |
rename to dev-libs/libgcrypt/libgcrypt-1.9.1-r1.ebuild |
170 |
index a40209631d4..952a5816824 100644 |
171 |
--- a/dev-libs/libgcrypt/libgcrypt-1.9.1.ebuild |
172 |
+++ b/dev-libs/libgcrypt/libgcrypt-1.9.1-r1.ebuild |
173 |
@@ -21,6 +21,7 @@ BDEPEND="doc? ( virtual/texi2dvi )" |
174 |
PATCHES=( |
175 |
"${FILESDIR}"/${PN}-1.6.1-uscore.patch |
176 |
"${FILESDIR}"/${PN}-multilib-syspath.patch |
177 |
+ "${FILESDIR}"/${PN}-1.9.1-fix-no-asm-on-amd64-x86.patch |
178 |
) |
179 |
|
180 |
MULTILIB_CHOST_TOOLS=( |