]> git.ipfire.org Git - ipfire-2.x.git/blob - src/patches/glibc/glibc-rh689471.patch
dhcpcd: fix delay after dhcp down.
[ipfire-2.x.git] / src / patches / glibc / glibc-rh689471.patch
1 2011-03-20 H.J. Lu <hongjiu.lu@intel.com>
2
3 [BZ #12597]
4 * string/test-strncmp.c (do_page_test): New function.
5 (check2): Likewise.
6 (test_main): Call check2.
7 * sysdeps/x86_64/multiarch/strcmp.S: Properly cross page boundary.
8
9 Index: glibc-2.12-2-gc4ccff1/string/test-strncmp.c
10 ===================================================================
11 --- glibc-2.12-2-gc4ccff1.orig/string/test-strncmp.c
12 +++ glibc-2.12-2-gc4ccff1/string/test-strncmp.c
13 @@ -200,6 +200,27 @@ do_test (size_t align1, size_t align2, s
14 }
15
16 static void
17 +do_page_test (size_t offset1, size_t offset2, char *s2)
18 +{
19 + char *s1;
20 + int exp_result;
21 +
22 + if (offset1 >= page_size || offset2 >= page_size)
23 + return;
24 +
25 + s1 = (char *) (buf1 + offset1);
26 + s2 += offset2;
27 +
28 + exp_result= *s1;
29 +
30 + FOR_EACH_IMPL (impl, 0)
31 + {
32 + check_result (impl, s1, s2, page_size, -exp_result);
33 + check_result (impl, s2, s1, page_size, exp_result);
34 + }
35 +}
36 +
37 +static void
38 do_random_tests (void)
39 {
40 size_t i, j, n, align1, align2, pos, len1, len2, size;
41 @@ -312,6 +333,25 @@ check1 (void)
42 }
43 }
44
45 +static void
46 +check2 (void)
47 +{
48 + size_t i;
49 + char *s1, *s2;
50 +
51 + s1 = (char *) buf1;
52 + for (i = 0; i < page_size - 1; i++)
53 + s1[i] = 23;
54 + s1[i] = 0;
55 +
56 + s2 = strdup (s1);
57 +
58 + for (i = 0; i < 64; ++i)
59 + do_page_test (3990 + i, 2635, s2);
60 +
61 + free (s2);
62 +}
63 +
64 int
65 test_main (void)
66 {
67 @@ -320,6 +360,7 @@ test_main (void)
68 test_init ();
69
70 check1 ();
71 + check2 ();
72
73 printf ("%23s", "");
74 FOR_EACH_IMPL (impl, 0)
75 Index: glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S
76 ===================================================================
77 --- glibc-2.12-2-gc4ccff1.orig/sysdeps/x86_64/multiarch/strcmp.S
78 +++ glibc-2.12-2-gc4ccff1/sysdeps/x86_64/multiarch/strcmp.S
79 @@ -452,6 +452,7 @@ LABEL(loop_ashr_1_use_sse4_2):
80 add $16, %r10
81 jg LABEL(nibble_ashr_1_use_sse4_2)
82
83 +LABEL(nibble_ashr_1_use_sse4_2_restart):
84 movdqa (%rdi, %rdx), %xmm0
85 palignr $1, -16(%rdi, %rdx), %xmm0
86 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
87 @@ -499,7 +500,7 @@ LABEL(nibble_ashr_1_use_sse4_2):
88 jae LABEL(nibble_ashr_use_sse4_2_exit)
89 # endif
90 cmp $14, %ecx
91 - ja LABEL(loop_ashr_1_use_sse4_2)
92 + ja LABEL(nibble_ashr_1_use_sse4_2_restart)
93
94 jmp LABEL(nibble_ashr_use_sse4_2_exit)
95
96 @@ -544,6 +545,7 @@ LABEL(loop_ashr_2_use_sse4_2):
97 add $16, %r10
98 jg LABEL(nibble_ashr_2_use_sse4_2)
99
100 +LABEL(nibble_ashr_2_use_sse4_2_restart):
101 movdqa (%rdi, %rdx), %xmm0
102 palignr $2, -16(%rdi, %rdx), %xmm0
103 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
104 @@ -591,7 +593,7 @@ LABEL(nibble_ashr_2_use_sse4_2):
105 jae LABEL(nibble_ashr_use_sse4_2_exit)
106 # endif
107 cmp $13, %ecx
108 - ja LABEL(loop_ashr_2_use_sse4_2)
109 + ja LABEL(nibble_ashr_2_use_sse4_2_restart)
110
111 jmp LABEL(nibble_ashr_use_sse4_2_exit)
112
113 @@ -636,6 +638,7 @@ LABEL(loop_ashr_3_use_sse4_2):
114 add $16, %r10
115 jg LABEL(nibble_ashr_3_use_sse4_2)
116
117 +LABEL(nibble_ashr_3_use_sse4_2_restart):
118 movdqa (%rdi, %rdx), %xmm0
119 palignr $3, -16(%rdi, %rdx), %xmm0
120 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
121 @@ -683,7 +686,7 @@ LABEL(nibble_ashr_3_use_sse4_2):
122 jae LABEL(nibble_ashr_use_sse4_2_exit)
123 # endif
124 cmp $12, %ecx
125 - ja LABEL(loop_ashr_3_use_sse4_2)
126 + ja LABEL(nibble_ashr_3_use_sse4_2_restart)
127
128 jmp LABEL(nibble_ashr_use_sse4_2_exit)
129
130 @@ -729,6 +732,7 @@ LABEL(loop_ashr_4_use_sse4_2):
131 add $16, %r10
132 jg LABEL(nibble_ashr_4_use_sse4_2)
133
134 +LABEL(nibble_ashr_4_use_sse4_2_restart):
135 movdqa (%rdi, %rdx), %xmm0
136 palignr $4, -16(%rdi, %rdx), %xmm0
137 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
138 @@ -776,7 +780,7 @@ LABEL(nibble_ashr_4_use_sse4_2):
139 jae LABEL(nibble_ashr_use_sse4_2_exit)
140 # endif
141 cmp $11, %ecx
142 - ja LABEL(loop_ashr_4_use_sse4_2)
143 + ja LABEL(nibble_ashr_4_use_sse4_2_restart)
144
145 jmp LABEL(nibble_ashr_use_sse4_2_exit)
146
147 @@ -822,6 +826,7 @@ LABEL(loop_ashr_5_use_sse4_2):
148 add $16, %r10
149 jg LABEL(nibble_ashr_5_use_sse4_2)
150
151 +LABEL(nibble_ashr_5_use_sse4_2_restart):
152 movdqa (%rdi, %rdx), %xmm0
153 palignr $5, -16(%rdi, %rdx), %xmm0
154 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
155 @@ -870,7 +875,7 @@ LABEL(nibble_ashr_5_use_sse4_2):
156 jae LABEL(nibble_ashr_use_sse4_2_exit)
157 # endif
158 cmp $10, %ecx
159 - ja LABEL(loop_ashr_5_use_sse4_2)
160 + ja LABEL(nibble_ashr_5_use_sse4_2_restart)
161
162 jmp LABEL(nibble_ashr_use_sse4_2_exit)
163
164 @@ -916,6 +921,7 @@ LABEL(loop_ashr_6_use_sse4_2):
165 add $16, %r10
166 jg LABEL(nibble_ashr_6_use_sse4_2)
167
168 +LABEL(nibble_ashr_6_use_sse4_2_restart):
169 movdqa (%rdi, %rdx), %xmm0
170 palignr $6, -16(%rdi, %rdx), %xmm0
171 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
172 @@ -963,7 +969,7 @@ LABEL(nibble_ashr_6_use_sse4_2):
173 jae LABEL(nibble_ashr_use_sse4_2_exit)
174 # endif
175 cmp $9, %ecx
176 - ja LABEL(loop_ashr_6_use_sse4_2)
177 + ja LABEL(nibble_ashr_6_use_sse4_2_restart)
178
179 jmp LABEL(nibble_ashr_use_sse4_2_exit)
180
181 @@ -1009,6 +1015,7 @@ LABEL(loop_ashr_7_use_sse4_2):
182 add $16, %r10
183 jg LABEL(nibble_ashr_7_use_sse4_2)
184
185 +LABEL(nibble_ashr_7_use_sse4_2_restart):
186 movdqa (%rdi, %rdx), %xmm0
187 palignr $7, -16(%rdi, %rdx), %xmm0
188 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
189 @@ -1056,7 +1063,7 @@ LABEL(nibble_ashr_7_use_sse4_2):
190 jae LABEL(nibble_ashr_use_sse4_2_exit)
191 # endif
192 cmp $8, %ecx
193 - ja LABEL(loop_ashr_7_use_sse4_2)
194 + ja LABEL(nibble_ashr_7_use_sse4_2_restart)
195
196 jmp LABEL(nibble_ashr_use_sse4_2_exit)
197
198 @@ -1102,6 +1109,7 @@ LABEL(loop_ashr_8_use_sse4_2):
199 add $16, %r10
200 jg LABEL(nibble_ashr_8_use_sse4_2)
201
202 +LABEL(nibble_ashr_8_use_sse4_2_restart):
203 movdqa (%rdi, %rdx), %xmm0
204 palignr $8, -16(%rdi, %rdx), %xmm0
205 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
206 @@ -1149,7 +1157,7 @@ LABEL(nibble_ashr_8_use_sse4_2):
207 jae LABEL(nibble_ashr_use_sse4_2_exit)
208 # endif
209 cmp $7, %ecx
210 - ja LABEL(loop_ashr_8_use_sse4_2)
211 + ja LABEL(nibble_ashr_8_use_sse4_2_restart)
212
213 jmp LABEL(nibble_ashr_use_sse4_2_exit)
214
215 @@ -1195,6 +1203,7 @@ LABEL(loop_ashr_9_use_sse4_2):
216 add $16, %r10
217 jg LABEL(nibble_ashr_9_use_sse4_2)
218
219 +LABEL(nibble_ashr_9_use_sse4_2_restart):
220 movdqa (%rdi, %rdx), %xmm0
221
222 palignr $9, -16(%rdi, %rdx), %xmm0
223 @@ -1243,7 +1252,7 @@ LABEL(nibble_ashr_9_use_sse4_2):
224 jae LABEL(nibble_ashr_use_sse4_2_exit)
225 # endif
226 cmp $6, %ecx
227 - ja LABEL(loop_ashr_9_use_sse4_2)
228 + ja LABEL(nibble_ashr_9_use_sse4_2_restart)
229
230 jmp LABEL(nibble_ashr_use_sse4_2_exit)
231
232 @@ -1289,6 +1298,7 @@ LABEL(loop_ashr_10_use_sse4_2):
233 add $16, %r10
234 jg LABEL(nibble_ashr_10_use_sse4_2)
235
236 +LABEL(nibble_ashr_10_use_sse4_2_restart):
237 movdqa (%rdi, %rdx), %xmm0
238 palignr $10, -16(%rdi, %rdx), %xmm0
239 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
240 @@ -1336,7 +1346,7 @@ LABEL(nibble_ashr_10_use_sse4_2):
241 jae LABEL(nibble_ashr_use_sse4_2_exit)
242 # endif
243 cmp $5, %ecx
244 - ja LABEL(loop_ashr_10_use_sse4_2)
245 + ja LABEL(nibble_ashr_10_use_sse4_2_restart)
246
247 jmp LABEL(nibble_ashr_use_sse4_2_exit)
248
249 @@ -1382,6 +1392,7 @@ LABEL(loop_ashr_11_use_sse4_2):
250 add $16, %r10
251 jg LABEL(nibble_ashr_11_use_sse4_2)
252
253 +LABEL(nibble_ashr_11_use_sse4_2_restart):
254 movdqa (%rdi, %rdx), %xmm0
255 palignr $11, -16(%rdi, %rdx), %xmm0
256 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
257 @@ -1429,7 +1440,7 @@ LABEL(nibble_ashr_11_use_sse4_2):
258 jae LABEL(nibble_ashr_use_sse4_2_exit)
259 # endif
260 cmp $4, %ecx
261 - ja LABEL(loop_ashr_11_use_sse4_2)
262 + ja LABEL(nibble_ashr_11_use_sse4_2_restart)
263
264 jmp LABEL(nibble_ashr_use_sse4_2_exit)
265
266 @@ -1475,6 +1486,7 @@ LABEL(loop_ashr_12_use_sse4_2):
267 add $16, %r10
268 jg LABEL(nibble_ashr_12_use_sse4_2)
269
270 +LABEL(nibble_ashr_12_use_sse4_2_restart):
271 movdqa (%rdi, %rdx), %xmm0
272 palignr $12, -16(%rdi, %rdx), %xmm0
273 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
274 @@ -1522,7 +1534,7 @@ LABEL(nibble_ashr_12_use_sse4_2):
275 jae LABEL(nibble_ashr_use_sse4_2_exit)
276 # endif
277 cmp $3, %ecx
278 - ja LABEL(loop_ashr_12_use_sse4_2)
279 + ja LABEL(nibble_ashr_12_use_sse4_2_restart)
280
281 jmp LABEL(nibble_ashr_use_sse4_2_exit)
282
283 @@ -1569,6 +1581,7 @@ LABEL(loop_ashr_13_use_sse4_2):
284 add $16, %r10
285 jg LABEL(nibble_ashr_13_use_sse4_2)
286
287 +LABEL(nibble_ashr_13_use_sse4_2_restart):
288 movdqa (%rdi, %rdx), %xmm0
289 palignr $13, -16(%rdi, %rdx), %xmm0
290 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
291 @@ -1616,7 +1629,7 @@ LABEL(nibble_ashr_13_use_sse4_2):
292 jae LABEL(nibble_ashr_use_sse4_2_exit)
293 # endif
294 cmp $2, %ecx
295 - ja LABEL(loop_ashr_13_use_sse4_2)
296 + ja LABEL(nibble_ashr_13_use_sse4_2_restart)
297
298 jmp LABEL(nibble_ashr_use_sse4_2_exit)
299
300 @@ -1663,6 +1676,7 @@ LABEL(loop_ashr_14_use_sse4_2):
301 add $16, %r10
302 jg LABEL(nibble_ashr_14_use_sse4_2)
303
304 +LABEL(nibble_ashr_14_use_sse4_2_restart):
305 movdqa (%rdi, %rdx), %xmm0
306 palignr $14, -16(%rdi, %rdx), %xmm0
307 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
308 @@ -1710,7 +1724,7 @@ LABEL(nibble_ashr_14_use_sse4_2):
309 jae LABEL(nibble_ashr_use_sse4_2_exit)
310 # endif
311 cmp $1, %ecx
312 - ja LABEL(loop_ashr_14_use_sse4_2)
313 + ja LABEL(nibble_ashr_14_use_sse4_2_restart)
314
315 jmp LABEL(nibble_ashr_use_sse4_2_exit)
316
317 @@ -1759,6 +1773,7 @@ LABEL(loop_ashr_15_use_sse4_2):
318 add $16, %r10
319 jg LABEL(nibble_ashr_15_use_sse4_2)
320
321 +LABEL(nibble_ashr_15_use_sse4_2_restart):
322 movdqa (%rdi, %rdx), %xmm0
323 palignr $15, -16(%rdi, %rdx), %xmm0
324 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L
325 @@ -1806,7 +1821,7 @@ LABEL(nibble_ashr_15_use_sse4_2):
326 jae LABEL(nibble_ashr_use_sse4_2_exit)
327 # endif
328 cmp $0, %ecx
329 - ja LABEL(loop_ashr_15_use_sse4_2)
330 + ja LABEL(nibble_ashr_15_use_sse4_2_restart)
331
332 LABEL(nibble_ashr_use_sse4_2_exit):
333 # if !defined USE_AS_STRCASECMP_L && !defined USE_AS_STRNCASECMP_L